From e62d0b68e75687382d5630a223c07278d60314d2 Mon Sep 17 00:00:00 2001 From: wavemotion-dave <75039837+wavemotion-dave@users.noreply.github.com> Date: Thu, 3 Feb 2022 21:35:31 -0500 Subject: [PATCH] 3.1b - Numerous database updates to include latest homebrews and screen tweaks. --- A7800DS.nds | Bin 395264 -> 397312 bytes Makefile | 2 +- arm9/source/a7800utils.c | 40 +++++++++++++++------ arm9/source/a7800utils.h | 2 +- arm9/source/emu/Database.c | 70 ++++++++++++++++++++++++++++--------- 5 files changed, 85 insertions(+), 29 deletions(-) diff --git a/A7800DS.nds b/A7800DS.nds index dd1f4c9befea84b0907ec130e988fb512069f2b0..c83431f6efe012f715b30ca4e85b8801cdbdee06 100644 GIT binary patch delta 9274 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 diff --git a/Makefile b/Makefile index 7b6d6f1..3b308eb 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION=3.2a +VERSION=3.2b TARGNAME=A7800DS #--------------------------------------------------------------------------------- diff --git a/arm9/source/a7800utils.c b/arm9/source/a7800utils.c index 989b9f9..b783c8b 100644 --- a/arm9/source/a7800utils.c +++ b/arm9/source/a7800utils.c @@ -43,13 +43,14 @@ int bg3; // BG pointers int bg0s, bg1s, bg2s, bg3s; // sub BG pointers u16 full_speed __attribute__((section(".dtcm")))= 0; -int etatEmu; +short int etatEmu __attribute__((section(".dtcm"))); u16 fpsDisplay=0; #define MAX_DEBUG 5 int debug[MAX_DEBUG]={0}; //#define DEBUG_DUMP //#define CART_INFO +//#define WRITE_TWEAKS #define SOUND_FREQ (31440/2) // Be careful if you change this - this matches the frequency of the POKEY update and if we are TIA-only, we will double it. @@ -102,6 +103,25 @@ static void DumpDebugData(void) #endif } +void dsWriteTweaks(void) +{ +#ifdef WRITE_TWEAKS + FILE *fp; + dsPrintValue(22,0,0, (char*)"CFG"); + fp = fopen("../A7800.txt", "a+"); + if (fp != NULL) + { + fprintf(fp, "%-32s CT=%d PK=%d RE=%d SY=%d ST=%d HS=%d %3d %3d %3d %3d %s\n", (char*)cartridge_digest, cartridge_type, cartridge_pokey, + cartridge_region, cartridge_uses_wsync, cartridge_steals_cycles, cartridge_hsc_enabled, cartridge_xOffset, cartridge_yOffset+9,cartridge_xScale,cartridge_yScale,cartridge_filename); + fflush(fp); + fclose(fp); + } + WAITVBL;WAITVBL;WAITVBL;WAITVBL;WAITVBL; + dsPrintValue(22,0,0, (char*)" "); +#endif +} + + u16 myTiaBufIdx __attribute__((section(".dtcm"))) = 0; u8* snd_ptr __attribute__((section(".dtcm"))) = (u8*)((u32)sound_buffer + 0xA000000); u8* snd_sta __attribute__((section(".dtcm"))) = (u8*)((u32)sound_buffer + 0xA000000); @@ -205,11 +225,6 @@ void FadeToColor(unsigned char ucSens, unsigned short ucBG, unsigned char ucScr, #define tchepres(a) \ keyboard_data[GameConf.DS_Pad[a]] = 1; -u8 jitter[] __attribute__((section(".dtcm"))) = -{ - 0x48, 0x22, - 0x40, 0x44 -}; void vblankIntr() { static u8 xx=0; @@ -232,16 +247,20 @@ void vblankIntr() REG_BG3PD = ydyBG; bRefreshXY = false; + debug[0] = cartridge_xOffset; + debug[1] = cartridge_yOffset; + debug[2] = cartridge_xScale; + debug[3] = cartridge_yScale; } if (xx++ & 1) { - REG_BG2X = cxBG+jitter[0]; - REG_BG2Y = cyBG+jitter[1]; + REG_BG2X = cxBG+0x48; + REG_BG2Y = cyBG+0x22; } else { - REG_BG2X = cxBG+jitter[2]; - REG_BG2Y = cyBG+jitter[3]; + REG_BG2X = cxBG+0x40; + REG_BG2Y = cyBG+0x44; } } @@ -1003,6 +1022,7 @@ void dsMainLoop(void) if (++lcd_swap_counter == 30) { if (keys_pressed & KEY_A) lcdSwap(); + dsWriteTweaks(); } } if (scale_screen_dampen > 5) diff --git a/arm9/source/a7800utils.h b/arm9/source/a7800utils.h index 328c9f5..403046e 100644 --- a/arm9/source/a7800utils.h +++ b/arm9/source/a7800utils.h @@ -7,7 +7,7 @@ #define A7800_PLAYGAME 0x04 #define A7800_QUITSTDS 0x05 -extern int etatEmu; +extern short int etatEmu; typedef enum { EMUARM7_INIT_SND = 0x123C, diff --git a/arm9/source/emu/Database.c b/arm9/source/emu/Database.c index cbf579c..a8f8cc1 100644 --- a/arm9/source/emu/Database.c +++ b/arm9/source/emu/Database.c @@ -51,6 +51,26 @@ typedef struct { } Database_Entry; +// db691469128d9a4217ec7e315930b646 CT=1 PK=0 RE=0 SY=1 ST=1 HS=0 0 25 256 229 Crack'ed (NTSC) (Atari) (1988).a78 +// a94e4560b6ad053a1c24e096f1262ebf CT=2 PK=0 RE=0 SY=1 ST=1 HS=0 5 22 267 231 Crossbow (NTSC) (Joystick) (Atari) (1988).a78 +// 6287727ab36391a62f728bbdee88675c CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 22 257 220 FailSafe (NTSC) (20100227).a78 +// 4b8f22fc4b022a7ea1b4148195b85d4a CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 24 256 224 Frogus (20190804).a78 +// fb8d803b328b2e442548f7799cfa9a4a CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 22 256 229 Galaga (USA).a78 +// e443f7fb5be3283dd44c0f5d80c3a7b3 CT=0 PK=0 RE=0 SY=1 ST=1 HS=0 13 22 280 234 GoSub (20200506).a78 +// fd9e78e201b6baafddfd3e1fbfe6ba31 CT=0 PK=0 RE=0 SY=1 ST=1 HS=0 0 25 256 227 Hat Trick (NTSC) (Atari) (1987).a78 +// 045fd12050b7f2b842d5970f2414e912 CT=3 PK=0 RE=0 SY=1 ST=1 HS=0 3 22 261 234 Jinks (USA).a78 +// 1d47c3802135d864dc1d922ec27aa708 CT=2 PK=0 RE=0 SY=1 ST=1 HS=0 0 22 256 233 Knight Guy On Board - 30 Squares Of Fate (20210116).a78 +// f57d0af323d4e173fb49ed447f0563d7 CT=0 PK=0 RE=0 SY=0 ST=0 HS=0 22 23 276 225 Kung-Fu Master (NTSC) (Absolute) (1989).a78 +// 74569571a208f8b0b1ccfb22d7c914e1 CT=0 PK=0 RE=0 SY=1 ST=1 HS=0 0 20 256 224 One-on-One Basketball (NTSC) (Atari) (1987).a78 +// 86546808dc60961cdb1b20e761c50ab1 CT=3 PK=0 RE=0 SY=1 ST=1 HS=0 0 25 256 234 Plutos (Prototype).a78 +// 96f69b85e0b43bbebbbd59bb8276a372 CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 22 256 223 Sick Pickles (20171202).a78 +// 7ab539bb0e99e1e5a1c89230bde64610 CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 13 256 225 Super Pac-Man (NTSC) (20081010).a78 +// 05fb699db9eef564e2fe45c568746dbc CT=4 PK=0 RE=0 SY=1 ST=1 HS=0 15 22 284 234 Xenophobe (NTSC) (Atari) (1989).a78 +// d7dc17379aa25e5ae3c14b9e780c6f6d CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 24 256 220 Xevious (USA).a78 +// 88bccaca6de1117d03b39c613537c2ab CT=0 PK=0 RE=0 SY=1 ST=1 HS=1 0 25 256 220 Xevious X (NTSC) (Hack) (20130304).a78 +// + + Database_Entry game_list[] = { {"f5150c0fc1948832211e57852abb0c6e", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", CT_NORMAL, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=7800 Utility Cart {"4332c24e4f3bc72e7fe1b77adf66c2b7", "3D Asteroids", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=3D Asteroids @@ -60,54 +80,64 @@ Database_Entry game_list[] = { {"a65f79ad4a0bbdecd59d5f7eb3623fd7", "Asteroids Deluxe (NTSC)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=Asteroids Deluxe {"07342c78619ba6ffcc61c10e907e3b50", "Asteroids", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=Asteroids {"3d38281ed8a8d8c7cd457a18c92c8604", "Astro Blaster", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_B, DIFF_B, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 17, 320, 210, 0}, // title=Astro Blaster - {"a51e5df28a0fe8c52e9d28fb5f8e44a6", "Astro Fighter", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 16, 320, 210, 0}, // title=Astro Fighter - {"7cdfbe37634e7dcd4dc67db7edbcd3ba", "Baby Pac-Man", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 30, 22, 320, 220, 0}, // title=Baby Pac Man + {"a51e5df28a0fe8c52e9d28fb5f8e44a6", "Astro Fighter", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 32, 17, 320, 210, 0}, // title=Astro Fighter + {"7cdfbe37634e7dcd4dc67db7edbcd3ba", "Baby Pac-Man", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 32, 22, 320, 220, 0}, // title=Baby Pac Man {"8fc3a695eaea3984912d98ed4a543376", "Ballblazer", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Ballblazer {"42682415906c21c6af80e4198403ffda", "Barnyard Blaster", CT_SUPCAR, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Barnyard Blaster {"f5f6b69c5eb4b55fc163158d1a6b423e", "Basketbrawl", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Basketbrawl {"78b1061d651ef806becac1dd3fda29a0", "Beef Drop", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, SKIP_WSYNC, HSC_YES, 0, 16, 256, 220, 0}, // title=Beef Drop (Final Atariage) + {"34483432b92f565f4ced82a141119164", "Bentley Bear", CT_SUPLRG, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 3, 22, 256, 220, 0}, // title=Bentley Bear's Crystal Quest {"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, STEAL_CYCLE, 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! {"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 {"93e4387864b014c155d7c17877990d1e", "Choplifter", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Choplifter {"2e8e28f6ad8b9b9267d518d880c73ebb", "Commando", CT_SUPCAR, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 20, 256, 220, 0}, // title=Commando {"db691469128d9a4217ec7e315930b646", "Crack'ed", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Crack'ed + {"2d2fe4da9f1bae102fa8ca2d8830a626", "Crazy Otto", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 17, 256, 232, 0}, // title=Crazy Otto {"a94e4560b6ad053a1c24e096f1262ebf", "Crossbow", CT_SUPLRG, POKEY_NONE, LGN, LGN, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Crossbow {"179b76ff729d4849b8f66a502398acae", "Dark Chambers", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 21, 256, 220, 0}, // title=Dark Chambers - {"95ac811c7d27af0032ba090f28c107bd", "Desert Falcon", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Desert Falcon + {"95ac811c7d27af0032ba090f28c107bd", "Desert Falcon", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 6, 27, 261, 234, 0}, // title=Desert Falcon {"731879ea82fc0ca245e39e036fe293e6", "Dig Dug", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Dig Dug {"5e332fbfc1e0fc74223d2e73271ce650", "Donkey Kong Jr", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Donkey Kong Jr {"19f1ee292a23636bd57d408b62de79c7", "Donkey Kong", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Donkey Kong {"c3107d3e3e17d67e3a11d47a5946a4f3", "DONKEY KONG XM", CT_SUPLRG, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 20, 256, 210, 0}, // title=Donkey Kong XM Demo (purposely set HSC to false - game HSC is buggy) {"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 {"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) - {"7099cc31cbc492d525d218efe88b8685", "EXO", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=E.X.O. - {"faea27017447dd8bae677d91125a8135", "EXO", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=E.X.O. + {"7099cc31cbc492d525d218efe88b8685", "xxxxx", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=E.X.O. (Alpha) + {"faea27017447dd8bae677d91125a8135", "xxxxx", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 230, 0}, // title=E.X.O. (Beta) + {"a44e8b7b7881beb0fe3c71a1a04441c8", "EXO", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 24, 256, 234, 0}, // title=E.X.O. (RC Demo) {"2251a6a0f3aec84cc0aff66fc9fa91e8", "F-18 Hornet", CT_ABSOLU, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=F-18 Hornet {"6287727ab36391a62f728bbdee88675c", "Failsafe", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Failsafe (homebrew) {"d25d5d19188e9f149977c49eb0367cd1", "Fatal Run", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Fatal Run {"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, 22, 256, 220, 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, 15, 320, 205, 0}, // title=Frenzy (with Berzerk) (homebrew) + {"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) {"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) {"fb8d803b328b2e442548f7799cfa9a4a", "Galaga", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Galaga - {"98dbb110105c1445bb4efd79d53c79ae", "Galaxian", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 13, 256, 200, 0}, // title=Galaxian + {"2f4ae1015a345652b36004a8c62a4ac6", "Galaxian", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 14, 13, 282, 200, 0}, // title=Galaxian {"06204dadc975be5e5e37e7cc66f984cf", "Gato", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Gato {"e443f7fb5be3283dd44c0f5d80c3a7b3", "GoSub", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 12, 22, 280, 230, 0}, // title=GoSub + {"1e21bf1d9d7b3c0cebaac576964c9eb2", "Graze Suit Alpha", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 19, 256, 220, 1}, // title=Graze Suit Alpha {"fd9e78e201b6baafddfd3e1fbfe6ba31", "Hat Trick", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Hat Trick {"c3672482ca93f70eafd9134b936c3feb", "Ikari Warriors", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 25, 256, 230, 0}, // title=Ikari Warriors {"baebc9246c087e893dfa489632157180", "Impossible Mission", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Impossible Mission {"1745feadabb24e7cefc375904c73fa4c", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Impossible Mission {"045fd12050b7f2b842d5970f2414e912", "Jinks", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 234, 0}, // title=Jinks {"f18b3b897a25ab3885b43b4bd141b396", "Joust", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 234, 0}, // title=Joust - {"e54edc299e72d22d0ba05d16f3393e8c", "Jr. Pac-Man (NTSC)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Jr Pac-Man + {"e54edc299e72d22d0ba05d16f3393e8c", "Jr. Pac-Man (NTSC)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 4, 22, 268, 234, 0}, // title=Jr Pac-Man {"c3a5a8692a423d43d9d28dd5b7d109d9", "Karateka", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Karateka - {"17b3b764d33eae9b5260f01df7bb9d2f", "Klax", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 28, 256, 234, 0}, // title=Klax + {"6b8600aabd11f834448e910801f4e0bc", "KC Munchkin", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 3, 22, 256, 225, 0}, // title=KC Munchkin + {"17b3b764d33eae9b5260f01df7bb9d2f", "Klax", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 28, 256, 234, 0}, // title=Klax (fixed) + {"5fb805f2b69820a9b196f5fed2a23c99", "Klax", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 28, 256, 234, 0}, // title=Klax {"f57d0af323d4e173fb49ed447f0563d7", "Kung Fu Master", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, NO_STEALING, SKIP_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Kung Fu Master + {"fe657a1b8a34b2c0e1d2171166d40926", "Legend of Silverpeak", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 15, 256, 201, 1}, // title=Legend of Silverpeak {"431ca060201ee1f9eb49d44962874049", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Mario Bros. {"37b5692e33a98115e574185fa8398c22", "Mat Mania Challenge", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Mat Mania Challenge {"f2f5e5841e4dda89a2faf8933dc33ea6", "Mean 18 Ultimate Golf", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Mean 18 Ultimate Golf @@ -115,14 +145,18 @@ Database_Entry game_list[] = { {"c3f6201d6a9388e860328c963a3301cc", "Meteor Shower", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 21, 256, 220, 0}, // title=Meteor Shower {"bc1e905db1008493a9632aa83ab4682b", "Midnight Mutants", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 21, 256, 226, 1}, // title=Midnight Mutants {"017066f522908081ec3ee624f5e4a8aa", "Missing in Action", CT_SUPLRG, POKEY_NONE, JOY, JOY, DIFF_B, DIFF_B, NTSC, NO_STEALING, SKIP_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Missing in Action - {"181a9978d9da7a7e21f770808cc681f2", "Merlain", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 320, 230, 0}, // title=Merlain + {"181a9978d9da7a7e21f770808cc681f2", "Merlain", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 320, 234, 0}, // title=Merlain + {"5fe8ef9e368acd5699e5a453082b7636", "Morf", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 25, 256, 224, 0}, // title=Morf {"9ff38ea62004201d870caa8bd9463525", "Moon Cresta (NTSC)", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 13, 320, 210, 0}, // title=Moon Cresta {"3bc8f554cf86f8132a623cc2201a564b", "Motor Psycho", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Motor Psycho - {"fc0ea52a9fac557251b65ee680d951e5", "Ms. Pac-Man", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Ms. Pac-Man - {"220121f771fc4b98cef97dc040e8d378", "Ninja Golf", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 10, 22, 270, 220, 1}, // title=Ninja Golf + {"fc0ea52a9fac557251b65ee680d951e5", "Ms. Pac-Man", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 25, 256, 224, 0}, // title=Ms. Pac-Man + {"2a17dc5a61be342dd00af719cc335852", "Ms Pac-Man 320", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 5, 24, 265, 230, 0}, // title=Ms Pac-Man 320 + {"220121f771fc4b98cef97dc040e8d378", "Ninja Golf", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 10, 28, 270, 234, 1}, // title=Ninja Golf {"74569571a208f8b0b1ccfb22d7c914e1", "One On One", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 12, 256, 220, 0}, // title=One On One - {"5013b69cb05b21a1194ce48517df7bfc", "Pac-Man Collection", CT_NORMAL, POKEY_AT_4000, JOY, JOY, DIFF_B, DIFF_B, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 19, 256, 216, 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, 25, 278, 220, 0}, // title=Pac-Man Collection 40th Anniversary Edition (homebrew) + {"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) + {"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 {"33aea1e2b6634a1dec8c7006d9afda22", "Planet Smashers", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 226, 0}, // title=Planet Smashers @@ -137,6 +171,7 @@ Database_Entry game_list[] = { {"ac03806cef2558fc795a7d5d8dba7bc0", "Rampage", CT_ACTVIS, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Rampage {"bfad016d6e77eaccec74c0340aded8b9", "Realsports Baseball", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Realsports Baseball {"8f7eb10ad0bd75474abf0c6c36c08486", "Rescue On Fractalus", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Rescue On Fractalus + {"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 {"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) @@ -144,7 +179,7 @@ Database_Entry game_list[] = { {"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 {"9bd70c06d3386f76f8162881699a777a", "Serpentine", CT_SUPRAM, POKEY_AT_450, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Serpentine (homebrew) {"771cb4609347657f63e6f0eb26036e35", "Space Duel", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Space Duel (homebrew) - {"6adf79558a3d7f5beca1bb8d34337417", "Space Invaders", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 16, 320, 205, 0}, // title=Space Invaders (Homebrew) + {"6adf79558a3d7f5beca1bb8d34337417", "Space Invaders", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 30, 16, 320, 210, 0}, // title=Space Invaders (Homebrew) {"19844117863cd38d4e1e4cbc867ae599", "Spire of the Ancients", CT_SUPLRG, POKEY_NONE, SOTA,SOTA, DIFF_A, DIFF_A, NTSC, NO_STEALING, USES_WSYNC, HSC_YES, 31, 25, 320, 230, 0}, // title=Spire of the Ancients {"19844117863cd38d4e1e4cbc867ae599", "SotA", CT_SUPLRG, POKEY_NONE, SOTA,SOTA, DIFF_A, DIFF_A, NTSC, NO_STEALING, USES_WSYNC, HSC_YES, 31, 25, 320, 230, 0}, // title=Spire of the Ancients {"cbb0746192540a13b4c7775c7ce2021f", "Summer Games", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Summer Games @@ -157,9 +192,10 @@ Database_Entry game_list[] = { {"c3903ab01a51222a52197dbfe6538ecf", "Tomcat F-14 Simulator", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Tomcat F-14 Simulator {"208ef955fa90a29815eb097bce89bace", "Touchdown Football", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Touchdown Football {"8d64763db3100aadc552db5e6868506a", "Tower Toppler", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 16, 256, 230, 0}, // title=Tower Toppler - {"79df20ee86a989e669158bcb9d113e8a", "UniWarS", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 13, 256, 200, 0}, // title=UniWarS + {"79df20ee86a989e669158bcb9d113e8a", "UniWarS", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 9, 13, 282, 200, 0}, // title=UniWarS {"acf63758ecf3f3dd03e9d654ae6b69b7", "Water Ski", CT_SUPCAR, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Water Ski {"3799d72f78dda2ee87b0ef8bf7b91186", "Winter Games", CT_SUPRAM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 0, 22, 256, 220, 0}, // title=Winter Games + {"846751861993b907c512cc9c10c67035", "Wizards Dungeon", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 26, 256, 224, 0}, // title=Wizards Dungeon {"05fb699db9eef564e2fe45c568746dbc", "Xenophobe", CT_SUPROM, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_NO, 15, 22, 280, 234, 0}, // title=Xenophobe {"d7dc17379aa25e5ae3c14b9e780c6f6d", "Xevious", CT_NORMAL, POKEY_NONE, JOY, JOY, DIFF_A, DIFF_A, NTSC, STEAL_CYCLE, USES_WSYNC, HSC_YES, 0, 22, 256, 220, 0}, // title=Xevious {"","",CT_NORMAL,0,0,0,0,0,0,0,0,0,0},