From da9fa14c7c6d38078b253d4f2185ca2901ce8156 Mon Sep 17 00:00:00 2001 From: wavemotion-dave <75039837+wavemotion-dave@users.noreply.github.com> Date: Fri, 30 Dec 2022 07:44:37 -0500 Subject: [PATCH] 3.8c - Streamlined memory handling to recover 256K of valuable resources on the DS-Lite/Phat. Cleanup of debugger. --- Makefile | 2 +- NINTV-DS.nds | Bin 674816 -> 678400 bytes README.md | 1 + arm7/source/emusoundfifo.c | 68 ++++----- arm7/source/main.c | 95 ++++++------ arm9/Makefile | 14 +- arm9/source/debugger.cpp | 199 +++++++++++++++++--------- arm9/source/debugger.h | 12 +- arm9/source/ds_tools.cpp | 29 +++- arm9/source/emucore/AY38914_Channel.h | 4 - arm9/source/emucore/ECS.cpp | 7 +- arm9/source/emucore/Intellivision.cpp | 1 + arm9/source/emucore/JLP.cpp | 36 +++-- arm9/source/emucore/JLP.h | 3 + arm9/source/emucore/Memory.h | 1 - arm9/source/emucore/MemoryBus.cpp | 29 ++-- arm9/source/emucore/Rip.cpp | 9 +- arm9/source/emucore/Rip.h | 7 +- arm9/source/loadgame.cpp | 10 ++ 19 files changed, 333 insertions(+), 194 deletions(-) diff --git a/Makefile b/Makefile index b02305e..a9b47b9 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ include $(DEVKITARM)/ds_rules export TARGET := NINTV-DS export TOPDIR := $(CURDIR) -export VERSION := 3.8b +export VERSION := 3.8c ICON := -b $(CURDIR)/logo.bmp "NINTV-DS $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/NINTV-DS" diff --git a/NINTV-DS.nds b/NINTV-DS.nds index 4b857ff14eefd8d3c85cdbebd18b29ab2cd8721c..52af1dc05b3082200e1acf93677f080a3fa1b204 100644 GIT binary patch delta 161181 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

)~hkF7aPWT4uL$SU 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

+HWl;x=fqriF7SxIgSY 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 B>cs#6 diff --git a/README.md b/README.md index 3ef7005..2700caf 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ Credits : BLISS - Intellivision Emulator. Originally developed by Kyle Davis. Contributions by Jesse Litton, Mike Dunston, Joseph Zbiciak. Most of the cheats are provided by the excellent work found at: http://www.midnightblueinternational.com/romhacks.php Thanks to Michael Hayes for allowing the inclusion into NINTV-DS +And special thanks to Joseph Zbiciak (jzintv fame) for detailed descriptions of all the ins and outs of Intellivision hardware so that better emulation is possible! -------------------------------------------------------------------------------- diff --git a/arm7/source/emusoundfifo.c b/arm7/source/emusoundfifo.c index 1216fe5..2ed9e55 100644 --- a/arm7/source/emusoundfifo.c +++ b/arm7/source/emusoundfifo.c @@ -22,11 +22,11 @@ typedef enum { //--------------------------------------------------------------------------------- void soundEmuDataHandler(int bytes, void *user_data) { - int channel = -1; + int channel = -1; - FifoMessage msg; + FifoMessage msg; - fifoGetDatamsg(FIFO_USER_01, bytes, (u8*)&msg); + fifoGetDatamsg(FIFO_USER_01, bytes, (u8*)&msg); switch (msg.type) { case EMUARM7_PLAY_SND: @@ -48,48 +48,48 @@ void soundEmuDataHandler(int bytes, void *user_data) //--------------------------------------------------------------------------------- void soundEmuCommandHandler(u32 command, void* userdata) { - int cmd = (command ) & 0x00F00000; - int data = command & 0xFFFF; - int channel = (command >> 16) & 0xF; - - switch(cmd) + int cmd = (command ) & 0x00F00000; + int data = command & 0xFFFF; + int channel = (command >> 16) & 0xF; + + switch(cmd) { - case SOUND_SET_VOLUME: - SCHANNEL_CR(channel) &= ~0xFF; - SCHANNEL_CR(channel) |= data; - break; + case SOUND_SET_VOLUME: + SCHANNEL_CR(channel) &= ~0xFF; + SCHANNEL_CR(channel) |= data; + break; - case SOUND_SET_PAN: - SCHANNEL_CR(channel) &= ~SOUND_PAN(0xFF); - SCHANNEL_CR(channel) |= SOUND_PAN(data); - break; + case SOUND_SET_PAN: + SCHANNEL_CR(channel) &= ~SOUND_PAN(0xFF); + SCHANNEL_CR(channel) |= SOUND_PAN(data); + break; - case SOUND_SET_FREQ: - SCHANNEL_TIMER(channel) = SOUND_FREQ(data); - break; + case SOUND_SET_FREQ: + SCHANNEL_TIMER(channel) = SOUND_FREQ(data); + break; - case SOUND_SET_WAVEDUTY: - SCHANNEL_CR(channel) &= ~(7 << 24); - SCHANNEL_CR(channel) |= (data) << 24; - break; + case SOUND_SET_WAVEDUTY: + SCHANNEL_CR(channel) &= ~(7 << 24); + SCHANNEL_CR(channel) |= (data) << 24; + break; - case SOUND_KILL: - case SOUND_PAUSE: - SCHANNEL_CR(channel) &= ~SCHANNEL_ENABLE; - break; + case SOUND_KILL: + case SOUND_PAUSE: + SCHANNEL_CR(channel) &= ~SCHANNEL_ENABLE; + break; - case SOUND_RESUME: - SCHANNEL_CR(channel) |= SCHANNEL_ENABLE; - break; + case SOUND_RESUME: + SCHANNEL_CR(channel) |= SCHANNEL_ENABLE; + break; - default: break; - } + default: break; + } } //--------------------------------------------------------------------------------- void installSoundEmuFIFO(void) { - fifoSetDatamsgHandler(FIFO_USER_01, soundEmuDataHandler, 0); - fifoSetValue32Handler(FIFO_USER_01, soundEmuCommandHandler, 0); + fifoSetDatamsgHandler(FIFO_USER_01, soundEmuDataHandler, 0); + fifoSetValue32Handler(FIFO_USER_01, soundEmuCommandHandler, 0); } diff --git a/arm7/source/main.c b/arm7/source/main.c index dcbc6e1..121753f 100644 --- a/arm7/source/main.c +++ b/arm7/source/main.c @@ -11,31 +11,31 @@ /*--------------------------------------------------------------------------------- - default ARM7 core + default ARM7 core - Copyright (C) 2005 - 2010 - Michael Noland (joat) - Jason Rogers (dovoto) - Dave Murphy (WinterMute) + Copyright (C) 2005 - 2010 + Michael Noland (joat) + Jason Rogers (dovoto) + Dave Murphy (WinterMute) - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. - 3. This notice may not be removed or altered from any source - distribution. + 3. This notice may not be removed or altered from any source + distribution. ---------------------------------------------------------------------------------*/ #include @@ -44,17 +44,18 @@ extern void installSoundEmuFIFO(void); + //--------------------------------------------------------------------------------- void VblankHandler(void) { //--------------------------------------------------------------------------------- - Wifi_Update(); + Wifi_Update(); } //--------------------------------------------------------------------------------- void VcountHandler() { //--------------------------------------------------------------------------------- - inputGetAndSend(); + inputGetAndSend(); } volatile bool exitflag = false; @@ -62,45 +63,45 @@ volatile bool exitflag = false; //--------------------------------------------------------------------------------- void powerButtonCB() { //--------------------------------------------------------------------------------- - exitflag = true; + exitflag = true; } //--------------------------------------------------------------------------------- int main() { //--------------------------------------------------------------------------------- - readUserSettings(); + readUserSettings(); - irqInit(); - // Start the RTC tracking IRQ - initClockIRQ(); - touchInit(); - fifoInit(); + irqInit(); + // Start the RTC tracking IRQ + initClockIRQ(); + touchInit(); + fifoInit(); - //mmInstall(FIFO_MAXMOD); + //mmInstall(FIFO_MAXMOD); - SetYtrigger(80); + SetYtrigger(80); - installWifiFIFO(); - installSoundFIFO(); + installWifiFIFO(); + installSoundFIFO(); - installSystemFIFO(); + installSystemFIFO(); installSoundEmuFIFO(); - irqSet(IRQ_VCOUNT, VcountHandler); - irqSet(IRQ_VBLANK, VblankHandler); + irqSet(IRQ_VCOUNT, VcountHandler); + irqSet(IRQ_VBLANK, VblankHandler); - irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); - - setPowerButtonCB(powerButtonCB); - - // Keep the ARM7 mostly idle - while (!exitflag) { - if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) { - exitflag = true; - } + irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK); - swiWaitForVBlank(); - } - return 0; + setPowerButtonCB(powerButtonCB); + + // Keep the ARM7 mostly idle + while (!exitflag) { + if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) { + exitflag = true; + } + + swiWaitForVBlank(); + } + return 0; } diff --git a/arm9/Makefile b/arm9/Makefile index 3cc5f22..f7da158 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -14,11 +14,11 @@ include $(DEVKITARM)/ds_rules # DATA is a list of directories containing binary files # all directories are relative to this makefile #--------------------------------------------------------------------------------- -BUILD := build -SOURCES := source/emucore source/common source -INCLUDES := source/emucore source/common include -DATA := data -GRAPHICS := gfx +BUILD := build +SOURCES := source/emucore source/common source +INCLUDES := source/emucore source/common include +DATA := data +GRAPHICS := gfx #--------------------------------------------------------------------------------- # options for code generation @@ -26,8 +26,8 @@ GRAPHICS := gfx #ARCH := -mthumb -mthumb-interwork ARCH := -#CFLAGS := -g -Wall -O2 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math $(ARCH) -CFLAGS := -Wno-address-of-packed-member -Wno-multichar -O3 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math $(ARCH) +#CFLAGS := -Wno-address-of-packed-member -Wno-multichar -O3 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math $(ARCH) +CFLAGS := -Ofast -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math $(ARCH) -falign-functions=16 -frename-registers CFLAGS += $(INCLUDE) -DARM9 CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -Wno-conversion-null diff --git a/arm9/source/debugger.cpp b/arm9/source/debugger.cpp index 651bb24..3b3addb 100644 --- a/arm9/source/debugger.cpp +++ b/arm9/source/debugger.cpp @@ -48,6 +48,8 @@ extern struct Overlay_t defaultOverlay[OVL_MAX]; extern Emulator *currentEmu; AY38900 *debug_stic = NULL; +AY38914 *debug_psg = NULL; +AY38914 *debug_psg2 = NULL; void display_debug(void); @@ -95,11 +97,6 @@ extern UINT8 D; extern UINT16 op; extern UINT8 oneSecTick; -#define DBG_PRESS_PLAY 0 -#define DBG_PRESS_STOP 1 -#define DBG_PRESS_STEP 2 -#define DBG_PRESS_FRAME 3 -#define DBG_PRESS_NONE 255 #define DBG_MODE_PLAY 0 #define DBG_MODE_STOP 1 @@ -115,6 +112,7 @@ UINT8 debug_mode = DBG_MODE_PLAY; UINT8 debug_show = DBG_SHOW_CPU; +UINT8 debug_show_cpu = 0; UINT8 debug_show_ram = 0; UINT8 debug_show_stic = 0; UINT8 debug_show_psg = 0; @@ -3196,8 +3194,8 @@ void show_debug_overlay(void) dmaFillWords(dmaVal | (dmaVal<<16),(void*) bgGetMapPtr(bg1b),32*24*2); REG_BLDCNT=0; REG_BLDCNT_SUB=0; REG_BLDY=0; REG_BLDY_SUB=0; - - swiWaitForVBlank(); + + swiWaitForVBlank(); } @@ -3216,14 +3214,17 @@ void debugger_wait_for_input(void) while (!bDone) { - while ((keysCurrent() & KEY_TOUCH) == 0) + while ((keysCurrent() & KEY_TOUCH) == 0) // Wait for press { - asm("nop"); + WAITVBL; } touchRead(&touch); + while (keysCurrent() & KEY_TOUCH) // Wait for release + { + WAITVBL; + } UINT8 pressed = debugger_input(touch.px, touch.py); - - if ((pressed != DBG_PRESS_NONE) && (pressed != DBG_PRESS_STOP)) + if ((pressed != DBG_PRESS_NONE) && (pressed != DBG_PRESS_META) && (pressed != DBG_PRESS_STOP)) { bDone=true; } @@ -3231,11 +3232,11 @@ void debugger_wait_for_input(void) { display_debug(); } - WAITVBL;WAITVBL;WAITVBL; + WAITVBL;WAITVBL;WAITVBL; } } -UINT8 debugger_input(int tx, int ty) +UINT8 debugger_input(UINT16 tx, UINT16 ty) { UINT8 pressed = DBG_PRESS_NONE; @@ -3247,7 +3248,10 @@ UINT8 debugger_input(int tx, int ty) if ((tx > 163) && (tx < 198) && (ty > 160) && (ty < 180)) { debug_clear_scr(); + if (debug_show == DBG_SHOW_CPU) debug_show_cpu = (debug_show_cpu+1) % 2; + else debug_show_cpu = 0; debug_show = DBG_SHOW_CPU; + pressed = DBG_PRESS_META; } if ((tx > 198) && (tx < 236) && (ty > 160) && (ty < 180)) { @@ -3255,13 +3259,15 @@ UINT8 debugger_input(int tx, int ty) if (debug_show == DBG_SHOW_RAM) debug_show_ram = (debug_show_ram+1) % 3; else debug_show_ram = 0; debug_show = DBG_SHOW_RAM; + pressed = DBG_PRESS_META; } if ((tx > 163) && (tx < 198) && (ty > 180)) { debug_clear_scr(); - if (debug_show == DBG_SHOW_PSG) debug_show_psg = (debug_show_psg+1) % 2; + if (debug_show == DBG_SHOW_PSG) debug_show_psg = (debug_show_psg+1) % 3; else debug_show_psg = 0; debug_show = DBG_SHOW_PSG; + pressed = DBG_PRESS_META; } if ((tx > 198) && (tx < 236) && (ty > 180)) { @@ -3269,6 +3275,7 @@ UINT8 debugger_input(int tx, int ty) if (debug_show == DBG_SHOW_STIC) debug_show_stic = (debug_show_stic+1) % 8; else debug_show_stic = 0; debug_show = DBG_SHOW_STIC; + pressed = DBG_PRESS_META; } return pressed; } @@ -3280,39 +3287,57 @@ void display_debug(void) if (debug_show == DBG_SHOW_CPU) { - for (int i=0; i<8; i++) + switch (debug_show_cpu) { - sprintf(dbg, "R%d: %-5d %04X", i, r[i], r[i]); - dsPrintValue(0, idx++, 0, dbg); - } - idx++; - sprintf(dbg, " S: %02X", S); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, " Z: %02X", Z); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, " O: %02X", O); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, " C: %02X", C); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, " I: %02X", I); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, " D: %02X", D); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "EB: %04X", PEEK_FAST(0x50eb)); dsPrintValue(0, idx++, 0, dbg); - - idx++; - sprintf(dbg, "OP: %03X [%-15s]", op, dbg_opcode(op)); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Total Frames: %-9u ", global_frames); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Total OpCode: %-9u ", debug_opcodes); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Memory Used: %-9d ", getMemUsed()); dsPrintValue(0, idx++, 0, dbg); + case 0: + for (int i=0; i<8; i++) + { + sprintf(dbg, "R%d: %-5d %04X", i, r[i], r[i]); + dsPrintValue(0, idx++, 0, dbg); + } + idx++; + sprintf(dbg, " S: %02X", S); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, " Z: %02X", Z); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, " O: %02X", O); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, " C: %02X", C); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, " I: %02X", I); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, " D: %02X", D); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "EB: %04X", PEEK_FAST(0x50eb)); dsPrintValue(0, idx++, 0, dbg); - idx=0; - for (UINT16 addr = r[7]-3; addr <= r[7]+4; addr++) - { - sprintf(dbg, "A=%04X : D=%04X", addr, PEEK_FAST(addr)); - dsPrintValue(16, idx++, (addr == r[7] ? 1:0), dbg); + idx++; + sprintf(dbg, "OP: %03X [%-15s]", op, dbg_opcode(op)); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Total Frames: %-9u ", global_frames); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Total OpCode: %-9u ", debug_opcodes); dsPrintValue(0, idx++, 0, dbg); + + idx=0; + for (UINT16 addr = r[7]-3; addr <= r[7]+4; addr++) + { + sprintf(dbg, "A=%04X : D=%04X", addr, PEEK_FAST(addr)); + dsPrintValue(16, idx++, (addr == r[7] ? 1:0), dbg); + } + idx++; + for (int i=0; i<6; i++) + { + sprintf(dbg, "D%d=%-09d %08X", i, debug[i], debug[i]); + dsPrintValue(10, idx++, 0, dbg); + } + break; + + case 1: + extern UINT8 gBankerIsMappedHere[16][16]; + extern UINT16 gLastBankers[16]; + dsPrintValue(13, idx++, 0, (char*)"BANKING "); + idx++; + for (int i=0; i<16; i++) + { + sprintf(dbg, "%X000: %d%d%d%d%d%d%d%d %d%d%d%d%d%d%d%d %X", i, gBankerIsMappedHere[i][0], gBankerIsMappedHere[i][1], gBankerIsMappedHere[i][2], gBankerIsMappedHere[i][3], + gBankerIsMappedHere[i][4], gBankerIsMappedHere[i][5], gBankerIsMappedHere[i][6], gBankerIsMappedHere[i][7], gBankerIsMappedHere[i][8], gBankerIsMappedHere[i][9], + gBankerIsMappedHere[i][10], gBankerIsMappedHere[i][11], gBankerIsMappedHere[i][12], gBankerIsMappedHere[i][13], gBankerIsMappedHere[i][14], gBankerIsMappedHere[i][15], (gLastBankers[i]&0xF)); + dsPrintValue(1, idx++, 0, dbg); + + } + break; } - idx++; - for (int i=0; i<6; i++) - { - sprintf(dbg, "D%d=%-09d %08X", i, debug[i], debug[i]); - dsPrintValue(10, idx++, 0, dbg); - } - } if (debug_show == DBG_SHOW_RAM) { @@ -3351,70 +3376,104 @@ void display_debug(void) if (debug_show == DBG_SHOW_PSG) { idx=0; - extern struct Channel_t channel0; - extern struct Channel_t channel1; - extern struct Channel_t channel2; - + switch (debug_show_psg) { case 0: -#if 0 sprintf(dbg, " CHAN1 CHAN2 CHAN3"); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Period: %-5d %-5d %-5d", channel0.period, channel1.period, channel2.period); + sprintf(dbg, "Period: %-5d %-5d %-5d", debug_psg->channel0.period, debug_psg->channel1.period, debug_psg->channel2.period); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "PerVal: %-5d %-5d %-5d", channel0.periodValue, channel1.periodValue, channel2.periodValue); + sprintf(dbg, "PerVal: %-5d %-5d %-5d", debug_psg->channel0.periodValue, debug_psg->channel1.periodValue, debug_psg->channel2.periodValue); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Volume: %-5d %-5d %-5d", channel0.volume, channel1.volume, channel2.volume); + sprintf(dbg, "Volume: %-5d %-5d %-5d", debug_psg->channel0.volume, debug_psg->channel1.volume, debug_psg->channel2.volume); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "ToneCt: %-5d %-5d %-5d", channel0.toneCounter, channel1.toneCounter, channel2.toneCounter); + sprintf(dbg, "ToneCt: %-5d %-5d %-5d", debug_psg->channel0.toneCounter, debug_psg->channel1.toneCounter, debug_psg->channel2.toneCounter); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Tone: %-5d %-5d %-5d", channel0.tone, channel1.tone, channel2.tone); + sprintf(dbg, "Tone: %-5d %-5d %-5d", debug_psg->channel0.tone, debug_psg->channel1.tone, debug_psg->channel2.tone); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "Envlop: %-5d %-5d %-5d", channel0.envelope, channel1.envelope, channel2.envelope); + sprintf(dbg, "Envlop: %-5d %-5d %-5d", debug_psg->channel0.envelope, debug_psg->channel1.envelope, debug_psg->channel2.envelope); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "TonDis: %-5d %-5d %-5d", channel0.toneDisabled, channel1.toneDisabled, channel2.toneDisabled); + sprintf(dbg, "TonDis: %-5d %-5d %-5d", debug_psg->channel0.toneDisabled, debug_psg->channel1.toneDisabled, debug_psg->channel2.toneDisabled); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "NoiDis: %-5d %-5d %-5d", channel0.noiseDisabled, channel1.noiseDisabled, channel2.noiseDisabled); + sprintf(dbg, "NoiDis: %-5d %-5d %-5d", debug_psg->channel0.noiseDisabled, debug_psg->channel1.noiseDisabled, debug_psg->channel2.noiseDisabled); dsPrintValue(0, idx++, 0, dbg); idx++; sprintf(dbg, "clockDivisor: %-9d", clockDivisor); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "clocksPerSample: %-9d", clocksPerSample); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "envelopeIdle: %-9d", envelopeIdle); + sprintf(dbg, "envelopeIdle: %-9d", debug_psg->envelopeIdle); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "envelopePeriod: %-9d", envelopePeriod); + sprintf(dbg, "envelopePeriod: %-9d", debug_psg->envelopePeriod); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "envelopePValue: %-9d", envelopePeriodValue); + sprintf(dbg, "envelopePValue: %-9d", debug_psg->envelopePeriodValue); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "noiseIdle: %-9d", noiseIdle); + sprintf(dbg, "noiseIdle: %-9d", debug_psg->noiseIdle); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "noisePeriod: %-9d", noisePeriod); + sprintf(dbg, "noisePeriod: %-9d", debug_psg->noisePeriod); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "noisePeriodValue: %-9d", noisePeriodValue); + sprintf(dbg, "noisePeriodValue: %-9d", debug_psg->noisePeriodValue); dsPrintValue(0, idx++, 0, dbg); -#endif break; case 1: + sprintf(dbg, " CHAN4 CHAN5 CHAN6"); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Period: %-5d %-5d %-5d", debug_psg2->channel0.period, debug_psg2->channel1.period, debug_psg2->channel2.period); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "PerVal: %-5d %-5d %-5d", debug_psg2->channel0.periodValue, debug_psg2->channel1.periodValue, debug_psg2->channel2.periodValue); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Volume: %-5d %-5d %-5d", debug_psg2->channel0.volume, debug_psg2->channel1.volume, debug_psg2->channel2.volume); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "ToneCt: %-5d %-5d %-5d", debug_psg2->channel0.toneCounter, debug_psg2->channel1.toneCounter, debug_psg2->channel2.toneCounter); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Tone: %-5d %-5d %-5d", debug_psg2->channel0.tone, debug_psg2->channel1.tone, debug_psg2->channel2.tone); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Envlop: %-5d %-5d %-5d", debug_psg2->channel0.envelope, debug_psg2->channel1.envelope, debug_psg2->channel2.envelope); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "TonDis: %-5d %-5d %-5d", debug_psg2->channel0.toneDisabled, debug_psg2->channel1.toneDisabled, debug_psg2->channel2.toneDisabled); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "NoiDis: %-5d %-5d %-5d", debug_psg2->channel0.noiseDisabled, debug_psg2->channel1.noiseDisabled, debug_psg2->channel2.noiseDisabled); + dsPrintValue(0, idx++, 0, dbg); + idx++; + sprintf(dbg, "clockDivisor: %-9d", clockDivisor); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "clocksPerSample: %-9d", clocksPerSample); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "envelopeIdle: %-9d", debug_psg2->envelopeIdle); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "envelopePeriod: %-9d", debug_psg2->envelopePeriod); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "envelopePValue: %-9d", debug_psg2->envelopePeriodValue); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "noiseIdle: %-9d", debug_psg2->noiseIdle); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "noisePeriod: %-9d", debug_psg2->noisePeriod); + dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "noisePeriodValue: %-9d", debug_psg2->noisePeriodValue); + dsPrintValue(0, idx++, 0, dbg); + break; + + + case 2: sprintf(dbg, "AUDIO MIXER BUFFER"); dsPrintValue(0, idx++, 0, dbg); idx++; sprintf(dbg, "curSampIdx8 %-4d", currentSampleIdx8); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "comClksPerTik %-9d", commonClocksPerTick); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "sampleBuf[0] %-17lld", (long long)sampleBuffer[0]); + sprintf(dbg, "sampleBuf[0] %-17ld", (long)sampleBuffer[0]); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "sampleBuf[1] %-17lld", (long long)sampleBuffer[1]); + sprintf(dbg, "sampleBuf[1] %-17ld", (long)sampleBuffer[1]); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "comClkCntr[0] %-17lld", (long long)commonClockCounter[0]); + sprintf(dbg, "comClkCntr[0] %-17ld", (long)commonClockCounter[0]); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "comClkCntr[1] %-17lld", (long long)commonClockCounter[1]); + sprintf(dbg, "comClkCntr[1] %-17ld", (long)commonClockCounter[1]); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "comClkPerS[0] %-17lld", (long long)commonClocksPerSample[0]); + sprintf(dbg, "comClkPerS[0] %-17ld", (long)commonClocksPerSample[0]); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "comClkPerS[1] %-17lld", (long long)commonClocksPerSample[1]); + sprintf(dbg, "comClkPerS[1] %-17ld", (long)commonClocksPerSample[1]); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "prevSample[] %04X %04X", previousSample[0], previousSample[1]); dsPrintValue(0, idx++, 0, dbg); diff --git a/arm9/source/debugger.h b/arm9/source/debugger.h index 77dcec4..eed1c1d 100644 --- a/arm9/source/debugger.h +++ b/arm9/source/debugger.h @@ -17,16 +17,26 @@ #include #include "types.h" #include "AY38900.h" +#include "AY38914.h" + +#define DBG_PRESS_PLAY 0 +#define DBG_PRESS_STOP 1 +#define DBG_PRESS_STEP 2 +#define DBG_PRESS_FRAME 3 +#define DBG_PRESS_META 254 +#define DBG_PRESS_NONE 255 extern UINT32 debug_frames; extern UINT32 debug_opcodes; extern AY38900 *debug_stic; +extern AY38914 *debug_psg; +extern AY38914 *debug_psg2; extern INT32 debug[]; extern void show_debug_overlay(void); extern void debugger(void); -extern UINT8 debugger_input(int tx, int ty); +extern UINT8 debugger_input(UINT16 tx, UINT16 ty); extern int getMemUsed(void); #endif diff --git a/arm9/source/ds_tools.cpp b/arm9/source/ds_tools.cpp index d8d518b..cfaccc1 100644 --- a/arm9/source/ds_tools.cpp +++ b/arm9/source/ds_tools.cpp @@ -319,7 +319,7 @@ void dsShowEmuInfo(void) if (currentRip != NULL) { - sprintf(dbg, "CPU Mode: %s", isDSiMode() ? "DSI 134MHz / 16MB":"DS 67MHz / 4 MB"); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "CPU Mode: %s", isDSiMode() ? "DSI 134MHz 16MB":"DS 67MHz 4 MB"); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "Binary Size: %-9u ", currentRip->GetSize()); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "Binary CRC: %08X ", currentRip->GetCRC()); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "Intellivoice: %s ", (bUseIVoice ? "YES":"NO")); dsPrintValue(0, idx++, 0, dbg); @@ -330,11 +330,14 @@ void dsShowEmuInfo(void) sprintf(dbg, "RAM Indexes: %d / %d ", fast_ram16_idx, slow_ram16_idx); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "MEMS MAPPED: %-9d ", currentEmu->memoryBus.getMemCount());dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "RIP ROM Count: %-9d ", currentRip->GetROMCount()); dsPrintValue(0, idx++, 0, dbg); - sprintf(dbg, "RIP RAM Count: %-9d ", currentRip->GetRAMCount()); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "RIP RAM Count: %-9d ", currentRip->GetRAMCount()); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "Compat Tags: %02X %02X %02X %02X %02X", tag_compatibility[0], + tag_compatibility[1], tag_compatibility[2], tag_compatibility[3], + tag_compatibility[4]); dsPrintValue(0, idx++, 0, dbg); } else { - sprintf(dbg, "CPU Mode: %s", isDSiMode() ? "DSI 134MHz / 16MB":"DS 67MHz / 4 MB"); dsPrintValue(0, idx++, 0, dbg); + sprintf(dbg, "CPU Mode: %s", isDSiMode() ? "DSI 134MHz 16MB":"DS 67MHz 4 MB"); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "Memory Used: %-9d ", getMemUsed()); dsPrintValue(0, idx++, 0, dbg); sprintf(dbg, "NO GAME IS LOADED!"); dsPrintValue(0, idx++, 0, dbg); } @@ -946,9 +949,15 @@ ITCM_CODE void pollInputs(void) { touchPosition touch; touchRead(&touch); - #ifdef DEBUG_ENABLE - debugger_input(touch.px, touch.py); + if (debugger_input(touch.px, touch.py) == DBG_PRESS_META) + { + while (keysCurrent() & KEY_TOUCH) // Wait for release + { + WAITVBL; + } + WAITVBL; + } #endif // ----------------------------------------------------------- // Did we map any hotspots on the overlay to disc directions? @@ -1367,10 +1376,16 @@ ITCM_CODE void Run(char *initial_file) // If we've been asked to put out the debug info at the top of the screen... mostly for developer use if (myGlobalConfig.show_fps == 2) { - //sprintf(tmp,"%-6d %-6d %-5d %-5d", debug[0], debug[1], debug[2], debug[3]); - sprintf(tmp,"%04X %04X %04X %04X %02X %02X", debug[0], debug[1], debug[2], debug[3], debug[4], debug[5]); + sprintf(tmp,"%-6d %-6d %-5d %-5d", debug[0], debug[1], debug[2], debug[3]); + //sprintf(tmp,"%04X %04X %04X %04X %02X %02X", debug[0], debug[1], debug[2], debug[3], debug[4], debug[5]); dsPrintValue(6,0,0,tmp); } + + // If we are using the JLP, we call into the 1 second tick function in case there is a dirty flash that needs writing... + if (bUseJLP) + { + currentRip->JLP16Bit->tick_one_second(); + } } #ifdef DEBUG_ENABLE diff --git a/arm9/source/emucore/AY38914_Channel.h b/arm9/source/emucore/AY38914_Channel.h index 3c5971d..350bf52 100644 --- a/arm9/source/emucore/AY38914_Channel.h +++ b/arm9/source/emucore/AY38914_Channel.h @@ -27,8 +27,4 @@ struct Channel_t UINT8 isDirty; }; -extern struct Channel_t channel0; -extern struct Channel_t channel1; -extern struct Channel_t channel2; - #endif diff --git a/arm9/source/emucore/ECS.cpp b/arm9/source/emucore/ECS.cpp index e0ee2ba..4c2ff04 100644 --- a/arm9/source/emucore/ECS.cpp +++ b/arm9/source/emucore/ECS.cpp @@ -10,6 +10,7 @@ // ===================================================================================== #include "ECS.h" +#include "../debugger.h" extern UINT8 ecs_ram[]; @@ -39,10 +40,14 @@ ECS::ECS() AddRAM(&ecsRAM); +#ifdef DEBUG_ENABLE + debug_psg2 = &psg2; +#endif + AddProcessor(&psg2); AddAudioProducer(&psg2); AddRAM(&psg2.registers); - + AddInputConsumer(&keyboard); } diff --git a/arm9/source/emucore/Intellivision.cpp b/arm9/source/emucore/Intellivision.cpp index bac0722..0ecab4a 100644 --- a/arm9/source/emucore/Intellivision.cpp +++ b/arm9/source/emucore/Intellivision.cpp @@ -75,6 +75,7 @@ Intellivision::Intellivision() #ifdef DEBUG_ENABLE debug_stic = &stic; + debug_psg = &psg; #endif //add the PSG diff --git a/arm9/source/emucore/JLP.cpp b/arm9/source/emucore/JLP.cpp index 3963248..f93be79 100644 --- a/arm9/source/emucore/JLP.cpp +++ b/arm9/source/emucore/JLP.cpp @@ -18,6 +18,7 @@ #include "RAM.h" #include "Rip.h" #include "../config.h" +#include "../ds_tools.h" extern Rip *currentRip; @@ -30,7 +31,7 @@ void JLP::reset() enabled = TRUE; for (UINT16 i = 0; i < JLP_RAM_SIZE; i++) jlp_ram[i] = 0xFFFF; - jlp_ram[JLP_RAM_SIZE-1] = 0; + jlp_ram[JLP_RAM_SIZE-1] = 0; /* The last byte of jlp RAM reads back as 0 */ jlp_ram[0x23] = 0; /* First valid flash row number */ jlp_ram[0x24] = NUM_JLP_ROWS; /* Last valid flash row number */ @@ -38,7 +39,21 @@ void JLP::reset() jlp_ram[0x2E] = 0; /* Command regs read as 0 */ jlp_ram[0x2F] = 0; /* Command regs read as 0 */ - flash_read = 1; // Force flash to read... + flash_read = 1; // Force flash to read... + flash_write_time = 0; // And reset the time to write... +} + +// If the JLP flash needs to be written, we write it to the backing file. We do it this way so that quick-succession writes +// to the flash do not force a write to the backing file which is slow and wasteful... so we have a 2 second backing timer. +void JLP::tick_one_second(void) +{ + if (flash_write_time > 0) + { + if (--flash_write_time == 0) + { + WriteFlashFile(); + } + } } UINT16 JLP::peek(UINT16 location) @@ -113,6 +128,7 @@ void JLP::WriteFlashFile(void) { FILE *fp; + dsPrintValue(23,0,0, (char*)"JLP FLASH"); GetFlashFilename(); fp = fopen(flash_filename, "wb"); if (fp != NULL) @@ -120,12 +136,17 @@ void JLP::WriteFlashFile(void) fwrite(jlp_flash, 1, JLP_FLASH_SIZE, fp); fclose(fp); } + dsPrintValue(23,0,0,(char*)" "); } +void JLP::ScheduleWriteFlashFile(void) +{ + flash_write_time = 2; +} void JLP::RamToFlash(void) { - UINT32 addr = jlp_ram[(0x8025&readAddressMask) - this->location] - 0x8000; + UINT32 addr = jlp_ram[(0x8025&readAddressMask) - this->location] - JLP_RAM_ADDRESS; UINT32 row = (jlp_ram[(0x8026&readAddressMask) - this->location] - jlp_ram[(0x8023&readAddressMask) - this->location]) * 192; int i, a; @@ -146,12 +167,12 @@ void JLP::RamToFlash(void) jlp_flash[row + i + 0] = jlp_ram[addr + a] & 0xFF; jlp_flash[row + i + 1] = jlp_ram[addr + a] >> 8; } - WriteFlashFile(); + ScheduleWriteFlashFile(); } void JLP::FlashToRam(void) { - UINT32 addr = jlp_ram[(0x8025&readAddressMask) - this->location] - 0x8000; + UINT32 addr = jlp_ram[(0x8025&readAddressMask) - this->location] - JLP_RAM_ADDRESS; UINT32 row = (jlp_ram[(0x8026&readAddressMask) - this->location] - jlp_ram[(0x8023&readAddressMask) - this->location]) * 192; int i, a; @@ -166,8 +187,7 @@ void JLP::FlashToRam(void) UINT16 lo = jlp_flash[row + i + 0]; UINT16 hi = jlp_flash[row + i + 1]; jlp_ram[addr + a] = lo | (hi << 8); - } - + } } void JLP::EraseSector(void) @@ -176,7 +196,7 @@ void JLP::EraseSector(void) if (jlp_ram[(0x8026&readAddressMask) - this->location] > NUM_JLP_ROWS) return; if (flash_read) ReadFlashFile(); memset((void *)&jlp_flash[row], 0xFF, 192 * 8); - WriteFlashFile(); + ScheduleWriteFlashFile(); } diff --git a/arm9/source/emucore/JLP.h b/arm9/source/emucore/JLP.h index 06511ef..620111a 100644 --- a/arm9/source/emucore/JLP.h +++ b/arm9/source/emucore/JLP.h @@ -34,6 +34,7 @@ class JLP : public RAM void reset(); UINT16 peek(UINT16 location); void poke(UINT16 location, UINT16 value); + void tick_one_second(void); void getState(JLPState *state); void setState(JLPState *state); @@ -46,8 +47,10 @@ class JLP : public RAM void EraseSector(void); void ReadFlashFile(void); void WriteFlashFile(void); + void ScheduleWriteFlashFile(void); void GetFlashFilename(void); UINT8 flash_read; + UINT8 flash_write_time; }; #endif diff --git a/arm9/source/emucore/Memory.h b/arm9/source/emucore/Memory.h index f842cbc..2d056c9 100644 --- a/arm9/source/emucore/Memory.h +++ b/arm9/source/emucore/Memory.h @@ -19,7 +19,6 @@ #define MAX_COMPONENTS 4 #define MAX_ROMS 128 -extern UINT16 MAX_OVERLAPPED_MEMORIES; extern UINT32 MAX_ROM_FILE_SIZE; class Memory diff --git a/arm9/source/emucore/MemoryBus.cpp b/arm9/source/emucore/MemoryBus.cpp index d332896..0a38988 100644 --- a/arm9/source/emucore/MemoryBus.cpp +++ b/arm9/source/emucore/MemoryBus.cpp @@ -14,7 +14,8 @@ #include "MemoryBus.h" #include "../ds_tools.h" -UINT16 MAX_OVERLAPPED_MEMORIES = 3; +UINT16 MAX_READ_OVERLAPPED_MEMORIES = 2; +UINT16 MAX_WRITE_OVERLAPPED_MEMORIES = 3; // ---------------------------------------------------------------------------------------------- // We use this class and single object to fill all unused memory locations in the memory map. @@ -60,11 +61,13 @@ MemoryBus::MemoryBus() // ------------------------------------------------------------------------------------- if (isDSiMode()) { - MAX_OVERLAPPED_MEMORIES = 16; // This will handle massive page-flip (banked) games + MAX_READ_OVERLAPPED_MEMORIES = 16; // Good enough for any page-flipping game. This is massive! + MAX_WRITE_OVERLAPPED_MEMORIES = 17; // Need one extra here to handle the GRAM mirrors up in odd splaces in ROM } else { - MAX_OVERLAPPED_MEMORIES = 3; // Good enough for almost all games + MAX_READ_OVERLAPPED_MEMORIES = 2; // Good enough for almost all games except very large page-flipping games + MAX_WRITE_OVERLAPPED_MEMORIES = 3; // Need one extra here to handle the GRAM mirrors up in odd splaces in ROM } UINT32 size = 1 << (sizeof(UINT16) << 3); @@ -78,12 +81,12 @@ MemoryBus::MemoryBus() // On the DS with 3 overlapped memories (enough for most games), this is still 1.5MB of memory (out of the 3.5MB available) // On the DSi with a full 16 overlapped memories (enough for any game), this is a whopping 8MB (out of the 15.5MB available) // --------------------------------------------------------------------------------------------------------------------------- - overlappedMemoryPool = new UINT32[size*MAX_OVERLAPPED_MEMORIES*2]; + overlappedMemoryPool = new UINT32[size*(MAX_READ_OVERLAPPED_MEMORIES+MAX_WRITE_OVERLAPPED_MEMORIES)]; for (i = 0; i < size; i++) { - writeableMemorySpace[i] = (Memory **)overlappedMemoryPool;//new Memory*[MAX_OVERLAPPED_MEMORIES]; - for (int j=0; j= MAX_READ_OVERLAPPED_MEMORIES) + { + FatalError("ERROR MAX READABLE MEM OVERLAP"); + return; + } readableMemorySpace[k][memCount] = m; readableMemoryCounts[k]++; } @@ -184,6 +192,11 @@ void MemoryBus::addMemory(Memory* m) for (UINT32 k = nextAddress; k <= nextEnd; k++) { UINT16 memCount = writeableMemoryCounts[k]; + if (memCount >= MAX_WRITE_OVERLAPPED_MEMORIES) + { + FatalError("ERROR MAX WRITEABLE MEM OVERLAP"); + return; + } writeableMemorySpace[k][memCount] = m; writeableMemoryCounts[k]++; } diff --git a/arm9/source/emucore/Rip.cpp b/arm9/source/emucore/Rip.cpp index 63ea776..e1f4d1c 100644 --- a/arm9/source/emucore/Rip.cpp +++ b/arm9/source/emucore/Rip.cpp @@ -28,6 +28,7 @@ #define ROM_TAG_RELEASE_DATE 0x05 #define ROM_TAG_COMPATIBILITY 0x06 +UINT8 tag_compatibility[8] = {0}; extern UINT8 *bin_image_buf; extern UINT16 *bin_image_buf16; @@ -414,9 +415,9 @@ Rip* Rip::LoadRom(const CHAR* filename) return NULL; } - //read the magic byte (should always be $A8 or $41) + //read the magic byte (should always be $A8 or $41 or $61) int read = fgetc(infile); - if ((read != 0xA8) && (read != 0x41)) + if ((read != 0xA8) && (read != 0x41) && (read != 0x61)) { fclose(infile); FatalError("ROM MAGIC BYTE MISSING"); @@ -432,6 +433,8 @@ Rip* Rip::LoadRom(const CHAR* filename) fclose(infile); return NULL; } + + memset(tag_compatibility, 0x00, sizeof(tag_compatibility)); Rip* rip = new Rip(ID_SYSTEM_INTELLIVISION); @@ -533,6 +536,7 @@ Rip* Rip::LoadRom(const CHAR* filename) case ROM_TAG_COMPATIBILITY: { read = fgetc(infile); + tag_compatibility[0] = read; calcCrc16 = crc16_update(calcCrc16, read); // Check for ECS Supported or Required... @@ -546,6 +550,7 @@ Rip* Rip::LoadRom(const CHAR* filename) for (i = 0; i < length-1; i++) // -1 because we already processed the first byte above... { read = fgetc(infile); + tag_compatibility[1+i] = read; calcCrc16 = crc16_update(calcCrc16, read); // ------------------------------------------------------------------------ // Optional Byte 4 is of interest to us as that one has JLP stuff in it diff --git a/arm9/source/emucore/Rip.h b/arm9/source/emucore/Rip.h index 99ecbfe..f5a65ca 100644 --- a/arm9/source/emucore/Rip.h +++ b/arm9/source/emucore/Rip.h @@ -23,9 +23,9 @@ using namespace std; typedef enum _PeripheralCompatibility { - PERIPH_REQUIRED = 0, - PERIPH_OPTIONAL = 1, - PERIPH_COMPATIBLE = 2, + PERIPH_REQUIRED = 0, + PERIPH_OPTIONAL = 1, + PERIPH_COMPATIBLE = 2, PERIPH_INCOMPATIBLE = 3 } PeripheralCompatibility; @@ -34,6 +34,7 @@ typedef enum _PeripheralCompatibility #define ID_PERIPH_ECS 0x143D9A97 #define ID_PERIPH_INTELLIVOICE 0x6EFF540A +extern UINT8 tag_compatibility[]; typedef struct _CartridgeConfiguration CartridgeConfiguration; diff --git a/arm9/source/loadgame.cpp b/arm9/source/loadgame.cpp index 5b3a874..f0a8714 100644 --- a/arm9/source/loadgame.cpp +++ b/arm9/source/loadgame.cpp @@ -102,6 +102,16 @@ BOOL LoadCart(const CHAR* filename) FatalError("UNKNOWN FILE TYPE"); return FALSE; } + + // ------------------------------------------------------------------------------------------------------------------ + // The ECS uses 3 banked ROM areas... so we need to fill those in manually as we clear this array out on every load. + // ------------------------------------------------------------------------------------------------------------------ + if (bUseECS) + { + gBankerIsMappedHere[0x2][1] = 1; + gBankerIsMappedHere[0x7][0] = 1; + gBankerIsMappedHere[0xE][1] = 1; + } // --------------------------------------------------------------------- // New game is loaded... (would have returned FALSE above otherwise)