diff options
| -rw-r--r-- | README | 4 | ||||
| -rw-r--r-- | c/echo.c | 2 | ||||
| -rw-r--r-- | c/echo.h | 1 | ||||
| -rw-r--r-- | src-68k/echo.68k | 5 |
4 files changed, 10 insertions, 2 deletions
@@ -10,8 +10,8 @@ ___ ___ _ _ ___ __ ___ ___ ___ _ ___ ___ _ ___ ___ | _| | | | | \ | _| | _| | | _| | | | _| _| | |_| | | | | | | | | | |_| | | |_| | | | |_ _ _ ___ ___ | | | |_| |_ - |_ | | | | | | | | | | _| | | | | | | | _| | | | __| _ \ | | | |_ | - _| | | | | | | | | | | |_| | | | | | | | |_ | | | __| /_ | |_| | |_| | + |_ | | | | | | | | | | _| | | | | | | | _| | | | __| _ \ | | | | | + _| | | | | | | | | | | |_| | | | | | | | |_ | | | __| /_ | |_| | | | | |___|___|___|_|_|__/ |___|_|_|___|_|_|_|___| \_/|___|_|_\_| |_|_|___|___| ============================================================================= @@ -407,6 +407,8 @@ uint16_t echo_get_status(void) { status |= ECHO_STAT_BUSY; if (z80_ram[0x1F00] != 0xFF) status |= ECHO_STAT_DIRBUSY; + if (z80_ram[0x0008] != 0xC9) + status |= ECHO_STAT_PCM; // Look ahead in the queue for any pending commands // Adjust the flags accordingly if needed @@ -21,6 +21,7 @@ enum { /* Echo status flags */ #define ECHO_STAT_BGM 0x0002 /* Background music is playing */ #define ECHO_STAT_SFX 0x0001 /* Sound effect is playing */ +#define ECHO_STAT_PCM 0x2000 /* PCM playback ongoing */ #define ECHO_STAT_DIRBUSY 0x4000 /* Echo isn't done with direct events */ #define ECHO_STAT_BUSY 0x8000 /* Echo still didn't parse command */ diff --git a/src-68k/echo.68k b/src-68k/echo.68k index 8810ab2..46fb361 100644 --- a/src-68k/echo.68k +++ b/src-68k/echo.68k @@ -416,6 +416,11 @@ Echo_GetStatus: bset.l #14, d0 ; If so, set the relevant flag @DirectEmpty: + cmpi.b #$C9, ($A00008) ; Check if ch6 is in FM or PCM mode + beq.s @PcmOff ; PCM playback active? (i.e. not RET) + bset.l #13, d0 ; If so, set the relevant flag +@PcmOff: + moveq #0, d1 ; Clear unused bits from index lea @AndTable(pc), a1 ; Get pointer to look-up tables |
