Skip to content

Commit

Permalink
Version 3.6 - Updated XM detection so newest games play properly.
Browse files Browse the repository at this point in the history
  • Loading branch information
wavemotion-dave committed Jun 4, 2022
1 parent e3485a5 commit 9b52a75
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 13 deletions.
Binary file modified A7800DS.nds
Binary file not shown.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION=3.5
VERSION=3.6
TARGNAME=A7800DS

#---------------------------------------------------------------------------------
Expand Down
22 changes: 13 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ Features :
Most things you should expect from an emulator. Speed is excellent on the DSi and
less great on the older DS-LITE. For the DS-LITE you can expect full speed only on
about half of the 7800 library. The more traditional games (think: Asteroids,
Astro Blaster, Robotron, Food Fight, Centipede, Pac-Man Collection, etc) will
Astro Blaster, Robotron, Food Fight, Centipede, Pac-Man Collection, etc) should
all run great. The really big bankswitched games will struggle on the older
DS-LITE/PHAT hardware.

Add highscore.rom for 7800 High Score saving. This can be in /roms/bios, /data/bios
or in the same directory as the emulator.
or in the same directory as the emulator. It's worth the effort!

Copyright :
----------
A7800DS is Copyright 2022 by Dave Bernazzani (wavemotion-dave).
A7800DS is Copyright 2021-2022 by Dave Bernazzani (wavemotion-dave).

Copying and distribution of this emulator, it's source code and associated
readme files, with or without modification, are permitted in any medium without
Expand All @@ -34,17 +34,21 @@ Alekmaul (original port) and Greg Stanton (ProSystem Emulator) are thanked profu
Philosophy :
----------
For this particular emulator, I'm not striving for perfect emulation accuracy - the goal
is to get as many games as close to perfectly playable as possible. Nothing else matters
if the game won't run at near full speed with all the gameplay in-tact. The original
is to get as many games as close to playable as possible. Nothing else matters if
the game won't run at near full speed with all the gameplay in-tact. The original
baseline emulator (ProSystem) had some issues that were made more exaggerated with the
port to the DS/DSi. Minor screen glitches or minor sound issues are secondary to making
sure the game will actually run. If you're looking for a highly accurate emulator for
the 7800 ProSystem, this isn't it - try MAME/MESS. But if you're looking to enjoy some
classic 7800 console goodness on your DS/DSi then you've come to the right place!
the 7800 ProSystem, this isn't it - try MAME/MESS or A7800. But if you're looking to enjoy
some classic 7800 console goodness on your DS/DSi then you've come to the right place!

--------------------------------------------------------------------------------
History :
--------------------------------------------------------------------------------
V3.6 : 04-Jun-2022 by wavemotion-dave
* Fix for XM detection so the newest Pac-Man Collecion (PMC-XM) works!
* Minor database cleanups so all the more recent games run.

V3.5 : 12-Feb-2022 by wavemotion-dave
* Across the board cleanup of code. Copyright notice added.
* Fixed High-Score save on Time Salvo
Expand Down Expand Up @@ -278,7 +282,7 @@ Ms. Pac-Man fc0ea52a9fac557251b65ee680d951e5 YES 60 Near perfe
Ninja Golf 220121f771fc4b98cef97dc040e8d378 NO 60 Near perfect
One On One 74569571a208f8b0b1ccfb22d7c914e1 NO 60 Near perfect
Pac-Man Collection 5013b69cb05b21a1194ce48517df7bfc YES 60 Near perfect
Pac-Man Collection 40th 044657294450c869c45e7ef61f4870de YES 60 Near perfect - use the "Forced TIA" version only (not XM/YM)
Pac-Man Collection 40th 1330d23ebad9b5ded92ebeacdf305abd YES 60 Near perfect - Damn this is one fine collection!
Planet Smashers 33aea1e2b6634a1dec8c7006d9afda22 NO 60 Near perfect
Plutos 86546808dc60961cdb1b20e761c50ab1 NO 60 Near perfect
Pole Position II 584582bb09ee8122e7fc09dc7d1ed813 NO 60 Near perfect
Expand All @@ -301,4 +305,4 @@ Winter Games 3799d72f78dda2ee87b0ef8bf7b91186 NO 60 Plays fine
Xenophobe 05fb699db9eef564e2fe45c568746dbc NO 60 Near perfect
Xevious d7dc17379aa25e5ae3c14b9e780c6f6d YES 60 Near perfect
```


Binary file modified arm9/gfx/pdev_bg0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 7 additions & 2 deletions arm9/source/emu/Database.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Database_Entry game_list[] = {
{"4e325918a8b3bbcf2f9405040abcfc6d", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 26, 256, 220, 0}, // title=BonQ (found on Atairage Age site)
{"9fa7743a016c9b7015ee1d386326f88e", "b*nQ", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, NO_STEALING, SKIP_WSYNC, HSC_YES, 0, 26, 256, 220, 0}, // title=BonQ (final Atariage)
{"4a8a22cff154f479f1ddaa386f21fc39", "Boom", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 15, 256, 220, 0}, // title=Boom!
{"000b5888d2489f7e256d80a0848ecd14", "Cannon in D for Defense", CT_SUPLRG, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 223, 0}, // title=Cannon in D for Defense (demo 03)
{"5a09946e57dbe30408a8f253a28d07db", "Centipede", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 24, 24, 300, 230, 0}, // title=Centipede
{"20660b667df538ec32a8e1b998438604", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 24, 24, 300, 230, 0}, // title=Centipede - Frameless Hack
{"a4b5d742860beb25c29def4530194c1e", "Chase", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 8, 27, 269, 233, 0}, // title=Chase
Expand All @@ -84,6 +85,7 @@ Database_Entry game_list[] = {
{"543484c00ba233736bcaba2da20eeea9", "Double Dragon", CT_ACTVIS, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, NO_STEALING, SKIP_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Double Dragon
{"94009ccfdcd4f55d24033ca06269ba6a", "Dragon's Descent", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 24, 256, 234, 0}, // title=Dragon's Descent 1.7
{"cad9b532a4ced6793e18ba7237e44d40", "Dragon's Havoc", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 6, 23, 256, 232, 0}, // title=Dragon's Havoc
{"2a3cb324b75af461fc974b02e6b30b5d", "Dragon's Havoc", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 6, 23, 256, 232, 0}, // title=Dragon's Havoc - Newest 2022
{"a9f29004412621f20ad9f5c51cc11486", "Draker Quest II", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 24, 256, 230, 0}, // title=Draker Quest II
{"fab1290f9a4c4f2b4d831c8a57f969f5", "Draker Quest", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=Draker Quest
{"b3143adbbb7d7d189e918e5b29d55a72", "Dungeon Stalker", CT_NORMAL, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 23, 256, 220, 0}, // title=Dungeon Stalker (homebrew)
Expand All @@ -96,6 +98,7 @@ Database_Entry game_list[] = {
{"07dbbfe612a0a28e283c01545e59f25e", "Fight Night", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Fight Night
{"cf76b00244105b8e03cdc37677ec1073", "Food Fight", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 255, 227, 0}, // title=Food Fight
{"e7d89669a7f92ec2cc99d9663a28671c", "Frenzy (w-Berzerk)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, NO_STEALING, USES_WSYNC, HSC_YES, 30, 14, 320, 206, 0}, // title=Frenzy (with Berzerk) (homebrew)
{"26031dea7251fb861cb55f86742c9d6e", "Frenzy (w-Berzerk)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, NO_STEALING, USES_WSYNC, HSC_YES, 30, 14, 320, 206, 0}, // title=Frenzy (with Berzerk) (homebrew) - Newest 2021
{"6053233cb59c0b4ca633623fd76c4576", "Froggie", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 34, 16, 320, 205, 0}, // title=Froggie (homebrew)
{"4b8f22fc4b022a7ea1b4148195b85d4a", "Frogus", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 24, 256, 224, 0}, // title=Frogus
{"fb8d803b328b2e442548f7799cfa9a4a", "Galaga", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 229, 0}, // title=Galaga
Expand Down Expand Up @@ -134,8 +137,9 @@ Database_Entry game_list[] = {
{"74569571a208f8b0b1ccfb22d7c914e1", "One On One", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 20, 256, 224, 0}, // title=One On One
{"60982f430b762343d53e48f70acfa6d0", "Pac-Man 320", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 6, 25, 264, 233, 0}, // title=Pac-Man 320
{"5013b69cb05b21a1194ce48517df7bfc", "Pac-Man Collection", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_B, DIFF_B, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 10, 19, 281, 231, 0}, // title=Pac-Man Collection (homebrew)
{"a59d362e3a391ff1482131aa0818ad3e", "Pac-Man 40th Anniversary", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 9, 18, 278, 221, 0}, // title=Pac-Man Collection 40th Anniversary Edition (homebrew)
{"1330d23ebad9b5ded92ebeacdf305abd", "Pac-Man 40th Anniversary", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 9, 18, 278, 221, 0}, // title=Pac-Man Collection 40th Anniversary Edition (homebrew)
{"a59d362e3a391ff1482131aa0818ad3e", "Pac-Man 40th Anniversary", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 9, 18, 278, 221, 0}, // title=Pac-Man Collection 40th Anniversary Edition (homebrew) - Older
{"1330d23ebad9b5ded92ebeacdf305abd", "Pac-Man 40th Anniversary", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 9, 18, 278, 221, 0}, // title=Pac-Man Collection 40th Anniversary Edition (homebrew) - PMC_XM Newest
{"c80edcd555cd3d81f664e5f02826dc26", "Pac-Man XM-S", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 11, 25, 279, 231, 0}, // title=Pac-Man Collection 40th - Short Mazes (2022)
{"d0bf3b841ad4bbd356e9588874749a13", "Pac-Man Plus 320", CT_NORMAL, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 10, 22, 274, 233, 0}, // title=Pac-Man Plus 320
{"1a5207870dec6fae9111cb747e20d8e3", "Pete Rose Baseball", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Pete Rose Baseball
{"ec206c8db4316eb1ebce9fc960da7d8f", "Pit Fighter", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Pit Fighter
Expand All @@ -154,6 +158,7 @@ Database_Entry game_list[] = {
{"43525a0405184875c2ecfd0196886a34", "Rip-Off", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 233, 0}, // title=Rip-Off
{"66ecaafe1b82ae68ffc96267aaf7a4d7", "Robotron", CT_NORMAL, POKEY_NONE, TWIN,TWIN, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 5, 22, 270, 234, 0}, // title=Robotron
{"b6561537290e6e25e1249394366c3c63", "Robbo", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Robbo
{"fc525819ec2bdc4a30bb2e55524f8d81", "Robot's Rumble", CT_SUPRAM, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 19, 256, 217, 0}, // title=Robot's Rumble (2022)
{"a3a85e507d6f718972b1464ce1aaf8a4", "Scramble", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 13, 320, 205, 0}, // title=Scramble (homebrew)
{"980c35ae9625773a450aa7ef51751c04", "Scrapyard Dog", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Scrapyard Dog
{"b697d9c2d1b9f6cb21041286d1bbfa7f", "Sentinel", CT_SUPROM, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Sentinel
Expand Down
5 changes: 4 additions & 1 deletion arm9/source/emu/Memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,14 @@ ITCM_CODE void memory_Write(word address, byte data)

if(!memory_rom[address])
{
if (address & 0xF800) // Base RAM is at 0x1800 so this will find anything that is normal memory...
if ((address & 0xF800)) // Base RAM is at 0x1800 so this will find anything that is RAM...
{
memory_ram[address] = data;
return;
}

if (address >= 0x460 && address < 0x480) return; // XM/Yamaha is mapped into this area... do not respond to it as we are not XM capable (yet)

switch(address) {
case INPTCTRL:
if(data == 22 && cartridge_IsLoaded( )) {
Expand Down

0 comments on commit 9b52a75

Please sign in to comment.