From 47af13039c4f1a09e12d1d6c01b4edca27aff639 Mon Sep 17 00:00:00 2001 From: wavemotion-dave <75039837+wavemotion-dave@users.noreply.github.com> Date: Thu, 23 Dec 2021 07:56:03 -0500 Subject: [PATCH] Major restructure of ITCM Code to get a big speed boost in the new CZ80 core. Ready for 4.7 release. --- ColecoDS.nds | Bin 788480 -> 780800 bytes Makefile | 2 +- README.md | 23 ++++++++++++++---- arm9/gfx_data/pdev_bg0.png | Bin 9654 -> 9637 bytes arm9/source/colecoDS.c | 9 +++++-- arm9/source/colecoDS.h | 4 ++-- arm9/source/colecogeneric.c | 7 +++--- arm9/source/colecomngt.c | 4 ++-- arm9/source/cpu/sn76496/Fake_AY.c | 2 +- arm9/source/cpu/tms9918a/tms9918a.c | 2 +- arm9/source/cpu/tms9918a/tms9918a.h | 8 +++---- arm9/source/cpu/z80/Z80.c | 20 ++++------------ arm9/source/cpu/z80/drz80/Z80_interface.c | 28 +++++++++++----------- arm9/source/cpu/z80/drz80/drz80.s | 1 - 14 files changed, 59 insertions(+), 51 deletions(-) diff --git a/ColecoDS.nds b/ColecoDS.nds index fe116ebe0b151b210e75bc3183da46172e44223e..9c8d2142ad55d2ddb761d3d35be0d5baa9e44bad 100644 GIT binary patch delta 87773 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

FxK(O|`RgS8?kZL(KTOhJt)jxJC+Ucn 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 Pe73!H(H6aRok{&aalhmx delta 94630 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

vNP9DEHTPY~1>rSy{L9 z&s^3Ye;4cxTd1914O>8uC^a7Up2Vmop%kQZ>~eXBIM%qlk2?gHci{hL%hENq-W!;I zZf4!MsKI*(9pzRTx8AVAHk@}FRK_hg-f}}jU__6iM!o{J+cRys;qT_!?4j6r0yZ*R zb4&3(1$_72^S#QQ5I@iSGi*DCjqvj9Q2tv*$K8S7LM*%&0`}hXgm}S?qm?jxMO9+P zw`#{*4c?&-{XW2ydjamizMX?nOmsU=Hh4$cPW?`){+^$v|M(etFB$6n8K88U-(Y`F vSyMAK`OdwyHQ#|;INP!iP7Q5=1!$LnfNKvhX~5fHZU>-XcYoaE9r%9$sf`?y diff --git a/Makefile b/Makefile index d40338c8..0ae76358 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ include $(DEVKITARM)/ds_rules export TARGET := ColecoDS export TOPDIR := $(CURDIR) -export VERSION := 4.6a +export VERSION := 4.7 ICON := -b $(CURDIR)/logo.bmp "ColecoDS $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/ColecoDS" diff --git a/README.md b/README.md index 5c742ce3..543d5540 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,10 @@ Thanks to Flubba for the SN76496 sound core. Special thanks to Marat Fayzullin, as the author of ColEM which is the code for the -core emulation (specifically TMS9918 VDP). -I think the original port was circa ColEM 2.1 -with some fixes and updated Sprite/Line handling -from ColEM 5.6 +core emulation (specifically TMS9918 VDP +and the CZ80 CPU core). I think the original +port was circa ColEM 2.1 with some fixes and +updated Sprite/Line handling from ColEM 5.6 Known Issues : ----------------------- @@ -96,8 +96,23 @@ it for almost all games (Princess Quest is one game where you might turn it off) handle it for the more simple games. So by default it's enabled for DSi and disabled for DS-LITE/PHAT. You can toggle this in the "Game Options" (and START=SAVE it out as you wish). +A Tale of Two Cores : +----------------------- +ColecoDS supports 2 different Z80 CPU cores. +DrZ80 is very fast but is not 100% accurate so some games don't run right. +CZ80 is slower but is much closer to 100% accurate and games generally run great. +For the DSi and above, the CZ80 core is the default. +For the DS-LITE/PHAT, the DrZ80 core is the default. +You can toggle this (and save on a per-game basis) in GAME OPTIONS. +If you want to use the CZ80 core but need a bit more speed to make the +games playable - you can also play with Vertical Sync and Frame Skip settings. + Versions : ----------------------- +V4.7: 23-Dec-2021 by wavemotion-dave +* Major speed improvements in the new CZ80 core. +* Installed new CZ80 core as the default for DSi and above. + V4.6: 22-Dec-2021 by wavemotion-dave * New CZ80 core added to solve compatibility problems with the remaining games. diff --git a/arm9/gfx_data/pdev_bg0.png b/arm9/gfx_data/pdev_bg0.png index 87d810249b807ddf05998cdd55deb4a279019fc5..7dec3c9132fc374bbd574a8d22f75aa1e3fe0005 100644 GIT binary patch delta 8380 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 diff --git a/arm9/source/colecoDS.c b/arm9/source/colecoDS.c index 949e4393..aebca05c 100644 --- a/arm9/source/colecoDS.c +++ b/arm9/source/colecoDS.c @@ -485,7 +485,7 @@ void DisplayStatusLine(bool bForce) // ------------------------------------------------------------------------ // The main emulation loop is here... call into the Z80, VDP and PSG // ------------------------------------------------------------------------ -ITCM_CODE void colecoDS_main(void) +void colecoDS_main(void) { u32 keys_pressed; u16 iTx, iTy; @@ -494,8 +494,10 @@ ITCM_CODE void colecoDS_main(void) static u32 lastUN = 0; static u8 dampenClick = 0; - showMainMenu(); // Returns when user has asked for a game to run... + // Returns when user has asked for a game to run... + showMainMenu(); + // Get the Coleco Machine Emualtor ready colecoInit(gpFic[ucGameAct].szName); colecoSetPal(); @@ -513,10 +515,12 @@ ITCM_CODE void colecoDS_main(void) timingFrames = 0; emuFps=0; + // Default SGM statics back to init state last_sgm_mode = false; last_ay_mode = false; last_mc_mode = 0; + // Force the sound engine to turn on when we start emulation bStartSoundEngine = true; // ------------------------------------------------------------------- @@ -527,6 +531,7 @@ ITCM_CODE void colecoDS_main(void) // Take a tour of the Z80 counter and display the screen if necessary if (!LoopZ80()) { + // If we've been asked to start the sound engine, rock-and-roll! if (bStartSoundEngine) { bStartSoundEngine = false; diff --git a/arm9/source/colecoDS.h b/arm9/source/colecoDS.h index edbc4dff..e9316c3e 100644 --- a/arm9/source/colecoDS.h +++ b/arm9/source/colecoDS.h @@ -5,7 +5,7 @@ #include #include "cpu/z80/drz80/Z80_interface.h" -#define VERSIONCLDS "4.6" +#define VERSIONCLDS "4.7" //#define DEBUG_Z80 YES @@ -34,7 +34,7 @@ #define JST_RED JST_FIRER #define JST_YELLOW JST_FIREL -// These 4 are now actual Colecovision key maps... they trigger the spinners. +// These 4 are not actual Colecovision key maps... they trigger the spinner logic. #define META_SPINX_LEFT 0xFFFF0001 #define META_SPINX_RIGHT 0xFFFF0002 #define META_SPINY_LEFT 0xFFFF0003 diff --git a/arm9/source/colecogeneric.c b/arm9/source/colecogeneric.c index 37e779a3..a5717484 100644 --- a/arm9/source/colecogeneric.c +++ b/arm9/source/colecogeneric.c @@ -701,10 +701,10 @@ void SetDefaultGameConfig(void) myConfig.autoFire2 = 0; myConfig.overlay = 0; myConfig.maxSprites = 0; - myConfig.vertSync = (isDSiMode() ? 1:0); + myConfig.vertSync = (isDSiMode() ? 1:0); // Default is Vertical Sync ON for DSi and OFF for DS-LITE myConfig.spinSpeed = 0; myConfig.touchPad = 0; - myConfig.cpuCore = 0; // Default is the faster DrZ80 core + myConfig.cpuCore = (isDSiMode() ? 1:0); // Default is slower/accurate CZ80 for DSi and faster DrZ80 core for DS-LITE myConfig.reserved9 = 0; myConfig.reservedA = 0; myConfig.reservedB = 0; @@ -784,6 +784,7 @@ void SetDefaultGameConfig(void) // ------------------------------------------------------------------------ // These games all need the slower but higher compatibility CZ80 CPU Core + // so override the default above for these games in order to play them. // ------------------------------------------------------------------------ if ( (file_crc == 0xead5e824) || // Arno Dash @@ -889,7 +890,7 @@ const struct options_t Option_Table[] = {"AUTO FIRE B2", {"OFF", "ON"}, &myConfig.autoFire2, 2}, {"TOUCH PAD", {"PLAYER 1", "PLAYER 2"}, &myConfig.touchPad, 2}, {"SPIN SPEED", {"NORMAL", "FAST", "FASTEST", "SLOW", "SLOWEST"}, &myConfig.spinSpeed, 5}, - {"Z80 CPU CORE", {"DRZ80 (Fast)", "CZ80 (Slow)"}, &myConfig.cpuCore, 2}, + {"Z80 CPU CORE", {"DRZ80 (Faster)", "CZ80 (Slower)"}, &myConfig.cpuCore, 2}, #if 0 // Developer use only {"Z80 CYCLES!!", {"NORMAL", "+1", "+2", "+3", "+4", "+5", "+6", "+7", "+8", "+9", "+10", "-1", "-2", "-3", "-4", "-5"}, &dev_z80_cycles, 16}, #endif diff --git a/arm9/source/colecomngt.c b/arm9/source/colecomngt.c index 1b22ad0a..5cb05928 100644 --- a/arm9/source/colecomngt.c +++ b/arm9/source/colecomngt.c @@ -794,11 +794,11 @@ ITCM_CODE void cpu_writeport16(register unsigned short Port,register unsigned ch // ----------------------------------------------- // These two functions are for the CZ80 core... // ----------------------------------------------- -ITCM_CODE void OutZ80(register word Port,register byte Value) +void OutZ80(register word Port,register byte Value) { cpu_writeport16(Port, Value); } -ITCM_CODE byte InZ80(register word Port) +byte InZ80(register word Port) { return cpu_readport16(Port); } diff --git a/arm9/source/cpu/sn76496/Fake_AY.c b/arm9/source/cpu/sn76496/Fake_AY.c index 0ba43fba..2bd09062 100644 --- a/arm9/source/cpu/sn76496/Fake_AY.c +++ b/arm9/source/cpu/sn76496/Fake_AY.c @@ -70,7 +70,7 @@ u8 c_idx=0; // We handle envelopes here... the timing is nowhere near exact but so few games utilize this // and so accuracy isn't all that critical. The sound will be a little off - but it will be ok. // --------------------------------------------------------------------------------------------- -ITCM_CODE void FakeAY_Loop(void) +void FakeAY_Loop(void) { static u16 delay=0; diff --git a/arm9/source/cpu/tms9918a/tms9918a.c b/arm9/source/cpu/tms9918a/tms9918a.c index a343f14b..1c0e89fc 100644 --- a/arm9/source/cpu/tms9918a/tms9918a.c +++ b/arm9/source/cpu/tms9918a/tms9918a.c @@ -457,7 +457,7 @@ void ITCM_CODE RefreshLine2(u8 uY) { /** Refresh line Y (0..191) of SCREEN3, including sprites **/ /** in this line. **/ /*************************************************************/ -void ITCM_CODE RefreshLine3(u8 uY) { +void RefreshLine3(u8 uY) { register byte X,K,Offset; register byte *P,*T; diff --git a/arm9/source/cpu/tms9918a/tms9918a.h b/arm9/source/cpu/tms9918a/tms9918a.h index d06fb1d0..ffaca418 100644 --- a/arm9/source/cpu/tms9918a/tms9918a.h +++ b/arm9/source/cpu/tms9918a/tms9918a.h @@ -52,10 +52,10 @@ extern u8 bResetVLatch; extern u8 TMS9918A_palette[16*3]; extern tScrMode SCR[MAXSCREEN+1]; -extern void ITCM_CODE RefreshLine0(u8 uY); -extern void ITCM_CODE RefreshLine1(u8 uY); -extern void ITCM_CODE RefreshLine2(u8 uY); -extern void ITCM_CODE RefreshLine3(u8 uY); +extern void RefreshLine0(u8 uY); +extern void RefreshLine1(u8 uY); +extern void RefreshLine2(u8 uY); +extern void RefreshLine3(u8 uY); extern byte WrCtrl9918(byte value); extern void WrData9918(byte value); diff --git a/arm9/source/cpu/z80/Z80.c b/arm9/source/cpu/z80/Z80.c index dd8328e4..067e39e4 100644 --- a/arm9/source/cpu/z80/Z80.c +++ b/arm9/source/cpu/z80/Z80.c @@ -40,22 +40,10 @@ INLINE byte OpZ80(word A) { return pColecoMem[A]; } // ----------------------------------------------- // These two functions are for the CZ80 core... // ----------------------------------------------- -extern u8 bMagicMegaCart, romBankMask; extern void cpu_writemem16 (u8 value,u16 address); -extern void BankSwitch(u8 bank); -INLINE void WrZ80(register word address,register byte Value) -{ - cpu_writemem16(Value, address); -} - -INLINE byte RdZ80(register word address) -{ - if (bMagicMegaCart && (address >= 0xFFC0)) // Handle Megacart Hot Spots - { - BankSwitch(address & romBankMask); - } - return (pColecoMem[address]); -} +extern byte cpu_readmem16_banked (u16 address); +#define WrZ80(A,V) cpu_writemem16(V,A) +#define RdZ80(A) cpu_readmem16_banked(A) #define S(Fl) CPU.AF.B.l|=Fl #define R(Fl) CPU.AF.B.l&=~(Fl) @@ -520,7 +508,7 @@ void ResetZ80(Z80 *R) /** negative, and current register values in R. **/ /*************************************************************/ #ifdef EXECZ80 -int ExecZ80(register Z80 *R,register int RunCycles) +ITCM_CODE int ExecZ80(register Z80 *R,register int RunCycles) { register byte I; register pair J; diff --git a/arm9/source/cpu/z80/drz80/Z80_interface.c b/arm9/source/cpu/z80/drz80/Z80_interface.c index 3d42d78e..b1e0558b 100644 --- a/arm9/source/cpu/z80/drz80/Z80_interface.c +++ b/arm9/source/cpu/z80/drz80/Z80_interface.c @@ -27,33 +27,33 @@ extern u8 romBankMask; extern u8 romBuffer[]; -ITCM_CODE u32 z80_rebaseSP(u16 address) { + u32 z80_rebaseSP(u16 address) { drz80.Z80SP_BASE = (unsigned int) pColecoMem; drz80.Z80SP = drz80.Z80SP_BASE + address; return (drz80.Z80SP); } -ITCM_CODE u32 z80_rebasePC(u16 address) { + u32 z80_rebasePC(u16 address) { drz80.Z80PC_BASE = (unsigned int) pColecoMem; drz80.Z80PC = drz80.Z80PC_BASE + address; return (drz80.Z80PC); } -ITCM_CODE void z80_irq_callback(void) { + void z80_irq_callback(void) { drz80.Z80_IRQ = 0x00; } // ----------------------------- // Normal 8-bit Read... fast! // ----------------------------- -ITCM_CODE u8 cpu_readmem16 (u16 address) { + u8 cpu_readmem16 (u16 address) { return (pColecoMem[address]); } // ----------------------------- // Normal 16-bit Read... fast! // ----------------------------- -ITCM_CODE u16 drz80MemReadW(u16 address) + u16 drz80MemReadW(u16 address) { return (pColecoMem[address] | (pColecoMem[address+1] << 8)); } @@ -61,7 +61,7 @@ ITCM_CODE u16 drz80MemReadW(u16 address) // ------------------------------------------------ // Switch banks... do this as fast as possible.. // ------------------------------------------------ -ITCM_CODE void BankSwitch(u8 bank) + void BankSwitch(u8 bank) { if (lastBank != bank) // Only if the bank was changed... { @@ -82,7 +82,7 @@ ITCM_CODE void BankSwitch(u8 bank) // ------------------------------------------------- // 8-bit read with bankswitch support... slower... // ------------------------------------------------- -ITCM_CODE u8 cpu_readmem16_banked (u16 address) + u8 cpu_readmem16_banked (u16 address) { if (bMagicMegaCart) // Handle Megacart Hot Spots { @@ -97,7 +97,7 @@ ITCM_CODE u8 cpu_readmem16_banked (u16 address) // ------------------------------------------------- // 16-bit read with bankswitch support... slower... // ------------------------------------------------- -ITCM_CODE u16 drz80MemReadW_banked(u16 addr) + u16 drz80MemReadW_banked(u16 addr) { if (bMagicMegaCart) // Handle Megacart Hot Spots { @@ -112,7 +112,7 @@ ITCM_CODE u16 drz80MemReadW_banked(u16 addr) // Write memory handles both normal writes and bankswitched since // write is much less common than reads... // ------------------------------------------------------------------ -ITCM_CODE void cpu_writemem16 (u8 value,u16 address) + void cpu_writemem16 (u8 value,u16 address) { extern u8 sRamAtE000_OK; extern u8 sgm_enable; @@ -151,13 +151,13 @@ ITCM_CODE void cpu_writemem16 (u8 value,u16 address) // ----------------------------------------------------------------- // The 16-bit write simply makes 2 calls into the 8-bit writes... // ----------------------------------------------------------------- -ITCM_CODE void drz80MemWriteW(u16 data,u16 addr) + void drz80MemWriteW(u16 data,u16 addr) { cpu_writemem16(data & 0xff , addr); cpu_writemem16(data>>8,addr+1); } -ITCM_CODE void Z80_Cause_Interrupt(int type) + void Z80_Cause_Interrupt(int type) { if (type == Z80_NMI_INT) { @@ -174,13 +174,13 @@ ITCM_CODE void Z80_Cause_Interrupt(int type) } } -ITCM_CODE void Z80_Clear_Pending_Interrupts(void) + void Z80_Clear_Pending_Interrupts(void) { drz80.pending_irq = 0; drz80.Z80_IRQ = 0; } -ITCM_CODE void Interrupt(void) + void Interrupt(void) { if (drz80.pending_irq & NMI_IRQ) /* NMI IRQ */ { @@ -247,7 +247,7 @@ void DrZ80_Reset(void) { // produce exactly an evenly-divisible number of // cycles for a given scanline... // -------------------------------------------------- -ITCM_CODE int DrZ80_execute(int cycles) + int DrZ80_execute(int cycles) { drz80.cycles = cycles + cycle_deficit; diff --git a/arm9/source/cpu/z80/drz80/drz80.s b/arm9/source/cpu/z80/drz80/drz80.s index 433b3690..951215ac 100644 --- a/arm9/source/cpu/z80/drz80/drz80.s +++ b/arm9/source/cpu/z80/drz80/drz80.s @@ -1089,7 +1089,6 @@ DrZ80Ver: .long 0x0001 .equ Z80_HALT, 1<<2 ;@ --------------------------- Framework -------------------------- -.section .itcm DrZ80Run: ;@ r0 = pointer to cpu context ;@ r1 = ISTATES to execute