Merge branch 'master' into waterbox2

Conflicts:
	BizHawk.Client.EmuHawk/MainForm.Events.cs
	BizHawk.Client.EmuHawk/MainForm.cs
This commit is contained in:
adelikat 2017-06-04 18:18:11 -05:00
commit 4ae0b2cd22
21 changed files with 948 additions and 877 deletions

View File

@ -1,349 +1,27 @@
;b - bad dump
;v - bad dump (??)
;t - translated rom
;o - overdump (bad)
;i - bios
;d - homebrew
;h - hack
;u - unknown
;Hash Status Name System ID Notes MetaData Configurations CoreForce[neshawk|quicknes]
#include gamedb_sega_sms.txt
#include gamedb_sega_sg1000.txt
#include gamedb_sega_gg.txt
#include gamedb_pce_hucards.txt
#include gamedb_pce_cd.txt
#include gamedb_sega_md.txt
#include gamedb_a2600.txt #include gamedb_a2600.txt
#include gamedb_coleco.txt
#include gamedb_gb.txt
#include gamedb_gbc.txt
#include gamedb_snes.txt
#include gamedb_n64.txt
#include gamedb_gba.txt
#include gamedb_lynx.txt
#include gamedb_appleII.txt #include gamedb_appleII.txt
#include gamedb_psx.txt #include gamedb_coleco.txt
#include gamedb_e_cards.txt #include gamedb_e_cards.txt
#include gamedb_intv.txt
#include gamedb_gb.txt
#include gamedb_gba.txt
#include gamedb_gbc.txt
#include gamedb_lynx.txt
#include gamedb_msx1.txt #include gamedb_msx1.txt
#include gamedb_msx2.txt #include gamedb_msx2.txt
#include gamedb_vs.txt #include gamedb_n64.txt
#include gamedb_intv.txt #include gamedb_nes.txt
#include gamedb_pce_cd.txt
; ************ NES / Famicom ************ #include gamedb_pce_hucards.txt
#include gamedb_psx.txt
;games which might be good according to goodNES, but which are almost positively not according to bootgod, who has dumps with different hashes #include gamedb_sega_sg1000.txt
;these we tend to mark as Unknown, because maybe these are variants of the cart which bootgod didnt happen to dump, or maybe bootgod's is wrong (?) #include gamedb_sega_gg.txt
sha1:E80FF0B707B0D675FDBEF474E3FDB1A83E2B7C44 U Mississippi Satsujin Jiken (J) NES board=JALECO-JF-11;PRG=128;CHR=32;PAD_H=1 #include gamedb_sega_sms.txt
sha1:8A5FD1061ADACDEABF422A2D2E555FF70749AE7C U Mississippi Satsujin Jiken (Alt) (J) NES board=MAPPER066;PRG=128;CHR=32;PAD_H=1 #include gamedb_sega_md.txt
#include gamedb_snes.txt
;possibly good roms for games which arent in bootgod's db yet, most likely due to obscurity or incompleteness at the present. #include gamedb_user.txt
;when they appear in bootgod's db then we can re-evaluate this category. #include gamedb_ws.txt
sha1:91CECCFCAC90E417E9AEE80E8F7B560A20EB33CC Ai Sensei No Oshiete Watashi No Hoshi (J) NES board=IREM-G101;PRG=256;CHR=128;WRAM=8 #include gamedb_wsc.txt
sha1:1E49BDA9CEF18F6F5C2DA34910487713D364AA68 G Pipe 5 (Sachen) NES board=MAPPER160;PAD_H=1;PAD_V=0
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;this is every game from goodNES which is clearly labeled as bad.
;well, it isnt very game yet. but we should make it every game, if we can! it would be a lot of games though
sha1:984ADAEB85403EEF1BA85CDCF310FAAECEB409A0 B Adventures of Captain Comic, The (Bad Dump) (U) NES board=COLORDREAMS-74*377;PRG=64;CHR=64;WRAM=0;VRAM=0
sha1:869111A86FD46872AD8B1BA0ED31B858FA15681F B Adventures of Lolo (Bad Dump) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0
sha1:41BD74F739E008D476989C8296BB789EE57658F0 B Adventures of Lolo (Bad Dump 2) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0
sha1:10AF069B2AC5DB2FB10768349F4068CB3CDA0EC7 B Airwolf (Bad Dump 1) (U) NES board=NES-SH1ROM;PRG=32;CHR=128
sha1:DAD9D1D66018DFB3C30F48741EF188FEFA2B2F68 B Airwolf (Bad Dump 2) (U) NES board=NES-SH1ROM;PRG=32;CHR=128
;since the actually good Banana rom is "Banana (J) [hM03][p1][a1]" then we want to be aggressive in marking all these others as bad
sha1:84EA60C1FA43AF37B2A20C1FEFCB2D5182EAF3E8 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:F9423CCC1AA711CB06B8F5C66E9304636F5E9B10 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:A8037AED044417DEE8D822A21851058ED37AF6A8 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:8F42BC9919B324A63636BE2FBAD0101D8C720517 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:4EF2C4DAD0897F326E2991D351903A98483BC3C0 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=16
sha1:15E04F1BF83D8FE34ECD2B29894C9CF034E6D257 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:C6C6228B16AECB35B0C52467071E04DB3B34C77F B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=8
sha1:2801CDE6D10D67889E01161476D80CF5CCC3263E O Ball Hack v.2 2001-03-21 [o1] NES board=HVC-NROM-256;PRG=32;CHR=8
sha1:A6E7DB47B9C39E2A5B0A77F34B9AA3BEFDB70D1C O Dr. Mario (JU) (PRG0) NES board=MAPPER001;CHR=32
sha1:2BDBD70C1E3EEF115F640B91B22A97BFCDF18B2D B Castlevania III Dracula's Curse (U) (Bad Dump) NES board=MAPPER005;CHR=128
sha1:0D0957F7D49E38C298EB5194472B87EFC44BBD46 B Dragon Quest II Akuryou no Kamigami (J) (Bad Dump) NES board=MAPPER002;CHR=0
sha1:736C0AEDA14A93A2715BDA1DA6F6C92E6690A5DE B Dragon Quest IV Michibikareshi Monotachi (J) (PRG1) (Bad Dump) NES board=MAPPER001;PRG=512
sha1:739698BD6050572F24E739A20978E4760CF33E59 B Dragon Quest IV Michibikareshi Monotachi (J) (PRG1) (Bad Dump) NES board=MAPPER001;PRG=512
sha1:3FB61976847BCA4187DB61F484BF21346B42C95A B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:697ECCCDD178809207726A05A5593D874CA39CA9 B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:E33D3A487678F35E05C0E5DA7E4C30F8FEFA600D B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:3AE0469A8208023DAA32A7BB9925F3C5666FCB2D B Famicom Meijin Sen (J) [a1] NES board=HVC-SKROM;WRAM=8
sha1:8CC5894A1E637FA63A63992E188B3797D9300337 B Mighty Bomb Jack (U) (Bad Dump) NES board=NES-CNROM;PRG=32;CHR=32;WRAM=0;PAD_V=1
sha1:CAB30771F9CBD89B2FCD06F3B2F5C8F2156BFD8A B Mighty Bomb Jack (U) (Bad Dump) NES board=NES-CNROM;PRG=32;CHR=32;WRAM=0;PAD_V=1
sha1:A4CDD4BC37D44CFF1379942CC31DCD89E340B10C B Money Game, The (J) [hFFE][b1] NES board=MAPPER006;PRG=256
sha1:8AB1B122FE96865B62290FC838FA2C248D4989FB B 3D Bloack (Unl) [f1] (Bad Dump) NES board=MAPPER000;PAD_H=1
sha1:457BA1626EAA58A2370ECD6AB0B83232C098C064 B High Speed (E) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-PAL-B
sha1:421EBBFA08FFD5A7A0F4DDEE7868B36DB7FAEE39 B High Speed (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:9979C1333B8A7685CC3CA2BEAFD634B2A88D3AF8 B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:DAB664B59B094FFAABCF24D0388760C09F87495C B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:36405B87E66E18DC432690A5959D4529C14B1AEE B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:9D2391C1F4855E7ECCE0DB5C8B258A43B4E9F84F G Pin Bot (PC10) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:B3537088ED6F8379F2C30CA45061BFCCBA1007B9 B Pin Bot (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:A1E8E80E2F72E606CD7802D809B2FF256578EDE6 B Pin Bot (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:C969BD9F8E4353EE6463221FFDD2BFE4A844134A B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:569907CD308C28CDB178AA525F976656BF0DD886 B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:9C851967BD74E063ED8F44935928911D572527AD B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:2FA61D1FDFCFEC20099EB85C3F45827CA87160D9 B Yong Zhe Dou E Long Dragon Quest V (Ch) (Over Drump) NES board=MAPPER245;VRAM=8;CHR=0;PAD_H=1;BATT=true
sha1:79978AA3AD3FE63D41357E62F1E49E4761B3738A B Magical Taruruuto-kun 2 Mahou Daibouken (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:3825786DF3AD8E2C2F0442E42088AC0E494BDA2D B Magical Taruruuto-kun 2 Mahou Daibouken (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:02D4E73DACD3E74CF927C77DF1DB1B7453312CC9 T Captain Tsubasa Vol. II - Super Striker (Ch) NES board=MAPPER195;VRAM=4
sha1:DBD7DBAF79D2A77A09D9D4CF685CBD93281ED468 B Chaos World (Ch) NES board=MAPPER195_CW;VRAM=4;BATT=false;PAD_H=1
sha1:944F98A6885CA5160669BF81B9DE710CB16E312D G Chaos World (Ch) NES board=MAPPER195_CW;VRAM=4;BATT=false;PAD_H=1
sha1:EA6093FF3B4C7425B792223742DF5C76A657EF08 B Columbus - Ougon no Yoake (Ch) NES board=MAPPER195;VRAM=2;
sha1:B367506A7249865DEDB59AFF9B4CE593B3913F0C G Columbus - Ougon no Yoake (Ch) NES board=MAPPER195;VRAM=2;
sha1:78EC827CEE61E009F7716ADE03361369FFCE9D12 G Luo Ke Ren X (Sugoro Quest - Dice no Senshitachi) (Ch) NES board=MAPPER195;VRAM=4
sha1:568BF236FB3085B8BD522FBD2C18C7831E3A2DD1 G Q Boy (Sachen) NES board=SACHEN-8259A;VRAM=8
sha1:2FA9EF6B8E5C7E1D215F4FF69C6275BDE00DDE76 O Sugoro Quest - Dice no Senshitachi (Ch) [o1] NES board=MAPPER191
sha1:0C7CA363EA26632E1A61C7F40E0FE8E8538ED76A G Wei Luo Chuan Qi (Ch) NES board=MAPPER192
sha1:F459A9AD6F841169E0210436CEB06B1395169EAB G Young Chivalry (Ch) NES board=MAPPER192
sha1:8711FDC0CE28574C043816721CA32E4A1C722BE4 B Young Chivalry (Ch) NES board=MAPPER192
sha1:E7803CAC6898C7243F9331E6360B5157BAE673A5 B Young Chivalry (Ch) NES board=MAPPER192
sha1:16EF1034DB88AD96DDC19C3A84B9E0FDEE466CD4 B Young Chivalry (Ch) NES board=MAPPER192
sha1:BE8373A0694EB021EBF73D75F8AC63BD8162009A B Young Chivalry (Ch) NES board=MAPPER192
sha1:4692A622AF6A3D79514BF3E5FB4E9FBE6C6080FC G 150-in-1 [a1] NES board=MAPPER235
sha1:83264E3F8807998D09E9FBA19B13BBEA7C888D88 O Bakushou!! Jinsei Gekijou 3 (J) [o1] NES board=TAITO-TC0190FMC+PAL16R4;WRAM=0
sha1:E79FC613112CC5AB0FC8B1150E182670FB042F4A G Contra Fighter (Unl) NES board=MAPPER238
sha1:2C512DE4079AF45D7B9218E40BB68E308ABE288C B Magic Johnson's Fast Break (U) NES board=MAPPER001;PRG=64;CHR=128
sha1:D2BE67170DDED1E1108EED2D4D8CA9D9CEE9F9E2 G Super Mario Bros 2 (Lost Levels) (Unl) NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:77D5D7A162B61DEFC6B66B6A39B8D51E124AC534 B Tagin' Dragon (Bunch) [b] NES board=COLORDREAMS-74*377;CHR=16;PRG=32;WRAM=0
sha1:2028940CF7C757A3A7931A741D5EC79C3554D38C O Wally Bear and the No Gang (AVE) [o] NES board=AVE-NINA-07;WRAM=0
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;these roms are in goodNES but theyre junk. hacks, mostly. ideally we would put ever game from goodNES that was labeled as a hack in a list here.
sha1:111D38E2FB41D0B43753E18757D427A91B0DBCB9 H Dragon Ball Z II Gekishin Freeza!! (J) NES board=BANDAI-LZ93D50+24C02;PRG=256;CHR=256;WRAM=0
sha1:A907E600CEDA175ECD115B406B28155397A4C1FA H Dragon Ball Z Gaiden Saiya Jin Zetsumetsu Keikaku (CH) NES board=BANDAI-FCG-1;PRG=512;CHR=256;WRAM=0
sha1:A13EAF0132905FBE3D0456BB075028A30C084D0E H Dragon Ball Dai Maou Fukkatsu (J) [hFFE] NES board=BANDAI-FCG-1;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:8885F4F00C0B73C156179BCEABA5381487DBEAAD H Spy vs Spy (J) NES board=HVC-CNROM-256K-01;PRG=32;CHR=8;WRAM=8
sha1:8C676CC9BEF5B93C5A7630D12B8A5B2FEBCE3438 H Rad Racket Deluxe Tennis II NES board=NINA-06;PRG=32;CHR=32
sha1:A1D674D1C7C633A317CFD516EFB9A0350CD0E45E H Arkanoid II (J) NES board=TAITO-74*161/161/32;PRG=128;CHR=128;WRAM=8
sha1:4D6117577CE301BB987C5C32FEEF7B132A21B046 H Afro Man (Mega Man 3 Hack) (UNL) NES board=TXROM-HOMEBREW;PRG=256;CHR=128;WRAM=8
sha1:7BD102770FE7766BF8430ACDB3C17EE51E30478C H Mike Tyson's Punch-Out!! (Hacked) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0
sha1:536D623BA02A622BDE8E2D7D514AE9785B5E0357 H Punch Out!! Kirby (Hack) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0
sha1:F2A8BC888B888FA65DFB303126B130422E34942E G Kunio 8-in-1 [p1] NES board=MAPPER045
sha1:27AA5F60474600FEE5C1623D4A0985421680C9FE H Mario + Toad (Nuts & Milk Hack) NES board=MAPPER000
sha1:B7DD142AF1FBCC81F3FE88C9278BD6C61B615D09 O Death Race (AGCI) (Overdump) NES board=MAPPER144
sha1:0FAECB09767528CC2C9CD4FE4EDBD0C6ECEFB999 G Secret Scout in the Temple of Demise (Color Dreams) (Prototype) NES board=MAPPER011_HACKY
sha1:87C929090C3B04739BAAED90B9A8F40B29327FC2 G Free Fall (U) (Prototype) NES board=MAPPER011_HACKY
sha1:BFE1A8EFE7539B20E09FFD472963F271AC9F2AEC G Mortal Kombat 2 (Unl) NES board=MAPPER090
sha1:123105A996B3F325E55B7080DDD83D4CF043E543 G 168-in-1 NES board=MAPPER015
sha1:B094D9D20A193BF28BD57A1154EADA84F9F6C9CC G Street Fighter II - The World Warrior (Unl) NES board=MAPPER189
sha1:C0CF1CDFEEA5F3529A3126B366DF8E331C804CC7 G Summer Carnival 92 - Recca NES board=MAPPER004
sha1:E9CFA35A037CC218F01BFB4A1EB5D1D332EA2AA9 G Family BASIC (J) NES board=HVC-FAMILYBASIC;WRAM=2
;;;;;;;;;;;;;;;;;;;;;-
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;heres another idea. let's list rom sets from goodNES, good and bad variants together
sha1:98B71119294DA59D1B22723D2D2955D80EADABF4 World Hero (Unl) [!] NES board=MAPPER027
sha1:17AC56723F99A646BD44F8C999B23B8A972A3EF2 B World Hero (Unl) [b1] NES board=MAPPER027
sha1:5227195D5DB2030758BF67704150E8C5FAF056B1 B World Hero (Unl) [b2] NES board=MAPPER027
sha1:AD350F001DB2E3C640B2BD9107B86A8F29B68AC0 G Commandos (Ch) NES board=MAPPER163;
sha1:5A91F54A6FF44762D98FC8D8974909D298EB52A8 G Somari (NT-616) (Unl) NES board=MAPPER116;
sha1:5F0943DC8145542ABC70BF20E4754B3C08653399 G Meikyuu Jiin Dababa (FDS Conversion) (Unl) NES board=MAPPER108;WRAM=0
sha1:95E86C77BB25DD23152D34FD0BB562A09535BE43 G Pyramid (AVE) (PRG1) NES board=MAPPER000
sha1:5759A9D658D253C8A6AAA38969C443D66E0F3349 G Dragon Quest III (PRG0) NES board=HVC-SNROM-03
sha1:9DF34897D002E8D0E4D53B76154F8CD46927CDF9 G Dragon Quest III (PRG1) NES board=HVC-SNROM-03
sha1:B6D1C372A38D196112AA98905C709AD844BD6627 G Super 35-in-1 (y-in-1 VT5201) NES board=MAPPER060
sha1:0941ABB51EF88587303DBF018770758ECDDD5C20 G Jovial Race (Sachen) NES board=MAPPER133
sha1:D20724A2E2933BEE8E193596688CF86747E0250B B Dragon Ball Z Kyoushuu! Saiya Jin (J) (Bad Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:9F17353EF85590484BBC693517292A15DD30845D B Dragon Ball Z Kyoushuu! Saiya Jin (J) (Bad Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D1E9A66CC7424725AD72B8A04E37B9E72EE2BFB6 O Dragon Ball Z Kyoushuu! Saiya Jin (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:123AA69FE2334A027E48BA658C906BFA4996FA32 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng0.47_Eigo ni Yakusu Productions] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:6DCB35518C0AC42943098A5B417B79C10273D75A T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng1.01_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:726C2C19F7B559AD5220872004B580D8C9574F5A T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng1.1] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D51398EFF4F3F47AFA0527D98882234E10AEDFF4 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Kor20060719_88ktt] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:97DECB4E7C8DE1006F57732D8E83437A9186E500 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Por45%_Tradu-Roms] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:80E314CF4A2FCD5A184D4D168428165C1F844729 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Por100%_RaphFS] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:1D6381D2AA0DF4A5B50E9E2DB7B45785BBB1E48F T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Spa_PaladinKnights] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:15E43BE5F7D328BF3041B52CE38BFC4FF23A1DF1 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D42BA5AEC6E41804FF98D6DFA34B53510A1174FA T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng0.50_TransBRC] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:B1228C5716FB5EE2E0421634A464C927B33493B7 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng0.99_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:8E910216502E0BF9BFBA3E38EAA34FFC2D7EE1AD T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng1.00_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:18BE110CBEA2D665A3FF704BDD4153AE5E5ACE5F T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Kor_88ktt] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:9F601A88A9DFA8EDEC23F67DA60254BE4CBAE64B T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Spa] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:FC7A8824CFDD37F85868C8D8624D8B517A7C3C02 G God Slayer - Haruka Tenkuu no Sonata (Ch) NES board=MAPPER195;WRAM=16;VRAM=4;BATT=true
sha1:081D107B5AEFFD4F59108C76FA3942506FA36B1F G Captain Tsubasa Vol. II - Super Striker (Ch) NES board=MAPPER195;VRAM=4
sha1:F99E8B7C7A2174BF0B2330F5457AEE478A938C93 G Captain Tsubasa Vol. II - Super Striker (Ch) [a1] NES board=MAPPER195;VRAM=4
sha1:9958BED493E8C5727F96937BF254AC33FA3BCF81 G Captain Tsubasa Vol. II - Super Striker (Ch) [a2] NES board=MAPPER195;VRAM=4
sha1:B4AA3F10908DC3D6B8152F5DEB1B8543B8B46BF6 G Captain Tsubasa Vol. II - Super Striker (Ch) [a3] NES board=MAPPER195;VRAM=4
sha1:60FC5FA5B5ACCAF3AEFEBA73FC8BFFD3C4DAE558 G Pegasus 5-in-1 (Golden Five) NES board=MAPPER104
sha1:BAD382331C30B22A908DA4BFF2759C25113CC26A O Pegasus 5-in-1 (Golden Five) NES board=MAPPER104
sha1:6282051DA49C286863463AF105F851AACF896563 G San Guo Zhi 2 (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:71234F9DCA4C31B4E9F0719425963878F3F045C9 G Dragon Ball Z II - Gekishin Freeza!! (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:A907E600CEDA175ECD115B406B28155397A4C1FA G Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:D565A9C2B117447C310E4F59E4AFC30DF299EA4F G Street Fighter IV (Unl) NES board=MAPPER208
sha1:B9F444FF60F60C177EEEC8671BEC3731B0F6FE49 G Tang Mu Li Xian Ji (Ch) NES board=MAPPER223;WRAM=16
sha1:EBD2B4A4067FD4A8F0D0ABD34C8FF1AF520D1EED G Super Blaster VII Turbo 28 (Unl) NES board=MAPPER083;prg=512;chr=256;wram=0;
sha1:40409FEC8249EFDB772E6FFB2DCD41860C6CCA23 G Pegasus 4-in-1 (Unl) NES board=MAPPER232
sha1:7EF667D9BF107B6512565177B9C62081077558F5 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi] NES board=MAPPER198
sha1:92CC033C1255F119B3A566EDCA10140C014FA479 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi][a1] NES board=MAPPER198
sha1:EEF617A022B8E45E0BDE088FED654C89AD4FAABF T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi][a2] NES board=MAPPER198
sha1:3D49A357362160B16F03CC4BE7D8EAFB7108708D T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi(Trad)] NES board=MAPPER198
sha1:7FB334A7375E17EA157415193DEE4FACC4EC2B34 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi(Simp)] NES board=MAPPER198
sha1:D8684D302F17843031151DE38D609646CAE4753C O Don Doko Don 2 (J) [o1] NES board=MAPPER048
sha1:12DDD9EDB8894C200C9D89B9EE5673F1202ABA19 Falsion (FDS Conversion, Whirlwind Manu) (Unl) NES board=MAPPER108;WRAM=0
sha1:D6E9F3722CFA26CBC582649F197D780809F575CA O Family Circuit '91 (J) [o1] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:387E7B477F5A61A165A41CD2BFE8A467B3816323 O Family Circuit '91 (J) [o2] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:68ADA89BC7539679871AD14C5C1FFADF04D71280 O Family Circuit '91 (J) [o3] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:8A5FD1061ADACDEABF422A2D2E555FF70749AE7C B Mississippi Satsujin Jiken (J) [h2] NES board=MAPPER066
sha1:C1F7AD0A347078B9213B2748D4ADFF33305A6647 O Mississippi Satsujin Jiken (J) [h2][o1] NES board=MAPPER066
sha1:4BBD4C55C37F531031177DE51F007B10418AD760 O Pyramid (AVE) (PRG1) [o1] NES board=MAPPER000
sha1:BAF860940369C54B3FF547DA7E759515015B1131 O Pyramid (AVE) (PRG1) [o2] NES board=MAPPER000
sha1:2B34E0F405629055E4FF2B2B1C0EBE015D866344 H Rabbi Harrel Groberklotz (Gumshoe Hack) NES board=MAPPER066;WRAM=0
sha1:DA3644C99D462833E4EEF826D8700AF278609C10 G Super 2-in-1 (Soccer Game & Crazy Dance) (Unl NES board=MAPPER178
sha1:CE11161FE2B41008F55FC9D29E093C347E78EBC4 T Super Mario Bros 2 (Lost Levels) (Unl) [T+Rus_Cool-Spot] NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:43E3ED6480E7BF32FFAF1AEBC7F534E0A9B775E6 T Super Mario Bros 2 (Lost Levels) (Unl) [T+Rus_Cool-Spot][a1] NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:F32E366828DCA94A612DD39613858DD8E26FA2DC T Thunder & Lightning (U) [t1] NES board=MAPPER066;WRAM=0
sha1:8554112E83B5978F5D4EC6E4551F390D5F698E00 B U-Force Power Games (U) (Prototype2) (Defaced by NA) [b1] NES board=NES-GNROM;WRAM=0
sha1:A6A0A3DC8438558FA5DA3AF8D3349AA8CF080404 Xi You Ji Hou Zhuan (Ch) NES board=MAPPER162
sha1:BC1734BEE472D34F489A6F5F2530A019F28055B7 B 800-in-1 [p1][b1] NES board=MAPPER236
sha1:BC1734BEE472D34F489A6F5F2530A019F28055B7 G 800-in-1 [p1][U] NES board=MAPPER236;VRAM=8
sha1:BD167D1BCC9A008D04136EB91396EBEBCAC976E2 B R.B.I. Baseball (Tengen) [b] NES board=TENGEN-800002;WRAM=0;PAD_H=1;PAD_V=0
sha1:DEE958845DC528BED899557FB2A8A3B61F1BA7D1 Bao Xiao San Guo (Ch) [a4] NES board=WAIXINGMAPPER176
sha1:2EADA3C0D800A40C1CE5DB96A31A43196ED7A97B Kou Dai Jing Ling - Fei Cui (Ch) [a2] NES board=WAIXINGMAPPER176
sha1:237C2C026A10B3CEBFF96516FC67E4F446676D47 Meng Huan Zhi Xing IV (ES-1006) (Ch) NES board=WAIXINGMAPPER176
sha1:2FA7C0E60634C12EF54D857BF7AF45D4971066FE Po Fu Chen Zhou (ES-1092) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:A8010B1EE3C5362F606A47604CC49E5D7EAC9E46 B Pocket Monsters Red (Ch) (Decrypted) [b1] NES board=WAIXINGMAPPER176
sha1:A50411EDCC088D55B35A62ABD62D4FF1A0B4ED22 Shu Qi Yu - Shu Xue Xiao Zhuan Yuan (Ch) NES board=WAIXINGMAPPER176
sha1:5BDE83532F9E3B885C4D2C130F8981DD04E5A159 Shu Qi Yu - Zhi Li Xiao Zhuan Yuan (Ch) NES board=WAIXINGMAPPER176
sha1:91E51788E980A8AD5A8A829E270504C9571B72CF Shui Hu Shen Shou (ES-1087) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:DB92A34E6941D99B796FBE6C6C26F7D09C2BC2EE Xi Chu Ba Wang (ES-1066) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:7235F3F8F0CA37B7C1EE6923A6DA272C08E0C817 Xiong Ba Tian Xia (Ch) NES board=WAIXINGMAPPER176
sha1:71511ECB1E5D99F38A04EC9291B1ABD4B512C42D P Bubble Bobble (FDS Conversion, Kaiser Hacked) (Unl) [p1] NES board=MAPPER108;WRAM=0;PAD_H=0;PAD_V=1
sha1:8F6CF72F9A829177A67DAAD4A083CADA3ED8B587 P Doraemon (J) (PRG0) [p3] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:E1935AD60CAFAEEC8A8301A607B373754D770E2E T Doraemon (J) (PRG0) [T+Eng] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:06A243B7FFE2CA5F96C4D324742BD6F349D7589E T Doraemon (J) (PRG0) [t2] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:BD43811A68799DBC45A53A006C35167D19C0919C T Doraemon (J) (PRG0) [t3] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:CB83577AAB5465EC7AD0AEF859A03444BA509386 T Doraemon (J) (PRG1) [T+Rus_Chief-Net] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:C78A7629779AF2EA2D9870524E6A79C0CD2E0213 T Jajamaru no Daibouken (J) [T+Chi_nineswords] NES board=MAPPER066;WRAM=0;PAD_V=0;PAD_H=1
sha1:A78D32B5FD43DCABA07A9152BF12EC9BFF2D37FD T Jajamaru no Daibouken (J) [hM66][T+Eng1.00_Aishsha] NES board=MAPPER066;WRAM=0;PAD_V=0;PAD_H=1
sha1:2D8F4656698937A7616A61D82B47232D939E68EA P AV Mahjongg (Hacker) NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E365A1F87EDFE8A68F23D8521CBDBE56EC3D76A3 T AV Mahjongg (Hacker) [T+Chi] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:D540F1050055C74B68CA02F3BA215E23ED859560 B AV Mahjongg (Hacker) [b1][T+Chi] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E8BDD327FA96576F501914BDF455C477EC2A20B4 B AV Mahjongg (Hacker) [b1] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E816367A8CAC2AC470CEEBA8C8DC00CEC8C7009E T AV Mahjongg (Hacker) [T+Chi][a1] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:315ACE4AD8AC09B7ABA2815F93EEB8AD97BA1D38 H Fish Fall (Free Fall Hack) NES board=MAPPER011_HACKY
sha1:F59E68705F6A6346E18A071884A21A6289754EB7 G Free Fall (U) (Prototype) (Earlier) NES board=MAPPER011_HACKY
sha1:4FB14A3DBCE888BB1F95570BE45317ED1513FE89 B Free Fall (U) (Prototype) [b1] NES board=MAPPER011_HACKY
sha1:88A3624F48A2780B2C2A9D742B2185C3B31FB3D7 H Handy (Free Fall Hack) NES board=MAPPER011_HACKY
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;obscure and unlicensed roms which are not likely to be in bootgod's DB anytime soon but which are nonetheless "good" as far as things go
;people like these games (especially vast quantities of chinese oddities) so its important to add them here as good
sha1:D09EF8127C64CBE817B45DF33C4D43E7B441E381 Final Fantasy V (Unl) NES board=MAPPER164;PRG=512;CHR=0;WRAM=8;PRAM=8;PAD_V=1
sha1:92D9695FEB774F60965A8303CFE3E6AAEE7B7B62 Magic Dragon (Unl) NES board=MAPPER107;PRG=128;CHR=64;WRAM=8;PAD_H=1
sha1:6DF9AECF5787C0833B0F05A9A83D0E58A6153977 Rumblestation 15-in-1 (Unl) NES board=MAPPER046;PRG=1024;CHR=1024;WRAM=0
sha1:E4BFD5AB3C3649DBD36B9A7280CF431641BCBCEC Peek-A-Boo Poker (Unl) NES board=NES-CNROM;PRG=32;CHR=24;WRAM=0
sha1:39294394A0631708F58397371CE14075AE1FB7E6 Peek-A-Boo Poker (Panesian) NES board=NES-CNROM;PRG=32;CHR=64;WRAM=0
sha1:C87E7E6A68DD9C7E24652CD2C7D390A14E8ADF04 Lagrange Point NES board=KONAMI-VRC-7;PRG=512;CHR=0;WRAM=8;PRAM=8;PCB=352402;BATT=true
sha1:2E0889131DA5BA9505A15B94887113F4360D98CD Shin Samurai Spirits 2 Haoumaru Jigoku Hen (Unl) NES board=MAPPER209;PRG=128;CHR=512;WRAM=8
sha1:EB35202CC4E9C2FAC320B04F36F3A6858B8916F2 Super Bros. 8 NES board=MAPPER048;
sha1:F949FC16932808C426074AB1628F246B0435C52C Flintstones, The Rescue of Dino & Hoppy (J) NES board=MAPPER048;
sha1:9C801071D1AAC7B280468C38BF1B61FDE99B5FD0 Yong Zhe Dou E Long Dragon Quest VII (Ch) NES board=MAPPER245;
sha1:C282206800426557E7DD66ABF70FEAB6FE9DA1B2 San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:E6F080CCF09C62C038D35E3BD503C4E57E716571 B San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:E2BFF2002F2DD0AA184D5791D008A1350C477AE0 B San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:B37E6002EF84C172DB413DF4B41451192ADBDC36 Shen Hua Jian Yun III (Ch) NES board=MAPPER253;VRAM=2;BATT=true;PAD_H=1
sha1:CE1B236ED0EAC133A3DE5411AEF57228220885EF G Super Sonic 5 (1997) (Unl) NES board=MAPPER121
sha1:37DC34A1069B5B62BAC41DB66F47745E3A1E442B SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [b1] NES board=MAPPER159;
sha1:89C57A4144E038565707A4B3B5B9505C7E4F3C70 SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [T+Eng0.10_Assassin_Productions] NES board=MAPPER159;
sha1:CFB4626E7794F1276ABF5DB7806FCE61EFEBFE98 Street Heroes (Sachen) [U][!] NES board=UNIF_UNL-SHERO;VRAM=16;
sha1:56CBA51568B0F1458AA7E0DE6575D1225E40F7A1 3D Block (Unl) [a1][!] NES board=MAPPER219;PRG=32;CHR=0;VRAM=8;PAD_V=0;PAD_H=1
sha1:0E7A314D43B53ABCCFF7B38A1AA8BD0CFA612346 Pocahontas 2 NES board=Pocahontas
sha1:0E78391D3036D71C8241DB0206E7747F4E3892DC Poker III NES board=UNIF_UNL-Sachen-74LS374N
sha1:11419605C942FC9DCB4F93A329C13E3BD5D62403 Poker III NES board=UNIF_UNL-Sachen-74LS374N
sha1:F9E15D09D5F49E52185BA10B4F98A342B2606870 Mei Nu Quan (Honey Peach) (Sachen) [b1] NES board=UNIF_UNL-Sachen-74LS374N
sha1:52EBAFAD0B70E6BB41CCDBC0DFC8420C12D64AC5 Mei Nu Quan (Honey Peach) (Sachen) [b2] NES board=UNIF_UNL-Sachen-74LS374N
sha1:079E58CEDD3D182E8591A33EE8FAD6F227960838 Mei Nu Quan (Honey Peach) (Sachen) [a1] NES board=UNIF_UNL-Sachen-74LS374N
sha1:E8BB03BA4ABED34FF451A1D086352719BAC6564F San Guo Zhi 2 (Ch) [T+Chi2.3] NES board=MAPPER199;VRAM=8
sha1:8996AEA69D459AC181F1B3F4EF56DEA20FFF0A40 Silva Saga (J) [T+ChS] NES board=MAPPER199;VRAM=8
sha1:3F85C45797E8AA0F161A4BD350BFF5777B3A19A8 Zu Qiu Xiao Jiang (Ch) [f1] NES board=MAPPER195;VRAM=4
sha1:A43A2203F4F7E0FE729CE520FBD75A05206AC9F2 Zu Qiu Xiao Jiang (Ch) NES board=MAPPER195;VRAM=4
sha1:A2F36A9CA3914F1C9184A85E914D7A163DAA135B B 46-in-1 (D1038) [p1][b1] NES board=MAPPER060
sha1:C403AA673405583FD18A0DA5E3E6275786E04128 B 65-in-1 (NT766) [p1][b1] NES board=MAPPER060
sha1:7E46FBE4713E9391293521CF2B852C80DBEBCD7F B 74-in-1 (NT886) [p1][b1] NES board=MAPPER060
sha1:81D72ACD08A6255AE44639D40D6D90C1EFCF61AF B 77-in-1 (NT141) [p1][b1] NES board=MAPPER060
sha1:1C3771B7F116F439D684D04DF792570271C93F86 75 Bingo (Sachen-English) [U] NES board=Sachen_CNROM
sha1:4097D5A814308E39D592466B60B64862699CC22A 2-in-1 - Yuu Yuu + Dragonball Z [p1][!] NES board=MAPPER023_BMC
sha1:4C499A857087E6C121522435786792A2E4105AC1 Fuuun Shaolin Kyo (FDS Conversion) (Unl) [U][!] NES board=UNIF_UNL-LH10;WRAM=8;VRAM=8
sha1:CAAC1E829133851648BA7C7CD6EAA7D26A464999 Metal Fighter (Asia) (Unl) (Sachen) NES board=UNIF_UNL-SA-016-1M;PRG=32;CHR=32;PAD_V=0;PAD_H=1
sha1:B9902886D1739983B315B67B02133E44620E4381 Challenge of the Dragon (Asia) (PAL) (Unl) NES board=MAPPER147;PAD_V=0;PAD_H=1;system=NES-PAL
sha1:0CDE48DB89896946F0C2E78936EA290348994ED5 Pipemania (Australia) (HES) (Unl) NES board=MAPPER113;PRG=32;CHR=16;WRAM=0;VRAM=0
sha1:E843AB3D779D4F0BB1F933D6EE99DAA526EFBCF1 Gaiapolis (Asia) (Unl) NES board=UNIF_NES-TLROM;PRG=128;CHR=256;WRAM=0;VRAM=0
sha1:68ABE1E49C9E9CCEA978A48232432C252E5912C0 Dancing Blocks (Asia) (PAL) (Unl) NES board=MAPPER143;PAD_V=1;PAD_H=0;system=NES-PAL
sha1:B21CFE30197727C1C8E8DB6D28AD696A708F8FF5 Pyramid II (Asia) (PAL) (Unl) NES board=MAPPER146
sha1:7117413766ABC02F3BB767C2CE96065B6F3CBA85 Silent Assault (Asia) (PAL) (Unl) NES board=MAPPER146;PAD_V=0;PAD_H=1;system=NES-PAL
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;positively good roms which for one reason or another arent in bootgod's DB
;probably missing due to obscurity
sha1:977286FDC76C34A618E2A2D0270641BC36CFE89C Nintendo World Championships 1990 NES board=NES-EVENT;PRG=256;CHR=0;WRAM=8;VRAM=8
;these are from the 2002 konami collection and castlevania at least has a published TAS. presumably these are good, as they came from a PC game
sha1:EC652EE1660E527098102E26A36A8B9B7BB3943F Castlevania (Konami Collection 2002) NES board=NES-UNROM;PRG=128;WRAM=0;VRAM=8;PAD_H=1
sha1:B5C4E5E858113F5AA5E063BC79A12D7F6B856E6C Contra (Konami Collection 2002) NES board=NES-UNROM;PRG=128;WRAM=0;VRAM=8;PAD_H=1
;chinese shit
sha1:BFA31777E077E64AF0E274B5A22B57C6765D36E1 Fan Kong Jing Ying (Unl) (Ch) NES board=MAPPER241;MIR=H
sha1:17473C223453D2D80FCB9DCFA317947287DC5C52 Xing He Zhan Shi (Ch) NES board=MAPPER176
sha1:0B58E16B7FD5ABE62B1D9B1841875582DF5A9195 Ying Lie Qun Xia Zhuan (Ch) NES board=MAPPER192
sha1:27CB8AEAF0EA97A6C69D3D90BC056C5EB61695F6 Dai-2-Ji Super Robot Taisen (Ch) NES board=MAPPER194;VRAM=2
sha1:F5FA7807F2B70ADFE5707D9BF88F90DAC1436DB0 Di 4 Ci Ji Qi Ren Dai Zhan (Ch) NES board=MAPPER074;VRAM=2
sha1:A9887C308C5D0659C3AA45D003A603C9DFFB148A B Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:5084F25F14A61AB2799BD85D363B57B9B494601D Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:6143D80047FFC17C752078C622A44C3E0CB7466E B Dong Fang de Chuan Shuo The Hyrule Fantasy (Asia) NES board=MAPPER245
sha1:CEFEBA536DB507DBDEF8A538F9C332D7A75BF613 You Ling Xing Dong (Ch) NES board=MAPPER192;VRAM=4
sha1:DBFCC70CC2DEC7A889429ED542267F0F1BD967BF Ying Xiong Chuan Qi (Ch) NES board=MAPPER224
sha1:FFB4706E49B826C6CDD12E502E8AE94FC9810B7F Monty no Doki Doki Daisassou (FDS Conversion) (Unl) [U][!] NES board=UNIF_UNL-LH32;WRAM=8;VRAM=8;PAD_H=1
sha1:17473C223453D2D80FCB9DCFA317947287DC5C52 Xing He Zhan Shi (China) (Unl) NES board=WAIXINGMAPPER176
;wrong vram info
sha1:32D71DD6C5A8D78A918FE1B9D6D6C4A570D9652D Oeka Kids Anpanman no Hiragana Daisuki (J) NES board=MAPPER096;VRAM=32
sha1:77B887BD5935204C72869365EAF99708E1B13EB1 Super 24-in-1 [U][p1][!] NES board=UNIF_BMC-Super24in1SC03;VRAM=8;
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;it works, so don't laugh
sha1:203523818A348361584CDEBE47AEB860808757FC U Jurassic Boy 2 (Sachen) NES board=NES-TR1ROM;VRAM=8
;wrong mirroring, no bootgod entry
sha1:C1D82F6BE8AF524F951FC7C9D41604E59F9FE92A G Dragon Wars (USA) (Proto) NES board=MAPPER004;PAD_H=0;PAD_V=0
sha1:22FCC2D33F6715D63E04235A0A7CCB0C8DC489C5 Mortal Kombat 3 Extra 60 (Unl) [!] NES board=MK3E60;PAD_H=1;PAD_V=0
sha1:8928F7293C12EE7D3FC90BECC68AE5261802EAA6 AV Super Real Pachinko (Unl) NES board=MAPPER066;PAD_H=0;PAD_V=1
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;mmc3 homebrews that need chip specification
sha1:35C157A921156E47FD3F6573D150F54108D0EDFC Blargg's 5.MMC3_rev_A.nes NES board=MAPPER004;MMC3=MMC3A
sha1:0E971E2CCAD1DEE51A0C305ED38FAFD2E6CA3B41 Blargg's 6.MMC3_rev_B.nes NES board=MAPPER004;MMC3=MMC3B
sha1:F794FDA12D34E611D58E652319ED583AE61B81E0 Blargg's 6-MMC6.nes NES board=MAPPER004_MMC6
sha1:2F29F3DC724027FAD926BC9D4470A481884E42A5 Blargg's 6-MMC6.nes (newer) NES board=MAPPER004_MMC6
sha1:6F3184ACDC7333683D459C7613CA1C235CEAFD3F Aladdin (SuperGame) (Mapper 4) [!] NES board=MAPPER004;MMC3=MMC3A
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;datach stuff
29CC759D5CA214EEFC0CC1C6CE0F8B9111E58124 Datach Battle Rush Build Up Robot Tournament NES board=MAPPER157
87478B635FEFB25FA13C4876E20F505A97426C1B B Datach Dragon Ball Z Gekitou Tenkaichi Budou Kai NES board=MAPPER157
B2089533E05FE95814D0D77F2729944CBEB95988 Datach J League Super Top Players NES board=MAPPER157
EDD7A45A7F27E396B6D686F1861642D509863132 Datach SD Gundam Gundam Wars NES board=MAPPER157
533170D5EB685231CCD27B9C136FFA4FAD68A7B8 Datach Ultraman Club Supokon Fight! NES board=MAPPER157
43315F18A514F0EF1D84EFE9C8D4483B57BA712C Datach Ultraman Club Supokon Fight! NES board=MAPPER157
74218AAE93E4FEBFB2284BCF15811453418A2029 Datach Yuu Yuu Hakusho Bakutou Ankoku Bujutsu Kai NES board=MAPPER157
6F3C65BD945FE13305A7A39D8CD884A5BF314A8F Datach Crayon Shin Chan Ora to Poi Poi NES board=MAPPER157
1218C891DEE878C18D31D38D07CAD5FB06B3B2CE Datach Yuu Yuu akusho Baktutou NES board=MAPPER157
;testrom
sha1:E925A172C29DD46BA385D526F3C317DB039FA2BF mmc1_a12 NES board=NES-SNROM
; ArcadePit hacks
; Why does this one need NesHawk?
sha1:90acbbdfad1465032dfff77175320bab8aa4adb7 H Mike Tyson's Punch-Out!! [Buck Edit] (USA) NES NesHawk
#include gamedb_goodnes.txt
; ************ TI-83 ************ ; ************ TI-83 ************
@ -362,7 +40,4 @@ D4448D09BBFDE687C04F9E3310E023AB TI-83 v1.07 TI83 initPC=6ce
C94257E7 B Looney Tunes - Sheep Raider (STATiC Dump) PSX dh=00000000 C94257E7 B Looney Tunes - Sheep Raider (STATiC Dump) PSX dh=00000000
829A295C B Monster Rancher 2 (U) (EXE Patched) PSX dh=00000000 829A295C B Monster Rancher 2 (U) (EXE Patched) PSX dh=00000000
#include gamedb_neshomebrew.txt
#include gamedb_user.txt
#include gamedb_ws.txt
#include gamedb_wsc.txt

View File

@ -0,0 +1,349 @@
#include gamedb_goodnes.txt
#include gamedb_neshomebrew.txt
#include gamedb_vs.txt
;b - bad dump
;v - bad dump (??)
;t - translated rom
;o - overdump (bad)
;i - bios
;d - homebrew
;h - hack
;u - unknown
;Hash Status Name System ID Notes MetaData Configurations CoreForce[neshawk|quicknes]
; ************ NES / Famicom ************
;games which might be good according to goodNES, but which are almost positively not according to bootgod, who has dumps with different hashes
;these we tend to mark as Unknown, because maybe these are variants of the cart which bootgod didnt happen to dump, or maybe bootgod's is wrong (?)
sha1:E80FF0B707B0D675FDBEF474E3FDB1A83E2B7C44 U Mississippi Satsujin Jiken (J) NES board=JALECO-JF-11;PRG=128;CHR=32;PAD_H=1
sha1:8A5FD1061ADACDEABF422A2D2E555FF70749AE7C U Mississippi Satsujin Jiken (Alt) (J) NES board=MAPPER066;PRG=128;CHR=32;PAD_H=1
;possibly good roms for games which arent in bootgod's db yet, most likely due to obscurity or incompleteness at the present.
;when they appear in bootgod's db then we can re-evaluate this category.
sha1:91CECCFCAC90E417E9AEE80E8F7B560A20EB33CC Ai Sensei No Oshiete Watashi No Hoshi (J) NES board=IREM-G101;PRG=256;CHR=128;WRAM=8
sha1:1E49BDA9CEF18F6F5C2DA34910487713D364AA68 G Pipe 5 (Sachen) NES board=MAPPER160;PAD_H=1;PAD_V=0
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;this is every game from goodNES which is clearly labeled as bad.
;well, it isnt very game yet. but we should make it every game, if we can! it would be a lot of games though
sha1:984ADAEB85403EEF1BA85CDCF310FAAECEB409A0 B Adventures of Captain Comic, The (Bad Dump) (U) NES board=COLORDREAMS-74*377;PRG=64;CHR=64;WRAM=0;VRAM=0
sha1:869111A86FD46872AD8B1BA0ED31B858FA15681F B Adventures of Lolo (Bad Dump) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0
sha1:41BD74F739E008D476989C8296BB789EE57658F0 B Adventures of Lolo (Bad Dump 2) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0
sha1:10AF069B2AC5DB2FB10768349F4068CB3CDA0EC7 B Airwolf (Bad Dump 1) (U) NES board=NES-SH1ROM;PRG=32;CHR=128
sha1:DAD9D1D66018DFB3C30F48741EF188FEFA2B2F68 B Airwolf (Bad Dump 2) (U) NES board=NES-SH1ROM;PRG=32;CHR=128
;since the actually good Banana rom is "Banana (J) [hM03][p1][a1]" then we want to be aggressive in marking all these others as bad
sha1:84EA60C1FA43AF37B2A20C1FEFCB2D5182EAF3E8 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:F9423CCC1AA711CB06B8F5C66E9304636F5E9B10 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:A8037AED044417DEE8D822A21851058ED37AF6A8 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:8F42BC9919B324A63636BE2FBAD0101D8C720517 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:4EF2C4DAD0897F326E2991D351903A98483BC3C0 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=16
sha1:15E04F1BF83D8FE34ECD2B29894C9CF034E6D257 B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=32
sha1:C6C6228B16AECB35B0C52467071E04DB3B34C77F B Banana (J) [hM03] NES board=HVC-CNROM;PRG=32;CHR=8
sha1:2801CDE6D10D67889E01161476D80CF5CCC3263E O Ball Hack v.2 2001-03-21 [o1] NES board=HVC-NROM-256;PRG=32;CHR=8
sha1:A6E7DB47B9C39E2A5B0A77F34B9AA3BEFDB70D1C O Dr. Mario (JU) (PRG0) NES board=MAPPER001;CHR=32
sha1:2BDBD70C1E3EEF115F640B91B22A97BFCDF18B2D B Castlevania III Dracula's Curse (U) (Bad Dump) NES board=MAPPER005;CHR=128
sha1:0D0957F7D49E38C298EB5194472B87EFC44BBD46 B Dragon Quest II Akuryou no Kamigami (J) (Bad Dump) NES board=MAPPER002;CHR=0
sha1:736C0AEDA14A93A2715BDA1DA6F6C92E6690A5DE B Dragon Quest IV Michibikareshi Monotachi (J) (PRG1) (Bad Dump) NES board=MAPPER001;PRG=512
sha1:739698BD6050572F24E739A20978E4760CF33E59 B Dragon Quest IV Michibikareshi Monotachi (J) (PRG1) (Bad Dump) NES board=MAPPER001;PRG=512
sha1:3FB61976847BCA4187DB61F484BF21346B42C95A B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:697ECCCDD178809207726A05A5593D874CA39CA9 B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:E33D3A487678F35E05C0E5DA7E4C30F8FEFA600D B Dragon Warrior IV (Bad Dump) NES board=MAPPER001;PRG=512
sha1:3AE0469A8208023DAA32A7BB9925F3C5666FCB2D B Famicom Meijin Sen (J) [a1] NES board=HVC-SKROM;WRAM=8
sha1:8CC5894A1E637FA63A63992E188B3797D9300337 B Mighty Bomb Jack (U) (Bad Dump) NES board=NES-CNROM;PRG=32;CHR=32;WRAM=0;PAD_V=1
sha1:CAB30771F9CBD89B2FCD06F3B2F5C8F2156BFD8A B Mighty Bomb Jack (U) (Bad Dump) NES board=NES-CNROM;PRG=32;CHR=32;WRAM=0;PAD_V=1
sha1:A4CDD4BC37D44CFF1379942CC31DCD89E340B10C B Money Game, The (J) [hFFE][b1] NES board=MAPPER006;PRG=256
sha1:8AB1B122FE96865B62290FC838FA2C248D4989FB B 3D Bloack (Unl) [f1] (Bad Dump) NES board=MAPPER000;PAD_H=1
sha1:457BA1626EAA58A2370ECD6AB0B83232C098C064 B High Speed (E) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-PAL-B
sha1:421EBBFA08FFD5A7A0F4DDEE7868B36DB7FAEE39 B High Speed (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:9979C1333B8A7685CC3CA2BEAFD634B2A88D3AF8 B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:DAB664B59B094FFAABCF24D0388760C09F87495C B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:36405B87E66E18DC432690A5959D4529C14B1AEE B High Speed (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8;PAD_V=0;PAD_H=0;system=NES-NTSC
sha1:9D2391C1F4855E7ECCE0DB5C8B258A43B4E9F84F G Pin Bot (PC10) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:B3537088ED6F8379F2C30CA45061BFCCBA1007B9 B Pin Bot (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:A1E8E80E2F72E606CD7802D809B2FF256578EDE6 B Pin Bot (U) (Bad Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:C969BD9F8E4353EE6463221FFDD2BFE4A844134A B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:569907CD308C28CDB178AA525F976656BF0DD886 B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:9C851967BD74E063ED8F44935928911D572527AD B Pin Bot (U) (Over Dump) NES board=NES-TQROM;WRAM=0;VRAM=8
sha1:2FA61D1FDFCFEC20099EB85C3F45827CA87160D9 B Yong Zhe Dou E Long Dragon Quest V (Ch) (Over Drump) NES board=MAPPER245;VRAM=8;CHR=0;PAD_H=1;BATT=true
sha1:79978AA3AD3FE63D41357E62F1E49E4761B3738A B Magical Taruruuto-kun 2 Mahou Daibouken (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:3825786DF3AD8E2C2F0442E42088AC0E494BDA2D B Magical Taruruuto-kun 2 Mahou Daibouken (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:02D4E73DACD3E74CF927C77DF1DB1B7453312CC9 T Captain Tsubasa Vol. II - Super Striker (Ch) NES board=MAPPER195;VRAM=4
sha1:DBD7DBAF79D2A77A09D9D4CF685CBD93281ED468 B Chaos World (Ch) NES board=MAPPER195_CW;VRAM=4;BATT=false;PAD_H=1
sha1:944F98A6885CA5160669BF81B9DE710CB16E312D G Chaos World (Ch) NES board=MAPPER195_CW;VRAM=4;BATT=false;PAD_H=1
sha1:EA6093FF3B4C7425B792223742DF5C76A657EF08 B Columbus - Ougon no Yoake (Ch) NES board=MAPPER195;VRAM=2;
sha1:B367506A7249865DEDB59AFF9B4CE593B3913F0C G Columbus - Ougon no Yoake (Ch) NES board=MAPPER195;VRAM=2;
sha1:78EC827CEE61E009F7716ADE03361369FFCE9D12 G Luo Ke Ren X (Sugoro Quest - Dice no Senshitachi) (Ch) NES board=MAPPER195;VRAM=4
sha1:568BF236FB3085B8BD522FBD2C18C7831E3A2DD1 G Q Boy (Sachen) NES board=SACHEN-8259A;VRAM=8
sha1:2FA9EF6B8E5C7E1D215F4FF69C6275BDE00DDE76 O Sugoro Quest - Dice no Senshitachi (Ch) [o1] NES board=MAPPER191
sha1:0C7CA363EA26632E1A61C7F40E0FE8E8538ED76A G Wei Luo Chuan Qi (Ch) NES board=MAPPER192
sha1:F459A9AD6F841169E0210436CEB06B1395169EAB G Young Chivalry (Ch) NES board=MAPPER192
sha1:8711FDC0CE28574C043816721CA32E4A1C722BE4 B Young Chivalry (Ch) NES board=MAPPER192
sha1:E7803CAC6898C7243F9331E6360B5157BAE673A5 B Young Chivalry (Ch) NES board=MAPPER192
sha1:16EF1034DB88AD96DDC19C3A84B9E0FDEE466CD4 B Young Chivalry (Ch) NES board=MAPPER192
sha1:BE8373A0694EB021EBF73D75F8AC63BD8162009A B Young Chivalry (Ch) NES board=MAPPER192
sha1:4692A622AF6A3D79514BF3E5FB4E9FBE6C6080FC G 150-in-1 [a1] NES board=MAPPER235
sha1:83264E3F8807998D09E9FBA19B13BBEA7C888D88 O Bakushou!! Jinsei Gekijou 3 (J) [o1] NES board=TAITO-TC0190FMC+PAL16R4;WRAM=0
sha1:E79FC613112CC5AB0FC8B1150E182670FB042F4A G Contra Fighter (Unl) NES board=MAPPER238
sha1:2C512DE4079AF45D7B9218E40BB68E308ABE288C B Magic Johnson's Fast Break (U) NES board=MAPPER001;PRG=64;CHR=128
sha1:D2BE67170DDED1E1108EED2D4D8CA9D9CEE9F9E2 G Super Mario Bros 2 (Lost Levels) (Unl) NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:77D5D7A162B61DEFC6B66B6A39B8D51E124AC534 B Tagin' Dragon (Bunch) [b] NES board=COLORDREAMS-74*377;CHR=16;PRG=32;WRAM=0
sha1:2028940CF7C757A3A7931A741D5EC79C3554D38C O Wally Bear and the No Gang (AVE) [o] NES board=AVE-NINA-07;WRAM=0
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;these roms are in goodNES but theyre junk. hacks, mostly. ideally we would put ever game from goodNES that was labeled as a hack in a list here.
sha1:111D38E2FB41D0B43753E18757D427A91B0DBCB9 H Dragon Ball Z II Gekishin Freeza!! (J) NES board=BANDAI-LZ93D50+24C02;PRG=256;CHR=256;WRAM=0
sha1:A907E600CEDA175ECD115B406B28155397A4C1FA H Dragon Ball Z Gaiden Saiya Jin Zetsumetsu Keikaku (CH) NES board=BANDAI-FCG-1;PRG=512;CHR=256;WRAM=0
sha1:A13EAF0132905FBE3D0456BB075028A30C084D0E H Dragon Ball Dai Maou Fukkatsu (J) [hFFE] NES board=BANDAI-FCG-1;PRG=128;CHR=128;WRAM=0;VRAM=0
sha1:8885F4F00C0B73C156179BCEABA5381487DBEAAD H Spy vs Spy (J) NES board=HVC-CNROM-256K-01;PRG=32;CHR=8;WRAM=8
sha1:8C676CC9BEF5B93C5A7630D12B8A5B2FEBCE3438 H Rad Racket Deluxe Tennis II NES board=NINA-06;PRG=32;CHR=32
sha1:A1D674D1C7C633A317CFD516EFB9A0350CD0E45E H Arkanoid II (J) NES board=TAITO-74*161/161/32;PRG=128;CHR=128;WRAM=8
sha1:4D6117577CE301BB987C5C32FEEF7B132A21B046 H Afro Man (Mega Man 3 Hack) (UNL) NES board=TXROM-HOMEBREW;PRG=256;CHR=128;WRAM=8
sha1:7BD102770FE7766BF8430ACDB3C17EE51E30478C H Mike Tyson's Punch-Out!! (Hacked) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0
sha1:536D623BA02A622BDE8E2D7D514AE9785B5E0357 H Punch Out!! Kirby (Hack) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0
sha1:F2A8BC888B888FA65DFB303126B130422E34942E G Kunio 8-in-1 [p1] NES board=MAPPER045
sha1:27AA5F60474600FEE5C1623D4A0985421680C9FE H Mario + Toad (Nuts & Milk Hack) NES board=MAPPER000
sha1:B7DD142AF1FBCC81F3FE88C9278BD6C61B615D09 O Death Race (AGCI) (Overdump) NES board=MAPPER144
sha1:0FAECB09767528CC2C9CD4FE4EDBD0C6ECEFB999 G Secret Scout in the Temple of Demise (Color Dreams) (Prototype) NES board=MAPPER011_HACKY
sha1:87C929090C3B04739BAAED90B9A8F40B29327FC2 G Free Fall (U) (Prototype) NES board=MAPPER011_HACKY
sha1:BFE1A8EFE7539B20E09FFD472963F271AC9F2AEC G Mortal Kombat 2 (Unl) NES board=MAPPER090
sha1:123105A996B3F325E55B7080DDD83D4CF043E543 G 168-in-1 NES board=MAPPER015
sha1:B094D9D20A193BF28BD57A1154EADA84F9F6C9CC G Street Fighter II - The World Warrior (Unl) NES board=MAPPER189
sha1:C0CF1CDFEEA5F3529A3126B366DF8E331C804CC7 G Summer Carnival 92 - Recca NES board=MAPPER004
sha1:E9CFA35A037CC218F01BFB4A1EB5D1D332EA2AA9 G Family BASIC (J) NES board=HVC-FAMILYBASIC;WRAM=2
;;;;;;;;;;;;;;;;;;;;;-
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;heres another idea. let's list rom sets from goodNES, good and bad variants together
sha1:98B71119294DA59D1B22723D2D2955D80EADABF4 World Hero (Unl) [!] NES board=MAPPER027
sha1:17AC56723F99A646BD44F8C999B23B8A972A3EF2 B World Hero (Unl) [b1] NES board=MAPPER027
sha1:5227195D5DB2030758BF67704150E8C5FAF056B1 B World Hero (Unl) [b2] NES board=MAPPER027
sha1:AD350F001DB2E3C640B2BD9107B86A8F29B68AC0 G Commandos (Ch) NES board=MAPPER163;
sha1:5A91F54A6FF44762D98FC8D8974909D298EB52A8 G Somari (NT-616) (Unl) NES board=MAPPER116;
sha1:5F0943DC8145542ABC70BF20E4754B3C08653399 G Meikyuu Jiin Dababa (FDS Conversion) (Unl) NES board=MAPPER108;WRAM=0
sha1:95E86C77BB25DD23152D34FD0BB562A09535BE43 G Pyramid (AVE) (PRG1) NES board=MAPPER000
sha1:5759A9D658D253C8A6AAA38969C443D66E0F3349 G Dragon Quest III (PRG0) NES board=HVC-SNROM-03
sha1:9DF34897D002E8D0E4D53B76154F8CD46927CDF9 G Dragon Quest III (PRG1) NES board=HVC-SNROM-03
sha1:B6D1C372A38D196112AA98905C709AD844BD6627 G Super 35-in-1 (y-in-1 VT5201) NES board=MAPPER060
sha1:0941ABB51EF88587303DBF018770758ECDDD5C20 G Jovial Race (Sachen) NES board=MAPPER133
sha1:D20724A2E2933BEE8E193596688CF86747E0250B B Dragon Ball Z Kyoushuu! Saiya Jin (J) (Bad Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:9F17353EF85590484BBC693517292A15DD30845D B Dragon Ball Z Kyoushuu! Saiya Jin (J) (Bad Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D1E9A66CC7424725AD72B8A04E37B9E72EE2BFB6 O Dragon Ball Z Kyoushuu! Saiya Jin (J) (Over Dump) NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:123AA69FE2334A027E48BA658C906BFA4996FA32 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng0.47_Eigo ni Yakusu Productions] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:6DCB35518C0AC42943098A5B417B79C10273D75A T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng1.01_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:726C2C19F7B559AD5220872004B580D8C9574F5A T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Eng1.1] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D51398EFF4F3F47AFA0527D98882234E10AEDFF4 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Kor20060719_88ktt] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:97DECB4E7C8DE1006F57732D8E83437A9186E500 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Por45%_Tradu-Roms] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:80E314CF4A2FCD5A184D4D168428165C1F844729 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Por100%_RaphFS] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:1D6381D2AA0DF4A5B50E9E2DB7B45785BBB1E48F T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T+Spa_PaladinKnights] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:15E43BE5F7D328BF3041B52CE38BFC4FF23A1DF1 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:D42BA5AEC6E41804FF98D6DFA34B53510A1174FA T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng0.50_TransBRC] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:B1228C5716FB5EE2E0421634A464C927B33493B7 T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng0.99_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:8E910216502E0BF9BFBA3E38EAA34FFC2D7EE1AD T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Eng1.00_RedComet] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:18BE110CBEA2D665A3FF704BDD4153AE5E5ACE5F T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Kor_88ktt] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:9F601A88A9DFA8EDEC23F67DA60254BE4CBAE64B T Dragon Ball Z Kyoushuu! Saiya Jin (J) [T-Spa] NES board=BANDAI-LZ93D50+24C01;PRG=256;CHR=256;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:FC7A8824CFDD37F85868C8D8624D8B517A7C3C02 G God Slayer - Haruka Tenkuu no Sonata (Ch) NES board=MAPPER195;WRAM=16;VRAM=4;BATT=true
sha1:081D107B5AEFFD4F59108C76FA3942506FA36B1F G Captain Tsubasa Vol. II - Super Striker (Ch) NES board=MAPPER195;VRAM=4
sha1:F99E8B7C7A2174BF0B2330F5457AEE478A938C93 G Captain Tsubasa Vol. II - Super Striker (Ch) [a1] NES board=MAPPER195;VRAM=4
sha1:9958BED493E8C5727F96937BF254AC33FA3BCF81 G Captain Tsubasa Vol. II - Super Striker (Ch) [a2] NES board=MAPPER195;VRAM=4
sha1:B4AA3F10908DC3D6B8152F5DEB1B8543B8B46BF6 G Captain Tsubasa Vol. II - Super Striker (Ch) [a3] NES board=MAPPER195;VRAM=4
sha1:60FC5FA5B5ACCAF3AEFEBA73FC8BFFD3C4DAE558 G Pegasus 5-in-1 (Golden Five) NES board=MAPPER104
sha1:BAD382331C30B22A908DA4BFF2759C25113CC26A O Pegasus 5-in-1 (Golden Five) NES board=MAPPER104
sha1:6282051DA49C286863463AF105F851AACF896563 G San Guo Zhi 2 (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:71234F9DCA4C31B4E9F0719425963878F3F045C9 G Dragon Ball Z II - Gekishin Freeza!! (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:A907E600CEDA175ECD115B406B28155397A4C1FA G Dragon Ball Z Gaiden - Saiya Jin Zetsumetsu Keikaku (Ch) NES board=MAPPER199;VRAM=8;BATT=true
sha1:D565A9C2B117447C310E4F59E4AFC30DF299EA4F G Street Fighter IV (Unl) NES board=MAPPER208
sha1:B9F444FF60F60C177EEEC8671BEC3731B0F6FE49 G Tang Mu Li Xian Ji (Ch) NES board=MAPPER223;WRAM=16
sha1:EBD2B4A4067FD4A8F0D0ABD34C8FF1AF520D1EED G Super Blaster VII Turbo 28 (Unl) NES board=MAPPER083;prg=512;chr=256;wram=0;
sha1:40409FEC8249EFDB772E6FFB2DCD41860C6CCA23 G Pegasus 4-in-1 (Unl) NES board=MAPPER232
sha1:7EF667D9BF107B6512565177B9C62081077558F5 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi] NES board=MAPPER198
sha1:92CC033C1255F119B3A566EDCA10140C014FA479 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi][a1] NES board=MAPPER198
sha1:EEF617A022B8E45E0BDE088FED654C89AD4FAABF T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi][a2] NES board=MAPPER198
sha1:3D49A357362160B16F03CC4BE7D8EAFB7108708D T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi(Trad)] NES board=MAPPER198
sha1:7FB334A7375E17EA157415193DEE4FACC4EC2B34 T Tenchi wo Kurau II - Shokatsu Koumei Den (J) [T+Chi(Simp)] NES board=MAPPER198
sha1:D8684D302F17843031151DE38D609646CAE4753C O Don Doko Don 2 (J) [o1] NES board=MAPPER048
sha1:12DDD9EDB8894C200C9D89B9EE5673F1202ABA19 Falsion (FDS Conversion, Whirlwind Manu) (Unl) NES board=MAPPER108;WRAM=0
sha1:D6E9F3722CFA26CBC582649F197D780809F575CA O Family Circuit '91 (J) [o1] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:387E7B477F5A61A165A41CD2BFE8A467B3816323 O Family Circuit '91 (J) [o2] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:68ADA89BC7539679871AD14C5C1FFADF04D71280 O Family Circuit '91 (J) [o3] NES board=MAPPER210;PAD_V=1;PAD_H=0
sha1:8A5FD1061ADACDEABF422A2D2E555FF70749AE7C B Mississippi Satsujin Jiken (J) [h2] NES board=MAPPER066
sha1:C1F7AD0A347078B9213B2748D4ADFF33305A6647 O Mississippi Satsujin Jiken (J) [h2][o1] NES board=MAPPER066
sha1:4BBD4C55C37F531031177DE51F007B10418AD760 O Pyramid (AVE) (PRG1) [o1] NES board=MAPPER000
sha1:BAF860940369C54B3FF547DA7E759515015B1131 O Pyramid (AVE) (PRG1) [o2] NES board=MAPPER000
sha1:2B34E0F405629055E4FF2B2B1C0EBE015D866344 H Rabbi Harrel Groberklotz (Gumshoe Hack) NES board=MAPPER066;WRAM=0
sha1:DA3644C99D462833E4EEF826D8700AF278609C10 G Super 2-in-1 (Soccer Game & Crazy Dance) (Unl NES board=MAPPER178
sha1:CE11161FE2B41008F55FC9D29E093C347E78EBC4 T Super Mario Bros 2 (Lost Levels) (Unl) [T+Rus_Cool-Spot] NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:43E3ED6480E7BF32FFAF1AEBC7F534E0A9B775E6 T Super Mario Bros 2 (Lost Levels) (Unl) [T+Rus_Cool-Spot][a1] NES board=MAPPER040;WRAM=0;PAD_H=1;PAD_V=0
sha1:F32E366828DCA94A612DD39613858DD8E26FA2DC T Thunder & Lightning (U) [t1] NES board=MAPPER066;WRAM=0
sha1:8554112E83B5978F5D4EC6E4551F390D5F698E00 B U-Force Power Games (U) (Prototype2) (Defaced by NA) [b1] NES board=NES-GNROM;WRAM=0
sha1:A6A0A3DC8438558FA5DA3AF8D3349AA8CF080404 Xi You Ji Hou Zhuan (Ch) NES board=MAPPER162
sha1:BC1734BEE472D34F489A6F5F2530A019F28055B7 B 800-in-1 [p1][b1] NES board=MAPPER236
sha1:BC1734BEE472D34F489A6F5F2530A019F28055B7 G 800-in-1 [p1][U] NES board=MAPPER236;VRAM=8
sha1:BD167D1BCC9A008D04136EB91396EBEBCAC976E2 B R.B.I. Baseball (Tengen) [b] NES board=TENGEN-800002;WRAM=0;PAD_H=1;PAD_V=0
sha1:DEE958845DC528BED899557FB2A8A3B61F1BA7D1 Bao Xiao San Guo (Ch) [a4] NES board=WAIXINGMAPPER176
sha1:2EADA3C0D800A40C1CE5DB96A31A43196ED7A97B Kou Dai Jing Ling - Fei Cui (Ch) [a2] NES board=WAIXINGMAPPER176
sha1:237C2C026A10B3CEBFF96516FC67E4F446676D47 Meng Huan Zhi Xing IV (ES-1006) (Ch) NES board=WAIXINGMAPPER176
sha1:2FA7C0E60634C12EF54D857BF7AF45D4971066FE Po Fu Chen Zhou (ES-1092) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:A8010B1EE3C5362F606A47604CC49E5D7EAC9E46 B Pocket Monsters Red (Ch) (Decrypted) [b1] NES board=WAIXINGMAPPER176
sha1:A50411EDCC088D55B35A62ABD62D4FF1A0B4ED22 Shu Qi Yu - Shu Xue Xiao Zhuan Yuan (Ch) NES board=WAIXINGMAPPER176
sha1:5BDE83532F9E3B885C4D2C130F8981DD04E5A159 Shu Qi Yu - Zhi Li Xiao Zhuan Yuan (Ch) NES board=WAIXINGMAPPER176
sha1:91E51788E980A8AD5A8A829E270504C9571B72CF Shui Hu Shen Shou (ES-1087) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:DB92A34E6941D99B796FBE6C6C26F7D09C2BC2EE Xi Chu Ba Wang (ES-1066) (Ch) (Decrypted) NES board=WAIXINGMAPPER176
sha1:7235F3F8F0CA37B7C1EE6923A6DA272C08E0C817 Xiong Ba Tian Xia (Ch) NES board=WAIXINGMAPPER176
sha1:71511ECB1E5D99F38A04EC9291B1ABD4B512C42D P Bubble Bobble (FDS Conversion, Kaiser Hacked) (Unl) [p1] NES board=MAPPER108;WRAM=0;PAD_H=0;PAD_V=1
sha1:8F6CF72F9A829177A67DAAD4A083CADA3ED8B587 P Doraemon (J) (PRG0) [p3] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:E1935AD60CAFAEEC8A8301A607B373754D770E2E T Doraemon (J) (PRG0) [T+Eng] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:06A243B7FFE2CA5F96C4D324742BD6F349D7589E T Doraemon (J) (PRG0) [t2] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:BD43811A68799DBC45A53A006C35167D19C0919C T Doraemon (J) (PRG0) [t3] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:CB83577AAB5465EC7AD0AEF859A03444BA509386 T Doraemon (J) (PRG1) [T+Rus_Chief-Net] NES board=MAPPER066;WRAM=0;PAD_H=1;PAD_V=0
sha1:C78A7629779AF2EA2D9870524E6A79C0CD2E0213 T Jajamaru no Daibouken (J) [T+Chi_nineswords] NES board=MAPPER066;WRAM=0;PAD_V=0;PAD_H=1
sha1:A78D32B5FD43DCABA07A9152BF12EC9BFF2D37FD T Jajamaru no Daibouken (J) [hM66][T+Eng1.00_Aishsha] NES board=MAPPER066;WRAM=0;PAD_V=0;PAD_H=1
sha1:2D8F4656698937A7616A61D82B47232D939E68EA P AV Mahjongg (Hacker) NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E365A1F87EDFE8A68F23D8521CBDBE56EC3D76A3 T AV Mahjongg (Hacker) [T+Chi] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:D540F1050055C74B68CA02F3BA215E23ED859560 B AV Mahjongg (Hacker) [b1][T+Chi] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E8BDD327FA96576F501914BDF455C477EC2A20B4 B AV Mahjongg (Hacker) [b1] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:E816367A8CAC2AC470CEEBA8C8DC00CEC8C7009E T AV Mahjongg (Hacker) [T+Chi][a1] NES board=MAPPER066;WRAM=0;PAD_H=0;PAD_V=1
sha1:315ACE4AD8AC09B7ABA2815F93EEB8AD97BA1D38 H Fish Fall (Free Fall Hack) NES board=MAPPER011_HACKY
sha1:F59E68705F6A6346E18A071884A21A6289754EB7 G Free Fall (U) (Prototype) (Earlier) NES board=MAPPER011_HACKY
sha1:4FB14A3DBCE888BB1F95570BE45317ED1513FE89 B Free Fall (U) (Prototype) [b1] NES board=MAPPER011_HACKY
sha1:88A3624F48A2780B2C2A9D742B2185C3B31FB3D7 H Handy (Free Fall Hack) NES board=MAPPER011_HACKY
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;obscure and unlicensed roms which are not likely to be in bootgod's DB anytime soon but which are nonetheless "good" as far as things go
;people like these games (especially vast quantities of chinese oddities) so its important to add them here as good
sha1:D09EF8127C64CBE817B45DF33C4D43E7B441E381 Final Fantasy V (Unl) NES board=MAPPER164;PRG=512;CHR=0;WRAM=8;PRAM=8;PAD_V=1
sha1:92D9695FEB774F60965A8303CFE3E6AAEE7B7B62 Magic Dragon (Unl) NES board=MAPPER107;PRG=128;CHR=64;WRAM=8;PAD_H=1
sha1:6DF9AECF5787C0833B0F05A9A83D0E58A6153977 Rumblestation 15-in-1 (Unl) NES board=MAPPER046;PRG=1024;CHR=1024;WRAM=0
sha1:E4BFD5AB3C3649DBD36B9A7280CF431641BCBCEC Peek-A-Boo Poker (Unl) NES board=NES-CNROM;PRG=32;CHR=24;WRAM=0
sha1:39294394A0631708F58397371CE14075AE1FB7E6 Peek-A-Boo Poker (Panesian) NES board=NES-CNROM;PRG=32;CHR=64;WRAM=0
sha1:C87E7E6A68DD9C7E24652CD2C7D390A14E8ADF04 Lagrange Point NES board=KONAMI-VRC-7;PRG=512;CHR=0;WRAM=8;PRAM=8;PCB=352402;BATT=true
sha1:2E0889131DA5BA9505A15B94887113F4360D98CD Shin Samurai Spirits 2 Haoumaru Jigoku Hen (Unl) NES board=MAPPER209;PRG=128;CHR=512;WRAM=8
sha1:EB35202CC4E9C2FAC320B04F36F3A6858B8916F2 Super Bros. 8 NES board=MAPPER048;
sha1:F949FC16932808C426074AB1628F246B0435C52C Flintstones, The Rescue of Dino & Hoppy (J) NES board=MAPPER048;
sha1:9C801071D1AAC7B280468C38BF1B61FDE99B5FD0 Yong Zhe Dou E Long Dragon Quest VII (Ch) NES board=MAPPER245;
sha1:C282206800426557E7DD66ABF70FEAB6FE9DA1B2 San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:E6F080CCF09C62C038D35E3BD503C4E57E716571 B San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:E2BFF2002F2DD0AA184D5791D008A1350C477AE0 B San Guo Zhi (Ch) NES board=MAPPER252;VRAM=2;BATT=true;PAD_H=1
sha1:B37E6002EF84C172DB413DF4B41451192ADBDC36 Shen Hua Jian Yun III (Ch) NES board=MAPPER253;VRAM=2;BATT=true;PAD_H=1
sha1:CE1B236ED0EAC133A3DE5411AEF57228220885EF G Super Sonic 5 (1997) (Unl) NES board=MAPPER121
sha1:37DC34A1069B5B62BAC41DB66F47745E3A1E442B SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [b1] NES board=MAPPER159;
sha1:89C57A4144E038565707A4B3B5B9505C7E4F3C70 SD Gundam Gaiden - Knight Gundam Monogatari (J) (V1.0) [T+Eng0.10_Assassin_Productions] NES board=MAPPER159;
sha1:CFB4626E7794F1276ABF5DB7806FCE61EFEBFE98 Street Heroes (Sachen) [U][!] NES board=UNIF_UNL-SHERO;VRAM=16;
sha1:56CBA51568B0F1458AA7E0DE6575D1225E40F7A1 3D Block (Unl) [a1][!] NES board=MAPPER219;PRG=32;CHR=0;VRAM=8;PAD_V=0;PAD_H=1
sha1:0E7A314D43B53ABCCFF7B38A1AA8BD0CFA612346 Pocahontas 2 NES board=Pocahontas
sha1:0E78391D3036D71C8241DB0206E7747F4E3892DC Poker III NES board=UNIF_UNL-Sachen-74LS374N
sha1:11419605C942FC9DCB4F93A329C13E3BD5D62403 Poker III NES board=UNIF_UNL-Sachen-74LS374N
sha1:F9E15D09D5F49E52185BA10B4F98A342B2606870 Mei Nu Quan (Honey Peach) (Sachen) [b1] NES board=UNIF_UNL-Sachen-74LS374N
sha1:52EBAFAD0B70E6BB41CCDBC0DFC8420C12D64AC5 Mei Nu Quan (Honey Peach) (Sachen) [b2] NES board=UNIF_UNL-Sachen-74LS374N
sha1:079E58CEDD3D182E8591A33EE8FAD6F227960838 Mei Nu Quan (Honey Peach) (Sachen) [a1] NES board=UNIF_UNL-Sachen-74LS374N
sha1:E8BB03BA4ABED34FF451A1D086352719BAC6564F San Guo Zhi 2 (Ch) [T+Chi2.3] NES board=MAPPER199;VRAM=8
sha1:8996AEA69D459AC181F1B3F4EF56DEA20FFF0A40 Silva Saga (J) [T+ChS] NES board=MAPPER199;VRAM=8
sha1:3F85C45797E8AA0F161A4BD350BFF5777B3A19A8 Zu Qiu Xiao Jiang (Ch) [f1] NES board=MAPPER195;VRAM=4
sha1:A43A2203F4F7E0FE729CE520FBD75A05206AC9F2 Zu Qiu Xiao Jiang (Ch) NES board=MAPPER195;VRAM=4
sha1:A2F36A9CA3914F1C9184A85E914D7A163DAA135B B 46-in-1 (D1038) [p1][b1] NES board=MAPPER060
sha1:C403AA673405583FD18A0DA5E3E6275786E04128 B 65-in-1 (NT766) [p1][b1] NES board=MAPPER060
sha1:7E46FBE4713E9391293521CF2B852C80DBEBCD7F B 74-in-1 (NT886) [p1][b1] NES board=MAPPER060
sha1:81D72ACD08A6255AE44639D40D6D90C1EFCF61AF B 77-in-1 (NT141) [p1][b1] NES board=MAPPER060
sha1:1C3771B7F116F439D684D04DF792570271C93F86 75 Bingo (Sachen-English) [U] NES board=Sachen_CNROM
sha1:4097D5A814308E39D592466B60B64862699CC22A 2-in-1 - Yuu Yuu + Dragonball Z [p1][!] NES board=MAPPER023_BMC
sha1:4C499A857087E6C121522435786792A2E4105AC1 Fuuun Shaolin Kyo (FDS Conversion) (Unl) [U][!] NES board=UNIF_UNL-LH10;WRAM=8;VRAM=8
sha1:CAAC1E829133851648BA7C7CD6EAA7D26A464999 Metal Fighter (Asia) (Unl) (Sachen) NES board=UNIF_UNL-SA-016-1M;PRG=32;CHR=32;PAD_V=0;PAD_H=1
sha1:B9902886D1739983B315B67B02133E44620E4381 Challenge of the Dragon (Asia) (PAL) (Unl) NES board=MAPPER147;PAD_V=0;PAD_H=1;system=NES-PAL
sha1:0CDE48DB89896946F0C2E78936EA290348994ED5 Pipemania (Australia) (HES) (Unl) NES board=MAPPER113;PRG=32;CHR=16;WRAM=0;VRAM=0
sha1:E843AB3D779D4F0BB1F933D6EE99DAA526EFBCF1 Gaiapolis (Asia) (Unl) NES board=UNIF_NES-TLROM;PRG=128;CHR=256;WRAM=0;VRAM=0
sha1:68ABE1E49C9E9CCEA978A48232432C252E5912C0 Dancing Blocks (Asia) (PAL) (Unl) NES board=MAPPER143;PAD_V=1;PAD_H=0;system=NES-PAL
sha1:B21CFE30197727C1C8E8DB6D28AD696A708F8FF5 Pyramid II (Asia) (PAL) (Unl) NES board=MAPPER146
sha1:7117413766ABC02F3BB767C2CE96065B6F3CBA85 Silent Assault (Asia) (PAL) (Unl) NES board=MAPPER146;PAD_V=0;PAD_H=1;system=NES-PAL
sha1:8898B1E70D561AF31564689E0C942C181C78E55F Rockball (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=64;CHR=64;WRAM=0;VRAM=0;PAD_V=0;PAD_H=1
sha1:6A07B7C55359E1826F670DEDEBF969B9DD2F0A2F Popo Team (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=128;CHR=64;WRAM=0;VRAM=0;PAD_V=0;PAD_H=1
sha1:FCF9FF27F097892148EAEC439AB79BC53164D751 Elite (NTSC Demo) NES board=MAPPER001;PRG=128;CHR=0;WRAM=8;VRAM=8;PAD_V=1;PAD_H=0;BATT=true;system=NES-PAL
sha1:2FB0401EA8249233EFA399F305D83672D5600B4A Sidewinder (Asia) (PAL) (Unl) NES board=MAPPER145;PRG=16;CHR=16;WRAM=8;VRAM=0;PAD_V=1;PAD_H=0;system=NES-PAL
sha1:B3FB53931D34CDB41EFC2677CF7B949B2B84D616 Korean Igo (Korea) (Unl) NES board=UNIF_DREAMTECH01;PRG=144;CHR=0;WRAM=0;VRAM=8;PAD_V=1;PAD_H=0
sha1:358E092952DDAFF9703A75264A6732003952500D Qi Wang - Chinese Chess (Asia) (Unl) NES board=UNIF_UNL-22211;PRG=64;CHR=32;WRAM=0;VRAM=0;PAD_V=1;PAD_H=0
sha1:C282316D30790E41D0A4A0E8949024B980CEE572 Poker Mahjong - Pu Ke Mao Que (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=32;CHR=32;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:82880C2F4A0D18E4CB67324334F2B3B76B818F31 Mahjong World, The - Ma Que Shi Jie (Asia) (NTSC) (Unl) NES board=MAPPER148;PRG=64;CHR=64;WRAM=8;VRAM=0;PAD_V=1;PAD_H=0
sha1:01D7CE2C74046BA6F7BE2C31DADB21A36BDCA117 Mahjong World, The - Ma Que Shi Jie (Asia) (PAL) (Unl) NES board=MAPPER148;PRG=64;CHR=64;WRAM=8;VRAM=0;PAD_V=1;PAD_H=0;system=NES-PAL
sha1:313CDE2F9829B8BC30978BA7C534AFD8896B7BCA Silver Eagle (Asia) (PAL) (Unl) NES board=MAPPER138;PRG=128;CHR=128;WRAM=8;VRAM=0;PAD_V=1;PAD_H=0;system=NES-PAL
sha1:88E6ADE9934EFCDE38D7482FDDE1C00C4C13652D Super Pang II (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=64;CHR=32;WRAM=0;VRAM=0;PAD_V=0;PAD_H=0
sha1:0EA22D830B93AB455F8C1F5E2C4B894EABA30AA3 Super Cartridge Ver 2 - 10 in 1 (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=128;CHR=64;WRAM=0;VRAM=0
sha1:D24D3104E28FD3F428CDBC8AE2D3F4ACA9A69D6F Super Cartridge Ver 3 - 8 in 1 (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=256;CHR=256;WRAM=0;VRAM=0
sha1:1477FD89A26B8F6E3460FE078794D79BEC944C00 Super Cartridge Ver 9 - 3 in 1 (Asia) (Unl) NES board=UNIF_UNL-Sachen-8259A;PRG=256;CHR=256;WRAM=0;VRAM=0
sha1:5239EECED4510EF3D540DD39D629D9E7C5E55251 Taiwan Mahjong - Tai Wan Ma Que 16 (Asia) (Unl) NES board=UNIF_UNL-SA-0036;PRG=32;CHR=16;WRAM=0;VRAM=0;PAD_V=1;PAD_H=0
sha1:C10C526F26273C4A1E180B968665910B74C78B86 Othello (Australia) (Unl) NES board=MAPPER000;PRG=16;CHR=8;WRAM=0;VRAM=0;PAD_V=0;PAD_H=1;system=NES-PAL
sha1:2500B5492ECE1CAFB97881C5A384B0768313BF98 Block Out (USA) (Proto) NES board=MAPPER004;PRG=128;CHR=0;WRAM=8;VRAM=8;PAD_V=0;PAD_H=1
sha1:B1CC3ED04C610BE18742A3FD78A8F27A597F8549 Sidewinder (Australia) (Unl) NES board=MAPPER113;PRG=16;CHR=16;WRAM=0;VRAM=0;PAD_V=1;PAD_H=0
sha1:D4702A831A398107D8F87BC93BD56C4D8CA78F2A Buzz & Waldog (USA) (Proto) (Unl) NES board=MAPPER156;PRG=128;CHR=128;WRAM=8;VRAM=0;PAD_V=1;PAD_H=0
sha1:3C72706AF5998133EC6BE703994C10466A094EAB Xing Ji Zheng Ba (China) (Unl) NES board=MAPPER241;PRG=512;CHR=0;WRAM=8;VRAM=8;PAD_V=1;PAD_H=0
sha1:18DF013DB350787D0F3D83ADE33EA92B097BD54B Mahjan Samit Kabukicho Hen (Asia) (Unl) NES board=MAPPER146;PRG=64;CHR=64;WRAM=0;VRAM=0;PAD_V=1;PAD_H=0
sha1:6AAA5521F91F101448E77C996C9802015578400C Dooly_Bravo_Land NES board=MAPPER002;PRG=256;CHR=0;WRAM=0;VRAM=8;PAD_V=0;PAD_H=1
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;positively good roms which for one reason or another arent in bootgod's DB
;probably missing due to obscurity
sha1:977286FDC76C34A618E2A2D0270641BC36CFE89C Nintendo World Championships 1990 NES board=NES-EVENT;PRG=256;CHR=0;WRAM=8;VRAM=8
;these are from the 2002 konami collection and castlevania at least has a published TAS. presumably these are good, as they came from a PC game
sha1:EC652EE1660E527098102E26A36A8B9B7BB3943F Castlevania (Konami Collection 2002) NES board=NES-UNROM;PRG=128;WRAM=0;VRAM=8;PAD_H=1
sha1:B5C4E5E858113F5AA5E063BC79A12D7F6B856E6C Contra (Konami Collection 2002) NES board=NES-UNROM;PRG=128;WRAM=0;VRAM=8;PAD_H=1
;chinese shit
sha1:BFA31777E077E64AF0E274B5A22B57C6765D36E1 Fan Kong Jing Ying (Unl) (Ch) NES board=MAPPER241;MIR=H
sha1:17473C223453D2D80FCB9DCFA317947287DC5C52 Xing He Zhan Shi (Ch) NES board=MAPPER176
sha1:0B58E16B7FD5ABE62B1D9B1841875582DF5A9195 Ying Lie Qun Xia Zhuan (Ch) NES board=MAPPER192
sha1:27CB8AEAF0EA97A6C69D3D90BC056C5EB61695F6 Dai-2-Ji Super Robot Taisen (Ch) NES board=MAPPER194;VRAM=2
sha1:F5FA7807F2B70ADFE5707D9BF88F90DAC1436DB0 Di 4 Ci Ji Qi Ren Dai Zhan (Ch) NES board=MAPPER074;VRAM=2
sha1:A9887C308C5D0659C3AA45D003A603C9DFFB148A B Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:5084F25F14A61AB2799BD85D363B57B9B494601D Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2
sha1:6143D80047FFC17C752078C622A44C3E0CB7466E B Dong Fang de Chuan Shuo The Hyrule Fantasy (Asia) NES board=MAPPER245
sha1:CEFEBA536DB507DBDEF8A538F9C332D7A75BF613 You Ling Xing Dong (Ch) NES board=MAPPER192;VRAM=4
sha1:DBFCC70CC2DEC7A889429ED542267F0F1BD967BF Ying Xiong Chuan Qi (Ch) NES board=MAPPER224
sha1:FFB4706E49B826C6CDD12E502E8AE94FC9810B7F Monty no Doki Doki Daisassou (FDS Conversion) (Unl) [U][!] NES board=UNIF_UNL-LH32;WRAM=8;VRAM=8;PAD_H=1
sha1:17473C223453D2D80FCB9DCFA317947287DC5C52 Xing He Zhan Shi (China) (Unl) NES board=WAIXINGMAPPER176
;wrong vram info
sha1:32D71DD6C5A8D78A918FE1B9D6D6C4A570D9652D Oeka Kids Anpanman no Hiragana Daisuki (J) NES board=MAPPER096;VRAM=32
sha1:77B887BD5935204C72869365EAF99708E1B13EB1 Super 24-in-1 [U][p1][!] NES board=UNIF_BMC-Super24in1SC03;VRAM=8;
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;it works, so don't laugh
sha1:203523818A348361584CDEBE47AEB860808757FC U Jurassic Boy 2 (Sachen) NES board=NES-TR1ROM;VRAM=8
;wrong mirroring, no bootgod entry
sha1:C1D82F6BE8AF524F951FC7C9D41604E59F9FE92A G Dragon Wars (USA) (Proto) NES board=MAPPER004;PAD_H=0;PAD_V=0
sha1:22FCC2D33F6715D63E04235A0A7CCB0C8DC489C5 Mortal Kombat 3 Extra 60 (Unl) [!] NES board=MK3E60;PAD_H=1;PAD_V=0
sha1:8928F7293C12EE7D3FC90BECC68AE5261802EAA6 AV Super Real Pachinko (Unl) NES board=MAPPER066;PAD_H=0;PAD_V=1
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;mmc3 homebrews that need chip specification
sha1:35C157A921156E47FD3F6573D150F54108D0EDFC Blargg's 5.MMC3_rev_A.nes NES board=MAPPER004;MMC3=MMC3A
sha1:0E971E2CCAD1DEE51A0C305ED38FAFD2E6CA3B41 Blargg's 6.MMC3_rev_B.nes NES board=MAPPER004;MMC3=MMC3B
sha1:F794FDA12D34E611D58E652319ED583AE61B81E0 Blargg's 6-MMC6.nes NES board=MAPPER004_MMC6
sha1:2F29F3DC724027FAD926BC9D4470A481884E42A5 Blargg's 6-MMC6.nes (newer) NES board=MAPPER004_MMC6
sha1:6F3184ACDC7333683D459C7613CA1C235CEAFD3F Aladdin (SuperGame) (Mapper 4) [!] NES board=MAPPER004;MMC3=MMC3A
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;datach stuff
29CC759D5CA214EEFC0CC1C6CE0F8B9111E58124 Datach Battle Rush Build Up Robot Tournament NES board=MAPPER157
87478B635FEFB25FA13C4876E20F505A97426C1B B Datach Dragon Ball Z Gekitou Tenkaichi Budou Kai NES board=MAPPER157
B2089533E05FE95814D0D77F2729944CBEB95988 Datach J League Super Top Players NES board=MAPPER157
EDD7A45A7F27E396B6D686F1861642D509863132 Datach SD Gundam Gundam Wars NES board=MAPPER157
533170D5EB685231CCD27B9C136FFA4FAD68A7B8 Datach Ultraman Club Supokon Fight! NES board=MAPPER157
43315F18A514F0EF1D84EFE9C8D4483B57BA712C Datach Ultraman Club Supokon Fight! NES board=MAPPER157
74218AAE93E4FEBFB2284BCF15811453418A2029 Datach Yuu Yuu Hakusho Bakutou Ankoku Bujutsu Kai NES board=MAPPER157
6F3C65BD945FE13305A7A39D8CD884A5BF314A8F Datach Crayon Shin Chan Ora to Poi Poi NES board=MAPPER157
1218C891DEE878C18D31D38D07CAD5FB06B3B2CE Datach Yuu Yuu akusho Baktutou NES board=MAPPER157
;testrom
sha1:E925A172C29DD46BA385D526F3C317DB039FA2BF mmc1_a12 NES board=NES-SNROM
; ArcadePit hacks
; Why does this one need NesHawk?
sha1:90acbbdfad1465032dfff77175320bab8aa4adb7 H Mike Tyson's Punch-Out!! [Buck Edit] (USA) NES NesHawk

View File

@ -840,9 +840,17 @@ namespace BizHawk.Client.Common
case "A78": case "A78":
var gamedbpath = Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "EMU7800.csv"); var gamedbpath = Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "EMU7800.csv");
nextEmulator = Global.Config.A78_UseEmu7800 if (!VersionInfo.DeveloperBuild)
? nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath) {
: nextEmulator = new A7800Hawk(nextComm, game, rom.RomData, gamedbpath); nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath); // Don't expose A7800Hawk in releases yet
}
else
{
nextEmulator = Global.Config.A78_UseEmu7800
? nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath)
: nextEmulator = new A7800Hawk(nextComm, game, rom.RomData, gamedbpath);
}
break; break;
case "C64": case "C64":
var c64 = new C64(nextComm, Enumerable.Repeat(rom.RomData, 1), rom.GameInfo, GetCoreSettings<C64>(), GetCoreSyncSettings<C64>()); var c64 = new C64(nextComm, Enumerable.Repeat(rom.RomData, 1), rom.GameInfo, GetCoreSettings<C64>(), GetCoreSyncSettings<C64>());

View File

@ -248,6 +248,9 @@ namespace BizHawk.Client.Common
Bind("SNES", "Toggle OBJ 3"), Bind("SNES", "Toggle OBJ 3"),
Bind("SNES", "Toggle OBJ 4"), Bind("SNES", "Toggle OBJ 4"),
Bind("GB", "GB Toggle BG"),
Bind("GB", "GB Toggle Obj"),
Bind("Analog", "Y Up Small", toolTip: "For Virtual Pad"), Bind("Analog", "Y Up Small", toolTip: "For Virtual Pad"),
Bind("Analog", "Y Up Large", toolTip: "For Virtual Pad"), Bind("Analog", "Y Up Large", toolTip: "For Virtual Pad"),
Bind("Analog", "Y Down Small", toolTip: "For Virtual Pad"), Bind("Analog", "Y Down Small", toolTip: "For Virtual Pad"),

View File

@ -116,7 +116,10 @@ namespace BizHawk.Client.Common
["Open"] = 'O', ["Open"] = 'O',
["Close"] = 'C', ["Close"] = 'C',
["Pedal"] = 'P' ["Pedal"] = 'P',
["Next Disk"] = '>',
["Previous Disk"] = '<'
}; };
private readonly Dictionary<string, Dictionary<string, char>> _systemOverrides = new Dictionary<string, Dictionary<string, char>> private readonly Dictionary<string, Dictionary<string, char>> _systemOverrides = new Dictionary<string, Dictionary<string, char>>
@ -300,8 +303,6 @@ namespace BizHawk.Client.Common
["Control"] = 'c' , ["Control"] = 'c' ,
["Shift"] = '^' , ["Shift"] = '^' ,
["Caps Lock"] = 'C' , ["Caps Lock"] = 'C' ,
["Next Disk"] = '>' ,
["Previous Disk"] = '<' ,
["White Apple"] = 'w' , ["White Apple"] = 'w' ,
["Black Apple"] = 'b' , ["Black Apple"] = 'b' ,
["L"] = 'L' , ["L"] = 'L' ,

View File

@ -2,6 +2,7 @@
using BizHawk.Client.Common; using BizHawk.Client.Common;
using BizHawk.Emulation.Common.IEmulatorExtensions; using BizHawk.Emulation.Common.IEmulatorExtensions;
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
namespace BizHawk.Client.EmuHawk namespace BizHawk.Client.EmuHawk
{ {
@ -633,6 +634,28 @@ namespace BizHawk.Client.EmuHawk
SNES_ToggleOBJ4(); SNES_ToggleOBJ4();
break; break;
// GB
case "GB Toggle BG":
if (Emulator is Gameboy)
{
var s = ((Gameboy)Emulator).GetSettings();
s.DisplayBG ^= true;
((Gameboy)Emulator).PutSettings(s);
GlobalWin.OSD.AddMessage("BG toggled " + (s.DisplayBG ? "on" : "off"));
}
break;
case "GB Toggle Obj":
if (Emulator is Gameboy)
{
var s = ((Gameboy)Emulator).GetSettings();
s.DisplayOBJ ^= true;
((Gameboy)Emulator).PutSettings(s);
GlobalWin.OSD.AddMessage("OBJ toggled " + (s.DisplayBG ? "on" : "off"));
}
break;
// Analog // Analog
case "Y Up Small": case "Y Up Small":
GlobalWin.Tools.VirtualPad.BumpAnalogValue(null, Global.Config.Analog_SmallChange); GlobalWin.Tools.VirtualPad.BumpAnalogValue(null, Global.Config.Analog_SmallChange);

View File

@ -2149,7 +2149,7 @@ namespace BizHawk.Client.EmuHawk
"PlayStation", "*.cue;*.ccd;*.m3u", "PlayStation", "*.cue;*.ccd;*.m3u",
"PSX Executables (experimental)", "*.exe", "PSX Executables (experimental)", "*.exe",
"PSF Playstation Sound File", "*.psf;*.minipsf", "PSF Playstation Sound File", "*.psf;*.minipsf",
"Commodore 64 (experimental)", "*.prg; *.d64, *.g64; *.crt; *.tap;%ARCH%", "Commodore 64", "*.prg; *.d64, *.g64; *.crt; *.tap;%ARCH%",
"SID Commodore 64 Music File", "*.sid;%ARCH%", "SID Commodore 64 Music File", "*.sid;%ARCH%",
"Nintendo 64", "*.z64;*.v64;*.n64", "Nintendo 64", "*.z64;*.v64;*.n64",
"WonderSwan", "*.ws;*.wsc;%ARCH%", "WonderSwan", "*.ws;*.wsc;%ARCH%",
@ -2160,7 +2160,7 @@ namespace BizHawk.Client.EmuHawk
} }
return FormatFilter( return FormatFilter(
"Rom Files", "*.nes;*.fds;*.unf;*.sms;*.gg;*.sg;*.gb;*.gbc;*.gba;*.pce;*.sgx;*.bin;*.smd;*.gen;*.md;*.smc;*.sfc;*.a26;*.a78;*.lnx;*.col;*.int;*.rom;*.m3u;*.cue;*.ccd;*.sgb;*.z64;*.v64;*.n64;*.ws;*.wsc;*.xml;*.dsk;*.do;*.po;*.psf;*.ngp;*.ngc;*.minipsf;*.nsf;%ARCH%", "Rom Files", "*.nes;*.fds;*.unf;*.sms;*.gg;*.sg;*.gb;*.gbc;*.gba;*.pce;*.sgx;*.bin;*.smd;*.gen;*.md;*.smc;*.sfc;*.a26;*.a78;*.lnx;*.col;*.int;*.rom;*.m3u;*.cue;*.ccd;*.sgb;*.z64;*.v64;*.n64;*.ws;*.wsc;*.xml;*.dsk;*.do;*.po;*.psf;*.ngp;*.ngc;*.prg;*.d64;*.g64;*.minipsf;*.nsf;%ARCH%",
"Disc Images", "*.cue;*.ccd;*.m3u", "Disc Images", "*.cue;*.ccd;*.m3u",
"NES", "*.nes;*.fds;*.unf;*.nsf;%ARCH%", "NES", "*.nes;*.fds;*.unf;*.nsf;%ARCH%",
"Super NES", "*.smc;*.sfc;*.xml;%ARCH%", "Super NES", "*.smc;*.sfc;*.xml;%ARCH%",
@ -2184,6 +2184,7 @@ namespace BizHawk.Client.EmuHawk
"Apple II", "*.dsk;*.do;*.po;%ARCH%", "Apple II", "*.dsk;*.do;*.po;%ARCH%",
"Virtual Boy", "*.vb;%ARCH%", "Virtual Boy", "*.vb;%ARCH%",
"Neo Geo Pocket", "*.ngp;*.ngc;%ARCH%", "Neo Geo Pocket", "*.ngp;*.ngc;%ARCH%",
"Commodore 64", "*.prg; *.d64, *.g64; *.crt; *.tap;%ARCH%",
"All Files", "*.*"); "All Files", "*.*");
} }
} }

View File

@ -28,211 +28,222 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProfileConfig)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProfileConfig));
this.OkBtn = new System.Windows.Forms.Button(); this.OkBtn = new System.Windows.Forms.Button();
this.CancelBtn = new System.Windows.Forms.Button(); this.CancelBtn = new System.Windows.Forms.Button();
this.ProfileSelectComboBox = new System.Windows.Forms.ComboBox(); this.ProfileSelectComboBox = new System.Windows.Forms.ComboBox();
this.SaveScreenshotStatesCheckBox = new System.Windows.Forms.CheckBox(); this.SaveScreenshotStatesCheckBox = new System.Windows.Forms.CheckBox();
this.SaveLargeScreenshotStatesCheckBox = new System.Windows.Forms.CheckBox(); this.SaveLargeScreenshotStatesCheckBox = new System.Windows.Forms.CheckBox();
this.AllowUDLRCheckBox = new System.Windows.Forms.CheckBox(); this.AllowUDLRCheckBox = new System.Windows.Forms.CheckBox();
this.ProfileDialogHelpTexBox = new System.Windows.Forms.RichTextBox(); this.ProfileDialogHelpTexBox = new System.Windows.Forms.RichTextBox();
this.ProfileOptionsLabel = new System.Windows.Forms.Label(); this.ProfileOptionsLabel = new System.Windows.Forms.Label();
this.CustomProfileOptionsLabel = new System.Windows.Forms.Label(); this.CustomProfileOptionsLabel = new System.Windows.Forms.Label();
this.N64CoreSettingsLabel = new System.Windows.Forms.Label(); this.N64CoreSettingsLabel = new System.Windows.Forms.Label();
this.N64CoreTypeComboBox = new System.Windows.Forms.ComboBox(); this.N64CoreTypeComboBox = new System.Windows.Forms.ComboBox();
this.N64CoreTypeLabel = new System.Windows.Forms.Label(); this.N64CoreTypeLabel = new System.Windows.Forms.Label();
this.OtherOptions = new System.Windows.Forms.Label(); this.OtherOptions = new System.Windows.Forms.Label();
this.AutoCheckForUpdates = new System.Windows.Forms.CheckBox(); this.AutoCheckForUpdates = new System.Windows.Forms.CheckBox();
this.SuspendLayout(); this.SuspendLayout();
// //
// OkBtn // OkBtn
// //
this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.OkBtn.Location = new System.Drawing.Point(290, 337); this.OkBtn.Location = new System.Drawing.Point(290, 302);
this.OkBtn.Name = "OkBtn"; this.OkBtn.Name = "OkBtn";
this.OkBtn.Size = new System.Drawing.Size(60, 23); this.OkBtn.Size = new System.Drawing.Size(60, 23);
this.OkBtn.TabIndex = 0; this.OkBtn.TabIndex = 0;
this.OkBtn.Text = "&OK"; this.OkBtn.Text = "&OK";
this.OkBtn.UseVisualStyleBackColor = true; this.OkBtn.UseVisualStyleBackColor = true;
this.OkBtn.Click += new System.EventHandler(this.OkBtn_Click); this.OkBtn.Click += new System.EventHandler(this.OkBtn_Click);
// //
// CancelBtn // CancelBtn
// //
this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.CancelBtn.Location = new System.Drawing.Point(356, 337); this.CancelBtn.Location = new System.Drawing.Point(356, 302);
this.CancelBtn.Name = "CancelBtn"; this.CancelBtn.Name = "CancelBtn";
this.CancelBtn.Size = new System.Drawing.Size(60, 23); this.CancelBtn.Size = new System.Drawing.Size(60, 23);
this.CancelBtn.TabIndex = 1; this.CancelBtn.TabIndex = 1;
this.CancelBtn.Text = "&Cancel"; this.CancelBtn.Text = "&Cancel";
this.CancelBtn.UseVisualStyleBackColor = true; this.CancelBtn.UseVisualStyleBackColor = true;
this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click); this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click);
// //
// ProfileSelectComboBox // ProfileSelectComboBox
// //
this.ProfileSelectComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.ProfileSelectComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.ProfileSelectComboBox.FormattingEnabled = true; this.ProfileSelectComboBox.FormattingEnabled = true;
this.ProfileSelectComboBox.Items.AddRange(new object[] { this.ProfileSelectComboBox.Items.AddRange(new object[] {
"Casual Gaming", "Casual Gaming",
"Tool-assisted Speedruns", "Tool-assisted Speedruns",
"N64 Tool-assisted Speedruns", "N64 Tool-assisted Speedruns",
"Longplays", "Longplays",
"Custom Profile"}); "Custom Profile"});
this.ProfileSelectComboBox.Location = new System.Drawing.Point(12, 27); this.ProfileSelectComboBox.Location = new System.Drawing.Point(12, 27);
this.ProfileSelectComboBox.Name = "ProfileSelectComboBox"; this.ProfileSelectComboBox.Name = "ProfileSelectComboBox";
this.ProfileSelectComboBox.Size = new System.Drawing.Size(156, 21); this.ProfileSelectComboBox.Size = new System.Drawing.Size(156, 21);
this.ProfileSelectComboBox.TabIndex = 4; this.ProfileSelectComboBox.TabIndex = 4;
// //
// SaveScreenshotStatesCheckBox // SaveScreenshotStatesCheckBox
// //
this.SaveScreenshotStatesCheckBox.AutoSize = true; this.SaveScreenshotStatesCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.SaveScreenshotStatesCheckBox.Location = new System.Drawing.Point(12, 103); this.SaveScreenshotStatesCheckBox.AutoSize = true;
this.SaveScreenshotStatesCheckBox.Name = "SaveScreenshotStatesCheckBox"; this.SaveScreenshotStatesCheckBox.Location = new System.Drawing.Point(12, 88);
this.SaveScreenshotStatesCheckBox.Size = new System.Drawing.Size(166, 17); this.SaveScreenshotStatesCheckBox.Name = "SaveScreenshotStatesCheckBox";
this.SaveScreenshotStatesCheckBox.TabIndex = 6; this.SaveScreenshotStatesCheckBox.Size = new System.Drawing.Size(166, 17);
this.SaveScreenshotStatesCheckBox.Text = "Save Screenshot With States"; this.SaveScreenshotStatesCheckBox.TabIndex = 6;
this.SaveScreenshotStatesCheckBox.UseVisualStyleBackColor = true; this.SaveScreenshotStatesCheckBox.Text = "Save Screenshot With States";
this.SaveScreenshotStatesCheckBox.Visible = false; this.SaveScreenshotStatesCheckBox.UseVisualStyleBackColor = true;
this.SaveScreenshotStatesCheckBox.MouseHover += new System.EventHandler(this.SaveScreenshotStatesCheckBox_MouseHover); this.SaveScreenshotStatesCheckBox.Visible = false;
// this.SaveScreenshotStatesCheckBox.MouseHover += new System.EventHandler(this.SaveScreenshotStatesCheckBox_MouseHover);
// SaveLargeScreenshotStatesCheckBox //
// // SaveLargeScreenshotStatesCheckBox
this.SaveLargeScreenshotStatesCheckBox.AutoSize = true; //
this.SaveLargeScreenshotStatesCheckBox.Location = new System.Drawing.Point(12, 126); this.SaveLargeScreenshotStatesCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.SaveLargeScreenshotStatesCheckBox.Name = "SaveLargeScreenshotStatesCheckBox"; this.SaveLargeScreenshotStatesCheckBox.AutoSize = true;
this.SaveLargeScreenshotStatesCheckBox.Size = new System.Drawing.Size(196, 17); this.SaveLargeScreenshotStatesCheckBox.Location = new System.Drawing.Point(12, 111);
this.SaveLargeScreenshotStatesCheckBox.TabIndex = 7; this.SaveLargeScreenshotStatesCheckBox.Name = "SaveLargeScreenshotStatesCheckBox";
this.SaveLargeScreenshotStatesCheckBox.Text = "Save Large Screenshot With States"; this.SaveLargeScreenshotStatesCheckBox.Size = new System.Drawing.Size(196, 17);
this.SaveLargeScreenshotStatesCheckBox.UseVisualStyleBackColor = true; this.SaveLargeScreenshotStatesCheckBox.TabIndex = 7;
this.SaveLargeScreenshotStatesCheckBox.Visible = false; this.SaveLargeScreenshotStatesCheckBox.Text = "Save Large Screenshot With States";
this.SaveLargeScreenshotStatesCheckBox.MouseHover += new System.EventHandler(this.SaveLargeScreenshotStatesCheckBox_MouseHover); this.SaveLargeScreenshotStatesCheckBox.UseVisualStyleBackColor = true;
// this.SaveLargeScreenshotStatesCheckBox.Visible = false;
// AllowUDLRCheckBox this.SaveLargeScreenshotStatesCheckBox.MouseHover += new System.EventHandler(this.SaveLargeScreenshotStatesCheckBox_MouseHover);
// //
this.AllowUDLRCheckBox.AutoSize = true; // AllowUDLRCheckBox
this.AllowUDLRCheckBox.Location = new System.Drawing.Point(12, 149); //
this.AllowUDLRCheckBox.Name = "AllowUDLRCheckBox"; this.AllowUDLRCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.AllowUDLRCheckBox.Size = new System.Drawing.Size(111, 17); this.AllowUDLRCheckBox.AutoSize = true;
this.AllowUDLRCheckBox.TabIndex = 8; this.AllowUDLRCheckBox.Location = new System.Drawing.Point(12, 134);
this.AllowUDLRCheckBox.Text = "Allow U+D or L+R"; this.AllowUDLRCheckBox.Name = "AllowUDLRCheckBox";
this.AllowUDLRCheckBox.UseVisualStyleBackColor = true; this.AllowUDLRCheckBox.Size = new System.Drawing.Size(111, 17);
this.AllowUDLRCheckBox.Visible = false; this.AllowUDLRCheckBox.TabIndex = 8;
this.AllowUDLRCheckBox.MouseHover += new System.EventHandler(this.AllowUDLRCheckBox_MouseHover); this.AllowUDLRCheckBox.Text = "Allow U+D or L+R";
// this.AllowUDLRCheckBox.UseVisualStyleBackColor = true;
// ProfileDialogHelpTexBox this.AllowUDLRCheckBox.Visible = false;
// this.AllowUDLRCheckBox.MouseHover += new System.EventHandler(this.AllowUDLRCheckBox_MouseHover);
this.ProfileDialogHelpTexBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); //
this.ProfileDialogHelpTexBox.Location = new System.Drawing.Point(218, 12); // ProfileDialogHelpTexBox
this.ProfileDialogHelpTexBox.Name = "ProfileDialogHelpTexBox"; //
this.ProfileDialogHelpTexBox.ReadOnly = true; this.ProfileDialogHelpTexBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
this.ProfileDialogHelpTexBox.Size = new System.Drawing.Size(198, 154); | System.Windows.Forms.AnchorStyles.Right)));
this.ProfileDialogHelpTexBox.TabIndex = 2; this.ProfileDialogHelpTexBox.Location = new System.Drawing.Point(218, 12);
this.ProfileDialogHelpTexBox.Text = resources.GetString("ProfileDialogHelpTexBox.Text"); this.ProfileDialogHelpTexBox.Name = "ProfileDialogHelpTexBox";
// this.ProfileDialogHelpTexBox.ReadOnly = true;
// ProfileOptionsLabel this.ProfileDialogHelpTexBox.Size = new System.Drawing.Size(198, 200);
// this.ProfileDialogHelpTexBox.TabIndex = 2;
this.ProfileOptionsLabel.AutoSize = true; this.ProfileDialogHelpTexBox.Text = resources.GetString("ProfileDialogHelpTexBox.Text");
this.ProfileOptionsLabel.Location = new System.Drawing.Point(9, 9); //
this.ProfileOptionsLabel.Name = "ProfileOptionsLabel"; // ProfileOptionsLabel
this.ProfileOptionsLabel.Size = new System.Drawing.Size(75, 13); //
this.ProfileOptionsLabel.TabIndex = 3; this.ProfileOptionsLabel.AutoSize = true;
this.ProfileOptionsLabel.Text = "Profile Options"; this.ProfileOptionsLabel.Location = new System.Drawing.Point(9, 9);
// this.ProfileOptionsLabel.Name = "ProfileOptionsLabel";
// CustomProfileOptionsLabel this.ProfileOptionsLabel.Size = new System.Drawing.Size(75, 13);
// this.ProfileOptionsLabel.TabIndex = 3;
this.CustomProfileOptionsLabel.AutoSize = true; this.ProfileOptionsLabel.Text = "Profile Options";
this.CustomProfileOptionsLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); //
this.CustomProfileOptionsLabel.Location = new System.Drawing.Point(9, 85); // CustomProfileOptionsLabel
this.CustomProfileOptionsLabel.Name = "CustomProfileOptionsLabel"; //
this.CustomProfileOptionsLabel.RightToLeft = System.Windows.Forms.RightToLeft.No; this.CustomProfileOptionsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.CustomProfileOptionsLabel.Size = new System.Drawing.Size(113, 13); this.CustomProfileOptionsLabel.AutoSize = true;
this.CustomProfileOptionsLabel.TabIndex = 5; this.CustomProfileOptionsLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.CustomProfileOptionsLabel.Text = "Custom Profile Options"; this.CustomProfileOptionsLabel.Location = new System.Drawing.Point(9, 70);
this.CustomProfileOptionsLabel.Visible = false; this.CustomProfileOptionsLabel.Name = "CustomProfileOptionsLabel";
// this.CustomProfileOptionsLabel.RightToLeft = System.Windows.Forms.RightToLeft.No;
// N64CoreSettingsLabel this.CustomProfileOptionsLabel.Size = new System.Drawing.Size(113, 13);
// this.CustomProfileOptionsLabel.TabIndex = 5;
this.N64CoreSettingsLabel.AutoSize = true; this.CustomProfileOptionsLabel.Text = "Custom Profile Options";
this.N64CoreSettingsLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.CustomProfileOptionsLabel.Visible = false;
this.N64CoreSettingsLabel.Location = new System.Drawing.Point(9, 188); //
this.N64CoreSettingsLabel.Name = "N64CoreSettingsLabel"; // N64CoreSettingsLabel
this.N64CoreSettingsLabel.Size = new System.Drawing.Size(93, 13); //
this.N64CoreSettingsLabel.TabIndex = 9; this.N64CoreSettingsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.N64CoreSettingsLabel.Text = "N64 Core Settings"; this.N64CoreSettingsLabel.AutoSize = true;
this.N64CoreSettingsLabel.Visible = false; this.N64CoreSettingsLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
// this.N64CoreSettingsLabel.Location = new System.Drawing.Point(9, 173);
// N64CoreTypeComboBox this.N64CoreSettingsLabel.Name = "N64CoreSettingsLabel";
// this.N64CoreSettingsLabel.Size = new System.Drawing.Size(93, 13);
this.N64CoreTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.N64CoreSettingsLabel.TabIndex = 9;
this.N64CoreTypeComboBox.FormattingEnabled = true; this.N64CoreSettingsLabel.Text = "N64 Core Settings";
this.N64CoreTypeComboBox.Items.AddRange(new object[] { this.N64CoreSettingsLabel.Visible = false;
//
// N64CoreTypeComboBox
//
this.N64CoreTypeComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.N64CoreTypeComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.N64CoreTypeComboBox.FormattingEnabled = true;
this.N64CoreTypeComboBox.Items.AddRange(new object[] {
"Pure Interpreter", "Pure Interpreter",
"Interpreter", "Interpreter",
"Dynarec"}); "Dynarec"});
this.N64CoreTypeComboBox.Location = new System.Drawing.Point(79, 206); this.N64CoreTypeComboBox.Location = new System.Drawing.Point(79, 191);
this.N64CoreTypeComboBox.Name = "N64CoreTypeComboBox"; this.N64CoreTypeComboBox.Name = "N64CoreTypeComboBox";
this.N64CoreTypeComboBox.Size = new System.Drawing.Size(99, 21); this.N64CoreTypeComboBox.Size = new System.Drawing.Size(99, 21);
this.N64CoreTypeComboBox.TabIndex = 11; this.N64CoreTypeComboBox.TabIndex = 11;
this.N64CoreTypeComboBox.Visible = false; this.N64CoreTypeComboBox.Visible = false;
// //
// N64CoreTypeLabel // N64CoreTypeLabel
// //
this.N64CoreTypeLabel.AutoSize = true; this.N64CoreTypeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.N64CoreTypeLabel.Location = new System.Drawing.Point(9, 209); this.N64CoreTypeLabel.AutoSize = true;
this.N64CoreTypeLabel.Name = "N64CoreTypeLabel"; this.N64CoreTypeLabel.Location = new System.Drawing.Point(9, 194);
this.N64CoreTypeLabel.Size = new System.Drawing.Size(56, 13); this.N64CoreTypeLabel.Name = "N64CoreTypeLabel";
this.N64CoreTypeLabel.TabIndex = 10; this.N64CoreTypeLabel.Size = new System.Drawing.Size(56, 13);
this.N64CoreTypeLabel.Text = "Core Type"; this.N64CoreTypeLabel.TabIndex = 10;
this.N64CoreTypeLabel.Visible = false; this.N64CoreTypeLabel.Text = "Core Type";
// this.N64CoreTypeLabel.Visible = false;
// OtherOptions //
// // OtherOptions
this.OtherOptions.AutoSize = true; //
this.OtherOptions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.OtherOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.OtherOptions.Location = new System.Drawing.Point(9, 250); this.OtherOptions.AutoSize = true;
this.OtherOptions.Name = "OtherOptions"; this.OtherOptions.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Underline, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.OtherOptions.Size = new System.Drawing.Size(72, 13); this.OtherOptions.Location = new System.Drawing.Point(9, 261);
this.OtherOptions.TabIndex = 12; this.OtherOptions.Name = "OtherOptions";
this.OtherOptions.Text = "Other Options"; this.OtherOptions.Size = new System.Drawing.Size(72, 13);
// this.OtherOptions.TabIndex = 12;
// AutoCheckForUpdates this.OtherOptions.Text = "Other Options";
// //
this.AutoCheckForUpdates.AutoSize = true; // AutoCheckForUpdates
this.AutoCheckForUpdates.Location = new System.Drawing.Point(12, 268); //
this.AutoCheckForUpdates.Name = "AutoCheckForUpdates"; this.AutoCheckForUpdates.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.AutoCheckForUpdates.Size = new System.Drawing.Size(345, 17); this.AutoCheckForUpdates.AutoSize = true;
this.AutoCheckForUpdates.TabIndex = 13; this.AutoCheckForUpdates.Location = new System.Drawing.Point(12, 279);
this.AutoCheckForUpdates.Text = "Automatically check for and notify me of newer versions of BizHawk"; this.AutoCheckForUpdates.Name = "AutoCheckForUpdates";
this.AutoCheckForUpdates.UseVisualStyleBackColor = true; this.AutoCheckForUpdates.Size = new System.Drawing.Size(345, 17);
// this.AutoCheckForUpdates.TabIndex = 13;
// ProfileConfig this.AutoCheckForUpdates.Text = "Automatically check for and notify me of newer versions of BizHawk";
// this.AutoCheckForUpdates.UseVisualStyleBackColor = true;
this.AcceptButton = this.OkBtn; //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); // ProfileConfig
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; //
this.CancelButton = this.CancelBtn; this.AcceptButton = this.OkBtn;
this.ClientSize = new System.Drawing.Size(428, 372); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.Controls.Add(this.AutoCheckForUpdates); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.OtherOptions); this.CancelButton = this.CancelBtn;
this.Controls.Add(this.N64CoreTypeLabel); this.ClientSize = new System.Drawing.Size(428, 337);
this.Controls.Add(this.N64CoreTypeComboBox); this.Controls.Add(this.AutoCheckForUpdates);
this.Controls.Add(this.N64CoreSettingsLabel); this.Controls.Add(this.OtherOptions);
this.Controls.Add(this.CustomProfileOptionsLabel); this.Controls.Add(this.N64CoreTypeLabel);
this.Controls.Add(this.ProfileOptionsLabel); this.Controls.Add(this.N64CoreTypeComboBox);
this.Controls.Add(this.ProfileDialogHelpTexBox); this.Controls.Add(this.N64CoreSettingsLabel);
this.Controls.Add(this.AllowUDLRCheckBox); this.Controls.Add(this.CustomProfileOptionsLabel);
this.Controls.Add(this.SaveLargeScreenshotStatesCheckBox); this.Controls.Add(this.ProfileOptionsLabel);
this.Controls.Add(this.SaveScreenshotStatesCheckBox); this.Controls.Add(this.ProfileDialogHelpTexBox);
this.Controls.Add(this.ProfileSelectComboBox); this.Controls.Add(this.AllowUDLRCheckBox);
this.Controls.Add(this.CancelBtn); this.Controls.Add(this.SaveLargeScreenshotStatesCheckBox);
this.Controls.Add(this.OkBtn); this.Controls.Add(this.SaveScreenshotStatesCheckBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Controls.Add(this.ProfileSelectComboBox);
this.Name = "ProfileConfig"; this.Controls.Add(this.CancelBtn);
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; this.Controls.Add(this.OkBtn);
this.Text = "Profile Config"; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Load += new System.EventHandler(this.ProfileConfig_Load); this.MinimumSize = new System.Drawing.Size(315, 280);
this.ResumeLayout(false); this.Name = "ProfileConfig";
this.PerformLayout(); this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Profile Config";
this.Load += new System.EventHandler(this.ProfileConfig_Load);
this.ResumeLayout(false);
this.PerformLayout();
} }

View File

@ -168,7 +168,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64
public void Flush() public void Flush()
{ {
Sid.Flush(true); Sid.Flush(false);
} }
// ----------------------------------------- // -----------------------------------------

View File

@ -44,8 +44,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
{ {
Flush(true); Flush(true);
nsamp = _outputBufferIndex; _outputBuffer = new short[_outputBufferIndex * 2];
for (int i = 0; i < _outputBufferIndex; i++) for (int i = 0; i < _outputBufferIndex; i++)
{ {
_mixer = _outputBuffer_not_filtered[i] + _outputBuffer_filtered[i]; _mixer = _outputBuffer_not_filtered[i] + _outputBuffer_filtered[i];
@ -53,9 +52,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
_mixer = (_mixer * _volume) >> 4; _mixer = (_mixer * _volume) >> 4;
_mixer -= _volume << 8; _mixer -= _volume << 8;
//Console.Write(_mixer);
//Console.Write(" ");
if (_mixer > 0x7FFF) if (_mixer > 0x7FFF)
{ {
_mixer = 0x7FFF; _mixer = 0x7FFF;
@ -65,20 +61,15 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
{ {
_mixer = -0x8000; _mixer = -0x8000;
} }
/*
if (_mixer < 0)
{
_mixer = 0;
}
*/
_outputBuffer[i * 2] = (short)_mixer;
_outputBuffer[i * 2 + 1] = (short)_mixer;
_outputBuffer[i * 2] = unchecked((short)_mixer);
_outputBuffer[i * 2 + 1] = unchecked((short)_mixer);
} }
//Console.WriteLine(" ");
//Console.WriteLine(" ");
samples = _outputBuffer; samples = _outputBuffer;
nsamp = _outputBufferIndex;
last_filtered_value = _outputBuffer_filtered[_outputBufferIndex - 1];
_outputBufferIndex = 0; _outputBufferIndex = 0;
filter_index = 0; filter_index = 0;
} }

View File

@ -38,7 +38,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
private bool _filterSelectLoPass; private bool _filterSelectLoPass;
private bool _filterSelectHiPass; private bool _filterSelectHiPass;
private int _mixer; private int _mixer;
private readonly short[] _outputBuffer; private short[] _outputBuffer;
private int[] _outputBuffer_filtered; private int[] _outputBuffer_filtered;
private int[] _outputBuffer_not_filtered; private int[] _outputBuffer_not_filtered;
private int _outputBufferIndex; private int _outputBufferIndex;
@ -91,7 +91,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
for (var i = 0; i < 3; i++) for (var i = 0; i < 3; i++)
_filterEnable[i] = false; _filterEnable[i] = false;
_outputBuffer = new short[sampleRate];
_outputBuffer_filtered = new int[sampleRate]; _outputBuffer_filtered = new int[sampleRate];
_outputBuffer_not_filtered = new int[sampleRate]; _outputBuffer_not_filtered = new int[sampleRate];
} }
@ -129,7 +128,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
public void Flush(bool flushFilter) public void Flush(bool flushFilter)
{ {
while (_cachedCycles > 0) while (_cachedCycles > 0)
{ {
_cachedCycles--; _cachedCycles--;
@ -197,7 +195,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
} }
} }
//here we need to apply filtering to the samples and add them back to the buffer //here we need to apply filtering to the samples and add them back to the buffer
if (flushFilter) if (flushFilter)
{ {
if (_filterEnable[0] | _filterEnable[1] | _filterEnable[2]) if (_filterEnable[0] | _filterEnable[1] | _filterEnable[2])
@ -218,20 +215,21 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
} }
filter_index = _outputBufferIndex; filter_index = _outputBufferIndex;
last_filtered_value = _outputBuffer_filtered[_outputBufferIndex - 1]; if (_outputBufferIndex>0)
last_filtered_value = _outputBuffer_filtered[_outputBufferIndex - 1];
} }
// if the filter is off, keep updating the filter index to the most recent Flush // if the filter is off, keep updating the filter index to the most recent Flush
if (!(_filterEnable[0] | _filterEnable[1] | _filterEnable[2])) if (!(_filterEnable[0] | _filterEnable[1] | _filterEnable[2]))
{ {
filter_index = _outputBufferIndex; filter_index = _outputBufferIndex;
} }
} }
public void filter_operator() public void filter_operator()
{ {
double loc_filterFrequency = (double)(_filterFrequency << 2) + 500; double loc_filterFrequency = (double)(_filterFrequency << 2) + 750;
double attenuation; double attenuation;
@ -260,24 +258,13 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
temp_buffer[(int)i] = _outputBuffer_filtered[(int)Math.Floor((i / (nsamp_2-1) * (nsamp - 1))) + filter_index]; temp_buffer[(int)i] = _outputBuffer_filtered[(int)Math.Floor((i / (nsamp_2-1) * (nsamp - 1))) + filter_index];
} }
/*
for (int i = 0; i< nsamp; i++)
{
Console.Write(_outputBuffer_filtered[(int)i + filter_index]);
Console.Write(" ");
}
Console.WriteLine(" ");
Console.WriteLine("After");
*/
// now we have everything we need to perform the FFT // now we have everything we need to perform the FFT
fft.ComputeForward(temp_buffer); fft.ComputeForward(temp_buffer);
// for each element in the frequency list, attenuate it according to the specs // for each element in the frequency list, attenuate it according to the specs
for (int i = 0; i < nsamp_2; i++) for (int i = 1; i < nsamp_2; i++)
{ {
double freq = (i + 1) * ((double)(880*50)/nsamp); double freq = i * ((double)(880*50)/nsamp);
// add resonance effect // add resonance effect
// let's assume that frequencies near the peak are doubled in strength at max resonance // let's assume that frequencies near the peak are doubled in strength at max resonance
@ -296,10 +283,10 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
} }
// High pass filter // High pass filter
if (_filterSelectHiPass && freq < _filterFrequency) if (_filterSelectHiPass && freq < loc_filterFrequency)
{ {
//attenuated at 12db per octave //attenuated at 12db per octave
attenuation = Math.Log(freq / _filterFrequency, 2); attenuation = Math.Log(loc_filterFrequency / freq, 2);
attenuation = 12 * attenuation; attenuation = 12 * attenuation;
temp_buffer[i] = temp_buffer[i] * Math.Pow(2, -attenuation / 10); temp_buffer[i] = temp_buffer[i] * Math.Pow(2, -attenuation / 10);
} }
@ -308,13 +295,13 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
if (_filterSelectBandPass) if (_filterSelectBandPass)
{ {
//attenuated at 6db per octave //attenuated at 6db per octave
attenuation = Math.Log(freq / _filterFrequency, 2); attenuation = Math.Log(freq / loc_filterFrequency, 2);
attenuation = 6 * attenuation; attenuation = 6 * attenuation;
temp_buffer[i] = temp_buffer[i] * Math.Pow(2, -Math.Abs(attenuation) / 10); temp_buffer[i] = temp_buffer[i] * Math.Pow(2, -Math.Abs(attenuation) / 10);
} }
} }
// now transform back into time space and reassemble the attenuated frequency components // now transform back into time space and reassemble the attenuated frequency components
fft.ComputeReverse(temp_buffer); fft.ComputeReverse(temp_buffer);
@ -335,14 +322,7 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
if (i<16) if (i<16)
_outputBuffer_filtered[(int)i + filter_index] = (int)((last_filtered_value * Math.Pow(15 - i,1) + _outputBuffer_filtered[(int)i + filter_index] * Math.Pow(i,1))/ Math.Pow(15,1)); _outputBuffer_filtered[(int)i + filter_index] = (int)((last_filtered_value * Math.Pow(15 - i,1) + _outputBuffer_filtered[(int)i + filter_index] * Math.Pow(i,1))/ Math.Pow(15,1));
//Console.Write(_outputBuffer_filtered[(int)i + filter_index]);
//Console.Write(" ");
} }
//Console.WriteLine(" ");
//Console.WriteLine("Before");
} }
// ---------------------------------- // ----------------------------------

View File

@ -1,5 +1,6 @@
using BizHawk.Common; using BizHawk.Common;
using BizHawk.Common.NumberExtensions; using BizHawk.Common.NumberExtensions;
using System;
namespace BizHawk.Emulation.Cores.Nintendo.NES namespace BizHawk.Emulation.Cores.Nintendo.NES
{ {
@ -23,12 +24,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
} }
prg_bank_mask_8k = (Cart.prg_size / 8) - 1; prg_bank_mask_8k = (Cart.prg_size / 8) - 1;
// not a maskable size (BF=10111111)
// so just set mask to FF and hope for the best
if (Cart.prg_size==192)
{
prg_bank_mask_8k = 0xFF;
}
prg_banks_8k[0] = 0; prg_banks_8k[0] = 0;
prg_banks_8k[1] = 1; prg_banks_8k[1] = 1;
prg_banks_8k[2] = 2; prg_banks_8k[2] = 2;
prg_banks_8k[3] = 3; prg_banks_8k[3] = 3;
ApplyMemoryMapMask(prg_bank_mask_8k, prg_banks_8k); ApplyMemoryMapMask(prg_bank_mask_8k, prg_banks_8k);
SetMirrorType(EMirrorType.Horizontal);
return true; return true;
} }
@ -53,7 +63,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
if (mode==2) if (mode==2)
prg_low_val = prg_low ? 1 : 0; prg_low_val = prg_low ? 1 : 0;
bool mirror = value.Bit(6); bool mirror = value.Bit(6);
SetMirrorType(!mirror ? EMirrorType.Horizontal : EMirrorType.Vertical); SetMirrorType(mirror ? EMirrorType.Horizontal : EMirrorType.Vertical);
switch(mode) switch(mode)
{ {

View File

@ -108,7 +108,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
case "MAPPER069": case "MAPPER069":
break; break;
case "SUNSOFT-5A": //Batman (J) case "SUNSOFT-5A": //Batman (J)
AssertPrg(128); AssertChr(128); AssertWram(0); AssertVram(0); AssertBattery(false); AssertPrg(128); AssertChr(128,256); AssertWram(0,8); AssertVram(0); AssertBattery(false);
break; break;
case "SUNSOFT-FME-7": //Barcode World (J) case "SUNSOFT-FME-7": //Barcode World (J)
AssertPrg(128, 256); AssertChr(128, 256); AssertWram(0, 8); AssertVram(0); AssertPrg(128, 256); AssertChr(128, 256); AssertWram(0, 8); AssertVram(0);

View File

@ -425,6 +425,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
NES.VS_dips[7] = (byte)(NES.SyncSettings.VSDipswitches.Dip_Switch_8 ? 1 : 0); NES.VS_dips[7] = (byte)(NES.SyncSettings.VSDipswitches.Dip_Switch_8 ? 1 : 0);
break; break;
case "MAPPER001": case "MAPPER001":
case "NES-SIEPROM":
// there's no way to define PRG oversize for mapper001 due to how the MMC1 regs work // there's no way to define PRG oversize for mapper001 due to how the MMC1 regs work
// so 512KB must mean SUROM or SXROM. SUROM is more common, so we try that // so 512KB must mean SUROM or SXROM. SUROM is more common, so we try that
if (Cart.prg_size > 256) if (Cart.prg_size > 256)

View File

@ -25,13 +25,14 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
public IEnumerable<string> AvailableCpus public IEnumerable<string> AvailableCpus
{ {
get { yield return "M68000"; } get { yield return "M68000"; }
} }
public string Disassemble(MemoryDomain m, uint addr, out int length) public string Disassemble(MemoryDomain m, uint addr,out int length)
{ {
_disassemblerInstance.ReadWord = (a) => (short)m.PeekUshort(a, m.EndianType == MemoryDomain.Endian.Big); const uint mask = 0xFFFFFF;
_disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a); _disassemblerInstance.ReadWord = (a) => (short)m.PeekUshort(a & mask, m.EndianType == MemoryDomain.Endian.Big);
_disassemblerInstance.ReadLong = (a) => (int)m.PeekUint(a, m.EndianType == MemoryDomain.Endian.Big); _disassemblerInstance.ReadByte = (a) => (sbyte)m.PeekByte(a & mask);
_disassemblerInstance.ReadLong = (a) => (int)m.PeekUint(a & mask, m.EndianType == MemoryDomain.Endian.Big);
var info = _disassemblerInstance.Disassemble((int)addr); var info = _disassemblerInstance.Disassemble((int)addr);
length = info.Length; length = info.Length;

View File

@ -48,6 +48,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Sega.gpgx
mm.Add(new MemoryDomainIntPtrSwap16(name, MemoryDomain.Endian.Big, area, size, name != "MD CART" && name != "CD BOOT ROM")); mm.Add(new MemoryDomainIntPtrSwap16(name, MemoryDomain.Endian.Big, area, size, name != "MD CART" && name != "CD BOOT ROM"));
} }
} }
//it's gross for this not to be the full 32bits.
//Uhh I mean, I guess the bus is physically smaller.. but the cpu's view of it is larger...
//So... I guess no matter what we do, some badness will propagate. This is probably least bad.
//Anyway, the disassembler, for instance, must have been masked down to size, since code can run from FFxxxxxxxx...
var m68Bus = new MemoryDomainDelegate("M68K BUS", 0x1000000, MemoryDomain.Endian.Big, var m68Bus = new MemoryDomainDelegate("M68K BUS", 0x1000000, MemoryDomain.Endian.Big,
delegate (long addr) delegate (long addr)
{ {

View File

@ -3,13 +3,18 @@
#include "table.cpp" #include "table.cpp"
#include "disassembler.cpp" #include "disassembler.cpp"
uint8 CPU::op_fetch() {
cdlInfo.currFlags = eCDLog_Flags_ExecOperand;
uint8 opcode = op_read(r[PC]++);
cdlInfo.currFlags = eCDLog_Flags_CPUData;
return opcode;
}
void CPU::op_xx() { void CPU::op_xx() {
} }
void CPU::op_cb() { void CPU::op_cb() {
cdlInfo.currFlags = eCDLog_Flags_ExecOperand; uint8 opcode = op_fetch();
uint8 opcode = op_read(r[PC]++);
cdlInfo.currFlags = eCDLog_Flags_CPUData;
(this->*opcode_table_cb[opcode])(); (this->*opcode_table_cb[opcode])();
} }
@ -20,7 +25,7 @@ template<unsigned x, unsigned y> void CPU::op_ld_r_r() {
} }
template<unsigned x> void CPU::op_ld_r_n() { template<unsigned x> void CPU::op_ld_r_n() {
r[x] = op_read(r[PC]++); r[x] = op_fetch();
} }
template<unsigned x> void CPU::op_ld_r_hl() { template<unsigned x> void CPU::op_ld_r_hl() {
@ -32,7 +37,7 @@ template<unsigned x> void CPU::op_ld_hl_r() {
} }
void CPU::op_ld_hl_n() { void CPU::op_ld_hl_n() {
op_write(r[HL], op_read(r[PC]++)); op_write(r[HL], op_fetch());
} }
template<unsigned x> void CPU::op_ld_a_rr() { template<unsigned x> void CPU::op_ld_a_rr() {
@ -40,8 +45,8 @@ template<unsigned x> void CPU::op_ld_a_rr() {
} }
void CPU::op_ld_a_nn() { void CPU::op_ld_a_nn() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
r[A] = op_read((hi << 8) | (lo << 0)); r[A] = op_read((hi << 8) | (lo << 0));
} }
@ -50,17 +55,17 @@ template<unsigned x> void CPU::op_ld_rr_a() {
} }
void CPU::op_ld_nn_a() { void CPU::op_ld_nn_a() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
op_write((hi << 8) | (lo << 0), r[A]); op_write((hi << 8) | (lo << 0), r[A]);
} }
void CPU::op_ld_a_ffn() { void CPU::op_ld_a_ffn() {
r[A] = op_read(0xff00 + op_read(r[PC]++)); r[A] = op_read(0xff00 + op_fetch());
} }
void CPU::op_ld_ffn_a() { void CPU::op_ld_ffn_a() {
op_write(0xff00 + op_read(r[PC]++), r[A]); op_write(0xff00 + op_fetch(), r[A]);
} }
void CPU::op_ld_a_ffc() { void CPU::op_ld_a_ffc() {
@ -94,13 +99,13 @@ void CPU::op_ldd_a_hl() {
//16-bit load commands //16-bit load commands
template<unsigned x> void CPU::op_ld_rr_nn() { template<unsigned x> void CPU::op_ld_rr_nn() {
r[x] = op_read(r[PC]++) << 0; r[x] = op_fetch() << 0;
r[x] |= op_read(r[PC]++) << 8; r[x] |= op_fetch() << 8;
} }
void CPU::op_ld_nn_sp() { void CPU::op_ld_nn_sp() {
uint16 addr = op_read(r[PC]++) << 0; uint16 addr = op_fetch() << 0;
addr |= op_read(r[PC]++) << 8; addr |= op_fetch() << 8;
op_write(addr + 0, r[SP] >> 0); op_write(addr + 0, r[SP] >> 0);
op_write(addr + 1, r[SP] >> 8); op_write(addr + 1, r[SP] >> 8);
} }
@ -134,7 +139,7 @@ void CPU::opi_add_a(uint8 x) {
} }
template<unsigned x> void CPU::op_add_a_r() { opi_add_a(r[x]); } template<unsigned x> void CPU::op_add_a_r() { opi_add_a(r[x]); }
void CPU::op_add_a_n() { opi_add_a(op_read(r[PC]++)); } void CPU::op_add_a_n() { opi_add_a(op_fetch()); }
void CPU::op_add_a_hl() { opi_add_a(op_read(r[HL])); } void CPU::op_add_a_hl() { opi_add_a(op_read(r[HL])); }
void CPU::opi_adc_a(uint8 x) { void CPU::opi_adc_a(uint8 x) {
@ -148,7 +153,7 @@ void CPU::opi_adc_a(uint8 x) {
} }
template<unsigned x> void CPU::op_adc_a_r() { opi_adc_a(r[x]); } template<unsigned x> void CPU::op_adc_a_r() { opi_adc_a(r[x]); }
void CPU::op_adc_a_n() { opi_adc_a(op_read(r[PC]++)); } void CPU::op_adc_a_n() { opi_adc_a(op_fetch()); }
void CPU::op_adc_a_hl() { opi_adc_a(op_read(r[HL])); } void CPU::op_adc_a_hl() { opi_adc_a(op_read(r[HL])); }
void CPU::opi_sub_a(uint8 x) { void CPU::opi_sub_a(uint8 x) {
@ -162,7 +167,7 @@ void CPU::opi_sub_a(uint8 x) {
} }
template<unsigned x> void CPU::op_sub_a_r() { opi_sub_a(r[x]); } template<unsigned x> void CPU::op_sub_a_r() { opi_sub_a(r[x]); }
void CPU::op_sub_a_n() { opi_sub_a(op_read(r[PC]++)); } void CPU::op_sub_a_n() { opi_sub_a(op_fetch()); }
void CPU::op_sub_a_hl() { opi_sub_a(op_read(r[HL])); } void CPU::op_sub_a_hl() { opi_sub_a(op_read(r[HL])); }
void CPU::opi_sbc_a(uint8 x) { void CPU::opi_sbc_a(uint8 x) {
@ -176,7 +181,7 @@ void CPU::opi_sbc_a(uint8 x) {
} }
template<unsigned x> void CPU::op_sbc_a_r() { opi_sbc_a(r[x]); } template<unsigned x> void CPU::op_sbc_a_r() { opi_sbc_a(r[x]); }
void CPU::op_sbc_a_n() { opi_sbc_a(op_read(r[PC]++)); } void CPU::op_sbc_a_n() { opi_sbc_a(op_fetch()); }
void CPU::op_sbc_a_hl() { opi_sbc_a(op_read(r[HL])); } void CPU::op_sbc_a_hl() { opi_sbc_a(op_read(r[HL])); }
void CPU::opi_and_a(uint8 x) { void CPU::opi_and_a(uint8 x) {
@ -188,7 +193,7 @@ void CPU::opi_and_a(uint8 x) {
} }
template<unsigned x> void CPU::op_and_a_r() { opi_and_a(r[x]); } template<unsigned x> void CPU::op_and_a_r() { opi_and_a(r[x]); }
void CPU::op_and_a_n() { opi_and_a(op_read(r[PC]++)); } void CPU::op_and_a_n() { opi_and_a(op_fetch()); }
void CPU::op_and_a_hl() { opi_and_a(op_read(r[HL])); } void CPU::op_and_a_hl() { opi_and_a(op_read(r[HL])); }
void CPU::opi_xor_a(uint8 x) { void CPU::opi_xor_a(uint8 x) {
@ -200,7 +205,7 @@ void CPU::opi_xor_a(uint8 x) {
} }
template<unsigned x> void CPU::op_xor_a_r() { opi_xor_a(r[x]); } template<unsigned x> void CPU::op_xor_a_r() { opi_xor_a(r[x]); }
void CPU::op_xor_a_n() { opi_xor_a(op_read(r[PC]++)); } void CPU::op_xor_a_n() { opi_xor_a(op_fetch()); }
void CPU::op_xor_a_hl() { opi_xor_a(op_read(r[HL])); } void CPU::op_xor_a_hl() { opi_xor_a(op_read(r[HL])); }
void CPU::opi_or_a(uint8 x) { void CPU::opi_or_a(uint8 x) {
@ -212,7 +217,7 @@ void CPU::opi_or_a(uint8 x) {
} }
template<unsigned x> void CPU::op_or_a_r() { opi_or_a(r[x]); } template<unsigned x> void CPU::op_or_a_r() { opi_or_a(r[x]); }
void CPU::op_or_a_n() { opi_or_a(op_read(r[PC]++)); } void CPU::op_or_a_n() { opi_or_a(op_fetch()); }
void CPU::op_or_a_hl() { opi_or_a(op_read(r[HL])); } void CPU::op_or_a_hl() { opi_or_a(op_read(r[HL])); }
void CPU::opi_cp_a(uint8 x) { void CPU::opi_cp_a(uint8 x) {
@ -225,7 +230,7 @@ void CPU::opi_cp_a(uint8 x) {
} }
template<unsigned x> void CPU::op_cp_a_r() { opi_cp_a(r[x]); } template<unsigned x> void CPU::op_cp_a_r() { opi_cp_a(r[x]); }
void CPU::op_cp_a_n() { opi_cp_a(op_read(r[PC]++)); } void CPU::op_cp_a_n() { opi_cp_a(op_fetch()); }
void CPU::op_cp_a_hl() { opi_cp_a(op_read(r[HL])); } void CPU::op_cp_a_hl() { opi_cp_a(op_read(r[HL])); }
template<unsigned x> void CPU::op_inc_r() { template<unsigned x> void CPU::op_inc_r() {
@ -307,7 +312,7 @@ template<unsigned x> void CPU::op_dec_rr() {
void CPU::op_add_sp_n() { void CPU::op_add_sp_n() {
op_io(); op_io();
op_io(); op_io();
signed n = (int8)op_read(r[PC]++); signed n = (int8)op_fetch();
r.f.z = 0; r.f.z = 0;
r.f.n = 0; r.f.n = 0;
r.f.h = ((r[SP] & 0x0f) + (n & 0x0f)) > 0x0f; r.f.h = ((r[SP] & 0x0f) + (n & 0x0f)) > 0x0f;
@ -317,7 +322,7 @@ void CPU::op_add_sp_n() {
void CPU::op_ld_hl_sp_n() { void CPU::op_ld_hl_sp_n() {
op_io(); op_io();
signed n = (int8)op_read(r[PC]++); signed n = (int8)op_fetch();
r.f.z = 0; r.f.z = 0;
r.f.n = 0; r.f.n = 0;
r.f.h = ((r[SP] & 0x0f) + (n & 0x0f)) > 0x0f; r.f.h = ((r[SP] & 0x0f) + (n & 0x0f)) > 0x0f;
@ -596,8 +601,8 @@ void CPU::op_ei() {
//jump commands //jump commands
void CPU::op_jp_nn() { void CPU::op_jp_nn() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
r[PC] = (hi << 8) | (lo << 0); r[PC] = (hi << 8) | (lo << 0);
op_io(); op_io();
} }
@ -607,8 +612,8 @@ void CPU::op_jp_hl() {
} }
template<unsigned x, bool y> void CPU::op_jp_f_nn() { template<unsigned x, bool y> void CPU::op_jp_f_nn() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
if(r.f[x] == y) { if(r.f[x] == y) {
r[PC] = (hi << 8) | (lo << 0); r[PC] = (hi << 8) | (lo << 0);
op_io(); op_io();
@ -616,13 +621,13 @@ template<unsigned x, bool y> void CPU::op_jp_f_nn() {
} }
void CPU::op_jr_n() { void CPU::op_jr_n() {
int8 n = op_read(r[PC]++); int8 n = op_fetch();
r[PC] += n; r[PC] += n;
op_io(); op_io();
} }
template<unsigned x, bool y> void CPU::op_jr_f_n() { template<unsigned x, bool y> void CPU::op_jr_f_n() {
int8 n = op_read(r[PC]++); int8 n = op_fetch();
if(r.f[x] == y) { if(r.f[x] == y) {
r[PC] += n; r[PC] += n;
op_io(); op_io();
@ -630,8 +635,8 @@ template<unsigned x, bool y> void CPU::op_jr_f_n() {
} }
void CPU::op_call_nn() { void CPU::op_call_nn() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
op_write(--r[SP], r[PC] >> 8); op_write(--r[SP], r[PC] >> 8);
op_write(--r[SP], r[PC] >> 0); op_write(--r[SP], r[PC] >> 0);
r[PC] = (hi << 8) | (lo << 0); r[PC] = (hi << 8) | (lo << 0);
@ -639,8 +644,8 @@ void CPU::op_call_nn() {
} }
template<unsigned x, bool y> void CPU::op_call_f_nn() { template<unsigned x, bool y> void CPU::op_call_f_nn() {
uint8 lo = op_read(r[PC]++); uint8 lo = op_fetch();
uint8 hi = op_read(r[PC]++); uint8 hi = op_fetch();
if(r.f[x] == y) { if(r.f[x] == y) {
op_write(--r[SP], r[PC] >> 8); op_write(--r[SP], r[PC] >> 8);
op_write(--r[SP], r[PC] >> 0); op_write(--r[SP], r[PC] >> 0);

View File

@ -1,145 +1,146 @@
#include "registers.hpp" #include "registers.hpp"
void (CPU::*opcode_table[256])(); void (CPU::*opcode_table[256])();
void (CPU::*opcode_table_cb[256])(); void (CPU::*opcode_table_cb[256])();
void initialize_opcode_table(); void initialize_opcode_table();
void op_xx(); void op_xx();
void op_cb(); void op_cb();
uint8 op_fetch();
//8-bit load commands
template<unsigned x, unsigned y> void op_ld_r_r(); //8-bit load commands
template<unsigned x> void op_ld_r_n(); template<unsigned x, unsigned y> void op_ld_r_r();
template<unsigned x> void op_ld_r_hl(); template<unsigned x> void op_ld_r_n();
template<unsigned x> void op_ld_hl_r(); template<unsigned x> void op_ld_r_hl();
void op_ld_hl_n(); template<unsigned x> void op_ld_hl_r();
template<unsigned x> void op_ld_a_rr(); void op_ld_hl_n();
void op_ld_a_nn(); template<unsigned x> void op_ld_a_rr();
template<unsigned x> void op_ld_rr_a(); void op_ld_a_nn();
void op_ld_nn_a(); template<unsigned x> void op_ld_rr_a();
void op_ld_a_ffn(); void op_ld_nn_a();
void op_ld_ffn_a(); void op_ld_a_ffn();
void op_ld_a_ffc(); void op_ld_ffn_a();
void op_ld_ffc_a(); void op_ld_a_ffc();
void op_ldi_hl_a(); void op_ld_ffc_a();
void op_ldi_a_hl(); void op_ldi_hl_a();
void op_ldd_hl_a(); void op_ldi_a_hl();
void op_ldd_a_hl(); void op_ldd_hl_a();
void op_ldd_a_hl();
//16-bit load commands
template<unsigned x> void op_ld_rr_nn(); //16-bit load commands
void op_ld_nn_sp(); template<unsigned x> void op_ld_rr_nn();
void op_ld_sp_hl(); void op_ld_nn_sp();
template<unsigned x> void op_push_rr(); void op_ld_sp_hl();
template<unsigned x> void op_pop_rr(); template<unsigned x> void op_push_rr();
template<unsigned x> void op_pop_rr();
//8-bit arithmetic commands
void opi_add_a(uint8 x); //8-bit arithmetic commands
template<unsigned x> void op_add_a_r(); void opi_add_a(uint8 x);
void op_add_a_n(); template<unsigned x> void op_add_a_r();
void op_add_a_hl(); void op_add_a_n();
void op_add_a_hl();
void opi_adc_a(uint8 x);
template<unsigned x> void op_adc_a_r(); void opi_adc_a(uint8 x);
void op_adc_a_n(); template<unsigned x> void op_adc_a_r();
void op_adc_a_hl(); void op_adc_a_n();
void op_adc_a_hl();
void opi_sub_a(uint8 x);
template<unsigned x> void op_sub_a_r(); void opi_sub_a(uint8 x);
void op_sub_a_n(); template<unsigned x> void op_sub_a_r();
void op_sub_a_hl(); void op_sub_a_n();
void op_sub_a_hl();
void opi_sbc_a(uint8 x);
template<unsigned x> void op_sbc_a_r(); void opi_sbc_a(uint8 x);
void op_sbc_a_n(); template<unsigned x> void op_sbc_a_r();
void op_sbc_a_hl(); void op_sbc_a_n();
void op_sbc_a_hl();
void opi_and_a(uint8 x);
template<unsigned x> void op_and_a_r(); void opi_and_a(uint8 x);
void op_and_a_n(); template<unsigned x> void op_and_a_r();
void op_and_a_hl(); void op_and_a_n();
void op_and_a_hl();
void opi_xor_a(uint8 x);
template<unsigned x> void op_xor_a_r(); void opi_xor_a(uint8 x);
void op_xor_a_n(); template<unsigned x> void op_xor_a_r();
void op_xor_a_hl(); void op_xor_a_n();
void op_xor_a_hl();
void opi_or_a(uint8 x);
template<unsigned x> void op_or_a_r(); void opi_or_a(uint8 x);
void op_or_a_n(); template<unsigned x> void op_or_a_r();
void op_or_a_hl(); void op_or_a_n();
void op_or_a_hl();
void opi_cp_a(uint8 x);
template<unsigned x> void op_cp_a_r(); void opi_cp_a(uint8 x);
void op_cp_a_n(); template<unsigned x> void op_cp_a_r();
void op_cp_a_hl(); void op_cp_a_n();
void op_cp_a_hl();
template<unsigned x> void op_inc_r();
void op_inc_hl(); template<unsigned x> void op_inc_r();
template<unsigned x> void op_dec_r(); void op_inc_hl();
void op_dec_hl(); template<unsigned x> void op_dec_r();
void op_daa(); void op_dec_hl();
void op_cpl(); void op_daa();
void op_cpl();
//16-bit arithmetic commands
template<unsigned x> void op_add_hl_rr(); //16-bit arithmetic commands
template<unsigned x> void op_inc_rr(); template<unsigned x> void op_add_hl_rr();
template<unsigned x> void op_dec_rr(); template<unsigned x> void op_inc_rr();
void op_add_sp_n(); template<unsigned x> void op_dec_rr();
void op_ld_hl_sp_n(); void op_add_sp_n();
void op_ld_hl_sp_n();
//rotate/shift commands
void op_rlca(); //rotate/shift commands
void op_rla(); void op_rlca();
void op_rrca(); void op_rla();
void op_rra(); void op_rrca();
template<unsigned x> void op_rlc_r(); void op_rra();
void op_rlc_hl(); template<unsigned x> void op_rlc_r();
template<unsigned x> void op_rl_r(); void op_rlc_hl();
void op_rl_hl(); template<unsigned x> void op_rl_r();
template<unsigned x> void op_rrc_r(); void op_rl_hl();
void op_rrc_hl(); template<unsigned x> void op_rrc_r();
template<unsigned x> void op_rr_r(); void op_rrc_hl();
void op_rr_hl(); template<unsigned x> void op_rr_r();
template<unsigned x> void op_sla_r(); void op_rr_hl();
void op_sla_hl(); template<unsigned x> void op_sla_r();
template<unsigned x> void op_swap_r(); void op_sla_hl();
void op_swap_hl(); template<unsigned x> void op_swap_r();
template<unsigned x> void op_sra_r(); void op_swap_hl();
void op_sra_hl(); template<unsigned x> void op_sra_r();
template<unsigned x> void op_srl_r(); void op_sra_hl();
void op_srl_hl(); template<unsigned x> void op_srl_r();
void op_srl_hl();
//single-bit commands
template<unsigned b, unsigned x> void op_bit_n_r(); //single-bit commands
template<unsigned b> void op_bit_n_hl(); template<unsigned b, unsigned x> void op_bit_n_r();
template<unsigned b, unsigned x> void op_set_n_r(); template<unsigned b> void op_bit_n_hl();
template<unsigned b> void op_set_n_hl(); template<unsigned b, unsigned x> void op_set_n_r();
template<unsigned b, unsigned x> void op_res_n_r(); template<unsigned b> void op_set_n_hl();
template<unsigned b> void op_res_n_hl(); template<unsigned b, unsigned x> void op_res_n_r();
template<unsigned b> void op_res_n_hl();
//control commands
void op_ccf(); //control commands
void op_scf(); void op_ccf();
void op_nop(); void op_scf();
void op_halt(); void op_nop();
void op_stop(); void op_halt();
void op_di(); void op_stop();
void op_ei(); void op_di();
void op_ei();
//jump commands
void op_jp_nn(); //jump commands
void op_jp_hl(); void op_jp_nn();
template<unsigned x, bool y> void op_jp_f_nn(); void op_jp_hl();
void op_jr_n(); template<unsigned x, bool y> void op_jp_f_nn();
template<unsigned x, bool y> void op_jr_f_n(); void op_jr_n();
void op_call_nn(); template<unsigned x, bool y> void op_jr_f_n();
template<unsigned x, bool y> void op_call_f_nn(); void op_call_nn();
void op_ret(); template<unsigned x, bool y> void op_call_f_nn();
template<unsigned x, bool y> void op_ret_f(); void op_ret();
void op_reti(); template<unsigned x, bool y> void op_ret_f();
template<unsigned n> void op_rst_n(); void op_reti();
template<unsigned n> void op_rst_n();
//disassembler.cpp
string disassemble(uint16 pc); //disassembler.cpp
string disassemble_opcode(uint16 pc); string disassemble(uint16 pc);
string disassemble_opcode_cb(uint16 pc); string disassemble_opcode(uint16 pc);
string disassemble_opcode_cb(uint16 pc);

View File

@ -1,90 +1,96 @@
//70224 clocks/frame //70224 clocks/frame
// 456 clocks/scanline // 456 clocks/scanline
// 154 scanlines/frame // 154 scanlines/frame
#ifdef CPU_CPP #ifdef CPU_CPP
#include "opcode.cpp" #include "opcode.cpp"
void CPU::add_clocks(unsigned clocks) { void CPU::add_clocks(unsigned clocks) {
system.clocks_executed += clocks; system.clocks_executed += clocks;
if(system.sgb()) scheduler.exit(Scheduler::ExitReason::StepEvent);
auto flags = cdlInfo.currFlags;
status.clock += clocks;
if(status.clock >= 4 * 1024 * 1024) { if(system.sgb()) scheduler.exit(Scheduler::ExitReason::StepEvent);
status.clock -= 4 * 1024 * 1024; cdlInfo.currFlags = flags;
cartridge.mbc3.second();
} status.clock += clocks;
if(status.clock >= 4 * 1024 * 1024) {
//4MHz / N(hz) - 1 = mask status.clock -= 4 * 1024 * 1024;
if((status.clock & 15) == 0) timer_262144hz(); cartridge.mbc3.second();
if((status.clock & 63) == 0) timer_65536hz(); }
if((status.clock & 255) == 0) timer_16384hz();
if((status.clock & 511) == 0) timer_8192hz(); //4MHz / N(hz) - 1 = mask
if((status.clock & 1023) == 0) timer_4096hz(); if((status.clock & 15) == 0) timer_262144hz();
if((status.clock & 63) == 0) timer_65536hz();
lcd.clock -= clocks * lcd.frequency; if((status.clock & 255) == 0) timer_16384hz();
if(lcd.clock <= 0) co_switch(scheduler.active_thread = lcd.thread); if((status.clock & 511) == 0) timer_8192hz();
if((status.clock & 1023) == 0) timer_4096hz();
apu.clock -= clocks * apu.frequency;
if(apu.clock <= 0) co_switch(scheduler.active_thread = apu.thread); lcd.clock -= clocks * lcd.frequency;
} if(lcd.clock <= 0) co_switch(scheduler.active_thread = lcd.thread);
cdlInfo.currFlags = flags;
void CPU::timer_262144hz() {
if(status.timer_enable && status.timer_clock == 1) { apu.clock -= clocks * apu.frequency;
if(++status.tima == 0) { if(apu.clock <= 0) co_switch(scheduler.active_thread = apu.thread);
status.tima = status.tma; cdlInfo.currFlags = flags;
interrupt_raise(Interrupt::Timer); }
}
} void CPU::timer_262144hz() {
} if(status.timer_enable && status.timer_clock == 1) {
if(++status.tima == 0) {
void CPU::timer_65536hz() { status.tima = status.tma;
if(status.timer_enable && status.timer_clock == 2) { interrupt_raise(Interrupt::Timer);
if(++status.tima == 0) { }
status.tima = status.tma; }
interrupt_raise(Interrupt::Timer); }
}
} void CPU::timer_65536hz() {
} if(status.timer_enable && status.timer_clock == 2) {
if(++status.tima == 0) {
void CPU::timer_16384hz() { status.tima = status.tma;
if(status.timer_enable && status.timer_clock == 3) { interrupt_raise(Interrupt::Timer);
if(++status.tima == 0) { }
status.tima = status.tma; }
interrupt_raise(Interrupt::Timer); }
}
} void CPU::timer_16384hz() {
if(status.timer_enable && status.timer_clock == 3) {
status.div++; if(++status.tima == 0) {
} status.tima = status.tma;
interrupt_raise(Interrupt::Timer);
void CPU::timer_8192hz() { }
if(status.serial_transfer && status.serial_clock) { }
if(--status.serial_bits == 0) {
status.serial_transfer = 0; status.div++;
interrupt_raise(Interrupt::Serial); }
}
} void CPU::timer_8192hz() {
} if(status.serial_transfer && status.serial_clock) {
if(--status.serial_bits == 0) {
void CPU::timer_4096hz() { status.serial_transfer = 0;
if(status.timer_enable && status.timer_clock == 0) { interrupt_raise(Interrupt::Serial);
if(++status.tima == 0) { }
status.tima = status.tma; }
interrupt_raise(Interrupt::Timer); }
}
} void CPU::timer_4096hz() {
} if(status.timer_enable && status.timer_clock == 0) {
if(++status.tima == 0) {
void CPU::hblank() { status.tima = status.tma;
if(status.dma_mode == 1 && status.dma_length) { interrupt_raise(Interrupt::Timer);
for(unsigned n = 0; n < 16; n++) { }
bus.write(status.dma_target++, bus.read(status.dma_source++)); }
add_clocks(4); }
}
status.dma_length -= 16; void CPU::hblank() {
} if(status.dma_mode == 1 && status.dma_length) {
} for(unsigned n = 0; n < 16; n++) {
bus.write(status.dma_target++, bus.read(status.dma_source++));
#endif add_clocks(4);
}
status.dma_length -= 16;
}
}
#endif