diff --git a/Assets/gamedb/gamedb_a7800.txt b/Assets/gamedb/gamedb_a7800.txt
index 19214c873a..b9c363689f 100644
--- a/Assets/gamedb/gamedb_a7800.txt
+++ b/Assets/gamedb/gamedb_a7800.txt
@@ -4,7 +4,11 @@
;2 = Super Game with extra ROM
;3 = F-18 Hornet Mapper
;4 = Double Dragon and Rampage
+;5 = Rescue on Fractulus
+;6 = Dev Cart
+md5:0D9452D4DB4D1E1CF843F4F10605EB7D Dev Cart A78 NTSC=true;board=0
+md5:31FBCF03946E804FC2D77CCA5D61C928 Mode Test A78 NTSC=true;board=0
md5:91041AADD1700A7A4076F4005F2C362F Diagnostics A78 NTSC=true;board=0
md5:89E7B20E7E0C629D00C6CA68949A216F Test Rom A78 NTSC=true;board=0
md5:4332c24e4f3bc72e7fe1b77adf66c2b7 3D Asteroids A78 NTSC=true;board=0
@@ -124,7 +128,7 @@ md5:865457e0e0f48253b08f77b9e18f93b2 Pole Position II A78 PAL=true;board=0
md5:66e7230f7ef9d14db82d76b06b241bc0 Q-bert A78 NTSC=true;board=0
md5:ac03806cef2558fc795a7d5d8dba7bc0 Rampage A78 NTSC=true;board=4
md5:383ed9bd1efb9b6cb3388a777678c928 Realsports Baseball A78 NTSC=true;board=1
-md5:8f7eb10ad0bd75474abf0c6c36c08486 Rescue on Fractalus A78 NTSC=true;board=0
+md5:8f7eb10ad0bd75474abf0c6c36c08486 Rescue on Fractalus A78 NTSC=true;board=5
md5:43525a0405184875c2ecfd0196886a34 Rip Off A78 NTSC=true;board=0
md5:106b409c6f4c219b1a3b3d099ead3b2b Rip Off A78 PAL=true;board=0
md5:505f05e7f161f62ccd749dab3c4a204b Robot Finds Kitten A78 NTSC=true;board=0
@@ -136,8 +140,8 @@ md5:1ee26fc6b06b4c9ba74931914b7e719d Scramble A78 PAL=true;board=0
md5:65fe82f419f6583a0f9a736242cb303d Scramble A78 PAL=true;board=0
md5:980c35ae9625773a450aa7ef51751c04 Scrapyard Dog A78 NTSC=true;board=1
md5:53db322c201323fe2ca8f074c0a2bf86 Scrapyard Dog A78 PAL=true;board=1
-md5:b697d9c2d1b9f6cb21041286d1bbfa7f Sentinel A78 NTSC=true;board=1;Pokey=true
-md5:5469b4de0608f23a5c4f98f331c9e75f Sentinel A78 PAL=true;board=1;Pokey=true
+md5:b697d9c2d1b9f6cb21041286d1bbfa7f Sentinel A78 NTSC=true;board=1
+md5:5469b4de0608f23a5c4f98f331c9e75f Sentinel A78 PAL=true;board=1
md5:2d643ac548c40e58c99d0fe433ba4ba0 Sirius A78 NTSC=true;board=1;RAM=8
md5:a84c1b2300fbfbf21b1c02387f613dad Space Duel A78 PAL=true;board=0
md5:771cb4609347657f63e6f0eb26036e35 Space Duel A78 NTSC=true;board=0
diff --git a/Assets/gamedb/gamedb_nes.txt b/Assets/gamedb/gamedb_nes.txt
index ca66c75427..3f453f100d 100644
--- a/Assets/gamedb/gamedb_nes.txt
+++ b/Assets/gamedb/gamedb_nes.txt
@@ -310,6 +310,7 @@ sha1:203523818A348361584CDEBE47AEB860808757FC U Jurassic Boy 2 (Sachen) NES boa
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
+sha1:3FB806A4A5625920935880BB5C9545EF23250C33 Don Doko Don 2 (J) [a1] NES board=TAITO-TC0190FMC+PAL16R4;WRAM=0;VRAM=0
;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------
;mmc3 homebrews that need chip specification
diff --git a/Assets/gamedb/gamedb_sega_md.txt b/Assets/gamedb/gamedb_sega_md.txt
index efa82521f5..6854ef14ed 100644
--- a/Assets/gamedb/gamedb_sega_md.txt
+++ b/Assets/gamedb/gamedb_sega_md.txt
@@ -5873,4 +5873,2374 @@ FB8B10729078DE36A736BC4DECAE97D6 B Virtua Racing Deluxe (32X) (E) [b1] GEN 32X=
B3788F861803D21CFA0E559695835F44 WWF RAW (32X) (W) [!] GEN 32X=true pico
8456CAE9975BA6CB041C4EF2BE54B1A1 WWF Wrestlemania Arcade (32X) (W) [!] GEN 32X=true pico
FEF67ECDF8C5369BA4ACAFAC99C768B5 XOR Palette Demo by DevSter (32X) (PD) GEN 32X=true pico
-BD32A5E46D0159DC88CB31EA4BD9D899 Zaxxon's Motherbase 2000 (32X) (JU) [!] GEN 32X=true pico
\ No newline at end of file
+BD32A5E46D0159DC88CB31EA4BD9D899 Zaxxon's Motherbase 2000 (32X) (JU) [!] GEN 32X=true pico
+
+; ************ Sega Megadrive - Roms in GoodGens 3.21 that were not in the original db creation ************
+
+930322AF0382479B08065077906F15BCE206D720 D 128X32 Big Logo Test by Local H (New) (PD) GEN
+CA2C74AD767EC306EEA1D9C70C9F0A98AF646473 D 128X32 Big Logo Test by Local H (Old) (PD) GEN
+DAF021282D12370D7B4423F9FCF357ADA439F498 B 16 Ton (SN) (GNKO) (J) [b1] GEN
+6061D5347D58DB67E979EF9FC850A61E4602B331 2006 Playoff Edition JN25 (NHL 94 Hack) GEN
+93C996FA7E8B0ECB04534D4A823EA7F23883A68E D 240p Test Suite v1.06 by Artemio Urbina (PD) GEN
+F7F1BF8FE7C599A18E96E9E5FD09D689ADB29D31 D 240p Test Suite v1.07 by Artemio Urbina (PD) GEN
+5AA76CC7AA2A6F80CABE35361AD80C9750ADECF3 D 260 Byte MegaDrive Demo by TascoDLX (v08-2009) (PD) GEN
+7BCA60E7EC6D84610BB7B3C360D4643F319C681C D 60 Coloured Bars (PD) GEN
+6EC1FAAF89CFD10205A81640B5EBDCB472AF90A4 D 60 Coloured Wavy Bars (PD) GEN
+5276BCF4B44A1BF8806896BA1960272585C00435 D 68kbench by Sik (PD) GEN
+9F6361FECBEEE1C703B5C988D10A5CB09751AD2A AAAHH!!! Real Monsters (E) [!] GEN
+2FADAA8A0EF1ED71864DFEF5A9BAD77263DE9ECD D Abbaye 003-c Demo by FlemTeam (PD) GEN
+AEE3C48D863FCC3A7C148224D7BB4F48C27FBE45 B Addams Family Values (E) (M3) [b1] GEN
+6B7D24B63D3EE2C18844291C520638A129A9000B Addams Family, The (UE) [T+Bra100%_Tradu-GameX] GEN
+EDAAA8D6A0EC91ABF60251845250D45501D9D5A4 Addams Family, The (UE) [T+Rus_NewGame] GEN
+15B35815AD19C24BA0BF322AC2F2A13A2F6496C7 Addams Family, The (UE) [T+Rus_NewGame]_ GEN
+5CE2970E6F60EA225B836C4C3F454963D41B7A48 Addams Family, The (UE) [T-Bra30%_Tradu-GameX] GEN
+9EF510152E8C210A01A85D7F6087D537C029A16A Addams Family, The (UE) [T-Bra50%_Tradu-GameX] GEN
+13988D9DF1F32E8BCA4EAF86D75ABA666A8C5C73 Advanced Daisenryaku (J) (REV01) [T+Eng95%_NebelwurferHQ] GEN
+6160FD2B45BE920C68B31E2A88C27A967DDE6D84 Adventures of Batman and Robin, The (JU) (Prototype - Apr 26, 1995) GEN
+1A2BECE0E3F66DCDD44B555CE45DEDA510B8CA3A Adventures of Batman and Robin, The (JU) (Prototype - Apr 27, 1995) GEN
+2E41A3B9C64D93DE1D05C830F6D8471EDFC2090C Adventures of Batman and Robin, The (JU) (Prototype - Apr 28, 1995) GEN
+10467CC121AFD7D74699B3AB6B7243B370C09E47 Adventures of Batman and Robin, The (JU) (Prototype - May 01, 1995) GEN
+27B06143CA3D31504E75429610ACC34BE4BBE514 Adventures of Batman and Robin, The (Prototype - Apr 10, 1995) GEN
+901FE36018B031CE6A226795CEB7FD868B28EAD6 Adventures of Batman and Robin, The (Prototype - Apr 11, 1995) GEN
+5CB7D30F81DE290DA7CD5298A38ACCCB7AB1F9C7 Adventures of Batman and Robin, The (Prototype - Apr 18, 1995) GEN
+BB7ED12F68A7DF4956891338D6DB0F29ACB0F5DF Adventures of Batman and Robin, The (U) (Prototype - Apr 06, 1995) GEN
+F76E8669934668ABFE739C043A40CBF8ED24E78A Adventures of Batman and Robin, The (U) (Prototype - Apr 19, 1995) GEN
+531973851BB71A589BE3544952CF0F7694F8D072 Adventures of Batman and Robin, The (U) (Prototype - Apr 21, 1995) GEN
+97C91DE74E744AB0EB52BDCCEFFB79467A9C5474 Adventures of Batman and Robin, The (U) (Prototype - Apr 22, 1995) GEN
+1DFD9A4FD06CBE6E28B2519E84B303DBE03A9674 Adventures of Batman and Robin, The (U) (Prototype - Apr 24, 1995) GEN
+64B2F50428230EB857F3024ACD5BAD217D524DBF Adventures of Batman and Robin, The (U) [T+Fre_Corrigo] GEN
+E504704B2BB37D628BE5F32116880EB1D3362262 Adventures of Batman and Robin, The (U) [T+Rus_NewGame] GEN
+0A5D7403108D3D7BF4059B119F0852125A83E69D Adventures of Batman and Robin, The (U) [t1] (99 Lives, No Weapons) GEN
+3B759EFA4071852A8A772443DC4AC3C7E9AEC8D9 Adventures of Sky (beta) (S2 Hack) GEN
+1540F0378B8A359D40A771A3F67DA84C19746E2E D Adventures of Stickboy V1c by Devster (PD) GEN
+F6E5BBA7254F7F73A007F234F1001DDCB0B62484 Adventurous Boy (Ch) GEN
+105316AD1EB7E3386CBD3FFA2D9D841796193E65 Aero the Acro-Bat (E) (Prototype) GEN
+0A4C99A31E507BCEE5B955E4BF3773F4DED827B6 Aero the Acro-Bat (E) GEN
+32238A32C5CC6A35183DDFF2A3758413B1ADAFE9 Aero the Acro-Bat 2 (U) [T+Rus] GEN
+11049F28AAF023E3CA786475B985A011578B8F2B Aerobiz Supersonic (Ch) [a1] GEN
+CB9CD84C0833060437F2BC7920297A589C7BFB33 Aerobiz Supersonic (Ch) GEN
+1A8ACADC11B89461C0AAB70F1D5F7F1433753D7A After Burner II (UE) [T+Bra100%_eduardo] GEN
+7202309A3E6E4ECAA9C6BB2674941320E71FF045 After Burner II (UE) [T+Rus] GEN
+C9449D793E59018746DF01763845F88A4C500D41 After Burner II (UE) [T+Rus_Pedro] GEN
+A9A1DFC13520BFFE87CC28E006D894553DDA8472 After Burner II (UE) [T-Bra_eduardo] GEN
+5F2D9EE7945C50C64B9664148BEFCB2F6ED48D54 Agent Hugo - Environment at Risk (R) GEN
+4FCA2E9D85534CC33E580FF83C5E7E8A71B35D62 Agent Hugo - In the World of Dinosaurs (R) GEN
+B6F8E5E2971DB0B224EB8F47928E3FDBE0E5F897 Alex Kidd in the Enchanted Castle (UE) (REV02) (VC) GEN
+A7C6E7D6B3DF26A3CA381A170AD06EFAB0043C97 Alien Soldier (E) [f3] GEN
+4DAE2CB7C9ADDDD0AB829A8C62EBA05205FB521B Alien Soldier (E) [T+Rus] GEN
+F4563BB381F6D59DF76658BE1A3F934094384D02 Alien Soldier (E) [T+Rus_bybyc9lc9l] GEN
+B5EB96494211F1A6E11C1D71B7797774FB44A1A2 Alien Soldier (E) [t1] GEN
+293D99573EE909D8BE6EBF42460562010A26B468 Alien Storm (W) [T+Rus] GEN
+672EA3F10B0CC980B99A91BD5B57E423A69EB836 D Alpha Flight Intro 1 (PD) GEN
+16916069D6B5DBE8B10CDCDDF8C087EA430F3AE1 Amy in Sonic 2 by E-122-Psi Bugfix (S2 Hack) GEN
+A015E02F267EA222D4075C121B6576659BA7ADC4 Amy in Sonic 2 by E-122-Psi Rev1.0 (S2 Hack) GEN
+0FD0D70A40B886E06E9177E321A59FB857FE43C2 Amy in Sonic 2 by E-122-Psi Rev1.1 (S2 Hack) GEN
+F895D47C60E6049280989B360C2B8BE5E7A4D5CD Amy Rose in Sonic (S1 Hack) GEN
+4626481E4524FEFBD9FBCAF84B382CE82CBA5486 Amy Rose in Sonic 2 (S2 Hack) GEN
+52DCB598E10E974EA0155ABC58CEF9E42B7661BE Amy Rose in Sonic by E-122-Psi v1.6 (S1 Hack) GEN
+75DFBE7A7179F3E5357F875EE1623245BE05250D Amy Rose in Sonic by Kilometers Prower (S1 Hack) [a1] GEN
+41820CDF2466ECA223D063FD1A046DFB43269CAA D Anal Yo Girl Tech Demo by Anyalygirl (PD) GEN
+B79FDCFCCC714C260CFF17EA75FE6B9095DA47AE Animaniacs (R) GEN
+C8B399A3A4C4AD719A165E5AEE010D17D5CB064E Aoki Ookami to Shiroki Meshika - Genchou Hishi (J) [t1] GEN
+9629C7BF44E74DF741FCCCC41AEA867AE1EBC971 Arcus Odyssey (J) [p1] GEN
+C379E5EB7EAD6A1CE906181B53D8416117AC7345 Arcus Odyssey (J) [t1] GEN
+221C6EE35E9DFC446F076F84762AF153CC3F4208 Art of Fighting (U) (Prototype - Jul 11, 1994) GEN
+30B3A10DA59A8F80C84CD2D1BCA4F945EB506BE9 ASCII Emperor by snkenjoi (S2 Hack) GEN
+93817B17124DFC0FE4F5D00224229ED797817E69 Assassin's Creed (R) GEN
+32CF5A881DCD660F421A4AB7FFF6FED78BF05779 Assault Suits Leynos (J) (VC) GEN
+5A03FE849C10BAA048474BF85E134CEC851460E2 Asterix and the Power of The Gods (E) (M4) [T+Rus_NewGame] GEN
+38F5FD0C7A37C0E7DD125C6EC910571A581F7C7B Atomic Sonic (S1 Hack) GEN
+E4CCA3622C53F773D8F34D3DAE16F9BFAB34E2E9 Atomic Sonic Home (S1 Hack) GEN
+FBA2A2B9E3A01F3222BEF1E1533591C88EB20A61 Atomic Sonic in Sonic 2 by snkenjoi (S2 Hack) GEN
+3E29C757CEDF2334D830F4375242C066F83E0D36 ATP Tour Championship Tennis (U) (Prototype - Aug 02, 1994) GEN
+9FAE94E52DE4BDE42AC45F0E3D3964CCD094B375 ATP Tour Championship Tennis (U) (Prototype - Aug 05, 1994) GEN
+2CADE1465FD5A835523B688BB675F67A7012E67D ATP Tour Championship Tennis (U) (Prototype - Aug 08, 1994) GEN
+E0E94BE5C1F76465151CF6C6357D67BA68170676 ATP Tour Championship Tennis (U) (Prototype - Jul 19, 1994) GEN
+88005E79F325E20C804E04A7A310A6D19B7F7CCE ATP Tour Championship Tennis (U) (Prototype - Jul 23, 1994) GEN
+DBAA2F60DF5811026539D1F4C6AD50B596B1356A ATP Tour Championship Tennis (U) (Prototype - May 09, 1994) GEN
+C2E277D1CF4FA9DEF71014DC7CF6EBE34D521281 ATP Tour Championship Tennis (U) (Prototype - Sep 08, 1994) GEN
+A44730B0640168201C9D40BD145D208BEFF423C7 Avatar (R) GEN
+8316433112FB4B80BBBAF905F93BBFA95F5CB8B2 Aworg (SN) (J) [!] GEN
+A4C073FB1F8DFD1B6B88E95AA509476786588306 B Aworg (SN) (J) [b1] GEN
+7BAA515001AFF4FA93C871189C891E5BD2EAAB11 Baby Boom (U) (Prototype - Aug 11, 1994) GEN
+24B5A84FB68B89A5AC4E7A9E85AF95880067FC5F Baby Boom (U) (Prototype - Jun 03, 1994) GEN
+22C8E6AC65DE990A3F30AEDF777F7336F7791E66 Baby Boom (U) (Prototype - Jun 06, 1994) GEN
+1477B6245F227ECCD01CC4DCE081C06CE3E1D1D8 Bahamut Senki (Ch) GEN
+C06FA8EA93300D3ACC477A44F5E69A7008ABDF84 Bahamut Senki (J) [T+Chi] GEN
+DD7D3D7919E109F65310C0BE39782B85E842AEE1 Bare Knuckle II (Beta) [T+Rus_Cool-Spot] GEN
+318A795015769D14A003CB0D3EEAA861C8F55AE1 Bare Knuckle II (Beta) [T+Rus_Cool-Spot][a1] GEN
+8ECE58C01CC0EA180F06F66499C01A4088247283 Bare Knuckle III (J) [T+Chi_ken,madcell,crystal] GEN
+A15FFA2461344E40B84B4187BCD3E142DC40372D Bare Knuckle III (J) [T+Chi_ken,madcell,crystal][a1] GEN
+D1DC85ABE0889FF8E880EDCAF908A6B195B75952 Bare Knuckle III (J) [T+Eng1.00_Twilight Translations] GEN
+E8E19ECE9AD6966E9E635516D8BB851A2B74B36A Bare Knuckle III v1.5 (Hack) GEN
+56435D14C9B0367A7C447938600D5CF0BBABBE92 Barver Battle Saga - Tai Kong Zhan Shi (Ch) (Simp) GEN
+A958E6615FC1FBBA0B05EC71110F09BF75574A0F Barver Battle Saga - Tai Kong Zhan Shi (Ch) [a2] GEN
+7CDC423A90CFAFCEED3E1E72079A5BB2EFC4EA8F Barver Battle Saga - Tai Kong Zhan Shi (Ch) [T+Eng1.00_Djinn+Steve Martin] GEN
+AEC44B414C5FAAB9A05E989A6AB5D80DA737D712 Barver Battle Saga - Tai Kong Zhan Shi (Ch) [T+Rus1.2fixedbugsnfont_Magic Team] GEN
+9733E6C8D073E77BF975A35862371DA7ED3997E6 Barver Battle Saga - Tai Kong Zhan Shi (Ch) [T+Rus1.2fixedbugs_Magic Team] GEN
+D01E50576F794D25A38C0877A71F7FBE2DD41B8E Barver Battle Saga - Tai Kong Zhan Shi (Ch) [T+Rus_Magic Team,glitch] GEN
+1BA2E9DFDA3F233A212278B23B38D3CF966F38C4 Barver Battle Saga - Tai Kong Zhan Shi (Ch) [T-Rus1.0fixedbugs by Vlaskin M] GEN
+A2E730D74D184958B605F1329508D04EC85A55A7 D BasiEgaXorz - 16 Tiles Demo (PD) GEN
+09998EDB874E1FDCD5FF1337E35CAF92D915130E D BasiEgaXorz - 32 Tiles Demo (PD) GEN
+FFF481A1D3AA2B733396E1FDF8BBE4DD5F480E41 D BasiEgaXorz - 64 Tiles Demo (PD) GEN
+FBAE01B81359BA5503F16506D63990A10289EC1F D BasiEgaXorz - 64 Tiles Demo Fixed V1.4 (PD) GEN
+CD54B785BC9A94EDFDD148A05FAB1791636D37FC D BasiEgaXorz - Airstriker by Electrokinesis (v1.0) (PD) GEN
+94BDDC65A3A620C90D351A9D8413829EAC692659 D BasiEgaXorz - Airstriker by Electrokinesis (v100) (PD) GEN
+A8BE7B0CA850119B167F9644E6A4A22E983D61A4 D BasiEgaXorz - Airstriker by Electrokinesis (v150) (PD) GEN
+3277767730EE2F310503D6978AB55D453FA48B7D D BasiEgaXorz - Benchmark v1 by EvilDragon Software (PD) GEN
+A974B9BBA76747D77661BA7A4AE01C6CAB19D64A D BasiEgaXorz - Noise Machine Example by Devster (PD) GEN
+8DF6E60D8449E6C2CFCA04160A79A9FA60B543CD D BasiEgaXorz - Rayden Demo (PD) GEN
+C5DFAF55289614D27543A42821C54621EDD37CCE D BasiEgaXorz - Scenery Demo (PD) GEN
+96C1A45BC70278B75054BF96EF4E3B1ACDC50D69 D BasiEgaXorz - Test FM (PD) GEN
+342696C6BF953D21119A0F7E24C3DFA4D72F139A D Bassfish by Speckdrumm (PD) GEN
+F0ABE41F1A50116D26DC0F42697B9F8A01D899A2 Batman Forever (W) [T+Rus_NewGame] GEN
+8C1A417F8767F56CABAAE4EF9303CF314A629C36 D Battle City MD v1.00-beta (PD) GEN
+81529AC1DBCB3778637F4669384B70E6BCD42050 D Battle City MD v1.00-final (PD) GEN
+9C89926ADB2803C5ABF15DD556C5ADECE6A39762 D Battle City MD v1.01-beta (PD) GEN
+0232A702454C2512890F5CF07E3B9EB22C92BF99 D Battle City MD v1.02-beta (PD) GEN
+C244C0D012B6E63CC797055CBD11A3B5200F8559 D Battle City MD v1.03-beta (PD) GEN
+89412D9C5408F26A53560D3EB030A5A75AC5E4E7 Battle Mania - Dai Gin Jou (JK) [T+Eng(BMania)20061029-BMD_MIJET] GEN
+F425DB086A2FA2C21EBF0E54FFF5A06ADC4B48E9 Battle Mania - Dai Gin Jou (JK) [T+Eng(TShooter)20061029-TSV_MIJET] GEN
+FD11C707088C36E3F3B1FE982D60DA731C50258F Battletoads (W) [p1] GEN
+EBB9B88F1E50FE99D85B1DB5044349599BA127C0 Battletoads (W) [T+Rus_NewGame] GEN
+BF901727468145E0173CAF8ECFCA080AA0DAD19B Battletoads and Double Dragon by Krizal (Hack) GEN
+057535C98F17FB6D0BA136C5E9715C4AE6218FF4 Battletoads and Double Dragon by Ti (Hack) GEN
+2DC7F122FD2C39DF090198DDC656751D688BCC5C Battletoads and Double Dragon L1 (Hack) GEN
+5F5595F37B7A9417DFDC04DA2309EBCE00215A68 D Battletoads and Double Dragon Music Trax (PD) [a1] GEN
+0A4B721F3D559AE594F60E95269980FC2AC93900 D Battletoads and Double Dragon Music Trax (PD) [a2] GEN
+7379D3BCA23DBE0B1984A46198F9ED906A00F826 D Battletoads and Double Dragon Music Trax (PD) GEN
+7596A03371AAE0FB408D7EA5A44886893B85F130 Battletoads RAMM (Hack) GEN
+05791075C5E8B9E14451429EFCE20A1CFBAFC84A Battletoads Remastered (Hack) GEN
+6AF4E13DEDE08ED75B3E307538276134B3A297B2 Beast Ball (Prototype) GEN
+83A49560EB1174B17C9D5ED8837D74A7006B7E9C Ben 10 (R) GEN
+349FC63222FE59BC8E7E71E6B0358AC7B03A00CA Berenstain Bears', The - Camping Adventure (Prototype - Apr 28, 1994) GEN
+4607BF96959809C86C4E5ED244C9D29AD2584637 Berenstain Bears', The - Camping Adventure (Prototype - Apr 29, 1994) GEN
+2ACE984E92740FE93B762C66EE12663C7D8805B9 Berenstain Bears', The - Camping Adventure (Prototype - Mar 23, 1994) GEN
+FEDD6C08D4BD7F8F554BCFD1E7431BA9248C1FE7 Berenstain Bears', The - Camping Adventure (Prototype - May 06, 1994) GEN
+9AB467062576CF087F73BD9EF9ECC428CE638F3A Berenstain Bears', The - Camping Adventure (Prototype - May 11, 1994) GEN
+D60E4E0542D1C0A4BDBB7A433373051718549055 Berenstain Bears', The - Camping Adventure (U) (Prototype - Aug 01, 1994) GEN
+FAF4801049124AB2F63D514F04ADC757A66382B5 Berenstain Bears', The - Camping Adventure (U) (Prototype - Aug 02, 1994) GEN
+5F496994FA770DB96AFAC4579D7314D56A8F15D5 Berenstain Bears', The - Camping Adventure (U) (Prototype - Aug 03, 1994) GEN
+1B4E21AEFFBA372820C25517D98C181731BBD007 Berenstain Bears', The - Camping Adventure (U) (Prototype - Aug 05, 1994) GEN
+BA0E3FC9D04E37A81B37D4E9FF21097BFC4FC0F1 Berenstain Bears', The - Camping Adventure (U) (Prototype - Aug 08, 1994) GEN
+8172369E0A73D1BE60E1124A2EA8DF41CFDDFB55 Berenstain Bears', The - Camping Adventure (U) (Prototype - Jul 09, 1994) GEN
+758F5E7072D8BC4BD6325FB7629EBB9F11D1CE10 Berenstain Bears', The - Camping Adventure (U) (Prototype - Jul 16, 1994) GEN
+EBC3D134494CE02932B44BBDA3720176089D7604 Berenstain Bears', The - Camping Adventure (U) (Prototype - Jul 20, 1994) GEN
+FE2FA9060A2CF13720C79A5FC8568A33C2ADAD0A Berenstain Bears', The - Camping Adventure (U) (Prototype - Jun 02, 1994) GEN
+32EE3D750EA8FF06ADB28C7B5812670F4E92D952 Berenstain Bears', The - Camping Adventure (U) (Prototype - Jun 10, 1994) GEN
+391C1BDEB7546BC19C3F866CB17079F529044B3C Berenstain Bears', The - Camping Adventure (U) (Prototype - May 17, 1994) GEN
+617284C4964117E2C7AC9FAB8EF4EA19A89FA0EA Berenstain Bears', The - Camping Adventure (U) (Prototype - May 19, 1994) GEN
+4B866F0B0F491A3D73D1CE1895DF9720C93A79F2 Berenstain Bears', The - Camping Adventure (U) (Prototype - May 23, 1994) GEN
+4315949E9C7F3C938D0EF15F0CE361E7F47042A1 Berenstain Bears', The - Camping Adventure (U) (Prototype - May 26, 1994) GEN
+33C292B28518F25E1D87C41FFF3CF5F2DA635993 Berenstain Bears', The - Camping Adventure (U) (Prototype - May 30, 1994) GEN
+CB0606FAEAB0398244D4721D71CF7E1C5724A9EF Beyond Oasis (U) (Prototype - Nov 01, 1994) GEN
+718339F9F4E07FA58CA61ABF42FEFFDF9DB9EE63 Beyond Zero Tolerance (Beta) [h1] GEN
+7B63F8D15EFA28507C7CE03CBDDD583919919B31 Beyond Zero Tolerance (Beta) [o2] GEN
+42F85D899849490FDD1A17B69467937EEC0823AE Beyond Zero Tolerance (Beta) [o2][h1C] GEN
+98707BB53750849C8128B3441E25026A49599243 Beyond Zero Tolerance (Beta) [T+Rus_NewGame] GEN
+07BD103CC7C09753CC2EF3DADF0BDFE3812E1992 D Big Cheese, The by Tyson6969 (PD) GEN
+B894910406A0CD7A52502359011F6EB8F5D40E61 Bill Walsh 2010 Gators vs Sooners (v1.2) (Hack) GEN
+76E3553050A22A8615195325D517952A5F1B2B2E Bill Walsh College Football CFL98 V.1D (Hack) GEN
+22F199AADBC4D879FE2CB922F230685FBCDEAA0C Bill Walsh College Football Plus 1k (Hack) GEN
+68414F744D388D32E4B98FB64FACB29766F6A68A Bill Walsh College Football Plus 1p15 (Hack) GEN
+E2B02B54204E8F1EBB55BE109DAF0C396C345F6F Bill Walsh College Football Plus 2k (Hack) GEN
+4037FF66AFA8CEAFD9FC258F9B674927E716EB4B Bill Walsh College Football Plus 2m (Hack) GEN
+D5E7157B6D8E424EE4043957142380DF7C6F3259 Bill Walsh College Football Plus 2p15 (Hack) GEN
+0CD26AAF7D40ACB9D425D4363C3456258C2EE827 Bill Walsh College Football Plus 3k (Hack) GEN
+4422B563E355362865D8E44D66773447E307EA73 Bill Walsh College Football Plus 3m (Hack) GEN
+89DF983024D0C33F627C2E9E41DD7CDF605F6EAF Bill Walsh College Football Plus 3p15 (Hack) GEN
+554856430772D53BF9E7127EA725CC6D0BA8AB17 Blood Shot (E) (M4) [T+Rus_NewGame] GEN
+DFC52220D56FDAA4A912462D56263ADD1C7F204C Blue Blur, The (S1 Hack) GEN
+EBFA9AE7AAB4EA04BF946E575AF8FEA0FBFF36E5 Blue Ring (S1 Hack) GEN
+2E442382E082446C274D610D2CC965BDCC834F7A Blue Sphere Plus Version 10 by MainMemory (SK Hack) GEN
+12745B16207B1AEBC6F411A3AB67E904BBFA160F Blue Sphere Plus Version 11 by MainMemory (SK Hack) GEN
+BC45A8A7E4343202809A05B0E58F370E7FF14A8D Blue Sphere Plus Version 4 by MainMemory (SK Hack) GEN
+FD6F4AE8B65D6EAA522AB613E2B829E1FA515568 Blue Sphere Plus Version 7 by MainMemory (SK Hack) GEN
+43EE7574838ACD411267D8D85641B425FF15A1A6 Blue Sphere Plus Version 8 by MainMemory (SK Hack) GEN
+7B1D8A6628C7AD0B0D8826363B99241017D7A3A3 Blue Sphere Plus Version 9 by MainMemory (SK Hack) GEN
+A017649C9B11FA50C0DD8845BC0E07B905BA11D7 Blue Sphere Standalone ROM by MainMemory (SK Hack) GEN
+1C13134C32DC620DD663F33150C82D12CC69D442 Body Count (U) (Prototype - Feb 08, 1994) GEN
+8CBEA2B2C0435FADC6031A2704D7A60C1A386615 Body Count (U) (Prototype - Jan 27, 1994) GEN
+0C50D81FF0630FB79A600F65DFACB894DFE62F4D Body Count (U) (Prototype - Mar 03, 1994) GEN
+DBD4FEC001F61C6A8414B2035E884EBFBF48B899 Body Count (U) (Prototype - Mar 08, 1994) GEN
+D881A5281C619D3B80BC740A2783634818A8FC4C Body Count (U) (Prototype - Mar 09, 1994) GEN
+FE6415E4CD3754316606CAE0F0D85856D8EE00E0 Bomber (R) GEN
+0F03862241964BC23B7BCBDCF382E662E9E64D7D D Bone Thugs Tribute by Shane (PD) GEN
+BE061E37CD01CB3CAB3FAC049A2DF5197742FEC6 D Bone Thugs Tribute v0.2 by ScroGer (PD) GEN
+3F08EA3BC211F4A02D216D87C9ABCDAB11612CCB Bonkers (U) (Prototype - Mar 28, 1994) GEN
+7C4798C73548F6992B18BF2BBD2F8C3144FCFF58 Bonkers (U) (Prototype - May 03, 1994) GEN
+435C0DC4C72184E0B7DD535FE5E7D5323D787571 Bonkers (U) (Prototype - Oct 04, 1994) GEN
+A1BFC26FE6AB4FE1E5B8DDBC84B840209D9CB798 Bonkers (U) (Prototype - Oct 25, 1994) GEN
+994A0D7F7C21EDBE35E31CA2A28B3E2017683355 Bonkers (U) (Prototype - Oct 29, 1994) GEN
+6BE68493CC660E4705A872B406EAB0D08E263274 D Brave Spacy Pixy v.final (PD) GEN
+FFE5FA93BBCD80A3F98602F935CEF1EE6C96B3A1 Bro-Tro V1.0 (Demo Release) (S1 Hack) GEN
+629315767B7BE8D996ECFF0DB5129BB974CDFA20 Brutal - Paws of Fury - CPU vs CPU 0.1 (Hack) GEN
+092B21F33991E42F993FB8EE1DE1C31553A75F68 Bubble and Squeak (E) (Prototype) GEN
+EE079F3CBB168BAB62D5F0643709D840A9B5D2D5 Bugs Bunny in Double Trouble (E) GEN
+C0290AADB6E61E3A6B05B75BCB5C2E6B62A4A092 BWM NCAA Football (Joe Montana Football Hack) GEN
+23A68F3F5BBC90EB8B123382382803F3C6B37A91 Cactus Juice and Mustard (S2 Hack) GEN
+572B968EFF4B4A1CD8785A4EB6AFCB4A392286AB Cannon Fodder (E) [p1] GEN
+3EDBA123C0B80569D8AB48B1506FF8F34B84FF6D Cannon Fodder (E) [T+Rus_NewGame] GEN
+F020A024B3CF883E244DA407AD1A23B580E1586C D Cannon-Smash Demo (PD) GEN
+7C305A4B8CC220F5321EAC80EA3FC104A9F5897A Captain Lang (J) GEN
+DB66EBFA5BD0F4E42574AEC937A31FC031B13096 Captain Planet and the Planeteers (E) [T+Bra_Carlson] GEN
+A14C875008E5B33C18DFD3A252E0FC69FB65359A D Car BMP FMV by Tiido Priimagi (PD) GEN
+654024F969E4B1EE0DF4BF88D46F66F5301918CE Cars (R) GEN
+625602A6167EA6ED608C791E8E04F7EC4D45A99A Cars 2 (R) GEN
+A995960B6063202F1D415333EAEDB9F2385B3D73 D Censor Rip Intro 1 (PD) [o1] GEN
+EB8423B5E7394E8FCA2A0FDF2EFECFF75FD25A54 D Censor Rip Intro 2 (PD) GEN
+2C7687BA65574C336C73B69D93C13388E9312696 Chaoji Dafuweng (Ch) [f1][a1] GEN
+5EF94A86EAA69BD2C5224E7F75F442207DC53150 Chaos Shards (S2 Hack) GEN
+BD913DCADBA2588D4B9B1AA970038421CBA0A1AF D Charles' Window Bug Example by Charles MacDonald (PD) GEN
+C250D2AD8E2FC24D23E3741BAAEC7EF70AD8732F Cheese Cat-Astrophe Starring Speedy Gonzales (E) (M4) [T+Rus_NewGame] GEN
+681A8D49D25A81ED3465A7279E0F1B39C59DFC2C Chelnov (J) [o1] GEN
+D3285ACDDDEB5DCCA7BD51A1A2B9F8371EBC8ABE ChimpoQ! (S1 Hack) GEN
+489F0B68F78F1FC0C0182FDB0EFCBA142C68E4FE Chip McCallahan in Sonic by MainMemory (Version 1) (S1 Hack) GEN
+9DF904A8BC972257110047C811A41A277EC3EA89 D Christmas Wishes 2K9 by Tiido Priimagi (PD) GEN
+5F1261ED899C81F0A652DEDE85FDC2EB4AC727EA Chuck II - Girls (Chuck II Hack) GEN
+60338D55A03489BA6A558FA196A7D2045666AF44 Code Gray (S1 Hack) GEN
+2EB0DAAD82CAFF6BCEFB438297A2D701C99173C5 College Football's National Championship (U) (Prototype - Apr 13, 1994) GEN
+EA19E141C64CC4ABC6E7D7EEA7BBB6783569A05A College Football's National Championship (U) (Prototype - Apr 18, 1994) GEN
+9961DB2C46F0189C419DA2E335E6CA974EAA5379 College Football's National Championship (U) (Prototype - Apr 19, 1994) GEN
+11E333A326EA71F77B816ADD76DEFC8F2846710D College Football's National Championship (U) (Prototype - Apr 29, 1994) GEN
+99E5EC2705FAC1566E47FD813D6CF5B5E7F7DAF4 College Football's National Championship (U) (Prototype - Jun 01, 1994) GEN
+1E155744A1C089CD2332C27CDAD48E7F243C2FC8 College Football's National Championship (U) (Prototype - Jun 03, 1994) GEN
+334DAA4F48DEA4D85145FCD1BFB03F522532A9AE College Football's National Championship (U) (Prototype - Jun 07, 1994) GEN
+1B69304213EF1732C0B9B2F059179A7CF18B2C75 College Football's National Championship (U) (Prototype - Jun 08, 1994) GEN
+923CE9034F37167B65AEC97E160F6FE34EA2DA33 College Football's National Championship (U) (Prototype - Jun 14, 1994) GEN
+C9D010A0FFCCECC2C01412DAF64BF1B0EAF5055E College Football's National Championship (U) (Prototype - Jun 15, 1994) GEN
+164E3FC32AA295B0D87E1508DD5FE75F9A7CADB9 College Football's National Championship (U) (Prototype - Jun 18, 1994) GEN
+4B30EEA2FB1187CF3C9150F9DEE5B5B9571C76F5 College Football's National Championship (U) (Prototype - Jun 20, 1994) GEN
+D9DB6ECB032FD88443D0575B01E61CB4AEEA5703 College Football's National Championship (U) (Prototype - May 03, 1994) GEN
+EE673500AEF188CA7CF086FB1CF616B58896FDCB College Football's National Championship (U) (Prototype - May 06, 1994) GEN
+B16E953B695148B8284F87BE566774379C4C2453 College Football's National Championship (U) (Prototype - May 11, 1994) GEN
+01ED2026A930383D926D71192B2A8F9417DFB245 College Football's National Championship (U) (Prototype - May 17, 1994) GEN
+0B26C5748E976A64C02864E1934F2B50F6953CBA College Football's National Championship (U) (Prototype - May 20, 1994) GEN
+E2FB264A11E08D57ACF2756688880CD6FC353ABA College Football's National Championship (U) (Prototype - May 25, 1994) GEN
+157B65BE9D946C46F77A90E4A5847FA41F2692B9 College Football's National Championship (U) (Prototype - May 31, 1994) GEN
+6BAD98E5083874053739F33FB31A6F39D80D779A D Color Demo by Tiido Priimagi (PAL) (V.1512) (PD) GEN
+8DE5658304CC63CEDD41CFC8D5B796A257920750 D Color Demo by Tiido Priimagi (PAL) (V.1960) (PD) GEN
+49DE8AE289701ADE0B7A9D59789F166F7312CB84 Colourized End by Nemesis (S2 Hack) GEN
+C3B33CC017A11A88021BF44AE15CF175F0CB2642 Columns (W) (REV01) [o2] GEN
+B84BDDACCE9E9979CFD9D98A360B45761FB4C214 D Columns Advanced Sound Test by Drx (PD) GEN
+4CF1FB69C8184257664CAACAF7BC7A1B4E802B8B Comix Zone (E) (Prototype - Jul 12, 1995 - FULSCR) GEN
+62B6F4AC864862BF5360E72F3FB8B45700E4FCFA Comix Zone (E) (Prototype - Jun 28, 1995) GEN
+2427E7E3932DA731EB172AE22AD779C0ABFCED13 Comix Zone (JU) (Prototype - Jun 09, 1995) GEN
+DBCE6C71B1B1C193A57416DD4CCACC876A9E64AF Comix Zone (Prototype - May 26, 1995) GEN
+C751EC1BA09ABDA3EA3252A3E211383F054A507C Comix Zone (Prototype - May 30, 1995) GEN
+5DA563561E3D74F5DB672C8694891083DB869999 Comix Zone (Sega Channel) (Prototype - Jun 12, 1995) GEN
+4223EE8F7AB2A62532FAC57F8933BB52E3DDE4D5 Comix Zone (U) (Prototype - Jun 01, 1995) [a1] GEN
+AAE5DD875E36B9416C8169BDF5DD51E4612E98DB Comix Zone (U) (Prototype - Jun 01, 1995) [a2] GEN
+3599C2D52A1EDC9876BEFB2A754BE3506959A12B Comix Zone (U) (Prototype - Jun 01, 1995) [a3] GEN
+45DE8279BB10CAE44F3485057B29810479F82798 Comix Zone (U) (Prototype - Jun 01, 1995) GEN
+1D8E133A0CE52E4586593BECA095ED269F01473E Comix Zone (U) (Prototype - Jun 02, 1995) [a1] GEN
+FA1E69531857D4146497DE4AE95957D096BCEB20 Comix Zone (U) (Prototype - Jun 02, 1995) GEN
+9CFEAD71B55CFA48FA6FB66D2D7C6294776FE4ED Comix Zone (U) (Prototype - Jun 03, 1995) GEN
+2BD102925806D325A20A9396B8DED3158FE62111 D Comix Zone Music Trax (PD) GEN
+C7F952DE1745D673B7285CFB42ADE0F4498F5088 Commandos (R) [T+Chi_SkyLeague] GEN
+FF5DFAF78D6F808A30842AB7C511DD28A4CF461C D Comms Link - Interface Test by Charles MacDonald (PD) GEN
+11602883A1FF4EC17857856DAC141DE220128C75 Conquering the World III - EX Version (Hack) GEN
+1FD19974225229DF898B40AE4776D46CB0CE52ED Contra - Hard Corps Enhancement by MIJET (Hack) GEN
+DABFC184F8B250786387AA235D247A75CCB7559D Contra - The Hard Corps (J) [p1] GEN
+5CC71E8AC5B15F400C7618725E0E60CBD1CFC7C0 Contra - The Hard Corps (J) [T+ChiSimp] GEN
+6D6497E96A9C127C1AEC18C5D21F2AA58310C8EB Contra - The Hard Corps (J) [T+Rus_NewGame] GEN
+59D5B2DF3E97533CBFE2BB5C5A0BE55D0D7FC1A1 Contra - The Hard Corps - Clone by TI (Hack) GEN
+E32826CA9AE5173D5EF9722B52BFCB4AD390A7BB Cool Spot (JK) GEN
+B5AB3B24C8D8F17A10F44BCE3564029B119AA84A Cool Spot - Night (Hack) GEN
+238F02C015CDA15D707DE3C93CF14E4FCA138AC3 D Cosmic Ark by Haroldo (PD) GEN
+BCEE7C42F6B836AF9FB60C9A7BD1D0F7D1BA6BCD Counter Strike (R) GEN
+BBC5EDD6D2D5D9A467433FBB6AFA095FE1F63E52 Cracko Coronicals, The (S2 Hack) GEN
+BFD7271B76C1CE6A4F8B7F6E610A63CC88AE6627 Crash Bandicoot (R) GEN
+66127CA8D361CDDC5585B35DD798FF30F7228A60 D CrazyBus V1.1 by Tom Maneiro (PD) GEN
+7DF740E3ED543A3FEDA37D2F5DC7DD5E759B6766 D CrazyBus V2.0-RTM by Tom Maneiro (PD) GEN
+4E76033ACBAC6F23C573104FD398A6E6DF03781C Crystal Guardians (S1 Hack) GEN
+17D31343E22D9AB4738E06E5449E94588B213181 Crystal Guardians (S2 Hack) GEN
+170DB22A5BFC30AFE19ECE372AD0CCEEA1961CD7 Crystal's Pony Tale (Prototype - Jun 01, 1994) GEN
+2941AE87E22DE10EADD0B7F75BF2E003396D4C99 Crystal's Pony Tale (Prototype - Jun 06, 1994) GEN
+CD0EBCDCA3B8FDD763C8748BC2EBC91690BEBD7F Crystal's Pony Tale (Prototype - Jun 10, 1994) GEN
+53CD0E287B54A49DDF1D6075FAB4B3A7F1DDC396 Crystal's Pony Tale (Prototype - May 11, 1994) GEN
+B9C271296977E2B304A8A808CB2D5E9FB44467B1 Crystal's Pony Tale (Prototype - May 19, 1994) GEN
+16278BEEE4D39EA9F70CE6225373B193881CB2B0 Crystal's Pony Tale (Prototype - May 26, 1994) GEN
+37E6369F0C5F8969003FD4EC1C291E06900C617A Crystal's Pony Tale (U) (Prototype - Jul 01, 1994) GEN
+FA14565F90A254BBE8CFF18E62F65E9FF1DA1736 Crystal's Pony Tale (U) (Prototype - Jul 02, 1994) GEN
+DECEC86674DF91D1B9D29881745E279759470125 Crystal's Pony Tale (U) (Prototype - Jul 03, 1994) GEN
+DB225126E319380D89C0A5AB58D9F75D97419E6A Crystal's Pony Tale (U) (Prototype - Jul 12, 1994) [a1] GEN
+9AC7EBA7CB238602925ED2A23F870B81B413991E Crystal's Pony Tale (U) (Prototype - Jul 12, 1994) GEN
+58E56C2CBB94F81205C6F38656A0C75DCF27E267 Crystal's Pony Tale (U) (Prototype - Jul 13, 1994) GEN
+2220BCB6BAA349F5086C3A42EAD63C7EFEB49631 Crystal's Pony Tale (U) (Prototype - Jun 23, 1994) GEN
+CA3ABCC3403C34FA7B2EA6FF56B1967267D96FCE Crystal's Pony Tale (U) (Prototype - Jun 28, 1994) GEN
+4DB4A0B358A88F9C04F2F3C73D7B9CE1AC87A8DA Crystal's Pony Tale (U) (Prototype - Jun 30, 1994) GEN
+FAEA9A92DB8EC67C0DB65569E84E73646C6C2ED3 D Cube3D DAC Demo (PD) GEN
+458EE203A5C1AAE69EB7E38A3A42FF26F2EEC3EA D CubicGuy by TmEE 09-2009 (PD) GEN
+6932A5BB8FD225ECF5B049A46EAEF5D534A05442 Daffy Duck in Hollywood (E) (M5) [T+Rus] GEN
+655486EAF3B197063902224A8F1CC15B664F7637 Dahna (K) GEN
+BA85D9B3DD12ADBBAA5596500A516E7FBA34907F Daikoukai Jidai (J) [T+Chi(Simp)_cslrxyz] GEN
+D466D4F6FF0BA510BB6142DA3691D914155F1611 Daikoukai Jidai II (J) [T+Chi1.8_ken] GEN
+4DAEE533808F8DE360908EEE8C8D4A7ED2C0D817 Daikoukai Jidai II (J) [T+Chi1.9c_YiZhi] GEN
+76C7E144631CEC17775777DFA67B01C1ECB719F5 Dark Sound The Hedgehog v2 (S1 Hack) GEN
+BA37ECB201894652FBE64B123E58ED2C5C060208 Darka The Hedgehog (S1 Hack) GEN
+FED87C2C9514CA7CB33243AE58EC5E0E14ACDAA8 Darka the Hedgehog v0.1beta (S2 Hack) GEN
+D5793276F7A07F4DD8A9035DBB70A7F3EF2448A3 Dashin' Desperadoes (Beta 2) GEN
+414BCE2FA385642FCCAA4653339DAE44F1913505 Death Caliber (R) GEN
+9E41E814EFFA53F56AC4C1F9768C31C81FEAF735 D Deboomer Dev Memorial 2005 by Kaneda (PD) GEN
+D63D40B88C06DC45BEFBE7F4DFC6007DF1722FFB Deer Hunter (R) [!] GEN
+7691BFAED2C985A607D95BA3EA4589C90A8879DF B Deer Hunter (R) [b1] GEN
+FF57ACDEFF8E091A75AA816A107481ABBC0DD43C D DeeSmo by Oerg866 (FINAL) (PD) GEN
+904AAEB6B1D600E3271D7D476F91CF33A971DF75 Deja Vu 2 (S2 Hack) GEN
+355C55039490A4ED882506327D61EC40E583CA12 Desert Demolition (Prototype - Dec 06, 1994) GEN
+781D636634DA8D41ADDD28C9E34367DACDA38576 Desert Demolition (Prototype - Dec 08, 1994) GEN
+E031FFD85B14507EF5833F4B854CEB2E522F9FA7 Desert Demolition (Prototype - Dec 12, 1994 - B) GEN
+F7DBF2B88AC9F36EB7CC34BA3F61024DC1754772 Desert Demolition (Prototype - Dec 12, 1994) GEN
+C287B81EF983FE832BBD44155CD9A880985AA11C Desert Demolition (Prototype - Dec 13, 1994) GEN
+1D6DD50944DD32D14CB83541ED33EF69479700C2 Desert Demolition (Prototype - Dec 14, 1994) GEN
+CBB8B864039F1BFF4446086C6B44DE468069093E Desert Demolition (Prototype - Dec 15, 1994) GEN
+6D32D81E1A7A06F0ACF58AF88A4C909621251576 Desert Demolition (Prototype - Dec 16, 1994) GEN
+F081D9D1AFFEE698EFB00188C07443A4C64618B6 Desert Demolition (Prototype - Dec 19, 1994) GEN
+9E01C6C45670E2950242FACFBA6C5B79052550ED Desert Strike - Return to the Gulf (K) GEN
+AFFBF9D8D420C7121AFCA229C2296A0779E842E1 Diablo (R) GEN
+25862EC728D34277AB70176708BD7EEF7EB09142 Dick Tracy (W) [T+Fre_Terminus] GEN
+101B97769DDD54E04F6C0C1D46D194FC78CB6F22 Dinosaurs for Hire (Prototype - Apr 26, 1993) GEN
+944AF2E25E9AB5ECF82FE5DA1C55113EDEEE8709 Dinosaurs for Hire (Prototype - Apr 27, 1993) GEN
+2A04B30CF4930631BDB6C031ECD12C23387C278B Dinosaurs for Hire (Prototype - May 02, 1993) GEN
+7185CB36111A1ECD6F06F103202FE14FA0401515 Disney's Abu V007 (Aladdin Hack) GEN
+4DE0DE8B7D5051AF64227B519E39BA3F414D9D19 Disney's Aladdin (E) [f1] GEN
+861911BF9ADD94F794E6E9102D4F69647F4A697A Disney's Aladdin - Bonus Levels (v1.0) (Hack) GEN
+E64E4C127158DB366E95E8C3CC6B4D5906AD78EC Doki Doki Penguin Land MD (SN) (GNKO) (J) [!] GEN
+FF6CF49A00536CCF3D3173965A403692249354E6 B Doki Doki Penguin Land MD (SN) (GNKO) (J) [b1] GEN
+28330BCE4678DA50A6DAEBC0CD8C60E6ED27E1A1 Domino (R) GEN
+BFC792B760928B1F1F032E785E4024F4AE36085B Double Dragon (U) [T+Rus] GEN
+C53EB5568F8B43AE1E4E3691A671EEF5466B4CF5 Double Dragon 2 - The Revenge (J) [T+Rus] GEN
+A579E10818C9E1D91DC9C9DCE9FD04BB46FC6A75 Double Dragon 3 - The Rosetta Stone (UE) [T+Rus] GEN
+4F9C1BD1922C55262586748D7D2E8B4336509EBC Dr. Robotnik's Mean Bean Machine (U) [T+Fre1.0_Alb_A_Tort] GEN
+5310342A0EBC8CAFDC1DCE8C5CFA4256F8975D18 Dragon Ball Z - Buyuu Retsuden - Vegeta Full by Krizal Chen (Dsght) (Hack) GEN
+18FECF14309A16F7A394F4793F1BEFCF9729A15D Dragon Slayer II - The Legend of Heroes (J) [T+Chi(Trad)] GEN
+D29EC9588DCBC27A4EF3F838191B767235A6FF17 Dragon's Lair (Prototype) GEN
+F360CE84CAADBDDA248BCC69C0647141A45A209E Dragon's Revenge (J) GEN
+415E8613B40954D9C941394E615CA752EE473489 Dragonball - Final Bout (Ch-Trad) GEN
+E26B27CE55AB8059B49BB913AC997CEA8F71D3D5 Dune - The Battle for Arrakis (E) [T+Rus0.2_Shedevr] GEN
+7A7E3EC6AAEB3D8FBCFB779834565412252CE616 Dune - The Battle for Arrakis (U) [T+Rus] GEN
+767D2086B42572B383A0358C29B1CAEE99FF5250 Dune - The Battle for Arrakis (U) [T+Rus_3DSchumacher] GEN
+8ED9501A2E645761ED7B78E945A5C6C897AE515D Dune - The Battle for Arrakis - 100 Builds Limit Test by Ti (Hack) GEN
+A666C9EE78A33EE6F1299E4085AA9E7711F5CC72 Dune - The Battle for Arrakis - Mission 8O Stealthwar by Ti (Hack) GEN
+ED4C9BAC709503A0F6572FDE499EA2FFE09F119C Dune - The Battle for Arrakis - Mission Sardaukar v02 (Hack) GEN
+CE735554A41B5D41334F5BC2C182C6860E0A63F8 Dune - The Battle for Arrakis - Mission Sardaukar v02rus (Hack) GEN
+C5620D5FC8DA4E1BC52306D98CCA344207F2CA24 Dune - The Battle for Arrakis - Mission Sardaukar v03eng (Hack) GEN
+EF34EA6311C9C6F10BE8FF2F7783009AB1E7705F Dune - The Battle for Arrakis - X by Ti (Hack) GEN
+A72FFC144219601B56C3A1ABB2919F858CCA8143 Dune - The Battle for Arrakis Extra Limits by Ti (v3) (Hack) GEN
+2AAB5F421F0D1AF528F756968CC72752A5FB2848 Dune - The Battle for Arrakis Mission 7H by Ti (V6) (Hack) GEN
+2D330C6CB1303B25A7CBEE1701A6F1680756ED61 Dune - The Battle for Arrakis Mission 8H (Devastator) by Ti (Hack) GEN
+B4892525C61125CFA155E713C499A96D1945011A Dune - The Battle for Arrakis Rebuild (v7) (Hack) GEN
+7C674375579FC2650F991DD084303CD00C4ACC10 Dune - The Battle for Arrakis Rebuild (v7+limits) (Hack) GEN
+DCAF51B94492F23C6912D0BD1BACBDBC7AE25546 Dune - The Battle for Arrakis Rebuild (v7l) (Hack) GEN
+680A3E0BAE9FD6EED972040681AFB323B3FD3190 Dyna Brothers 2 (J) [T+Chi] GEN
+8E10298DFFF521397F0E82D1787E701D6928750B Dyna Brothers 2 - Sega Channel Special (J) (VC) GEN
+B553A0F10B6469240CD4B700DAD1535BB9D0E7DD Dynamite Duke (W) [T+Rus_MagicGame] GEN
+241D076E6CAF02496A916AF30C009A5279E0832E Dynamite Headdy (J) [T+Eng20070428_MIJET] GEN
+C90417BD43BEA29A58FCACACB48B2602ECB65CC3 Dynamite Headdy (Prototype - Jun 14, 1994 - CABEZA) GEN
+84F4E06FE51A448148E6F86A5D11D07577DF7029 Dynamite Headdy (Prototype - Jun 16, 1994) GEN
+74A1D84CCDE678D9209F7AA872B50F0A98EC07AA Dynamite Headdy (Prototype - Jun 22, 1994) GEN
+112AA6D7C12751712B8F5DF752F0D96C43E9846D D Dynamite Headdy Intro by Scoopex (PD) GEN
+C5F01DCFBF01D9A3B08E4D6EBE0C460CC3508413 Dyno Blaze (Prototype) GEN
+8478F9DBB566FB7E4743E6A0BA577CEC04F7B6DD Earthworm Jim (U) [T+Rus_NewGame] GEN
+812B7703F2F4895871729A630480EDE64D6DF233 Earthworm Jim (U) [t2] (Weapon Select) GEN
+35D339D032BF35F4CB9D6F729C7EE78CDF803511 Earthworm Jim 2 (U) [T+Rus_NewGame] GEN
+B2FEEB19316358F09332887EAEF200B6133C0E2C Earthworm Jim Bare (Earthworm Jim Hack) GEN
+3C653329C897E369198425E99E76FF53688D245B ECCO - The Tides of Time (U) (Prototype - Apr 29, 1994) GEN
+6CC1EA0B6C4BE29ED7A02CD5E01F9504D272323E ECCO - The Tides of Time (U) (Prototype - X11 - Apr 13, 1994) GEN
+183090871BB7658C867A16E12D22A4F2256BFEBC ECCO - The Tides of Time (U) [T+Rus_NewGame] GEN
+45451001292D26EC9A3C8A1C255037971D474A84 ECCO Jr. (UA) (REV00) [p1] GEN
+9E9DAAC9C0F07B48A23E10BD3E8A31E6747A6B54 ECCO Jr. (UA) (REV00) [T+Rus_NewGame] GEN
+A650459D957A0A26AB311AA1B1310D6313EE4970 ECCO The Dolphin (UE) [T+Rus_NewGame] GEN
+9FBB358E00E23039DAF2885AC8B6EC3C7565112D D Edge Demo by Edge (PD) GEN
+472B698D87EBC85DEB5547353436A51D7D134848 El Viento (J) [T+Bra_LYNX] GEN
+83C55F390CE33CFBFCD8C913E8A34A0C3BC304AE El Viento Enhancement by MIJET (Hack) GEN
+219C89F47C431BD56E5334021715BC604BA2148C Elemental Master (U) [t1] GEN
+99D79DADD33765E592EDA6FBE8C38D383B7B9D30 Emerald Power V2.0 by Lost and Fiz (S1 Hack) GEN
+01130A234F36903EE42A529D7CDDB58CC67EE014 D Emulator Detector V0.1 by Tiido Priimagi (PD) GEN
+99BD3454B2F5B8AA261D37DC34EAEEE03ACE38DF Episode from Catacomb (Beyond Zero Tolerance Hack) GEN
+3E12925DE4459531F7352F7155BC1C4C2A654E37 D Equinox MD Player V0.0000 by Fonzie (PD) GEN
+7A357F465225CCDBEEF80B55BAA5FEB9430CE8F9 D Equinox MD Player V0.0001sttab by Fonzie (PD) GEN
+AC329C49F35C81D20070AA248D95D65D71E5A0E5 D Equinox MD Player V0.0001sttor by Fonzie (PD) GEN
+D4875E338BE5B2F4DB77595E416AC7F9D9FAEFC8 D Equinox MD Player V0.0002 by Fonzie (PD) GEN
+F69616F290CADCA33BC93E2875BE17CF7E785406 D Equinox MD Player V0.0003doom3 by Fonzie (PD) GEN
+4DAA28AC9866CFE084B3CB10998B3EE0F19092C0 D Equinox MD Player V0.0003driver2 by Fonzie (PD) GEN
+B86C62CB062FB0D17259B29AA01BEAD12AE5F803 D Equinox MD Player V0.0004doom3 by Fonzie (PD) GEN
+DB520A21B69DB7DE87182A979582AE206C6CC61C D Equinox MD Player V0.0004driver2 by Fonzie (PD) GEN
+E93AD360DB568C1BA630F25E4BBB4F479AE3E206 D Equinox MD Player V0.0006doom3 by Fonzie (PD) GEN
+8501570A48474F3905C6353AFC88194BD5E89B81 D Equinox MD Player V0.0006driver by Fonzie (PD) GEN
+587E57673DFEC493231F410677E7B380484BF7D2 Escape From Mars Starring Taz (Prototype - Mar 09, 1994) GEN
+A2D00AC89176DC61D4F736A8C65BD7153C184293 Escape From Mars Starring Taz (Prototype - May 09, 1994) GEN
+C046885FBF4D654B636C0C1EA9FD65ACC3B18DA3 Escape From Mars Starring Taz (Prototype - May 18, 1994) GEN
+E35E8019B3A89319FD22DFEE444741B955820AFD Escape From Mars Starring Taz (U) (Prototype - Apr 18, 1994) GEN
+1CCDB04CEA4A0DFC816E8FD9552F77D201504002 Escape From Mars Starring Taz (U) (Prototype - Jun 02, 1994) GEN
+5ECC3A4754507410830039E6B27D81B675727D43 Escape From Mars Starring Taz (U) (Prototype - Jun 07, 1994) GEN
+48199482C13BCF49461FD5459617E75497FADCF9 Escape From Mars Starring Taz (U) (Prototype - Jun 10, 1994) GEN
+74B701BE56A7A7BA286DCF354FBE646D0B9CE73A Escape From Mars Starring Taz (U) (Prototype - Jun 14, 1994) GEN
+B81FE7B3656F859F51F60BD7D368FFC62C8BB615 Escape From Mars Starring Taz (U) (Prototype - Jun 18, 1994) GEN
+DE7927962C29477B3BF0392F27E07B44DAF185C9 Escape From Mars Starring Taz (U) (Prototype - Jun 20, 1994) GEN
+92A7563BEB8E4957251D7FFF29354F0DC6AA0394 Escape From Mars Starring Taz (U) (Prototype - May 23, 1994) GEN
+E8BBB7F6F8684208F2AB0A774E6DA1357B0E4959 Escape From Mars Starring Taz (U) [T+Rus] GEN
+58EE90B8FAC91F2697CAF184B6C996D090FFDACA Espio the Chameleon (S2 Hack) GEN
+2D69701A22929A751483E6F3CCF126DCCCDBD38A ESPN SpeedWorld (U) (Beta) GEN
+8EEACE9EF641D806AFC1EAEAFA244A076123B118 ESPN Sunday Night NFL (U) (Beta) GEN
+37650A9100F016864A73D12ECBC5DC7FD1A2A1B2 ESWAT Cyber Police - City Under Siege (U) [T+Fre_Terminus] GEN
+BA82947BEF2C42021CC35512C21D91430C6FC55C Eternal Champions (J) (Prototype - Nov 17, 1993) GEN
+F4DD9D133B2205BA3C3234933F35878BE8447A3A Evander Holyfield's Real Deal Boxing (JU) [T+Rus_MagicGame] GEN
+6B7AF62268E00822C9CBFC3BADD77B6E6381D3FF Exile (U) [T+Chi] GEN
+A0E7BB3C4832C9DD715BE13036DD4A4985DAB7FD Exile (U) [T+Swe_Cyndeline] GEN
+0A9451D04737FC6CA3AD5166F54D23804A1BE930 Exile - Time and Space Mutation (Ch-Simp) GEN
+692F9562E942694E06C15D8E448512E788B57611 Exile - Time and Space Mutation (Ch-Trad) GEN
+672C12B9CDFB2C7D8E0B1C389627C02A7C970CB3 Exo-Squad (E) GEN
+BB96714349B915B3308EFC1EED407E39D67262B9 D Eye of Time Demo by FlemTeam (PD) GEN
+BB09071116FED59ACB7B310FC5DED0F97D60F7E6 F1 World Championship (U) [T+Rus_MagicGame] GEN
+D5255FEE9E944DE4E5B83B22C3D9214F02FDE9B6 Faery Tale Adventure, The (UE) [h1C] GEN
+D29A28CA46D4CF0664FDEE02427A740E9D70ACBC Fantasia (JU) (REV01) [T+Rus_NewGame] GEN
+8BAB694C671CB0FB151D1F6CE55D69DF4E4724DE Fantastic Dizzy (UE) (M5) [T+Rus_MagicGame] GEN
+1D87C8BED3181E3924C7FD732852B9EFA8D9C59D Fast and the Furious 5 (R) GEN
+745D52B8F18AACC5718A97C3CADF60067420CE45 Fatal Fury (U) [p1] GEN
+A854B4FB96E34183FBE462E23A2A0BF7DD6D9F09 Fatal Labyrinth (J) (GNKO) [!] GEN
+CFAD674EB7502F4BFFFC287F0F42EFDD07A01D4D Fatal Labyrinth (JU) [T+Rus_Chief-Net] GEN
+8312BF75C232CB2747D66985273A8D697184EACE Fatal Labyrinth (JU) [T-RusBeta2_Chief-Net] GEN
+5E087E861FCF44B20AEC5A501FBF05CD6AE2A6B3 Feng Shen Ying Jie Chuan (Ch) [f2] GEN
+DEB0E00D18225AD7BB8005EDF4D822B80C58AC8F Feng Shen Ying Jie Zhuan (Ch) [f1][a1] GEN
+8DC04A0F137323EC95D6C7DFA9CB03FA572BDC51 FIFA 2003 (R) GEN
+0D23F4E9E7ABB12E882743554AB19D7704E00456 FIFA 2010 (R) GEN
+8EA458A76342B00A7C5E9E056068B0C9E329E4DA FIFA Soccer 2000 Gold Edition (Unl) (M6) [T+Bra33% Disco Voador] GEN
+AD1202A2E4166F8266D5633B8C5BEB59C6CBD005 FIFA Soccer 95 (K) (M4) GEN
+DCAD98DAFA528BE10908EBA75EBD97E3B2756F4A FIFA Soccer 97 - Gopher Mod (Hack) GEN
+F9DD9B940E2C684C3D3C9371D5BD7F3607D641D1 FIFA World Cup 2002 (R) GEN
+9676ABAC060C6F56F406366D1B37A585D4DD4C96 Final Showdown, The v2.1 by Anthall (S1 Hack) GEN
+8B686C66E0ABFBF233C9014D17FD0BBCB240BF91 Finding Nemo (Ch) GEN
+C54A15684B54769CF959ED4D5818EA4243C9E683 D First Time Out by Local H (PD) GEN
+4D383C967E2A446CEE3D623F3A7780D37FE7B398 D Flash Memory (PD) GEN
+358E4DC17B4269B34273B7C4CE1D57C0C01FFD4E Flash Point (J) (Prototype) GEN
+765B2A11A49BF9B4DD9C47B4CBA5D134C5DFD7A1 Flashback - The Quest for Identity (U) [T+Rus_NewGame] GEN
+AAEAA10251667A843519A4A0A223E40C59FFDED9 B Flicky (SN) (J) [b1] GEN
+2F3E9C6B1EF1D1474A8E25138C8DB1285DF2F721 Flintstones, The (U) [T+Fre1.0_Terminus] GEN
+E5A9DE81C8E63311918B9DC4A287FF57CA73696F Flintstones, The (U) [T+Rus_NewGame] GEN
+996AA5696ACC34649BAEE51201B290C0A0463523 Floaty Monitors by snkenjoi (S2 Hack) GEN
+B246C3415FFD76A75870C9B38F1147E786DCBA9D Fly with Tails in Sonic The Hedgehog 2 - V3 by JoseTB (S2 Hack) GEN
+CCD33E02CF894E20FD8422883C5620C1A87F155F Flying Sonic in Sonic by Bobesh8 (S1 Hack) GEN
+147E5FE171B742CA16AB231D7E61601E7D310576 Fucked Up (S2 Hack) GEN
+9493404A62605486FF86B7BB355788CEC05BEBDD Funky Boss (S2 Hack) GEN
+84B53F8639750B1AB0133559933DAE1F8AF95B7A Funny of Three Kingdoms (Ch) [a1] GEN
+EB2363C83A0B76B7825320DCF332779B534A1D89 Funny of Three Kingdoms (Ch) GEN
+2B14AEBF4510F02C6FE220A32A2F709DB91F60C3 Fushigi no Umi no Nadia (J) [T+Eng1.1_KingMike] GEN
+C34EA6DE8A4898C42AD98354CF605D9C6A9FA31A Fushigi no Umi no Nadia (J) [T-Eng1.0_KingMike,Eien Ni Hen] GEN
+148D166D594535C6526CB450C461CFB003B59F93 Gain Ground (E) [c][!] GEN
+700C3500D71DD8CDF7051225125A94463FEB67FB Gang Di Shao Nian (Traysia) (Ch) GEN
+A139E69AAB096CFA164173495CC1ED38B683EC7D Gargoyles (U) [T+BraBeta_Tradu-GameX] GEN
+0741FA9D9B701E57202CFAEA7946CB81C4E9243A Gargoyles (U) [T+Fre_Terminus] GEN
+4BBAE618F49A945AB9C5F93A4A41C021CAC0F6E4 Gargoyles (U) [T+Rus_NewGame] GEN
+36536D0ED7E5B686468AA24245D438FB5E00DCC3 Gargoyles (U)_RUS GEN
+AA7E3F73379C936D506DBDA99DE267AF6B316820 GemFire (U) [T+Rus_NewGame] GEN
+2C2E343D900C570035A74955DC5B3E72B1A423A2 General Chaos (UE) [T+Rus_Shedevr] GEN
+AD8CF1E66CEA6ADB88C6A7CED3CCACD896C03659 Generations Lost (UE) [T+Fre_Generation IX] GEN
+EE0BCE227C3D5BEB51729C286BC6D8168800CDDD Generations Lost (UE) [T+Rus_Shedevr] GEN
+9DD5B86C5022425FF2FACFD11D3FDEB6323C9F7A D Genesis Boulder Dash by Paul Lee v0.1 (PD) GEN
+D494BA1176BE10B26ED7ECB7D2D91748ADB7F2FD D Genesis Cube3D Demo by Stef (PD) GEN
+FF043E0F73683F6F89036BB2A63949B63B4DA597 D Genesis Particules Demo by Stef (PD) GEN
+3F50B76B0529DB7F79C396B5E808CC0786FFC311 Genesis TMSS BIOS (U) [c][!] GEN
+890FF289C092EA450AFE376F32E6E6E97B670F19 D Genesis Wars Demo V20061222 by Edge (PD) GEN
+94ACF301D2A53468BE7E394138B3C09292291900 GennyPong (U) GEN
+5961C301619FD9798D5B58E9850FFE13FC6B300A D GenTimer NTSC by EvilDragon Software (PD) GEN
+A87BAEBFA6462E9369A6B0506523A2861C3E35A7 D GenTimer PAL by EvilDragon Software (PD) GEN
+E3058819380C632F9FB691EFC79BB5385EABAF86 Ghostbusters (W) (REV01) [T+Rus_NewGame] GEN
+015E80DCABF426176AF921418BC469EF807E8997 Ghouls 'N Ghosts (UE) (REV02) [o2] GEN
+97B913730239593573BE3AF495E5F4CB03A52D00 Ghouls 'N Ghosts (UE) (REV02) [T+Fre_Terminus] GEN
+EB349230893F2774B12EC5DDB0E33CA60238996A D GINCS v0.50 BY Haroldo O. Pinheiro (PD) GEN
+33570DF9A3B9BEF121EC158D8FC022226E96D052 D GINCS v0.52alpha by TiberiyLTim (PD) GEN
+F6E9528FB9DDD6AC716ED4201F16E96A66553C83 D Glass Braker MD (E) (PD) GEN
+86F9E0BE02381C654DC258B069D808F705837A33 Gley Lancer (J) (VC) GEN
+80BD2C7C06D45040399418980FAE6A557F0574C8 Gley Lancer (J) [T+Eng20061023_MIJET] GEN
+FDC4B2ECE5328D5569D8AA89E79B23819E424DA9 God Hates You (Spiritual Warfare Hack) GEN
+9495E8535CAC71D854B88846ACF6F4BC1161D621 Gods (U) [T+Rus] GEN
+04EDBD35FE4916F61B516016B492352D96A8DE7F Golden 10-in-1 (Unl) [!] GEN
+6A3A0AC8500EBE17009BB54983AB702E53983D2A Golden Axe (W) (REV01) [T+Fre_Terminus] GEN
+EEB2D80D376B06E921AFE5F271BBCEB3FA1CFB3D Golden Axe (W) (REV01) [T+Rus] GEN
+3F207967A4AB5C39BDBBA7E53AA39D8760610CDD Golden Axe II (W) [T+Fre_Arkames] GEN
+843BD934AE1B590D307225DDE1993A45F1571A99 Golden Axe II (W) [T+Fre_Terminus] GEN
+0F4EF0076A43B6CA0681DFABC26018C33D05A7EB Golden Axe II (W) [T+Rus_NewGame] GEN
+D58889037801D678134EA3E272F070F6BD2D6D0E Golden Axe II (W) [T+Rus_NewGame][a1] GEN
+54033C0371093BE12B7ABC2F9EF32BBDB9EC5DAB Golden Axe II by VD7, Krizal Chen (Dsght) (Hack) GEN
+13816EB064FE74BE42F74BA7E5077832FDF40D42 Golden Axe III (E) (VC) GEN
+69C10C648BCB9E9D0AD8ECAAA63F6C52F714C11A B Golden Axe III (J) [b3] GEN
+BB41D4F8C913DD059FDFBA243E27D9BA6A257ACB Golden Axe III (J) [T+Fre1.0_Arkames] GEN
+556F96DE64A9C4C73A84320CD5476CDCEE12611D Golden Axe III (J) [T+Fre1.0_Terminus] GEN
+E9538C0542B4A05050F5B68D279CDDB06559AE20 Golden Axe III (J) [T+Rus2003_NewGame] GEN
+CB75EB738F185123F8B880FDA3FF2AC81803B6A4 Golden Axe III (J) [T-Fre_Terminus] GEN
+CFAF09EE6422B81C1E5395C228F28E2191FA5766 Golden Axe III (J) [T-Rus2002_NewGame] GEN
+1C1CD7554F7613E159CA8D2211292B01FB8F7385 Golden Axe III - Char Hack v1.0 by TI (Hack) GEN
+84717BA5CAB45F0E6F4CBDF1DDB44BB96F4B0940 Golden Axe III - Char Hack v4.0 by TI (Hack) GEN
+1BDDC5FDF3FE5B9FFC0F4B0A816682359616AB64 Golden Axe III - Char Hack v5.0 by TI (Hack) GEN
+57A042D5149F857A1D70A9F59A3C34DB3CB7C5F6 Golden Axe III - Char Hack v6.0 by TI (Hack) GEN
+AD1B780579445F871093F78E4718DD1DBBCA52ED Golden Axe III - Nude Sarah Vane (Hack) GEN
+671FC77D3CCB8D37F22F37A880B13E4A7FBF3B7C Golden Axe III - Play as Gryphon by Ti (V6) (Hack) GEN
+C4D519BFB62B7CB4272B1AEB7D15F41EC4C0A45A Golden Axe III RongHe Edition by hinadorijp (Hack) GEN
+F31108F15375C6E7B1F1C67D0457428426A5A0A0 Goofy's Hysterical History Tour (U) [T+Rus_NewGame] GEN
+DF701D512514B0763C4434B9C3E01900C9C71E67 Goofy's Hysterical History Tour (U) [t1] GEN
+1A50A319FD6F91AA905F5B30A0CF7C72B64A53B2 D Gouraud Demo (PD) GEN
+A047A2677ADD823C4DD7563A8E24E4A3D093F822 Gran Turismo 5 (R) GEN
+481908B8F21436E04927C6ED4C4698DC91F7DA3A Granada (JU) (REV01) [T+Rus] GEN
+4520EC7540CD55F45AB2096A415A8D72E56222F1 D Graphical Interactive Novel Creation System v0.50 by Haroldo (PD) GEN
+86B439044852E3E86024B312D9740CE60B471DF1 Great Circus Mystery, The - Starring Mickey & Minnie (U) [p1] GEN
+DB28D70F9B744004CADD06EB77D6223534F59215 Greatest Heavyweights (E) [!] GEN
+75779E9261D0ADAA173D250CBE667593D207E2F8 Greendog - The Beached Surfer Dude (UE) [T+Rus] GEN
+73055790F9C936D6C0441D59C06D7BF31E733B96 Greendog - The Beached Surfer Dude (UE) [t1] GEN
+219D7DBA0106F70D5878EE5A0D2D02F77CF5D849 Grey The Hedgehog (S1 Hack) GEN
+46128A3E9FB88138FE14C92D52B1CE43470107BD Gunstar Heroes (E) [o1] GEN
+0BF3DF4AA87D3A56F621B6FCEFC9559F468C3778 Gunstar Heroes (U) [T+Fre_Terminus] GEN
+E1C488EB1E89642C1029EF0808A912D43CB7ACAF Hack Compilation v.2 by Nemesis (Unl) GEN
+A33C22CDC3308EC12380C295C3F00EEC7D68B448 D Hacking CulT Demo SH by drx (PD) GEN
+90C34C4D98F024A1E960B680B5B7F78EF6B7DDD8 Hadoken (S2 Hack) GEN
+8321C9AF05244B1657B35E13DA5797FEFB3DA4DE Hadouken in Sonic 3 & Knuckles by snkenjoi (SK Hack) GEN
+63C6E49357A067B39A1AB263A6582767A12F2781 Halloween v1 (S2 Hack) GEN
+7F0062C45B5E841BC22F18081B494598F19A07A4 Halloween v2 (S2 Hack) GEN
+F4E5530A95ED4589CE73E214025DAC16A49C5763 D Happy Birth Day! - Objectif-Sega.com (PD) GEN
+120650DBFCD85CD681CC7CB58FCA234B58FBB9DF D Happy New Year 2006 by Fonzie Voltonov (PD) GEN
+ABB31FBF9C7B9089A30E5F5685C792DEDEC14FB1 D Happy New Year 2010 by Gigasoft (PD) [a1] GEN
+7B804287CD7D66FFD5B99C6C008EEF623080BC80 D Happy New Year 2010 by Gigasoft (PD) GEN
+BDB81A26B9D4CA194DE94D3D40A0C6C6EBDAA43B Hardcore Terror (S1 Hack) GEN
+35C91F1578CA257E20B3F72732B02E0F97AEBFF7 Harder Levels, The - 6th Project's Aniversary by Eduardo Knuckles (S1 Hack) GEN
+3CB5FB8606CD4612AADB63EB4D40CA549DF44395 Harry Potter (R) GEN
+E30DEB5E9FB2C0E7F63BB1E9855379C1D61EB0B3 Harry Potter and The Chamber of Secrets (R) [!] GEN
+4D6570F9132A65B03C1005BBA2C32F9D61B7F05E Headache by snkenjoi (S2 Hack) GEN
+6278A88814D7D5A9D4FD098545ACE3E894A82015 Hellfire (U) [T+Fre_Terminus] GEN
+71CF6D7A5A1AFEFEFA39ECCC6ADD6F05E0704105 D Hello Sega World Sample Demo (PD) GEN
+8A920CA111066E6EC4D604E762F8FEB7AEB12B88 Herzog Zwei - 100 Year War Edition (Hack) GEN
+19EFF429B728C2055B0E466F50E6EA507EDB4A11 Herzog Zwei - Alternate Font (Hack) GEN
+DF9B722DB0DC86A55720317412FBBF2A29A8DF6A Herzog Zwei - Bloodbath Edition (Hack) GEN
+674E070C67F53C09DA540BC28F6BBBCC25875EF7 D Hires Animation Demo (PD) GEN
+C396CBCCA2E8BF1E56F4DB36C1C03D226FDDE249 Home Alone 2 - Lost in New York (U) [T+Rus_NewGame] GEN
+4F0E5F969BACC041A7A88F7F9C2DAB41BF31E8F0 Homing Att'hack Version (SK Hack) GEN
+DA5DA918E92211D9A4108C2B39B29B8583242CBB Hook (E) GEN
+09EDA2D06202D890D4AA85F562060E497832D08C Hook (U) [T+Rus_NewGame] GEN
+5FFE49B5C75EA6CA23E9343F8756BB412BD82C5D Huan Le Tao Qi Shu - Smart Mouse (Ch) [f1] GEN
+B6E72B69A22869F966C52E7D58D146BC48B5EB84 Hybrid Front, The (J) (Prototype) [!] GEN
+43BCC8F46B80B230BDB8653AAE4366FE0B3F3F75 Hybrid Front, The (J) [T+Chi(Simp)_cslrxyz] GEN
+D8DC95512AEC41DB7C758D4C971DC0194DDB960A Hyper Marbles (SN) (GNKO) (J) [!] GEN
+042D1B7B04AC5FDD755520DCF593D9868C7B8831 B Hyper Marbles (SN) (GNKO) (J) [b1] GEN
+674D7A4A4BE7B2945DFB4D20F09A4CFD09FA6413 D I Love Cube Demo v16-05-2009 (PD) GEN
+C1BDF8BEA0828FEC88F989F5C64DE896850B15A2 B Ice Age (R) [b1] GEN
+4A96E44A8863AD18A2734D6221E7259DD6E55F0B Ice Age (R) GEN
+30D9AFDC25517F6B1782A153753F5D2B81AE9D0B Ice Age 3 (R) GEN
+11C55FE1ADEEC0E4E39D3F16A8C2ACB7B0E21E07 Ice Age 4 (R) GEN
+4729CE84348E44903491A36C19B3CF49D14AFA27 Ice Storm (S2 Hack) GEN
+8349535E1BB5DBA730322806CA5D88A01AA62B23 Incredible Hulk, The (UE) [T+Rus] GEN
+A8CADFDA87E466809670218106B1C308E88A964A Incredibles, The (R) [!] GEN
+C54370066B3AFEED05226E33881746D86C33154A Indiana Jones - Corridors of Time (R) GEN
+53AD1707AAF1EEF7715F0DE2E8346BB341256D0F Insane Paradise (Ch) [a1] GEN
+0330611A5FCB1F3CA173FCB3387FD35B865F1131 Insane Paradise (Ch) GEN
+79B51F6FD87C4AC96438D57F8AF48934C7FFC055 Iraq War 2003 (R) [a1] GEN
+4C90656F8FA9D167488811674237FD6FFFC60086 James Bond 007 - The Duel (UE) [T+Rus_MagicGame] GEN
+8F1972319ABAFEE625E3AF84059C69D9DC073CA8 James Pond - Underwater Agent (UE) [T+Rus_Chief-Net] GEN
+D0B01717C327ADDFF836FF9516C2F3930249215D Jewel Master (UE) [T+Fre_Terminus] GEN
+C4FBB5DFCC0B2DB37A0F6DCC3B7C35B1CEE959D3 Jewel Master (UE) [T+Rus_Chief-Net] GEN
+8A92A0C9405CAFD5D22A700FD1F677AF35841901 D JEZBALL (PD) GEN
+C112602C58F9867377BB6A1204D1D7E49A50AA10 Jiuji Majiang Er - Yeyan Pian (Ch) [a1] GEN
+BC071F3004C0D66C223DA3B22357D9C6C3ABA91C Joe & Mac Caveman Ninja (U) [T+Bra_Trans-Center] GEN
+0A6D0205A67734F953CA92D07D8BF499F9558068 Joe Montana 2007 AFC (Joe Montana Football Hack) GEN
+A6F0422F7E16FC3BDA03E80A3628A218FD53CD5F Joe Montana 2007 NFC (Joe Montana Football Hack) GEN
+544887E1F9249BBECE71A31A0DE67ACD4D95F1EC John Madden ACC-BIG10 (John Madden Football Hack) GEN
+2342C337F8010008F8410D620757FFCCCED85E82 John Madden ACC-BIG8 (John Madden Football Hack) GEN
+C5522510458393241C16030D1912B2CB6D0876CF John Madden ACC-BIGEAST (John Madden Football Hack) GEN
+214E0168F10EA81C3FC8E601A389B99233B1F408 John Madden ACC-IND (John Madden Football Hack) GEN
+A0A5DE9DC4E7B81A533217AC7ABD2A76262AE8D8 John Madden ACC-PAC10 (John Madden Football Hack) GEN
+F28703EFB1E3A9CE6D72E93CD14D7175A1A11784 John Madden ACC-SEC (John Madden Football Hack) GEN
+E680E24558894D04E06846502AC5ED2DEEC45DFF John Madden ACC-SWC (John Madden Football Hack) GEN
+60A7F86E9F473B3869DE425C355917514AF80C28 John Madden ACC-WAC (John Madden Football Hack) GEN
+593DB75D1CEE93ED0DEFA1CD5EBAA5866B1D621F John Madden BIG10-BIGEAST (John Madden Football Hack) GEN
+CA39C57F457A249F487AD0217D467FDB8CC435B1 John Madden BIG10-IND (John Madden Football Hack) GEN
+9CA744B36A2C1836DA25ABF6205EE61EFC292439 John Madden BIG10-PAC10 (John Madden Football Hack) GEN
+014AA36674D6275405C72B421620DB27A3EB01D0 John Madden BIG10-SEC (John Madden Football Hack) GEN
+F6E60861C283A67B538A45C6F2D384721B154F01 John Madden BIG10-SWC (John Madden Football Hack) GEN
+4BA66BA32CEE361FDE9A9854D399FADAF6B3FE34 John Madden BIG10-WAC (John Madden Football Hack) GEN
+3B9779D8BBBC379443AE471B01055C3201F8198E John Madden BIG8-BIG10 (John Madden Football Hack) GEN
+ED69ADD616863FD3DEAED2B0034E2DF3D45A5BCA John Madden BIG8-BIGEAST (John Madden Football Hack) GEN
+E23E1052F750B16CC7AD21348475E658C98C1FB3 John Madden BIG8-IND (John Madden Football Hack) GEN
+4E65337EACC72C0386F84B818647917C893A33B4 John Madden BIG8-PAC10 (John Madden Football Hack) GEN
+D4BB6061F6013815A4591ED732FE7118E488A8C2 John Madden BIG8-SEC (John Madden Football Hack) GEN
+48E9EF4079764703AC63F13778DCCE345FCFCFB3 John Madden BIG8-SWC (John Madden Football Hack) GEN
+8F5E9588A254E53A4A82DF2C2B8BF819D1B05CAD John Madden BIG8-WAC (John Madden Football Hack) GEN
+854314585159B52A0158B1A02873058F78AB3828 John Madden BIGEAST-IND (John Madden Football Hack) GEN
+7112A32977319D96114013B2484948898466C1E4 John Madden BIGEAST-PAC10 (John Madden Football Hack) GEN
+83F57AAD8671FF5C74EAF554EA6B91B33DB3CDB2 John Madden BIGEAST-SEC (John Madden Football Hack) GEN
+6BF406ED5CC736D254AA9E346CBFE634A9FADE0B John Madden BIGEAST-SWC (John Madden Football Hack) GEN
+EDE5B9CE4331033E3442A3FEE5DFBEEF968CDBE8 John Madden BIGEAST-WAC (John Madden Football Hack) GEN
+ECB3864C6B5C4B1D6AD449EA90ED80CE19F243B8 John Madden IND-SEC (John Madden Football Hack) GEN
+F4CCDF5B455AE25878D0EFBD3EEC43B438C72665 John Madden IND-SWC (John Madden Football Hack) GEN
+029D3F4CD21A7B45BAED23EFAED9CEB5E6C8724D John Madden PAC10-SEC (John Madden Football Hack) GEN
+902CD5D41AD3E0F75FBA5C8BD8C9E34AEB3FDFFC John Madden PAC10-SWC (John Madden Football Hack) GEN
+23FA9DA51CB6F09D387B9BC61F114BD69F43B89F John Madden PAC10-WAC (John Madden Football Hack) GEN
+4B8C362E0675FBC4CEC79FB3F71508A86BB6CE78 John Madden SEC-SWC (John Madden Football Hack) GEN
+5DF141146324EADEBC9AB7A2FFA29823820A6F60 John Madden SEC-WAC (John Madden Football Hack) GEN
+F52FC9FBC2B0DD3572602A19FE72A9A0FA04D846 John Madden SWC-WAC (John Madden Football Hack) GEN
+8C21011F1D3E7CBF296B1048AAF18EF5EF759E2A Judge Dredd - The Movie (W) [T+Rus_NewGame] GEN
+26804734839758E73D87658FBA55BCC85292CB12 JuJu Densetsu (J) [T+Bra_Central MIB] GEN
+89595ED1FD90F43636E7D4E20785EFA8174F825E JumpDash in Sonic 3 & Knuckles by MAXXX309 (SK Hack) GEN
+18C14FB2DE8BB3044EDFA0A8A7E95764E157C007 D Jumping Game (PD) GEN
+EEF95A5BE58D50EC7DD866415E6389AE7A38EFB5 D Jumping Game (Updated) (PD) GEN
+9A6108D587C7CF2BBE90FBEE7D89D7C2F0B9D28B B Jungle Strike (Beta) [b2] GEN
+7968C4B205D0CEB3231B9A1BDDAC543A8AD36B6E Jungle Strike (UE) [T+Rus_NewGame] GEN
+B49309CEAA6F172D36C57A9C0FA20650095CD0DF Jungle Strike - Height Mod by Ti (Hack) GEN
+4B75D3F053CA61E4543CE7CA7AC7B3B0466CB7FD B Junkers High (Beta) [b2] GEN
+4326363736DF3971C485AE4C1DDA4BA78265B391 Jurassic Park (U) [T+Rus_NewGame] GEN
+394D1E58EF22E8BBC88A8E759B8185FAC8A58FFF Jurassic Park (U) [T+Spa_Andromeda] GEN
+7DCA5EC1440222CE38F085663D0AB6539693FEAA Jurassic Park - Rampage Edition (Prototype - Jul 08, 1994) GEN
+B840CC1B00BF2F7E75320C1395DA3DCEAA637071 Jurassic Park - Rampage Edition (Prototype - Jul 13, 1994) GEN
+534EEA52E7C6D8D0FC0A93480C89F89568196D36 Jurassic Park - Rampage Edition (Prototype - Jul 14, 1994) GEN
+B10FAE841B410525AC83E729983F3E0CDA2E7365 Jurassic Park - Rampage Edition (Prototype - Jul 15, 1994) GEN
+2D817AD10E9B6B93B6EEE23A76F788A73827BBC5 Jurassic Park - Rampage Edition (Prototype - Jul 17, 1994) GEN
+CBB44D5D5DA1263A4524C747BE9AFD0AA8547A63 Jurassic Park - Rampage Edition (Prototype - Jul 18, 1994) GEN
+F8F52D23DCD36E8167EC273CF9978AE44F21658B Jurassic Park - Rampage Edition (U) (Prototype - Jun 20, 1994) GEN
+6607CDEB4A5DDB229201F1417D3E693063094A7D Jurassic Park - Rampage Edition (U) (Prototype - Jun 22, 1994) GEN
+F1F763E087065483ED7FF53F95B99BAC16BB8484 Jurassic Park - Rampage Edition (U) (Prototype - Jun 30, 1994) GEN
+0056BAADB98895771FB74913F4FD474771A4C6C4 Jurassic Park - Rampage Edition (UE) [T+Rus_NewGame] GEN
+00DCA83F854621CA97E299025A3D0FE5709F3794 Jurassic Park 2 - The Lost World (U) [T+Rus_NewGame] GEN
+C7E56177A2BBE37C9ED66D278EB8137043954D3C Kawasaki Superbike Challenge (Beta) [o1] GEN
+A6C2B776A7AFD1CEC66100ACDF15A7B8EB5705A2 Kid Chameleon Puzzle Map by Damian Grove (Hack) GEN
+CDEF3008DEC2CE1A214AF8B9CB000053671A3C36 King of Fighters '99, The (Unl) GEN
+2073B1E14CBB8433ABCBF356EA1831CC5F61C42E King of Fighters 2000 (Unl) GEN
+BB0CFA44A62793A523AA120C492B5536E5C5A4B3 King of Fighters 99 (Unl) [f1] GEN
+3947F8B784EB00FBA6A9FDD0584C9F70FDFF5944 King of Fighters 99 (Unl) GEN
+119557B565E1246CE68C2E6BC18074AE9B69874D King of the Monsters (J) GEN
+04BE69EE06AC0074DD617BA56CD2C7D6D0726F50 Kirby in Sonic Final Version (S1 Hack) GEN
+BC47DCEEA512C0195E51172AB3A2FF5CAD03C9BD Kiss Shot (SN) (J) [!] GEN
+B4849EDE8C4A86AD9859020843C0D570B2F2FDAE B Kiss Shot (SN) (J) [b1] GEN
+3BA764749CBCA18E4C33666DEAA82AB164872205 Klax (UE) [T+Rus_Multisoft] GEN
+3A827D575F5A484C24E6C31417F32D6C5F0045DE Knuckles in Sonic 2 (Prototype 0524 - May 27, 1994, 10.46) GEN
+AF4824D43840E27CDFC6EC3965B055807D51038E Knuckles the Echidna in Sonic The Hedgehog by Stealth (S1 Hack) GEN
+A2417F1B92B9B07230589C33B6E76D476A123BBE Knuckles the Echidna in Sonic The Hedgehog Rev 00 by Stealth (S1 Hack) GEN
+8BC0672F95B1DD0EB16AE0A56483BCCDB99C197C Knuckles the Echidna in Sonic The Hedgehog Rev 01 by Stealth (S1 Hack) GEN
+21CEC169DAB65CCC82A9778D16A45DE9746C2653 Knuckles' Chaotix - dividendtest5 (Hack) GEN
+366074924C36A466F566C76772D7BD491137384E Kolobok (R) GEN
+CDB53849FDE4F0E72F6F9CD7605A8121892AD800 Kujaku Ou 2 (J) [T+Chi(Simp)] GEN
+160DADD961E3413BFE14DC0ACAC74B116BC83F04 Kujaku Ou 2 by Krizal (Hack) [a1] GEN
+81A41EA145AB931C0F0AC6BCBF563EC27B9BF72A Kujaku Ou 2 by Krizal (Hack) GEN
+7248BFBAADAC607E307D2E323D8E91DE4F16ECEE Kung Fu Panda 2 (R) GEN
+6E73C2C69F2230DA4AB33531C9ADFA244E17D081 B Labyrinth of Death (SN) (J) [b1] GEN
+5B1E977900B60C1838A668D3BC69F979D2D4FF6D Landstalker - Koutei no Zaihou (J) [T+Chi(Simp)1.0_Ken Tse] GEN
+68D132995DBFD43BA79435F0905FF4DEA0D8B9B9 Landstalker - Koutei no Zaihou (J) [T+Chi(Trad)1.0_Ken Tse] GEN
+8A9F19FAB4F8E30CE16E175E197D24E480D6C752 Landstalker - Koutei no Zaihou (J) [T+Chi_Ken Tse,madcell] GEN
+F5DA58F80BD59B499464AC8B780F3E6B0CF8C991 Landstalker - The Treasures of King Nole (Beta) [T+Chi_SkyLeague] GEN
+90E195D8959B95580F3F13D618067F58C785B636 Landstalker - The Treasures of King Nole (E) [T+Ita_Gufino2] GEN
+E48701E096055AF4DACCF90B6097778211962796 Landstalker - The Treasures of King Nole (U) [T+Rus_Ghost_Umka] GEN
+5DE23611303D5B773D39DD1ADCE17B5D9D707BC4 Langrisser - Text by D v20010219 & Graphics by MIJET v20070103 (Warsong Hack) GEN
+FE43C51314ED902C65CE967F3B181DCEFAD2D59C Langrisser II (J) (REV02) [T+Eng20110701_MIJET] GEN
+5EAD0732F39AE995EC08A4AF5C7181ED74E417BF Langrisser II (J) (REV02) [T-Eng20080812_MIJET] GEN
+8FA14E071A3C4B5DC5DF9302E7B0C1841B2D1AC0 Langrisser II (J) (REV02) [T-Eng20081106_MIJET] GEN
+67A0FC5955544030A97CC9FCB676DF9894B66ED8 Langrisser II (V050211) by togetheru (Hack) GEN
+60F2EEF8D456E9A7E5357FFF7A66E3732C23252F Langrisser II (V050703) by guming530 (Hack) GEN
+87B09359128291E5A44430B59D79A14F7B9DF420 Langrisser II (V060410) by gw105a (Hack) GEN
+FA121B7642865421439A1C1828EFFF7CE321238A Langrisser II (V061102) by pengyiming (Hack) GEN
+8CBFD55AFC443CAABE77659780018D960865438E Langrisser II (V061117) by pengyiming (Hack) GEN
+924820FD9E531B57FE7A724D58FA95BFF9C2F8D8 Langrisser II - Bosses of Enemy Strengthened Edition by gundamzhy (Hack) GEN
+0343094513C13C21EF837D11446A09FE9F73FF01 Langrisser II - Evil & Imperial Soldiers Version (Hack) GEN
+B14F831BF4B034B341713E984C01EA4BDF0B5E55 Langrisser II - Evil Soldiers Version (Hack) GEN
+6D6EB711A84446ACEE610AAD621F3BCFB6CC9B79 Langrisser II - Expert Level Edition by langrisserA (Hack) GEN
+0EA41843CFF38EA96F3EDA986C0E6CE5F385DA8C Langrisser II - Final Legend (Hack) GEN
+C5775E9A2599A675DF881B0E112BBCBE24EADAE1 Langrisser II - Imperial Soldiers Version (Hack) GEN
+A98DAE1E1423EA75D23EE538AF38F84B1F013005 Langrisser II - Route of Knight by yujia (Hack) GEN
+76CEF0154AF3ADCFFF82A0615D2C6BAA2A74036E Langrisser II - Route of Magician by yujia (Hack) GEN
+2D5C7C66AA0226A7ADD291998DCCEF9C50163D71 Langrisser II - Seven Legends' Land (Hack) GEN
+188D448C668FEBE6882CA59A1AA141773034DE76 Langrisser II by leonaid (V070901) (Hack) GEN
+ADAE9736B99FD761193943ABDCBE6372FBDED222 Langrisser II by w4784495 (V070820) (Hack) [a1] GEN
+C3B148CF85DA7B74981D874CE7B509253A104A1D Langrisser II by yiyun930 (V050703) (Hack) GEN
+B2A75A98FC76A7390F6F171C596202F9943C663B D Laster Tech Demo (PD) GEN
+B6D07F51C3B1BF61681B63F51EB9AB1934E32104 Lethal Enforcers II - Gun Fighters (U) [t3] GEN
+85B2B659E52383B0AB8A0F53A9070FB6992B265F Light Crusader (J) [T+Chi(Simp)] GEN
+0BF26DBA5324471532DB776DA1EE4C0C06ADD1E5 Light Crusader (JU) (Prototype - Jun 08, 1995) GEN
+7280CFA1990795EDEF1ADD3550A7B5EFAE15B355 Light Crusader (U) [T+Bra_Monkey] GEN
+CFF84FD111B729A8DFF0610AFBA231F442E3EEE1 Light Crusader (U) [T+Rus_Magic Team] GEN
+8CF65634B6651FBB2461B14F0DE2EA39BF70C4D8 Light Crusader - Gopher Mod (Hack) GEN
+FE1B84CA2BD6C1AE3536873AAACC3784967E3788 D Line 3D Demo (PD) GEN
+ED30B6A0C8018F81351BFB6E254D780A38035114 Lion King 3 (R) [a1] GEN
+0EF55DC45536963C8748192A4CB4864A87B03102 Lion King 3 (R) [f2] GEN
+5B3912FBA754E3CA4B6057E8D509EBA1705C1527 Lion King Debug Mode by Segaman (Hack) GEN
+0C1BB2B69DBFEE6B1C8DE1C2E54943D27F7CEC20 Lion King II, The (Unl) [T+Rus_NewGame] GEN
+403C85E6A69CBE628B87783961C6012FF22F32A3 Lion King Simba Bonus Levels (Lion King Hack) GEN
+395D5E7B22DE38C2729E0991B2C42E686FAA5A77 Lion King, The (W) [T+Rus_NewGame] GEN
+749FE1F7581352562A38997CB7323019B6FF1D93 LOBO (Prototype) GEN
+438788633149D111A6A2B5CB9BB502D26A8C804B D Logic Dial Demo (PD) GEN
+4DB712192A25EAE90958C1D9944C4F6F4B4AAF3D Lola the Night Fox (S2 Hack) GEN
+2145546C72735AD268E1991A325680ABE98AF710 Lola the Night Fox v1 (S2 Hack) GEN
+9A2B2BB91AA845705E34062CA08C8F97E1866748 Lola the Night Fox v2 (S2 Hack) GEN
+9C09055917BB7AAD4CA96ACAD0936451B5F1EDEB Longjumps and Trained (S2 Hack) GEN
+5D40CB4CC4C25F52E7EEAD0CFE8B999E815A1C3C Longjumps and Trained (S3 Hack) GEN
+C25593344982E3355586B88EF82EC0A2A02C6E18 Lord Monarch (J) [T+Chi(Simp)] GEN
+6F52DB6E80BE66D3C5C2C09D6848A7957F0B9511 Lord Monarch (J) [T+Chi(Simp)][a1] GEN
+0529F2716ABDA6DE646D1DF90D55DCDFD2FD2A8E Lord Monarch (J) [T+Chi(Simp)][a2] GEN
+6B5C5775CF3FF34BF540BDBA04A6CBB357524C74 Lord Monarch (J) [T+Chi(Simp)_cslrxyz] GEN
+770880E3EDB857758EAEBD01DB7AB9B4493F20D2 Lord Monarch (J) [T+Chi(Simp)_cslrxyz][a1] GEN
+CE4D20FF1C234CCE63A03B4B905B5078604D85B7 Lord Monarch (J) [T+Chi(Trad)_cslrxyz] GEN
+426C3F8B8754B6CF9B1547079E11DB28CD6C3747 Lord Monarch (J) [T+Chi][a1] GEN
+A91ED84344EBF685F9A13D28B6A2053279E1F61A Lord of the Rings, The (R) [!] GEN
+314FDE51223FD2D315CF9C74318A1FC8470D5382 Lord of the Rings, The - The Return of the King (Unl) GEN
+6E3F0906BF0360C5DA29B1EF545B257A4B0362FF Lost Land 2, The v2.0 by Team Lost (S2 Hack) GEN
+394165C7344A39EBFF07CBF1B19F2CD24A291143 Lost Paradise V2 (S2 Hack) GEN
+B2C78AADE24B43BD6365A23B8832C2BB677BED06 Lost Vikings, The (R) GEN
+5A8CA69AA5B51DBED75C8D191D08086219FCF74A Lost Vikings, The - Gopher Mod (Hack) GEN
+399965DBC913FAA14DC791BE0734AEA5BEA24C1C Lost Worlds, The by Bobesh8 (S2 Hack) GEN
+3A197B73FB23035E50A0116787B319F1DE51E600 Lotus II RECS (UE) [T+Rus] GEN
+0F795BF3771AD61ECAF1D05D3FEDC1648CBF70E9 M.U.S.H.A (U) [T+Bra_ctraducoes] GEN
+D722321B25846B89551213DB42BBEA4C76AD9505 M.U.S.H.A (U) [T+Fre1.0_Byblo] GEN
+6C78FE1FE788FCAF65A651010520C367DB8C70D3 M.U.S.H.A (U) [T+Fre_Byblo] GEN
+45CB50D7A85BF438B75054D247A71C7A8773066D Machine Gun Buzz Bomber (S1 Hack) GEN
+1A2B2AF0862BD16B51FD1C8A6374AE6298CE7A9C MACKS HACKS 94_07 Edition (NHL 94 Hack) GEN
+A2C4508A735DCFEFC419022D9F25BD4804499FA7 Madagascar (R) GEN
+A7BF74633CAB1BBB82CE63056331773723AE85F6 Madagascar 3 (R) GEN
+FAB2B178A66DE6F14A59680A2792CC8BCABCC10A Madden 2007 AFC AllMadden by DeadMeow (John Madden Football Hack) GEN
+9CE3CB31503EA88218D3B928205BB66B4D9C74AE Madden 2007 AFC by DeadMeow (John Madden Football Hack) [a1] GEN
+5318036A0B985FB6570DB30C3527B03C801EF816 Madden 2007 AFC by DeadMeow (John Madden Football Hack) GEN
+57CC98BCAB135804724CAB86B3BFE9FE14EE42C1 Madden 2007 NFC AllMadden by DeadMeow (John Madden Football Hack) GEN
+D1E96849EF9E13325EEDC4229D069EB011D15D9D Madden 2007 NFC by DeadMeow (John Madden Football Hack) [a1] GEN
+B8DB9782B6DCDFA1F63675735210AB611A19C41C Madden 2007 NFC by DeadMeow (John Madden Football Hack) GEN
+484EAB46F50C766CE21EFD15CAA58B09ED4F5840 Madden 2007 NFC-EW AFC-EW AllMadden by DeadMeow (John Madden Football Hack) GEN
+9F103F8D50469C1DEE49D2DEAA6FB36B8ED02187 Madden 2007 NFC-EW AFC-EW by DeadMeow (John Madden Football Hack) [a1] GEN
+199DD26E3DA713E0BA11CBDC12046A87FB791652 Madden 2007 NFC-EW AFC-EW by DeadMeow (John Madden Football Hack) GEN
+B3579ED7D5110F449FE71E6AEFAE253CD690D616 Madden 2007 NFC-EW AFC-NS AllMadden by DeadMeow (John Madden Football Hack) GEN
+95DC93E2335760502C1B2799A9545A521A6F32DC Madden 2007 NFC-EW AFC-NS by DeadMeow (John Madden Football Hack) [a1] GEN
+E57A64EAB8701A91092174E7A7A16E6701A7CDC8 Madden 2007 NFC-EW AFC-NS by DeadMeow (John Madden Football Hack) GEN
+5084AFA50DC10FAA93FF27FEE83E2B5199B567D1 Madden 2007 NFC-NS AFC-EW AllMadden by DeadMeow (John Madden Football Hack) GEN
+0DDB1A22C30F2954DA04DF2BA587B7FFC3EF0193 Madden 2007 NFC-NS AFC-EW by DeadMeow (John Madden Football Hack) [a1] GEN
+29D67AC1FF42D0100A96443161CF5FCA084844A5 Madden 2007 NFC-NS AFC-EW by DeadMeow (John Madden Football Hack) GEN
+3E56EEF46FDB315AC19C7F75CB337CB7DD612309 Madden 2007 NFC-NS AFC-NS AllMadden by DeadMeow (John Madden Football Hack) GEN
+4D89058AE7E84BCDAB51BA463DD956105DC7978E Madden 2007 NFC-NS AFC-NS by DeadMeow (John Madden Football Hack) [a1] GEN
+226F3A62374FEFE6A6ADFD69C91DF4DF54F0C873 Madden 2007 NFC-NS AFC-NS by DeadMeow (John Madden Football Hack) GEN
+DBA31A55434E1AAF22F6FDE8F4B2342B0BD39BDB Madden 2007 THROWBACK (John Madden Football Hack) [a1] GEN
+E4D3F24ECF2D3FC7F7013D54193DF7070BE43A2C Madden 2007 THROWBACK (John Madden Football Hack) GEN
+11C5FCB0622C26C93F205C80046B5C99892D0BEB Madden CFL V1.9 (John Madden Football Hack) GEN
+C88E263C42150CC3FF49373222EF1E760C6E42F9 Madden NCAA 2006versd (John Madden Football Hack) GEN
+977A911E758BA66A06B61D9CB650F1E36B9965AA Madden NCAA 2010vers1A (John Madden Football Hack) GEN
+89C0B0452081B09E39B6345E7E08490BD0E971E5 Madou Monogatari I (J) [T+Chi(Simp)] GEN
+8D56F1B3F63AF57DCB49AC0DC676FF6DF28C82A6 Madou Monogatari I (J) [T+Chi(Simp)][a1] GEN
+A2F04A4C87F9E08442D3117E8EA0E94A6B8189F0 Mafia (R) GEN
+134086C458E20EEE1AB614E2DF64083942311E8C Magic Bubble (Unl) GEN
+1EEAD88AF324C58EBAF95E2D6F24AD969FEABC76 Magic School Bus, The (JU) (Prototype - Apr 28, 1995) GEN
+46A3D386495D71B14979A92E71E3D87B9B7296A6 Magic School Bus, The (JU) (Prototype - May 05, 1995) GEN
+3291CE39FBFF343916AAB43E53121166E2879DB5 Magic School Bus, The (Prototype - Apr 11, 1995) GEN
+7ACC08C2489C970B1208E1162791BFDA30E5DF67 Magic School Bus, The (Prototype - Apr 21, 1995) GEN
+6A746535E4D20385D506CDDAA05F0DA5693107B8 Magic School Bus, The (Prototype - Apr 25, 1995) GEN
+06BD39D487F63FE4BEBDD651247223767540E00A Magic School Bus, The (Prototype - Feb 02, 1995) GEN
+EE81E0809B2D5636D68869F6CF8D25A1C91627A0 Magic School Bus, The (Prototype - Feb 17, 1995) GEN
+AE82C6711051ED66B5C510D3632EB280FB10570C Magic School Bus, The (Prototype - Mar 07, 1995) GEN
+4100D0BE97ABDD04D207B732B45940673613928A Magic School Bus, The (Prototype - Mar 14, 1995) GEN
+792E039CE0760C908C80872363FD5D309FB33872 Magic School Bus, The (Prototype - Mar 27, 1995) GEN
+EA591191BD537C7A1C57EA275BB02F3A75C55C5A Magic School Bus, The (Prototype - Mar 31, 1995) GEN
+1351B74D8BDBDEB7E1D042C35E2D770BD925BEB3 Magic School Bus, The (U) (Prototype - Jan 12, 1995) GEN
+D87548D39FB639CE72A5C34C26B592C2C21D3C36 D Magical Rip Intro 1 (PD) GEN
+6568B3A4E096159776EF8687A80D43589741FD60 Magistr 16 (R) GEN
+80D0635083351F62E708538D4B31278D07170A73 Mahjong Lover (Ch) (Unl) [f1] GEN
+E6DC15766E10E7EE616C81EACD88C3A36406794F Mario & Battle City (R) GEN
+7C2EBE7C88503BC719D5BCECAE183619A7BE503C Mario 3 (R) GEN
+6C9444268413B76D698EA432CBCEB4CDC9A6CFAF Mario 4 (R) GEN
+7C41118E19F4C76594917BA80A0190D745F37F0B B Marvel Land (U) [b1] GEN
+BB33F6C65EE4B6445C0F667BFD0D0408C1E08604 B Marvel Land (U) [b2] GEN
+7B97A1A96BA1F349F0B5918A9D0817B5FB17D2FA B Marvel Land (U) [b3] GEN
+F5F5A6596D46EBF24A6AD283EC48ED0B4858E6A1 Mary Shelley's Frankenstein (U) [T+Rus_NewGame] GEN
+9CE76EF06B72FCA14E87977A3D939DCB57CACEC2 Math Blaster - Episode 1 (U) [T+Chi_xiaoguihun] GEN
+57EC609E3595695C901B6F516ED7D53D15288AF5 D Maziacs v0.1 by FlemTeam (PD) GEN
+A304C52BC56D27E5803F059B6B876BA3CC924698 McDonald's Treasure Land Adventure (U) [t1] GEN
+86D5A69B068289292C4A1E632DBBE99AED847E75 D MDEM2011 Demo (PD) GEN
+A1A9CFEF95BD2B4ECE257C4E16C2E94CEDED6439 D MDSA Benchmark Demo 1 (PD) GEN
+809BBB203DD2F2542E3B9987380E040631B788CC Medal City (SN) (J) [!] GEN
+4C142B359C59AA28662A908C06C8A980BEF090BC B Medal City (SN) (J) [b1] GEN
+FEFE6BB40C78978613F1287B3FE732FC3720E010 Mega Bomberman (UE) [t1] (Press Y for Invincible by xiao guihun) GEN
+3863AA529CECBFA29FA12090154E2E546C317ECE D Mega Drive Text Reader by Brunni (v1.00) (PD) GEN
+9B152EA600A0D246789BC85F1942C3DAB38A35E9 D Mega Drive Text Reader Sample by Brunni (v1.00) (PD) GEN
+1FCFC9EE3BFFC25388735782B0CDB829A7E40507 Mega Lo Mania (F) [!] GEN
+EC6AFF2CDCB5BC15F073C7CCF40E43D3CF021058 D Mega Point Presentation by Tumee (PD) GEN
+CD4F3804B9600ECD080D36D2297254C2CF59861B D Mega Q-bert by Jaklub (PD) GEN
+5955517511AC064B66274F60E984D2FFEE84A91A Mega Turrican (Beta) GEN
+75B4F764F23B16E376087E8F1843769AACEA639A Mega Turrican (E) [T+Frebeta_Generation IX] GEN
+6818ED923D778E1096BFA51BE40FD6AA0249D6A0 Mega Turrican (E) [t1] GEN
+0D77354F129F6949011898E4CBFC1A425CEA673D D Megafuck by snkenjoi (PD) GEN
+9A5EC12534137301ECC192AC80401EB82EC41968 Megaman - The Wily Wars (E) [f3] (SRAM Save by MottZilla) GEN
+80875320F06C6F73F33D8E94CAB60DAF7C0FD5E4 Megaman - The Wily Wars (E) [f4] GEN
+5FC896186573EA0546A907BFD0A264504FFD0167 Megaman - The Wily Wars (E) [T+Fre_Terminus] GEN
+DC5697F6BAEEAFE04250B39324464BB6DCDCAC7F MegaMind (SN) (J) [!] GEN
+EA4FBAD3CF237A248363BD63ED05AA90E061A958 B MegaMind (SN) (J) [b1] GEN
+D8FD3D5E69502AFF7118C4C90B6C6801909D93F5 D Meganes Tech Demo (PD) GEN
+58FA9BBBAF7DEFE4C2F6C36D852CC4EB2BE4164B D Memory Viewer v1.2 by segaman (PD) GEN
+69732B873318C60D97D9A8ED1BABF488ADDA3018 Mercs (W) [T+Fre_Terminus] GEN
+86619557A2E2E77A4DA7BCD711A8370EAFC48EBB Mercury Pwns Yuji Naka, Trigonometry, Bitches! (S1 Hack) GEN
+F08E3EA3B70F70AFF4C6391CFE60DCA9347F3EFC Metal Gear 2 Solid Snake (Prototype) GEN
+531E696DC003491811B0611B11AE8BAEA36F6035 Metal Gear Solid (R) [!] GEN
+6E4805C074134093E2E9BB4DE293F9EEE65E28D4 Metal Sonic 3k by Darkon360 (SK Hack) GEN
+AB7260B59458BD3A4D2BFB6EDDF0C927ECD6EF28 Metal Sonic Adventures (S2 Hack) GEN
+4F2E2403092C096654F941796233241C35D7788E Metal Sonic Adventures GX by Darkon360 (S2 Hack) GEN
+3ECAE7AB6CBBA74548EC2244E51416623855FB1F Metal Sonic GX Remake by Darkon360 (S2 Hack) GEN
+6FCCA3F09FEF1CC66D6565EF0FE421BFBF4E5EAE Metal Sonic Hyperdrive by Darkon360 (S2 Hack) GEN
+8349F1E55955FA2723C53531A3A5AE0E27AA6419 Metal Sonic Hyperdrive by Darkon360 (v2.0final) (S2 Hack) GEN
+4671F1F443B09FC3AD1A15A5D5FBA29D3C8460F1 Metal Sonic Overdrive (S1 Hack) GEN
+2098F74398EC877FF6782B22104A6C2C9F5E2342 Metal Sonic Overdrive v2 (S1 Hack) GEN
+CCD19E004CB06FEA9D046366172F3529D7C8C7F9 Metal Sonic v0.02 (S1 Hack) GEN
+CEA9D83C6E556A131539DCCA0B31CBEF0E17D36A Metal Sonic v0.03 (S1 Hack) GEN
+B357419663D1230C30F21552A411D6A0A6B2118C Metal Sonic v0.04 (S1 Hack) GEN
+F06D97F51789269C2DF13A77533FF1E8413C40D3 Metal Sonic v0.04 Beta (S1 Hack) GEN
+A9C6799C3080AFC4A42A48AD09145DF485428693 Metal Sonic v0.05 Final (S1 Hack) GEN
+37129644BFB970E6C533F9999207FE6813D143E9 Metal Sonic v0.06 Beta (S1 Hack) GEN
+C72527B9D2B65B435DA15767FE7D05590224C21B Michael Jackson's Moonwalker (W) (REV00) [T+Bra_Son Car][a1] GEN
+DA6A72FEC97704351D9EF10267ADDB7C119E70CB Michael Jackson's Moonwalker (W) (REV01) [T+Fre_Terminus] GEN
+AECF3D0E8BF6557D58829A2F0596BDB57F5B006D Michael Jackson's Moonwalker (W) (REV01) [T+Rus_NewGame] GEN
+4BB73450AC20F45CC9D390353725C1AB270DA924 Micro Machines (UE) [T+Rus_NewGame] GEN
+9F47FCC7BB2F5921CB1C3BEB06B668FFB292CB08 Micro Machines - Turbo Tournament '96 (V1.0) (E) (J-Cart) [x] GEN
+6FF5EF4F2B548E26354BE558092F8A3E273F3E51 Micro Machines 2 - Turbo Tournament (E) [T+Rus_NewGame] GEN
+34FF35AE3F68D54FC2C500E816EDFD23765C16A4 Midnight Resistance (U) [T+Rus] GEN
+EF268701F4BCE40174997C3CC8AB5148E2656E91 Mig-29 Fighter Pilot (J) GEN
+E158DBC8F9F04734A53EE6AB1AF298A336CAC04F Mig-29 Fighter Pilot (U) [T+Rus_NewGame] GEN
+C5E82C5786B52675D376872B3B985927D08FEED2 Mighty Morphin Power Rangers (Prototype - Aug 10, 1994) GEN
+49F545DFA50FCCD15D799FCAAEFD3D39C507BFB1 Mighty Morphin Power Rangers (Prototype - Jul 08, 1994) GEN
+0103BBF1D12A6A72AD00515429155B3C6020CFBB Mighty Morphin Power Rangers (Prototype - Jul 18, 1994) GEN
+C15F23E20AEE4D0664897E6CD29B77BD39228FC7 Mighty Morphin Power Rangers (U) (Prototype - Aug 04, 1994) GEN
+E1651F13DD1BCEDAD0ACC7D2C21298F9662CCF55 Mighty Morphin Power Rangers (U) (Prototype - Aug 08, 1994) GEN
+A91CF34AE5178696E66A71770872B3720265D61C Mighty Morphin Power Rangers (U) (Prototype - Aug 09, 1994) GEN
+25D2D6A5AB20E16B8B42B67E5FB338421B64B29B Mighty Morphin Power Rangers - The Fighting Edition (R) [f1] GEN
+9443E7879133D891ABEBE9B01302E8E6E96360E4 Mighty Morphin Power Rangers - The Fighting Edition (R) GEN
+EE3B33AB836AE27BF2A89C602206661F0B557F2E Mighty Morphin Power Rangers - The Movie (Prototype - Jul 13, 1995) GEN
+480CDADF79D884319DAF0D23A062555E816187FF Mighty Morphin Power Rangers - The Movie (U) (Prototype - Jul 17, 1995) GEN
+A10A3CA13C57030B411752231DA7BE2C1A6E81E6 Mighty Morphin Power Rangers - The Movie (U) (Prototype - Jul 22, 1995) GEN
+7A567082B0314D3E8D677D07B8BCCAF307C8C9C2 Mighty Morphin Power Rangers - The Movie (U) (Prototype - Jul 24, 1995) GEN
+1D950574A4547143368AC36BEAE42A3315BF2D55 Mighty Morphin Power Rangers - The Movie (U) [T+Rus] GEN
+85ED8E50CC40492576F1980F5D8145455C12A08D D Miniball SE v1.0 (PD) GEN
+0C9AFC4C263CF96DA4BB81A5BF16EEB8659F78BA D Minimalistic X-mas Demo (PD) GEN
+51F53EDE6227205EE00BB01DF7DBE73DE4D53483 D Mirror Mirror Demo (PD) GEN
+04FFAB21052E4F4CC66C61FE3322915083F86262 D MMD Player (PD) GEN
+241499657295464D4F064645B4BBFC2AFC08CBB9 D MMD Player Test (PD) GEN
+D2DB50B20BF9C640152148E46914851E39365128 Mobius Adventures V2 (S1 Hack) GEN
+6AC37EC4C98A92551B350BE4465CDB755F3E4974 Mobius Adventures V2.5 (S1 Hack) GEN
+2711D00BF3F0CC36CF20206C1F272B282166714F D Monsquaz SWF by Oerg866 (PD) GEN
+F8F19942A48CCA82952F6520A950D10EAE7193EC Monster World IV (J) [T+Chi(Simp)] GEN
+91BB0C1F54CE68287233E3B36F0BA3C96CC574C6 Monster World IV (J) [T+Eng20080106_DeJap+Demiforce+fix2.2_Michele Di Somma] GEN
+7E48AAD44E4E3B16C87DE8F71E6826E22EF900F3 Monster World IV (J) [T+Fre0.40_Floflo] GEN
+65D9890546581F37E9F263881E316156079374F9 Monster World IV (J) [T+Ita20080518_Michele Di Somma] GEN
+1739EA0B9BA2C297D51383DEF70F7BC3EA456ED1 Monster World IV (J) [T+Rus0.98_Chief-Net] GEN
+5424A71F243B5F80A253549B038969A7A937499F Monster World IV (J) [T-Eng1.02_DeJap+Demiforce+fix2.0_Michele Di Somma] GEN
+F1C19D812767C21CC278B2FC88FCEC4279F874A1 Monster World IV (J) [T-Ita20080415_Michele Di Somma] GEN
+6C90E14B6DD1CE6FC33F74DC624EDC2E00FC5038 Monster World IV (U) (VC) GEN
+4048823B013E48B11F69726279314BF97F6941EA Monster World IV (U) [T+Rus_Chief-Net] GEN
+71AA22E910D629D8BD7666E85E9B10DC6EC7F795 Monsters Ink (R) GEN
+03D800DB34C5531C4F7C164BE32943F99F019BCC Mortal Kombat (UE) (REV01) [T+Fre_Arkames] GEN
+4E7935DF1EE65493887625BAE434CCA42B0D5783 Mortal Kombat (UE) (REV01) [T+Rus_Shedevr] GEN
+CA4D771F60992D0AC26E73B665EBBBAF9F8A670D Mortal Kombat (W) (REV00) [T+BraRC1_Trans-Center] GEN
+1EFFDEBE6B7387D44DC35051257F04A33275428B Mortal Kombat (W) (REV00) [T+Rus] GEN
+CB2A043468BD930C739EEC26E59B48D9316C0615 Mortal Kombat (W) (REV00) [T+Rus_NewGame] GEN
+C6706E16F6621CD343E5DE82F5CAB54F77848CD2 Mortal Kombat (W) (REV00) [T+Ser_Cole Dog] GEN
+32D2A7B33E754D78A7D618B99C021A4EECEA2B96 Mortal Kombat - Blood and Translation Fix by Hiro1112 v20060806 (Hack) GEN
+A1A2F1B068CD40180BA7B796B3B387BDC7B63D2D Mortal Kombat - Blood-on (Hack) GEN
+12A9491E8D129163A0990C2B458437E7E2D30FCE Mortal Kombat 3 (U) [T+Rus_NewGame] GEN
+896533B185959F26B01D99BEFEC7A5F824D60EF5 Mortal Kombat 3 - Smoke Enabled (Hack) GEN
+77FF57D10EA517DEB70FD1A8F90481E68EFF7C62 Mortal Kombat 3 - Smoke Noob Saibot Enabled (Hack) GEN
+DBBAA6043923C50DF9BD0918781E6D39FE3B6FE6 Mortal Kombat 5 (R) GEN
+28636BFFE45CB9EA7391DFEEF7280B2CB319841C Mortal Kombat 6 (28 People Hack) GEN
+D3E6D967892F54EE46B811463D9AB0A52483C6B6 Mortal Kombat Graff Kore (Hack) GEN
+B63D7F0E28C7991ED0D158EB0113F4946785AB1E Mortal Kombat II (W) [T+Rus_NewGame] GEN
+77BA4763D96D6358ED9E339CA6AD5190BF261EBB Mortal Kombat II (W) [T-Rus_NewGame] GEN
+3833B25934A4C98D3D11F41DBE42E50E8F813700 Mortal Kombat II - Defaults to 6 buttons (Hack) GEN
+7C33BBEB2AA9391937B284C67EC302B1A68FB03E Mortal Kombat II New Version (Hack) [a1] GEN
+FE70EF0422A538DD12EA8C74B5CC1FAAF7CFCD0F Mortal Kombat II New Version (Hack) GEN
+B71882990F556FEBD4BE8418CA200A012B7D2221 Mortal Kombat II Unlimited by Smoke (Hack) GEN
+7B1910CD1C7B16F71CE8FCCD436FF68E2A0F9199 Mortal Kombat II Unlimited by Smoke v0.25 (Hack) GEN
+FACB42A6A8E1901F565975AF78119F6984C2C13C Mortal Kombat II Unlimited by Smoke v0.40 (Hack) GEN
+041B74AEB720B87E6A6276340D874AC2364B7578 Mortal Kombat II Unlimited by Smoke v0.51 (Hack) GEN
+B2431508B7414621141DB4D54AC119C91CC2B16F Mortal Kombat II Unlimited by Smoke v0.70 (Hack) GEN
+31B80C6BC4102171867F7DB7B5AE227088D5E97E Mortal Kombat II Unlimited by Smoke v1.0 (Hack) GEN
+7CC5805241471E8352621F892B7DFFDAAF5F7667 Mortal Kombat Revelations by Dark Eva (Hack) GEN
+A21DD77FB96A896ED82FA4B307E785850C212E11 Mortal Kombat Revelations by Dark Eva v1.00 (Hack) GEN
+7D37E81F078624C8DE61820DC3858C6794C99594 D Most Greatest Game by Paul Lee (PD) GEN
+358BB886D560181B0081C0C54F67592E613AAB4C Motobug the Badnik in Sonic by Polygon Jim (v2010-06-19) (S1 Hack) GEN
+03EA0B1444071AC29E91ED3BB44E67E4FB392092 Mr Needlemouse v2.0beta (S1 Hack) GEN
+9405BC497A45B50E42077B23BD6446DD148524A6 Mr. Nutz (E) [T+Rus] GEN
+077CB0BE5A4AF5ACEC6427C7EC0E2E44B55BB320 Mr. Nutz (E) [t1] (Infinite Jump) GEN
+DAC46AB410CDCEE10BEE1EB60423CBB93F6BDB9D B Mr. Nutz - Hoppin' Mad (E) (Prototype) [b1] GEN
+EF942681A5B68F3BD95CDA10A03D8C15488D88F3 Mr. Nutz - Hoppin' Mad (E) (Prototype) [f1] (Pause Screen) GEN
+B6277F7488244D03B1882910EF25B1DB4E8D0BA3 Mr. Nutz - Hoppin' Mad (E) (Prototype) [f1] (Real Hardware) GEN
+7F163F9DD6D8AB6A0F4A33D3073F9CA520ABF271 Ms. Pac-Man (U) [p1][!] GEN
+6C2E7415894D2312ABB798D0F9A91157D86D4E9A Mulan (Unl) [f1] (Complete) GEN
+F428BF17CA5B69B298C467A39DC2D43748377D0C D Multitasking Demo (PD) GEN
+EE77AC298F967F6D93D4207FB103B7BAA0A73479 D MVS Player Test by Kaneda (PD) [a1] GEN
+E4E39D46E9484396365BB5922D54FB5EBFF7FF05 D MVS Player Test by Kaneda (PD) GEN
+AA2F0AE0F53D3009030ABF83F6FB5D8F649C5CBB D My Little Pony Friendship is Magic (PD) GEN
+202106E035AE23D1C2FBDF829D173A91031D365D Mystic Defender (W) (REV00) [T+Fre1.0_Terminus] GEN
+F7E1D99028C027F8A10A76EF2041D556A96B4B85 Mystic Defender (W) (REV01) [T+Fre1.0_Terminus] GEN
+4D39812FFC12FF929CA942D3CB5FEA29160125BD Naosi (S1 Hack) GEN
+1E6A329D4D2E9EA7F94138EF1C96CB573E34E87C Narnia (R) GEN
+B96BB0E0505F735FC2E0D64A102B1B6B50132058 Naruto (R) GEN
+C9727CA783D730D4EE35EF18023C55A0B8D101E2 NBA 2000 (R) [!] GEN
+5820C8DB66CDF74FD926D529E469133666BABB46 NBA 2005 (R) [!] GEN
+42C55ADAD0249BB09350D1AC7C9BFB737ED091C8 NBA Action '95 (Prototype - Dec 02, 1994) GEN
+2C34500BF06BBAC610E8FCA45DB48382E32C8807 NBA Action '95 (Prototype - Dec 09, 1994) GEN
+C3F88B334AF683E8AC98CAFAFA9ABF4DFE65A4B7 NBA Action '95 (Prototype - Dec 15, 1994) GEN
+35F7436FA15591234EDCB6FE72DA24D091963D30 NBA Action '95 (Prototype - Dec 22, 1994) GEN
+248E67CAD67118A1449DE308BAC0437641BDA3EC NBA Action '95 (Prototype - Dec 24, 1994) GEN
+2604A03C1DC59538A82E32BCC6F8A995BD8AF609 NBA Action '95 (Prototype - Dec 29, 1994) GEN
+4DDBE2F458915DB0DA45FA490D653F2D94EC1263 NBA Action '95 (Prototype - Dec 30, 1994) GEN
+BA08A3F042F96B4B3BB889BBACB6A5E13B114F0C NBA Action '95 (Prototype - Dec 31, 1994) GEN
+3DBC1A80005EB6783FEEB4D3604D382D1CF688BC NBA Action '95 (Prototype - Feb 01, 1995) GEN
+58C88D26BAFFD0F68C2B5D95284323BA99DB9B5A NBA Action '95 (Prototype - Feb 1, 1995) GEN
+3A5A95A79B1B2DA0B35E8CDE02D8645FE474FDDE NBA Action '95 (Prototype - Feb 2, 1995) GEN
+B50BE710436A3CB1F7644FDFAC5D5098CD9DBB2B NBA Action '95 (Prototype - Jan 03, 1995) GEN
+3A60332EE684FF8ACCD96AEF404346E66E267B6F NBA Action '95 (Prototype - Jan 08, 1995) GEN
+9F6A2EA386D383AEE3BE06D6B74FDA67B1EBD960 NBA Action '95 (Prototype - Jan 12, 1995) GEN
+2FDB8879D50D963D984C280CAB2E279B9479081F NBA Action '95 (Prototype - Jan 15, 1995) GEN
+591288688956CEC3D0ACA3DD099B3E0985CA947A NBA Action '95 (Prototype - Jan 21, 1995) GEN
+F219274A65C31D76A2D6633B7E7CF65462850F47 NBA Action '95 (Prototype - Jan 22, 1995) GEN
+EB99F0E1CAC800F94743FDE873448E56EDB46333 NBA Action '95 (Prototype - Jan 24, 1995) GEN
+32104D3585DCBF190904ACCDB9528F0B7105EB4B NBA Action '95 (Prototype - Jan 27, 1995) [a1] GEN
+90C246DCB8CCEA0F30AE5582B610721FC802F937 NBA Action '95 (Prototype - Jan 27, 1995) GEN
+F1AFFB6E01CA23B67AEE9E1C1767F9EC13849823 NBA Action '95 (Prototype - Jan 28, 1995) [a1] GEN
+DD1256EFA397A56D461E2BC7AEC9F72AFF9B04FB NBA Action '95 (Prototype - Jan 28, 1995) GEN
+AB90DAF9791FA7347FB8F040E27F91B6BAE46E1E NBA Action '95 (Prototype - Jan 30, 1995) GEN
+492776FC2659091D435A79588EFCDD8E06D3CD0B NBA Action '95 (Prototype - Nov 18, 1994) GEN
+0EEE2E7296E3EED5DBF85954CE14A53622AE3D64 NBA Action '95 (Prototype - Nov 23, 1994) GEN
+AF63F96417A189F5061F81BA0354D4E38B0B7D76 NBA Action (Prototype - Jan 04, 1994) GEN
+DA6FCC1D7069E315797DD40A89E21963AB766B9E NBA Action (U) (Prototype - Jan 16, 1994) GEN
+D5A6FBF8FE19BF70631A847E6B5E6A35878C7AE8 B NBA Action (U) (Prototype - Jan 27, 1994) [b1] GEN
+115C2E8CFA6BC45767BA47EFC00AEDE424A6DE66 NBA Live 95 (K) GEN
+D467BA9DCC4EC5B17288CE3987DEF5E6DB56B9DA Need for Speed Undercover (R) GEN
+27CD294E996A7FB7A4724A6C74118E618222E238 D NeoMythMenuDX v2.4 MDBIOS (PD) GEN
+B714036A95020EED1562917ACCEA1EF04C6B76FD D NeoMythMenuDX v2.4 MDEBIOS (PD) GEN
+898F878D7ACBC2D6DC82986B76B5C9695573AFC3 D NeoMythMenuDX v2.5 MDBIOS (PD) GEN
+D55DF720A8F0CCA7A217B383F3A10396FA58697F D NeoMythMenuDX v2.5 MDEBIOS (PD) GEN
+DBBA3E4546AF32DED02B01D6E4EE0F36F21005CD D NeoMythMenuDX v2.7 MDBIOS (PD) GEN
+0422507F8D24E71BED3DC26D554B4E85D2FC736B D NeoMythMenuDX v2.7 MDEBIOS (PD) GEN
+05FD2397E3CAE7ED953C8F978EBC159A3C69F316 D NeoMythMenuDX v2.8 MDBIOS (PD) GEN
+86852AF57D71177E479A36EFDC6FF927CA50E81F D NeoMythMenuDX v2.8 MDEBIOS (PD) GEN
+1BCBFD21A162CEF25273E691BB4BB978FB21ABC3 New Sonic The Hedgehog by kchrules (S1 Hack) GEN
+E7A8421A83195A71A4CF129E853D532B6114B1F6 NFL '95 (Prototype - Aug 01, 1994) GEN
+7F453CA6499263054E2C649B508811B46D6EDF4F NFL '95 (Prototype - Aug 05, 1994) GEN
+C55FF8F24D99C57C23AD1EF9FE43A7A142DCDC32 NFL '95 (Prototype - Aug 10, 1994) GEN
+8A7320033449CC9972B2DB25752150FE4C2A1FAB NFL '95 (Prototype - Aug 12, 1994) [a1] GEN
+7CFB0E06CC41D11EC51CA5F1959A5616010892AD NFL '95 (Prototype - Aug 12, 1994) GEN
+839DE31449298D0970BDE787381A5E331E1FD31F NFL '95 (Prototype - Aug 17, 1994) [a1] GEN
+BB949355B764A48015EDC4FBBF0F89D4C7400C31 NFL '95 (Prototype - Aug 17, 1994) GEN
+D1A48818A982025B0833C06A584382122D1CCFB2 NFL '95 (Prototype - Aug 22, 1994) GEN
+C42A2170449E4E26BEAA59CC4909E505BE751AA9 NFL '95 (Prototype - Aug 30, 1994) GEN
+FD345D92799224475F0107751512ADF584899C6B NFL '95 (Prototype - Aug 31, 1994) GEN
+EA1126F9CADE3EC680DD029AF10A5268CD5AFA72 NFL '95 (Prototype - Sep 01, 1994) GEN
+83C70177164E418B988ED9144D9D12C0E7052C3B NFL '95 (Prototype - Sep 02, 1994) GEN
+C07558F34B7480E063EB60126FC33FBA36AE3DAA NFL '95 (Prototype - Sep 04, 1994) GEN
+F25CBABD3F6284387E66EAA72FA4124F3768121E NFL '95 (Prototype - Sep 05, 1994) [a1] GEN
+787F8093D8A5C55EE9DCAA49925752169527FA62 NFL '95 (Prototype - Sep 05, 1994) GEN
+59C548514BEE4BE7A5E6E3483AC3122D410A7E4E NFL '95 (Prototype - Sep 06, 1994) GEN
+DDF2B988BC035A0736ED3A1D7C8E6AA8CD2625F8 NFL '95 (Prototype - Sep 07, 1994) GEN
+F8689FD01DEDCED28CA417BF7FF8A9EEA9973C3D NFL '95 (Prototype - Sep 08, 1994) GEN
+2BA79A9A638894ABBCD0702BA380B68CCAEBB50F NFL '95 (Prototype - Sep 09, 1994) GEN
+2E3E044BD6061002444BDC4BBE5DE1F8C8417CE6 NFL '95 (Prototype - Sep 11, 1994) [a1] GEN
+91BABF6F0D86E19E82C3F045D01E99EA9FE0253C NFL '95 (Prototype - Sep 11, 1994) GEN
+F1305E1841EE691BBDCF6CA8E57FAC1F3A0D52AC NHL 2003 by Pmack (V1Ad) (NHL '95 Hack) GEN
+FCC633E5D7CE19E8A9068FECAED1073F121828CD B NHL 94 (UE) [b1] GEN
+4609E0D31BB0093058B0C85D767B8439F01B1E84 NHL 96 Remix by Pmack (v1A) (Hack) GEN
+2529A10980DEA625A3EA386DEC05EE3F1C5E5EE8 NHL All-Star Hockey '95 (Prototype - Oct 01, 1994) GEN
+7E94021E7E00DAE9287B827E11A2C7BA510C815D NHL All-Star Hockey '95 (Prototype - Oct 21, 1994) GEN
+B2FFF4F0E1D87DD001AAD44EDFBCDE0266F5FB7C NHL All-Star Hockey '95 (Prototype - Sep 14, 1994) GEN
+EDAE68144C9B90764E7591BE23E27FF1A34B2AB2 NHL All-Star Hockey '95 (Prototype - Sep 29, 1994) GEN
+FF9E08E779ED07F0D055BA7BA34D602C5E6F892D NHL All-Star Hockey '95 (U) (Prototype - Dec 01, 1994) [a1] GEN
+212449EE98B48E3AA8E7BEE5791E6359F10F06DE NHL All-Star Hockey '95 (U) (Prototype - Dec 01, 1994) GEN
+130F95BCCD159234C117890B0412B415B43161A9 NHL All-Star Hockey '95 (U) (Prototype - Dec 02, 1994) GEN
+3F62734A8C7E56CCDE24CC6D02C7CE1A95B4EEC5 NHL All-Star Hockey '95 (U) (Prototype - Nov 07, 1994) GEN
+668A8453BF88E8D27A6F6D123198AADDA05215C5 NHL All-Star Hockey '95 (U) (Prototype - Nov 09, 1994) GEN
+C2133C68FBC0DAA9B0BD97D21DC73D03278805DD NHL All-Star Hockey '95 (U) (Prototype - Nov 19, 1994) GEN
+8E1806D57D2EB876543FE212E470D73F2D36A3E5 NHL All-Star Hockey '95 (U) (Prototype - Nov 21, 1994) GEN
+5D88854550A5B69B2623B5BA74424B1E191B9682 NHL All-Star Hockey '95 (U) (Prototype - Nov 22, 1994) GEN
+4550BAF4F39FF20AACB52AADE9D03598C47CE1B2 NHL All-Star Hockey '95 (U) (Prototype - Nov 23, 1994) GEN
+C36C767BC1CFCC3301CA84FA37BC22BFB1E3678D NHL All-Star Hockey '95 (U) (Prototype - Nov 27, 1994) GEN
+5E54FE1F0A3DEE5A9CEC0722AB9EB5F17B6862DB NHL All-Star Hockey '95 (U) (Prototype - Nov 28, 1994) GEN
+574BBF1B0890CA46FBEE9E3F211060F15C02D037 NHL All-Star Hockey '95 (U) (Prototype - Nov 29, 1994) GEN
+4E6DD50D0F671B89C4CE3F7D1A63ECB68208DC8E NHLPA 2003 (R) [!] GEN
+3E3F8FC70382DAAD341DAB634A9BEF2C49165BED NHLPA Hockey '93 with 06 Rosters (Hack) GEN
+9E8A750D6AC2DA922B0CA91A0E105D7EBD90F395 NHLPA Hockey 2008 Playoffs Edition (Hack) GEN
+C48A0F275A46A4A814A4AA0926C084D27812F5EC Nightmare Circus (Prototype) GEN
+ADA3262FF01F3E392122C20080831AE417BD88FC D Ninja Fight Demo (PD) GEN
+07625F633692CBB40328315B300458857D34A414 Nobunaga no Yabou Haouden - Lord of Darkness (J) [T+Chi][a1] GEN
+56AB90BE258290D17EAB82971035B530E15CF7C7 Nobunaga no Yabou Haouden - Lord of Darkness (J) [T+Chi][a2] GEN
+74CEC4335B4AF13A7EA2406D833FFE2BB6211A56 Not-so-Super Sonic 2 by MainMemory (S2 Hack) GEN
+4047E52AF6C4F219B37478A80B8BDF77E7AFC2D2 Odyessy Special (S2 Hack) GEN
+2543B4F914F1219A51F9CD75ED7F778BD99EE8A5 B Olympic Summer Games Atlanta 96 (UE) [b4] GEN
+4726AF08FC350047184CC7E3412457DFE0B4F706 Omega (S2 Hack) [a1] GEN
+B7A21F2F5FB432D5C840AEA8E68A9239C9882CCB OMG Knux and the Red Rings (S1 Hack) GEN
+B2C496B618CF026E3940CDF4AB0FB58D36FAF04E OMG The Red Rings (S1 Hack) GEN
+821BCB001CB37B22454979973ED68CEE36286ABC On Dal Jang Goon (K) GEN
+E939C45AB3E56F70A809355F14C949646AF1E13D One Ring, The (REV09) (S1 Hack) GEN
+1C34CB3FFFBAA81D350AEA0B81B74C28E86C9BF5 Ooze, The (E) (Prototype - Jul 28, 1995) GEN
+1A26F78560B70BA233B54E9506A2D6D444E03BC8 Ooze, The (JU) (Prototype - Jun 29, 1995 - B) GEN
+9B48FDCEA1F6238FF7A9998632F6910F4A3BE63B Ooze, The (JU) (Prototype - Jun 29, 1995) GEN
+678A3BC0B0E1CADC3E4EB48FDF685E1E256E0AC3 Ooze, The (JU) (Prototype 104 - Jun 22, 1995) GEN
+DE12E7C7A8FDBD032A1892F744D2B75C735EE3B1 Ooze, The (JU) (Prototype 112 - Jun 26, 1995) GEN
+62DA42D68EE70B92886A9435BBE86472EF7271B8 Ooze, The (Prototype - Jun 15, 1995) GEN
+7CF62D9861A076AAB2CCC24F8AF42098595D31E7 Ooze, The (Prototype - Jun 19, 1995) GEN
+F45AA22CCFFBDC631C9B4B0106E682AE180BEFEC Open Season (Unl) GEN
+6EB88D71562415364C11B8DAC1EB6FEE24A53B95 Open Season 3 (R) GEN
+9282ED75EBBD7B044CE0870C943785F33A5D7019 D ORGTEST2 by Michael Stamper (PD) GEN
+F7CB0FEE5AB9A161B2998C92CEF0D59BE53C704D D Overhead View by Haroldo (PD) GEN
+47F0F5B49B5F9BC0A22D352486D9488E6C93B167 Pac-Panic (E) GEN
+0516B59E35B3C36651852FBA231E351CFC239B22 Paddle Fighter (SN) (GNKO) (J) [!] GEN
+B88AC50A948F2989E47731DEF9AEC68C3E04A562 B Paddle Fighter (SN) (GNKO) (J) [b1] GEN
+D8688CF613A3EE493A86D8A975EF0F5769FA0E45 Padis Hockey' 07 (R) [!] GEN
+D6752AAD04FF168EB176595AA01C1120AEE39B5C D PAL512 by Olivier Brosseron (PD) GEN
+6C68B191F7B1B488458D0A6C15F691968F529F14 D Palette Tech 1 Demo (PD) GEN
+6F79D22BF243B74A419A53A3BD63ACAF0E913095 D Palette Tech 2 Demo (PD) GEN
+19666F0CBABD2E52BD6BD4C87C1DD2E47A73646F D Palette Tech 3 Demo (PD) GEN
+C893721CAA1862309230B9A1011245DBA3C5DD76 Pallete Change (S2 Hack) GEN
+84C06DFC1A4ADFAB378265176FE0A9B2C20F98FC D Panic Lift Demo (PD) GEN
+EFE9DAF8D73B69E026B8B4747F657135086B2A35 B Paperboy II (E) [b1] GEN
+8C608098AE3645DB8B8F6A2B0A244D51DBE1AED7 D Parallax Scrolling by Scroger (PD) [a1] GEN
+F38A6CBCA54CCFF1F5BF3513DC86F77279C0FAB5 D Parallax Scrolling by Scroger (PD) GEN
+0C6DF376BC1F367FDADB2C269504A1F66F2499D7 D Partic DAC2 (PD) GEN
+CAB763A2D6AC0CED127DBDDF547983DCB22D7852 D Partic Demo (PD) [a1] GEN
+413B4459668AD493A1EEE7251D5B9766FF1BFF7D D Partic Demo (PD) GEN
+017AF15B93A7F2E3C9F6310FE01C234F49C47B13 B Pele's World Tournament Soccer (UE) [b1] GEN
+4C830ACE4590294BB374B4CAB71EBEBF44D9A07A Pete Sampras Tennis (UE) (REV01) (J-Cart) [x] GEN
+AF60F7B9E7C66F55383E024B78262E8399D6EC20 D Peter Tomarken Tribute by Local H (PD) GEN
+E93956D6A81339B6044BE9CE755B58BBD4354104 B PGA Tour 96 (UE) [b1] GEN
+AB0507FFC1C82A6D718049582270333F90725508 B PGA Tour 96 (UE) [b2] GEN
+F4062263569F8629894B8EFB68E655603BE4FCE8 Phantasy Star - The End of the Millenium (E) [f1] (Level 99 Bug from VC) GEN
+F055FC02142334EA798C696EC8D4C262CA28D847 Phantasy Star - The End of the Millenium (E) GEN
+8F55B37C96615341B35616E55DAB4DE8121DA6EF Phantasy Star - The End of the Millenium (J) [T+Chi(Simp)1.0b_Phanteam] GEN
+ED390CF2DABB71387317CF305411E20A082DC958 Phantasy Star - The End of the Millenium (J) [T+Chi(Simp)1.3_Ken Tse] GEN
+A3043E0203AA97DE807D8ACF2F5FF6CE0CA44D71 Phantasy Star - The End of the Millenium (J) [T+Chi(Trad)] GEN
+92E225561D097AD7D89368A7F9D4E53A93AB3637 Phantasy Star - The End of the Millenium (J) [T+Rus_bybyc9lc9l] GEN
+2C1F7F9D7B9CAF177017EE3E4EFC09B5B4D3115C Phantasy Star - The End of the Millenium (J) [T-Chi1.1][a1] GEN
+36B2F665857554A26651DBF29BEE7177A21DCAB6 Phantasy Star - The End of the Millenium (J) [T-Chi1.1_Ken Tse] GEN
+81FE74C288BCF97B70758442C520EC47308CFCEE Phantasy Star - The End of the Millenium (U) (Prototype - Aug 15, 1994) GEN
+D72B9D68CFB54B4221F3A2416EAC30A94ACCD427 Phantasy Star - The End of the Millenium (U) (Prototype - Jun 08, 1994) GEN
+803877F317EEAAEC57AF07451A5CCF9309DB513C Phantasy Star - The End of the Millenium (U) (Prototype - May 30, 1994) GEN
+E0C3DE9991A03FD48DC85CAAE6415AAAC016AB4A Phantasy Star - The End of the Millenium (U) (Prototype - Nov 07, 1994) GEN
+6720D3AFCD28CAD06AC15749843D2A6995F403DC Phantasy Star - The End of the Millenium (U) (Prototype - Oct 27, 1994) GEN
+1C72D88724748CD59E6C3641399586EF0E4C2513 Phantasy Star - The End of the Millenium (U) [f1] (Level 99 Fix by Sixfortyfive v1.0) GEN
+D91F5C54C3A0D5D2B2E186B227592676EEBC9BE5 Phantasy Star - The End of the Millenium (U) [f2] (Level 99 Bug from VC) GEN
+6FA521645B4A9ECFDA6EBF19D107A8069DE37A00 Phantasy Star - The End of the Millenium (U) [T+Bra_Hyllian] GEN
+85437DE1177080F0F0D18A444CF669687E3A2D91 Phantasy Star - The End of the Millenium (U) [T+Fre_Terminus] GEN
+921D1A9050633F0028A2274523DE15B449D03142 Phantasy Star - The End of the Millenium (U) [T+Spa_sayans] GEN
+42811640CD622ECB0330902206127481C1A069AF Phantasy Star - The End of the Millenium - Difficulty Mod v1.0Arranged by Sixfortyfive (Hack) GEN
+1131C8FBFBB7EFC27A25D120FFAB857B595CA05D Phantasy Star - The End of the Millenium - Hard Mode Mod Double Experience & Meseta by The Komrade (Hack) GEN
+BF52BA9FB52EDDDCECF50FB73764DA22761A3B4A Phantasy Star - The End of the Millenium - Hell Mod V2.6 by The Komrade (Hack) GEN
+7C322A4C778B6EEF2D0B651ED2E116F9FBEAF903 Phantasy Star - The End of the Millenium - Purgatory Mod V1.4 by The Komrade (Hack) GEN
+E179263E42F53A3193B15D300CD3E3D4543BD401 Phantasy Star - The End of the Millenium - Purgatory Mode Mod Double Experience & Meseta by The Komrade (Hack) GEN
+D93C9CDE3B267C900016346C2E25EA0ABA09B8E1 Phantasy Star II (J) [T+Chi] GEN
+F50951AFFF8A182527472B97C7EF107A0E56AA59 Phantasy Star II (J) [T+Chi][a1] GEN
+CEAEE5C1EFE492F0697B27C0A5646E3F2897DA67 Phantasy Star II (UE) (REV01) [T+Eng1.0_Naflign] GEN
+50A1EE0FC7DEF1971DE2D7CEBCFD8555BEC75AC3 Phantasy Star II (UE) (REV01) [T+Fre0.10_Arkana] GEN
+2BA8D5EA59E600CD61D81978AF740DF1A75FB86C Phantasy Star II (UE) (REV02) (VC) GEN
+4AB6439B72F719E853B724091335D1FACB945CD6 Phantasy Star II (UE) (REV02) [T+Chi(Trad)] GEN
+9ECA7C9C58BB1D3980B5D62C764320D84D3C9896 Phantasy Star II (UE) (REV02) [T+Fre0.10_Arkana] GEN
+8D46B88B896D2C44449D41A0A558ED90AB6ACA71 Phantasy Star II (UE) (REV02) [T+Rus_GrayLight] GEN
+F33E5744F94DC0364BD548BF937E194E4C630666 Phantasy Star II - Amia's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+08C6BEAB6F02AD533FB814A8A877849DA67FC1A4 Phantasy Star II - Amia's Adventure (SN) (J) GEN
+46A0E249B9564ED0D3D2DF2435E42F0D7BDF3D97 Phantasy Star II - Anne's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+72BBB37E6B42D98B80F594A3B70108E6360AA56D Phantasy Star II - Anne's Adventure (SN) (J) [T-Eng1.0_MIJET] GEN
+D99E63D7840BC8F6B5691897A9D6F7684D0F8628 Phantasy Star II - Evil Overload v1.0 by The Komrade (Hack) GEN
+1D13D0A6A4730A0E67994968CE705388C0E331B6 Phantasy Star II - Evil Overload v1.02 by The Komrade (Hack) GEN
+21B06F683D7BC34BE61740C0986867F7748CA18E Phantasy Star II - Huey's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+20073E5396AD686773324E15D34DD2375D51771D Phantasy Star II - Huey's Adventure (SN) (J) [T-Eng20081106_MIJET] GEN
+731576EBDC8999417859CA440901D6C521D91477 Phantasy Star II - Kinds's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+C25F1468786CB8CE70C34DFC87B28C6FECF1F023 Phantasy Star II - Kinds's Adventure (SN) (J) [T-Eng20081213_MIJET] GEN
+759CA49CA18A5E1A9F6D55770A50F5BCF3D3FCCE Phantasy Star II - Nei's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+BC1B2955D1EAD44D744DACDC072481DFF42E4D81 Phantasy Star II - Nei's Adventure (SN) (J) GEN
+24C2FAB4888560D7F62093B9B5C35802F76FFCA7 Phantasy Star II - Numan Revolution v1.08 by The Komrade (Hack) GEN
+D3ADCD635CA90FDBC8551376D0CCE7D42D521FC1 Phantasy Star II - Numan Revolution v1.1 by The Komrade (Hack) GEN
+3462B67944FA467A616106CF6BE3ED2BB282F51E Phantasy Star II - Rudger's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+DDA0783CD5C6340C8DDE665BE22366108FADF50B Phantasy Star II - Rudger's Adventure (SN) (J) GEN
+B3EA1A8B0E749AD5889A414DD4CF99AEE83D63FB Phantasy Star II - Shilka's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+73E091150842FE130108B3EEB3CE609A702F813B Phantasy Star II - Shilka's Adventure (SN) (J) [T-Eng20080628_MIJET] GEN
+437A2D2899F18544AF981BE64DE23583AAAF352B Phantasy Star II - Yushis's Adventure (SN) (J) [T+Eng20100710_MIJET] GEN
+85679E11000387B6EF002C53BB03593F1C3F1C11 Phantasy Star II - Yushis's Adventure (SN) (J) GEN
+569EB1235935E78C30097B47E3CAF4AAC53EBDDD Phantasy Star III - Generations of Doom (UE) [T+Rus_NewGame] GEN
+F707FC20A6F34643691784E44D342E6D2C0A7FC4 Phantasy Star III - Knife Only Challenge (Hack) GEN
+CA8A4289FF187B686F05C86A4A58A2F19D5FD48F Phantasy Star III Deathwake Font Edition by Aridia (Hack) GEN
+2F65813B74988862CDB0E825088B433BBA552C40 Phantasy Star III Easy Edition by Aridia (Hack) GEN
+D672E456F1AF120D1FA7137C3FBEE1D9F62D9296 Pier Solar (Unl) (Beta) GEN
+2E2B03CDF58662B450AC09E9883D5767CE2BE350 Pier Solar (Unl) (REV01) (Reprint Edition) GEN
+B083D6E1612B99155EA818C86BB8EF8054DE88B5 Pinocchio (U) [T+Rus_SergeyK] GEN
+D818A0FB9B3E80689819DC8BA7FEF1AE94DD07F6 Pirates of Dark Water, The (R) GEN
+95EB1D0EB61231973ED2698E64A0131967BDB4D6 Pirates of Dark Water, The (U) [T+Bra_ctraducoes] GEN
+B0C43747475DB6DE204D4C29AB08EAC55729F50B Pirates of Dark Water, The (UE) [f1] GEN
+854609211EAF0769C4C0CCB45EFD0BE98FEEE8F9 Pirates of the Caribbean (R) [!] GEN
+115B7B2C932B5F41A9B554F00403354A720937E8 Pirates of the Caribbean - On Stranger Tides (R) GEN
+48D36DE3FAB148EF919058C664CF8110BE9308DB Pirates! Gold (U) [T+Rus_Magic Team] GEN
+F0E49AE369DB53858DAE047FE2AB0FDA7CB206EE D PlacaMaster 68K R12 by Tom Maneiro (PD) GEN
+EC870F0FCE69B2B30FF37C348FB07D4BA6469A48 D PlacaMaster 68K R13 by Tom Maneiro (PD) GEN
+FFD7EC18517DE061EF60F302FDC205768BA0F690 D Platformer by sik (PD) GEN
+5D8122E9AA855AD2FD7CD0F94CBB79D3DC37C6B9 Pokemon Crazy Drummer (R) [a1] GEN
+D79240064C08C8EC5D8C9145D74917092D8F7A21 Pokemon Stadium (Unl) [f1] GEN
+06E2BA99EF888738CCA7811CB1E629ECA806D207 D Pong Demo Code 1 by Pascal Bosquet (PD) [o1] GEN
+EE2F58EC2CFDCA69E28C0D812EF45A02E53032A1 D PONG!RAM (v2009-03-09) (PD) GEN
+86E0976EF7B85339EF5595EE935356030412ED22 D PONG!RAM (v2009-12-13) (PD) GEN
+04087CDC7F7DD5B20124C3B38CA24E25D451E592 Populous II - Two Tribes (E) [T+Rus_NewGame] GEN
+748828957360CD7C8155C5B0AE032C06F9B08A7F Power Monger (UE) [T+Rus_Moroz Kovalyov] GEN
+A4C5635CB61B1A172B5CC797EF1B9352025C1465 Predator 2 (UE) [T+Rus] GEN
+712E0CF53DA80FB7767FF705FE763EF78E6E7BB7 D Premiere Rip Intro 1 (PD) GEN
+4CA074D2AF565A045F00CEC08A293B3E8B70D2C3 Prince of Persia (U) [T+Rus_Shedevr] GEN
+AB2F2D212B0999B8DEEF2AB2B500AF7AE11CAA08 Prince of Persia 2 - The Shadow and The Flame (Beta) [T+Rus] GEN
+BA63DC1E521BEE68B4121B626061EBB203AC63C6 Prince of Persia 2 - The Shadow and The Flame (Beta) GEN
+4B17ADBE5619E555C2F822B8DB34178EC0AE788C D Pringles v1.00 (PD) GEN
+B314FE86054E006A9105E5FE2950C536749DB86C Probotector (E) [f1] GEN
+9ABEFA9E4EA86FCF2D0C78A76A2F5D3104EB3F1C D Project MD by sik (V1.0final) (PD) GEN
+3A9F817E6A4D3EF480D068E3029F70BC51B46ECE D Project MD by sik (V20100128) (PD) GEN
+958D2603E1BB5B89679C121DB3E36D113C0F3BCE D Project MD by sik (V20100206_earrape) (PD) GEN
+006D0A9F6F30C59BC68A81CBD0D8B66D7C3F0ED4 D Project MD by sik (V20100306_objectpower!) (PD) GEN
+7D60C8350057CA36DEF8D122F90AFF7B9C84B436 D Project MD by sik (V20100306_regenwtf) (PD) GEN
+F1638A8838FD678EF579AAB17EA3A0E9600EFE15 D Project MD by sik (V20100316_sfxfail) (PD) GEN
+2E51FCAAED4FB6C2D55451EC432F07B00080B919 D Project MD by sik (V20100320) (PD) GEN
+A172D18668A8F487E4BCCE1B8206D447FDED8F0D D Project MD by sik (V20100326) (PD) GEN
+9148784236764D1C1F0CC0888EC54DE7EE4D4FFF D Project MD by sik (V20100401) (PD) GEN
+8578A7ED2F6E3BD125098B69903EC70AF1E0CBF4 D Project MD by sik (V20100403) (PD) GEN
+63D0BE395E920EBCE5D241C14782D465BA5BBDA2 D Project MD by sik (V20100403_regenflagswtf) (PD) GEN
+6DCCDF8BDAD92F03713084EDBF51D7A6BF62B028 D Project MD by sik (V20100504_dmacross) (PD) GEN
+F4EA2E531D4D10A207D9BF67EDFCC399F73A8192 D Project MD by sik (V20100509) (PD) GEN
+94DB5E2206D4EA7D40BF44F5E42ED3E4E6FC19CA D Project MD by sik (V20100509_alt) (PD) GEN
+0D2DD994F3A775F505700A7F875AE897A2442C50 D Project MD by sik (V20100519) (PD) GEN
+A2926EECBB33A96D9C51B2E901648D61B64E630F D Project MD by sik (V20100526) (PD) GEN
+E72B1EE88F658CC44DC876C37F149BA030E77066 D Project MD by sik (V20100601) (PD) GEN
+145B8C5D92D643376E5CBA607D9E1849CEF2EDF8 D Project MD by sik (V20100618) (PD) GEN
+38AD131F83DAD52E07F76DF338AEBB393F39587F D Project MD by sik (V20100619) (PD) GEN
+54DAAC1FA3D21CBD76AD33F089D1E165CB272DFD D Project MD by sik (V20100619b) (PD) GEN
+928917EFB35CD864F722F61F323CE2CE83A8EE53 D Project MD by sik (V20100620) (PD) GEN
+058AA0C3EC5E9CF957FA8ED0598018F736B4AF5B D Project MD by sik (V20100621) (PD) GEN
+81B5939ACF7D3041579856F7651F119BE141F8D6 D Project MD by sik (V20100626) (PD) GEN
+E82B8AAB147726423BB67AA7FA5EB2732102BFDD D Project MD by sik (V20100705) (PD) GEN
+72ED5E61BB4CDB3F586B9C1D6713D8ECD45AFED1 D Project MD by sik (V20100707) (PD) GEN
+25096CC5EB425A5BAEA09AFEA136287535A8BF96 D Project MD by sik (V20100810) (PD) GEN
+E3FF82F84D89288B9D2B2E709C250A11F498CE42 D Project MD by sik (V20100812) (PD) GEN
+9AD74036191D2C65CA69A79DCAE042A07C1BF969 D Project MD by sik (V20100825) (PD) GEN
+83127EB31619A73559965C65F4C19863AFEBBA00 D Project MD by sik (V20100830) (PD) GEN
+E4850D0B6FF07F1418B96AC913A85D6CA058CEDE D Project MD by sik (V20100902) (PD) GEN
+1A363A68ABEB27D66C7CA81AAACDD9B6D66124B9 D Project MD by sik (V20101006) (PD) GEN
+6C29355666B26345199799DF2089272B0CAB2EC0 D Project MD by sik (V20101010) (PD) GEN
+6C4A8DAD4FA90F221920C27B4FACE075C6183E54 D Project MD by sik (V20101010b) (PD) GEN
+3C9E2D30A027AEBADCC3B2C5B24B89269F4F38AA D Project MD by sik (V20101019) (PD) GEN
+514EE1A7E6189C4AD1EEB19368D269AE5888AE1C D Project MD by sik (V20120126) (PD) GEN
+08A89C157C6BF0502D202317279C7DC995A46DFC D Project MD by sik (V20120130) (PD) GEN
+7C2771E4C479EF17119372452D20684BD9537C5E D Project MD by sik (V20120307) (PD) GEN
+8C731F2CA971D38CA2B293C61753D51E2AAD7654 D Project MD by sik (V20120429) (PD) GEN
+6A8039001483284E3325D05A60A55C83AB089CA3 Project Mettrix Remake (S2 Hack) GEN
+12AE49D6F7570BC1DEFEE99E3441A72AAD17AE8C Project Shadow 2 - Demo4 by snkenjoi (v1.00) (S2 Hack) GEN
+535E0AFB410761F24C322ED4AFAE4F65470FCC3D Project Sonic 1 Two-Eight (S1 Hack) GEN
+928F46CA87886C6E72D10F7C9DB29B09E483BC49 Psycho Pinball (E) (Oct 1994) (M5) [o1] GEN
+451CDAB2543B229F00D554F3A4AA01CE5A0CC490 Pulseman (J) [T+Eng20070226_MIJET] GEN
+DD80FA98B6698B411BC24B025B3C0A2F3809ED2E Pulseman (J) [T+Fre1.0beta_Terminus] GEN
+8F2E3978084F0EE875919DD275B56E839A674722 Punisher, The (E) [T+Bra_Monkey] GEN
+3DA4CB7F63BC863CA6D5067846C0D596BB727E77 Punisher, The (U) [T+Rus_NewGame] GEN
+3A5F6CCF5796502BD3B984204D79C185A6C6BF04 Purple Hills Zone v2.0 (S1 Hack) GEN
+B5C2501BFC3753ED0D9D216BC4A471983CAD4F9E Purple Island (S1 Hack) GEN
+9C4BC513A00F5BB5F7C72B41999D9C8C12345ACF Putter Golf (SN) (GNKO) (J) [!] GEN
+D04F0107BECBCC7EA1657B58876F624568FFBDB3 B Putter Golf (SN) (GNKO) (J) [b1] GEN
+8BEC632C90BF4CCEE1D43F1CDD3BBA963187CA5D Puyo Puyo Tsu (J) (REV01) (VC) [f1] (Paki) GEN
+8FA4936DABBB662F006367E9FD31595E9BFC7907 Pyramid Magic (SN) (GNKO) (J) [!] GEN
+545D87F3EE46E792247943743E5FB2C6FB4C1A82 B Pyramid Magic (SN) (GNKO) (J) [b1] GEN
+1BAD2A99DA2D5F280C581FDE48FD6B7D07152A79 Quack Shot Starring Donald Duck (W) (REV00) [T+Fre1.0_Terminus] GEN
+EDEDEED87DFA0BC378F0102DEBA759F7E59A4250 Quack Shot Starring Donald Duck (W) (REV00) [T+Rus] GEN
+2D7CAAA6DD064F1E2D98D5DEFE14D4B775E4D627 B Quad Challenge (U) [b1] GEN
+7B7DDCA6CBC18F45C95BCB10538CF4C2ECE143B3 Quantum Sonic by snkenjoi (S2 Hack) GEN
+600C9B234F2559B6D101A111F7033088BD701A5D Queen of Poker Club (Sachen) (Ch) GEN
+25C1C6F60A2A8AB567349ADD9F035913B9E3259E Quick Winter Adventures by vladikomper (S1 Hack) GEN
+1CDE0942BBBC9E88973EE56DA06CCAABDCD34805 R.B.I. Baseball 4 (J) GEN
+73BAAA1674B3D5521E45815DFC092FCE019F0FA4 Radical Rex (U) [T+Rus] GEN
+83934F46263BE3F7356D2A2D925C16302CA39D3E Ragnacenty (Ch) [a1] GEN
+1257B38FD4BE3645BE6F9A346E24DF686E7B559C Ragnacenty (Ch) GEN
+AC3985E7C13FE35E54682021E62F716D9B306652 Rambo III (W) (REV01) [T+Rus_MagicGame] GEN
+15F9284DA9B27B2803BC53790B51B9DAC5185A09 Rampart (JK) GEN
+19559DD058164A77ED3F265AF997B98818D371C1 Ransei no Hasha (J) [T+Chi] GEN
+A74BC03AF0380D2B0FE4661193F3AB01E1A80391 Ransei no Hasha (J) [T+Chi][a1] GEN
+10BDA7AEE4613EDB5EE61AD297FDA9FFDF39ACD9 Ransei no Hasha (J) [T+Chi_cslrxyz+SkyLeague] GEN
+231711C0335447E24760A8003142B3C19EA061A1 Ray the Flying Squirrel v1.4 (S1 Hack) GEN
+0D8E00F281FBF45D1579E27C414E7DF1BF9FDA90 Ray the Flying Squirrel v2.1 (S1 Hack) GEN
+F9D3F7344BAFA25F4952ABBAED2676152DF7EA72 Ray the Flying Squirrel v3.5 (S1 Hack) GEN
+45950731AAEBF72BE26456F2C31F28A6764819D6 Ray The Flying Squirrel v4 (S1 Hack) GEN
+F72A83641678C80AC318E48C59C3D9F9CF14AD49 D Raycasting MD (PD) [a1] GEN
+1168373979D6C5680609133FFFB7929FD8464DE2 D Raycasting MD (PD) GEN
+08764EFFCFFED219A38E26B616D8647A3BC954C9 Red Hot Fire v0.90 (S2 Hack) GEN
+F2A7525494F4B2005AF36FAD69BB5A2C2C9980AD B Ren and Stimpy Show, The - Stimpy's Invention (Beta) [b1] GEN
+5A8BDF769A0879558323BBEA52BF0A2DA047AD30 D Resistor Colors (PD) GEN
+2F7026FAC79A343BE7B9C2DF3AD0A99F1BAB076E Revenge of Shinobi, The (W) (REV02) [T+Fre1.0_Terminus] GEN
+B1044E3B782351E69EBA0ABC94A3F08C379C27BC Revenge of Shinobi, The (W) (REV03) (VC) GEN
+D0FEF41388566402FBDA32958E41891033C724AD Revolution X (F) GEN
+10CDF9B4284586402AFBCAF02F4875EC1E49CD5D Richard Scarry's Busytown (U) (Prototype - Aug 09, 1994) GEN
+E186B2C54514653374657B6033A05F5645C6AAC2 Richard Scarry's Busytown (U) (Prototype - Aug 15, 1994) GEN
+85E5C63E0B8A536A134E20036C978724158BE80E Richard Scarry's Busytown (U) (Prototype - Aug 16, 1994) GEN
+6E70FAFECDF133895715B52FD6614297E8B70763 Richard Scarry's Busytown (U) (Prototype - Aug 17, 1994) GEN
+8051A0961AE0003786D6B33E07F442E3B72BF771 Richard Scarry's Busytown (U) (Prototype - Aug 25, 1994) GEN
+375F358A24AE63BE8B8BC1010F61B27D013F8212 Richard Scarry's Busytown (U) (Prototype - Aug 26, 1994) GEN
+CAE77F948369D11F0152D68D75311B80C038F36A Richard Scarry's Busytown (U) (Prototype - Jul 21, 1994) GEN
+9698DFA5D10509DED6952A88445E8DB53C440DE8 Rick Dangerous by Pascal Bosquet (V15-02-2011) (Unl) GEN
+662FFC946978030125DC1274AEEC5196BC9A721B Riddle Wired (SN) (J) [!] GEN
+72D958556BBAD4AB055A6D79902DEF2BABA8934A B Riddle Wired (SN) (J) [b1] GEN
+B216983B7791D69242A2F44A5EAA618352EB2F50 Ring Rush by Ollie (S1 Hack) GEN
+E6E1F1A24717A9CAFBF572EB9B34BD38631B12CE Rings of Power (UE) [p1] GEN
+2081E5186924EFE9FF2110D556C7647EC197D2D5 Rings of Power - The Hand of Nexus v1.0 (Hack) GEN
+0A310F61F5C90C7BDE0195C69BD8B775A2CE8C58 Rise of the Robots (E) [T+Rus] GEN
+078846CD7A6F86C6FE71C95B1D13E89E66BD9B25 Ristar (Prototype - Aug 12, 1994) GEN
+A54553FFA55FBDFC43CFB61AF10CA0A79683EC75 Ristar (Prototype - Aug 26, 1994) GEN
+D887378BED61A5BE60664D3FE6559F78CC95D119 Ristar (Prototype - Jul 01, 1994) GEN
+85B82470E5395E96E01A7339C81B60832EA3AB1A Ristar (Prototype - Jul 18, 1994) GEN
+CF0215FEDDD38F19CD2D27BFA96DD4D742BA8BF7 Ristar (UE) (Aug 1994) [!] GEN
+1C07743BD600B5C742585A44E374C5976426C4E0 Ristar (UE) (Sep 1994) [T+Rus_MagicGame] GEN
+9CDDECAECEA8B6E7CD9978FA391E9875C88C5CFD B Road Rash (UE) [b3] GEN
+990CFB176D0074ECE480AF5BD8399C6C0E5A3F4A Road Rash (UE) [T+Rus] GEN
+E92824F6361B595C63412F8B06D5F5A8307FD29B Road Rash (UE) [T+Rus_NewGame] GEN
+2CBBA62BC9AB1DC3B3EC18A5EB867643021AC552 Road Rash 3 (Prototype - Alpha 5) GEN
+802F849A411D669C322E6BA0587A8ECB72495151 Road Rash 3 (UE) [T+Rus_NewGame] GEN
+ACA306E4BB3ABC12D533899FCD0F062A8FD5707D Road Rash 3 - Road Rash 2 Tracks (Hack) GEN
+07B2C164A5CF3EC92AF60913F764EEB925F88164 Road Rash II (UE) (REV00) [T+Rus] GEN
+3931ED99FCF9CAF404C50193CEAF96AD544D4717 Road Rash II (UE) (REV00) [T+Rus_NewGame] GEN
+38F15DF522E676F0B45F43CCDE13E6CEB80D32C3 Robocop 3 (UE) [T+Rus_Shedevr] GEN
+E111ADF659426C4525F18150EAF7B66BF8E8ED79 D Robocop Conversion Demo V1.00.0606 by MG (PD) GEN
+E1D24DCAB05A130158A70F0D9DC284E432B1F1E0 D Robocop Conversion Demo V1.00.2106 by MG (PD) GEN
+23F5D494E69A737F2026B5C54984D0D8A98F2CB0 Robocop Versus The Terminator (JK) GEN
+7419CE831216B92519857399DE1A8737F11CEECC Robocop Versus The Terminator (U) [T+Rus_NewGame] GEN
+77D044AE729C60405B4002CD7FCBD982BDA1CB72 Robocop Versus The Terminator (U) [T+Rus_NewGame][f1] GEN
+1E5CBFA3DFBAB399A84F5F249C7F5DEC9ECD0026 Robot Battler (SN) (J) [!] GEN
+137800D647ED1CAF1BE4E31F2CBA268706232493 B Robot Battler (SN) (J) [b1] GEN
+CDE1920476F4F719C05FA22075AF343F78937FCD Robotnik's Revenge by ColinC10 (V1.0) (S2 Hack) GEN
+FE1501F9E6B9E4F23D9C1B2C5AB1AF4748AB37DA Robotnik's Revenge by snkenjoi (S2 Hack) GEN
+99885D02FFF649045742103D769C3AADB0040074 Robotnik's Revenge by snkenjoi v0.46 (S1 Hack) GEN
+3DD241296B7FE6175FAD4C5838F523D1FDD1D5AF Rock n' Roll Racing (E) [f1] GEN
+8EFA519D8C258B378D1F6B6E3BCCA68078169AD4 Rock n' Roll Racing (U) [f2] GEN
+7D0B1C170B5CD0557D0C1B291C8A2A7B214C3928 Rock n' Roll Racing - 2nd Place Money Reduced to 4000 (Hack) GEN
+B648E220513AC232669A509055C7CD8340E51BCC Rock n' Roll Racing - 2nd Place Score Reduce to 100 (Hack) GEN
+96FC41E6D2D509AB38277A29F4F700BF55722DA7 Rock n' Roll Racing - Crazy AI by TI (Hack) GEN
+7D54EBCABFAD0F7A9DAFEC88D60DE399DCBCD19C Rock n' Roll Racing - Dual Screen beta1 (Hack) GEN
+67A9C284882070E9A5B160E42E890B68688BCB8B Rock n' Roll Racing - Duel by TI (Hack) GEN
+904B6E18526D601EAD51790CB7190D8ECE58F9C0 Rock n' Roll Racing - Gaz-24 Volga Edition (Hack) GEN
+42829ECE2EB1459C68C5B8141BC1C7CA7BF353BE Rock n' Roll Racing - Gopher Mod (Hack) GEN
+553DEB7FC1E6903DDABCFCDF4350A06CD904B0D5 Rock n' Roll Racing - Music Copypaste by TI (Hack) GEN
+6DA8DB4CABA9979586BF282150C85AB5D17CABC6 Rock n' Roll Racing - New Car Palettes (Hack) GEN
+5C110FD67DAC6596364461950B22F6D8C224DD42 Rock n' Roll Racing - Planet 7 Alternate Color by Topos84 (Hack) GEN
+2C173B18FB9B92C092C7E569F81A904E5FFC9C5A Rock n' Roll Racing - Spider-Man Sound by TI (Hack) GEN
+52C59D8F3C429ABF62031B3EF192CD258019FC62 Rock n' Roll Racing - Tournament Edition (6 Cars Demo) (Hack) GEN
+47369C35882F6BF320106E3EDAEA1B9BF1072D63 Rock n' Roll Racing - Tournament Edition (v04b-p1_fullsw) (Hack) GEN
+483B116B7A84B12BC66AE1218B8933EE9B75DA7F Rock n' Roll Racing - Tournament Edition (v04b-p3_fullsw) (Hack) GEN
+1D969B9BA655DBDE273FC2C151BE472A754ACCCD Rock n' Roll Racing - Tournament Edition (v04b-team1) (Hack) GEN
+4BCD8560B1BD2B1E0C748AF57E880426D8CA3D6E Rock n' Roll Racing - Tournament Edition (v04b-team2) (Hack) GEN
+3445E7D71C2CFE6D03A46F4292FF9F1E97B4D1D0 Rock n' Roll Racing - Tournament Edition (v05g-p1_fullsw) (Hack) GEN
+6DFB0D2A78D519ED3033324F942D502560CEC979 Rock n' Roll Racing - Tournament Edition (v05g-p3_fullsw) (Hack) GEN
+C576A2B2C65957BE9A9AD8BF4748D7596DB1A6A3 Rock n' Roll Racing - Tournament Edition (v05g-team1) (Hack) GEN
+405D38A4E4ADC1619B90B4E80BE9793C327DD68E Rock n' Roll Racing - Tournament Edition (v05g-team2) (Hack) GEN
+1AEE28F9585926DEE848559352004F5A7BA0AEEB Rock n' Roll Racing - Tournament Edition (v06b) (6players-team1) (Hack) GEN
+526BD7AF0DEF1AA9F00612FD68CA0048DBDFA320 Rock n' Roll Racing - Tournament Edition (v06b) (6players-team2) (Hack) GEN
+9A8945625E061B7A7CD17939AE5B72D0D58A1569 Rock n' Roll Racing - Tournament Edition (v06b) (6players-team3) (Hack) GEN
+A42E9BFEE16D926DFA32BF83AF7D7BFD00CE9128 Rock n' Roll Racing - Trio by TI (Hack) GEN
+F9F2951D3928CA60FD882D2961DF4FC13378DF59 Rock n' Roll Racing - v14a (Hack) GEN
+92AB0CF5A8EB26B778A5DD9A99109B03903D34C7 Rock n' Roll Racing - v15_alpha_r6 (Hack) GEN
+C13CCF68BA269B7010DB51148B74C9F106566D95 Rock n' Roll Racing - v15_alpha_r6-p1fullsw (Hack) GEN
+D7229E0A1047D98DEA57E7AE69A220547E21C862 Rock n' Roll Racing - v15_alpha_r6-p2fullsw (Hack) GEN
+56A1DF4B161CABC904B8B33E0AA6562E05605E6D Rock n' Roll Racing - v15_alpha_r7 (Hack) GEN
+D1489BC637713BC14830DB8E3A04C99616BB6E94 Rock n' Roll Racing - v15_alpha_r7-p1fullsw (Hack) GEN
+A671537261545545A7345A7EC6E7293CEACF3100 Rock n' Roll Racing - v15_alpha_r7-p2fullsw (Hack) GEN
+6BE88C8E3AE1C8A4108F824BB2409CDB985AD004 Rock n' Roll Racing - v15_alpha_r7-p3fullsw (Hack) GEN
+6FE150529485795209EB6ADD2EAAC715A10B2599 Rock n' Roll Racing by Ti v0011 (Hack) GEN
+160E7D0B9BB8A60B20D135ECEA1647E55D539A95 Rock n' Roll Racing Extreme Edition v14 (Hack) GEN
+4A1C916249662A39C0C177D8AC66A9E66050492C D Rock n' Roll Racing Music Trax (PD) GEN
+334B32F34A8106C2232C971B0687A6299B112BF5 Rock n' Roll Racing Plus v0.007 by TI (Hack) GEN
+E40AF6FF3236AE68B2E87EC546D03B780EB37E33 Rock n' Roll Racing Plus v0.010 by TI (Hack) GEN
+91AA41148BD6D8C9D5036646B5A2D6B924FF9091 B Rocket Knight Adventures (J) [b1] GEN
+27306B2AC3B1EBBBAC9939378D8E8ADE57223439 B Rocket Knight Adventures (J) [b2] GEN
+D945C67225373398A83CF29B83BFAE6E72BA1ED4 Rolling Thunder 2 (U) [T+Fre1.0_Terminus] GEN
+4D5E96A579EA9BFE357041AFE7387D849EAFE768 Rolling Thunder 3 - Plus Max Edition (Hack) GEN
+670582D32016D11EFD60E5D36074546BA9E7D15B Rolo to the Rescue (UE) [T+Rus_MagicGame] GEN
+648C04365610084D76C9A2B1B0B07031CA84897D Romance of the Three Kingdoms - The Battle of Red Cliffs (Ch) [f1] GEN
+1C9E6CBE6A3B1A8EB9D558D441C94A88EC729617 Romance of the Three Kingdoms - The Battle of Red Cliffs (Ch) GEN
+995C814410ADD3F74B37D3449451D1667B1017B4 D RPG68 v003_2007-01-24 (PD) GEN
+6B200201D23CC7538CA0B5A4FFC9804EDD409686 D RPG68 v004_2007-06-19 (PD) GEN
+EF6384009F6F65670D62D54CF8ABB3632EF4C4FE D RPG68 v006_2007-07-12 (PD) GEN
+DED6F8F8E6725B9EBD6177FDA3E8698DBD2F9348 S Factor Sonia and Silver, The by Aquaslash (V0.5) (S1 Hack) GEN
+31E21620AC2528ECE09ED7CFB9284C5E5E64BDA8 S2 Flying Edition (S2 Hack) GEN
+2AFB7450B18D80C4A24BE4D741927CD9E06231C5 S2 Long v1.8.1 by Hachelle-Bee (S2 Hack) GEN
+4DE1F6EB753AAC59414DE222517F9EEA582E080A S2Built by snkenjoi (S2 Hack) GEN
+6233358CD7BBEEF1519C33CA2C66004617FC1D69 Sally in Sonic 1 Rev 1.4 (S1 Hack) GEN
+4C5A6DED5D86394C6B72CF294EE296E4C7517F5C Sally in Sonic 1 Rev 1.7 (S1 Hack) GEN
+83F5A4D83E662A74381EFAB02D0E324AA26C131F D Sample Program - 64 Color Pic by FlemTeam (PD) GEN
+A487E247CFC68A655603FB9D5EC596BADBD211C9 Samurai 2 (Unl) GEN
+23ABDA2D1E51A5771DA8DE9A7589C2E811EBE9C3 B Samurai Shodown (U) [b2] GEN
+99D7442C12DE7105ED3C3439635DA64A22516090 B Samurai Shodown (U) [b4] GEN
+03CBA061935B6C9EE7E08F357A420AE8F12E7186 Samurai Spirit 2 (Unl) GEN
+E882C3AF57884862BAFC764226C88C287752E9D6 San San (J) GEN
+51CC40ADB35B35DF9C563C3BEBC17A89BC402122 Sangokushi III (J) [T+Chi(Simp)] GEN
+B99FAE3C869E9F877818FF91E6ACF5E3C6D24B39 Sangokushi III V070328 by yanliang (Hack) GEN
+EF30E3D21A684E867D8E88AC14F59A406E9D6310 Sawnik Teh Hedgehawg v1.3beta (S1 Hack) GEN
+2B820D7BB8BA79822D4F339CBD701D3D819E9492 Scooby Doo Mystery (U) [T+Rus_Chief-Net] GEN
+7F6EB4BE077A89DFFED2B0AF27B8B9927EDCBEF9 Second Samurai, The (E) [T+Bra_OX-Carnage] GEN
+4DE0A0C7994C4D63862F1E226E30DCD9074DD327 Second Samurai, The (E) [T+Rus] GEN
+641F94F19A4574DA992A3515B4C8B24901D12018 Secret Hour v1.5 by Brino (S1 Hack) GEN
+7F3233F4938FCD26AF0733E7645D1A401999DE86 Sega Art Tool (Unl) GEN
+37D73A5548CBDA9732A3662641376C5B02F9A9E9 Sega Channel (1993) (U) GEN
+B473B18592CAC3C0761718EA515F0C6C1237249A Sega Channel Demo Cartridge #4 (2-16-94) (U) GEN
+8AEFCFC196D06280A5E39975FF0B957D9064FB0C Sega Channel Game Guide (U) GEN
+83412622877D9DF8AC7C1486B06C490DFA52EBF6 Sega GEMS Driver v2.8 (U) GEN
+A99238E3FDEDBECA602F05A4C83F70DB1BF1BA84 Sega Music Development System v2.1 (U) GEN
+A7A37E20FA202A10C5F4E8BEE9E8773971B234E9 D Sega Point Demo by Oerg866 (PD) GEN
+587BA971FA154A5EDB2DC83A817460CAEDD7E426 Sega Radica! Street Fighter II' - Special Champion Edition (E) (Menu) GEN
+72CE8622949B64BE1A3E90C9817942615E24D416 Sega Radica! Street Fighter II' - Special Champion Edition (E) GEN
+3FC74BC2E1F7290EC0A0BFF256282D7157217A52 D SegaClock NTSC by EvilDragon Software (PD) GEN
+7FF7800154B79FF8F4CB95EB5E8A38BF07ECD111 D SegaClock PAL by EvilDragon Software (PD) GEN
+599FC8D5F124EDEEA9BD37102CE0B2ABAD5072B1 Semi-Ported Hyper Sonic in Sonic by Selbi (S1 Hack) GEN
+698CC9EFC866A0C4A2173345DCC65B9733C34AD6 D Sensible Soccer Intro by Paradox (PD) GEN
+0422309731FB57DBC8F7BD4FA00374A52357C137 Serious Sam - Dune Runner (Dune Hack) [a1] GEN
+AEF006FF5EFCDA2740D7F039355ADAC164F7BC22 Serious Sam - Dune Runner (Dune Hack) [a2] GEN
+E8410A5703F5DAB7C3BF2BCB3C8B5D38315E6BB0 Serious Sam - Dune Runner (Dune Hack) GEN
+AB4B975EAB15D78D86732BBBA7104476A2D5C80E D SG-DOS Demo (PD) GEN
+04F1EE62E3C69C1B0BE4B80483BC155D71708F1D Shadow (S1 Hack) GEN
+B68FBA0317E72FD36EE5A401DB924B72D0A46CDA Shadow Dancer - The Secret of Shinobi (W) [T+Fre_Terminus] GEN
+D401D8C12A57AE19169971DAE7DD7E2B3B25CB21 Shadow The Hedgehog (S1 Hack) GEN
+F04E4A6BE8685A612CDAD372456B9B38EA00795B Shadow, The v1.0beta (S1 Hack) GEN
+6D4E94B8CEB1C47CA2DF52A40D9C88FC6C760599 Shadowrun (R) GEN
+2D52CB444802AE6FDA8D50B1AF5FAB10826BC00D Shadowrun (U) (Prototype - Dec 28, 1993) GEN
+4BB4F490FF22C380DF471B63FAEB8835F9CF5CB6 Shadowrun (U) (Prototype - Dec 31, 1993) GEN
+37B0AECF9D72FA662CADEC9C2EBA9BBE6FEA35D2 Shadowrun (U) (Prototype - Jan 25, 1994) [a1] GEN
+01591AE041031A4820CAEB0BFCB1772E8B633352 Shadowrun (U) (Prototype - Jan 25, 1994) GEN
+83FC179A891C520C96699041F97203DF870B751A Shadowrun (U) [T+Rus_GottaX_vP1] GEN
+F377EA0139BC7F1CE37A7CA376260763B58D3EB8 Shadowrun (U) [T+Rus_Shedevr] GEN
+0039B1BB5DC4D670A352055EB587A26149C21B24 Shadowrun by Magus77 v2.2 (Hack) GEN
+89150C5D976870868E2A11B474B4C0F9E2A786A9 Shanghai 2 - Dragon's Eye (Beta 2) GEN
+44FF2F49897B6C6BE88730EA9EBC13B370E2C889 Shields (S2 Hack) GEN
+FD47C0232E9CDFDAC05B1F17F723B72D466D5947 Shin Samurai Spirits (Unl) GEN
+39979890309903D3DDD4749895A83AAE54041E47 Shining and the Darkness (Ch) GEN
+AC8A43D67FA23620DE37607F3F3E2E4348742C0A Shining and the Darkness (Ch-Simp) GEN
+03F98C770F4D1BEE7368C4F83C6F73454F483948 Shining and the Darkness (Ch-Trad) GEN
+B5BAD9FD8F43158B728E0574CCEAF65D2E5AF99F Shining Force (Beta) [T+Chi][a1] GEN
+CA445DB5066AF8874F7CA414719ACB2E2471D451 Shining Force (E) (VC) GEN
+83E106497B483ECCD0245D5D54A71D8A0D9276D2 Shining Force (U) [T+Rus_Shedevr] GEN
+6AB47D4194FFFE489B3D8DB6A60F3FC70B8FD5EA Shining Force by Lb70 (v05-04-2009) (Hack) GEN
+B65A5C5852B1E38F4CF69935C97FE47069F7A2EF Shining Force II (E) [T+Fre0.98_Final Translation,Generation IX] GEN
+CD98C45EC170CE72FABE2237CC55DC4F0B6AA884 Shining Force II (U) (Prototype - Apr 04, 1994) GEN
+CAEB48ED31991614C21121BF7D7A899AEA946A81 Shining Force II (U) (Prototype - Jun 07, 1994) GEN
+92D169CC0D72002AA7EB2330F32B9BEE6EBFA630 Shining Force II (U) [T+Fre0.98_Final Translation,Generation IX] GEN
+08AA0E26E63F3A3575943B8D0AD083A436ACEA6C Shining Force II (U) [T+Rus_NewGame] GEN
+F77698CCC3D6A32C92E2EFE49065EFA77644ACE3 Shining Force II (U) [T+Spa0.10beta_krusher] GEN
+9DD49C48309B8F2C37E91C3BBBC8ABD4F4819273 Shining Force II (U) [T-Fre0.95_Final Translation,Generation IX] GEN
+0881584D0809BFC944D0B5B50B0E783A6E17CCDF Shining Force II - Challenge Mode (Hack) GEN
+6B4AC62780F4071A78BF80D1EA0CA3BB3721CC63 Shining Force II - Challenge Mode+Difficulty Mod v1.01 by Obob (Hack) GEN
+B8362AC91409FA5AD44DCC3091D56739C99ACFAF Shining Force II - Inishie no Fuuin (J) [T+Chi1.8d_ken,madcell] GEN
+49EA723224F71017BE373C2095BB2358B7CDF59A Shining Force II - Inishie no Fuuin (J) [T-Chi1.0_ken,madcell] GEN
+23B847835BD6212B91AD67A2DD3D8CE6E7734C1F Shining Force II - Inishie no Fuuin (J) [T-Chi1.2_ken,madcell] GEN
+286019534A6645D5E9B179A5E08DBB677D0FF3DB Shining Force II - Inishie no Fuuin (J) [T-Chi1.4] GEN
+F4702B1780B24489BC502E01B15CE71DD343CD1A Shining Force II - Inishie no Fuuin (J) [T-Chi1.7_ken,madcell] GEN
+B06503900A787E8635C43D6D3FAD464491BA5767 Shining Force III (Ch) GEN
+C2A3AB58F66B58017417795B69B09603C8080BEE Shining Tactics by Dark Claw (Hack) GEN
+8CFB2E3C04834BF1089B7CE46051D9C67DF94870 Shinobi III - Return of the Ninja Master (E) [T+Bra_CBT] GEN
+67AFEAE67CB9C79EBCA44F7698DCCBCCF296E233 Shinobi III - Return of the Ninja Master (E) [T+Bra_Desc] GEN
+A68494B8127DD010BA5473BCEA98D2ED68618B8B Shinobi III - Return of the Ninja Master (E) [T+Fre1.0_Arkames,Celes] GEN
+EE039C6B6D8D8D88853691B212DF035D4A81EC68 Shinobi III - Return of the Ninja Master (E) [T+Fre1.0_Terminus] GEN
+7651F4E3E56C9A39BF735F68DDD6D347B7B2E946 Shinobi III - Return of the Ninja Master (U) [T+Bra_Desconhecido] GEN
+5588DD210E0DE49A5E8F7A9CD0DB57B17BBB15D7 Shinobi III - Return of the Ninja Master (U) [T+Bra_Dragman] GEN
+44B8A739B3AC2611E232AA802AE404D766572A44 Shinobi III - Return of the Ninja Master (U) [T+Bra_IPS Center] GEN
+6748837A66FED04FA18960EE4506D8DDAF54AE2D Shinobi III - Return of the Ninja Master (U) [T+Bra_Transcenter] GEN
+B2F1086BFD9B2F815EB7C8349B39656430E3AE6D Shinobi III - Return of the Ninja Master (U) [T+Fre_Celes] GEN
+83A5311940099D8DEC1F02B4353FC937C45F5689 Shinobi III - Return of the Ninja Master (U) [T+Rus_NewGame] GEN
+E7C6E3B3BCE49C8587CFB425DD8C0DA5269A3CA8 Shinobi III - Return of the Ninja Master - Zadrot Version (Hack) GEN
+62C961CEBDBE66860CA1B90AA140A22BD11C494A Shinobi III - Return of the Ninja Master by Dante (V071226) (Hack) GEN
+CA27D5445533A31F46EA5DB058A1EF56EF093A28 Shinobi III - Return of the Ninja Master Enhancement by MIJET (Hack) GEN
+95BAB798ECD769567300E1DDDFBED3AEEE206E87 Ship by Technopop (Prototype (Unreleased)) GEN
+C40EB18769869BF6DE2876448E1FDB3D731615B8 D Shred Demo by Shane.W (v2010-03-10) (PD) GEN
+78F481140C53B480C0C50ABE4756B67564A41A15 Shrek (R) GEN
+1F3C162B33AD1969000D660A2066E9F0C54A107F Shrek 2 (R) GEN
+3DB399E7E8EDA0FBBE62AB664DB506B1F65C9720 Shui Hu Feng Yun Zhuan (Ch) [a1] GEN
+7AC1B7A9E36DDE9A03B3D0861B473AC9E1324175 Shui Hu Feng Yun Zhuan (Ch) GEN
+64F04CA69F057A6F8C88CAF7BCEA0C8A695DB138 Shui Hu Zhuan (Ch) [a1] GEN
+CA15E0BA655EE52DEA4A75C07D65C1043FCCE641 Shui Hu Zhuan (Ch) [f1][a1] GEN
+ADAE722C77D98A38A8F2C8EBDCC67B1EC6B57431 Side Pocket (JU) [T+Rus_MagicGame] GEN
+8FFA22D7EC0800E0F74A5CAFCC88533C6DD8BCF0 D Sieve of Eratosthenes by snkenjoi (PD) GEN
+D0A63AAB098010E0A3899ED86AA8F74B4457DDBA D Simple Scroller (PD) GEN
+87D0188330BD5AA705258FEE61B16F3BD80E9284 D SJIS Text Demo V2 by Uchuusen (PD) GEN
+AC82E5780338A77F5A5B7D4487B7D93AB1C3EA25 D Skate Demo 2 (PD) GEN
+757BF610A6B3A617010E88923B89440999112F30 Skeleton Krew (U) [T+Rus_Shedevr] GEN
+BEEE61D339B307B2E3124CEAC4A49375F7A04C81 Slam - Shaq Vs. the Legends (Prototype) GEN
+D9C6F4939E8C723701D0C81A5F3D3500AE49029C Slam Dunk - Shikyou Gekitotsu! (J) [T+Chi1.1_Bearteam] GEN
+82F039DF8E7903A50CFC3581EC460EE7645D8F58 D Slideshow by krikzz (PD) GEN
+6D159240B11EE5F5E18898EA7C724D0BD793D865 SMTP v0.1 by snkenjoi (S2 Hack) GEN
+CE1F66795F5AA0E135EE8ED61C36BE5FDEF26397 SMTP v0.2 by snkenjoi (S2 Hack) GEN
+8C2F26B71C1E0346E777D3497F12B9958182306C SMTP v0.25 by snkenjoi (S2 Hack) GEN
+50ABDE0842716CD85EAE4F2D455E4CB24731B761 SMTP v0.4 by snkenjoi (S2 Hack) GEN
+8C9C74A36120D100C9976470F8BFDFE5CB4EA388 SMTP v0.49 by snkenjoi (S2 Hack) GEN
+2E50D04E747E938CD5651FE31A3F581E1BC1718C SMTP v0.50 by snkenjoi (S2 Hack) GEN
+0D063868E719C90982F21C2665DB8B83A6E1CD71 D Snake 3D by Fonzie (PD) GEN
+6EC77221BA3A57D04454D6BC6E7E9A815ED8E35A D Snake260 by Sonic 65 09-2009 (PD) GEN
+CDB733DA1CC305C4AE4ACF9DC23137C25A2CC304 D SNES Slideshow Demo (PD) GEN
+69DFE717498179D82D14749DB642305D12F213FC Snow Queen (R) GEN
+30EB2DB1AB82FEDD78137926A03B970961636F72 Sokoban (J) [T+Rus_Cool-Spot] GEN
+72F7D9E400129C71E5F28CFCFC34FCCA57FAC72F D Sokoban by FlemTeam (PD) GEN
+840E954F35B2B449431A40C34EF5FC277137E9D1 Soldiers of Fortune (U) [T+Rus_NewGame] GEN
+D3600C57AC3C14384E268B862B30676CE772E675 Soleil (E) [T+Fre1.1_Rysley] GEN
+2A157C77074FCFF3AB4AB04511B2473286B24955 Somari V1.0 (S1 Hack) GEN
+9A6065A0EBF8D76A4C5E265DA27E250AE2EA4BB0 Somari V2.0 (S1 Hack) GEN
+FABBB9D4903B86C67E369401FDB901ED167605F2 Some Generic Conceptions v0.21 by snkenjoi (S2 Hack) [a1] GEN
+5F2C4DC4E739D562E9F0525361BA83F3E0551E21 Sonic & Knuckles (Prototype 0525 - May 25, 1994, 15.28) GEN
+173524FFAE78438B5DDD039EC8B8DEF786F28AEE Sonic & Knuckles (Prototype 0606 - Jun 06, 1994, 10.02) GEN
+A55B784590E602A82719D6721B2789F686564D2B Sonic & Knuckles (Prototype 0608 - Jun 08, 1994, 05.03) GEN
+BC67CB9EDB8958A66723A8346C9D58D43D18CA80 Sonic & Knuckles (Prototype 0610 - Jun 10, 1994, 07.49) GEN
+8585B617E6828BF0B255D4EF747384DB7FF67826 Sonic & Knuckles (Prototype 0612 - Jun 12, 1994, 18.27) GEN
+E365C42A2C754B9DF98B5B74DBC3E7F94C1A84F4 Sonic & Knuckles (Prototype 0618 - Jun 18, 1994, 09.15) GEN
+B84D197E646CEECE8681D35AF3B4014C1BBEAE35 Sonic & Knuckles (Prototype 0619 - Jun 19, 1994, 08.18) GEN
+42C25867AD269CF089774A9FFE237F2F2EE23557 Sonic & Knuckles Jk.fox Edition (SK Hack) GEN
+6B950B0FE9A78CBC423268ABC9BD9024DA81BFF8 Sonic - 1.5 Edition (S1 Hack) GEN
+457C1A212F5723AE276F2C4FF43484EE358C76EE Sonic - Advance v0.001 (S2 Hack) GEN
+ED694B9F819B3D04A69CE712638AF12CCF90EB2A Sonic - Advanced Edit by snkenjoi (Hacking Contest Beta) (S2 Hack) GEN
+13865F56A7982A02BBCB8394E81E7AE6ADF0832F Sonic - Advanced Edit R1 by Rika Chou (S2 Hack) GEN
+D2BC313954580B9E42505C6B690CC5516E0AF641 Sonic - Advanced Edit R1beta by rika_chou (S2 Hack) GEN
+9677DC1DCEC5CB5AFD066FA54EE1B0C38A7C0D01 Sonic - Advanced Edit R2 by Rika Chou (S2 Hack) [a1] GEN
+A77B3135E7AE340C9007974A5BF950CE4913445E Sonic - Advanced Edition v3.0beta (S2 Hack) GEN
+D1364DBA264C40E6C34DE7FFFB9E8A2311B002F4 Sonic - Adventures v1.0beta (S1 Hack) GEN
+04564BA5AFA3131BE50A3E26A97D64300AD83A6F Sonic - Adventures v1.5beta (S1 Hack) GEN
+CB5A3047DF309DB38C78EA38638CA7A44F98893C Sonic - Adventures v2.0beta (S1 Hack) GEN
+958E6D11635C712442EC601B5C4FA1E9FD6372DD Sonic - Aluminum Edition V1.9 by Dr. Eggfan (S2 Hack) GEN
+EBB801AC7BA8845B002529C1E62007EF9A4A0662 Sonic - Aluminum Edition V2.0 by Dr. Eggfan (S2 Hack) [a1] GEN
+4D20070D1C78AB9376D781F609936ABAC03F6BF6 Sonic - Aluminum Edition V2.0 by Dr. Eggfan (S2 Hack) GEN
+87EB2FA67502DD0752A81802C1382D265725A3EB Sonic - Armageddon Game by xenoSonic (S2 Hack) GEN
+62361CF047A31D056D199E0B5DF6ACEDEB33ECA8 Sonic - Armageddon Game v3.0.43 by xenoSonic (S2 Hack) GEN
+C1FFB610288F36DDFC78AE5B853DB7AC33E32396 Sonic - Armageddon v2.9.00 (S2 Hack) GEN
+B67B4BC81AC9F9ED26098A7037DB38AA148F7A6B Sonic - Ashura New Version (S2 Hack) GEN
+EF4B1C6A14CF97CED8AC27372D63626EEEA0609C Sonic - Ashura Old Version (S2 Hack) GEN
+9CD2AE876B5128C6EB71BD79212AE497DB4480C5 Sonic - Avatar Fan RAFed v0.01 (S1 Hack) GEN
+5D25CFDD0391200A8A8C4ED5D4805E17CF8BE1A3 Sonic - Avatar Fan RAFed v0.02 (S1 Hack) GEN
+F67621A45C473202B77F6A6778B2A228DC9F6ABC Sonic - Beginner's Luck v1.0 beta (S1 Hack) GEN
+23AD06D56685A22536C26A08EFEC0D361B14FD54 Sonic - Beginner's Luck v2.0 (S1 Hack) GEN
+6D7669FD5A0C8B7879CC43BA9E9A793BBAE3C2DD Sonic - Beta Baton Remake by Jk.fox (S2 Hack) GEN
+2995539ACD7A98C1CC187503994705DC4934C06D Sonic - beta C (S2 Hack) GEN
+C34941091CE4A5E13FC7B7FD448925E4FFFEA412 Sonic - Beta Remake 2009 by Jk.fox (S2 Hack) [T+Rus_Jk.fox] GEN
+D2864F0F49AF37EADF468B8B3E8CD6317447D5EA Sonic - Beta Remake 2010 - Ultimate 78 Version by Jk.fox (S2 Hack) [T+Rus_Jk.fox] GEN
+CE945AB4531FE5BE658952FB296461AB1D8B21A5 Sonic - Beta Remake V0.01 (S1 Hack) GEN
+C932E3C1F2971D96F4B395DD02559C2483B139C2 Sonic - Beta Remake V0.02 (S1 Hack) GEN
+D31CDBD1547B96B787F0E9146E5D475C1BA6B0A1 Sonic - Beta Remake V0.03 (S1 Hack) GEN
+AEEB36031763467F80FF4927155C067114681D20 Sonic - Beta Remake V0.03b1 (S1 Hack) GEN
+52E4E0BD8A01472C65FF5F16C2F7613A7DC2AD3C Sonic - Beta Remake V0.03b2 (S1 Hack) GEN
+A9E44E1EC4BFA2973666A9C7102F3C6BC8600D8C Sonic - Beta Remake V0.04 (S1 Hack) GEN
+D432DFBE16E752FCB74AF828812714B9F8DFFA38 Sonic - Boss Edition (S1 Hack) GEN
+D60BC5229A297FE5A7F713BF33E0C6BF874EB19E Sonic - Bouncy Edition (S1 Hack) GEN
+8C7EDC1BA284CF89B334E5357AF74300679FDC50 Sonic - Cannon Edition (S2 Hack) GEN
+F898F6438B554D5FC5899538FC2174F13656A524 Sonic - Cole Tails Sonic Last Hope v0.001 (S2 Hack) GEN
+6C8F5C23D484728F2256A1FEBE72D2FC8EAE36B4 Sonic - Concept Edition v1 (S2 Hack) GEN
+5399FB16163B00BF7DFBF0EF03B78157589930D7 Sonic - Concept Edition v2 (S2 Hack) GEN
+FCCE50198CF986C7FEC969EB0B62E3964C882858 Sonic - Dimps Edition (S2 Hack) GEN
+219803A0041CC62BEA3661C1628930147DA076DF Sonic - Early Sonic 4 Beta (S1 Hack) GEN
+B8307D5B2F3FE645A1B185F1699F680F84C62FEA Sonic - Experimental v0.1 by Qiuu (S2 Hack) GEN
+7EED4DAF00C6719F506D031425D42E645A4E86E1 Sonic - Extended Edition (1stbuilt) (S1 Hack) GEN
+54B15CBEBEB9E8310EF9580705C09F508F9C373E Sonic - Extended Edition Demo (S1 Hack) GEN
+BE2E97C7D92B3B85BC7989FC19BAC1F714107B0A Sonic - Extra Ashura v0.01 (S1 Hack) GEN
+04A01A1DB7516A4A50D91E6300E12B67080227BF Sonic - Extreme Edition by cloudiar (S1 Hack) GEN
+944E2B48F6C8387D42608E44A1D4F2CB1067C0F6 Sonic - Fantasy World v0.20 beta (S1 Hack) GEN
+DF64486CB4C751C43A72BB1D066C6101A15270A2 Sonic - Fantasy World v0.25 beta (S1 Hack) GEN
+D3C3A6D723775805D4D9134761D616651D62ABDF Sonic - Fantasy World v0.40 beta (S1 Hack) GEN
+0BB8F536F090170F9F8BB6CE63620FC812F3A296 Sonic - Fish is All Edition (S1 Hack) GEN
+4487AC5B1DD414FB3A45942C28C94CF88D5D13E0 Sonic - Fish is All Edition (S2 Hack) GEN
+6502B9A545F94AEFED442C0BBCD7DA2DAA44E61E Sonic - Halloweiner (S1 Hack) GEN
+72B6118537F0D11E72B80E310DFF8ADB49F5E66C Sonic - Harder Levels v0.0.2 Beta (S1 Hack) GEN
+B7DC9EBACE8E601C0ABD468AF65BD1FFD180FDC5 Sonic - Harder Levels v0.0.3 (S1 Hack) GEN
+AC7C6D2B4CE86A87E9332038BBB9D699929A40F7 Sonic - Harder Levels v0.0.4 (S1 Hack) GEN
+6329933AE5F6D61DAE2F3E3BE50FEDF022BD88B0 Sonic - Harder Levels v0.0.5 Demo (S1 Hack) GEN
+3CBA81FB385A2769B389B1745B1761461E11BBA0 Sonic - Harder Version v0.05 beta2 (S1 Hack) GEN
+EAA71CE402501A43C926B533A61ED56900CEE621 Sonic - High Force v0.75rus (S1 Hack) GEN
+0A4818FB97B2721EE5AFBFCFDDA83B250E492288 Sonic - High Force v0.7eng (S1 Hack) GEN
+CE4CB2BA0884C65854C998AC5D3D3E80266D333B Sonic - High Force v0.7rus (S1 Hack) [T+Rus_vladikomper] GEN
+DFC7B10AB130B7FD6CBDFC3F95C154F3FE2B31A8 Sonic - iD3LSIML~TWISTED! by MarkeyJester (S1 Hack) GEN
+D89E7C72411E3322CC2C421EC94B32A6F9CC2AB6 Sonic - Island Mix v2.0 (S1 Hack) GEN
+316D644FAB82307377B58F0CD3631A3C3433EC30 Sonic - Limited Edition v0.01a (S1 Hack) GEN
+345827758ED5DF318028519E85C4E0409FC99193 Sonic - Limited Edition v0.01a2 (S1 Hack) GEN
+D382C59C898B1FA5412EBCBF5C8B090CEDEC6034 Sonic - Link Edition (S2 Hack) GEN
+4EB58785E3BF1CA8B34ABF5B7EA2ED0762751BA3 Sonic - Lost Levels v1.96 by Brutos (S1 Hack) GEN
+FB33CB04113A90DA1C54E88A2895CD91C48A96B7 Sonic - Malevolent Boss Edition (S1 Hack) GEN
+F0EEC8CD75F3A4A9FB7E6DB6A1002F354B0462FE Sonic - Mario Special (S1 Hack) GEN
+74A1DD83359E00067CE86903D28778C41CC6DBD7 Sonic - Mega Action v0.17 (S1 Hack) GEN
+2FF15AC77753BF3E8B2C1ED7B19E20F6A5710B90 Sonic - Mega Mix by Team Megamix (S1 Hack) GEN
+7A2405CD338F82AF03AC4DC0B9CF377E8DF1335B Sonic - Mega Mix Hex Build by Team Megamix Hex Build (S1 Hack) GEN
+09FB8F473EFB3420F7BC84FD3CEC317B94676A5F Sonic - Mega Mix v2.0 by Team Megamix (S1 Hack) GEN
+26F3C8D2188E49554D52797FF2892BD9862B0256 Sonic - Mega Mix v3.0 by Team Megamix (S1 Hack) GEN
+F0F2D5FC880A083319E8F2624A7120D5FEAC17AE Sonic - Mega Mix v3debug by Team Megamix (S1 Hack) GEN
+4F909F0E9CCD89B8D1911229E0F148C329576476 Sonic - Mega Remix v1.0 (S1 Hack) GEN
+DD6EED9CFF44CE11122679E7A5A4188B02B611FE Sonic - Mega Remix v2.0 (S1 Hack) GEN
+1E2023C4450B9728FEACDBD948D463B9F3553F95 Sonic - Mr Needlemouse Edition (S1 Hack) GEN
+D5B95967AC362461E8FA1A07B998E60B676A6498 Sonic - Mystic ASM Test (S1 Hack) GEN
+78E1275D867723E3915B5D54F806F37BADC4F24D Sonic - New Adventures v2.0beta (S2 Hack) GEN
+4378860F49D83F89A81559CDDDE0BF1B71CBEA04 Sonic - New Edition v0.001 (S1 Hack) GEN
+5BFE851575105E6F527AE5EC1B25AE3CEE78B572 Sonic - New Lands v1.1beta (S1 Hack) GEN
+89BE9F3E0E8DCAE4FC612BE306B43037F16A4178 Sonic - New Lands v1.2 (S1 Hack) GEN
+43BCF623AAF90EEB795B511113A7041969784E53 Sonic - New Stufz (S1 Hack) GEN
+07C9BF6E55039E35A0AA3E0FCA4E672078F0DD6C Sonic - New Stufz v0.1 (S1 Hack) GEN
+91B620E05FE6C11CC40DE3F1CED76FA0089C3550 Sonic - Night (S1 Hack) GEN
+5B00A64F699C55B4798AD76FA907FC47439076D8 Sonic - Nineckles Edition (S1 Hack) GEN
+857F97D24223F5B8C6D53185BC8DB1B78AA56E1A Sonic - NS beta by sonic 65 (S1 Hack) GEN
+1CA948B97724CF737936B8B823507C301A5165A5 Sonic - Oergomized (S1 Hack) GEN
+28EE87B0A9779AAEB2DFB2C210D5C2544E00BED0 Sonic - Oergomized TFM Test Version (S1 Hack) GEN
+4BE37440905ED634F6AA87D90430D44B5A33CC3A Sonic - Oergomized v0.5 (S1 Hack) GEN
+F6BCFB3C11D2FE6FDF0A86442F59884EB1301CE8 Sonic - Oergomized v0.5f (S1 Hack) GEN
+1593279ECDC899483EC9073C4676BC1BF1930320 Sonic - Oergomized v0.7 (S1 Hack) GEN
+F47977E638CB465BAE9FC6A33CB2101F177EC6D1 Sonic - Oergomized v0.8 (S1 Hack) GEN
+0A4A93E24D19314CFAFDD507E24DD6F93406B276 Sonic - Oergomized v0.8c (S1 Hack) GEN
+C91F2F8DC825F395F5B58255924193B25F4D7196 Sonic - Oergomized v1.0 (S1 Hack) GEN
+A4ABC323AE93620AE46BF0C54879237E53F9CBF6 Sonic - Oergomized v1.1 (S1 Hack) GEN
+DC9F4402F066FBFE723CB4EE47BD34C07E130E65 Sonic - Oergomized v2.0 Public Music Demo (S1 Hack) GEN
+A186B686AD646744EBCFCCBD8328AA17708874DB Sonic - Oergomized v2.0mbu (S1 Hack) GEN
+A4F7EC7A0409F162C4824F601AFAD926F77494B6 Sonic - Oergomized v2.0prebeta (S1 Hack) GEN
+9D2DD0C2EE59D31E611DD76071E1FEA2DA7EC1D7 Sonic - Oergomized v2.5 Rickroll (S1 Hack) GEN
+E95F459AFA37B500F412C2D35224CF5EB0722019 Sonic - Oergomized v3.0 (S1 Hack) GEN
+6AF98AEA1E3770007525B146598B18D41662F403 Sonic - Oergomized v4.0 Hacking Contest 2008 Build (S1 Hack) GEN
+934CF02108F51CB413FE23818418373E8D24EA0C Sonic - Oergomized v4.0beta (S1 Hack) GEN
+41580885A216710838701260F294127928A4E64C Sonic - Oergomized v4.0beta3 (S1 Hack) GEN
+A07221CEC92A26964A70E7540BDC00CA72C35B4D Sonic - Oergomized v4.2 (S1 Hack) GEN
+7B8186FE0FC1AE920A7E696AECE84ACD90885509 Sonic - Oergomized v4.5 (S1 Hack) GEN
+86797B8445FD57CD069E234E5F445E3B2652E2FC Sonic - Oergomized v5.0 (HCB 2009) (S1 Hack) GEN
+7C65254C008EE90FDB59A0621CC4B986127048B0 Sonic - Omochao (Pitch Up Always) (S1 Hack) GEN
+79237612219807774E2A603DE711AC4E58D040E3 Sonic - Other Extended Edition - Hacking Contest 2007 Build (S1 Hack) GEN
+0BADC15ADA0BF5880E8C9F69059CD6A1C37E5CF3 Sonic - Overlooked v0.01a (S2 Hack) GEN
+61F3B6BFBEDF6083BE6B5D693E8B3D46C94A0167 Sonic - Paradise (S1 Hack) GEN
+8D1EB55B963D8D967CACB538FF2C3C43ECBC288B Sonic - Paradise v0.1 (S1 Hack) GEN
+292D58B067BDB290AFA7ABB26420BEF2D1805BCE Sonic - Paradise v0.2 (S1 Hack) GEN
+EBB9F8E249980E4773C1706024A804261D5DF4D6 Sonic - Paradise v0.3 (S1 Hack) GEN
+C842B57E65D149E285DE84244D965E07F2DEE9D0 Sonic - Paradise v1.2 (S1 Hack) GEN
+60F890354FB28B342234D34FBFB072770BB74C6D Sonic - Paradise v1.3 (S1 Hack) GEN
+B69B549E722FCB628E31EFED662063D36BA48E55 Sonic - Paradise v1.4 (S1 Hack) GEN
+8AF8D57D42EE4A0A145FDF344FB7B6B15693F314 Sonic - Paradise v1.5 (S1 Hack) GEN
+D5C81692C31EF2A54319FE3726519C6083E95C2F Sonic - Paradise v1.6 (S1 Hack) GEN
+BEF6AE307B4F1F719C7C15DAB1558A5E3C0CCCD8 Sonic - Penis Stage Edition (S1 Hack) GEN
+158AC32830C5D526AD60F6BBF8F26901754D3030 Sonic - Pixel Perfect Beta (S1 Hack) GEN
+28641B93C3BA1824EBE4C970BDBED14773CFB352 Sonic - Pixel Perfect v20080831 by JcFerggy (S1 Hack) GEN
+DA32CAA464CB621F1B80F2CF1BC5C143D8A0B926 Sonic - Proof of Concept Mecha Sonic (S1 Hack) GEN
+002FB3263D1EA10B8B543AA45C4216AC0063CE62 Sonic - Random (S1 Hack) GEN
+2EFFBBBB905F7343357B18C8AB91A64AA7DEE442 Sonic - Random Project (S1 Hack) GEN
+B2927455295E7CE5FCA4A9E9F3867DAC53A86E28 Sonic - Recreation Demo (S2 Hack) GEN
+042CAAE993882EF650E5ED30D52869ED9D4672E6 Sonic - Recreation v1.0 (S2 Hack) GEN
+EA918559DA418AB42BB05A1A94FA65F4ACA99E9C Sonic - Retarded Special Edition Beta (S1 Hack) GEN
+81F980CF1DC443E0AB0BDD9B8E937F7312D0550C Sonic - Retro Remix by Thorn (S2 Hack) [a1] GEN
+A6EB9836D533F910F3C908CA01F7C3407B2F2FE9 Sonic - Retro Remix by Thorn (S2 Hack) GEN
+D4E86178B088B5DCBC2FAFAB9D1D49875394C6F3 Sonic - Retro Remix by Thorn v1.0 (S2 Hack) GEN
+BA87D40DDAE8F4A1D59B36CC7096DCB6C88B277F Sonic - Retro Remix by Thorn v1.1 (S2 Hack) GEN
+81E0CB2E2AB5F671AB1F3623F7BB66CE0756C710 Sonic - Retro Remix Home (S2 Hack) GEN
+9EBC627723FBC267220329F95D5951FB3E89B4B1 Sonic - Return to Mobius (S1 Hack) GEN
+33C5AE729176458FA171078FBEF1331921AB5EAB Sonic - Return to the Origin by Carretero (S1 Hack) GEN
+09C323600727A95536513F9D234E72C77CED4F77 Sonic - Return to the Origin v2 by Carretero (S1 Hack) GEN
+113C7A9C6E7B902A2A49383BD5E735D129403D2D Sonic - Rockman Chaos Edition v0.02 (S2 Hack) GEN
+2DBA04F152905754C7D713E92D12222EA691F542 Sonic - S3 Edition v1.1 by snkenjoi (S2 Hack) GEN
+EDEFAC3FC09805B42F3FEBE517E83016840E00CF Sonic - S4 Remake v2.0 (S1 Hack) GEN
+4290916BC42827E8A0ABDE83FE2E88E44C872F13 Sonic - Secret Extended Edition (S1 Hack) GEN
+21FA91149C15E59F9D0933C497E094A32934BA98 Sonic - Shiny Edition v1.0 (S2 Hack) GEN
+A576B27348492F3042E7CDECD807AB39B267551D Sonic - Shiny Edition v2.0 (S2 Hack) GEN
+E3CC92B18B7DA89914476C8083B34B8E0278EB8C Sonic - Shiny Edition v3.0 (S2 Hack) GEN
+4F74FAC8690D81D6C7E5BD73C7E58CB2E51CB613 Sonic - Shiny Edition v4.0GHZ (S2 Hack) GEN
+C7352152F35D67EB32C230444E21D18E86754675 Sonic - Sonic 3 Edition (S2 Hack) GEN
+C51E90D4238BC183B45B33561E8D59C3342261E9 Sonic - Sonic and Metal Version (S1 Hack) GEN
+70F7B290014E043329435BAF4F31209DF7D7B0F1 Sonic - Soniquest Version (S1 Hack) GEN
+FA1020440126381A210F7024C781080531362B66 Sonic - Special Stages v0.1b (S1 Hack) GEN
+DADAA7824D5EC48451F5C5411066A6BA24E54F5C Sonic - Special Stages v1.0 (S1 Hack) GEN
+3BC2AE8B59EF824B343258ACDC5AAE2E8E22541F Sonic - Special Stages v1.5demo (S1 Hack) GEN
+FF0A3B0BDB6EC645E06C162DAB0780804DB33865 Sonic - Spiderman Special v1.0beta (S1 Hack) GEN
+74AC0797B3701DD99AF7AD26DCA54D9482055AB6 Sonic - Spindash+Spike Bug Fix by Mariofan0 v1.0 (S1 Hack) GEN
+7BED6DBFFE0B9BDABACA1BCD3C9AF0A6B8E63A09 Sonic - Starring Shadow (Rev A) (S1 Hack) GEN
+415733823E9CEC96B0B005B4146F76B6E10D2229 Sonic - Super Duper Speshul Edishin (S2 Hack) GEN
+B03A743D51920FD736DB6CA73E3508544BC6772F Sonic - Super Locked Version (S1 Hack) GEN
+B93072C56F6014F8642A649E7AE101945CFFBF31 Sonic - T.a.o.s.t.h Update (S2 Hack) GEN
+7B775FEF6D4BE836FE9284C175EA847977DB49E2 Sonic - Tag Team by Alriightyman (S2 Hack) GEN
+1F34BDCB9089497F290BD4DB9C6383837C1B7F61 Sonic - Tag Team v0.21 by Alriightyman (S2 Hack) GEN
+3805562630E07CE408693D86E2D8A5EBB22EE567 Sonic - Team Black Force Edition (S2 Hack) GEN
+3B2EA235A8718B155106F6AB1D9C6C5823D32C4A Sonic - Teaton Build (S1 Hack) GEN
+371C37F614D424D6512C8326522D3133CCDF5F66 Sonic - The 30 Min Hack by DAGarden (S2 Hack) GEN
+8E21B5E9A5C03A3738AC24CE54947302F0427FFE Sonic - The Lost Land (S1 Hack) GEN
+F88C4FF5599E60DDEAFD7188A6112002BEAAAD49 Sonic - The Lost Land v1 (S1 Hack) GEN
+1224B4E5E32F0E01CEDF1BE47B12B63712EB2DCA Sonic - The Lost Land v2 (S1 Hack) GEN
+879B3E0D23FACF580AD0EDEEFFE03C7E262AB437 Sonic - The Lost Land v3 (S1 Hack) GEN
+20AF278A108331AF3253D7DEE8AD49392C023AA8 Sonic - The Lost Land v4 (S1 Hack) GEN
+B6C929D4099AD0C27309EFC9CFEDF6B9439BE6B8 Sonic - The Other Extended Edition beta2 (S1 Hack) GEN
+4FA437CA38C9DEFC2325BAA609F4A02C779C10C9 Sonic - The Schallenge (S1 Hack) GEN
+86BE150A5183922AB899A2D4605196E2BCB6512B Sonic - Thunder Edition (S1 Hack) GEN
+B41C62747B6CFBBBF34534391F4FEE5822DB2DBA Sonic - Traping v0.1 (S1 Hack) GEN
+3102A12C25E8CFD104B8CEED8836E3B25FC22B38 Sonic - Unimpossible v1.5 (S2 Hack) GEN
+9AFE1E5EFECD063B87AE6A68E83758C0E3A5BDDA Sonic - Universe (S1 Hack) GEN
+D8CE4A2D64063A16B5BE139C301B3C6B99D06F77 Sonic - Universe v1.0 (S1 Hack) GEN
+2F6D18AC982CE8484A8754BC57EB5733B3D63C67 Sonic - Unlimited v0.1beta (S1 Hack) GEN
+F15CAE2D6B8528609C0FE1FCB8CF3C6A074CB5FF Sonic - Unlimited v0.2beta (S1 Hack) GEN
+77A898FEE19D31574D4843B2DEC3DBF60117B448 Sonic - Uno v0.3a (S1 Hack) GEN
+74752D0027784E0D634156632F64D4B6E24BB32C Sonic - Version 4 (S1 Hack) GEN
+285C2EAC9C2AE7312237DCF2FC0D34BB780D76C9 Sonic - WTFLame Final r0 (S1 Hack) GEN
+00A5559C8692F85E07DC17D3E8564C45FB25690C Sonic - WTFLame Final r1 (S1 Hack) GEN
+4D48490190003B01F3346580EFC769392D3011C8 Sonic - WTFLame Final r2 (S1 Hack) GEN
+BEC2C50CF212733C18A8BFDD3DCEC7629C4B06CC Sonic - WTFLame Final r3 (S1 Hack) [a1] GEN
+51954215050A1BDD91D91E03ACFE73CAB1BC60DC Sonic - WTFLame Final r3 (S1 Hack) GEN
+57766CE8864A6B3285AB3F5CDB6DFF95CDAADB04 Sonic - Yarmar Edition by TheProf (S1 Hack) GEN
+B267E65CCAB73D8F8C3CA28CA299F3E15408A194 Sonic - Yarmar Edition by TheProf v0.30b (S1 Hack) GEN
+DEC97B874F01D66A18E2F1D362F59070A6B31EF8 Sonic - Yarmar Edition by TheProf v0.60b (S1 Hack) GEN
+47E6BA7C4842FDD20E81D343102320C6FA96CF11 Sonic - Yarmar Edition by TheProf v0.80b (S1 Hack) GEN
+8224AD975E4DA0E55DB4A06C72D96F2238F37B64 Sonic - Yarmar Edition by TheProf v1.00b (S1 Hack) GEN
+5D8A73003648ECC2884EE5C4F016F1C67AD8E50F Sonic - Yarmar Edition by TheProf v1.30b (S1 Hack) GEN
+C0D5304529A414D7091B327440F3A3805A3820F9 Sonic 1 and 2 (S2 Hack) GEN
+6651A52A04CAEEC071B8E469308CAA5B5C4CDD2F Sonic 1 and 2 by ColinC10 (S2 Hack) GEN
+4986D40ACB624CD1320DAE188818D36E93D58C43 Sonic 1 in Sonic 2 RC2 (S2 Hack) GEN
+EA7E1AAEEF2185479249C7F003BF8A6F9859ADEC Sonic 1 Objects in Sonic 2 by snkenjoi (S2 Hack) [a1] GEN
+BBB11EF697B6D037B8B38A7C74008CFDB6E55F32 Sonic 1 Objects in Sonic 2 by snkenjoi (S2 Hack) GEN
+6E985CA6EFEF7E4859B3B543A49E6FC0FDCBADE6 Sonic 2 & Knuckles - Long Version V1.7 by Hachelle-Bee (SK Hack) GEN
+B1CF50F5E35C6ECB767B1F033F04D9D3E8A013C8 Sonic 2 & Knuckles - Long Version V1.7b by Hachelle-Bee (SK Hack) GEN
+27334F1A7F1E0ED73D7031B1899D90ED32AEF34E Sonic 2 & Knuckles - Long Version with Knuckles V1.7 by Hachelle-Bee (SK Hack) GEN
+B948ED3CAE43933670D1E6AA6C2BDAB694D3D902 Sonic 2 Beta Jk.fox Remake 2010 (Ultimate Edition Plus) (S2 Hack) GEN
+6208155A92E9D72DE1FC9B31DE39F52D3B4B414B Sonic 2 Delta 0 v1 by Esrael (S2 Hack) GEN
+DBA7A2229DE676B079D4D4028D9C8C7ECFB895AC Sonic 2 Delta 0 v2 by Esrael (S2 Hack) GEN
+FDFF7EA4385F6B63FD49709A91A5BC43ACFBF0B3 Sonic 2 Delta 1 v0.24d (S2 Hack) GEN
+E8280FCE7D9373787673CF402DDE7153C1BAAF16 Sonic 2 Delta 4 v0.01 (S2 Hack) GEN
+0A1BEB0B00ECD29D6FA83D56CAEA3019D4B0F94D Sonic 2 Delta Enhancement Mod v0.23 by Esrael & Simon Wai (S2 Hack) GEN
+6970FFAFE9E70FF1F0905DAA1368941A91F956ED Sonic 2 Delta II V0.01 by Esrael (S2 Hack) GEN
+ACF9B690FEE435608CC98A8CC1F0F85B75EDEA82 Sonic 2 Delta II V0.02 by Esrael (S2 Hack) GEN
+13A7666D364CB782D59085FF88149628752F5E52 Sonic 2 Delta II V0.03 by Esrael (S2 Hack) GEN
+C09C759692B4873F3A843CF4955AEA913033FA96 Sonic 2 Delta II V0.04 by Esrael (S2 Hack) GEN
+4EC04CAED745BF0C7240C9FC65D55B67CA58289A Sonic 2 Delta II V0.04a by Esrael (S2 Hack) GEN
+853B6CFB8A6C1A39A4008A5AC82636736ACB632B Sonic 2 Delta II V0.06 by Esrael (S2 Hack) GEN
+21FBC8F82F7C48828F70BDE98D407D835309B4B7 Sonic 2 Delta II V0.07 by Esrael (S2 Hack) GEN
+AC67F3724EFBE3801226D7E3B2B259208E6ADBBA Sonic 2 Delta II V0.5 by Esrael (S2 Hack) GEN
+3D674CD4416016FAC7230041BB6D451C2F142843 Sonic 2 Delta II V0.5a by Esrael (S2 Hack) GEN
+657A2A9436A8877691D695813E25631AC6A992DC Sonic 2 Delta V0.03 by Esrael (S2 Hack) [a1] GEN
+DFD1F2E4126DBFF5ACC0F1AC182AD90CF5D32381 Sonic 2 Delta V0.21 by Esrael (S2 Hack) [a1] GEN
+47F2A477DDDA2C72A9E8E112CE5387A2E2051CD3 Sonic 2 Delta V0.22 by Esrael (S2 Hack) GEN
+466B7F265629DA8DC20972C7B767457DC08B8D32 Sonic 2 EX v0.33 (S2 Hack) GEN
+E2873C8AE44BD5BD928E797D4B83A3FF424DCE99 Sonic 2 EX v0.35 (S2 Hack) GEN
+A298EC800F4DE55BB07E705B21E27BBFFF81C432 Sonic 2 EX v0.36 (S2 Hack) GEN
+A69664D5CEED6596DF5FA82130F9D5C5C28A46B8 Sonic 2 EX v0.40 (S2 Hack) GEN
+7D9E5928E9BE5D3962B9E9DAC1C39E40825A862A Sonic 2 EX v0.42 (S2 Hack) GEN
+04566BCB99DF83EBB8ADB0DDF6851489E5E14B21 Sonic 2 Heroes V0.02 by flamewing (S2 Hack) GEN
+5565A8556F592AED2A38DE854DC1CDB6D1F02A31 Sonic 2 Heroes V0.03 by flamewing (S2 Hack) GEN
+90799C0A144106203A0CAF35A08B86F87551071B Sonic 2 Heroes V0.04 by flamewing (S2 Hack) GEN
+561D6EF00B93F433745623DD23F9EA5FE515293F Sonic 2 Heroes V0.05 by flamewing (S2 Hack) GEN
+82299DC71003FF3518F041364FBEAA198C466E9C Sonic 2 Heroes V0.06 by flamewing (S2 Hack) GEN
+E1306758FEAD9D6F6AAC27A270C9CB9047D42EE9 Sonic 2 Heroes V0.06a by flamewing (S2 Hack) GEN
+7E3FCA3ED140ED78A5025C0C192322C6AC19248F Sonic 2 Heroes V0.06b by flamewing (S2 Hack) GEN
+D6F9550CA9A64B97AA2038D4BD77E2F31DAFFA53 Sonic 2 Heroes V0.06c by flamewing (S2 Hack) GEN
+41F3813B165D64D3205ED58665E6241BFF192E6C Sonic 2 Heroes V0.06d by flamewing (S2 Hack) GEN
+9071DE3A5C8E8F1596CDC6CE2216701AC8A41D62 Sonic 2 Heroes V0.06e by flamewing (S2 Hack) GEN
+E1C0370CE60A5E78CFE149AB283DF29D14057845 Sonic 2 Heroes V0.06f by flamewing (S2 Hack) GEN
+D4DB34570B3B8065FE33253AEE4034084D84DF46 Sonic 2 Heroes Vfirst_release by flamewing (S2 Hack) GEN
+B4AEFE93B96E7CF75197AF1E6B1542BBA64A81AC Sonic 2 Megamix (S2 Hack) GEN
+9DCEA75DB790CB94D0462C956F6414EA1795FD5B Sonic 2 Millenium Edition v0.76 Xmas Day (S2 Hack) GEN
+CFDDA68E3A1464B93B74B9EEC466C5B54CD1C5D5 Sonic 2 Millenium Edition v0.85 (S2 Hack) GEN
+3B9537F00AFFA7DBF7798D917305FC6E59AAE7A6 Sonic 2 Millennium Edition (S2 Hack) GEN
+10A79A810CCF6FED2AA2CFB670E8EA391756E111 Sonic 2 Remix Version (S2 Hack) GEN
+7B64A6A1BF42DB476407CBBF0A5EF88B686A323D Sonic 2 Revamped (S2 Hack) GEN
+382710EF988CA238C7934EF1092C96A7AC86B363 Sonic 2 Revamped Gamma (S2 Hack) GEN
+5BB244E1C569DEC26B57323C49A38AF75F220BB3 Sonic 2 S3 Edition v1.11 by Alriightyman (S2 Hack) [a1] GEN
+4BF6BBA644C43936B6D9CEB72472A25C411BB51A Sonic 2 S3 Edition v1.11 by Alriightyman (S2 Hack) GEN
+96F4D4AC2D5C85D006B1FCADD09FBC9FD8881203 Sonic 2 Season Edition v1.0 (S2 Hack) GEN
+ABDC60703F58BE40245285880D0D2EBCF8EAC60C Sonic 2 Secret Rings Edition by MainMemory (Hack) GEN
+0F00DA47450C955D1D1744D094549B199B4C63B2 Sonic 2 Turbo by Thorn (S2 Hack) GEN
+178B7961309F30B7A61A2D6463D3AA98D2B4CC49 Sonic 2 Ubaru Edition v1.6 (S2 Hack) GEN
+BF9A8A41B88EC971DE090A2D368CB5F9FCA31784 Sonic 2 with Mouse Support (S2 Hack) GEN
+3DA63CA02A76E2EE5767EAA4AB453F6BC8C27BD5 Sonic 2 XL (S2 Hack) GEN
+5F6E6B3B250C091197E70DFFA53204FE8F2AAEB9 Sonic 2008 Beta 2.0 by Anthall (S1 Hack) GEN
+C6EDE41E7978DE35397007E47A12E46A893555E1 Sonic 2Z by snkenjoi (v0.50) (S2 Hack) GEN
+CB42CAA6320AB1D082353E343BB66A310106562F Sonic 2Z Demo 2 by Mystic (S2 Hack) GEN
+84068978EA15676683F9E9BA78B4606B265ED413 Sonic 2Z Edition by Mystic (S2 Hack) GEN
+D686E68D16D0ED1454CD307ADFFBE0A67D34F244 Sonic 2Z Edition v0.22 by Mystic (S2 Hack) GEN
+63EF5E47C3925DDE54E395C5683E8DB0E2BA3B20 Sonic 2Z Edition v0.25 by Mystic (S2 Hack) GEN
+77CB9814C6ADF3709E9683A9DD5FB5E62F5571C6 Sonic 2Z Edition v0.28 by Mystic (S2 Hack) GEN
+52B5C12FE7466DAF52CBBAD579448AD57322C37C Sonic 2Z Edition v0.41 by Mystic (S2 Hack) GEN
+52DEBFCF9C0EDCBCFE0A416830086BFFDEDF76C6 Sonic 2Z Edition v0.45 by Mystic (S2 Hack) GEN
+5ABA9828B28B9D197B70ACFDDFC454AB6C33060D Sonic 2Z Edition v0.50 by Mystic (S2 Hack) [a1] GEN
+A924FD781913A9CC730C114C225A356CBDC12338 Sonic 2Z Edition v0.50 by Mystic (S2 Hack) GEN
+7C5976094C3FCF52970A7207CAFD3CFB0DFF9761 Sonic 2Z Private Beta 0 by Mystic (S2 Hack) GEN
+5A4836EFD942ECB571CA41AC52F80C9FD1BDA80C Sonic 2Z Private Beta 1 by Mystic (S2 Hack) GEN
+3D822019521468D56E64C1EDB24073919377E9D8 Sonic 2Z Private Beta 2 by Mystic (S2 Hack) GEN
+B67DCEDBC5C502124030C62E60FB457A331C45B1 Sonic 2Z Public Demo 1 by Mystic (S2 Hack) GEN
+919266231D08B0C9AB643172339A0EF8E45912EF Sonic 3 & Knuckles - Mouse Enabled (SK Hack) GEN
+27D55B9502640E01A9285E053972F0D1A7088851 Sonic 3 & Knuckles - The Challenges v1.0 (SK Hack) GEN
+F64EF1F42C8DC2C17B7B7C49A154A9F405F1DBF2 Sonic 3 & Knuckles Super Peel-Out by snkenjoi (SK Hack) GEN
+6DC631C28AD672B1D34048068F24E0B96024B254 Sonic 3 and Knuckles - s3kbuilt_001 by snkenjoi (SK Hack) GEN
+7837297079692370C16E16586CB31F57947673E1 Sonic 3 and Knuckles Redundancy Fix V1.0 (SK Hack) GEN
+636ABECDDE8039BF1BC7D50D501C6984C03C0334 Sonic 3 Beta Hoax (S3 Hack) GEN
+096EEE8C5461B9F128C149959FF463BDEAF63918 Sonic 3 Chaotix by Tweaker (S3 Hack) GEN
+32C22000FFBBA04ABF40DAF73F71EDF9A3141F6D Sonic 3 Complete (S3 Hack) GEN
+C9A972AF8CDE30226442DDDF5CBA355F99E4A95A Sonic 3 Complete v091224 (S3 Hack) GEN
+B720061429A131A99F8C93E0740EE2E16D6FF8A6 Sonic 3 Complete v091230 (S3 Hack) GEN
+7EB9A750EFDF6133B0389A35BA3174F3B6ADDFA8 Sonic 3 Complete v100404 (S3 Hack) GEN
+3A8A566464FFE717FFB2D2EE1E56E2C0BE96670B Sonic 3 Customizable 1.0 (S3 Hack) GEN
+BE4565869110650CCB3753EECE92C5670F260F68 Sonic 3 Customizable 1.1 (S3 Hack) GEN
+AFA1F14C2488CDEC5DE4A688B34241143038C62F Sonic 3 Customizable 1.2 (S3 Hack) GEN
+522793356BFD08B1C3F6420F0CF1DAEFF9D99066 Sonic 3 Customizable 1.2.1 (S3 Hack) GEN
+4793C7B68FBF2D24A784C309AEA6AB4F11DDF67F Sonic 3 in 1 by vladikcomper (Hack) GEN
+2D751C73C1042325645CC6AEE64A0A642CF3CEAD Sonic 3 Master Edition (SK Hack) GEN
+E61FFA7711A3EFD8DCCA0F78BCF664A7B29DE092 Sonic 3 Max (SK Hack) GEN
+5F96DDCCFF1E95D82201687B939973C642A05394 Sonic 3C (Prototype 0408 - Apr 08, 1994, 17.29) GEN
+D6012AF0F7856476892982E50B3D512D606DCB96 Sonic 3C (Prototype 0517 - May 17, 1994, 17.08) GEN
+3B77D50DB02235CE095BD8B30B680700BE5DEB3E Sonic 3D Blast (Beta) GEN
+5343001B4608E2EEF02E11D4CA2D36DF0A34B8A0 Sonic 3D Blast (Prototype 73 - Jul 03, 1996, 13.58) GEN
+65CEB54F904CBC55C61547705455D1EF9832FEE6 Sonic 3D Blast (Prototype 814 - Aug 15, 1996, 07.55) GEN
+334ED5CA3E1AEA2D9714BFD4C9A5697AE6A862D9 Sonic 3D Blast (Prototype 819 - Aug 19, 1996, 19.49) GEN
+228EE9A01AFC7D6A65C64FB0B0BA66F5A1D72718 Sonic 3D Blast (Prototype 825 - Aug 26, 1996, 15.46) GEN
+44FA57E640380A46580F75F1A1460D3F6ECC12B8 Sonic 3D Blast (Prototype 830 - Aug 31, 1996, 08.19) GEN
+1EC28A2495CA70C897DD2B513DB7E8FDCC30D7F6 Sonic 3D Blast (Prototype 831 - Sep 03, 1996, 10.07) GEN
+D8AEA4A5B3B593985E66ED37104F4F536F0D291B Sonic 3D Blast (Prototype 94 - Sep 04, 1996, 12.01) GEN
+8B8AC15F6214B63D10C5D77AE9305917ECCA8DEB Sonic 3D Blast (UE) [T+Fre0.80_Corrigo] GEN
+2241D23E51B42137A25CE60E52EF838B547260DF Sonic 3D Blast (UE) [T+Rus_NewGame] GEN
+A3496BE5B6C8FB246B547845B7198ED9B140A2B2 Sonic 3D Blast - Add Checkpoints by Krizal (Hack) GEN
+CCF7F24139BD57FE51A9F07C3530B8E7580811E1 Sonic 3D Blast - Red Edition v1.0 (Hack) GEN
+158F582EED30549EACC4F19C24A194DA02A93464 Sonic 3D Blast Time Attack by fabio (Hack) GEN
+F9F1579147E9FD08865E853137D10A2748A5CD87 Sonic 3D No Flickies v1.1 (Hack) GEN
+821425DD252DADD5D10A708FC1D5094686753181 Sonic 3D No Flickies v1.2 (Hack) GEN
+3F56E9968B4172FABBCCECBCC186FE4B178D8323 Sonic Alpha (S1 Hack) GEN
+AB50F156EFF3597CA0BB0F697147BEC86256D6E8 Sonic Alphaomega v1.0 by HCKTROX (beta_version) (S1 Hack) GEN
+695F5262828FB81B3FF505EEF4549249B627FD3A Sonic and Knuckles & Sonic 3 & Sonic 2 (JE) (VC) GEN
+99F91C1A12CDAF6E88E6049C496B6260098106BB Sonic and Knuckles (W) [T+Rus_NewGame] GEN
+FA8A7301FE97A04FBEA5D9CA7E672140C353F429 Sonic and Knuckles - Longjumps and Trained (SK Hack) GEN
+355064FB638595FC495AFD2BB65A4BF4C5DC4728 Sonic and Knuckles - skbuilt by snkenjoi (SK Hack) GEN
+E10D5D8533283965EC54E7E2D9AB199AB1F8A9A4 Sonic and Tails in Paynt by Monkeyman (S2 Hack) [f2] GEN
+7EBAB2E2FB24D7F00BE3D2D0E86700AE82004D63 Sonic and the Secret Extended Edition by Hayate (S1 Hack) GEN
+F01DD8A7E577B993CB2B23AD5E3C35A8A723D73B Sonic at SAGE 2010 by Cinossu (S1 Hack) GEN
+D012A2E1929020BFD098D50FEFC374BB7B9973E5 Sonic Boom by snkenjoi (S2 Hack) GEN
+EB94F331A8DC83D1B0F32751675AB776C65A3ACF Sonic by Alriightyman (S1 Hack) GEN
+52FBFD5CE1880023E19F62DEA5B63D6BB2222B48 Sonic by Anthall (S1 Hack) GEN
+99738CE3DC7772CDF605AE70BF965B2F3D4A250E Sonic by Devann (S2 Hack) GEN
+919B2BDA9483B63A13FF295FF8B09853CA5F79A8 Sonic by Evil Sonic (v2.0) (S2 Hack) GEN
+34006A3FEE99FD2E47E5B04609771465F6CC899A Sonic by Graxer (S2 Hack) GEN
+B5518A4CDC7FBED0EF2337CEDC42B9D3C58CA665 Sonic by Insulfrog (v0.5beta) (S2 Hack) GEN
+AA280DD03BA57C085E5126CA5185BF305B7EB240 Sonic by Krizal Chen (Dsght) (S3 Hack) GEN
+7C09923D23C8FB03C40DDD3EBBC7979308B3CBE0 Sonic by Kyoufu kawa (S1 Hack) GEN
+51452DF9094F8E95F2EC566C6EF874E22E03DB3F Sonic by Sanderson V0.445 (S1 Hack) GEN
+38C4C65E5A2202F8B401C04F6BC0F057A9F18424 Sonic by snkenjoi (S1 Hack) GEN
+F4A223D51F3136896B9ADEAA05DFAF435DF4BBE6 Sonic by Xdaniel (S2 Hack) GEN
+0B6A7F040715B901F9024C1F1EE992FE81199063 Sonic CD Metallic Madness Act 3 by snkenjoi (S2 Hack) GEN
+D96205B8AED14AF9805E3375DF6E52ED3C223AA4 Sonic Classics (UE) (REV01) [o1] GEN
+55CBFD71EDCE9DD599F89B0341EA938CC228D966 Sonic Fantasy v0.01 (S1 Hack) GEN
+253AF2C40709B9FD4FC3839B7D022E25C8D5466B Sonic Fantasy v0.02 (S1 Hack) GEN
+4BA7078710C4D9461334D41C64E222C06073AC4D Sonic Fantasy v1.4 (S1 Hack) GEN
+AFFD74EA93B68D90FA0C534623158BD2E731BE5C Sonic Fantasy v1.5 (S1 Hack) GEN
+745F852C3C4D90CEFD9E53B396F005734EE62090 Sonic Featuring Rouge the Bat v1.0beta (S1 Hack) GEN
+11DFB0B266D48C69C1728F06D62607C849A4D1BB Sonic Gaiden Prototype (S1 Hack) GEN
+5A29E82512717524EC74893C8DA6DC7B5F0CD8AE Sonic Gaiden V0.1 by Yuski & Esrael (S1 Hack) GEN
+E7DFA43530A7401F6D28A29B3BEFBB17177C8AE1 Sonic Gaiden V0.2 by Yuski & Esrael (S1 Hack) GEN
+288CFF172DC78B94B2B5DA9706F7CE0E6A84C239 Sonic Gaiden V0.4 by Yuski & Esrael (S1 Hack) GEN
+BF4B6ACD1D8937C37C70341DB80105CDA5B6B987 Sonic Genesis (Release 2) by Xenowhirl (S1 Hack) GEN
+FA33ADC42EE2296A992E33B4C00115FE941C669E Sonic in Water (S2 Hack) GEN
+D771F8243547B3244BAFD829F6AA9EE4AE642199 Sonic Jam's Easy Mode by Lost V1.0 (S1 Hack) GEN
+44A796F47C0BBA27D70581691CC9E6C42D526247 D Sonic Jump MD by sik (PD) GEN
+2C41FD7372068FA86B3A1B2DDF03514253D0C2CA Sonic Mega Mix (S1 Hack) GEN
+40EB323DE9B1E2374BF468134DCA2CA48C1A14EB Sonic Neon (S1 Hack) GEN
+C832449788305DD98A15238332FB0FB41784EFDF Sonic Night Edition (S1 Hack) GEN
+A0ED304A0A64D1532D3AD6102BA78F52CD2D7DC7 Sonic Optimised (S1 Hack) GEN
+A18551DAC8F4D0C895876981D7EB1B58AE6A1622 Sonic Optimised 458 (S1 Hack) GEN
+D6C911874F74A6943200758C1B0AA6759763DFFD Sonic Plus v0.2 by Hivebrain (S1 Hack) GEN
+B157143FA22BC28D9F8239577000B9EA323074F9 Sonic Project (S1 Hack) GEN
+4B0690EB8AC216526C4B2BF256BB57C532C54472 Sonic Remastered (S1 Hack) GEN
+704DD00D83C80C6B30C034D0AB6F92C452E87932 Sonic Remastered Final Version (S1 Hack) GEN
+24CE1596E89EBAC45481DA810B0BD3296FDC76AA Sonic Remastered First Public Release by Puto (S1 Hack) GEN
+239DC52E215E2BBD4D33000D10E25B5A0E6DF1CE Sonic Remastered v0.1 by Puto (S1 Hack) GEN
+DB654C188A5C91BCD6502AA3DFB66298539E5A84 Sonic Remastered v1.1 by Puto (S1 Hack) GEN
+95A8A60933A0D62962F22AF2A7371BF03E73CB9E Sonic Remix WIP (S2 Hack) GEN
+5CAA80051D135F05A64494689F99E192FD7D0F35 Sonic Revolution (S1 Hack) GEN
+42711F7C612CCEF1AE771DB643E883D166756286 Sonic Spinball (U) [T+Rus] GEN
+D6E837FE9480ED07FE62271AFA31DCC37F0F4E49 Sonic TG v.4.0 (S1 Hack) GEN
+FFD3032736A2E5A23047E18F59817267F0DC3A25 Sonic TG v0.0.0.1 (S1 Hack) GEN
+D8CCFC99E3221ECF996BE69E1129195563D57D32 Sonic The Hedgehog (Beta) (S1 Hack) GEN
+AD7502FA15B1819EEB4089783B4A850D898BC71E Sonic The Hedgehog (W) (REV00) [p5][!] GEN
+D660012C05DE7B0481AEC7432F14A3FD1C2FD23A Sonic The Hedgehog (W) (REV00) [T+Bra_BRGames] GEN
+CCB754EF4A7E4990C1A53DAB15AEA543B38B7329 Sonic The Hedgehog (W) (REV00) [T+Bra_Odingames] GEN
+E4719CDC9AAC0C0EB15BD10304CDA94EA54599AB Sonic The Hedgehog (W) (REV00) [T+Fre_Terminus] GEN
+835AC39991A11FBC715AB3AD9A28468906FEB3F1 Sonic The Hedgehog (W) (REV00) [T+Rus_NewGame] GEN
+66EC1392F13A6E8ED8D0837492CA32DAAD769900 Sonic The Hedgehog 2 (Beta 4 - Sep 18, 1992, 16.26) GEN
+B60F424E77BE28FFA6937DE3A08256CA55E6FE40 Sonic The Hedgehog 2 (Beta 5 - Sep 21, 1992, 12.06) GEN
+21DFC1142809622D5548E83F2C3544C34E0B2320 Sonic The Hedgehog 2 (Beta 6 - Sep 22, 1992, 18.47) GEN
+C9FDCE433DE4661E5F6F276A9B8C1B2B139B6709 Sonic The Hedgehog 2 (Beta 6 - Sep 22, 1992, 19.42) GEN
+14C6EC07BCC1450D7ED3AFCC9994C7D994A9B52D Sonic The Hedgehog 2 (Beta 7 - Sep 24, 1992, 09.26) GEN
+5F2DCE167D03566D356DBDBCDD38B1B1DFB56B09 Sonic The Hedgehog 2 (Beta 8 - Sep 24, 1992, 19.27) GEN
+5B51B4D98CB4A7A38157DC4AB9462164DD224BFD Sonic The Hedgehog 2 (Prototype (Earlier)) GEN
+7FAE53DD31023F7B5333B5A50FB43E1207EE9F3D Sonic The Hedgehog 2 (Prototype - Release Candidate) GEN
+4050C7BA90A53138407C66DCAE9891E5A5C73E8F B Sonic The Hedgehog 2 (W) (REV01) [b8] GEN
+491AA4D84B5EC6444668E05F7DD26FB4108F703C Sonic The Hedgehog 2 (W) (REV01) [T+Rus] GEN
+BC2B67803BBBA89A456A464E679CDE4B4BB567FB Sonic The Hedgehog 3 (U) (Argentina) [p1] GEN
+2BC849A9AECCF965124F6D93B8FDB185DF0675FC Sonic The Hedgehog 3 (U) [T+Rus_NewGame] GEN
+A2D98B57CD11B9451B9C7BC8A05C94F0272C15D5 Sonic The Hedgehog 3 (U) [T+Rus_NewGame][p1] GEN
+4A138327AE3DA4BF79130ACE744096D104686B23 Sonic Warrior - The Tempest of Time (SK Hack) GEN
+5630085C764F0975A6FA9768B0607071182753DD Sonic with Fries - Public Demo 1 by Afti (S1 Hack) GEN
+8CF8BAAE03EBF3B6BEAF14E19E7E4E45D12324FD Sonic with Mouse Support (S1 Hack) GEN
+292FF56E7F0A209B3B1662C82D7C40A875CEECA5 Sonic Zeta Overdrive by Mikel (S2 Hack) GEN
+E69770CDA07488E7FDF064BF3E5AC8C4CB0AE172 Sonic ZX (Beta) (S1 Hack) GEN
+C187FABA2929E373B159B062C750AD85C7202393 Sonic ZX (January 24, 2009 Demo) (S1 Hack) GEN
+6EA51A30EBB931E111799CDBAB344B69F4C9B77B Sonic ZX (v1.0) (S1 Hack) GEN
+EEC01A8FA4DE41F7CCD23DF4BA94A36570D920D7 Sorcerian (J) (VC) GEN
+41A24CEBC6DFFBCE10CDD7911EA82DB78E757826 Sorcerian (J) [T+Eng0.50_S.Seehorn,Hungdongs] GEN
+4BB00B8B42FB50E8D3BE092516370FDF1BFC49E1 Soul Blade (Unl) [f1] GEN
+679E74EFC254F08C7FE830F8394F10F24272D00B Soul Edge VS Samurai Spirits (Unl) [f1] GEN
+28CEF4B6829A791C56D4764812D0B345595C8389 Soul Edge VS Samurai Spirits (Unl) GEN
+2DD321FE90A00C8F7607800A77C5B1CEAAD59EA0 South East Island (S2 Hack) GEN
+16630A3ECDF043F2E585643BF07D0AC815A83949 D Sparkling Truffle Demo (PD) GEN
+DB1984F10EEFDDF1B186A619202EEC73D150ED48 Special S2 by snkenjoi (S2 Hack) GEN
+9071941FE37ED3D2A19783BC7BF337C1D23DDD2A Special S3K by snkenjoi (SK Hack) GEN
+7DA217A45FAFB569BAEE190BE6A660AF428CF3E5 Speed Ball 2 (J) GEN
+59F878A44099BE9DDF293C8BED7CC4B906651C91 Spider-Man - The Animated Series (W) [T+Rus_NewGame] GEN
+FAA29C510440C27C004E44B69DDD1AC9BD1A1B8F Spider-Man and Venom - Maximum Carnage (W) [T+Rus] GEN
+DA1A83BDACC0001BD387B7260F29AD01AD28F51E Spider-Man and Venom - Separation Anxiety (UE) [T+Rus_NewGame] GEN
+DCE603D0CC8FD55FF830472F692212AD845AABE7 Spider-Man vs The Kingpin (W) [T+Bra_Monkey] GEN
+9A4627434B58B09A7A63ED6978C840989D91A9CB Spider-Man vs The Kingpin (W) [T+Bra_Traductor-Sama] GEN
+0712A2927F353E0AFFDA183976FEC22CCE4F64B5 Spider-Man vs The Kingpin (W) [T+Rus] GEN
+33011A42130B89C3A916364400186B454CA9061E Splatterhouse 3 (U) [T+Rus] GEN
+54EEC5A741D110E703EAB6B3A57A278D2B5C809E Splatterhouse 3 (U) [T+Rus_MagicTeam] GEN
+0C33BB0CF3DE11F52AEC8D90283B831D9D7D37AF Splatterhouse Part 2 (J) GEN
+1F6FC731C958957D0E28115BAC0376B9FD35AF81 Sponge Bob (R) GEN
+24D27506F9E4D8DE8833F33D8F8E4DD8FBC1BF25 Spot Goes to Hollywood (E) [T+Rus_NewGame] GEN
+3485122FE38A743A158C31A62EA2F323391AC7F9 D Sprite Masking Test ROM (PD) GEN
+2552E3A6621B6EDA1B656AEDBFC25EACFBC37CCA D Sprite Model Walking v.1 (PD) GEN
+4849B577B91D8783D8845336C0B12A8A20D4F66B Spy Kids 4 (R) GEN
+246C1A02A13B1A1221C655E3A3327626EFD24687 Squirrel King (Unl) [T+Rus] GEN
+F4DF210C5E52878C5B83ED8E95395C264EB769FE SSRG (S1 Hack) GEN
+B57787831913503177F4045BBAA8B2F0C500132C SSRG Tech Demo 14-Oct-2008.21.15 (S1 Hack) GEN
+255365B02B6E3288F0010C1E3C6EB9888336642D SSRG Tech Demo 16-Oct-2008.20.38 (S1 Hack) GEN
+16166DFE12ECD2E0A3DE49C91671570E9D1F9F45 SSRG v01-Nov-2008.13.20 (S1 Hack) GEN
+F59DA32788407CD17DC16092566B730D2D9F9A82 SSRG v01-Nov-2008.13.29 (S1 Hack) GEN
+A502990CBEE8C244763975CDEE31F48B453FC8AB SSRG v01-Nov-2008.13.45 (S1 Hack) GEN
+7BF043CF4245FB05D7CE3598EB0B8A3212FEEDB1 SSRG v01-Nov-2008.14.56 (S1 Hack) GEN
+2C4EB9DED82954CCBC458665A4A15F5DA3608ECD SSRG v01-Nov-2008.15.11 (S1 Hack) GEN
+5E11BDDCD1D85CEDCA7793AFC9E459879F221ED3 SSRG v01-Nov-2008.16.10 (S1 Hack) GEN
+5294175EEF3C64302319874324201100AE19E457 SSRG v01-Nov-2008.20.58 (S1 Hack) GEN
+C4396E7499F5DC7FA6BBBB435D735DE058DB572D SSRG v01-Nov-2008.22.42 (S1 Hack) GEN
+D8EAEE674EF85B52BB078EBACF7C2BE91BE98298 SSRG v01-Nov-2008.23.29 (S1 Hack) GEN
+60E6327218619EF97AFF99C9934242D026C43BB3 SSRG v02-Nov-2008.03.02 (S1 Hack) GEN
+701C00B30DFA30C1E56BD09C42E8C3ADC637D81D SSRG v02-Nov-2008.12.32 (S1 Hack) GEN
+A10876F0B19F27B241F3C8271A1757B4C3D1381D SSRG v02-Nov-2008.12.46 (S1 Hack) GEN
+A6DE3AFE46B8DB7446DDBD8AB0EA6F41B0534AA1 SSRG v02-Nov-2008.15.49 (S1 Hack) GEN
+D912166B49264FB5E3959A03EEA232C8FECDB9F6 SSRG v02-Nov-2008.16.11 (S1 Hack) GEN
+993AA17BFE99E43603B635D2FF418D57F6F691A3 SSRG v04-Nov-2008.15.59 (S1 Hack) GEN
+58382D24FC03CAAFBFF1A514217634E2980163E6 SSRG v05-Dec-2008.22.48 (S1 Hack) GEN
+92FF1B233AA29ED9EE158F803FE5254B6F4BE2B4 SSRG v06-Jan-2009.15.13 (S1 Hack) GEN
+269FA449DAC90EAA792DEDEC880C4E8545ADA727 SSRG v07-Feb-2009.10.48 (S1 Hack) GEN
+D30C2D237EE56E52F6F788C33561C79F5DFC9782 SSRG v07-Nov-2008.21.36 (S1 Hack) GEN
+00AD869A2810247ACA205EA230B2ECB8876F241C SSRG v08-Nov-2008.23.50 (S1 Hack) GEN
+9956DD85F505A0E24A0117B1BCA10C605742BD20 SSRG v09-Nov-2008.00.43 (S1 Hack) GEN
+5E2E1E035FFCB208EBD2E8EBFFBE818DB118E8EA SSRG v09-Nov-2008.13.12 (S1 Hack) GEN
+7E115F76EB61798A7E7D18E7B43F2E7CDFCFC62E SSRG v09-Nov-2008.13.27 (S1 Hack) GEN
+28FE0C4B7C702CB96524F07D2307709F22136379 SSRG v10-Oct-2008.16.59 (S1 Hack) GEN
+0C71173C4C41DFF262F16467BB324A51659CEA0B SSRG v10-Oct-2008.22.59 (S1 Hack) GEN
+1407481E4B9873D03413A627CB0898047E83BC21 SSRG v11-Jan-2009.01.31 (S1 Hack) GEN
+BE9E4C66227A532718FF00730C9CF4FFDBD6E8B4 SSRG v11-Oct-2008.00.23 (S1 Hack) GEN
+1B28B598833C71668DD781C0036FDA4EC9D767DB SSRG v12-Oct-2008.12.54 (S1 Hack) GEN
+BEE68F3A1760451F79C51A6EC22B8AE872CB8482 SSRG v12-Oct-2008.13.15 (S1 Hack) GEN
+A73A6A8FBE8D7B710347AF88A742EEE54B5A0AA0 SSRG v13-Oct-2008.20.25 (S1 Hack) GEN
+AFB23970DCE95507EC1B11DDC1FF2CF970C2E3FD SSRG v14-Nov-2008.21.40 (S1 Hack) GEN
+9F1D3FBFDC9C99C4034E1C6EFF9FC1A25B5784FD SSRG v15-Feb-2009.01.17 (S1 Hack) GEN
+A12ACCE5F2BC836A612B8D6DBBFE83F25AF6CFEA SSRG v15-Feb-2009.21.22 (S1 Hack) GEN
+38CC28EB8BEA4848A49525EBF4883E0B4F995901 SSRG v15-Feb-2009.21.39 (S1 Hack) GEN
+2FF5674AAE1681F750879BD3D40F6ED194055910 SSRG v15-Nov-2008.13.29 (S1 Hack) GEN
+ABA219588272B5C0E1515B7D7BCBFA8910A235A2 SSRG v15-Nov-2008.14.03 (S1 Hack) GEN
+0CADF8BE7A94E7DCF07DF5EC41112C2EFAA5BEBA SSRG v15-Nov-2008.14.21 (S1 Hack) GEN
+FC5DEC55F7509B9BDAED76600277E8BA3748D8D7 SSRG v16-Dec-2008.21.55 (S1 Hack) GEN
+3AA9F5A13686B21735C5C739F08877C2A4609695 SSRG v16-Jan-2009.21.39 (S1 Hack) GEN
+14FB176787C7B06169FB8B64D0E33A9984E8A502 SSRG v17-Dec-2008.21.57 (S1 Hack) GEN
+0E1467D2449FD75D7634D5D10A6E424A9B7C34F0 SSRG v18-Feb-2008.22.08 (S1 Hack) GEN
+C08EB9F0EBDEAC40FEE0C53BDC38FBA8EFDA9046 SSRG v18-Jan-2009.22.02 (S1 Hack) GEN
+BB1CAE7FC06E73FBE567040B0767A54BFAAA2513 SSRG v19-Feb-2009.19.33 (S1 Hack) GEN
+78E655CA725C5B9780D5FBECBE46D4F5D4F6A399 SSRG v19-Nov-2008.21.58 (S1 Hack) GEN
+83A02C96B156A847AE662C1BB60D10AA684CEC60 SSRG v20-Feb-2009.10.42 (S1 Hack) GEN
+704EC351CDD40D96DEF80A6E1A87D1E127D7A1F5 SSRG v20-Nov-2008.21.33 (S1 Hack) GEN
+EAB91FFF94CBB5FE7AF7A3AAD3EF8E53939C9E2E SSRG v20-Oct 2006 21.27 (S1 Hack) GEN
+9249F292991613459A870DC60EC90DA074EAEED7 SSRG v20-Oct-2008.17.10 (S1 Hack) GEN
+D02983D020BD16334AEC27AF874FF94560DF1283 SSRG v20-Oct-2008.19.54 (S1 Hack) GEN
+5B2F9982D8E827E131F977328D030BB54035BFCA SSRG v20-Oct-2008.20.13 (S1 Hack) GEN
+60D6030CE7017207133BD46424C1BFDF1A29190A SSRG v21-Dec-2008.01.15 (S1 Hack) GEN
+404E8A5F7D90024CF0234349C2CCBC9D3E6994A7 SSRG v21-Nov-2008.23.37 (S1 Hack) GEN
+AE4AED64198C7C9768EB85410370906AD1AD7B06 SSRG v22-Dec-2008.04.12 (S1 Hack) GEN
+C8A30AD5D29A35715A5A7DCC509A1DC4589BBF38 SSRG v22-Oct-2008.14.32 (S1 Hack) GEN
+35E39EC42AE373820FA214DA439FF20A55DFF550 SSRG v22-Oct-2008.14.40 (S1 Hack) GEN
+CB136A56993F45BD44D2168537296BC1632972E0 SSRG v22-Oct-2008.19.07 (S1 Hack) GEN
+0BCC3887736F6B94A7C494E071E6CAAEDC6CC984 SSRG v22-Oct-2008.19.22 (S1 Hack) GEN
+699F43D70FAB3C1080FF01495BD969883C90A133 SSRG v22-Oct-2008.19.30 (S1 Hack) GEN
+D0A0FF6AD0A710877294F1DE21F2C76B9DD311E7 SSRG v22-Oct-2008.21.24 (S1 Hack) GEN
+C489F720A2C2C27B9E3B9B6DF1D1D94E53A5BE18 SSRG v23-Nov-2008.00.25 (S1 Hack) GEN
+5BFFF8B69AF4C1E3F95A72B0DDBDA3777ECC23E2 SSRG v23-Nov-2008.00.48 (S1 Hack) GEN
+514C658368B3A9D60695AFB279C4BD60B5671344 SSRG v24-Oct-2008.19.25 (S1 Hack) GEN
+A2A80F3B30269A5572853C8D31072248E2C29BB1 SSRG v24-Oct-2008.21.11 (S1 Hack) GEN
+A8CC7494AB8687C3ED250415BCFEB43E8823F366 SSRG v24-Oct-2008.22.14 (S1 Hack) GEN
+4D5EDA21BE9CC22FAA83A802BA072FB2FA8FC529 SSRG v25-Oct-2008.13.17 (S1 Hack) GEN
+6B727569D476412791B0A7E81E1AFFF456C6229C SSRG v25-Oct-2008.13.54 (S1 Hack) GEN
+B64CF8A6A632F51E00FDD34CBDFAE637BA48977B SSRG v29-Oct-2008.15.34 (S1 Hack) GEN
+84D7FE6E82FF2999DC0A9DB16394DEC60C637F70 SSRG v29-Oct-2008.15.50 (S1 Hack) GEN
+79BB1AD3E592156F4C9A00F312E9EA5AFC1D9D71 SSRG v31-Jan-2009.01.02 (S1 Hack) GEN
+7F71864130F1EA797317C3ACF6CADEF002D9A46B SSRG v31-Jan-2009.12.08 (S1 Hack) GEN
+791EE690B2929D4EDFDA22FF23D7CFD74376299E Star Odyssey (W) GEN
+305F35F82BBA741452447A29F7F27E0808C92AE3 D Star Raiders Demo (PD) GEN
+B3F800AE3009296614D1B0943B4245B4510A30F0 Star Trek - The Next Generation (Prototype - Dec 28, 1994) GEN
+E01D14C9DC9CD63800A793350E88AF5DE71B699B Star Trek - The Next Generation (Prototype - Dec 29, 1994) GEN
+C6D702396D090B80FA1BB86B5079870DE1C2DD70 Star Trek - The Next Generation (Prototype - Jan 03, 1994) GEN
+4ED46DC5FAAFA8E92C753FCAD5F37DD7C563E28C Star Trek - The Next Generation (Prototype - Jan 10, 1994) GEN
+94A7B71AADA60F0A622F6156A31F22700C484505 Star Trek - The Next Generation (Prototype - Jan 18, 1994) GEN
+7E1B9BD971088D083C4F9447AE5DAFF50BCC67C2 Star Trek - The Next Generation (U) (Prototype - Jan 25, 1994) GEN
+54A2515B9F35B494AFCDD77972898049E8B8DF2E Star Wars (R) [!] GEN
+2720D3CA0FCDC4CCA64654169C04B6ECF79C9FA8 Star Wars Jedy (R) GEN
+B072234791EB0ED1AD9C226467757EABECC0D4C4 D Stero WAV Player V0.2 by Tiido Priimagi (PD) GEN
+6629A0299689898B1A9B54E4FD05DAD1E2FD62D3 Stone Protectors (U) (Prototype) GEN
+499DD47C325874A231A8D8430ACA0BB6FEEB3DCD Story of Thor, The (Prototype - Oct 04, 1994) GEN
+E4B25941AEFB58073784616ACF7CA7458B213BEE Story of Thor, The (Prototype - Oct 17, 1994) GEN
+6A1E050828FD084EC9D4E07333D7E864F5FB030F Story of Thor, The - A Successor of The Light (E) [T+Rus_Shedevr] GEN
+379A7AF5768D5BADC348E626712AF8C6EA1BFF76 Street Fighter II' - Special Champion Edition (E) (VC) GEN
+8E808ED1F7429F65D9E8A11DB2FF1B4E4F96DF7C Street Fighter II' - Special Champion Edition (U) (VC) GEN
+9D507DA08660EF27E45F54A214BEA5AE9EE4CD3A Street Fighter II' Plus - Champion Edition (J) (VC) GEN
+B276B9E92EA0B4A882010839E5F77812955CF7CA Streets of Chaos, The (Streets of Rage 3 Hack) GEN
+2ABFCC344CD44301FD85D0ADB69EFB3987ECFA24 Streets of Rage (W) (REV00) [T+Rus_NewGame] GEN
+8BB1F960CC2DB28C2C58DD0469564DF14AC5F3F8 Streets of Rage (W) (REV01) [h1] GEN
+83CAEA13E982C7938B06B8CF4390E3F4778B0552 Streets of Rage - Clone by TI (Hack) GEN
+75157B182E6301B07B37E8E948F039A08B0D73AE Streets of Rage 2 (JE) [T+Chi2005.09.28_ken,madcell] GEN
+46286EBBAA8E1AC55B73B3A97A4A3091DA123218 Streets of Rage 2 (JE) [T-Chi2005_ken,madcell] GEN
+F60E1CE400BB93FAC607126522D2BA87D977172F Streets of Rage 2 (R) GEN
+871C734C3F9CD5893B7C8E993A5D32448A8C3A96 Streets of Rage 2 (U) [f1] (Viewer Patch in Options) GEN
+2C56B315DDCAFD6F49C7C3655BD65F5DA02640D5 Streets of Rage 2 (U) [T+Fre1.0_Rysley] GEN
+D22D81F102961DCF439072244B29C5CF285D0577 Streets of Rage 2 - Calles Sexules 2 by Charnego (Hack) GEN
+86AE0C6FAF686A3CBFF4CB3E9A848826EC2B0A16 Streets of Rage 2 - Killer Edition v1 (Hack) GEN
+1BCE68865C88168DAFD34AD505DDA74BC6682BD1 Streets of Rage 2 - Naked Blaze (Hack) GEN
+2E0C9F709705FC64AB395F65CF0CA9F0F560D0F8 Streets of Rage 2 BK 2 V11-11-07 by Ivex (Hack) GEN
+F6778BCFFDBE46AB133A1EDC7A79387FD5E0C8AC Streets of Rage 2 Blaze T-X Edition (Hack) GEN
+32AFE51492575D4BAC9697ECE92078841DA0009E Streets of Rage 2 Bosozo Edition (Hack) GEN
+73F62CB9BEB0FAE0F328CDD60122F33F79B8801C Streets of Rage 2 ED-209 Edition (Hack) GEN
+46DA6DE19B103CFBC4E04E772B3A67AF84F8736A Streets of Rage 2 Extreme Edition 1 by gsaurus (Hack) GEN
+841112EB5E181DCA25243DA8AFC909C48E652C24 Streets of Rage 2 KnuxIn Edition (Hack) GEN
+16F58A2E74A9BA2C191096AD2BB889B08FCC1DFD Streets of Rage 2 Rudra Edition (Hack) GEN
+B4D55AFDE8960CCE270877CD697BC07C2BA59C48 Streets of Rage 2 Superman & Batman Edition (Hack) GEN
+0E6F0EA7563BF53C86AF8501A2F54A096DBDC6AB Streets of Rage 2 V12-07-07 by Ivex & xiaoguihun (Hack) GEN
+0431A9250BE97CA9AECBC0676EE258CF828AC681 Streets of Rage 2 V3.0 by Diamand_v (Hack) GEN
+DDE7E827DEEC90C247719B1415FC8403593827BF Streets of Rage 2 Xmas (Hack) GEN
+58FEAE0110F239BA7A58E447B86158705249B35B Streets of Rage 3 (E) (Prototype - Apr 20, 1994) GEN
+8A8CFC1E75F89CF72D7D783B29238F4A8B3FF568 Streets of Rage 3 (E) (Prototype - Apr 25, 1994) GEN
+76F4D071E3F95A740A21C14D68A732AAC4700739 Streets of Rage 3 (Prototype - Mar 08, 1994) GEN
+2764B00B7257E41928C6B7387606104990F4505A Streets of Rage 3 (Prototype - Mar 17, 1994) GEN
+9A97BEDDE6CCB06E9D56A9F86308BA97502994F6 Streets of Rage 3 (Prototype - Mar 18, 1994) GEN
+9F2F64507FD11114C2BACDD54AA25AECFA4F25BB Streets of Rage 3 (U) (Prototype - Apr 01, 1994) GEN
+E2645121252F51D1EB5EA4FFC9AF0092941AD7C9 Streets of Rage 3 (U) (Prototype - Apr 04, 1994) GEN
+94CC6697534CF90A369B5C7DFB4E53F1DE96DF1C Streets of Rage 3 (U) (Prototype - Apr 08, 1994) GEN
+5592E80501219DC2B5FE5F07819948520B8FA051 Streets of Rage 3 (U) (Prototype - Apr 11, 1994) GEN
+60E47F8393A79DD30C8AD273BC448610BEF602F8 Streets of Rage 3 (U) (Prototype - Apr 12, 1994) [a1] GEN
+0B0FA81973BF2F0313E0F2041C8CDD1C220E9839 Streets of Rage 3 (U) (Prototype - Apr 12, 1994) GEN
+FFE3B23352B15F62F00653631BC3A606B7CDA4B0 Streets of Rage 3 (U) (Prototype - Apr 13, 1994) [a1] GEN
+32DF74CCF217E8258DEE9ACC50DB540BBC68CA02 Streets of Rage 3 (U) (Prototype - Apr 13, 1994) GEN
+118E4A8A3891956E0B60BCF5A6DD631BA93794A3 Streets of Rage 3 (U) (Prototype - Apr 15, 1994) GEN
+0B5160BDB791033C51AAF924EB280F977FC387D4 Streets of Rage 3 (U) (Prototype - Mar 28, 1994) GEN
+58971FAE13B14057A742201875C6D406F0185867 B Streets of Rage 3 (U) [b1] GEN
+196332E74BE3334F086D24026B0076E23625FA4A B Streets of Rage 3 (U) [b2] GEN
+D44580EF499D9C2364B26AA92CADCEA3EBB15472 Streets of Rage 3 (U) [T+Rus_NewGame] GEN
+C06F1B1F3332431CD7F72CBBEC01C160B7BB4E2B Streets of Rage 3 - BK 3 by Ivex (23-03-2009) (Hack) GEN
+300047F83003AC125C44D60F4D805B253165372D Streets of Rage 3 Ash Edition (Hack) GEN
+8418BE49C3C711B03CB41A600365146AAF49BA0F Streets of Rage 3 Plus by Evgeny (Hack) GEN
+20D1BA81682610B4AE77C67C9862E492981E5447 Streets of Rage 3 Plus by Xyahzhs (Hack) GEN
+929A8D686F6745489107367B5A456744E40591AA Strider (UE) [T+Fre100%_Terminus] GEN
+522D957332F0486AB020888C3724BBD64330C761 Strider - Immortal Edition (Hack) GEN
+30C608481F76748EE36263A2CF650BB3B2E07D32 Strider Hiryuu v0.01 (S1 Hack) GEN
+91609B5083FAC0D8C00A25D3831EFF5FB02EAC5B Sub-Terrania (J) (Prototype - Feb 02, 1994) GEN
+7C2EBF6AE2BDEEDF8ADD59C78C1BF5B6BBAFED7B D Sub-Terrania Trax (PD) GEN
+9FB4354B12E2F310E9521FBD31CB7BAB5166991C D Sudoku Master (PD) GEN
+34F657362EB17C128E5244AAC0D5D290139BE1A2 Sunset Riders (U) [T+Rus_NewGame] GEN
+193EFFE4B3C4C1BEFAF90C8C6909D9FE6E9AFCD3 Super 19-in-1 [p1][h1] GEN
+3B10606B4B79144EE0849206815BB3AA3689FE0D D Super 3 in 1 Trax (PD) GEN
+6C501FE31B32894A93293265862FC12B4409E3E7 Super Battle Tank - War in the Gulf (U) [T+Rus] GEN
+D00DDC3B2674C6F3E0575F6BA79DA69B85B7DD0B Super Battleship (U) [T+Rus_NewGame] GEN
+E1E4C439C5C22FA5CFCECAAB421C55BF1746B5DE Super Big 2 (Ch) GEN
+4F4E06B668C45180AA479736217FB9FF11F0EC49 Super Bubble Bobble MD (Unl) [f1] GEN
+19068E3685B9D228F85BD8523C9ECD487AC301B8 Super Donkey Kong 99 (Unl) [f1] GEN
+2FDA94B45C1AE6ACD52BB2C2DD0A4B49A5242B74 Super Donkey Kong 99 (Unl) [T+Rus] GEN
+2A5F84234CBDC3C88ACB1249C7548A46CF7F6E0E Super Hang-On (W) (REV01) [T+Rus_MagicGame] GEN
+367A25693320D0298E2857994C4B4080A72708DE D Super Mario Bros. by mairtrus (V1.4.1) (PD) GEN
+7EA8BDE9D0ACB6D265E4CC4965BBE29205F61045 Super Mario World (Unl) [T+Rus_NewGame] GEN
+07B67974D577CE449D2AD699BAB18302FC07C1DA Super Off Road (U) [T+Rus_MagicGame] GEN
+C5EEC399E457A2BE9CACD1D9A73C5DFE66C32CB1 Super Peel-Out by snkenjoi (S2 Hack) GEN
+36D9B5A70D596A1010EAB79E15453D73C4ED5396 Super Robot Wars (R) [!] GEN
+3A5D2CA11EC1F7CD752F1769F2D6704F15795B61 Super Saian Beta v4.0 (S1 Hack) GEN
+7F7DFC55197F3C9C41D62DFB4F97ACBC989AD5D3 Super Shinobi II, The (J) [T+Chi(Trad)] GEN
+D3E1A2E99610F148B6812D54D44B61C09FA4C012 Super Shinobi II, The (J) [T+Chi_cslrxyz+SkyLeague] GEN
+C047B08052DB241270E1E38D548A6F6ED9E0FA51 Super Shinobi II, The by Shinwa (Hack) GEN
+E1B37DA43B96040F8120BD608CC91F12EE9E93AB Super Sonic in Sonic 3D v1.0 (Hack) GEN
+C8F8F60A53585B3C0499FC12AB28072B782A3962 Super Street Fighter II - Not Settled (Hack) GEN
+A1A87067F44B52209F291A61AF93A5FAEDC1D8DB Super Street Fighter II - The New Challengers - Not Settled (Hack) GEN
+D0A57B14DC08FAD001E96DE72A4111F6C9B22825 Super Volleyball (J) GEN
+4E0F9DAE1C9427E03D561E43E0891A069046A35A D Superfighter Demo1 (PD) GEN
+361A30D4DE7F2C761BC6E097D4E3F8E6B5B54D35 Supersonic v0.1 (S1 Hack) GEN
+CD80B4021E850DE38DA17FE66604428AE5CE12BA Supersonic v0.2 (S1 Hack) GEN
+F604118C4F751FC50822468CE05F41C7F9EF1707 Surging Aura (J) [T+Chi_Ken Tse] GEN
+1B6763B866C6CE65F2AC5D742D67A1D637633558 Surging Aura (J) [T+Rus_Dizzy] GEN
+BD020F2DA03A11E982A4EBD809E101C357E96E30 Swamp Thing (U) (Prototype) [o1] GEN
+AAABDE61833F6D2DCBBCBD94743058199C58C189 Swamp Thing (U) (Prototype) [o2] GEN
+D1E45AC78846C3C779B3B7218F12F8EE17B2B558 Swamp Thing (U) (Prototype) GEN
+3F8715A224131721C80F676195717CD6F7FE0764 Sword of Vermilion (UE) [T+Fre0.10_Arkana] GEN
+F4ACEEBD46D14A9BAB39C802360029443B851750 Sylvester & Tweety in Cagey Capers (UE) [T+Rus_NewGame] GEN
+9A5829010313A073640829B6DE61FA46FEA47D7F Syndicate (UE) [T+Rus_NewGame] GEN
+305B4AF243513BC95C1AFF860F8D8131CBDA3D96 Syndicate (UE) [T+Rus_Shedevr] GEN
+64D0778D38B5EB0664C1B85E0689DE637A416654 T2 - The Arcade Game (J) GEN
+3C06E5B3DDC3F88310319450B55BF6820C4588E4 T2 - The Arcade Game (UE) (REV01) [T+Rus_NewGame] GEN
+86714F0B30BF88E2F3C0C2B9CF2C5BD8874F214C Taikou Risshiden (J) [T+Chi] GEN
+37576614B152054F0C1EAF1F0F9B77F260B66E4F Taikou Risshiden (J) [T+Chi][a1] GEN
+B708E8E7509C637ECFC5E00BA3CF1480299D2737 Tails in Sonic 1 - Hacking Contest 2007 Edition (S1 Hack) GEN
+9E9934E795CB7B02E794E810B3819F6C795ADB5C Tails in Sonic 1 Bugfix3 (S1 Hack) GEN
+C8FBB1D687E0AC919B55A52953F8C543C992323F Tails in Sonic 1 by Drx+Puto v2.11 (S1 Hack) [a1] GEN
+69AE8A8A3831B762B5E1F7A0EF49A9489F4C4D4E Tails in Sonic 1 by Drx+Puto v2.11 (S1 Hack) GEN
+9B0FCC030887125F543357E9027D22F0EEEF8392 Tails in Sonic 1 v.1.1Bugfix (S1 Hack) GEN
+3BA74DF572F444AC703A223235B4E843BF653AD7 Tails in Sonic 1 v1.1 (S1 Hack) GEN
+15637C0B4500E2AA62E97591B6C077587C96BB81 Tails in Sonic 1 v2 (S1 Hack) GEN
+BDC1B50A5BE69BB6D1DB7F6B2E261E5FD1EEB055 Tale Spin (UE) [T+Rus_NewGame] GEN
+8682718F2C2AD80EAF7D62E977D6827490D8E906 Tank 2011 (R) GEN
+F2E8FD674EAC049BB61E1E133568283F0017E055 Tanki (R) GEN
+31C49BBA3D1FB10EBDE060BACD47D17857D04404 Taz-Mania (W) [h1] GEN
+9EF8A40878766F7E747E45F6749769DE75AD2BE5 Taz-Mania (W) [T+Bra_Lithium] GEN
+1D9B8AA644998411757FF5DDFFF69D9C6161108E Taz-Mania (W) [T+Rus_NewGame] GEN
+80A2F21304CEA6876BC07A48DCD1F5E53A5B3ADB TC 2000 (Unl) GEN
+1041FDE6628A0DDF7FA17FD10B3D1F92DEEEF9F8 Tecmo Cup (J) [h1] GEN
+D01DA927ECC983C9C49B73608ECB0D44793FDF41 Tecmo Cup (J) [T+Ita_GINES,Cimo] GEN
+DC858342BE31AB9491ACFAEBF1524ECE2C6EF9A3 Teddy Boy Blues (SN) (J) [!] GEN
+F77385AD72D4DBC8B9FD17F2C83FCE9D690B458C B Teddy Boy Blues (SN) (J) [b1] GEN
+021B3A96F7B7103678E3EFCD173464C11BB2A2A4 Teenage Mutant Hero Turtles - The Hyperstone Heist (E) [T+Rus_NewGame] GEN
+15C555B1503162661F2277FE969261146E7E3EF2 B Teenage Mutant Hero Turtles - Tournament Fighters (E) [b7] GEN
+474E65472EFF4D3C93D5B5C1CD5425B47D01C901 Teenage Mutant Ninja Turtles - The Hyperstone Heist (U) [T+Rus] GEN
+DD874F83CCE1866C852726EC6CCE4910A8571697 B Teenage Mutant Ninja Turtles - Tournament Fighters (U) [b1] GEN
+FC7322B3AE523011029D226E6ECF5CE129BA2B9C Teenage Mutant Ninja Turtles - Tournament Fighters (U) [T+Rus_NewGame] GEN
+ECCA9D2D21C8E27FC7584D53F557FDD8B4CBFFA7 Tenchi o Kurau III - Sangoku Gaiden - Chinese Fighter (Unl) GEN
+A7928A61FA147CF48C58132AF416A74B1DBC9C63 Terminator 2 - Judgment Day (UE) [T+Rus_NewGame] GEN
+75D2C0821B94897B86B7CD19C0F179B476298F86 Terminator 3 - Arcade Game (R) [!] GEN
+AF8464DAC09D731DC1EAB881A2D7DB7F0CCE80B8 Terminator, The (U) [T+Bra_Monkey] GEN
+CCB55F7477D1A8A741014CB6F6C22EEDD6099D69 Terminator, The (U) [T+Fre_Corrigo] GEN
+50C7593A171B2038AF4EA95835B3F48080A7C330 Terminator, The (U) [T+Rus_NewGame] GEN
+018E28628998D78C3346ED3A3032B0A297CA290A Test Drive II - The Duel (U) [T+Rus_MagicGame] GEN
+EF69D66E8F646228B30D24E65E272775F921F801 D Tetman Vpdrc333 by Kaneda (PD) GEN
+123458C53C697C3A69590242FD005C728192DA4E Tetris (J) [p2][h1C] GEN
+40E54FF9F5F4A1A411167606B7BF707F8CA90F8B D TFM Player 1.0 (PD) GEN
+132BD9F2BAC5DAC7485B400B7EF74678B5986D35 D TFM Player 1.0pack-rom by KRIKzz (PD) GEN
+5338B914A3B375BF26614F29298655E21110FAC9 D TFM Player PAL (PD) GEN
+007AB1A1B65CF94E0F3C965072AD759400A7A467 Thrash by DalekSam (2nd Public Release) (S2 Hack) GEN
+C7DAF07C682B841B75D9668E4595C0860956AE9A Thrash by DalekSam (S1 Hack) GEN
+791A69A6E60882F85A9707001E580DE6E3F887B2 Thrash by DalekSam (v1.1) (S2 Hack) GEN
+E30594C0FF38751F074993AC71B92BEBB2251F6D Thunder Force II (U) [T+Fre100%_Terminus] GEN
+890DD46AC424FB2F377C55ED39FB06DB0D5BE51D Thunder Force III (JU) [T+Fre_Terminus] GEN
+12714867EA2B2AC2222ACA14E4A436EF1A8E638B Thunder Force III - Plus Max Edition (Hack) GEN
+130303889ABBF20C916381D688CE64A82D6FF6F6 Thunder Fox - Plus Max Edition (Hack) GEN
+C4E960A96C20ACAC47A2FAC7C2527A9FE752688D B Tick, The (U) [b2] GEN
+653B9A2C4D461E4BFA0337756E9BE1A290C5EF8C Tick, The (U) [T+Rus_NewGame] GEN
+E063CB4EE74BED7949702B49476165F726789CB8 D Tiido's Segane Mega Benchmark v0.2 (PD) GEN
+CFB77651C259D2641FF4034259FE18552662DDD0 D Time Invaders v0.02 by Kaneda (PD) GEN
+A712E06AC45FFCB0A23ED70299BEFB850D497FBE Time Run (S1 Hack) GEN
+AF0FACE31F3E23312AEB9D3639E5815F1EFEB60D Tinhead by krizal (Hack) GEN
+EABCC60694C5478BFD9EFA469322C8E40CB4EF39 D Tiny by snkenjoi (PD) GEN
+365D190088D78813F65610FF2B5B50C0E4060E24 Tiny Toon Adventures - Buster's Hidden Treasure (K) GEN
+EE778233F81123A1B5F52D4D476BECE45AAE2950 Tiny Toon Adventures - Buster's Hidden Treasure (U) [T+Fre_Terminus] GEN
+F0A0DD5E7BAF93AD2C1323B65E922F1B0A580F6F Tiny Toon Adventures - Buster's Hidden Treasure (U) [T+Rus] GEN
+56845412DAFA07BB41D9730001A46109A95814BD Tiny Toon Adventures - Buster's Hidden Treasure (U) [T+Rus_NewGame] GEN
+47B1AD463389D709FB49C7CEF8FD033A6F95A301 Tiny Toon Adventures 3 (R) [f1] GEN
+6C68E4C7A5A14F926DC69EA5D5A452D9EAD29A8E Tiny Toon Adventures 3 (R) GEN
+DD3D0564C308F79D538EC0DC0F1BD0F688DA6456 D Tiny Toons Adventures 3 Sound Test (PD) GEN
+E152FB850DFC2268965A00A55135F996BBB00900 D TMF Player v0.2 by Tiido Priimagi (PD) [a1] GEN
+C973F9D2D7D16C9D9A09BE7DB9FF83E62F9F7269 D TMF Player v0.2 by Tiido Priimagi (PD) GEN
+04542A22531CEB784727EE5EF399786313DCF22F TMNT (R) GEN
+1633CD2CB4DF186D58EDAECC7AFE2E707BBD8136 Toejam & Earl (UE) (REV00) [T+Fre0.90_sky2048] GEN
+FB2DA928F3270247072A2365F6C957EDC12F18F1 Toejam & Earl in Panic on Funkotron (E) [T+Fre0.10_sky2048] GEN
+8EEF52A2AFF616F5E4590416E3E4274B0E8C5173 Toejam & Earl in Panic on Funkotron (U) [T+Fre0.10_sky2048] GEN
+A2E95F541948402BDDA7207CF9481B04FF4AFFA6 Tohaka v0.21 by Ultima and snkenjoi (S2 Hack) GEN
+44797A59FDD247064FFD8E137419F70BCD6ADBC6 Toki - Going Ape Spit (UE) [T+Fre100%_Terminus] GEN
+D5A0636B29B6073CDD32562E57146E552BB7D84E Toki - Going Ape Spit (UE) [t1] GEN
+233D928DE78A6ACD25A5416A377DFFA1F80EDA5B Tom and Jerry - Frantic Antics (U) [T+Rus_NewGame] GEN
+D418C17CC87F30EA99D933574A03BBFE9B9E4797 Top Fighter 2000 MK VIII (Unl) [f1] GEN
+AF1FFF1531453A8D0C37D3B91B1F48A2F71159BC Top Fighter 2000 MK VIII (Unl) [T+Rus] GEN
+E2B8EE109D2302778F7A77563045613B0636D470 Top Fighter 2005 (Ch) GEN
+7D4F7F9DA193BA5596148B9F657D9B6331AFC38A Top Gear 2 (U) [T+Rus] GEN
+27391FBADE87DC26552AE2B86E37D8C67D2E5118 Tougi Ou - King Colossus (J) [T+Eng20061030_MIJET] (Family Friendly Edition) GEN
+7C397FE46ACBA156CC428BBE428C6D5CB8121FF4 Tougi Ou - King Colossus (J) [T+Eng20061030_MIJET] GEN
+348A66F00DF916E65864F5FD38C5C5FC559DDA72 Tougi Ou - King Colossus (J) [t1] GEN
+C9D54B66F3A019D1D3560309016DB49D91594B47 Toy Story (U) [T+Rus_NewGame] GEN
+E1E5F66329BFFEDC245A31DB50CEFD575FECD16B Transformers 3 (R) GEN
+5CC758C0FE9867BEF13F19BAF90D3828F35254C0 Traysia (U) [T+Chi(Simp)] GEN
+ECDE3AB9F6401CAF8AE72C29227066C033AE743A Traysia (U) [T+Chi] GEN
+63F142A34E8738BCF677A869876FF79AABEC910D Triple Trouble (S1 Hack) GEN
+AC31997CB3127F50BA0728BA80245B93B92733DF True Lies (W) [T+Rus_Magic Team] GEN
+CC1D5EF1BA366A3307BBC1239357BB394C5A974D True Lies (W) [T+Rus_Magic Team][a1] GEN
+94B6E4DC72AC3CF88B0611F609EA314426C9C4DF D True Sound Player (PD) GEN
+8C54C89B7F62ED002574AD5166AEAC49361FA777 Try This 2 (S1 Hack) GEN
+10E35F2B0764D4D6B7D0CAC17A13E114D0784637 TSH (S1 Hack) GEN
+F553F412B40FAF6FF765332B0B8A91D525E7B482 TSH by guitardo (S1 Hack) GEN
+C0BAEE24AFA6D5D877160A2A9FC67B8BCE7FB581 D Tubes by Bruce Tomlin (v.006) (PD) GEN
+B8492CE838C21DBEDBCE295DB15DFD4D957898A1 D Tubes68 V001 by Bruce Tomlin (PD) GEN
+05A20EF938EBA9676669BE5912B67E2EFD5F3584 D Tubes68 V002 by Bruce Tomlin (PD) GEN
+992A5EC46FEDF354BFDB230EC7EDF1667A59D423 D Tubes68 V003 by Bruce Tomlin (PD) GEN
+616E7FEFC123B27B66D3B7135B0DAE34532704E1 D Tubes68 V004 by Bruce Tomlin (PD) GEN
+CC212B1564DC7C73FFDC55F9FDE3269A83FEE399 Tun Shi Tian Di 3 Zhi San Guo Wai Zhuan - Chinese Fighter (Ch) GEN
+CFBB461A9CAA584E144F5DABE86DEEC94EA77152 Turbo Outrun (JE) [T+Rus_MagicGame] GEN
+3E03D95E1E942EB232249EE5D78C336AF3998476 Twin Cobra (U) [T+Fre_Terminus] GEN
+E22217A0BDF460C7376FAC3D5BED37DA00F529A1 Twinkle Tale (J) [T+Eng20070328_MIJET] GEN
+4EB35A69E418182B782B1D5C6963E2993FB0DF0F B Tyrants - Fight Through Time (U) [b4] GEN
+D5A8B74AD0EF8E4EBEF890E4FDDF857FB77487FD Ultimate Mortal Kombat - mini13 (Hack) GEN
+990EA61C4AFFB600A6BE719FAAB64330BA59A8D2 Ultimate Mortal Kombat 3 (R) GEN
+5B3D027EC67F1C48DEE8605F82D1679886E3FA6C Ultimate Mortal Kombat 3 - EP (Hack) GEN
+B12C057C83A3502A20F6F37926816332D1DC8280 Ultimate Mortal Kombat 3 - Gopher Mod (Hack) GEN
+85139FFEE6C23ACB0A25E80274F831A2B9D0064E Ultimate Mortal Kombat 3 - Gopher Mod (Vminihack13) (Hack) GEN
+63F916526D68D6F3F59BEA504C37FF80180BD9B1 Ultimate Mortal Kombat 3 - John's Version (Hack) GEN
+F9C7D03FD06481724CA351713DBAF3A86E6B1ADF Ultimate Mortal Kombat 3 - Professional Haliavshik's Power Pack Pro (Hack) GEN
+260DB3516DB415C203E67C48477A09CABAA3DAE2 Ultimate Mortal Kombat 3 - Revelation Edition (Hack) GEN
+729744B0AABFAB353D99BFA53D10653BFEEA3D1A Ultimate Mortal Kombat 3 - Smoke v0.94 (Hack) GEN
+01DCDBCAB80705EBDCD5A280F4E6D806BDCB687C Ultimate Mortal Kombat 3 v1217 + Tracks (Hack) GEN
+89BB9795D987D49B51AA1F5FD371E9AB1C891CE7 Ultimate Mortal Kombat 3 v1217 + Tracks by DARKMAN 007 (Hack) GEN
+376D232599833708492AAF7F5C7222CAB2418CF7 Ultimate Mortal Kombat 3 v1331 (Hack) GEN
+A8E750B53A97038FF5187C90163CFCE8F5FBFD12 Ultimate Mortal Kombat 3 v1331 + Tracks (Hack) GEN
+8BC150356AC591F1B50BA958D23AE5E9C49265DA Ultimate Mortal Kombat 3 v1635 (Hack) GEN
+FD5E3FB47E15F2276FCE9C4C5E83EDFB1995B05D Ultimate Mortal Kombat 3 v1938 (Hack) GEN
+876B639092BB169E4E4576956CD898C8DC493751 Ultimate Mortal Kombat 3 v1938-2107NTSC (Hack) GEN
+1B9D61B5363752A985D8BCEDFDBA6794D29B5B75 Ultimate Mortal Kombat 3 v1938-2107PAL (Hack) GEN
+9A9466C3D84870D3A1613034053C32C63974C21E Ultimate Mortal Kombat 3 v2225 (Hack) [a1] GEN
+09EF2A9927A5D73F8898697F7AEC69E4581DB047 Ultimate Mortal Kombat 3 v2225 (Hack) GEN
+59B7B873EFBC93CAEE26E62F60878A69DFFA7FFF Ultimate Mortal Kombat 3 v2225 + Tracks (Hack) GEN
+D29C64380C3FDE0454D890E9C706530A4389ABC5 Ultimate Mortal Kombat 3 v2225 Track Added (Hack) GEN
+018D9B00D74F148E7A6CE49E81251C94878673DE Ultimate Mortal Kombat 3 v2395 (Hack) GEN
+AF92FD14367B505B9FFBA1548547AAA4E619E83A Ultimate Mortal Kombat 3 v2436 (Hack) GEN
+D934C8AB7D6BE02E1A3A656526219330C014A8C1 Ultimate Mortal Kombat 3 v2476 (Hack) GEN
+BB1EBB83C323E7C99C2DD2C5AA5E60798FB9FD95 Ultimate Mortal Kombat 3 v2535 (Hack) [a1] GEN
+C1ECE89D3BE75E2C81530165D335B8103FC8BF0C Ultimate Mortal Kombat 3 v2535 (Hack) GEN
+142871BB84790B903F208560657596AB227D23BE Ultimate Mortal Kombat 3 v2535 + Tracks (Hack) GEN
+5402B2688A70D3576C65F64F2DAEF4887228F845 Ultimate Mortal Kombat 3 v2615 (Hack) GEN
+4D94E8DF452E01D0F964CE43780CD9AE007AD7F6 Ultimate Mortal Kombat 3 v2783 (Hack) GEN
+FE9C25013F5DC4C3CE0D20AA5DB4B517C7DA4629 Ultimate Mortal Kombat 3 v2783 Tracks (Hack) GEN
+96E64C9442229447C8040A75AF01B6B91BDFBAFF Ultimate Mortal Kombat Trilogy - Funny MK (Hack) GEN
+3D3B9FCE26DC74B61C17B69D64AEA4E6A2086F94 Ultimate Mortal Kombat Trilogy v1635 (Hack) GEN
+7E3C5228986D47349E037321EB9575B749EA0E71 Ultimate Mortal Kombat Trilogy v2634 (Hack) GEN
+ED72549BB341DE2FE238460F662A66848268E690 Ultimate Mortal Kombat Trilogy v2644 (Hack) [a1] GEN
+4DD8C20A513FA78E112DB23973F3CA7E45CB37F7 Ultimate Mortal Kombat Trilogy v2644 (Hack) GEN
+FB2866D223B524FE878DA67EA722AB05FA5A11B1 Ultimate Mortal Kombat Trilogy v2710 (Hack) [a1] GEN
+B5C455ED23F13BD790DDD2C8506A3B4652E64F3C Ultimate Mortal Kombat Trilogy v2710 (Hack) [a2] GEN
+7D62C2ABAC9C6E6C35DEEBAB7ACD4C5F8479072D Ultimate Mortal Kombat Trilogy v2710 (Hack) GEN
+79DEC5D8419B442C9FE41F63F5B86365DCDEBA62 Ultimate Mortal Kombat Trilogy v2710 Tracks Patch (Hack) GEN
+4BAFDEE812DB33915D78573E6CC9C28C717CE598 Ultimate Mortal Kombat Trilogy v2783 (Hack) [a1] GEN
+9253246498ED75FF699AB32EDE1134DFB608DF96 Ultimate Mortal Kombat Trilogy v2783 (Hack) GEN
+18AEDE8E4104A32AAFD18B1F5BF8E9C20A115D8B Ultimate Mortal Kombat Trilogy v2783 Patch2 (Hack) GEN
+C8D0767A04E3B453A2A4B449A1F7641C0377842D Ultimate Mortal Kombat Trilogy v2783 Patch2 + Tracks (Hack) GEN
+6826186FCFCC549B697246D9D6C460AD401FCA73 Ultimate Mortal Kombat Trilogy v2821 (Hack) GEN
+1363BD7FCBF2B1989D9E43F1F74E108BB43A95D0 Ultimate Mortal Kombat Trilogy v2821 Tracks Patch (Hack) GEN
+B1AF28807DBBA6AD07517B0494026D466B0A56CF Ultimate Mortal Kombat Trilogy v3055 (Hack) GEN
+25BB810D686E29D3A5A366D0A721CDB568EDFC2B Ultimate Mortal Kombat Trilogy v3055 + New Tracks (Hack) GEN
+F8CB53FBAF0F229AC123E126E98A613816C9186B Ultimate Mortal Kombat Trilogy v3520 (Hack) GEN
+394B3DAFA597F92E3979664A90DE15E8CA18A822 Ultimate Mortal Kombat Trilogy v3520 + Tracks (Hack) GEN
+FC3A8A3717AE7D3DE9B9E628CF902468C11D6AE6 Ultimate Mortal Kombat Trilogy v4401 + Tracks Fixed (Hack) GEN
+3175942C2EA40D2F2B0AE8A1A32528666BE04018 Ultimate Mortal Kombat Trilogy v4401 Fixed (Hack) GEN
+C8CD74EA65B5B283424AA0134510F986A3D7D337 Ultimate Mortal Kombat Trilogy v4411 (Hack) GEN
+6CF9C55A902AFE01F563368890A1949377A446C9 Ultimate Mortal Kombat Trilogy v4427 (Hack) GEN
+81FF0A3D5130EF0FB810DB7B8747997E9AD54806 Ultimate Mortal Kombat Trilogy v4514 (Hack) GEN
+9352293B1DE2B6AC945DC100EC433B0D2BB1099B Ultimate Mortal Kombat Trilogy v4643 (Hack) GEN
+35723B1DC9BD7D40896514834CCD389D695D629C Ultimate Mortal Kombat Trilogy v4643 + Tracks (Hack) GEN
+EE04D38744E8B21537DE0BC3C53741D3A8E6A526 Ultimate Mortal Kombat Trilogy v4691 (Hack) GEN
+37552C8F484B0E307458D358F8410427C846065B Ultimate Mortal Kombat Trilogy v4696 (Hack) GEN
+892747034876A7F587BBF0E3F21C9F35237BB1EA Ultimate Soccer (E) (M5) (Beta) GEN
+EF1B9CA59F6FF625BA45CF42791EA9779D8C46F2 D Ultimate Tetris by Haroldo de Oliveira Pinheiro (V01) (PD) [f1] GEN
+4C28A32A1C23AE64DA932F81796FCF08E26A175F Uncharted Waters (Ch) GEN
+F02927CDB77FAEE25F3367B056793608DE1C484D Uncharted Waters - New Horizons (U) [T+Chi1.9c2_Ken] GEN
+734A2AEA93109A20B805F9255ACE5F179ADC972E Undead Line (J) [T+Eng1.0-20070903_MIJET] GEN
+E08F42BD2A4D724E075215316603973FDE8A641A Unknown Island v1.0demo (S1 Hack) GEN
+C512B568941E006FC2142DFE52F765B2CF9E7534 Urban Strike (UE) [T+Rus_NewGame] GEN
+C33CF7750339D3399B7D5EF1781932FD4B996243 Urban Strike - Height Mod by TI (Hack) GEN
+0D07368552293716966615D59376A7FEE5C0813C D Uwol - Quest For Money by Shiru (c1.1-2010.16.03) (PD) GEN
+330853CE882222A700F648FF1CEC9D862F3FCD3A D Uwol - Quest For Money by Shiru (PD) GEN
+273BB1B64B3377BB78DB8D7D502F827450B0B361 D Uwol - Quest For Money by Shiru (v1.0-2010.04.03) (PD) GEN
+36EE165BD4D5630D55A805F034A3318AC31B8073 Valis (U) [T+Bra_IPS Center] GEN
+15BABBA97F983CDD31C5EA35CED187E058DEEADF Valis (U) [T+Bra_Orakio Rob] GEN
+B38E6CE8793B3C97EBD5096F3A002F3F6C86CB74 Vector the Crocodile in Sonic First Public Release by E-122-Psi (S1 Hack) GEN
+3730192EC675B397480A71F458130704A17EEFA4 Vector the Crocodile in Sonic Rev1.2 by E-122-Psi (S1 Hack) GEN
+F96A51E792EDDE1ED203054EA9E23FD226D1ED70 Vectorman (Prototype - Jul 24, 1995) GEN
+0BBBC09E9AC38940EE4A6C927DE67196F42E2BDC Vectorman 2 (Prototype - Aug 15, 1996) GEN
+343527612A0710703486C7335B5939B7099EEBBA Vectorman 2 (Prototype - Aug 16, 1996) GEN
+FB949C8734655E48A787F0C869B8C48F4B0A113E Vectorman 2 (Prototype - Aug 19, 1996) GEN
+39F496D8D99A4CB5716F731D9DB656E0CA594A74 Vectorman 2 (Prototype - Aug 26, 1996) GEN
+D142CE853BECC6450C7A3E8B7FE65839E5B68521 Vectorman 2 (Prototype - Aug 27, 1996) GEN
+C933B1B7C8BB4A72F26A273E3B4C74582FE7CF4E Vectorman 2 (U) [T+Chi] GEN
+352E0E44AA65E87C7B50DA6C135E12714502EAA8 Vectorman 2 (U) [T+Rus_NewGame] GEN
+0BAF7BDD5C283C48D8A4B1F2B46E655315AF7D53 Vectorman 2 - Color Mod by TI (Hack) GEN
+7819FDDD0A0D28FE0FEDBCAE21E08B3CE24FF9C6 D VGM Player 4 (PD) GEN
+67A9F9E1DDCEAEB884C5D117783C623CAF410F4A D VGM Player 7 (PD) GEN
+CC968B8623A74058F264D462860505ECE21F911C D VGM Player v1.01 by Michael Stamper (PD) GEN
+BF32B0926EC1D9B498F12A96451366A46CD63347 D VGM Player v2.00 (PD) GEN
+DFF095C9C252BF4AF5AAE52B83BC3C9D243176B7 Virtua Fighter 2 (K) GEN
+8D9E1739A40CF64ADF0B96918028BAC9368B2D89 Virtua Fighter 2 (Prototype - Aug 19, 1996) GEN
+B08E11A477694F50BED2E89EE3269F557B041AB1 Virtua Fighter 2 (Prototype - Aug 30, 1996) GEN
+B6AE0D56D9FD41DF5A577B36FC3717D7399B80FC Virtua Fighter 2 (Prototype - Sep 13, 1996) GEN
+740190E416965AB4B63E82A9A4806178D3463FA9 Virtua Fighter 2 (Prototype - Sep 20, 1996) GEN
+4375B574AB6C3AA41576A91F5A263196F6EC8FC1 Virtua Fighter 2 (Prototype - Sep 27, 1996) GEN
+5BBDFC6496F3318ECB2616B41522CD3C976CA15E Vixen 357 (Ch) [a1] GEN
+4C6D637382B9D2BA84C12933722A0C5AF1F78AE9 Vixen 357 (Ch) GEN
+6526DBEF07792AE5D854C20452C4DFEE656C299C Wacky Worlds (Prototype - Aug 08, 1994) GEN
+E6409DD65C522AF90F65209E8C00A9E1F248C52A Wacky Worlds (Prototype - Aug 17, 1994) GEN
+42A8927F0738ED9BAA88F8115A23941431FA1AE7 Wacky Worlds (Prototype - Aug 19, 1994) GEN
+790267460D70592CF2F2F291F5484C74C1BC5DCF D Walking Demo by Shane (PD) GEN
+3ACE8CE26AAB6FB5D47E690AA74E989C45FBCB75 Wario Land 3 (Unl) GEN
+FCC8DCDF5F91BA8DA83505AF593AEE3CA6B4D4B4 Warlock (UE) [T+Rus_NewGame] GEN
+4BCCD8EC6F91277FD0A89A11AA37776FC6EE6A33 Warsong Graphics Mod by MIJET (Hack) GEN
+38CE5C09F45C40D7672731A52679C47D1A91DAC5 D Waterfall Demo (PD) GEN
+1E90DEB4B235FE44CAB7BC19A6E4048F75ED529C Waterworld (Beta) [T+Rus_NewGame] GEN
+7D7A2D6BFA2EEB8AF5E9A3F5EBA6C737510FB02E D WAV Player v0.2 by Tiido Priimagi (PD) GEN
+8FD10E270CE03CA45944D77FE0D0DD6C2C8A23B4 D WAV Player v0.3 by Tiido Priimagi (PD) GEN
+D35A6ABBFB00A21F12D83B7F8BADC0EC2D196C5B Westside Island by D.A.Garden (V1.0) (S1 Hack) GEN
+AEE3FF64691A2D95646DB3F368E578DA141FFC87 Whac-A-Critter (Unl) [f2] GEN
+D69152E9B4C3D3B16EA5C134C134E87A7EF0BBCF Whip Rush 2222 AD (U) [T+Fre_Terminus] GEN
+B05CA8FDE60AD4F1718EFB59F219F726AA16C620 Wild Snake (U) (Prototype) [T+Chi] GEN
+4A5A979A420A9607FE8A4F0EC900F1D480183D45 Wild Snake (U) (Prototype) [T+Chi][a1] GEN
+E8F68BE4E4882130FBB759BE6F0699235C1BEA11 Wild Snake (U) (Prototype) [T+Chi_SkyLeague] GEN
+73A6DAD0BEDC5552459E8A74A9B8AE242AD5A78E Wimbledon (J) GEN
+402BDC507647D861EE7BB80599F528D3D5AEAF0F Wimbledon Championship Tennis (U) (Prototype) [!] GEN
+7462D7A7FD1C4954FB84A7064895E9DFE23F1935 Winx (R) GEN
+DB00B0A52B858501AEDEA357C28239B4423CF03A Winx 3D (R) GEN
+F87E11EBB0816935528510E382511DCB3AAEAD7B Wolverine Adamantium Rage (UE) [T+Rus_NewGame] GEN
+E7419FD7E5A654008C742A85126147BE821EC9DA Wonder Boy in Monster World (UE) [T+Bra_L.T de Melo] GEN
+79DE16CA6501DF63D14FCE8D76AD6DC0A7E9BBEC Wonder Boy in Monster World (UE) [T+Ita1.0_Michele Di Somma] GEN
+EA461F6DAB40BF799D754C66C4A9282D39714E58 Wonder Boy in Monster World (UE) [T-Ita_Michele Di Somma] GEN
+481C0A3A61607CEFC642992CD3FAA18974834C94 Wonder Boy in Monster World Save Fix by Michele Di Somma (Hack) GEN
+BD1A1637CEF8082558A4757BDFDEBD7474DDCE0F D Wonder Boy in Monster World Sound Test (PD) GEN
+5F5A31A3E8E3B56AA0A3ACDB8049246160679A8F World Championship Soccer II (E) (Prototype - May 23, 1994) GEN
+EE4251C32961DC003A78BEDBF42B231A31CC0ACF World Championship Soccer II (Prototype - Feb 23, 1994) GEN
+7B2654E7828989CC776B2645D635271D951F671F World Championship Soccer II (Prototype - Mar 09, 1994) GEN
+188FA0ADC8662D7A8EEAC1F174811F794E081552 World Championship Soccer II (Prototype G - Feb 22, 1994) GEN
+F633F6EF930426A12C34958D3485C815A82A2276 World Championship Soccer II (Prototype J - Feb 28, 1994) GEN
+0B8E79D7FB38EC8816DC610EF4AEE33CABBF08F3 World Championship Soccer II (Prototype N - Mar 03, 1994) GEN
+170AA426472CFEB3DE1A6B98ED825F435B60B1A5 World Championship Soccer II (Prototype O - Mar 03, 1994) GEN
+BA98B890CA71447BBD7620526F3277E9E9DE10FA World Championship Soccer II (Prototype P - Mar 04, 1994) GEN
+8E706299B04EFC4B0E5E0B9B693C816CB8CCDA72 World Championship Soccer II (Prototype R - Mar 09, 1994) GEN
+9226EB23E1A91856300B310CB2B8263A832BA231 World Championship Soccer II (Prototype U - Mar 14, 1994) GEN
+1E6F3BA839D23F7BA3E01D144B6C1C635207FC7D World Championship Soccer II (U) (Prototype - Mar 23, 1994) GEN
+6D50CC35D2DA2D4EC8F3F090E9866747C07164F3 World Championship Soccer II (U) (Prototype - Mar 24, 1994) GEN
+4E64D9AA93107F9553E9406D8F0F1A998EA5AABD World Championship Soccer II (U) (Prototype - Mar 25, 1994) GEN
+A82CFECF5A384F77F592251100D3447C5FA1E1C7 World Championship Soccer II (U) (Prototype - Mar 26, 1994) GEN
+B3301897AF0590AB7C8CC2B2028B40192012AA65 World Championship Soccer II (U) (Prototype - Mar 27, 1994) GEN
+27AF9BBAA449C38395AFB8F29B2626056A4AE891 World Championship Soccer II (U) (Prototype - Mar 29, 1994) [a1] GEN
+400FD9A69A383468ABEC66032401D0AB6D8888FD World Championship Soccer II (U) (Prototype - Mar 29, 1994) GEN
+AC31599D964A2B8AD69EEBC47DB2947C82768E98 World Championship Soccer II (U) (Prototype - Mar 30, 1994) GEN
+D3A4C99D46F3506821137779226AE09EDFAE0760 World Championship Soccer II (U) (Prototype Y - Mar 18, 1994) GEN
+EB981388D7D2183A64673810A4A047780743C637 World Heroes (J) (Prototype - Apr 08, 1994) GEN
+A47AC5E017315422194A233D4F0AEC9F5CC0E71A World Heroes (J) (Prototype - Apr 15, 1994) GEN
+F1E661306009254797FEE5224D4FEED4CCAA8610 World Heroes (J) (Prototype - Apr 20, 1994) [a1] GEN
+CAFDD71037782D60B41508E7DB7FB5FEC654FF71 World Heroes (J) (Prototype - Mar 30, 1994) GEN
+154D8B2415BCBCE62656EEF63E4FAD026EE2D8D0 World Heroes (Prototype - Feb 23, 1994) GEN
+0CAEA512A3E3A56DA25EE729213427ECB3EC6380 World Heroes (Prototype - Mar 03, 1994) GEN
+F479D845E22DD22F9ADF94BF961585BEC937898F World Heroes (Prototype - Mar 07, 1994) GEN
+CF7AB91E4CCA7F3AB7203D2468E8375ADB8FD7C0 World Heroes (Prototype - Mar 09, 1994) GEN
+D02031FE3130D3D313AB2262E82ABB0D921A971C World Heroes (Prototype - Mar 15, 1994) GEN
+592E3500A2700059EFC878C4360070C5B9F4B056 World Heroes (Prototype - Mar 16, 1994) GEN
+FA925428F0F9B651A2037AA3BD3E05E6F22183D8 World Heroes (Prototype - Mar 18, 1994) GEN
+0BD56A492BC9ADF862D4B745E6E66909B8ACC0D2 B World Heroes (U) (Prototype - Mar 22, 1994) [b1] GEN
+2D0FA212A52A1B418FB061926D515200B3A511FA World Heroes (U) (Prototype - Mar 23, 1994) GEN
+4A03D5D1B5E629AE69F9F8C5F0CBC96BF46A3843 World Heroes (U) (Prototype - Mar 24, 1994) GEN
+8C4DC2B06E0734FC8E39997F8DA6295D187E316E World Heroes (U) (Prototype - Mar 30, 1994) GEN
+AEA91BC2C65C33A54B0EC1873BE5433BEB8685B8 World Heroes (U) (Prototype - Mar 31, 1994) [a1] GEN
+DE2166ED7B4F51ACA63ABB63DB5AEE9CFF381A1C World Heroes (U) (Prototype - Mar 31, 1994) GEN
+E17A3CF1322B3C472EAE4005B3EDB9666FF513CE World of Illusion Starring Mickey Mouse & Donald Duck (E) [T+Fre0.98beta_Generation IX] GEN
+56D94DE2E83C59646478E9E95C895DE8F6F74169 World of Illusion Starring Mickey Mouse & Donald Duck (U) [T+Fre0.98beta_Generation IX] GEN
+ACB904D76882AC782CC85B6C73538CF8EEF98BA2 World of Illusion Starring Mickey Mouse & Donald Duck (U) [T+Rus_NewGame] GEN
+AAD244DCAD0E5D4CA72E480CD5F18C7977D2A02F World Series Baseball '95 (U) (Prototype - Dec 08, 1994) GEN
+406B2D3540C4664356044C38CF4613BD8F76AEFA World Series Baseball '95 (U) (Prototype - Dec 14, 1994) GEN
+5CD3E9CFF259CC8D1D6D43BE4C1ABC5A938F7979 World Series Baseball '95 (U) (Prototype - Dec 28, 1994 - SB) GEN
+7049BFD6797A0B45CCCC5241D748A76F68CA6257 World Series Baseball '95 (U) (Prototype - Feb 02, 1995) GEN
+2D70804A21C93F8E1C2267404EE0D92905A4A50C World Series Baseball '95 (U) (Prototype - Feb 03, 1995) GEN
+9D729E57D6C137FB409646725933FF623F78863E World Series Baseball '95 (U) (Prototype - Feb 07, 1995) GEN
+18AE5AD695DABFB9DDBE3DD66E2A0582EB5987C8 World Series Baseball '95 (U) (Prototype - Feb 09, 1995 - B) GEN
+3C17B99184097E5F968B6F2FB2FC31D25C924971 World Series Baseball '95 (U) (Prototype - Feb 09, 1995) GEN
+D6DBE744B0970A1E6E0D0C5D7D5C8AD6ECE06C8A World Series Baseball '95 (U) (Prototype - Feb 11, 1995) GEN
+DD1DF8B0EE600D5BEF5460CD8E036B66BFE39394 World Series Baseball '95 (U) (Prototype - Feb 12, 1995) GEN
+C5E594842430B824E37993EE8902FD99A2D5086E World Series Baseball '95 (U) (Prototype - Feb 13, 1995) GEN
+6271037557F92943AC1A363B42F816B9FD8CA8CB World Series Baseball '95 (U) (Prototype - Feb 14, 1995) GEN
+B9D6CF1A3E342F0E7E0C36A47E92869A6C2BDA6D World Series Baseball '95 (U) (Prototype - Jan 01, 1995 - TST) GEN
+1C97922C9632E99FDA30465341FE39627611D538 World Series Baseball '95 (U) (Prototype - Jan 03, 1995 - TST) GEN
+956313AF554F82CA10052C8C182493284C0567FD World Series Baseball '95 (U) (Prototype - Jan 05, 1995) GEN
+FDE563A0B84E6D6F39498964E237D500196A449A World Series Baseball '95 (U) (Prototype - Jan 09, 1995 - TST) GEN
+0FBC4F86EF7DCCA024D9E62568288F8792850797 World Series Baseball '95 (U) (Prototype - Jan 10, 1995) GEN
+B301931FDEE91CF8B67F9DE4E6935310E643078B World Series Baseball '95 (U) (Prototype - Jan 14, 1995 - RM) GEN
+D2428F24A615A3557C51CBCB750F381CD0DB5C50 World Series Baseball '95 (U) (Prototype - Jan 16, 1995) GEN
+F9E1E8424E12CA7C95E926E3BB4D24233EB09C5D World Series Baseball '95 (U) (Prototype - Jan 18, 1995 - RM) GEN
+91E5D6A7C703D3B47886BC05100AB278B89E2EBD World Series Baseball '95 (U) (Prototype - Jan 20, 1995) GEN
+124FA734EEE59420F98FC61E0368DBF1EA9ED255 World Series Baseball '95 (U) (Prototype - Jan 25, 1995) GEN
+EAC7DC5656E27E4C95DFC8B04DB85C1C4967B2D5 World Series Baseball '95 (U) (Prototype - Jan 30, 1995) GEN
+A6A3C1A6B04F6318876412A47A8E7C6A92910187 B World Series Baseball (U) (Prototype - Dec 22, 1993) [b1] GEN
+763DCAF06BEFE2A95963F9D41393EACF151D5A97 World Series Baseball (U) (Prototype - Dec 26, 1993) GEN
+FDA84389295622191F29B9E0FC94673891FA782A World Series Baseball (U) (Prototype - Dec 29, 1993) GEN
+63AF6038D8904D33EF3AB50820E6DF84B44B7ADA World Series Baseball (U) (Prototype - Feb 18, 1994) GEN
+449092852822A842A607F40A5685AC73D94F4A93 World Series Baseball (U) (Prototype - Jan 03, 1994) GEN
+4622F2A90007C923F87455A8FD6472B66C44F16C World Series Baseball (U) (Prototype - Jan 06, 1994) GEN
+D72D21E5295AAA2BE1E14DBA382C3CCA25EEC6AC World Series Baseball (U) (Prototype - Jan 16, 1994) GEN
+05EF4F0A2BCC399C7269449C204E61227D1946C5 B World Series Baseball (U) (Prototype - Mar 04, 1994) [b1] GEN
+ECBF253F2363A1AC5C3797EB80FFEE08A8629AE8 World Series Baseball (U) (Prototype - May 27, 1994) GEN
+CEB5AFF07D06A42E2D1E96DE4E4D0DA648DB74B4 World Series Baseball (U) (Prototype - Oct 01, 1993) GEN
+C78B42C9F658B7C9B81EBF8CCB313045D3E19363 Worms (E) [T+Rus_NewGame] GEN
+1329779A4B52DB9961690461162849D8F0A3F01E Worms (R) [!] GEN
+8F085079ECA6CA160A1BDFD6D821E08C62502DCA Wu Kong Wai Zhuan (Ch) [a1] GEN
+C1EE0AF09AA9BD9F2C169D4CF2C48B1B81C63547 Wu Kong Wai Zhuan (Ch) [a2] GEN
+4B4BEFDCD69BF0AF1E39F5148E9561F6F0DF12C4 Wu Kong Wai Zhuan (Ch) [a3] GEN
+FD8D4893326C39915172DC63C791BD272D076874 Wu Kong Wai Zhuan (Ch) [t1] (Money+Experience) GEN
+DD4D7F7433AB82680D7D36124BECA0BACEBCD6E4 Wu Kong Wai Zhuan (Ch) GEN
+76D95E5B1D7C4536C0F59F8C05196A7AE67FD17A Wu Kong Wai Zhuan - Modded Levels (Ch) (Hack) GEN
+DEC969AB8A5648A7A2F4661C85A88862EF49AC94 Wu Shu Shen Jie (Sorcerer's Kingdom) (Ch) [a1] GEN
+E4639381E070F440A502619438C8A2AF5B3F2110 Wu Shu Shen Jie (Sorcerer's Kingdom) (Ch) GEN
+2B29F48E1640B99444CF6C77ED7AC1B3BCE66D83 Wu Shu Shen Jie (Sorcerer's Kingdom) (Ch-Simp) GEN
+9F6E08D8CC6F250AAA66355C413FA5BFAD4A9387 B WWF RAW (W) [b2] GEN
+73A2E78E18264FD6E804DB8E2C44233E47310B02 WWF RAW (W) [h2C] GEN
+EFB82759E09E49D2AAF6DEC6CD68F4BBFA62DEAB D X-Files Demo, The (PD) [a1] GEN
+921DEBAB870697222F80E98737F9D2512AD69A76 D X-Files Demo, The (PD) [a2] GEN
+09D6E5360B2E2B018C36DB0BE17A673EAF0AF114 D X-Files Demo, The (PD) GEN
+D56D177408BEAC8CD62636561DB262096C97ABBD X-Men (U) [T+Rus] GEN
+70B31ADE3F5713A3E86E75EDFC4139FDBEEB0440 X-Men 2 - Clone Wars (Prototype - Dec 02, 1994) GEN
+B13CA62340374B06890E5226F3536B643C6D0CC9 X-Men 2 - Clone Wars (Prototype - Dec 03, 1994) GEN
+027FB3BD1A225C93871DFE21B0928192470079B5 X-Men 2 - Clone Wars (Prototype - Dec 06, 1994) GEN
+4C9D8BDCAC4DAA9832ED7285C8D2A484570B8BFE X-Men 2 - Clone Wars (Prototype - Dec 07, 1994) GEN
+A36862895851DF014935028711818D535E9619FC X-Men 2 - Clone Wars (Prototype - Dec 08, 1994) GEN
+2A911569E36FC210FD8ADEC445814434F1BBEC5F X-Men 2 - Clone Wars (Prototype - Dec 09, 1994) GEN
+35C66C01DE1F423720F418F63B536BA5AE7870D9 X-Men 2 - Clone Wars (Prototype - Dec 10, 1994) GEN
+70E12E86CD340C0EE30024E4299B0C48671787C2 X-Men 2 - Clone Wars (Prototype - Dec 11, 1994) [a1] GEN
+31D240DEFC07674BBFAD1F2F1928492C706B19F6 X-Men 2 - Clone Wars (Prototype - Dec 11, 1994) GEN
+39341C80532D0888F759169DA3622E28F83641F8 X-Men 2 - Clone Wars (Prototype - Dec 14, 1994) GEN
+04316A517F50EDF7357B44802E4F13144B4C033A X-Men 2 - Clone Wars (Prototype - Dec 15, 1994) GEN
+D2467BEC53ADFA25EF257E4DE11542360CC14C89 X-Men 2 - Clone Wars (Prototype - Dec 16, 1994) GEN
+C92510F6B01A0B23B72154D7B390B8BE844A05EC X-Men 2 - Clone Wars (Prototype - May 06, 1994) GEN
+59855BC241F8882E95638A36F1A6B73BD754782A X-Men 2 - Clone Wars (Prototype - May 10, 1994) GEN
+8318D99432C735B7F202B99F400B5F462CE019CB X-Men 2 - Clone Wars (Prototype - Nov 17, 1994) GEN
+E5B4F11CDA43F88975E6FBF231774F30960E1EE4 X-Men 2 - Clone Wars (Prototype - Nov 23, 1994) GEN
+E49CC2D205193C249A563CD4E2CA6371CF764E06 X-Men 2 - Clone Wars (Prototype - Nov 28, 1994) GEN
+AAFCF6782D723ABEFFF14E31FF56C82105CFAFED X-Men 2 - Clone Wars (Prototype - Nov 30, 1994) GEN
+AB2E816BA2FD525EF5C481088ACC440714F739DB X-Men 2 - Clone Wars (Prototype - Oct 18, 1994) GEN
+ED80CD4C19B8ABC6EF0D0BEB121F4E9D2E63B55B X-Men 2 - Clone Wars (R) [!] GEN
+8815D464F9607DC0DFD93AF727D76CE4901E9CF9 X-Men 2 - Clone Wars - Power Blood Edition (Hack) GEN
+97A2FEF09C0A43A46D7F4B4C7B7291D87474DCF0 X-perts (Prototype) GEN
+30222FD4319AA63B6EA28E3087994442A0F221B4 X-perts (U) [T+Rus1.1_Vladimir MefistO] GEN
+338407E95385AC7CA1C12E989931DF00D742CC78 Xin Qi Gai Wang Zi (Prince and the Pauper) (Ch-Trad) GEN
+5FFC5C509A158DA9DC3307B9F91AC69D0DB9FC64 D XPMCK v04 - Astafm Music Test by mic (PD) GEN
+8B6864DCE1B6F018E2D85B547CE5BCDFFA49993C D XPMCK v04 - Orion Music Test by mic (PD) GEN
+D3DF6FD8949E4C943070F5AFC76AED3887AA2C7E D XPMCK v05 - Astafm Music Test by mic (PD) GEN
+4A11F1E6C69D6E225D03407C4D3A584FFBB327E2 D XPMCK v05 - Orion Music Test by mic (PD) GEN
+C5FF8E06B0E3035B2811CF9CA716D62FBF1A2DD1 D XPMCK v06 - Astafm Music Test by mic (PD) GEN
+CDE0CF7D733F1F42F72F28AAA0FCD73A186BA3A0 D XPMCK v06 - Orion Music Test by mic (PD) GEN
+432085AC352563150145410A445D6782DF888962 D XPMCK v07 - Astafm Music Test by mic (PD) GEN
+9159185FEB80ED263E643E0C22EE885C12A00D8D D XPMCK v08 - Orion Music Test by mic (PD) GEN
+C3C4BF4D9BE244CD20C65BA08C94AE82AA140A92 D XPMCK v12 - Astafm Music Test by mic (PD) GEN
+AE608795784D1D853B5F4F24F478A100F4AB6603 D XPMCK v12 - Orion Music Test by mic (PD) GEN
+DF8D64DFD27096937BC17C2C106BFD650C3601BC D XPMCK v13 - Orion Music Test by mic (PD) GEN
+9ADE7042F031AA6B53C80EEAA09E9CB2193E9139 D XPMCK v15 - Astafm Music Test by mic (PD) GEN
+EDA5E23E136FD68851EF224172157007F6678EB4 D XPMCK v15 - Orion Music Test by mic (PD) GEN
+B530897D3620A7325BE4F2733297D8CF2E7E22EC D XPMCK v18 - Astafm Music Test by mic (PD) GEN
+465BB99685C055671D313BEA41796BFF04B27E84 D XPMCK v18 - Orion Music Test by mic (PD) GEN
+4A1B6FC6F4DDD35629DE994DD272C1CFE260DEA8 D XPMCK v19 - Walls Music Test by mic (PD) GEN
+981FB75DA7FA499975B716724DFD2A3A5D3D0AA6 D XPMCK v24 - Walls Music Test by mic (PD) GEN
+FAAD5B906B1BCF4816C07793B109E495A2463D14 D XPMCK v27 - Orion Music Test by mic (PD) GEN
+B82BBCB35752AFEC38FF223BD38AC7AC1A6619CC D XPMCK v27 - Walls Music Test by mic (PD) GEN
+DD53CEFA0733B1FF750128CB58DE6E70A6C130D5 xXRALXx (Updated) (S1 Hack) GEN
+BD531EAFB308DC12BED468A1E52BC486E4534D6C xXRALXx v0.1 (S1 Hack) GEN
+808D29751B572ADA0780DC35D587D99C08BA95B0 D XXX3 Music (PD) GEN
+E5302C0FCA0E2E72D3485424D652F83AB0BA38CE Ya-Se Chuan Shuo (Ch) [a1] GEN
+606B9E2AAE448149D4185ACF2D4F3DC570222640 Ya-Se Chuan Shuo (Ch) [f3] GEN
+24EDBA2BF3305853B99C5B0BC33979FC72A2BBE6 Yadrins (S1 Hack) GEN
+568BDDE7423EDE74A505AFAC24751C4BE365E25A D Yie Ar Kung-Fu 2008-01-03 (PD) GEN
+ADC6F62270FAE48757703D2D82A1262DD3D25B85 D Yie Ar Kung-Fu 2008-01-08 (PD) GEN
+C97CECC06B304864E8CBB57FDB74221B3F4EDE25 You'll Have a Ball v1.0 (S1 Hack) GEN
+4FD6DAB7077BF05C764984B1E17EFC53D36D0E77 You'll Have a Ball v2.0 (S1 Hack) GEN
+4F0EF01ADA3090D6A4004EC6D46DEA5C20E34E1A Young Indiana Jones - Instrument of Chaos (U) (Prototype - Dec 28, 1994) [a1] GEN
+E6B8D13344F37AFF131EDEA4F3F3B20100F63E72 Young Indiana Jones - Instrument of Chaos (U) (Prototype - Dec 28, 1994) GEN
+10CE37B58D423FDAB76E0C53A3B2D379AE9F1221 Young Indiana Jones - Instrument of Chaos (U) (Prototype - Dec 29, 1994) GEN
+99CB157ADB1B6295AB04955EFDC8868BA5AC4D9F Young Indiana Jones - Instrument of Chaos (U) (Prototype - Jan 01, 1994) GEN
+E4AFC2D09815495E7D15111A1698E8F324E5873D Young Indiana Jones - Instrument of Chaos (U) (Prototype - Jan 03, 1994) GEN
+E3DC69F339F6EC6E766578EDEE4CC05F429A689A Young Indiana Jones - Instrument of Chaos (U) (Prototype - Jan 26, 1994) GEN
+2174482B62D11A73FD5EDFF55D111F9BCAC53D97 Young Indiana Jones - Instrument of Chaos (U) (Prototype - Jan 27, 1994) GEN
+ED02300B73F66B6CA41C282A5B9AB55C30B4C7C8 Young Indiana Jones - Instrument of Chaos (U) (Prototype - Sep 23, 1994) GEN
+B511DD71F90AF2015A6A5B222E3440BCE8216B04 Yuu Yuu Hakusho - Makyou Toitsusen (J) [T+Chi][a1] GEN
+D881629AF139EDB6ACF36498654401508501FF69 Yuu Yuu Hakusho - Makyou Toitsusen (J) [T+Eng1.0-20071113_MIJET] GEN
+05892AAFCAC5439F20EA571F10DC6186BCE6C60C Yuu Yuu Hakusho - Makyou Toitsusen (J) [T+Rus_Nemesis c] GEN
+2F226A4B10CDF69EE939EA5BEA2D981FC4824221 Yuu Yuu Hakusho - Makyou Toitsusen - EX Version (Hack) GEN
+0E2AB5708AC18696E0705419AFD260389122219A D Z80 Music & Sound Engine Test 3 by Tiido Priimagi (PD) GEN
+DD5B9A151973485FACF37C4E566DD602D151E3B0 D Z80 Music & Sound Engine Test FEB2007 by Tiido Priimagi (PD) GEN
+EA1231B42F1292C107A2B83313B612209F033FE5 D Z80 Music & Sound Engine Test JUN2007 by Tiido Priimagi (PD) GEN
+1A076534B056461606E131EFA5ABC9F814C6FC1F D Z80 Music (PD) GEN
+AFCCFE65E77C72A74898268C8A281E5EAA950237 D Z80 WAV Player v0.1 by Tiido Priimagi (PD) GEN
+E5791FD177500F862362BDE0E898F0A586608DED D Z80MUS by Michael Stamper (PD) GEN
+FDC697F668D934F695380EE2E1724219E65C2402 D Z80MUSIC by Michael Stamper (v20091223) (PD) GEN
+994CE2407098644D161850E610E5C0CC221CEA85 Zero the Kamikaze Squirrel (U) [T+Rus] GEN
+ECCAA3AD4B2AC8735357EDB3C43EAD696C2DC968 Zero Tolerance (UE) [T+Rus_NewGame] GEN
+6DD63F1361E64595585183402C7BCF9BAC42A6CF Zero Tolerance - Mini-hack (Hack) GEN
+FB793B1AF7387B415908C653B164AADAC1066596 Zero Tolerance Labyrinth Death (Hack) GEN
+7310A94F9E3F67CB201168B15EA8650990C386F7 Zero Tolerance Shooter (Hack) GEN
+EB4386F01DA770C8B8B4311DD7AA5506C04CE2F0 Zero Tolerance Snake (Hack) GEN
+923E33C533E263A75CD6F1E24AC81D2F05C60151 Zero Wing (E) [T+Fre_Terminus] GEN
+EA766BE5A271273D47767A74B38FB1E79BE0561D Zero Wing (J) [T+Tur] GEN
+F0E574677ECBBB515C5E09A2A52FA08195D99DEE Zero Wing - Text Translation Fix by Vincent404 v20010422 (Hack) GEN
+AED4EF58F492AB6AAE4261CF71E9334A46F3C6F8 Zeta Overdrive (S2 Hack) GEN
+298FCD0C7A5B0F09AEEE4344721AF7B2672FD460 Zeta Overdrive EHZ Beta (S2 Hack) GEN
+C4901DDB30B3BF458EF0B7759508135E335B43FC Zombies Ate My Neighbors (U) [T+Rus_MagicGame] GEN
+D4F6BE2B9A4F9ADCA87C23045C85FED0CAC569FE Zombies Ate My Neighbors (U) [t1] GEN
+E9E97CA25221D1CFA8B7378C06D9AB9FD39683D3 Zool (U) [T+Fre_Terminus] GEN
+E155901D8710B1347204C9EBBC18A2F20565C478 D Zoom VDP Hardware Scaling by Fonzie (PD) GEN
+D4B54EABDE3372D9CAEE27C9F0D4E9AC23F242E7 B Zoop (U) [b2] GEN
diff --git a/BizHawk.Client.ApiHawk/Classes/BizHawkSystemIdToCoreSystemEnumConverter.cs b/BizHawk.Client.ApiHawk/Classes/BizHawkSystemIdToCoreSystemEnumConverter.cs
index 9db622672e..31b65c5df5 100644
--- a/BizHawk.Client.ApiHawk/Classes/BizHawkSystemIdToCoreSystemEnumConverter.cs
+++ b/BizHawk.Client.ApiHawk/Classes/BizHawkSystemIdToCoreSystemEnumConverter.cs
@@ -32,9 +32,6 @@ namespace BizHawk.Client.ApiHawk
return CoreSystem.Atari2600;
case "A78":
- return CoreSystem.Atari2600;
-
- case "A7800":
return CoreSystem.Atari7800;
case "Coleco":
diff --git a/BizHawk.Client.Common/RomLoader.cs b/BizHawk.Client.Common/RomLoader.cs
index ae69793fbf..c89ab66fd3 100644
--- a/BizHawk.Client.Common/RomLoader.cs
+++ b/BizHawk.Client.Common/RomLoader.cs
@@ -167,7 +167,7 @@ namespace BizHawk.Client.Common
private bool HandleArchiveBinding(HawkFile file)
{
- var romExtensions = new[] { "SMS", "SMC", "SFC", "PCE", "SGX", "GG", "SG", "BIN", "GEN", "MD", "SMD", "GB", "NES", "FDS", "ROM", "INT", "GBC", "UNF", "A78", "CRT", "COL", "XML", "Z64", "V64", "N64", "WS", "WSC", "GBA" };
+ var romExtensions = new[] { "SMS", "SMC", "SFC", "PCE", "SGX", "GG", "SG", "BIN", "GEN", "MD", "SMD", "GB", "NES", "FDS", "ROM", "INT", "GBC", "UNF", "A78", "CRT", "COL", "XML", "Z64", "V64", "N64", "WS", "WSC", "GBA", "32X" };
// try binding normal rom extensions first
if (!file.IsBound)
@@ -939,10 +939,9 @@ namespace BizHawk.Client.Common
break;
case "A78":
var gamedbpath = Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "EMU7800.csv");
-
- if (!VersionInfo.DeveloperBuild)
+ if (game["Pokey"] && game.OptionValue("Pokey") == "true") // A7800Hawk does not emulate Pokey so route it to Emu7800
{
- nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath); // Don't expose A7800Hawk in releases yet
+ nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath);
}
else
{
diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs
index 87a885805f..f75c4c9a11 100644
--- a/BizHawk.Client.Common/config/Config.cs
+++ b/BizHawk.Client.Common/config/Config.cs
@@ -542,7 +542,7 @@ namespace BizHawk.Client.Common
public bool NES_InQuickNES = true;
public bool SNES_InSnes9x = true;
public bool GBA_UsemGBA = true;
- public bool A78_UseEmu7800 = true;
+ public bool A78_UseEmu7800 = false;
public bool SGB_UseBsnes = false;
public bool CoreForcingViaGameDB = true;
public string LibretroCore;
diff --git a/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs b/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs
index bddb08a500..c53d22207e 100644
--- a/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs
+++ b/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs
@@ -125,6 +125,7 @@ namespace BizHawk.Client.Common
["Toggle Left Difficulty"] = 'l',
["Toggle Right Difficulty"] = 'r',
+ ["BW"] = 'b',
["Open"] = 'O',
["Close"] = 'C',
diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
index 7acc5f3128..cbf70d2917 100644
--- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
+++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
@@ -340,6 +340,12 @@
A7800ControllerSettings.cs
+
+ Form
+
+
+ A7800FilterSettings.cs
+
Form
@@ -1161,7 +1167,6 @@
-
@@ -1311,6 +1316,9 @@
A7800ControllerSettings.cs
+
+ A7800FilterSettings.cs
+
IntvControllerSettings.cs
diff --git a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
index 8ac5604829..7266aaab82 100644
--- a/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
+++ b/BizHawk.Client.EmuHawk/DisplayManager/DisplayManager.cs
@@ -722,6 +722,17 @@ namespace BizHawk.Client.EmuHawk
return filterProgram;
}
+ public void Blank()
+ {
+ GLManager.Activate(CR_GraphicsControl);
+ GL.BeginScene();
+ GL.BindRenderTarget(null);
+ GL.SetClearColor(Color.Black);
+ GL.Clear(OpenTK.Graphics.OpenGL.ClearBufferMask.ColorBufferBit);
+ GL.EndScene();
+ presentationPanel.GraphicsControl.SwapBuffers();
+ }
+
void UpdateSourceDrawingWork(JobInfo job)
{
bool vsync = false;
diff --git a/BizHawk.Client.EmuHawk/FileLoader.cs b/BizHawk.Client.EmuHawk/FileLoader.cs
index 2a3ff94fb3..1e6d123c78 100644
--- a/BizHawk.Client.EmuHawk/FileLoader.cs
+++ b/BizHawk.Client.EmuHawk/FileLoader.cs
@@ -51,11 +51,11 @@ namespace BizHawk.Client.EmuHawk
return new[]
{
".NES", ".FDS", ".UNF", ".SMS", ".GG", ".SG", ".GB", ".GBC", ".GBA", ".PCE", ".SGX", ".BIN", ".SMD", ".GEN", ".MD", ".SMC", ".SFC", ".A26", ".A78", ".LNX", ".COL", ".ROM", ".M3U", ".CUE", ".CCD", ".SGB", ".Z64", ".V64", ".N64", ".WS", ".WSC", ".XML", ".DSK", ".DO", ".PO", ".PSF", ".MINIPSF", ".NSF",
- ".EXE", ".PRG", ".D64", "*G64", ".CRT", ".TAP"
+ ".EXE", ".PRG", ".D64", "*G64", ".CRT", ".TAP", ".32X"
};
}
- return new[] { ".NES", ".FDS", ".UNF", ".SMS", ".GG", ".SG", ".GB", ".GBC", ".GBA", ".PCE", ".SGX", ".BIN", ".SMD", ".GEN", ".MD", ".SMC", ".SFC", ".A26", ".A78", ".LNX", ".COL", ".ROM", ".M3U", ".CUE", ".CCD", ".SGB", ".Z64", ".V64", ".N64", ".WS", ".WSC", ".XML", ".DSK", ".DO", ".PO", ".PSF", ".MINIPSF", ".NSF" };
+ return new[] { ".NES", ".FDS", ".UNF", ".SMS", ".GG", ".SG", ".GB", ".GBC", ".GBA", ".PCE", ".SGX", ".BIN", ".SMD", ".GEN", ".MD", ".SMC", ".SFC", ".A26", ".A78", ".LNX", ".COL", ".ROM", ".M3U", ".CUE", ".CCD", ".SGB", ".Z64", ".V64", ".N64", ".WS", ".WSC", ".XML", ".DSK", ".DO", ".PO", ".PSF", ".MINIPSF", ".NSF", ".32X" };
}
}
diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs
index be04630c83..6e491f5a49 100644
--- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs
+++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs
@@ -301,7 +301,8 @@
this.AtariSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.A7800SubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.A7800ControllerSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.GBSubMenu = new System.Windows.Forms.ToolStripMenuItem();
+ this.A7800FilterSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.GBSubMenu = new System.Windows.Forms.ToolStripMenuItem();
this.GBcoreSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.LoadGBInSGBMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator28 = new System.Windows.Forms.ToolStripSeparator();
@@ -2736,7 +2737,8 @@
// A7800SubMenu
//
this.A7800SubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.A7800ControllerSettingsMenuItem});
+ this.A7800ControllerSettingsMenuItem,
+ this.A7800FilterSettingsMenuItem});
this.A7800SubMenu.Name = "A7800SubMenu";
this.A7800SubMenu.Size = new System.Drawing.Size(51, 19);
this.A7800SubMenu.Text = "&A7800";
@@ -2746,12 +2748,19 @@
//
this.A7800ControllerSettingsMenuItem.Name = "A7800ControllerSettingsMenuItem";
this.A7800ControllerSettingsMenuItem.Size = new System.Drawing.Size(125, 22);
- this.A7800ControllerSettingsMenuItem.Text = "Settings...";
- this.A7800ControllerSettingsMenuItem.Click += new System.EventHandler(this.A7800SettingsToolStripMenuItem_Click);
- //
- // GBSubMenu
- //
- this.GBSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.A7800ControllerSettingsMenuItem.Text = "Controller Settings";
+ this.A7800ControllerSettingsMenuItem.Click += new System.EventHandler(this.A7800ControllerSettingsToolStripMenuItem_Click);
+ //
+ // A7800FilterSettingsMenuItem
+ //
+ this.A7800FilterSettingsMenuItem.Name = "A7800FilterSettingsMenuItem";
+ this.A7800FilterSettingsMenuItem.Size = new System.Drawing.Size(125, 22);
+ this.A7800FilterSettingsMenuItem.Text = "Filter Settings";
+ this.A7800FilterSettingsMenuItem.Click += new System.EventHandler(this.A7800FilterSettingsToolStripMenuItem_Click);
+ //
+ // GBSubMenu
+ //
+ this.GBSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.GBcoreSettingsToolStripMenuItem,
this.LoadGBInSGBMenuItem,
this.toolStripSeparator28,
@@ -4208,6 +4217,7 @@
private System.Windows.Forms.ToolStripMenuItem GenesisSettingsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem AtariSettingsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem A7800ControllerSettingsMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem A7800FilterSettingsMenuItem;
private System.Windows.Forms.ToolStripMenuItem MovieSettingsMenuItem;
private System.Windows.Forms.ToolStripMenuItem CoresSubMenu;
private System.Windows.Forms.ToolStripMenuItem GBInSGBMenuItem;
diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs
index 663e4fd85d..b247428b60 100644
--- a/BizHawk.Client.EmuHawk/MainForm.Events.cs
+++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs
@@ -1984,13 +1984,19 @@ namespace BizHawk.Client.EmuHawk
private void A7800SubMenu_DropDownOpened(object sender, EventArgs e)
{
A7800ControllerSettingsMenuItem.Enabled = !Global.MovieSession.Movie.IsActive;
+ A7800FilterSettingsMenuItem.Enabled = !Global.MovieSession.Movie.IsActive;
}
- private void A7800SettingsToolStripMenuItem_Click(object sender, EventArgs e)
+ private void A7800ControllerSettingsToolStripMenuItem_Click(object sender, EventArgs e)
{
new A7800ControllerSettings().ShowDialog();
}
+ private void A7800FilterSettingsToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ new A7800FilterSettings().ShowDialog();
+ }
+
#endregion
#region GB
diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs
index 13f72ae46f..3f1d63e2c1 100644
--- a/BizHawk.Client.EmuHawk/MainForm.cs
+++ b/BizHawk.Client.EmuHawk/MainForm.cs
@@ -34,6 +34,7 @@ using BizHawk.Emulation.Cores.Nintendo.SNES9X;
using BizHawk.Emulation.Cores.Consoles.SNK;
using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive;
using BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy;
+using BizHawk.Emulation.Cores.Atari.A7800Hawk;
namespace BizHawk.Client.EmuHawk
{
@@ -1725,8 +1726,11 @@ namespace BizHawk.Client.EmuHawk
case "A26":
AtariSubMenu.Visible = true;
break;
- case "A7800":
- A7800SubMenu.Visible = true;
+ case "A78":
+ if (Emulator is A7800Hawk)
+ {
+ A7800SubMenu.Visible = true;
+ }
break;
case "PSX":
PSXSubMenu.Visible = true;
@@ -1970,14 +1974,32 @@ namespace BizHawk.Client.EmuHawk
var video = _currentVideoProvider;
Size currVideoSize = new Size(video.BufferWidth, video.BufferHeight);
Size currVirtualSize = new Size(video.VirtualWidth, video.VirtualHeight);
+
+ bool resizeFramebuffer = false;
if (currVideoSize != _lastVideoSize || currVirtualSize != _lastVirtualSize)
+ resizeFramebuffer = true;
+
+ bool isZero = false;
+ if (currVideoSize.Width == 0 || currVideoSize.Height == 0 || currVirtualSize.Width == 0 || currVirtualSize.Height == 0)
+ isZero = true;
+
+ //don't resize if the new size is 0 somehow; we'll wait until we have a sensible size
+ if(isZero)
+ resizeFramebuffer = false;
+
+ if(resizeFramebuffer)
{
_lastVideoSize = currVideoSize;
_lastVirtualSize = currVirtualSize;
FrameBufferResized();
}
- GlobalWin.DisplayManager.UpdateSource(video);
+ //rendering flakes out egregiously if we have a zero size
+ //can we fix it later not to?
+ if(isZero)
+ GlobalWin.DisplayManager.Blank();
+ else
+ GlobalWin.DisplayManager.UpdateSource(video);
}
// sends a simulation of a plain alt key keystroke
@@ -3627,6 +3649,7 @@ namespace BizHawk.Client.EmuHawk
UpdateDumpIcon();
SetMainformMovieInfo();
CurrentlyOpenRomArgs = args;
+ GlobalWin.DisplayManager.Blank();
Global.Rewinder.Initialize();
diff --git a/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.Designer.cs b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.Designer.cs
new file mode 100644
index 0000000000..45fafbbdc4
--- /dev/null
+++ b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.Designer.cs
@@ -0,0 +1,121 @@
+namespace BizHawk.Client.EmuHawk
+{
+ partial class A7800FilterSettings
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(A7800FilterSettings));
+ this.OkBtn = new System.Windows.Forms.Button();
+ this.CancelBtn = new System.Windows.Forms.Button();
+ this.label4 = new System.Windows.Forms.Label();
+ this.Port1ComboBox = new System.Windows.Forms.ComboBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.SuspendLayout();
+ //
+ // OkBtn
+ //
+ this.OkBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.OkBtn.Location = new System.Drawing.Point(170, 112);
+ this.OkBtn.Name = "OkBtn";
+ this.OkBtn.Size = new System.Drawing.Size(60, 23);
+ this.OkBtn.TabIndex = 3;
+ this.OkBtn.Text = "&OK";
+ this.OkBtn.UseVisualStyleBackColor = true;
+ this.OkBtn.Click += new System.EventHandler(this.OkBtn_Click);
+ //
+ // CancelBtn
+ //
+ 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.Location = new System.Drawing.Point(236, 112);
+ this.CancelBtn.Name = "CancelBtn";
+ this.CancelBtn.Size = new System.Drawing.Size(60, 23);
+ this.CancelBtn.TabIndex = 4;
+ this.CancelBtn.Text = "&Cancel";
+ this.CancelBtn.UseVisualStyleBackColor = true;
+ this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click);
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(12, 44);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(35, 13);
+ this.label4.TabIndex = 15;
+ this.label4.Text = "Filter: ";
+ //
+ // Port1ComboBox
+ //
+ this.Port1ComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.Port1ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.Port1ComboBox.FormattingEnabled = true;
+ this.Port1ComboBox.Location = new System.Drawing.Point(12, 60);
+ this.Port1ComboBox.Name = "Port1ComboBox";
+ this.Port1ComboBox.Size = new System.Drawing.Size(284, 21);
+ this.Port1ComboBox.TabIndex = 13;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(12, 14);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(286, 13);
+ this.label1.TabIndex = 17;
+ this.label1.Text = "A7800 Filter Settings: Needed For Tower Toppler and Jinks";
+ //
+ // A7800FilterSettings
+ //
+ this.AcceptButton = this.OkBtn;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this.CancelBtn;
+ this.ClientSize = new System.Drawing.Size(308, 147);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.Port1ComboBox);
+ this.Controls.Add(this.CancelBtn);
+ this.Controls.Add(this.OkBtn);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.Name = "A7800FilterSettings";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Filter Settings";
+ this.Load += new System.EventHandler(this.A7800FilterSettings_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button OkBtn;
+ private System.Windows.Forms.Button CancelBtn;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox Port1ComboBox;
+ private System.Windows.Forms.Label label1;
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.cs b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.cs
new file mode 100644
index 0000000000..d833f96787
--- /dev/null
+++ b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Linq;
+using System.Windows.Forms;
+
+using BizHawk.Client.Common;
+using BizHawk.Emulation.Cores.Atari.A7800Hawk;
+
+namespace BizHawk.Client.EmuHawk
+{
+ public partial class A7800FilterSettings : Form
+ {
+ private A7800Hawk.A7800SyncSettings _syncSettings;
+
+ public A7800FilterSettings()
+ {
+ InitializeComponent();
+ }
+
+ private void A7800FilterSettings_Load(object sender, EventArgs e)
+ {
+ _syncSettings = ((A7800Hawk)Global.Emulator).GetSyncSettings().Clone();
+
+ var possibleFilters = A7800Hawk.ValidFilterTypes.Select(t => t.Key);
+
+ foreach (var val in possibleFilters)
+ {
+ Port1ComboBox.Items.Add(val);
+ }
+
+ Port1ComboBox.SelectedItem = _syncSettings.Filter;
+ }
+
+ private void OkBtn_Click(object sender, EventArgs e)
+ {
+ bool changed = _syncSettings.Filter != Port1ComboBox.SelectedItem.ToString();
+
+ if (changed)
+ {
+ _syncSettings.Filter = Port1ComboBox.SelectedItem.ToString();
+
+ GlobalWin.MainForm.PutCoreSyncSettings(_syncSettings);
+ }
+
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+
+ private void CancelBtn_Click(object sender, EventArgs e)
+ {
+ GlobalWin.OSD.AddMessage("Filter settings aborted");
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+ }
+}
diff --git a/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.resx b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.resx
new file mode 100644
index 0000000000..91f294b89b
--- /dev/null
+++ b/BizHawk.Client.EmuHawk/config/A7800/A7800FilterSettings.resx
@@ -0,0 +1,624 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ AAABAAwAMDAQAAAABABoBgAAxgAAACAgEAAAAAQA6AIAAC4HAAAYGBAAAAAEAOgBAAAWCgAAEBAQAAAA
+ BAAoAQAA/gsAADAwAAAAAAgAqA4AACYNAAAgIAAAAAAIAKgIAADOGwAAGBgAAAAACADIBgAAdiQAABAQ
+ AAAAAAgAaAUAAD4rAAAwMAAAAAAgAKglAACmMAAAICAAAAAAIACoEAAATlYAABgYAAAAACAAiAkAAPZm
+ AAAQEAAAAAAgAGgEAAB+cAAAKAAAADAAAABgAAAAAQAEAAAAAACABAAAAAAAAAAAAAAQAAAAEAAAAAAA
+ AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP//
+ /wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAHR3AAAAAAAAAAAAAAAAAAAAAAAAAAAAdHdEcAAAAAAAAAAAAAAAAA
+ AAAAAAAAAHd0d3QAAAAAAAAAAAAAAAAAAAAAAAAAAEd8d3UAAAAAAAAAAAAAAAAAAAAAAAAAB3yHfHZw
+ AAAAAAAAAAAAAAAAAAAAAAAAd3fIyHVwAAAAAAAAAAAAAAAAAAAAAAAAfHh3jIxwAAAAAAAAAAAAAAAA
+ AAAAAAAHd8jIyHdgAAAAAAAAAAAAAAAAAAAAAAAHd4yHfIdAAAAAAAAAAAAAAAAAAAAAAAAHyMjIyMhQ
+ AAAAAAAAAAAAAAAAAAAAAAB3d3eMh4dgAAAAAAAAAAAAAAAAAAAAAAB8jIyIfIdQAAAAAAAAAAAAAAAA
+ AAAAAAB3h4jIiMh3AAAAAAAAAAAAAAAAAAAAAAB8jIeHeIjHAAAAAAAAAAAAAAAAAAAAAAeIiHh4eMiE
+ AAAAAAAAAAAAB0dHcAAAAAd8h4eIiIiHcAAAAAAAAAB0d3d3RwAAAAeIeIiIiIh3RwAAAAAAAHR3d8h3
+ dAAAAAfIh4iIiHiIx0cAAAAAdHh3eIeHhwAAAAeHiIiIiIiId3R3dHR0eHd4h4eHhAAAAAd4eIiIiIiH
+ x3d2d3eId4iIiIiIhwAAAAd4eIiI+IiIh3d3eHh3iIiIiIeHwAAAAAfIjHeIiIiIyIeHh4iIiIiIiIiI
+ cAAAAAeIQ0R3h3iIiMiIiIiIiIiIiIiEAAAAAAfIR3d3d0iIiIh4iIeIiIiIiHhAAAAAAAB4d3d3SHiI
+ h4fTiIi3iIiIeIwAAAAAAAB3h4d3eIeIiHiJiIuIiIh4jHAAAAAAAAAHyId3h3h4iIh4iIiIiIiHeAAA
+ AAAAAAAAB8iMiMjIiIiIh4h3aMjHAAAAAAAAAAAAAAdYyIeIiIiMjId6d4eAAAAAAAAAAAAAAAAHdsjH
+ eIeH6MiId3AAAAAAAAAAAAAAAIiIh4V8jIh4eIfHcAAAAAAAAAAAAACIiIh3AAAHd3h3fHcAAAAAAAAA
+ AAAAAAiIjHgAAAAAAHx8eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
+ AAD///////8AAP///////wAA//h/////AAD/4D////8AAP/AP////wAA/8A/////AAD/gB////8AAP8A
+ H////wAA/wAf////AAD+AB////8AAP4AH////wAA/gAf////AAD8AB////8AAPwAH////wAA/AAP////
+ AAD8AA////8AAPgAD//+BwAA+AAH//ADAAD4AAP/wAMAAPgAAP8AAwAA+AAAAAADAAD4AAAAAAMAAPgA
+ AAAABwAA+AAAAAAHAAD4AAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAH8AAP4AAAAA/wAA/4AAAAP/
+ AAD/4AAAB/8AAP/4AAAf/wAA/8AAAH//AAD8A+AD//8AAPgP/A///wAA////////AAD///////8AAP//
+ /////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAQAAAAAAAAC
+ AAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAICAgADAwMAAAAD/AAD/
+ AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdwAAAAAAAAAAAAAAAA
+ AAd0dAAAAAAAAAAAAAAAAAB3x3cAAAAAAAAAAAAAAAAAd3fHcAAAAAAAAAAAAAAAB3yMh3AAAAAAAAAA
+ AAAAAAfIeMdwAAAAAAAAAAAAAAAHjIyHQAAAAAAAAAAAAAAAfId4yHAAAAAAAAAAAAAAAHjIyIdQAAAA
+ AAAAAAAAAAB3iId4YAAAAAAAAAdwAAAAjIiIiIUAAAAAAHd3dAAAB4iIiHh8cAAAAHd3x4dwAAd4iIiI
+ h3Z3d3R3yIh4cAAHh4iIiIfHd3d4iIiIh3AAB3jHiIiIiHeHiIiIiIwAAAh3dXh4iMiIiIiIiIhwAAAA
+ yGd0d4iIeIi4iIiMAAAAAIeHd4iIh32IiIiIcAAAAAAAd4jIyIiIiHeHyAAAAAAAAAB3h4iIh8h3dwAA
+ AAAAAAAIh8fIh4eIaAAAAAAAAACIiHAAB8jIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////
+ ////////////////////n////g////wP///8B///+Af///gH///4B///8Af///AH///wB//n8AP/A+AB
+ /AHgAAAB4AAAAeAAAAPgAAAH8AAAD/AAAB/8AAA//wAA//4AA//weA//////////////////////////
+ //8oAAAAGAAAADAAAAABAAQAAAAAACABAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAAgAAAgAAAAICAAIAA
+ AACAAIAAgIAAAICAgADAwMAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwAAAAAAAAAAAAB3dAAAAAAAAAAAAA
+ d8dwAAAAAAAAAAAAfId3AAAAAAAAAAAHeMjHAAAAAAAAAAAHyHh3AAAAAAAAAAAHh3eEAAAAAAAAAAAI
+ yIiHAAAAAHd2cAAIiIiIQAAAd3d4UACHiIiId3d3eHiIcACHh4iIyHeHiIiIcAAIR3d4iIiIiIiMAAAH
+ d3eIh3iIiIhwAAAAeMh4iIiHiMAAAAAAAHfIiMh4aAAAAAAAiIgHyIfIAAAAAAAIgAAAAIAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD8f/8A+H//APB/
+ /wDwP/8A4D//AOA//wDgP/8A4D/BAOAfAQDAAAEAwAABAOAAAwDgAAcA8AAfAPwAPwDwgP8A5/f/AP//
+ /wD///8A////ACgAAAAQAAAAIAAAAAEABAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACA
+ AAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAd1AAAAAAAAB8cAAAAAAAB4eAAAAAAAAHyMgAAAAAAAiIhwAAAHcACI
+ iHcAd3hwAIz4jIeIiIAAd3eIiIiIAACHeIiIiHAAAACMeMh4AAAAiAAIgAAAAAAAAAAAAAAAAAAAAAAA
+ AAD//wAA//8AAP//AADj/wAA4/8AAMP/AADB/wAAwfkAAMDBAADAAQAAwAMAAMAHAADwDwAAzn8AAP//
+ AAD//wAAKAAAADAAAABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAA9OzsAZD8/AGg8
+ PABtPj4AQkNDAEZIRwBWQkIAV0REAF5AQABbRkYAVklJAFxPTwBTU1MAXFJSAF5ZWQBkQEAAYUREAGZF
+ RQBqQkEAYEtLAGNPTwBwQUEAfUZGAHJKSgB2SUkAfU9PAGBRUQBgVFQAZlZWAGZYWABqWVkAclZWAHpU
+ VAB9W1oAbmJiAGtoaABtaWkAcWdnAHdnZwB8Y2MAe2pqAHJxcQB+dHQAd3l5AHl6egCGT08AiU9PAIFP
+ UACGU1MAjVFRAIlWVgCMV1cAg1xbAIxaWQCQUlIAlVJSAJFXVgCXVVUAmVVVAJZaWQCSXV0AlV9eAJpZ
+ WgCeW1sAml5eAKBZWgCgXFwAql9fAIRmZQCIZWQAhWtrAI5ragCTYmEAnGBhAJ9kYwCaZmYAk25uAJ1s
+ awCFdHQAiXd3AIt+fgCWd3cAmHR0AJV5eQCbfHwAo2JhAKZhYQChZWUApGVkAKplZACsZGQAqmhnAKZr
+ agCnbGsAqmloAKlubQCsbW0AtGZnALhsbACxb3AAv29wAKVxcACrc3IAr35+ALN0cwC5c3MAvXBxALR4
+ dgC1fHsAunt6AMNtbgDGb3AAw3FyAMZwcQDGdXUAyHR1AMp3eADBeXkAxnt7AMB/fgDLensANLBSAEWf
+ TgBBtFwAPMdnADHkdgDciiIAvoF/AISrdwDln0sA35lhAN2XfADgmmEA8LdlAO61cAArWPIALWT+AEh5
+ +gDOf4AAfoCAAHiA1ABZv9wAZrnUAGK+2ABxnv4Ad6P/ADPX/QBw0OcAW+D7AIKEgwCPgoIAjI2NAJuC
+ ggCUiIgAmYqKAJGSkgCjhIQAqoKCAKKLiwC+hIMAsoqKALaSgQCum5sAsZubALqqlQCdgr4Ar6ytALGh
+ oAC6pKQAwoSDAMyBggDGiIYAyYiHAMWMigDMjIoA0ISFANKHiADUjIwA2Y6NAMCUjQDIk44A0JCPANaP
+ kADHlZQAzpSSAMScmwDUkpIA2ZSVANWYlgDampcA2ZeYANWcnADam5sA4p2cAMChjwDeoJ4A5aCFAOaj
+ jQDlpJoA2p6hAMOkowDOoaEAy62tANegoADdoqEA2aGpANGsrwDdq6kAwbG4ANGysQDdtLQA2ri3AOGk
+ owDjqKYA66ylAOGnqADjq6oA6a2rAOOwrwDssK4A5K+wAOaztADttLIA57i2AO24tgDmurgA6rq6APC1
+ swDyuLYA9Ly5APi+uwD1wL0A+cC9AKKMwACkk8QAqprMALSayACptsEAlaDkAOy/wACRxtQAgOv9AJnr
+ 9wDEwsoA5sbGAOzCwgDuyMcA7MzMAPPEwgDxy8oA9dPTAPja2gAAAAAAAAAAAP///wAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAoIJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAACYXODs4BCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ KTNDQ0M7OAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALllbYmJZQBcAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYYWNwcHBwWy8mAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFLanBwcHBwYz0eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAABpqcHBwcHBwZVkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl11w
+ cHBwcHBwcGcSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIXdwcHBwcHBwcGkSAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPXBwcHBwcHBwd2wYAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAACXbnBwdXB5dXl0eW4hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAid3R5eXl5eXl5q6wzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9eXV5
+ i7CxsbGxsblLKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABndYuwsbm8uby5vMFnHgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJt3q7G3vMHB1cLBwdWuEgAAAAAAAAAAAAAAAAAA
+ AAAAAAAeEhMSCiUAAAAAAAAAAEexsbm/1dXZ2dnZ1da5ZgwAAAAAAAAAAAAAAAAAAAAjEjNZaW5qXRMl
+ AAAAAAAAADW5s7/V2N7i4uLi3dzZrQQPAAAAAAAAAAAAAAAAHxhZbm5uaWltd6ASAAAAAAAAAEmzvMLZ
+ 3uP29/fw4uTkuUAWCy0AAAAAAAAAAB4YYXd3gG13vbm5vb8zAAAAAAAAAE6xwdXd4/b6+/r38OTl1Vlc
+ OAMIFAweFBQSM2mtrYB3vdXT0NXExNU1AAAAAAAAAE65wtXe8Pr7/Pz79+fn1WphZ25pXV1mbHetrXd3
+ tdXT4vXw49nZ3NYgAAAAAAAAAEu3wdje9vv7/Pz79+fn34B3d2xtoHeud66uudXT4vD39/Dj49zk5G0A
+ AAAAAAAAAD2xwcwoH0/L/Pukyenp5K27u7m5uczM0Nve4vb3+vr56OPl5eXl1igAAAAAAAAAADWxwQgB
+ BQYNmveZK/Dp6cG/wcTV2eP3+vr6+/r6+ejm5ufn5+nkIgAAAAAAAAAAAJmruR4sjC2WLFCdDd3p6dXW
+ 1tXI3vn67pCO9Ojp6efo5+fm59wiAAAAAAAAAAAAAABLsZ0FmC0qKgHMRcjp6dzc1Y2KiO3RlfKTj+np
+ 5ubm5eXk1SIAAAAAAAAAAAAAAACdab/Lp5aWnEfV1cHm6ebk6pGSiabZ8fOU0uXl5eTk3NyuRQAAAAAA
+ AAAAAAAAAAAAn0ux0KFTaMHBv7nC6efp3Ovv7OTm3OPl3Nzc3NfW1U6fAAAAAAAAAAAAAAAAAAAAAABF
+ Wa25t7yxs7Gw5+fn5Obk18XG3NyBfHvD1cSgNQAAAAAAAAAAAAAAAAAAAAAAAAAAAFUzarGwsHl5sefn
+ 39zEgoZ/hL19fnqirj2jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATj09ZXV0cLzn3NXChYeDub+1pbQ9
+ VQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0rXj+rpInTBDcHCz5NW/ucG5u7GAM1QAAAAAAAAAAAAAAAAA
+ AAAAAAAAAADLytDi9tOemQAAAAAAUy9EecLEsa1uPTUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPj11Mme
+ VakAAAAAAAAAAAAATS84M0akAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////
+ AAD///////8AAP///////wAA//h/////AAD/4D////8AAP/AP////wAA/8A/////AAD/gB////8AAP8A
+ H////wAA/wAf////AAD+AB////8AAP4AH////wAA/gAf////AAD8AB////8AAPwAH////wAA/AAP////
+ AAD8AA////8AAPgAD//+BwAA+AAH//ADAAD4AAP/wAMAAPgAAP8AAwAA+AAAAAADAAD4AAAAAAMAAPgA
+ AAAABwAA+AAAAAAHAAD4AAAAAA8AAPgAAAAAHwAA/AAAAAA/AAD8AAAAAH8AAP4AAAAA/wAA/4AAAAP/
+ AAD/4AAAB/8AAP/4AAAf/wAA/8AAAH//AAD8A+AD//8AAPgP/A///wAA////////AAD///////8AAP//
+ /////wAA////////AAD///////8AAP///////wAA////////AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
+ AAAAAAAAAAAAAAABAAAAAQAAAAAAAFFNTQBRUlIAU1RUAGJHRwBiT08Aa0lIAGJTUwBrVlYAYllZAGZc
+ XABpWloAb1xbAHNTUwB7V1YAc1hXAHFbWwBkZWUAaWFhAG5kZABpamkAcGFhAHlubgB2cHAAf3V1AH55
+ eQB8fX0AgUpKAI1PTwCLWFcAhlhYAI9ZWQCKXFsAm1ZWAJJZWQCWWVgAmlpbAJtcWwCiXFwAl2BfAIBg
+ YACAZ2YAgG9vAI9oaACWZWQAmGBhAJ5kZACcaWoAmm9vAIV0dACNcHAAiXZ2AIB8fACac3IAm3V0AJ51
+ dQCZfHwAnHx8AKNmZgCnZmYAqmJiAK5jYwCvb24AtWVmALBtbgC5bW0AvmxtAKx+fQCxcnIAtHBwALZz
+ dACydXQAtnd2ALlwcAC5dnYAt3p5ALh5eAC8fHsAun18ALx+fQDGb3AAxnBxAMdzdADAd3YAyHJzAMlz
+ dADJdXYAynd4AMd/fwDMe3wAzXx9AHunbwBhvHIAYsN4ANuLOwC2hn4A4Zt5APC3ZABte9sAX47+AHWM
+ 5QAl0foAY+P8AIeDgwCFhoYAioSEAJOIiACWi4sAmpKRAKGCgQCmhYUAqYGBAKuDhACniooApYyMAKiO
+ jQCyhYMAvoWEALeNjQCrj5AAr5eXALSVlAC9lJMAmbCEAK6RugDBgYAAwoSCAMWDhADChoQAxYeFAM6A
+ gQDFiIYAxoqIAMqIiQDMi4oAy4yKAMiPjQDPj44A0ISFANKJigDUi4wA04+NANWNjgDKkY8A0JCOANud
+ iQDWj5AAzJSTAM2XlgDGm5oA1pGSANOUkgDVl5EA1pOUANiVlgDYmJUA2ZeYANKenADbmpsA3pmYANuc
+ mgDbn5wA1aacAN6gngDqqZoA3Z+gAMyjowDCra0AxqysAMqpqQDboaAA3qKiAN6logDbp6UA3aWkANer
+ qgDWsbMA0rW0ANe0tADfs7IA4aSiAOGlpQDkp6UA46imAOWopgDsraIA6qimAOGoqADhrqwA6a2rAOqv
+ rADpsK4A7LGuAOGzswDlsbEA7bKxAO+1sgDotrYA5rm3AO+4twDot7sA6bq5AOu9uwDrv70A8bazAPG2
+ tADxuLUA9Lm2APC9uwD2vboA9L+9APi+uwD4v7wA8sC+APXAvgD5wL0AkILJAKqXzACsu8cAqr/LALLV
+ 3QDawMIA48XFAOvDwQDswMAA7cTDAO/ExQDgxsgA8cbEAPTGxADwyskA9MvJAPLNzQD21dYA+NjZAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAMEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqHCEcBQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAayU9PSYbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdQlBSQiJpAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAM0pSUlJQPRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnUlJSUlJGFQAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAFJSUlJSUkoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzUlJSWVJZfxAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAC5XWYqKioqGDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASoqMkpqa
+ mqAsAAAAAAAAAAAAAAAAAABoNAAAAAAAAACMjJyuvLy2toYHAAAAAAAAAAAAABcOIDouBgAAAAAAc4yc
+ tsHKysPAriIKAAAAAAAAABYgRk1LTX+DEAAAAABukqXB4ejo4dHPQCIEChcXEwggTXV/k66unKMpAAAA
+ AG6Srsro6ero0dN/Rk1NRk2Dg4STrsbh4cHAt2sAAAAAbpKuOXPe6ajW15KGg4OGk528yuHo5eHPz882
+ AAAAAAB4jCkDAxSoMabXt5yjt8ro3ePo5dbT09HTdAAAAAAAAABGcBFoGgFwdtfDwHxi2dpmZcrX09HP
+ z0MAAAAAAAAAAHh/qWwaOa6cz9PNZGPYsdzbzc3DwLk2AAAAAAAAAAAAAAAvhpKakoyg19HNyKS5wHtb
+ orZ/cwAAAAAAAAAAAAAAAAAANkaKWVm5zb1gYV6cXVxfNgAAAAAAAAAAAAAAAAAAALGvlTIuP1K5tqCR
+ l4xfLwAAAAAAAAAAAAAAAAAAsbPBenkAAAAAcCVYjE0scwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////+f///+D////A////wH
+ ///4B///+Af///gH///wB///8Af///AH/+fwA/8D4AH8AeAAAAHgAAAB4AAAA+AAAAfwAAAP8AAAH/wA
+ AD//AAD//gAD//B4D////////////////////////////ygAAAAYAAAAMAAAAAEACAAAAAAAQAIAAAAA
+ AAAAAAAAAAEAAAABAAAAAAAAWlJSAHBJSQB1SEgAe1dXAHdYWAB5WlkAel1dAGBiYgB1bGwAfWtrAHh2
+ dgB9fn4Ag01NAIRXVwCIV1cAhV9eAItbWgCgX14ApV1dAJhgXwCNYGAAnWtqAJhtbQCCdnYAh3x8AI15
+ eACeensAqGBgAKhoZwCga2oArGpqALNqagCzb28AtG1tALltbQCxb3AApnVzAKlzcwCqdHMApnp6AKd+
+ fgCpensAq3x7ALZ3dgC8dHQAvH59AMZvcADGcHEAxXN0AMhycwDJdncAynh5AMx5egDNfn8Ajo1wAOek
+ VgDGgH8A4p53AEZ2+gB8u4AAd8PaAIuEhACOh4cAjo6OAJ+DggCejo4Ao4SEAKSIiACsi4sAqo2MAK6P
+ jgC+gYAAvoaGAL+KiACskJAAtJeXALWenQC5np4At6iOAKmyjgC9nroAwYSDAMaGhADOhoYAxomHAMiK
+ iQDJjYwA0oeIANOOjwDUjY0A2ZiPANaPkADGkZEAx5eXAMySkADGnZwA1ZOSANeTlADWl5YA2JSVANGZ
+ mADan50A3J6dAOCcmwDVoJ8A7K2fAMOtrQDXo6IA3aCgAN+kpADVq6oA3ay3AMu0tADPtrYA3L+/AOCi
+ oQDhpqUA5KelAOinpgDlq6gA46usAOOvrQDqrqwA7LGuAOayswDjtrQA5re1AOqysQDts7EA57y6AO+8
+ ugDrvL0A8LOwAPC1sgDwtrQA87q3APS6twD2vboA8b69APi/vAD2wb4A+cC9AJmTzwDHqMMAu8PMAIHf
+ 8QDByNAA7cLCAO3FwwDvxsQA5cjIAOzOzgDwxcQA9cbEAPPP0AD10tIAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ BQMJAAAAAAAAAAAAAAAAAAAAAAAAAAAPHBMNAAAAAAAAAAAAAAAAAAAAAAAAABojLy8TAAAAAAAAAAAA
+ AAAAAAAAAAAAAB0wMDAiPgAAAAAAAAAAAAAAAAAAAAAAQjAwMDAtGAAAAAAAAAAAAAAAAAAAAAAAFzIy
+ NTU5CgAAAAAAAAAAAAAAAAAAAAAAIjZYWFxcBwAAAAAAAAAAAAAAAAAAAAAANlxtdW11JQAAAAAAAAAA
+ PgcRDgkAAAAAXG1/lISAZgMAAAAAABkVLC5SVhcAAABNY3WWnJuLfB8UBAcQHkhWaX91dSsAAABNY2BM
+ mJeCiVJSVl9laX+WloSJgEIAAAAAXAEIC0tGjnR0dJaRk5qNjIyJQwAAAAAAJkNADBtdjIaPO1GSPYuJ
+ hnVEAAAAAAAAAClISWRcd4xwkGp8UE90VwAAAAAAAAAAAAAAKSQ1NYZ7OjhbPDdGAAAAAAAAAAAAAHNv
+ YGsAKyJoXFYmRwAAAAAAAAAAAAAAcnIAAAAAAAAATgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP//
+ /wD///8A////APx//wD4f/8A8H//APA//wDgP/8A4D//AOA//wDgP8EA4B8BAMAAAQDAAAEA4AADAOAA
+ BwDwAB8A/AA/APCA/wDn9/8A////AP///wD///8AKAAAABAAAAAgAAAAAQAIAAAAAAAAAQAAAAAAAAAA
+ AAAAAQAAAAEAAAAAAABjZGQAdmRjAHtpaQB/eHgAgU9PAKBaWgCFbm0AlWtqAKptbgCwZ2cAsGhoAKxw
+ cACteHkAvnJyAMZvcADGcHEAy3l5AMx9fgCFmXQAwIB/ANeUfQDhoX8AlIqJAJWMjACYiIgAoIaGAK2K
+ igCxh4cAvoGAALKKigC4iYgAuJWVAL2cnACss50AuqKhAL+mpgDLgoIAxImHAMeNjADLkI8AxpWTANCS
+ kQDYlZUA1J6dANqZmgDdnp4A1J+oAMaiogDOr68AzLKyANi5uADhpaIA4qypAOWtqADrrqsA4bKwAOay
+ sgDtuLYA57++AOy4uADxtLIA8be0APa9ugDswL4A9sG+ALCcxwC5ncIA06zBALnH0QC2ytQA7sPDAPLS
+ 0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAZBgUAAAAAAAAAAAAAAAAACw8KAAAAAAAAAAAAAAAAGhAQDgAAAAAAAAAAAAAAAAkRESUYAAAA
+ AAAAAAAAAAAlKy4uBwAAAAAAAAcDAAAAKzlHPCYCAAAYCB0oKgAAAC0wSDs0FB0nLDlAOiwAAAANAQQb
+ Pi9DRkVBPzUAAAAAJB4cKz5EQjMiNSkAAAAAAAAAHwwRNxYVEyQAAAAAAAAxMgAAACEgAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD//wAA4/8AAOP/AADD/wAAwf8AAMH5
+ AADAwQAAwAEAAMADAADABwAA8A8AAM5/AAD//wAA//8AACgAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAkAAAAJAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAUAAAAOAEBAVUAAABUAAAANQAAABAAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAkFBSUvGRl5TCkpwlYuLtxDJCTQFw0NmQAA
+ AEkAAAAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGAwMKE8rK6V6RET2klJR/5ZS
+ U/+OT0//ZDc38B0QEJoAAAAyAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYDAwYVzAwoopP
+ T/ygXVz/oFtb/55ZWf+bWFf/k1NT/1UvL9wGAwNcAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AARNKipxhk5O+adkY/+uZWX/tWdo/7VmZ/+qYWH/nltb/3hERPcfERGCAAAAFgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAADEZGS1zQ0LXqGdm/7ptbf/Fb3D/x3Bx/8hwcf/BbW7/q2Vl/4hPT/82HR2gAAAAIAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAB1gxMYyYXl3/vXFx/8Zwcf/HcHH/x3Bx/8dwcf/HcHH/uG1t/5NY
+ V/9EJia2AAAAKQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPB8fNH1MS+K4cnH/x3Fy/8dwcf/HcHH/x3Bx/8dw
+ cf/HcHH/wHBx/51gX/9PLCzGAAAAMwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACXjU1h6NnZv/Fc3T/x3Bx/8dw
+ cf/HcHH/x3Bx/8dwcf/HcHH/w3Jz/6ZoZ/9ZMzPTAQAAPQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyFxccektK0b12
+ dv/HcHH/x3Bx/8dwcf/HcHH/x3Bx/8dwcf/HcHH/xXR0/69wb/9jOjneBwMDSQAAAAUAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AABNKSlNlmBf9sh3d//HcHH/x3Bx/8dwcf/HcHH/x3Bx/8dwcf/HcHH/xnd3/7Z4d/9sQUDnDgcHVQAA
+ AAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABkOjqKsXFw/8lyc//HcXL/yHJz/8l0df/JdXb/yXV2/8l1dv/JdHX/ynt7/7+B
+ f/94SknvFgsLZQAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAACILCxB7TUzDwXd3/8lyc//KdXb/y3h5/8x7fP/NfX7/zX5+/819
+ fv/NfH3/zoOC/8iJiP+GVVX3Hg8QegAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMiIi+SXl3oynp7/8t4ef/NfX7/z4GC/9GE
+ hf/Sh4j/04iJ/9KIiP/Rhof/04uK/8+RkP+XY2L9KxcXlwAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABwAA
+ AA0AAAAPAAAACwAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFUvL1enbW37zn5+/85/
+ gP/Rhob/1IuM/9aPkP/XkpP/2JOU/9iTlP/XkZH/15OT/9eZl/+rdHP/QSUlvAAAADwAAAAFAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAACQAA
+ ABgAAAAvAgEBSwcDA2EFAgJoAAAAWAAAADYAAAARAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGU8
+ O4W5eXn/0IKD/9KIif/Wj5D/2ZWW/9ubm//dnp//3qCg/92foP/cnZ3/3Jyc/9+in//CiYf/Zj8/4wYC
+ AnAAAAAbAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAA
+ AA4AAAAnCQQEUCISEoQ+IiKzVzEx1mU6OuZiOTnmRigo0hgNDZsAAABMAAAAEAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAABnVJSK/HhIP/04eI/9aQkf/amJn/3qCh/+Gmp//jq6v/5Kyt/+OsrP/iqan/4aal/+ap
+ p//Umpj/nmxr/C8ZGboAAABXAAAAGAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAIAAAAOAQAALRkNDWY+IiKpZDo63YZRUfigZGP/sHBv/7V0c/+xcnH/oWZm/2k+PvEfEBCcAAAAMQAA
+ AAMAAAAAAAAAAAAAAAAAAAAALhAQFIZXVs/RjIz/1Y2O/9qYmP/eoaL/46qr/+aysv/ot7f/6rm5/+m4
+ uf/otbX/5q+v/+uvrf/jqab/wYeF/28/P/QhEhKvAAAAXwAAACgAAAANAAAABQAAAAMAAAACAAAAAwAA
+ AAUAAAAKAAAAFQAAADAdDg9oSSkptHZHRu2dYmL+t3Z1/758e/+6enn/tnh3/7d5eP+8fn3/w4SD/7Z6
+ ef9eODfbBgICTgAAAAgAAAAAAAAAAAAAAAAAAAAAPhwcJJVjYuPXkZH/2JOU/92fn//iqqr/57O0/+u8
+ vP/uwsL/78XG/+/Exf/twMD/67i4/+60sv/wtrP/zZKQ/5taWv9xQED2MRsaxAgEBIcAAABaAAAAQQAA
+ ADcAAAA2AAAAOwAAAEUEAgJZHA4OfUcnJ7l5SkntqGxr/8CAfv/DgoH/vH59/7p+ff/DiIb/zZGP/9GT
+ kf/UlJP/1peV/9eZl/+GVlbuGQsLVwAAAAcAAAAAAAAAAAAAAAAAAAAARiIiLZ9rauvZk5P/2peY/+Ck
+ pP/lsLD/6ru7/+/Fxf/yzMz/9NDQ//PPz//xycr/7sDA//K5tv/1u7j/36Kg/6dmZf+mZWX/j1ZW/WM6
+ OutDJSXQNBwcvDAaGrQ0HBy1PiIivUwsLMtkPDzfh1VU9a1xcP/EhIP/xIWE/7+Cgf/Ch4b/zZST/9mk
+ ov/grq3/4a6t/96lo//eoJ7/36Kg/+Cjof+IWVjnGwwMQwAAAAIAAAAAAAAAAAAAAAAAAAAARyQkL6Br
+ auzZk5P/25qb/+GnqP/ntLT/7cDA//LLy//209T/+NjY//fX1//00ND/8cbG//W9u//4vrz/46ak/7d0
+ c/+vb27/s3Jy/7d2df+ucXD/pWpp/6Npaf+nbWz/sHVz/7p9fP/EhYT/yImI/8WIhv/DiIb/ypGP/9eg
+ n//hr63/57q5/+rCwP/rwsD/6bq4/+evrf/nq6n/6q6r/9qgnv9wRkbDBwAAHgAAAAAAAAAAAAAAAAAA
+ AAAAAAAASCQkLZ1nZuvYkpP/25uc/+Opqv/qtrf/7cHB//TOzv/52Nj/+tzc//na2v/xz9D/8MfH//fA
+ vv/6wb7/6a6r/8OBgP/DgoD/vX58/7h7ev+8fn3/woOC/8aHhv/HiYj/xoqJ/8aLif/Ijoz/zZST/9eg
+ nv/hrav/6Lm3/+zCwf/uyMf/78nH/+/Dwf/uvLr/7ba0/+60sf/vtLL/8ri1/7J+fflMKSltAAAABAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAQyEhI5JcXOPWj5D/3Juc/8qVlf+BZmb/bl5e/4l4eP/AqKj/8tPT//LO
+ zv+5p6b/w6qq//fBv//7wr//8LWy/86Ojf/Ojoz/0ZGP/9GSkP/OkY//zpOR/9GamP/VoJ//2qel/+Gv
+ rf/nt7X/6727/+3Dwf/wycf/8czL//LLyf/yxsT/8cC+//G7uf/yubf/87m3//S7uP/4vrv/1J6c/3JH
+ RrAdCgsWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANRcXEYJNTcvPiIn/15aW/2VNTf85Ojr/Q0VF/0JF
+ RP9dXFz/n5GR/+S/v/+bh4f/hXp6/+25uP/7wr//9bu4/9qcmv/Zmpj/252b/96gnf/ipKH/5q+s/+u+
+ vP/vycf/8srI/+3Hxv/wysj/9c7M//TNy//0ysj/9MbE//TBv//1vrz/9r26//e9u//4vrv/+L+8//vB
+ vv/hqqf/g1ZVzDwcHC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW4+Ppq/env/05OT/2ZX
+ V/9rbm7/fX9//3l6ev99f3//cHJy/5F9ff+ff3//XFhY/9eop//8wr//+L+8/+Wppv/ipaP/5qil/96i
+ pP/Kmaz/1qi1//LGxP/tyMf/qb3J/23E3P9kw9//vMTN//jDwP/3wb//+MC9//i/vf/5v73/+b+8//i/
+ vP/3vrv/+L68/92mo/+IWlnRRSMjOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcv
+ L0mbX1/y15GS/6GAgP9XV1b/iYuL/4CBgf98fX3/cnR0/1dPT/++j4//km9w/9Sfnv/6wL3/+cC9/+6z
+ sP/ssK3/0Z+u/4OH1P9YffD/QGPs/7KYyv/Ct7z/Ytrz/3Ts//8s2f//cbvU//m+u//4v7z/+L67//e9
+ uv/1vLn/9Lq3//O5tv/zuLX/0puZ/4RVVctGIyM4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAADIXFwdrPDySq2ts/diZmf/ApKT/sKur/4CBgP95enr/iYiI/49zdP/do6P/36Ch/96e
+ nv/zuLX/+sK///W7uP/1ubT/qZC//2qY+/9tnf//MGT6/56FxP/esK//nMbS/57n8/9+z+T/ybG3//a6
+ t//zubb/8re0//C1s//utLH/7rKw/+qvrP++iIb9dklJtkMgISoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHIyMSazw8kZ5hYvXNjI3/2aSk/7OMjP+bd3f/sIKC/9KV
+ lv/cnJz/2peY/9aRkf/koqL/+sG+//nAvf/5v7z/4amw/6qZx/+aouP/qpvP/+mxtv/2urj/6rGv/+S6
+ u//ptrX/466n/+Ovqf/ssK7/6q6s/+isqv/oq6n/2J2b/6JubfFoPT2NOxoaFwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOBoaCFowMFd7SEjAomZm9sWC
+ gv/XkZL/25SV/9iSk//Wj5D/1IyN/9KHiP/UiIj/8bOx//rCv//3vbv/9ru4//O3s//xuLX/7q6e/+ej
+ hf/npIn/7bCp/+Otp/+KsX3/ULdm/1WjWv+7oYz/5KWk/9uenP+4gH79glJRzVYuLlQgCAkGAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA8HBwQVy4uS3FBQaCPV1fjsG5v/cmAgf/ShYb/0YKD/85+f//LeXr/2I2M//e8uf/1vLn/7rOx/+2y
+ sP/lpJX/5qFY/+6xXP/djS3/35h9/86gl/9SwW7/Nd90/0WxXP+vlH//wYSE/49cW+VlOTmBQR4eHAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGk7OhqIWFd8oG5u8J5qav+eX2D/tmts/8Z0df/KdHX/yXJz/92T
+ k//3vLn/7LGu/+Snpf/dm5L/4Z1q/+61dP/fmmX/15WM/9eYlv/Bm43/r6uR/6uNgP+WYWDtbkBAnUwn
+ JzQVAQECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiFJSBnhC
+ QgpqNDQJWSUlB08dHQdfKisKfENDFJJWViinbGtRvYOCjtOcm8/pt7X157y6/7eOjfhxRUW7aTk5m4RK
+ StehWlr6uGdo/8Zwcf/dkpH/8bSx/+OnpP/YmZj/1ZWT/9ealP/Vl5X/0JCP/8eIhv+zdnb/lFtc6nA/
+ QKRSKio/JQwNBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AADTn6AB2qioDMuUlCHBhYU8voCAWcCBgXTEhoaLzZGQqdeensngrKvn47Sz/NOop/+yiIfyi2Bgs2k+
+ PlZXKysPAAAAAUYlJRxcMTFYcj4+pYpMTeWmXF3+xnl5/9+Zl//dnJr/z46M/8KCgf+vc3L/ll9e831L
+ S8hlOTl/TigoMy0REQYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABzQUIDnmprDriGhifHlpZMzp6eeNCgoZ7On5+2yJqaybuPj9WnfHzVj2RkunVJ
+ SYNbLy8/PRQUCgAAAAAAAAAAAAAAAAAAAAAAAAAAKRUVBU0pKSphNDRtd0BAsotNTd2ZW1vrkVlY4HtJ
+ Sb5lOTmCUysrQTsbGxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWCwsA2Y4OA5xQkImdkhIRHhKSll0R0dibUBAWWI2
+ NkNUKCgoOhISDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhkZB0km
+ Jh5LJiYsRSEhITATFAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP//
+ /////wAA////////AAD///////8AAP///////wAA////////AAD/+H////8AAP/gH////wAA/8Af////
+ AAD/gA////8AAP+AD////wAA/wAP////AAD/AA////8AAP4AB////wAA/gAH////AAD8AAf///8AAPwA
+ B////wAA/AAH////AAD8AAf///8AAPgAB////wAA+AAH//4HAAD4AAP/8AEAAPgAAf/AAQAA8AAA/wAA
+ AADwAAAAAAAAAPAAAAAAAAAA8AAAAAAAAADwAAAAAAEAAPAAAAAAAQAA8AAAAAADAADwAAAAAAcAAPAA
+ AAAADwAA+AAAAAAfAAD4AAAAAD8AAPwAAAAAfwAA/gAAAAD/AAD/gAAAA/8AAP/gAAAH/wAAgAAAAB//
+ AAAAAAAAf/8AAAAD4AP//wAAgB/8H///AAD///////8AAP///////wAA////////AAD///////8AAP//
+ /////wAA////////AAAoAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAYAAAAZAAAAGQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAARCQkYOh8fb0ooKK80HByiCQUFTAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAIhERFmA2Np2ITUz3lVNT/4dLS/5IKCi9AAAALwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAANjODiBllhY+61kZP+vY2P/pV5e/3xHRvEhEhJfAAAAAgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAASSgoN41VVeS6bW3/xW9w/8dwcf+9bG3/klZW/jogIIEAAAAGAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ1RkWcs2xs/8dxcv/HcHH/x3Bx/8Zwcf+iYWH/SSkpmAAA
+ AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUC0tMZtgX+fGcnP/x3Bx/8dwcf/HcHH/x3Fy/61q
+ av9UMTGqAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxRER1tm9v/8hxcv/HcHH/x3Bx/8dw
+ cf/HcnP/tnRz/185OboAAAAZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAACIxXV7TEdHT/yHJz/8l1
+ dv/Kd3j/ynd4/8p4eP/Bf37/bURDywAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNKysjo2Zm4Mt4
+ ef/NfH3/z4GC/9GFhf/RhYb/0YWF/82Mi/9+UVHeCAICOwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAJAAAACwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAGc+
+ Pkm1c3P30IGC/9OJiv/XkZL/2ZaW/9mWl//YlJX/2JmY/5hnZfMeEBBrAAAABwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAA0FAgItHhAQWzAbG4IqFxeHDQcHWwAAABkAAAAAAAAAAAAA
+ AAAAAAAAek1MdMN/f//VjI3/2piZ/9+io//hqKn/4qmp/+Clpf/jpqT/wImH/04xMLwAAAA6AAAABQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABEbDg5GRygokW5CQs+MVlbxnGJh/JdfXvxnPz7hHA8PbgAA
+ AAwAAAAAAAAAAAAAAACMW1qbz4qK/9qXl//gpqb/5rKz/+q6u//rvLz/6La2/+qxr//epKL/j1lZ+DUc
+ HLACAQFPAAAAHQAAAA8AAAAPAAAAEwAAACIbDg5MVDExnYZUU+SpbWz+uXl4/7x+fP/AgoD/xoeF/72A
+ f/9fOzu1AAAAHAAAAAAAAAAAAAAABJhkZK/VkZH/3Z+g/+axsf/twMD/8svL//LNzf/vxcX/8Lq4/+6z
+ sf+1dHP/j1VU+144N9g7IiKqMhwclDcfH5RGKSmiYTw7v4tZWOiydXT+woOC/8aKiP/Ol5X/2aWj/9ui
+ of/cnpz/2pyb/35TUrgAAAAVAAAAAAAAAAAAAAAFmmVkstaTk//hpaX/7Lm6//TLy//419f/+NnZ//TP
+ z//1wb//9Lq3/8aGhP+1dHP/s3Rz/6xwb/+pb27+rnNy/7Z7ev/BhIL/yY2L/8+WlP/apqT/5be2/+vB
+ v//rvrz/6bKw/+uvrf/Um5n/bUVEgAAAAAMAAAAAAAAAAAAAAAOTXV2q1ZGR/9CYmP+dfX7/o4yM/9e8
+ vP/z0tL/zLOz/+u8u//5v7z/1peV/8uLif/Ki4r/yoyL/86Ukv/TnJv/2qSi/+Gtq//nuLb/7cPB//DJ
+ x//xxsT/8b+9//G6t//zubf/77az/6d1dM89Hx8lAAAAAAAAAAAAAAAAAAAAAIJOTojNiIn/jGlp/01O
+ Tv9UVlb/dnNz/7uhof+Pfn7/xJ+e//zCv//lqKb/3J2b/+Chnv/hpaT/7Ly5/+vHxv/MxMn/0MjN//LK
+ yf/1x8X/9sLA//a/vP/3vrv/+L+8//S7uP+5hoXhYTo5RwAAAAAAAAAAAAAAAAAAAAAAAAAAaTs7RrVz
+ dPKmfn7/cXJx/4SGhv97fX3/b2Zm/516ev+7kJD/+sG+//C2s//lqqr/rpbA/3aB2/+ql83/tMHK/2jc
+ 9P9OzOz/2r3B//q/vP/3vrv/9ry6//a8uf/ss7D/tYGA32c+Pk0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAvEhIHg01Njbp9fvrCn5//nI+P/4R7ev+fgID/2Jyd/9ybnP/ytrT/+b+8/+ewtf+Mld3/ZI36/5eI
+ zv/Ttrn/sNLc/6/Czv/stLT/8re0/++0sf/tsq//2qCe/6Rxb8phODg+AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAABCIB8MeUZGbqRpata8gYH8x4mJ/9eTk//YkpP/04qL/+Cbmv/5wL3/9726/+Sw
+ t//Zrrn/56qY/+2smf/lr6n/nLWJ/4Gtdf/Pppn/3qGf/7yEg/KJWViYTyoqIAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQh0dGXJAQGOXXl7NtnR1/8V7fP/MfH3/znt8/+il
+ o//0urj/7LCu/+Whg//rq13/35VX/9Kek/9yvXz/ZbNv/6iCdfqYY2O/aj4+TCUJCgcAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAACcamsBjFRVB4FERAh9PT0JjU1ND6VnZx+/hINF0JqZiNOjoty0iIf2hFBQw5lX
+ V8+wY2P4xXR0/+aioP/oq6j/2pqT/92fif/Vlor/yYqJ/7N8efiVZmPGdERFYkEfHxIAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAALiFhgXFkJEdx5CQSMqSknbNlZWbz5uaws2cnOXBlJPnqH18r4dc
+ XFFULy8OSCUlFm07O0+FSUmeoV1d3sF9fPrGhoX/snZ295xkZNiFUlKbbD4+T0UdHxIAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc0JDA5FgYRKdbm46onR0Zp9ycnuWampzhFlZVmY6
+ OikvDAwHAAAAAAAAAAAAAAAAAAAAAB0ODgRULCwhbjo7UXhERGVrPDxHTCYmGxAAAQMAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAgAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAP//////////////////////D////gf///wH///4A///+AP///AD///wA///8AP//+AD
+ ///gA//D4AH+AeAA+ADgAAAAwAAAAMAAAADAAAAB4AAAA+AAAAfgAAAP8AAAH/wAAD8AAAD/AAAD/wB4
+ D//H////////////////////KAAAABgAAAAwAAAAAQAgAAAAAABgCQAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAABMAAAAtAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAgIO1cwMM1qOjrsHhAQmwAA
+ ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAATCgogfUhI6ahgYP6lXV3+f0hI9wIBAT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsGBgFPLy6kuW1t/sZv
+ cP/Gb3D/oF9e/hMKCmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4QECynZmX7xnBx/sdwcf/HcHH/tG1t/h8REYMAAAABAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAx
+ MIzFc3T+xm9w/sdwcf7HcHH+vHR0/jAcHJkAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ4OAYVSUtfIcnP/yXZ3/st5ef/LeHn/xoB//kQq
+ KrEAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAJxYWGrNvb/7Nfn//0oeI/tSNjf/UjI3/1ZOS/mE+PtQAAAAXAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAIAAAARAAAALQAAADUAAAARAAAAAAAAAAAAAAAAQyYmUM6Ghv/Wj5D/3J2e/uCl
+ pf/fpKT/4KOi/qRycPkHBARlAAAABQAAAAAAAAAAAAAAAAAAAAAAAAADAQAAJh8REYBYNTXMhVJR8XxM
+ TO8gEhKeAAAAEAAAAAAAAAAAbUVEe9aPkP7doKD+5rKz/uu9vv7rvLz+6rKx/tqfnf5iNzfnCAQEcwAA
+ ACoAAAAbAAAAIQIBATorGBiQhFNT67Z3dv68fn3+wYSD/siKiP6aZmX2AQAAKQAAAAAAAAAAd05Ni9eT
+ lP/jq6z/7cLC/vXS0v/zz9D/8b69/uyxrv+samr/l15d+2tDQ+NkPz7bdkxL451nZve+gYD/yY2M/tWg
+ n//jtrT/46+t/uOmpP+mdHPwBQMDFAAAAAAAAAAAdkpJh9iUlf7Hl5f+tJeX/uzOzv7lyMj+57y6/vS6
+ t/7HhoX+xYaE/saJh/7MkpD+0ZmY/tejov7mt7X+7cXD/vDFxP7vvLr+8Le0/u2zsf5PMzOMDQcHAQAA
+ AAAAAAAAYTg4X9OOj/9aUlL/YGJi/nh2dv+skJD/qo2M/vnAvf/dn53/4KKg/+Cnp/7vxsT/u8PM/sHI
+ 0P/1xsT/9sG+/ve+u//3vrv/87q3/ntVVLkkFhYIAAAAAAAAAAAAAAAAVC8wD6BkZOWjhIT/jo6O/n1+
+ fv+eenv/xpGR/vi/vP/wtbL/mZPP/0Z2+v69nrr/gd/x/nfD2v/2vLr/9Lq3/vG2tP/lq6j/elJRrjQg
+ IAoAAAAAAAAAAAAAAAAAAAAAAAAAAGc7OyeOWVnGv4eH/r2Fhf7YlZb+1Y6P/uinpv74v7z+3ay3/seo
+ w/7srZ/+7LGv/qmyjv63qI7+5Kel/r2GhPZ1S0p1QCcmAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAd0pKOpReXtKxb3D/yXl6/sx5ev/ws7D/6q6s/+Ked/7npFb/2ZiP/ny7gP+OjW/9h1dWr2I7
+ OiMAAAAAAAAAAAAAAAAAAAAAAAAAALSCggSqcXIbo2dnN61xcVS/h4eIzp2c2cKWle2OY2OGbz4+Y4xN
+ Tr6zaWn84Jyb/9aXlv7Ji4r/p25t9INTUqZlPDw3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJJg
+ YASjcnMorH9/a6h7e4yabm6Df1NTU3VKSgwAAAAAAAAAAAAAAABgNDQgcj8/bntHR4ZnPDxTVTExDQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////APx//wD4P/8A8D//AOA//wDgH/8A4B//AMAf
+ /wDAH8EAwA8AAMAAAADAAAAAwAAAAMAAAQDAAAMA4AAHAPgAHwAAAH8AAcH/AP///wD///8A////ACgA
+ AAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQc
+ HA5LKSlUNBwcSAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsO
+ DgV/SkqHm1hY+X5HR90tGRkuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAB4SEhCr2Zm7sZwcf+oYWL5UC8vUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAACnl9fnMRwcf/IcXL/tmxs/mI8PGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAa0NCGbRsbdbMenv/zn5//8R9ff9ySkmCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA
+ AAkAAAAAAAAAAItYWDvFfn/y2ZWW/92fn//anJv/jWFgvwAAAB0AAAAAAAAAAAAAAAIzHBwiYjs7a3pM
+ S6pqQkKjLBoaMwAAAACeZ2dZ05KS/em0tP/vxMT/77u6/8CHhfpmPDyvRysqYlExMV1ySEiGnWdn07qB
+ gPzLkI//w4iG/HJLS3YAAAAAomloXsyRkf/DoKD/48bG/+jAv//hpKL/vX17/7h/fPu/iYj7z5qZ/+Gw
+ rv/rvLr/77q3/9ScmuR9U1I+AAAAAJZbWz2ndnbxdG9v/4yCgv+4lJP/77Wy/86erP+6nsH/tsXR/8PH
+ 0P/4wsD/9b26/+Cppu2peXdiAAAAAQAAAABYKCgHn2lqe6eCguSsgoL90pKS//Cxrv/TrcP/s5y+/8i3
+ s/+quab/26mh/82UktSgbm1TBAAAAwAAAACud3cEvYGBC7N6ehyyfHtyt39+3bNub9vLgYH05qak/+Kg
+ g//OlH39jZR04Zd0aYmDT1EiAAAAAAAAAAAAAAAAr3t7D7aCgki5h4Z8uImJgah+fUltPz8ajU1ORq1s
+ bI6vdHOgm2RkaYxJUiZgCygCAAAAAAAAAAAAAAAAAAAAAGo9PQF9UVEHcEdHCTodHQIAAAAAAAAAAAAA
+ AAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AADh/wAAwf8AAMH/
+ AACB/wAAgfkAAIDAAACAAAAAgAAAAIAAAACAAQAAAAcAAAAPAAAOfwAA//8AAA==
+
+
+
\ No newline at end of file
diff --git a/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs
index 64f802d759..4e22222325 100644
--- a/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs
+++ b/BizHawk.Client.EmuHawk/config/DisplayConfigLite.Designer.cs
@@ -602,7 +602,7 @@
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(359, 27);
this.label8.TabIndex = 20;
- this.label8.Text = " • Best compatibility\r\n • May have trouble with OpenGL-based cores (Saturn,N64)\r\n" +
+ this.label8.Text = " • Best compatibility\r\n • May have trouble with OpenGL-based cores (N64)\r\n" +
"";
//
// rbD3D9
diff --git a/BizHawk.Client.EmuHawk/tools/GameShark.cs b/BizHawk.Client.EmuHawk/tools/GameShark.cs
index 08a9a8b62f..ffd91c12fb 100644
--- a/BizHawk.Client.EmuHawk/tools/GameShark.cs
+++ b/BizHawk.Client.EmuHawk/tools/GameShark.cs
@@ -2808,7 +2808,7 @@ namespace BizHawk.Client.EmuHawk
}
if (strCompare != "00")
{
- Global.CheatList.Add(new Cheat(watch, int.Parse(RAMValue, NumberStyles.HexNumber), int.Parse(strCompare, NumberStyles.HexNumber)));
+ Global.CheatList.Add(new Cheat(watch, int.Parse(RAMValue, NumberStyles.HexNumber), int.Parse(strCompare, NumberStyles.HexNumber), true, Cheat.CompareType.Equal));
}
//Global.CheatList.Add(new Cheat(watch, int.Parse(RAMValue, NumberStyles.HexNumber), )
}
diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs
index aa490297b7..831cc599e8 100644
--- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs
+++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Tastudio.cs
@@ -1,6 +1,8 @@
using System;
+using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
+using System.Linq;
using NLua;
using BizHawk.Client.Common;
@@ -246,11 +248,11 @@ namespace BizHawk.Client.EmuHawk
if (Engaged())
{
- var selection = Tastudio.GetSelection();
+ var selection = Tastudio.GetSelection().ToList();
- foreach (var row in selection)
+ for (int i = 0; i < selection.Count; i++)
{
- table[row] = row;
+ table[i] = selection[i];
}
}
@@ -288,5 +290,74 @@ namespace BizHawk.Client.EmuHawk
}
}
}
+
+ public class TastudioBranchInfo
+ {
+ public string Id { get; set; }
+ public int Frame { get; set; }
+ public string Text { get; set; }
+ }
+
+ [LuaMethod("getbranches", "Returns a list of the current tastudio branches. Each entry will have the Id, Frame, and Text properties of the branch")]
+ public LuaTable GetBranches()
+ {
+ var table = Lua.NewTable();
+
+ if (Engaged())
+ {
+ var branches = Tastudio.CurrentTasMovie.Branches.Select(b => new
+ {
+ Id = b.UniqueIdentifier.ToString(),
+ Frame = b.Frame,
+ Text = b.UserText
+ })
+ .ToList();
+
+ for (int i = 0; i < branches.Count; i++)
+ {
+ table[i] = branches[i];
+ }
+ }
+
+ return table;
+ }
+
+
+ [LuaMethod("getbranchinput", "Gets the controller state of the given frame with the given branch identifier")]
+ public LuaTable GetBranchInput(string branchId, int frame)
+ {
+ var table = Lua.NewTable();
+
+ if (Engaged())
+ {
+ if (Tastudio.CurrentTasMovie.Branches.Any(b => b.UniqueIdentifier.ToString() == branchId))
+ {
+ var branch = Tastudio.CurrentTasMovie.Branches.First(b => b.UniqueIdentifier.ToString() == branchId);
+ if (frame < branch.InputLog.Count)
+ {
+ var input = branch.InputLog[frame];
+
+ var adapter = new Bk2ControllerAdapter
+ {
+ Definition = Global.MovieSession.MovieControllerAdapter.Definition
+ };
+
+ adapter.SetControllersAsMnemonic(input);
+
+ foreach (var button in adapter.Definition.BoolButtons)
+ {
+ table[button] = adapter.IsPressed(button);
+ }
+
+ foreach (var button in adapter.Definition.FloatControls)
+ {
+ table[button] = adapter.GetFloat(button);
+ }
+ }
+ }
+ }
+
+ return table;
+ }
}
}
diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.Designer.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.Designer.cs
index 89ec1fc877..ebc92380d9 100644
--- a/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.Designer.cs
+++ b/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.Designer.cs
@@ -44,8 +44,6 @@ namespace BizHawk.Client.EmuHawk
this.MakeDefaultCheckbox = new System.Windows.Forms.CheckBox();
this.label2 = new System.Windows.Forms.Label();
this.EmulatorVersionTextBox = new System.Windows.Forms.TextBox();
- this.PlatformTextBox = new System.Windows.Forms.TextBox();
- this.label3 = new System.Windows.Forms.Label();
this.CoreTextBox = new System.Windows.Forms.TextBox();
this.label4 = new System.Windows.Forms.Label();
this.BoardNameTextBox = new System.Windows.Forms.TextBox();
@@ -134,29 +132,11 @@ namespace BizHawk.Client.EmuHawk
this.EmulatorVersionTextBox.Size = new System.Drawing.Size(162, 20);
this.EmulatorVersionTextBox.TabIndex = 7;
//
- // PlatformTextBox
- //
- this.PlatformTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
- | System.Windows.Forms.AnchorStyles.Right)));
- this.PlatformTextBox.Location = new System.Drawing.Point(90, 106);
- this.PlatformTextBox.Name = "PlatformTextBox";
- this.PlatformTextBox.Size = new System.Drawing.Size(162, 20);
- this.PlatformTextBox.TabIndex = 8;
- //
- // label3
- //
- this.label3.AutoSize = true;
- this.label3.Location = new System.Drawing.Point(12, 110);
- this.label3.Name = "label3";
- this.label3.Size = new System.Drawing.Size(45, 13);
- this.label3.TabIndex = 9;
- this.label3.Text = "Platform";
- //
// CoreTextBox
//
this.CoreTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.CoreTextBox.Location = new System.Drawing.Point(90, 136);
+ this.CoreTextBox.Location = new System.Drawing.Point(90, 106);
this.CoreTextBox.Name = "CoreTextBox";
this.CoreTextBox.Size = new System.Drawing.Size(162, 20);
this.CoreTextBox.TabIndex = 10;
@@ -164,7 +144,7 @@ namespace BizHawk.Client.EmuHawk
// label4
//
this.label4.AutoSize = true;
- this.label4.Location = new System.Drawing.Point(12, 140);
+ this.label4.Location = new System.Drawing.Point(12, 110);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 13);
this.label4.TabIndex = 11;
@@ -174,7 +154,7 @@ namespace BizHawk.Client.EmuHawk
//
this.BoardNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.BoardNameTextBox.Location = new System.Drawing.Point(90, 166);
+ this.BoardNameTextBox.Location = new System.Drawing.Point(90, 136);
this.BoardNameTextBox.Name = "BoardNameTextBox";
this.BoardNameTextBox.Size = new System.Drawing.Size(162, 20);
this.BoardNameTextBox.TabIndex = 12;
@@ -182,7 +162,7 @@ namespace BizHawk.Client.EmuHawk
// label5
//
this.label5.AutoSize = true;
- this.label5.Location = new System.Drawing.Point(12, 170);
+ this.label5.Location = new System.Drawing.Point(12, 140);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(64, 13);
this.label5.TabIndex = 13;
@@ -192,7 +172,7 @@ namespace BizHawk.Client.EmuHawk
//
this.GameNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.GameNameTextBox.Location = new System.Drawing.Point(90, 196);
+ this.GameNameTextBox.Location = new System.Drawing.Point(90, 166);
this.GameNameTextBox.Name = "GameNameTextBox";
this.GameNameTextBox.Size = new System.Drawing.Size(162, 20);
this.GameNameTextBox.TabIndex = 14;
@@ -200,7 +180,7 @@ namespace BizHawk.Client.EmuHawk
// label6
//
this.label6.AutoSize = true;
- this.label6.Location = new System.Drawing.Point(12, 200);
+ this.label6.Location = new System.Drawing.Point(12, 170);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(64, 13);
this.label6.TabIndex = 15;
@@ -219,8 +199,6 @@ namespace BizHawk.Client.EmuHawk
this.Controls.Add(this.BoardNameTextBox);
this.Controls.Add(this.label4);
this.Controls.Add(this.CoreTextBox);
- this.Controls.Add(this.label3);
- this.Controls.Add(this.PlatformTextBox);
this.Controls.Add(this.EmulatorVersionTextBox);
this.Controls.Add(this.label2);
this.Controls.Add(this.MakeDefaultCheckbox);
@@ -248,8 +226,6 @@ namespace BizHawk.Client.EmuHawk
private CheckBox MakeDefaultCheckbox;
private Label label2;
private TextBox EmulatorVersionTextBox;
- private TextBox PlatformTextBox;
- private Label label3;
private TextBox CoreTextBox;
private Label label4;
private TextBox BoardNameTextBox;
diff --git a/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.cs b/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.cs
index 9b2c622dc6..7bde4204ce 100644
--- a/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.cs
+++ b/BizHawk.Client.EmuHawk/tools/TAStudio/HeaderEditor.cs
@@ -19,7 +19,6 @@ namespace BizHawk.Client.EmuHawk
{
AuthorTextBox.Text = _movie.Author;
EmulatorVersionTextBox.Text = _movie.EmulatorVersion;
- PlatformTextBox.Text = _movie.SystemID;
CoreTextBox.Text = _movie.Core;
BoardNameTextBox.Text = _movie.BoardName;
GameNameTextBox.Text = _movie.GameName;
@@ -34,7 +33,6 @@ namespace BizHawk.Client.EmuHawk
}
_movie.EmulatorVersion = EmulatorVersionTextBox.Text;
- _movie.SystemID = PlatformTextBox.Text;
_movie.Core = CoreTextBox.Text;
_movie.BoardName = BoardNameTextBox.Text;
_movie.GameName = GameNameTextBox.Text;
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A7800HawkSchema.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A7800HawkSchema.cs
deleted file mode 100644
index 299262e983..0000000000
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A7800HawkSchema.cs
+++ /dev/null
@@ -1,258 +0,0 @@
-using System.Collections.Generic;
-using System.Drawing;
-
-using BizHawk.Common.ReflectionExtensions;
-using BizHawk.Emulation.Common;
-using BizHawk.Emulation.Cores.Atari.A7800Hawk;
-
-namespace BizHawk.Client.EmuHawk
-{
- [Schema("A7800Hawk")]
- public class A7800HawkSchema : IVirtualPadSchema
- {
- private string UnpluggedControllerName => typeof(UnpluggedController).DisplayName();
- private string StandardControllerName => typeof(StandardController).DisplayName();
- private string ProLineControllerName => typeof(ProLineController).DisplayName();
-
- public IEnumerable GetPadSchemas(IEmulator core)
- {
- var A78SyncSettings = ((A7800Hawk)core).GetSyncSettings().Clone();
- var port1 = A78SyncSettings.Port1;
- var port2 = A78SyncSettings.Port2;
-
- if (port1 == StandardControllerName)
- {
- yield return JoystickController(1);
- }
-
- if (port2 == StandardControllerName)
- {
- yield return JoystickController(2);
- }
-
- if (port1 == ProLineControllerName)
- {
- yield return ProLineController(1);
- }
-
- if (port2 == ProLineControllerName)
- {
- yield return ProLineController(2);
- }
-
- }
-
- private static PadSchema ProLineController(int controller)
- {
- return new PadSchema
- {
- DisplayName = "Player " + controller,
- IsConsole = false,
- DefaultSize = new Size(174, 74),
- MaxSize = new Size(174, 74),
- Buttons = new[]
- {
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Up",
- DisplayName = "",
- Icon = Properties.Resources.BlueUp,
- Location = new Point(23, 15),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Down",
- DisplayName = "",
- Icon = Properties.Resources.BlueDown,
- Location = new Point(23, 36),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Left",
- DisplayName = "",
- Icon = Properties.Resources.Back,
- Location = new Point(2, 24),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Right",
- DisplayName = "",
- Icon = Properties.Resources.Forward,
- Location = new Point(44, 24),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Trigger",
- DisplayName = "1",
- Location = new Point(120, 24),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Trigger 2",
- DisplayName = "2",
- Location = new Point(145, 24),
- Type = PadSchema.PadInputType.Boolean
- }
- }
- };
- }
-
- private static PadSchema JoystickController(int controller)
- {
- return new PadSchema
- {
- DisplayName = "Player " + controller,
- IsConsole = false,
- DefaultSize = new Size(174, 74),
- MaxSize = new Size(174, 74),
- Buttons = new[]
- {
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Up",
- DisplayName = "",
- Icon = Properties.Resources.BlueUp,
- Location = new Point(23, 15),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Down",
- DisplayName = "",
- Icon = Properties.Resources.BlueDown,
- Location = new Point(23, 36),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Left",
- DisplayName = "",
- Icon = Properties.Resources.Back,
- Location = new Point(2, 24),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Right",
- DisplayName = "",
- Icon = Properties.Resources.Forward,
- Location = new Point(44, 24),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Trigger",
- DisplayName = "1",
- Location = new Point(120, 24),
- Type = PadSchema.PadInputType.Boolean
- }
- }
- };
- }
-
- private static PadSchema PaddleController(int controller)
- {
- return new PadSchema
- {
- DisplayName = "Player " + controller,
- IsConsole = false,
- DefaultSize = new Size(250, 74),
- Buttons = new[]
- {
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Paddle",
- DisplayName = "Paddle",
- Location = new Point(23, 15),
- Type = PadSchema.PadInputType.FloatSingle
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Trigger",
- DisplayName = "1",
- Location = new Point(12, 90),
- Type = PadSchema.PadInputType.Boolean
- }
- }
- };
- }
-
- private static PadSchema LightGunController(int controller)
- {
- return new PadSchema
- {
- DisplayName = "Light Gun",
- IsConsole = false,
- DefaultSize = new Size(356, 290),
- MaxSize = new Size(356, 290),
- Buttons = new[]
- {
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " VPos",
- Location = new Point(14, 17),
- Type = PadSchema.PadInputType.TargetedPair,
- TargetSize = new Size(256, 240),
- SecondaryNames = new[]
- {
- "P" + controller + " HPos",
- }
- },
- new PadSchema.ButtonSchema
- {
- Name = "P" + controller + " Trigger",
- DisplayName = "Trigger",
- Location = new Point(284, 17),
- Type = PadSchema.PadInputType.Boolean
- }
- }
- };
- }
-
- private static PadSchema ConsoleButtons()
- {
- return new PadSchema
- {
- DisplayName = "Console",
- IsConsole = true,
- DefaultSize = new Size(215, 50),
- Buttons = new[]
- {
- new PadSchema.ButtonSchema
- {
- Name = "Select",
- DisplayName = "Select",
- Location = new Point(10, 15),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "Reset",
- DisplayName = "Reset",
- Location = new Point(60, 15),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "Power",
- DisplayName = "Power",
- Location = new Point(108, 15),
- Type = PadSchema.PadInputType.Boolean
- },
- new PadSchema.ButtonSchema
- {
- Name = "Pause",
- DisplayName = "Pause",
- Location = new Point(158, 15),
- Type = PadSchema.PadInputType.Boolean
- }
- }
- };
- }
- }
-}
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A78Schema.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A78Schema.cs
index f7cf8bdc34..257045e0d1 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A78Schema.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/A78Schema.cs
@@ -4,6 +4,9 @@ using System.Drawing;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Atari.Atari7800;
+using BizHawk.Common.ReflectionExtensions;
+using BizHawk.Emulation.Cores.Atari.A7800Hawk;
+
namespace BizHawk.Client.EmuHawk
{
[Schema("A78")]
@@ -11,7 +14,275 @@ namespace BizHawk.Client.EmuHawk
{
public IEnumerable GetPadSchemas(IEmulator core)
{
- switch (((Atari7800)core).ControlAdapter.ControlType.Name)
+ if (core is Atari7800)
+ {
+ return Emu7800Schema.GetPadSchemas((Atari7800)core);
+ }
+
+ return Atari7800HawkSchema.GetPadSchemas((A7800Hawk)core);
+ }
+ }
+
+ internal static class Atari7800HawkSchema
+ {
+ private static string UnpluggedControllerName => typeof(UnpluggedController).DisplayName();
+ private static string StandardControllerName => typeof(StandardController).DisplayName();
+ private static string ProLineControllerName => typeof(ProLineController).DisplayName();
+
+ public static IEnumerable GetPadSchemas(A7800Hawk core)
+ {
+ var A78SyncSettings = core.GetSyncSettings().Clone();
+ var port1 = A78SyncSettings.Port1;
+ var port2 = A78SyncSettings.Port2;
+
+ if (port1 == StandardControllerName)
+ {
+ yield return JoystickController(1);
+ }
+
+ if (port2 == StandardControllerName)
+ {
+ yield return JoystickController(2);
+ }
+
+ if (port1 == ProLineControllerName)
+ {
+ yield return ProLineController(1);
+ }
+
+ if (port2 == ProLineControllerName)
+ {
+ yield return ProLineController(2);
+ }
+
+ }
+
+ private static PadSchema ProLineController(int controller)
+ {
+ return new PadSchema
+ {
+ DisplayName = "Player " + controller,
+ IsConsole = false,
+ DefaultSize = new Size(174, 74),
+ MaxSize = new Size(174, 74),
+ Buttons = new[]
+ {
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Up",
+ DisplayName = "",
+ Icon = Properties.Resources.BlueUp,
+ Location = new Point(23, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Down",
+ DisplayName = "",
+ Icon = Properties.Resources.BlueDown,
+ Location = new Point(23, 36),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Left",
+ DisplayName = "",
+ Icon = Properties.Resources.Back,
+ Location = new Point(2, 24),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Right",
+ DisplayName = "",
+ Icon = Properties.Resources.Forward,
+ Location = new Point(44, 24),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Trigger",
+ DisplayName = "1",
+ Location = new Point(120, 24),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Trigger 2",
+ DisplayName = "2",
+ Location = new Point(145, 24),
+ Type = PadSchema.PadInputType.Boolean
+ }
+ }
+ };
+ }
+
+ private static PadSchema JoystickController(int controller)
+ {
+ return new PadSchema
+ {
+ DisplayName = "Player " + controller,
+ IsConsole = false,
+ DefaultSize = new Size(174, 74),
+ MaxSize = new Size(174, 74),
+ Buttons = new[]
+ {
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Up",
+ DisplayName = "",
+ Icon = Properties.Resources.BlueUp,
+ Location = new Point(23, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Down",
+ DisplayName = "",
+ Icon = Properties.Resources.BlueDown,
+ Location = new Point(23, 36),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Left",
+ DisplayName = "",
+ Icon = Properties.Resources.Back,
+ Location = new Point(2, 24),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Right",
+ DisplayName = "",
+ Icon = Properties.Resources.Forward,
+ Location = new Point(44, 24),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Trigger",
+ DisplayName = "1",
+ Location = new Point(120, 24),
+ Type = PadSchema.PadInputType.Boolean
+ }
+ }
+ };
+ }
+
+ private static PadSchema PaddleController(int controller)
+ {
+ return new PadSchema
+ {
+ DisplayName = "Player " + controller,
+ IsConsole = false,
+ DefaultSize = new Size(250, 74),
+ Buttons = new[]
+ {
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Paddle",
+ DisplayName = "Paddle",
+ Location = new Point(23, 15),
+ Type = PadSchema.PadInputType.FloatSingle
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Trigger",
+ DisplayName = "1",
+ Location = new Point(12, 90),
+ Type = PadSchema.PadInputType.Boolean
+ }
+ }
+ };
+ }
+
+ private static PadSchema LightGunController(int controller)
+ {
+ return new PadSchema
+ {
+ DisplayName = "Light Gun",
+ IsConsole = false,
+ DefaultSize = new Size(356, 290),
+ MaxSize = new Size(356, 290),
+ Buttons = new[]
+ {
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " VPos",
+ Location = new Point(14, 17),
+ Type = PadSchema.PadInputType.TargetedPair,
+ TargetSize = new Size(256, 240),
+ SecondaryNames = new[]
+ {
+ "P" + controller + " HPos",
+ }
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "P" + controller + " Trigger",
+ DisplayName = "Trigger",
+ Location = new Point(284, 17),
+ Type = PadSchema.PadInputType.Boolean
+ }
+ }
+ };
+ }
+
+ private static PadSchema ConsoleButtons()
+ {
+ return new PadSchema
+ {
+ DisplayName = "Console",
+ IsConsole = true,
+ DefaultSize = new Size(215, 50),
+ Buttons = new[]
+ {
+ new PadSchema.ButtonSchema
+ {
+ Name = "Select",
+ DisplayName = "Select",
+ Location = new Point(10, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "Reset",
+ DisplayName = "Reset",
+ Location = new Point(60, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "Power",
+ DisplayName = "Power",
+ Location = new Point(108, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "Pause",
+ DisplayName = "Pause",
+ Location = new Point(158, 15),
+ Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "BW",
+ DisplayName = "BW",
+ Location = new Point(158, 15),
+ Type = PadSchema.PadInputType.Boolean
+ }
+ }
+ };
+ }
+ }
+
+ internal static class Emu7800Schema
+ {
+ public static IEnumerable GetPadSchemas(Atari7800 core)
+ {
+ switch (core.ControlAdapter.ControlType.Name)
{
case "Atari 7800 Joystick Controller":
yield return JoystickController(1);
@@ -248,6 +519,13 @@ namespace BizHawk.Client.EmuHawk
DisplayName = "Pause",
Location = new Point(158, 15),
Type = PadSchema.PadInputType.Boolean
+ },
+ new PadSchema.ButtonSchema
+ {
+ Name = "BW",
+ DisplayName = "BW",
+ Location = new Point(158, 15),
+ Type = PadSchema.PadInputType.Boolean
}
}
};
diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SatSchema.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SatSchema.cs
index f777728e40..73559c2678 100644
--- a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SatSchema.cs
+++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/SatSchema.cs
@@ -264,7 +264,7 @@ namespace BizHawk.Client.EmuHawk
new PadSchema.ButtonSchema
{
Name = $"P{controller} Stick Horizontal",
- SecondaryNames = new[] { $"P{controller} StickVertical" },
+ SecondaryNames = new[] { $"P{controller} Stick Vertical" },
MinValue = 0,
MidValue = 127,
MaxValue = 255,
@@ -575,7 +575,7 @@ namespace BizHawk.Client.EmuHawk
new PadSchema.ButtonSchema
{
Name = $"P{controller} Right Stick Horizontal",
- SecondaryNames = new[] { $"P{controller} Right StickVertical" },
+ SecondaryNames = new[] { $"P{controller} Right Stick Vertical" },
MinValue = 0,
MidValue = 127,
MaxValue = 255,
diff --git a/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs b/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs
index 2a56072e53..f6488b134a 100644
--- a/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs
+++ b/BizHawk.Emulation.Common/Base Implementations/ControllerDefinition.cs
@@ -85,6 +85,8 @@ namespace BizHawk.Emulation.Common
string xaxis = constraint.Params[0] as string;
string yaxis = constraint.Params[1] as string;
float range = (float)constraint.Params[2];
+ if (!floatButtons.ContainsKey(xaxis)) break;
+ if (!floatButtons.ContainsKey(yaxis)) break;
double xval = floatButtons[xaxis];
double yval = floatButtons[yaxis];
double length = Math.Sqrt((xval * xval) + (yval * yval));
diff --git a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
index 41b60815b7..dde7623f46 100644
--- a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
+++ b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
@@ -138,6 +138,7 @@ namespace BizHawk.Emulation.Common
// https://en.wikipedia.org/wiki/PlayStation_models#Comparison_of_models [w]
// https://github.com/petrockblog/RetroPie-Setup/wiki/PCSX-Core-Playstation-1 [g]
// http://redump.org/datfile/psx-bios/ also
+ // http://emulation.gametechwiki.com/index.php/File_Hashes [t]
var ps_10j = File("343883A7B555646DA8CEE54AADD2795B6E7DD070", 524288, "ps-10j.bin", "PSX BIOS (Version 1.0 J)", "Used on SCPH-1000, DTL-H1000 [g]. This is Rev for A hardware [w].");
var ps_11j = File("B06F4A861F74270BE819AA2A07DB8D0563A7CC4E", 524288, "ps-11j.bin", "PSX BIOS (Version 1.1 01/22/95)", "Used on SCPH-3000, DTL-H1000H [g]. This is for Rev B hardware [w].");
var ps_20a = File("649895EFD79D14790EABB362E94EB0622093DFB9", 524288, "ps-20a.bin", "PSX BIOS (Version 2.0 05/07/95 A)", "Used on DTL-H1001 [g]. This is for Rev B hardware [w].");
@@ -151,6 +152,7 @@ namespace BizHawk.Emulation.Common
var ps_22a = File("10155D8D6E6E832D6EA66DB9BC098321FB5E8EBF", 524288, "ps-22a.bin", "PSX BIOS (Version 2.2 12/04/95 A)", "Used on SCPH-1001, DTL-H1201, DTL-H3001 [g]. This is for Rev C hardware [w].");
var ps_22e = File("B6A11579CAEF3875504FCF3831B8E3922746DF2C", 524288, "ps-22e.bin", "PSX BIOS (Version 2.2 12/04/95 E)", "Used on SCPH-1002, DTL-H1202, DTL-H3002 [g]. This is for Rev C hardware [w].");
var ps_22d = File("73107D468FC7CB1D2C5B18B269715DD889ECEF06", 524288, "ps-22d.bin", "PSX BIOS (Version 2.2 03/06/96 D)", "Used on DTL-H1100 [g]. This is for Rev C hardware, presumably.");
+ /*new*/var ps_22jv = File("15C94DA3CC5A38A582429575AF4198C487FE893C", 1048576, "ps-22j(v).bin", "PSX BIOS (Version 2.2 12/04/95 J)", "Used on SCPH-5903 [t].");
var ps_30j = File("B05DEF971D8EC59F346F2D9AC21FB742E3EB6917", 524288, "ps-30j.bin", "PSX BIOS (Version 3.0 09/09/96 J)", "Used on SCPH-5500 [g]. This is for Rev C hardware [w]. Recommended for (J) [f].");
var ps_30a = File("0555C6FAE8906F3F09BAF5988F00E55F88E9F30B", 524288, "ps-30a.bin", "PSX BIOS (Version 3.0 11/18/96 A)", "Used on SCPH-5501, SCPH-5503, SCPH-7003 [g]. This is for Rev C hardware [w]. Recommended for (U) [f].");
var ps_30e = File("F6BC2D1F5EB6593DE7D089C425AC681D6FFFD3F0", 524288, "ps-30e.bin", "PSX BIOS (Version 3.0 01/06/97 E)", "Used on SCPH-5502, SCPH-5552 [g]. This is for Rev C hardware [w]. Recommended for (E) [f].");
@@ -158,11 +160,15 @@ namespace BizHawk.Emulation.Common
var ps_40j = File("77B10118D21AC7FFA9B35F9C4FD814DA240EB3E9", 524288, "ps-40j.bin", "PSX BIOS (Version 4.0 08/18/97 J)", "Used on SCPH-7000, SCPH-7500, SCPH-9000 [g]. This is for Rev C hardware [w].");
var ps_41a = File("14DF4F6C1E367CE097C11DEAE21566B4FE5647A9", 524288, "ps-41a.bin", "PSX BIOS (Version 4.1 12/16/97 A)", "Used on SCPH-7001, SCPH-7501, SCPH-7503, SCPH-9001, SCPH-9003, SCPH-9903 [g]. This is for Rev C hardware [w].");
var ps_41e = File("8D5DE56A79954F29E9006929BA3FED9B6A418C1D", 524288, "ps-41e.bin", "PSX BIOS (Version 4.1 12/16/97 E)", "Used on SCPH-7002, SCPH-7502, SCPH-9002 [g]. This is for Rev C hardware [w].");
+ /*new*/var ps_41aw = File("1B0DBDB23DA9DC0776AAC58D0755DC80FEA20975", 524288, "ps-41a(w).bin", "PSX BIOS (Version 4.1 11/14/97 A)", "Used on SCPH-7000W [t].");
var psone_43j = File("339A48F4FCF63E10B5B867B8C93CFD40945FAF6C", 524288, "psone-43j.bin", "PSX BIOS (Version 4.3 03/11/00 J)", "Used on PSone SCPH-100 [g]. This is for Rev C PSone hardware [w].");
var psone_44e = File("BEB0AC693C0DC26DAF5665B3314DB81480FA5C7C", 524288, "psone-44e.bin", "PSX BIOS (Version 4.4 03/24/00 E)", "Used on PSone SCPH-102 [g]. This is for Rev C PSone hardware [w].");
var psone_45a = File("DCFFE16BD90A723499AD46C641424981338D8378", 524288, "psone-45a.bin", "PSX BIOS (Version 4.5 05/25/00 A)", "Used on PSone SCPH-101 [g]. This is for Rev C PSone hardware [w].");
var psone_r5e = File("DBC7339E5D85827C095764FC077B41F78FD2ECAE", 524288, "psone-45e.bin", "PSX BIOS (Version 4.5 05/25/00 E)", "Used on PSone SCPH-102 [g]. This is for Rev C PSone hardware [w].");
- var ps2_50j = File("D7D6BE084F51354BC951D8FA2D8D912AA70ABC5E", 4194304, "ps2-50j.bin", "PSX BIOS (Version 5.0 10/27/00 J)", "Found on a PS2 [p].");
+ var ps2_50j = File("D7D6BE084F51354BC951D8FA2D8D912AA70ABC5E", 4194304, "ps2-50j.bin", "PSX BIOS (Version 5.0 10/27/00 J)", "Found on a PS2 [p]. May be known as SCPH18000.BIN.");
+ /*new*/ var ps_dtl_h2000 = File("1A8D6F9453111B1D317BB7DAE300495FBF54600C", 524288, "DTLH2000.bin", "DTL-H2000 Devkit [t]");
+ /*new*/ var ps_ps3 = File("C40146361EB8CF670B19FDC9759190257803CAB7", 524288, "ps1_rom.bin", "PSX BIOS (Version 5.0 06/23/03 A)", "Found on a PS3. [t]");
+
ps_22j_bad.Bad = ps_22j_bad2.Bad = ps_30e_bad.Bad = true;
@@ -191,14 +197,22 @@ namespace BizHawk.Emulation.Common
Option("PSX", "J", ps_22j_bad2, FirmwareOptionStatus.Bad);
Option("PSX", "U", ps_22a, FirmwareOptionStatus.Unacceptable);
Option("PSX", "E", ps_22e, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "J", ps_22d, FirmwareOptionStatus.Unacceptable);
Option("PSX", "E", ps_30e_bad, FirmwareOptionStatus.Bad);
Option("PSX", "J", ps_40j, FirmwareOptionStatus.Unacceptable);
Option("PSX", "U", ps_41a, FirmwareOptionStatus.Unacceptable);
Option("PSX", "E", ps_41e, FirmwareOptionStatus.Unacceptable);
Option("PSX", "J", psone_43j, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "E", psone_44e, FirmwareOptionStatus.Unacceptable);
Option("PSX", "U", psone_45a, FirmwareOptionStatus.Unacceptable);
Option("PSX", "E", psone_r5e, FirmwareOptionStatus.Unacceptable);
Option("PSX", "J", ps2_50j, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "J", ps_22jv, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "U", ps_41aw, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "U", ps_ps3, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "U", ps_dtl_h2000, FirmwareOptionStatus.Unacceptable); //not really sure what to do with this one, let's just call it region free
+ Option("PSX", "E", ps_dtl_h2000, FirmwareOptionStatus.Unacceptable);
+ Option("PSX", "J", ps_dtl_h2000, FirmwareOptionStatus.Unacceptable);
Firmware("AppleII", "AppleIIe", "AppleIIe.rom");
var appleII_AppleIIe = File("B8EA90ABE135A0031065E01697C4A3A20D51198B", 16384, "AppleIIe.rom", "Apple II e");
diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
index 4b76b90896..7e99f6ac12 100644
--- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
+++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
@@ -359,7 +359,8 @@
-
+
+
@@ -685,7 +686,6 @@
-
diff --git a/BizHawk.Emulation.Cores/CPUs/Z80/Execute.cs b/BizHawk.Emulation.Cores/CPUs/Z80/Execute.cs
index 346335ee1c..ee77ddde91 100644
--- a/BizHawk.Emulation.Cores/CPUs/Z80/Execute.cs
+++ b/BizHawk.Emulation.Cores/CPUs/Z80/Execute.cs
@@ -1,3 +1,4 @@
+using BizHawk.Common.NumberExtensions;
using BizHawk.Emulation.Common;
using System;
@@ -16,6 +17,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
private int EI_pending;
+ private ushort temp_WZ;
+
public bool Debug;
public Action Logger;
@@ -37,18 +40,14 @@ namespace BizHawk.Emulation.Cores.Components.Z80
while (pendingCycles > 0)
{
Interruptable = true;
- //if (interrupt == true)
- //Console.WriteLine(totalExecutedCycles);
+
if (halted)
{
-
++RegR;
totalExecutedCycles += 4; pendingCycles -= 4;
-
}
else
{
-
if (Debug)
{
Logger(State());
@@ -70,6 +69,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x02: // LD (BC), A
+ RegWZ.Low = (byte)((RegBC.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegBC.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -98,6 +99,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0x09: // ADD HL, BC
+ RegWZ = (ushort)(RegHL + 1);
TI1 = (short)RegHL.Word; TI2 = (short)RegBC.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -111,6 +113,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x0A: // LD A, (BC)
RegAF.High = ReadMemoryWrapper(RegBC.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegBC.Word + 1);
break;
case 0x0B: // DEC BC
--RegBC.Word;
@@ -134,6 +137,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x10: // DJNZ d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (--RegBC.High != 0)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -149,6 +153,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x12: // LD (DE), A
+ RegWZ.Low = (byte)((RegDE.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegDE.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -174,10 +180,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x18: // JR d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
RegPC.Word = (ushort)(RegPC.Word + TSB);
totalExecutedCycles += 12; pendingCycles -= 12;
break;
case 0x19: // ADD HL, DE
+ RegWZ = (ushort)(RegHL + 1);
TI1 = (short)RegHL.Word; TI2 = (short)RegDE.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -191,6 +199,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x1A: // LD A, (DE)
RegAF.High = ReadMemoryWrapper(RegDE.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegDE.Word + 1);
break;
case 0x1B: // DEC DE
--RegDE.Word;
@@ -214,6 +223,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x20: // JR NZ, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -230,6 +240,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x22: // LD (nn), HL
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegHL.Low);
WriteMemoryWrapper(TUS, RegHL.High);
totalExecutedCycles += 16; pendingCycles -= 16;
@@ -256,6 +267,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x28: // JR Z, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -267,6 +279,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x29: // ADD HL, HL
+ RegWZ = (ushort)(RegHL + 1);
TI1 = (short)RegHL.Word; TI2 = (short)RegHL.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -279,6 +292,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x2A: // LD HL, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegHL.Low = ReadMemoryWrapper(TUS++); RegHL.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 16; pendingCycles -= 16;
break;
@@ -304,6 +318,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x30: // JR NC, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -319,7 +334,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x32: // LD (nn), A
- WriteMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256), RegAF.High);
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ.Low = (byte)((temp_WZ + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
+ WriteMemoryWrapper(temp_WZ, RegAF.High);
totalExecutedCycles += 13; pendingCycles -= 13;
break;
case 0x33: // INC SP
@@ -344,6 +362,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x38: // JR C, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -355,6 +374,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x39: // ADD HL, SP
+ RegWZ = (ushort)(RegHL + 1);
TI1 = (short)RegHL.Word; TI2 = (short)RegSP.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -366,8 +386,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 11; pendingCycles -= 11;
break;
case 0x3A: // LD A, (nn)
- RegAF.High = ReadMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256));
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegAF.High = ReadMemoryWrapper(temp_WZ);
totalExecutedCycles += 13; pendingCycles -= 13;
+ RegWZ.Word = (ushort)(temp_WZ + 1);
break;
case 0x3B: // DEC SP
--RegSP.Word;
@@ -604,6 +626,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0x77: // LD (HL), A
+ RegWZ.Low = (byte)((RegHL.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegHL.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -634,6 +658,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x7E: // LD A, (HL)
RegAF.High = ReadMemoryWrapper(RegHL.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegHL.Word + 1);
break;
case 0x7F: // LD A, A
totalExecutedCycles += 4; pendingCycles -= 4;
@@ -663,6 +688,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0x86: // ADD A, (HL)
+ RegWZ = (ushort)(RegHL + 1);
RegAF.Word = TableALU[0, RegAF.High, ReadMemoryWrapper(RegHL.Word), 0];
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -911,6 +937,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xC2: // JP NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
RegPC.Word = TUS;
@@ -918,11 +945,14 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC3: // JP nn
- RegPC.Word = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
+ RegPC.Word = TUS;
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC4: // CALL NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -964,6 +994,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCA: // JP Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
RegPC.Word = TUS;
@@ -1362,8 +1393,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1372,8 +1403,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1382,8 +1413,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1392,8 +1423,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1402,8 +1433,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1412,8 +1443,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1422,8 +1453,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1432,8 +1463,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1442,8 +1473,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1452,8 +1483,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1462,8 +1493,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1472,8 +1503,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1482,8 +1513,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1492,8 +1523,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1502,8 +1533,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1512,8 +1543,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1522,8 +1553,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1532,8 +1563,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1542,8 +1573,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1552,8 +1583,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1562,8 +1593,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1572,8 +1603,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1582,8 +1613,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1592,8 +1623,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1602,8 +1633,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1612,8 +1643,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1622,8 +1653,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1632,8 +1663,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1642,8 +1673,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1652,8 +1683,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1662,8 +1693,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1672,8 +1703,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = !RegFlagZ;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1682,8 +1713,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1692,8 +1723,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1702,8 +1733,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1712,8 +1743,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1722,8 +1753,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1732,8 +1763,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1742,8 +1773,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1752,8 +1783,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1762,8 +1793,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1772,8 +1803,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1782,8 +1813,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1792,8 +1823,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1802,8 +1833,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1812,8 +1843,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1822,8 +1853,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1832,8 +1863,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = !RegFlagZ;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1842,8 +1873,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1852,8 +1883,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1862,8 +1893,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1872,8 +1903,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1882,8 +1913,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1892,8 +1923,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1902,8 +1933,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1912,8 +1943,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1922,8 +1953,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.High & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.High.Bit(3);
+ RegFlag5 = RegBC.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1932,8 +1963,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegBC.Low & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegBC.Low.Bit(3);
+ RegFlag5 = RegBC.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1942,8 +1973,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.High & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.High.Bit(3);
+ RegFlag5 = RegDE.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1952,8 +1983,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegDE.Low & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegDE.Low.Bit(3);
+ RegFlag5 = RegDE.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1962,8 +1993,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.High & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.High.Bit(3);
+ RegFlag5 = RegHL.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1972,8 +2003,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegHL.Low & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegHL.Low.Bit(3);
+ RegFlag5 = RegHL.Low.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -1982,8 +2013,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper(RegHL.Word) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 12; pendingCycles -= 12;
@@ -1992,8 +2023,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (RegAF.High & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
- RegFlag3 = false;
- RegFlag5 = false;
+ RegFlag3 = RegAF.High.Bit(3);
+ RegFlag5 = RegAF.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 8; pendingCycles -= 8;
@@ -2514,6 +2545,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCC: // CALL Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -2527,6 +2559,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCD: // CALL nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
RegPC.Word = TUS;
totalExecutedCycles += 17; pendingCycles -= 17;
@@ -2557,6 +2590,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD2: // JP NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
RegPC.Word = TUS;
@@ -2569,6 +2603,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD4: // CALL NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -2612,6 +2647,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDA: // JP C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
RegPC.Word = TUS;
@@ -2624,6 +2660,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDC: // CALL C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -2647,6 +2684,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x02: // LD (BC), A
+ RegWZ.Low = (byte)((RegBC.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegBC.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -2675,6 +2714,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0x09: // ADD IX, BC
+ RegWZ = (ushort)(RegIX + 1);
TI1 = (short)RegIX.Word; TI2 = (short)RegBC.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -2688,6 +2728,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x0A: // LD A, (BC)
RegAF.High = ReadMemoryWrapper(RegBC.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegBC.Word + 1);
break;
case 0x0B: // DEC BC
--RegBC.Word;
@@ -2711,6 +2752,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x10: // DJNZ d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (--RegBC.High != 0)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -2726,6 +2768,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x12: // LD (DE), A
+ RegWZ.Low = (byte)((RegDE.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegDE.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -2751,10 +2795,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x18: // JR d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
RegPC.Word = (ushort)(RegPC.Word + TSB);
totalExecutedCycles += 12; pendingCycles -= 12;
break;
case 0x19: // ADD IX, DE
+ RegWZ = (ushort)(RegIX + 1);
TI1 = (short)RegIX.Word; TI2 = (short)RegDE.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -2768,6 +2814,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x1A: // LD A, (DE)
RegAF.High = ReadMemoryWrapper(RegDE.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegDE.Word + 1);
break;
case 0x1B: // DEC DE
--RegDE.Word;
@@ -2791,6 +2838,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x20: // JR NZ, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -2807,6 +2855,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x22: // LD (nn), IX
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegIX.Low);
WriteMemoryWrapper(TUS, RegIX.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -2833,6 +2882,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x28: // JR Z, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -2844,6 +2894,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x29: // ADD IX, IX
+ RegWZ = (ushort)(RegIX + 1);
TI1 = (short)RegIX.Word; TI2 = (short)RegIX.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -2856,6 +2907,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x2A: // LD IX, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegIX.Low = ReadMemoryWrapper(TUS++); RegIX.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -2881,6 +2933,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x30: // JR NC, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -2896,7 +2949,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x32: // LD (nn), A
- WriteMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256), RegAF.High);
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ.Low = (byte)((temp_WZ + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
+ WriteMemoryWrapper(temp_WZ, RegAF.High);
totalExecutedCycles += 13; pendingCycles -= 13;
break;
case 0x33: // INC SP
@@ -2905,16 +2961,19 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x34: // INC (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
TB = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)); RegAF.Low = (byte)(TableInc[++TB] | (RegAF.Low & 1)); WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), TB);
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x35: // DEC (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
TB = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)); RegAF.Low = (byte)(TableDec[--TB] | (RegAF.Low & 1)); WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), TB);
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x36: // LD (IX+d), n
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), FetchMemoryWrapper(RegPC.Word++));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -2924,6 +2983,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x38: // JR C, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -2935,6 +2995,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x39: // ADD IX, SP
+ RegWZ = (ushort)(RegIX + 1);
TI1 = (short)RegIX.Word; TI2 = (short)RegSP.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -2946,8 +3007,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 15; pendingCycles -= 15;
break;
case 0x3A: // LD A, (nn)
- RegAF.High = ReadMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256));
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegAF.High = ReadMemoryWrapper(temp_WZ);
totalExecutedCycles += 13; pendingCycles -= 13;
+ RegWZ = (ushort)(temp_WZ + 1);
break;
case 0x3B: // DEC SP
--RegSP.Word;
@@ -2994,6 +3057,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x46: // LD B, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegBC.High = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3026,6 +3090,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x4E: // LD C, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegBC.Low = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3058,6 +3123,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x56: // LD D, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegDE.High = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3090,6 +3156,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x5E: // LD E, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegDE.Low = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3122,6 +3189,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x66: // LD H, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegHL.High = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3154,6 +3222,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x6E: // LD L, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegHL.Low = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3163,31 +3232,37 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x70: // LD (IX+d), B
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegBC.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x71: // LD (IX+d), C
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegBC.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x72: // LD (IX+d), D
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegDE.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x73: // LD (IX+d), E
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegDE.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x74: // LD (IX+d), H
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegHL.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x75: // LD (IX+d), L
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegHL.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3197,6 +3272,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x77: // LD (IX+d), A
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), RegAF.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3226,6 +3302,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x7E: // LD A, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.High = ReadMemoryWrapper((ushort)(RegIX.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3258,6 +3335,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x86: // ADD A, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[0, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3291,6 +3369,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x8E: // ADC A, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[1, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), RegFlagC ? 1 : 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3324,6 +3403,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x96: // SUB (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[2, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3357,6 +3437,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x9E: // SBC A, (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[3, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), RegFlagC ? 1 : 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3390,6 +3471,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xA6: // AND (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[4, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3423,6 +3505,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xAE: // XOR (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[5, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3456,6 +3539,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xB6: // OR (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[6, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3489,6 +3573,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xBE: // CP (IX+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
RegAF.Word = TableALU[7, RegAF.High, ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -3513,6 +3598,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xC2: // JP NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
RegPC.Word = TUS;
@@ -3520,11 +3606,14 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC3: // JP nn
- RegPC.Word = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
+ RegPC.Word = TUS;
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC4: // CALL NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -3566,6 +3655,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCA: // JP Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
RegPC.Word = TUS;
@@ -3574,6 +3664,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCB: // (Prefix)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIX.Word + Displacement);
++RegR;
switch (FetchMemoryWrapper(RegPC.Word++))
{
@@ -3936,7 +4027,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x34: // SL1 (IX+d)→H
- TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
+ TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), (byte)(TUS >> 8));
RegAF.Low = (byte)TUS;
RegHL.High = (byte)TUS;
@@ -3950,20 +4041,20 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x36: // SL1 (IX+d)
- TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
+ TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), (byte)(TUS >> 8));
RegAF.Low = (byte)TUS;
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x37: // SL1 (IX+d)→A
- TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
+ TUS = TableRotShift[1, 6, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), (byte)(TUS >> 8));
RegAF.Low = (byte)TUS;
RegAF.High = (byte)TUS;
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x38: // SRL (IX+d)→B
- TUS = TableRotShift[1, 7, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
+ TUS = TableRotShift[1, 7, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIX.Word + Displacement))];
WriteMemoryWrapper((ushort)(RegIX.Word + Displacement), (byte)(TUS >> 8));
RegAF.Low = (byte)TUS;
RegBC.High = (byte)TUS;
@@ -4021,6 +4112,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4029,6 +4122,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4037,6 +4132,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4045,6 +4142,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4053,6 +4152,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4061,6 +4162,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4069,6 +4172,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4077,6 +4182,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4085,6 +4192,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4093,6 +4202,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4101,6 +4212,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4109,6 +4222,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4117,6 +4232,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4125,6 +4242,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4133,6 +4252,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4141,6 +4262,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4149,6 +4272,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4157,6 +4282,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4165,6 +4292,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4173,6 +4302,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4181,6 +4312,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4189,6 +4322,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4197,6 +4332,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4205,6 +4342,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4213,6 +4352,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4221,6 +4362,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4229,6 +4372,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4237,6 +4382,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4245,6 +4392,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4253,6 +4402,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4261,6 +4412,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4269,6 +4422,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4277,6 +4432,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4285,6 +4442,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4293,6 +4452,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4301,6 +4462,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4309,6 +4472,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4317,6 +4482,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4325,6 +4492,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4333,6 +4502,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4341,6 +4512,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4349,6 +4522,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4357,6 +4532,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4365,6 +4542,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4373,6 +4552,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4381,6 +4562,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4389,6 +4572,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4397,6 +4582,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4405,6 +4592,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4413,6 +4602,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4421,6 +4612,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4429,6 +4622,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4437,6 +4632,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4445,6 +4642,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4453,6 +4652,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4461,6 +4662,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4469,6 +4672,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4477,6 +4682,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4485,6 +4692,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4493,6 +4702,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4501,6 +4712,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4509,6 +4722,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4517,6 +4732,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -4525,6 +4742,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIX.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -5157,6 +5376,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCC: // CALL Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -5170,6 +5390,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCD: // CALL nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
RegPC.Word = TUS;
totalExecutedCycles += 17; pendingCycles -= 17;
@@ -5200,6 +5421,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD2: // JP NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
RegPC.Word = TUS;
@@ -5212,6 +5434,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD4: // CALL NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -5255,6 +5478,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDA: // JP C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
RegPC.Word = TUS;
@@ -5267,6 +5491,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDC: // CALL C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -5308,6 +5533,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xE2: // JP PO, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagP)
{
RegPC.Word = TUS;
@@ -5318,10 +5544,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
TUS = RegSP.Word; TBL = ReadMemoryWrapper(TUS++); TBH = ReadMemoryWrapper(TUS--);
WriteMemoryWrapper(TUS++, RegIX.Low); WriteMemoryWrapper(TUS, RegIX.High);
RegIX.Low = TBL; RegIX.High = TBH;
+ RegWZ = RegIX;
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0xE4: // CALL C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -5358,11 +5586,13 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0xE9: // JP IX
+ RegWZ = RegIX;
RegPC.Word = RegIX.Word;
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0xEA: // JP PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
RegPC.Word = TUS;
@@ -5375,6 +5605,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xEC: // CALL PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -5612,6 +5843,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x43: // LD (nn), BC
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegBC.Low);
WriteMemoryWrapper(TUS, RegBC.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -5663,6 +5895,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x4B: // LD BC, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegBC.Low = ReadMemoryWrapper(TUS++); RegBC.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -5712,6 +5945,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x53: // LD (nn), DE
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegDE.Low);
WriteMemoryWrapper(TUS, RegDE.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -5768,6 +6002,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x5B: // LD DE, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegDE.Low = ReadMemoryWrapper(TUS++); RegDE.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -5822,6 +6057,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x63: // LD (nn), HL
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegHL.Low);
WriteMemoryWrapper(TUS, RegHL.High);
totalExecutedCycles += 16; pendingCycles -= 16;
@@ -5840,6 +6076,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x67: // RRD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB2 >> 4) + (TB1 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 & 0x0F));
@@ -5882,6 +6119,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x6B: // LD HL, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegHL.Low = ReadMemoryWrapper(TUS++); RegHL.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 16; pendingCycles -= 16;
break;
@@ -5898,6 +6136,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x6F: // RLD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB1 & 0x0F) + (TB2 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 >> 4));
@@ -5940,6 +6179,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x73: // LD (nn), SP
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegSP.Low);
WriteMemoryWrapper(TUS, RegSP.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -5990,6 +6230,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x7B: // LD SP, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegSP.Low = ReadMemoryWrapper(TUS++); RegSP.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -6114,6 +6355,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA1: // CPI
+ RegWZ = (ushort)(RegWZ + 1);
TB1 = ReadMemoryWrapper(RegHL.Word++); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -6125,6 +6367,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA2: // INI
+ RegWZ = (ushort)(RegBC + 1);
WriteMemoryWrapper(RegHL.Word++, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -6160,6 +6403,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA9: // CPD
+ RegWZ = (ushort)(RegWZ - 1);
TB1 = ReadMemoryWrapper(RegHL.Word--); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -6171,6 +6415,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xAA: // IND
+ RegWZ = (ushort)(RegBC - 1);
WriteMemoryWrapper(RegHL.Word--, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -6572,6 +6817,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF2: // JP P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
RegPC.Word = TUS;
@@ -6584,6 +6830,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF4: // CALL P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -6625,6 +6872,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFA: // JP M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
RegPC.Word = TUS;
@@ -6638,6 +6886,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFC: // CALL M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -6690,6 +6939,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xE2: // JP PO, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagP)
{
RegPC.Word = TUS;
@@ -6700,10 +6950,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
TUS = RegSP.Word; TBL = ReadMemoryWrapper(TUS++); TBH = ReadMemoryWrapper(TUS--);
WriteMemoryWrapper(TUS++, RegHL.Low); WriteMemoryWrapper(TUS, RegHL.High);
RegHL.Low = TBL; RegHL.High = TBH;
+ RegWZ = RegHL;
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0xE4: // CALL PO, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagP)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -6740,11 +6992,13 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0xE9: // JP HL
+ RegWZ = RegHL;
RegPC.Word = RegHL.Word;
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0xEA: // JP PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
RegPC.Word = TUS;
@@ -6757,6 +7011,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xEC: // CALL PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -6994,6 +7249,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x43: // LD (nn), BC
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegBC.Low);
WriteMemoryWrapper(TUS, RegBC.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -7045,6 +7301,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x4B: // LD BC, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegBC.Low = ReadMemoryWrapper(TUS++); RegBC.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -7094,6 +7351,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x53: // LD (nn), DE
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegDE.Low);
WriteMemoryWrapper(TUS, RegDE.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -7150,6 +7408,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x5B: // LD DE, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegDE.Low = ReadMemoryWrapper(TUS++); RegDE.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -7204,6 +7463,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x63: // LD (nn), HL
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegHL.Low);
WriteMemoryWrapper(TUS, RegHL.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -7222,6 +7482,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x67: // RRD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB2 >> 4) + (TB1 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 & 0x0F));
@@ -7264,6 +7525,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x6B: // LD HL, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegHL.Low = ReadMemoryWrapper(TUS++); RegHL.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -7280,6 +7542,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x6F: // RLD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB1 & 0x0F) + (TB2 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 >> 4));
@@ -7322,6 +7585,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x73: // LD (nn), SP
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegSP.Low);
WriteMemoryWrapper(TUS, RegSP.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -7372,6 +7636,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x7B: // LD SP, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegSP.Low = ReadMemoryWrapper(TUS++); RegSP.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -7496,6 +7761,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA1: // CPI
+ RegWZ = (ushort)(RegWZ + 1);
TB1 = ReadMemoryWrapper(RegHL.Word++); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -7507,6 +7773,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA2: // INI
+ RegWZ = (ushort)(RegBC + 1);
WriteMemoryWrapper(RegHL.Word++, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -7542,6 +7809,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA9: // CPD
+ RegWZ = (ushort)(RegWZ - 1);
TB1 = ReadMemoryWrapper(RegHL.Word--); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -7553,6 +7821,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xAA: // IND
+ RegWZ = (ushort)(RegBC - 1);
WriteMemoryWrapper(RegHL.Word--, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -7954,6 +8223,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF2: // JP P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
RegPC.Word = TUS;
@@ -7966,6 +8236,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF4: // CALL P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -8007,6 +8278,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFA: // JP M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
RegPC.Word = TUS;
@@ -8020,6 +8292,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFC: // CALL M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -8043,6 +8316,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x02: // LD (BC), A
+ RegWZ.Low = (byte)((RegBC.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegBC.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -8071,6 +8346,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 4; pendingCycles -= 4;
break;
case 0x09: // ADD IY, BC
+ RegWZ = (ushort)(RegIY + 1);
TI1 = (short)RegIY.Word; TI2 = (short)RegBC.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -8084,6 +8360,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x0A: // LD A, (BC)
RegAF.High = ReadMemoryWrapper(RegBC.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegBC.Word + 1);
break;
case 0x0B: // DEC BC
--RegBC.Word;
@@ -8107,6 +8384,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x10: // DJNZ d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (--RegBC.High != 0)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -8122,6 +8400,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x12: // LD (DE), A
+ RegWZ.Low = (byte)((RegDE.Word + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
WriteMemoryWrapper(RegDE.Word, RegAF.High);
totalExecutedCycles += 7; pendingCycles -= 7;
break;
@@ -8147,10 +8427,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x18: // JR d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
RegPC.Word = (ushort)(RegPC.Word + TSB);
totalExecutedCycles += 12; pendingCycles -= 12;
break;
case 0x19: // ADD IY, DE
+ RegWZ = (ushort)(RegIY + 1);
TI1 = (short)RegIY.Word; TI2 = (short)RegDE.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -8164,6 +8446,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
case 0x1A: // LD A, (DE)
RegAF.High = ReadMemoryWrapper(RegDE.Word);
totalExecutedCycles += 7; pendingCycles -= 7;
+ RegWZ = (ushort)(RegDE.Word + 1);
break;
case 0x1B: // DEC DE
--RegDE.Word;
@@ -8187,6 +8470,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x20: // JR NZ, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -8203,6 +8487,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x22: // LD (nn), IY
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegIY.Low);
WriteMemoryWrapper(TUS, RegIY.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -8229,6 +8514,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x28: // JR Z, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagZ)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -8240,6 +8526,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x29: // ADD IY, IY
+ RegWZ = (ushort)(RegIY + 1);
TI1 = (short)RegIY.Word; TI2 = (short)RegIY.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -8252,6 +8539,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x2A: // LD IY, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegIY.Low = ReadMemoryWrapper(TUS++); RegIY.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -8277,6 +8565,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x30: // JR NC, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (!RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -8292,7 +8581,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0x32: // LD (nn), A
- WriteMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256), RegAF.High);
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ.Low = (byte)((temp_WZ + 1) & 0xFF);
+ RegWZ.High = RegAF.High;
+ WriteMemoryWrapper(temp_WZ, RegAF.High);
totalExecutedCycles += 13; pendingCycles -= 13;
break;
case 0x33: // INC SP
@@ -8301,16 +8593,19 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x34: // INC (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
TB = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)); RegAF.Low = (byte)(TableInc[++TB] | (RegAF.Low & 1)); WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), TB);
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x35: // DEC (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
TB = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)); RegAF.Low = (byte)(TableDec[--TB] | (RegAF.Low & 1)); WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), TB);
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0x36: // LD (IY+d), n
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), FetchMemoryWrapper(RegPC.Word++));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8320,6 +8615,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x38: // JR C, d
TSB = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegPC.Word + TSB);
if (RegFlagC)
{
RegPC.Word = (ushort)(RegPC.Word + TSB);
@@ -8331,6 +8627,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0x39: // ADD IY, SP
+ RegWZ = (ushort)(RegIY + 1);
TI1 = (short)RegIY.Word; TI2 = (short)RegSP.Word; TIR = TI1 + TI2;
TUS = (ushort)TIR;
RegFlagH = ((TI1 & 0xFFF) + (TI2 & 0xFFF)) > 0xFFF;
@@ -8342,8 +8639,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 15; pendingCycles -= 15;
break;
case 0x3A: // LD A, (nn)
- RegAF.High = ReadMemoryWrapper((ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256));
+ temp_WZ = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegAF.High = ReadMemoryWrapper(temp_WZ);
totalExecutedCycles += 13; pendingCycles -= 13;
+ RegWZ = (ushort)(temp_WZ + 1);
break;
case 0x3B: // DEC SP
--RegSP.Word;
@@ -8390,6 +8689,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x46: // LD B, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegBC.High = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8422,6 +8722,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x4E: // LD C, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegBC.Low = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8454,6 +8755,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x56: // LD D, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegDE.High = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8486,6 +8788,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x5E: // LD E, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegDE.Low = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8518,6 +8821,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x66: // LD H, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegHL.High = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8550,6 +8854,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x6E: // LD L, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegHL.Low = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8559,31 +8864,37 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x70: // LD (IY+d), B
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegBC.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x71: // LD (IY+d), C
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegBC.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x72: // LD (IY+d), D
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegDE.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x73: // LD (IY+d), E
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegDE.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x74: // LD (IY+d), H
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegHL.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
case 0x75: // LD (IY+d), L
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegHL.Low);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8593,6 +8904,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x77: // LD (IY+d), A
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), RegAF.High);
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8622,6 +8934,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x7E: // LD A, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.High = ReadMemoryWrapper((ushort)(RegIY.Word + Displacement));
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8654,6 +8967,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x86: // ADD A, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[0, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8687,6 +9001,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x8E: // ADC A, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[1, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), RegFlagC ? 1 : 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8720,6 +9035,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x96: // SUB (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[2, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8753,6 +9069,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x9E: // SBC A, (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[3, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), RegFlagC ? 1 : 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8786,6 +9103,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xA6: // AND (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[4, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8819,6 +9137,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xAE: // XOR (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[5, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8852,6 +9171,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xB6: // OR (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[6, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8885,6 +9205,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xBE: // CP (IY+d)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
RegAF.Word = TableALU[7, RegAF.High, ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)), 0];
totalExecutedCycles += 19; pendingCycles -= 19;
break;
@@ -8909,6 +9230,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xC2: // JP NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
RegPC.Word = TUS;
@@ -8916,11 +9238,14 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC3: // JP nn
- RegPC.Word = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
+ RegPC.Word = TUS;
totalExecutedCycles += 10; pendingCycles -= 10;
break;
case 0xC4: // CALL NZ, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -8962,6 +9287,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCA: // JP Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
RegPC.Word = TUS;
@@ -8970,10 +9296,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCB: // (Prefix)
Displacement = (sbyte)FetchMemoryWrapper(RegPC.Word++);
+ RegWZ = (ushort)(RegIY.Word + Displacement);
++RegR;
switch (FetchMemoryWrapper(RegPC.Word++))
{
case 0x00: // RLC (IY+d)
+ RegWZ = (ushort)(RegIY.Word + Displacement);
TUS = TableRotShift[1, 0, RegAF.Low + 256 * ReadMemoryWrapper((ushort)(RegIY.Word + Displacement))];
WriteMemoryWrapper((ushort)(RegIY.Word + Displacement), (byte)(TUS >> 8));
RegAF.Low = (byte)TUS;
@@ -9361,6 +9689,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9369,6 +9699,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9377,6 +9709,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9385,6 +9719,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9393,6 +9729,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9401,6 +9739,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9409,6 +9749,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9417,6 +9759,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x01) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9425,6 +9769,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9433,6 +9779,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9441,6 +9789,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9449,6 +9799,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9457,6 +9809,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9465,6 +9819,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9473,6 +9829,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9481,6 +9839,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x02) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9489,6 +9849,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9497,6 +9859,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9505,6 +9869,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9513,6 +9879,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9521,6 +9889,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9529,6 +9899,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9537,6 +9909,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9545,6 +9919,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x04) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9553,6 +9929,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9561,6 +9939,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9569,6 +9949,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9577,6 +9959,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9585,6 +9969,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9593,6 +9979,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9601,6 +9989,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9609,6 +9999,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x08) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9617,6 +10009,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9625,6 +10019,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9633,6 +10029,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9641,6 +10039,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9649,6 +10049,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9657,6 +10059,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9665,6 +10069,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9673,6 +10079,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x10) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9681,6 +10089,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9689,6 +10099,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9697,6 +10109,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9705,6 +10119,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9713,6 +10129,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9721,6 +10139,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9729,6 +10149,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9737,6 +10159,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x20) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9745,6 +10169,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9753,6 +10179,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9761,6 +10189,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9769,6 +10199,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9777,6 +10209,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9785,6 +10219,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9793,6 +10229,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9801,6 +10239,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x40) == 0;
RegFlagP = RegFlagZ;
RegFlagS = false;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9809,6 +10249,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9817,6 +10259,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9825,6 +10269,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9833,6 +10279,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9841,6 +10289,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9849,6 +10299,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9857,6 +10309,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -9865,6 +10319,8 @@ namespace BizHawk.Emulation.Cores.Components.Z80
RegFlagZ = (ReadMemoryWrapper((ushort)(RegIY.Word + Displacement)) & 0x80) == 0;
RegFlagP = RegFlagZ;
RegFlagS = !RegFlagZ;
+ RegFlag3 = RegWZ.High.Bit(3);
+ RegFlag5 = RegWZ.High.Bit(5);
RegFlagH = true;
RegFlagN = false;
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -10385,6 +10841,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCC: // CALL Z, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagZ)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -10398,6 +10855,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xCD: // CALL nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
RegPC.Word = TUS;
totalExecutedCycles += 17; pendingCycles -= 17;
@@ -10428,6 +10886,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD2: // JP NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
RegPC.Word = TUS;
@@ -10440,6 +10899,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xD4: // CALL NC, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -10483,6 +10943,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDA: // JP C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
RegPC.Word = TUS;
@@ -10495,6 +10956,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xDC: // CALL C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -10536,6 +10998,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xE2: // JP PO, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagP)
{
RegPC.Word = TUS;
@@ -10546,10 +11009,12 @@ namespace BizHawk.Emulation.Cores.Components.Z80
TUS = RegSP.Word; TBL = ReadMemoryWrapper(TUS++); TBH = ReadMemoryWrapper(TUS--);
WriteMemoryWrapper(TUS++, RegIY.Low); WriteMemoryWrapper(TUS, RegIY.High);
RegIY.Low = TBL; RegIY.High = TBH;
+ RegWZ = RegIY;
totalExecutedCycles += 23; pendingCycles -= 23;
break;
case 0xE4: // CALL C, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagC)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -10586,11 +11051,13 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
break;
case 0xE9: // JP IY
+ RegWZ = RegIY;
RegPC.Word = RegIY.Word;
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0xEA: // JP PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
RegPC.Word = TUS;
@@ -10603,6 +11070,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xEC: // CALL PE, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagP)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -10840,6 +11308,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x43: // LD (nn), BC
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegBC.Low);
WriteMemoryWrapper(TUS, RegBC.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -10891,6 +11360,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x4B: // LD BC, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegBC.Low = ReadMemoryWrapper(TUS++); RegBC.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -10940,6 +11410,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x53: // LD (nn), DE
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegDE.Low);
WriteMemoryWrapper(TUS, RegDE.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -10996,6 +11467,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x5B: // LD DE, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegDE.Low = ReadMemoryWrapper(TUS++); RegDE.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -11050,6 +11522,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x63: // LD (nn), HL
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegHL.Low);
WriteMemoryWrapper(TUS, RegHL.High);
totalExecutedCycles += 16; pendingCycles -= 16;
@@ -11068,6 +11541,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x67: // RRD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB2 >> 4) + (TB1 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 & 0x0F));
@@ -11110,6 +11584,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x6B: // LD HL, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegHL.Low = ReadMemoryWrapper(TUS++); RegHL.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 16; pendingCycles -= 16;
break;
@@ -11126,6 +11601,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 8; pendingCycles -= 8;
break;
case 0x6F: // RLD
+ RegWZ = (ushort)(RegHL + 1);
TB1 = RegAF.High; TB2 = ReadMemoryWrapper(RegHL.Word);
WriteMemoryWrapper(RegHL.Word, (byte)((TB1 & 0x0F) + (TB2 << 4)));
RegAF.High = (byte)((TB1 & 0xF0) + (TB2 >> 4));
@@ -11168,6 +11644,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x73: // LD (nn), SP
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
WriteMemoryWrapper(TUS++, RegSP.Low);
WriteMemoryWrapper(TUS, RegSP.High);
totalExecutedCycles += 20; pendingCycles -= 20;
@@ -11218,6 +11695,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0x7B: // LD SP, (nn)
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = (ushort)(TUS + 1);
RegSP.Low = ReadMemoryWrapper(TUS++); RegSP.High = ReadMemoryWrapper(TUS);
totalExecutedCycles += 20; pendingCycles -= 20;
break;
@@ -11342,6 +11820,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA1: // CPI
+ RegWZ = (ushort)(RegWZ + 1);
TB1 = ReadMemoryWrapper(RegHL.Word++); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -11353,6 +11832,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA2: // INI
+ RegWZ = (ushort)(RegBC + 1);
WriteMemoryWrapper(RegHL.Word++, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -11388,6 +11868,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xA9: // CPD
+ RegWZ = (ushort)(RegWZ - 1);
TB1 = ReadMemoryWrapper(RegHL.Word--); TB2 = (byte)(RegAF.High - TB1);
RegFlagN = true;
RegFlagH = TableHalfBorrow[RegAF.High, TB1];
@@ -11399,6 +11880,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
totalExecutedCycles += 16; pendingCycles -= 16;
break;
case 0xAA: // IND
+ RegWZ = (ushort)(RegBC - 1);
WriteMemoryWrapper(RegHL.Word--, ReadHardware(RegBC.Word));
--RegBC.High;
RegFlagZ = RegBC.High == 0;
@@ -11800,6 +12282,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF2: // JP P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
RegPC.Word = TUS;
@@ -11812,6 +12295,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xF4: // CALL P, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (!RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -11853,6 +12337,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFA: // JP M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
RegPC.Word = TUS;
@@ -11866,6 +12351,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
break;
case 0xFC: // CALL M, nn
TUS = (ushort)(FetchMemoryWrapper(RegPC.Word++) + FetchMemoryWrapper(RegPC.Word++) * 256);
+ RegWZ = TUS;
if (RegFlagS)
{
WriteMemoryWrapper(--RegSP.Word, RegPC.High); WriteMemoryWrapper(--RegSP.Word, RegPC.Low);
@@ -11904,7 +12390,16 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
}
- bool int_triggered = false;
+
+ //EI (enable interrupts) actually takes effect after the NEXT instruction
+ if (EI_pending > 0)
+ {
+ EI_pending--;
+ if (EI_pending == 0)
+ {
+ IFF1 = IFF2 = true;
+ }
+ }
// Process interrupt requests.
if (nonMaskableInterruptPending)
@@ -11924,8 +12419,6 @@ namespace BizHawk.Emulation.Cores.Components.Z80
}
else if (iff1 && interrupt && Interruptable)
{
- int_triggered = true;
-
Halted = false;
iff1 = iff2 = false;
@@ -11950,15 +12443,6 @@ namespace BizHawk.Emulation.Cores.Components.Z80
IRQCallback();
}
- //EI (enable interrupts) actually takes effect after the NEXT instruction
- if (EI_pending > 0)
- {
- EI_pending--;
- if (EI_pending == 0 && !int_triggered)
- {
- IFF1 = IFF2 = true;
- }
- }
}
}
diff --git a/BizHawk.Emulation.Cores/CPUs/Z80/Registers.cs b/BizHawk.Emulation.Cores/CPUs/Z80/Registers.cs
index 7f00c1dece..bd5fe98cbc 100644
--- a/BizHawk.Emulation.Cores/CPUs/Z80/Registers.cs
+++ b/BizHawk.Emulation.Cores/CPUs/Z80/Registers.cs
@@ -88,11 +88,13 @@ namespace BizHawk.Emulation.Cores.Components.Z80
private RegisterPair RegBC;
private RegisterPair RegDE;
private RegisterPair RegHL;
+ private RegisterPair RegWZ;
private RegisterPair RegAltAF; // Shadow for A and F
private RegisterPair RegAltBC; // Shadow for B and C
private RegisterPair RegAltDE; // Shadow for D and E
private RegisterPair RegAltHL; // Shadow for H and L
+ // NOTE: There is no AltWZ register (despite it being shown on various block diagrams)
private byte RegI; // I (interrupt vector)
private byte RegR; // R (memory refresh)
@@ -106,7 +108,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
private void ResetRegisters()
{
// Clear main registers
- RegAF = 0; RegBC = 0; RegDE = 0; RegHL = 0;
+ RegAF = 0; RegBC = 0; RegDE = 0; RegHL = 0; RegWZ = 0;
// Clear alternate registers
RegAltAF = 0; RegAltBC = 0; RegAltDE = 0; RegAltHL = 0;
// Clear special purpose registers
@@ -162,6 +164,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
get { return RegDE.Low; }
set { RegDE.Low = value; }
}
+
public ushort RegisterDE
{
get { return RegDE.Word; }
@@ -179,57 +182,85 @@ namespace BizHawk.Emulation.Cores.Components.Z80
get { return RegHL.Low; }
set { RegHL.Low = value; }
}
+
public ushort RegisterHL
{
get { return RegHL.Word; }
set { RegHL.Word = value; }
}
+ public byte RegisterW
+ {
+ get { return RegWZ.High; }
+ set { RegWZ.High = value; }
+ }
+
+ public byte RegisterZ
+ {
+ get { return RegWZ.Low; }
+ set { RegWZ.Low = value; }
+ }
+
+ public ushort RegisterWZ
+ {
+ get { return RegWZ.Word; }
+ set { RegWZ.Word = value; }
+ }
+
public ushort RegisterPC
{
get { return RegPC.Word; }
set { RegPC.Word = value; }
}
+
public ushort RegisterSP
{
get { return RegSP.Word; }
set { RegSP.Word = value; }
}
+
public ushort RegisterIX
{
get { return RegIX.Word; }
set { RegIX.Word = value; }
}
+
public ushort RegisterIY
{
get { return RegIY.Word; }
set { RegIY.Word = value; }
}
+
public byte RegisterI
{
get { return RegI; }
set { RegI = value; }
}
+
public byte RegisterR
{
get { return RegR; }
set { RegR = value; }
}
+
public ushort RegisterShadowAF
{
get { return RegAltAF.Word; }
set { RegAltAF.Word = value; }
}
+
public ushort RegisterShadowBC
{
get { return RegAltBC.Word; }
set { RegAltBC.Word = value; }
}
+
public ushort RegisterShadowDE
{
get { return RegAltDE.Word; }
set { RegAltDE.Word = value; }
}
+
public ushort RegisterShadowHL
{
get { return RegAltHL.Word; }
diff --git a/BizHawk.Emulation.Cores/CPUs/Z80/Z80A.cs b/BizHawk.Emulation.Cores/CPUs/Z80/Z80A.cs
index 9a3192813d..35b7d7038c 100644
--- a/BizHawk.Emulation.Cores/CPUs/Z80/Z80A.cs
+++ b/BizHawk.Emulation.Cores/CPUs/Z80/Z80A.cs
@@ -8,6 +8,8 @@ using BizHawk.Emulation.Common;
// This Z80 emulator is a modified version of Ben Ryves 'Brazil' emulator.
// It is MIT licensed.
+// for WZ register details, see: http://www.grimware.org/lib/exe/fetch.php/documentations/devices/z80/z80.memptr.eng.txt
+
namespace BizHawk.Emulation.Cores.Components.Z80
{
public sealed partial class Z80A
@@ -113,6 +115,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80
ser.Sync("BC", ref RegBC.Word);
ser.Sync("DE", ref RegDE.Word);
ser.Sync("HL", ref RegHL.Word);
+ ser.Sync("WZ", ref RegWZ.Word);
ser.Sync("ShadowAF", ref RegAltAF.Word);
ser.Sync("ShadowBC", ref RegAltBC.Word);
ser.Sync("ShadowDE", ref RegAltDE.Word);
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600ControllerDeck.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600ControllerDeck.cs
index 775592841c..7f3813cc82 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600ControllerDeck.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600ControllerDeck.cs
@@ -24,7 +24,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
Definition = new ControllerDefinition
{
- Name = "Atari 2600 Controller",
+ Name = "Atari 2600 Basic Controller",
BoolButtons = Port1.Definition.BoolButtons
.Concat(Port2.Definition.BoolButtons)
.Concat(new[]
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Tia/TIA.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Tia/TIA.cs
index 4306c96eef..1fd27cd171 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Tia/TIA.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Tia/TIA.cs
@@ -1128,7 +1128,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (!_hmove.LateHBlankReset)
{
_player0.HPosCnt = (byte)(_hsyncCnt < 68 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 67)
+ if (_hsyncCnt == 67 || _hsyncCnt==0)
{
_player0.HPosCnt = 160 - 3;
}
@@ -1136,7 +1136,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
else
{
_player0.HPosCnt = (byte)(_hsyncCnt < 76 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 75)
+ if (_hsyncCnt == 75 || _hsyncCnt == 0)
{
_player0.HPosCnt = 160 - 3;
}
@@ -1148,7 +1148,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (!_hmove.LateHBlankReset)
{
_player1.HPosCnt = (byte)(_hsyncCnt < 68 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 67)
+ if (_hsyncCnt == 67 || _hsyncCnt == 0)
{
_player1.HPosCnt = 160 - 3;
}
@@ -1156,7 +1156,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
else
{
_player1.HPosCnt = (byte)(_hsyncCnt < 76 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 75)
+ if (_hsyncCnt == 75 || _hsyncCnt == 0)
{
_player1.HPosCnt = 160 - 3;
}
@@ -1167,7 +1167,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (!_hmove.LateHBlankReset)
{
_player0.Missile.HPosCnt = (byte)(_hsyncCnt < 68 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 67)
+ if (_hsyncCnt == 67 || _hsyncCnt == 0)
{
_player0.Missile.HPosCnt = 160 - 3;
}
@@ -1175,7 +1175,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
else
{
_player0.Missile.HPosCnt = (byte)(_hsyncCnt < 76 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 75)
+ if (_hsyncCnt == 75 || _hsyncCnt == 0)
{
_player0.Missile.HPosCnt = 160 - 3;
}
@@ -1186,7 +1186,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (!_hmove.LateHBlankReset)
{
_player1.Missile.HPosCnt = (byte)(_hsyncCnt < 68 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 67)
+ if (_hsyncCnt == 67 || _hsyncCnt == 0)
{
_player1.Missile.HPosCnt = 160 - 3;
}
@@ -1194,7 +1194,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
else
{
_player1.Missile.HPosCnt = (byte)(_hsyncCnt < 76 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 75)
+ if (_hsyncCnt == 75 || _hsyncCnt == 0)
{
_player1.Missile.HPosCnt = 160 - 3;
}
@@ -1205,7 +1205,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
if (!_hmove.LateHBlankReset)
{
_ball.HPosCnt = (byte)(_hsyncCnt < 68 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 67)
+ if (_hsyncCnt == 67 || _hsyncCnt == 0)
{
_ball.HPosCnt = 160 - 3;
}
@@ -1213,7 +1213,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
else
{
_ball.HPosCnt = (byte)(_hsyncCnt < 76 ? 160 - 2 : 160 - 4);
- if (_hsyncCnt == 75)
+ if (_hsyncCnt == 75 || _hsyncCnt == 0)
{
_ball.HPosCnt = 160 - 3;
}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800Control.cs b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800Control.cs
index f01721e0df..28a86f8328 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800Control.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800Control.cs
@@ -21,6 +21,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
"BW", // should be "Color"??
"Left Difficulty", // better not put P# on these as they might not correspond to player numbers
"Right Difficulty",
+ "Pause",
// ports
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 Trigger",
@@ -166,9 +167,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari7800
// on the console
"Reset",
"Select",
- "Pause",
+ "BW", // should be "Color"??
"Toggle Left Difficulty", // better not put P# on these as they might not correspond to player numbers
"Toggle Right Difficulty",
+ "Pause",
// ports
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 Trigger", "P1 Trigger 2",
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IEmulator.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IEmulator.cs
index 50e6f2783c..d99c43b873 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IEmulator.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IEmulator.cs
@@ -1,10 +1,11 @@
using BizHawk.Common.NumberExtensions;
using BizHawk.Emulation.Common;
using System;
+using System.Collections.Generic;
namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
- public partial class A7800Hawk : IEmulator
+ public partial class A7800Hawk : IEmulator, IVideoProvider
{
public IEmulatorServiceProvider ServiceProvider { get; }
@@ -13,7 +14,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
//Maria related variables
public int cycle;
public int cpu_cycle;
- public int m6532_cycle;
public bool cpu_is_haltable;
public bool cpu_is_halted;
public bool cpu_halt_pending;
@@ -33,15 +33,27 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
public bool right_was_pressed;
public bool p1_is_2button;
public bool p2_is_2button;
+ public bool p1_is_lightgun;
+ public bool p2_is_lightgun;
+ public float p1_lightgun_x;
+ public float p1_lightgun_y;
+ public float p2_lightgun_x;
+ public float p2_lightgun_y;
+ public int lg_1_counting_down;
+ public int lg_1_counting_down_2;
+ public int lg_2_counting_down;
+ public int lg_2_counting_down_2;
+ public byte lg_1_trigger_hit;
+ public byte lg_2_trigger_hit;
// there are 4 maria cycles in a CPU cycle (fast access, both NTSC and PAL)
// if the 6532 or TIA are accessed (PC goes to one of those addresses) the next access will be slower by 1/2 a CPU cycle
// i.e. it will take 6 Maria cycles instead of 4
public bool slow_access = false;
+ public int slow_countdown;
public void FrameAdvance(IController controller, bool render, bool rendersound)
{
- Console.WriteLine("-----------------------FRAME-----------------------");
if (_tracer.Enabled)
{
cpu.TraceCallback = s => _tracer.Put(s);
@@ -71,12 +83,77 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
_lagcount++;
}
-
}
public void RunCPUCycle()
{
- cpu_cycle++;
+ if (slow_countdown==0)
+ {
+ cpu_cycle++;
+ }
+ else
+ {
+ slow_countdown--;
+ }
+
+ if (p1_is_lightgun)
+ {
+ if (lg_1_counting_down > 0)
+ {
+ lg_1_counting_down--;
+ if (lg_1_counting_down == 0 && lg_1_counting_down_2 > 0)
+ {
+ lg_1_trigger_hit = 0;
+ lg_1_counting_down = 454;
+ lg_1_counting_down_2--;
+ }
+
+ if (lg_1_counting_down < 424)
+ {
+ lg_1_trigger_hit = 0x80;
+ }
+ }
+
+ if ((maria.scanline - 20) == (p1_lightgun_y - 4))
+ {
+ if (maria.cycle == (132 + p1_lightgun_x))
+ {
+ // return true 64 cycles into the future
+ lg_1_counting_down = 64;
+ lg_1_counting_down_2 = 9;
+ }
+ }
+ }
+
+ if (p2_is_lightgun)
+ {
+ if (lg_2_counting_down > 0)
+ {
+ lg_2_counting_down--;
+ if (lg_2_counting_down == 0 && lg_2_counting_down_2 > 0)
+ {
+ lg_2_trigger_hit = 0;
+ lg_2_counting_down = 454;
+ lg_2_counting_down_2--;
+ }
+
+ if (lg_2_counting_down < 424)
+ {
+ lg_2_trigger_hit = 0x80;
+ }
+ }
+
+ if ((maria.scanline - 20) == (p2_lightgun_y - 4))
+ {
+ if (maria.cycle == (132 + p2_lightgun_x))
+ {
+ // return true 64 cycles into the future
+ lg_2_counting_down = 64;
+ lg_2_counting_down_2 = 9;
+ }
+ }
+ }
+
tia._hsyncCnt++;
tia._hsyncCnt %= 454;
// do the audio sampling
@@ -86,11 +163,10 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
// tick the m6532 timer, which is still active although not recommended to use
- m6532_cycle++;
- if (m6532_cycle== 4)
+ // also it runs off of the cpu cycle timer
+ if (cpu_cycle== 4)
{
m6532.Timer.Tick();
- m6532_cycle = 0;
}
if (cpu_cycle <= (2 + (slow_access ? 1 : 0)))
@@ -109,6 +185,13 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (!cpu_is_halted)
{
cpu.ExecuteOne();
+
+ // we need to stall the next cpu cycle from starting if the current one is a slow access
+ if (slow_access)
+ {
+ slow_access = false;
+ slow_countdown = 2;
+ }
}
else
{
@@ -131,32 +214,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
cpu_is_halted = false;
}
}
-
- // determine if the next access will be fast or slow
- if ((cpu.PC & 0xFCE0) == 0)
- {
- // return TIA registers or control register if it is still unlocked
- if ((A7800_control_register & 0x1) == 0)
- {
- slow_access = false;
- }
- else
- {
- slow_access = true;
- }
- }
- else if ((cpu.PC & 0xFF80) == 0x280)
- {
- slow_access = true;
- }
- else if ((cpu.PC & 0xFE80) == 0x480)
- {
- slow_access = true;
- }
- else
- {
- slow_access = false;
- }
}
public void GetControllerState(IController controller)
@@ -171,13 +228,15 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
p2_fire_2x = _controllerDeck.ReadFire2_2x(controller);
p1_is_2button = _controllerDeck.Is_2_button1(controller);
p2_is_2button = _controllerDeck.Is_2_button2(controller);
+ p1_is_lightgun = _controllerDeck.Is_LightGun1(controller, out p1_lightgun_x, out p1_lightgun_y);
+ p2_is_lightgun = _controllerDeck.Is_LightGun2(controller, out p2_lightgun_x, out p2_lightgun_y);
}
public void GetConsoleState(IController controller)
{
byte result = 0;
- if (controller.IsPressed("Right Difficulty"))
+ if (controller.IsPressed("Toggle Right Difficulty"))
{
if (!right_was_pressed)
{
@@ -192,7 +251,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
result |= (byte)((right_toggle ? 1 : 0) << 7);
}
- if (controller.IsPressed("Left Difficulty"))
+ if (controller.IsPressed("Toggle Left Difficulty"))
{
if (!left_was_pressed)
{
@@ -225,7 +284,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
public int Frame => _frame;
- public string SystemId => "A7800";
+ public string SystemId => "A78";
public bool DeterministicEmulation { get; set; }
@@ -244,5 +303,46 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
tia = null;
m6532 = null;
}
+
+
+ #region Video provider
+
+ public int _frameHz = 60;
+ public int _screen_width = 320;
+ public int _screen_height = 263;
+ public int _vblanklines = 20;
+
+ public int[] _vidbuffer;
+
+ public int[] GetVideoBuffer()
+ {
+ if (_syncSettings.Filter != "None")
+ {
+ apply_filter();
+ }
+ return _vidbuffer;
+ }
+
+ public int VirtualWidth => 320;
+ public int VirtualHeight => _screen_height - _vblanklines;
+ public int BufferWidth => 320;
+ public int BufferHeight => _screen_height - _vblanklines;
+ public int BackgroundColor => unchecked((int)0xff000000);
+ public int VsyncNumerator => _frameHz;
+ public int VsyncDenominator => 1;
+
+ public void apply_filter()
+ {
+
+ }
+
+ public static Dictionary ValidFilterTypes = new Dictionary
+ {
+ { "None", "None"},
+ { "NTSC", "NTSC"},
+ { "Pal", "Pal"}
+ };
+
+ #endregion
}
}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IMemoryDomains.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IMemoryDomains.cs
index 551b4d5be1..ce29d7ba3f 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IMemoryDomains.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IMemoryDomains.cs
@@ -44,28 +44,25 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
1),
new MemoryDomainDelegate(
"Ram Block 0",
- 0xB0,
+ 0xC0,
MemoryDomain.Endian.Little,
addr => RAM[addr+0x840],
(addr, value) => RAM[addr+0x840] = value,
- 1
- ),
+ 1),
new MemoryDomainDelegate(
"Ram Block 1",
- 0xB0,
+ 0xC0,
MemoryDomain.Endian.Little,
addr => RAM[addr+0x940],
(addr, value) => RAM[addr+0x940] = value,
- 1
- ),
+ 1),
new MemoryDomainDelegate(
"System Bus",
0X10000,
MemoryDomain.Endian.Little,
addr => PeekSystemBus(addr),
(addr, value) => PokeSystemBus(addr, value),
- 1
- )
+ 1)
};
MemoryDomains = new MemoryDomainList(domains);
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.ISettable.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.ISettable.cs
index 7f646316af..06e2ae1273 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.ISettable.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.ISettable.cs
@@ -1,4 +1,6 @@
using System;
+using System.ComponentModel;
+
using Newtonsoft.Json;
using BizHawk.Common;
@@ -32,7 +34,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
private A7800Settings _settings = new A7800Settings();
- private A7800SyncSettings _syncSettings = new A7800SyncSettings();
+ public A7800SyncSettings _syncSettings = new A7800SyncSettings();
public class A7800Settings
{
@@ -46,6 +48,17 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
private string _port1 = A7800HawkControllerDeck.DefaultControllerName;
private string _port2 = A7800HawkControllerDeck.DefaultControllerName;
+ private string _Filter = "None";
+
+ [JsonIgnore]
+ public string Filter
+ {
+ get { return _Filter; }
+ set
+ {
+ _Filter = value;
+ }
+ }
[JsonIgnore]
public string Port1
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IStatable.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IStatable.cs
index deabc35700..d438ce8a87 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IStatable.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.IStatable.cs
@@ -70,13 +70,13 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
ser.Sync("cycle", ref cycle);
ser.Sync("cpu_cycle", ref cpu_cycle);
- ser.Sync("m6532_cycle", ref m6532_cycle);
ser.Sync("cpu_is_haltable", ref cpu_is_haltable);
ser.Sync("cpu_is_halted", ref cpu_is_halted);
ser.Sync("cpu_halt_pending", ref cpu_halt_pending);
ser.Sync("cpu_resume_pending", ref cpu_resume_pending);
ser.Sync("slow_access", ref slow_access);
+ ser.Sync("slow_access", ref slow_countdown);
ser.Sync("small flag", ref small_flag);
ser.Sync("pal kara", ref PAL_Kara);
ser.Sync("Cart RAM", ref cart_RAM);
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
index dcf2f6c921..28186d30c5 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800Hawk.cs
@@ -13,8 +13,8 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
isPorted: false,
isReleased: true)]
[ServiceNotApplicable(typeof(ISettable<,>), typeof(IDriveLight))]
- public partial class A7800Hawk : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable, IRegionable,
- ISettable
+ public partial class A7800Hawk : IEmulator, ISaveRam, IDebuggable, IStatable, IInputPollable,
+ IRegionable, IBoardInfo, ISettable
{
// this register selects between 2600 and 7800 mode in the A7800
// however, we already have a 2600 emulator so this core will only be loading A7800 games
@@ -76,7 +76,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
_settings = (A7800Settings)settings ?? new A7800Settings();
_syncSettings = (A7800SyncSettings)syncSettings ?? new A7800SyncSettings();
-
_controllerDeck = new A7800HawkControllerDeck(_syncSettings.Port1, _syncSettings.Port2);
byte[] highscoreBios = comm.CoreFileProvider.GetFirmware("A78", "Bios_HSC", false, "Some functions may not work without the high score BIOS.");
@@ -173,7 +172,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
s_mapper = "0";
}
-
}
else
{
@@ -206,18 +204,18 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
// set up palette and frame rate
if (_isPAL)
{
- maria._frameHz = 50;
- maria._screen_width = 320;
- maria._screen_height = 313;
- maria._vblanklines = 20;
+ _frameHz = 50;
+ _screen_width = 320;
+ _screen_height = 313;
+ _vblanklines = 20;
maria._palette = PALPalette;
}
else
{
- maria._frameHz = 60;
- maria._screen_width = 320;
- maria._screen_height = 263;
- maria._vblanklines = 20;
+ _frameHz = 60;
+ _screen_width = 320;
+ _screen_height = 263;
+ _vblanklines = 20;
maria._palette = NTSCPalette;
}
@@ -225,7 +223,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
m6532.Core = this;
tia.Core = this;
- ser.Register(maria);
+ ser.Register(this);
ser.Register(tia);
ServiceProvider = ser;
@@ -233,9 +231,12 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
ser.Register(_tracer);
SetupMemoryDomains();
+ ser.Register(cpu);
HardReset();
}
+ public string BoardName => mapper.GetType().Name.Replace("Mapper", "");
+
public DisplayType Region => _isPAL ? DisplayType.PAL : DisplayType.NTSC;
private readonly A7800HawkControllerDeck _controllerDeck;
@@ -255,6 +256,8 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
RAM = new byte[0x1000];
cpu_cycle = 0;
+
+ _vidbuffer = new int[VirtualWidth * VirtualHeight];
}
private void ExecFetch(ushort addr)
@@ -284,6 +287,14 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
mapper = new MapperRampage();
}
+ if (m == "5")
+ {
+ mapper = new MapperFractalus();
+ }
+ if (m == "6")
+ {
+ mapper = new MapperFractalus();
+ }
mapper.Core = this;
}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllerDeck.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllerDeck.cs
index 3698015579..7c761c65b2 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllerDeck.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllerDeck.cs
@@ -27,7 +27,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
Definition = new ControllerDefinition
{
- Name = "A7800 Controller",
+ Name = Port1.Definition.Name,
BoolButtons = Port1.Definition.BoolButtons
.Concat(Port2.Definition.BoolButtons)
.Concat(new[]
@@ -35,9 +35,9 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
"Power",
"Reset",
"Select",
- "BW",
- "Left Difficulty", // better not put P# on these as they might not correspond to player numbers
- "Right Difficulty",
+ "BW",
+ "Toggle Left Difficulty", // better not put P# on these as they might not correspond to player numbers
+ "Toggle Right Difficulty",
"Pause"
})
.ToList()
@@ -90,6 +90,16 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return Port2.Is_2_button(c);
}
+ public bool Is_LightGun1(IController c, out float lightgun_x, out float lightgun_y)
+ {
+ return Port1.Is_LightGun(c, out lightgun_x, out lightgun_y);
+ }
+
+ public bool Is_LightGun2(IController c, out float lightgun_x, out float lightgun_y)
+ {
+ return Port2.Is_LightGun(c, out lightgun_x, out lightgun_y);
+ }
+
public ControllerDefinition Definition { get; }
public void SyncState(Serializer ser)
@@ -127,5 +137,4 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
public static string DefaultControllerName => typeof(StandardController).DisplayName();
}
-
}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllers.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllers.cs
index cdf1040ffc..2b29b747d2 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllers.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/A7800HawkControllers.cs
@@ -21,6 +21,8 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
bool Is_2_button(IController c);
+ bool Is_LightGun(IController c, out float x, out float y);
+
ControllerDefinition Definition { get; }
void SyncState(Serializer ser);
@@ -60,6 +62,13 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return false;
}
+ public bool Is_LightGun(IController c, out float x, out float y)
+ {
+ x = -1;
+ y = -1;
+ return false;
+ }
+
public ControllerDefinition Definition { get; }
public void SyncState(Serializer ser)
@@ -78,6 +87,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
PortNum = portNum;
Definition = new ControllerDefinition
{
+ Name = "Atari 2600 Basic Controller",
BoolButtons = BaseDefinition
.Select(b => "P" + PortNum + " " + b)
.ToList()
@@ -125,6 +135,13 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return false;
}
+ public bool Is_LightGun(IController c, out float x, out float y)
+ {
+ x = -1;
+ y = -1;
+ return false;
+ }
+
public ControllerDefinition Definition { get; }
public void SyncState(Serializer ser)
@@ -134,7 +151,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
private static readonly string[] BaseDefinition =
{
- "U", "D", "L", "R", "Fire"
+ "Up", "Down", "Left", "Right", "Trigger"
};
private static byte[] HandControllerButtons =
@@ -154,6 +171,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
PortNum = portNum;
Definition = new ControllerDefinition
{
+ Name = "Atari 7800 ProLine Joystick Controller",
BoolButtons = BaseDefinition
.Select(b => "P" + PortNum + " " + b)
.ToList()
@@ -210,6 +228,13 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
return true;
}
+ public bool Is_LightGun(IController c, out float x, out float y)
+ {
+ x = -1;
+ y = -1;
+ return false;
+ }
+
public ControllerDefinition Definition { get; }
public void SyncState(Serializer ser)
@@ -219,7 +244,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
private static readonly string[] BaseDefinition =
{
- "U", "D", "L", "R", "Fire", "Fire2"
+ "Up", "Down", "Left", "Right", "Trigger", "Trigger 2"
};
private static byte[] HandControllerButtons =
@@ -230,4 +255,75 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
0x0, // Right
};
}
-}
+
+
+ [DisplayName("Light Gun Controller")]
+ public class LightGunController : IPort
+ {
+ public LightGunController(int portNum)
+ {
+ PortNum = portNum;
+ Definition = new ControllerDefinition
+ {
+ Name = "Light Gun Controller",
+ BoolButtons = BaseDefinition
+ .Select(b => "P" + PortNum + " " + b)
+ .ToList(),
+ FloatControls = { "P" + PortNum + " X", "P" + PortNum + " Y" },
+ FloatRanges = { new[] { 1.0f, 160, 320.0f }, new[] { 1.0f, 121, 242.0f } }
+ };
+ }
+
+ public int PortNum { get; }
+
+ public byte Read(IController c)
+ {
+ byte result = 0xE;
+ if (c.IsPressed(Definition.BoolButtons[0]))
+ {
+ result |= 0x1;
+ }
+
+ if (PortNum == 1)
+ {
+ result = (byte)(result << 4);
+ }
+
+ return result;
+ }
+
+ public byte ReadFire(IController c)
+ {
+ return 0x80;
+ }
+
+ public byte ReadFire2x(IController c)
+ {
+ return 0; // only applicable for 2 button mode
+ }
+
+ public bool Is_2_button(IController c)
+ {
+ return false;
+ }
+
+ public bool Is_LightGun(IController c, out float x, out float y)
+ {
+ x = c.GetFloat(Definition.FloatControls[0]);
+ y = c.GetFloat(Definition.FloatControls[1]);
+ return true;
+ }
+
+ public ControllerDefinition Definition { get; }
+
+ public void SyncState(Serializer ser)
+ {
+ // Nothing todo, I think
+ }
+
+ private static readonly string[] BaseDefinition =
+ {
+ "Trigger"
+ };
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/M6532.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/M6532.cs
index 6ead2370e3..50798c8fbc 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/M6532.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/M6532.cs
@@ -6,7 +6,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
// Emulates the M6532 RIOT Chip
public class M6532
{
-
public A7800Hawk Core { get; set; }
public byte _ddRa = 0x00;
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperDefault.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperDefault.cs
index 44c0513abf..509c6c2e00 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperDefault.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperDefault.cs
@@ -85,7 +85,5 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
WriteMemory(addr, value);
}
-
-
}
}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperFractalus.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperFractalus.cs
new file mode 100644
index 0000000000..160b2a7679
--- /dev/null
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Mappers/MapperFractalus.cs
@@ -0,0 +1,108 @@
+using BizHawk.Common;
+using BizHawk.Common.NumberExtensions;
+using System;
+
+namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
+{
+ // Rescue on Fractulus has unique RAM mapping
+ public class MapperFractalus : MapperBase
+ {
+ public byte[] RAM = new byte[0x800];
+
+ public override byte ReadMemory(ushort addr)
+ {
+ if (addr >=0x1000 && addr < 0x1800)
+ {
+ //could be hsbios RAM here
+ if (Core._hsbios != null)
+ {
+ return Core._hsram[addr - 0x1000];
+ }
+ return 0xFF;
+ }
+ else if (addr < 0x4000)
+ {
+ // could be either RAM mirror or ROM
+ if (addr >= 0x3000 && Core._hsbios != null)
+ {
+ return Core._hsbios[addr - 0x3000];
+ }
+ else
+ {
+ return Core.RAM[0x800 + addr & 0x7FF];
+ }
+ }
+ else
+ {
+ // cartridge and other OPSYS
+ if ((Core._rom.Length >= 0x10000 - addr) && Core.A7800_control_register.Bit(2))
+ {
+ return Core._rom[Core._rom.Length - (0x10000 - addr)];
+ }
+ else if (addr >= (0x10000-Core._bios.Length) && !Core.A7800_control_register.Bit(2))
+ {
+ return Core._bios[addr - (0x10000 - Core._bios.Length)];
+ }
+ else if (addr >= 0x4000 && addr <0x5000)
+ {
+ int temp_ret_1 = ((addr >> 8) & 0xE) >> 1;
+ int temp_ret_2 = addr & 0xFF;
+
+ return RAM[(temp_ret_1 << 8) + temp_ret_2];
+ }
+ else
+ {
+ return 0x00;
+ }
+ }
+ }
+
+ public override byte PeekMemory(ushort addr)
+ {
+ return ReadMemory(addr);
+ }
+
+ public override void WriteMemory(ushort addr, byte value)
+ {
+ if (addr >= 0x1000 && addr < 0x1800)
+ {
+ //could be hsbios RAM here
+ if (Core._hsbios != null)
+ {
+ Core._hsram[addr - 0x1000] = value;
+ }
+ }
+ else if (addr < 0x4000)
+ {
+ // could be either RAM mirror or ROM
+ if (addr >= 0x3000 && Core._hsbios != null)
+ {
+ }
+ else
+ {
+ Core.RAM[0x800 + addr & 0x7FF] = value;
+ }
+ }
+ else
+ {
+ if (addr >= 0x4000 && addr < 0x5000)
+ {
+ int temp_ret_1 = ((addr >> 8) & 0xE) >> 1;
+ int temp_ret_2 = addr & 0xFF;
+
+ RAM[(temp_ret_1 << 8) + temp_ret_2] = value;
+ }
+ }
+ }
+
+ public override void PokeMemory(ushort addr, byte value)
+ {
+ WriteMemory(addr, value);
+ }
+
+ public override void SyncState(Serializer ser)
+ {
+ ser.Sync("RAM", ref RAM, false);
+ }
+ }
+}
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Maria.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Maria.cs
index 377424577f..ae907bde03 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Maria.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Maria.cs
@@ -6,7 +6,7 @@ using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
// Emulates the Atari 7800 Maria graphics chip
- public class Maria : IVideoProvider
+ public class Maria
{
public A7800Hawk Core { get; set; }
@@ -25,32 +25,15 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
// technically there is no limit on the number of graphics objects, but since dma is automatically killed
// at the end of a scanline, we have an effective limit
- GFX_Object[,] GFX_Objects = new GFX_Object[2,128];
+ GFX_Object[] GFX_Objects = new GFX_Object[128];
+
+ public byte[,] line_ram = new byte[2, 320];
+ byte temp_check = 0;
int GFX_index = 0;
- public int _frameHz = 60;
- public int _screen_width = 320;
- public int _screen_height = 263;
- public int _vblanklines = 20;
-
- public int[] _vidbuffer;
public int[] _palette;
public int[] scanline_buffer = new int[320];
- public int[] bg_temp = new int[320]; // since BG color can be changed midscanline, we need to account for this here.
-
- public int[] GetVideoBuffer()
- {
- return _vidbuffer;
- }
-
- public int VirtualWidth => 320;
- public int VirtualHeight => _screen_height - _vblanklines;
- public int BufferWidth => 320;
- public int BufferHeight => _screen_height - _vblanklines;
- public int BackgroundColor => unchecked((int)0xff000000);
- public int VsyncNumerator => _frameHz;
- public int VsyncDenominator => 1;
// the Maria chip can directly access memory
public Func ReadMemory;
@@ -84,13 +67,20 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
public bool current_DLL_H16;
public bool current_DLL_H8;
- public bool overrun_dma;
public bool global_write_mode;
public int header_counter;
- public int[] header_counter_max = new int [2];
public int header_pointer; // since headers could be 4 or 5 bytes, we need a seperate pointer
+ // variables for drawing a pixel
+ int color;
+ int local_GFX_index;
+ int temp_palette;
+ int temp_bit_0;
+ int temp_bit_1;
+ int disp_mode;
+ int pixel;
+
// each frame contains 263 scanlines
// each scanline consists of 113.5 CPU cycles (fast access) which equates to 454 Maria cycles
// In total there are 29850.5 CPU cycles (fast access) in a frame
@@ -115,7 +105,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
Core.tia._hsyncCnt = 0;
Core.cpu.RDY = true;
}
-
}
// "The end of vblank is made up of a DMA startup plus a long shut down"
@@ -165,7 +154,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
// Now proceed with the remaining scanlines
// the first one is a pre-render line, since we didn't actually put any data into the buffer yet
- while (scanline < _screen_height)
+ while (scanline < Core._screen_height)
{
if (cycle == 28 && Core.Maria_regs[0x1C].Bit(6) && !Core.Maria_regs[0x1C].Bit(5))
{
@@ -187,20 +176,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
current_DLL_DLI = false;
}
- if (overrun_dma && sl_DMA_complete)
- {
- if (GFX_index == 1)
- {
- GFX_index = 0;
- }
- else
- {
- GFX_index = 1;
- }
-
- overrun_dma = false;
- }
-
if (DLI_countdown > 0)
{
DLI_countdown--;
@@ -210,15 +185,8 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
}
- if (cycle > 133)
+ if (cycle == 428 && !sl_DMA_complete && do_dma && (DMA_phase == DMA_GRAPHICS || DMA_phase == DMA_HEADER))
{
- bg_temp[cycle - 134] = Core.Maria_regs[0];
- }
-
-
- if (cycle == 453 && !sl_DMA_complete && do_dma && (DMA_phase == DMA_GRAPHICS || DMA_phase == DMA_HEADER))
- {
- overrun_dma = true;
//Console.WriteLine(scanline);
if (current_DLL_offset == 0)
{
@@ -234,31 +202,97 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
Core.RunCPUCycle();
+ //////////////////////////////////////////////
+ // Drawing Start
+ //////////////////////////////////////////////
+
+ if (cycle >=133 && cycle < 453 && scanline > 20)
+ {
+ pixel = cycle - 133;
+ local_GFX_index = (GFX_index == 1) ? 0 : 1; // whatever the current index is, we use the opposite
+ disp_mode = Core.Maria_regs[0x1C] & 0x3;
+
+ color = line_ram[local_GFX_index, pixel];
+
+ if (disp_mode == 0)
+ {
+ // direct read, nothing to do
+ }
+ else if (disp_mode == 2) // note: 1 is not used
+ {
+ // there is a trick here to be aware of.
+ // the renderer has no concept of objects, as it only has information on each pixel
+ // but objects are specified in groups of 8 pixels.
+ // however, since objects can only be placed in 160 resolution
+ // we can pick bits based on whether the current pixel is even or odd
+ temp_palette = color & 0x10;
+ temp_bit_0 = 0;
+ temp_bit_1 = 0;
+
+ if (pixel % 2 == 0)
+ {
+ temp_bit_1 = color & 2;
+ temp_bit_0 = (color & 8) >> 3;
+ }
+ else
+ {
+ temp_bit_1 = (color & 1) << 1;
+ temp_bit_0 = (color & 4) >> 2;
+ }
+
+ color = temp_palette + temp_bit_1 + temp_bit_0;
+ }
+ else
+ {
+ // same as above, we can use the pixel index to pick the bits out
+ if (pixel % 2 == 0)
+ {
+ color &= 0x1E;
+ }
+ else
+ {
+ color = (color & 0x1C) + ((color & 1) << 1);
+ }
+ }
+
+ if ((color & 0x3) != 0)
+ {
+ scanline_buffer[pixel] = _palette[Core.Maria_regs[color]];
+ }
+ else
+ {
+ scanline_buffer[pixel] = _palette[Core.Maria_regs[0x00]];
+ }
+
+ // send buffer to the video buffer
+ Core._vidbuffer[(scanline - 21) * 320 + pixel] = scanline_buffer[pixel];
+
+ // clear the line ram
+ line_ram[local_GFX_index, pixel] = 0;
+ }
+
+ //////////////////////////////////////////////
+ // Drawing End
+ //////////////////////////////////////////////
+
cycle++;
if (cycle == 454)
{
- if (scanline > 20)
- {
- // add the current graphics to the buffer
- draw_scanline(scanline - 21);
- }
scanline++;
+
cycle = 0;
Core.tia._hsyncCnt = 0;
Core.cpu.RDY = true;
// swap sacnline buffers
- if (!overrun_dma)
+ if (GFX_index == 1)
{
- if (GFX_index == 1)
- {
- GFX_index = 0;
- }
- else
- {
- GFX_index = 1;
- }
+ GFX_index = 0;
+ }
+ else
+ {
+ GFX_index = 1;
}
}
}
@@ -299,7 +333,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (DMA_phase_counter==1)
{
header_counter++;
- GFX_Objects[GFX_index, header_counter].addr = ReadMemory((ushort)(current_DLL_addr + header_pointer));
+ GFX_Objects[header_counter].addr = ReadMemory((ushort)(current_DLL_addr + header_pointer));
header_pointer++;
byte temp = ReadMemory((ushort)(current_DLL_addr + header_pointer));
// if there is no width, then we must have an extended header
@@ -324,12 +358,12 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
else
{
// we are in 5 Byte header mode (i.e. using the character map)
- GFX_Objects[GFX_index, header_counter].write_mode = temp.Bit(7);
+ GFX_Objects[header_counter].write_mode = temp.Bit(7);
global_write_mode = temp.Bit(7);
- GFX_Objects[GFX_index, header_counter].ind_mode = temp.Bit(5);
+ GFX_Objects[header_counter].ind_mode = temp.Bit(5);
header_pointer++;
temp = (byte)(ReadMemory((ushort)(current_DLL_addr + header_pointer)));
- GFX_Objects[GFX_index, header_counter].addr |= (ushort)(temp << 8);
+ GFX_Objects[header_counter].addr |= (ushort)(temp << 8);
header_pointer++;
temp = ReadMemory((ushort)(current_DLL_addr + header_pointer));
int temp_w = (temp & 0x1F); // this is the 2's complement of width (for reasons that escape me)
@@ -337,18 +371,18 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (temp_w == 0)
{
// important note here. In 5 byte mode, width 0 actually counts as 32
- GFX_Objects[GFX_index, header_counter].width = 32;
+ GFX_Objects[header_counter].width = 32;
}
else
{
temp_w = (temp_w - 1);
temp_w = (0x1F - temp_w);
- GFX_Objects[GFX_index, header_counter].width = (byte)(temp_w & 0x1F);
+ GFX_Objects[header_counter].width = (byte)(temp_w & 0x1F);
}
- GFX_Objects[GFX_index, header_counter].palette = (byte)((temp & 0xE0) >> 5);
+ GFX_Objects[header_counter].palette = (byte)((temp & 0xE0) >> 5);
header_pointer++;
- GFX_Objects[GFX_index, header_counter].h_pos = ReadMemory((ushort)(current_DLL_addr + header_pointer));
+ GFX_Objects[header_counter].h_pos = ReadMemory((ushort)(current_DLL_addr + header_pointer));
header_pointer++;
DMA_phase_next = DMA_GRAPHICS;
@@ -361,21 +395,21 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
int temp_w = (temp & 0x1F); // this is the 2's complement of width (for reasons that escape me)
temp_w = (temp_w - 1);
temp_w = (0x1F - temp_w);
- GFX_Objects[GFX_index, header_counter].width = (byte)(temp_w & 0x1F);
+ GFX_Objects[header_counter].width = (byte)(temp_w & 0x1F);
- GFX_Objects[GFX_index, header_counter].palette = (byte)((temp & 0xE0) >> 5);
+ GFX_Objects[header_counter].palette = (byte)((temp & 0xE0) >> 5);
header_pointer++;
temp = (byte)(ReadMemory((ushort)(current_DLL_addr + header_pointer)));
- GFX_Objects[GFX_index, header_counter].addr |= (ushort)(temp << 8);
+ GFX_Objects[header_counter].addr |= (ushort)(temp << 8);
header_pointer++;
- GFX_Objects[GFX_index, header_counter].h_pos = ReadMemory((ushort)(current_DLL_addr + header_pointer));
+ GFX_Objects[header_counter].h_pos = ReadMemory((ushort)(current_DLL_addr + header_pointer));
header_pointer++;
DMA_phase_next = DMA_GRAPHICS;
- GFX_Objects[GFX_index, header_counter].write_mode = global_write_mode;
+ GFX_Objects[header_counter].write_mode = global_write_mode;
- GFX_Objects[GFX_index, header_counter].ind_mode = false;
+ GFX_Objects[header_counter].ind_mode = false;
header_read_time = 8;
}
@@ -396,46 +430,48 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
ushort addr_t = 0;
// in 5 byte mode, we first have to check if we are in direct or indirect mode
- if (GFX_Objects[GFX_index, header_counter].ind_mode)
+ if (GFX_Objects[header_counter].ind_mode)
{
int ch_size = 0;
if (Core.Maria_regs[0x1C].Bit(4))
{
- graphics_read_time = 9 * GFX_Objects[GFX_index, header_counter].width;
+ graphics_read_time = 9 * GFX_Objects[header_counter].width;
ch_size = 2;
- GFX_Objects[GFX_index, header_counter].width *= 2;
}
else
{
- graphics_read_time = 6 * GFX_Objects[GFX_index, header_counter].width;
+ graphics_read_time = 6 * GFX_Objects[header_counter].width;
ch_size = 1;
}
// the address here is specified by CHAR_BASE maria registers
// ushort addr = (ushort)(GFX_Objects[header_counter].addr & 0xFF);
- for (int i = 0; i < GFX_Objects[GFX_index, header_counter].width; i++)
+ for (int i = 0; i < GFX_Objects[header_counter].width; i++)
{
- addr_t = ReadMemory((ushort)(GFX_Objects[GFX_index, header_counter].addr + i));
+ addr_t = ReadMemory((ushort)(GFX_Objects[header_counter].addr + i));
addr_t |= (ushort)((Core.Maria_regs[0x14] + current_DLL_offset) << 8);
if (((current_DLL_H16 && addr_t.Bit(12)) || (current_DLL_H8 && addr_t.Bit(11))) && (addr_t >= 0x8000))
{
if (i * ch_size < 128)
{
- GFX_Objects[GFX_index, header_counter].obj[i * ch_size] = 0;
+ GFX_Objects[header_counter].obj[i * ch_size] = 0;
}
if ((i * ch_size + 1 < 128) && (ch_size == 2))
{
- GFX_Objects[GFX_index, header_counter].obj[i * ch_size + 1] = 0;
+ GFX_Objects[header_counter].obj[i * ch_size + 1] = 0;
}
- if (ch_size == 1)
+ if (i != 0)
{
- graphics_read_time -= 6;
- }
- else
- {
- graphics_read_time -= 9;
+ if (ch_size == 1)
+ {
+ graphics_read_time -= 6;
+ }
+ else
+ {
+ graphics_read_time -= 9;
+ }
}
}
@@ -443,31 +479,37 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
{
if (i * ch_size < 128)
{
- GFX_Objects[GFX_index, header_counter].obj[i * ch_size] = ReadMemory(addr_t);
+ GFX_Objects[header_counter].obj[i * ch_size] = ReadMemory(addr_t);
+ fill_line_ram(GFX_Objects[header_counter].h_pos * 2, i, 0, ch_size, GFX_Objects[header_counter].obj[i * ch_size], GFX_Objects[header_counter].write_mode);
}
if (((i * ch_size + 1) < 128) && (ch_size == 2))
{
- GFX_Objects[GFX_index, header_counter].obj[i * ch_size + 1] = ReadMemory((ushort)(addr_t + 1));
+ GFX_Objects[header_counter].obj[i * ch_size + 1] = ReadMemory((ushort)(addr_t + 1));
+ fill_line_ram(GFX_Objects[header_counter].h_pos * 2, i, 1, ch_size, GFX_Objects[header_counter].obj[i * ch_size + 1], GFX_Objects[header_counter].write_mode);
}
}
}
}
else
{
- graphics_read_time = 3 * GFX_Objects[GFX_index, header_counter].width;
+ graphics_read_time = 3 * GFX_Objects[header_counter].width;
- for (int i = 0; i < GFX_Objects[GFX_index, header_counter].width; i++)
+ for (int i = 0; i < GFX_Objects[header_counter].width; i++)
{
- addr_t = (ushort)(GFX_Objects[GFX_index, header_counter].addr + (current_DLL_offset << 8) + i);
+ addr_t = (ushort)(GFX_Objects[header_counter].addr + (current_DLL_offset << 8) + i);
if (((current_DLL_H16 && addr_t.Bit(12)) || (current_DLL_H8 && addr_t.Bit(11))) && (addr_t >= 0x8000))
{
- GFX_Objects[GFX_index, header_counter].obj[i] = 0;
- graphics_read_time -= 3;
+ GFX_Objects[header_counter].obj[i] = 0;
+ if (i != 0)
+ {
+ graphics_read_time -= 3;
+ }
}
else
{
- GFX_Objects[GFX_index, header_counter].obj[i] = ReadMemory(addr_t);
+ GFX_Objects[header_counter].obj[i] = ReadMemory(addr_t);
+ fill_line_ram(GFX_Objects[header_counter].h_pos * 2, i, 0, 1, GFX_Objects[header_counter].obj[i], GFX_Objects[header_counter].write_mode);
}
}
}
@@ -485,18 +527,20 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (DMA_phase == DMA_SHUTDOWN_OTHER)
{
- Core.cpu_resume_pending = true;
- sl_DMA_complete = true;
- current_DLL_offset -= 1; // this is reduced by one for each scanline, which changes where graphics are fetched
- header_counter_max[GFX_index] = header_counter;
- header_counter = -1;
- header_pointer = 0;
+ if (DMA_phase_counter == 6)
+ {
+ Core.cpu_resume_pending = true;
+ sl_DMA_complete = true;
+ current_DLL_offset -= 1; // this is reduced by one for each scanline, which changes where graphics are fetched
+ header_counter = -1;
+ header_pointer = 0;
+ }
return;
}
if (DMA_phase == DMA_SHUTDOWN_LAST)
{
- if (DMA_phase_counter==6)
+ if (DMA_phase_counter==12)
{
Core.cpu_resume_pending = true;
sl_DMA_complete = true;
@@ -515,7 +559,6 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
current_DLL_H16 = temp.Bit(6);
current_DLL_H8 = temp.Bit(5);
- header_counter_max[GFX_index] = header_counter;
header_counter = -1;
header_pointer = 0;
}
@@ -524,298 +567,84 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
}
- public void draw_scanline(int scanline)
+ public void fill_line_ram(int temp_start, int index, int doub_size, int ch_s, byte temp_byte, bool w_m)
{
- int local_start;
- int local_width;
- int local_palette;
- int index;
- int color;
- int local_GFX_index;
-
- local_GFX_index = (GFX_index == 1) ? 0 : 1; // whatever the current index is, we use the opposite
-
- int disp_mode = Core.Maria_regs[0x1C] & 0x3;
-
- for (int i = 0; i < 320; i++)
+ if (w_m)
{
- scanline_buffer[i] = _palette[bg_temp[i]];
- }
+ temp_start = temp_start + index * ch_s * 4 + doub_size * 4;
- for (int i = 0; i < header_counter_max[local_GFX_index]; i++)
- {
- local_start = GFX_Objects[local_GFX_index, i].h_pos;
- local_palette = GFX_Objects[local_GFX_index, i].palette;
-
- // the two different rendering paths are basically controlled by write mode
- if (GFX_Objects[local_GFX_index, i].write_mode)
+ for (int z = 0; z < 4; z++)
{
- if (disp_mode == 0)
+ if ((temp_start + z) % 512 < 320)
{
- local_width = GFX_Objects[local_GFX_index, i].width;
-
- for (int j = 0; j < local_width; j++)
+ if (z < 2)
{
- for (int k = 3; k >= 0; k--)
- {
- index = local_start * 2 + j * 4 + (3 - k);
-
- if (index > 511)
- {
- index -= 512;
- }
-
- if (index < 320)
- {
- color = GFX_Objects[local_GFX_index, i].obj[j];
-
- // this is now the color index (0-3) we choose from the palette
- if (k >= 2)
- {
- color = (((color >> 2) & 0x3) << 2) + ((color >> 6) & 0x3);
- }
- else
- {
- color = ((color & 0x3) << 2) + ((color >> 4) & 0x3);
- }
-
- if ((color != 0) && (color != 4) && (color != 8) && (color != 12)) // transparent
- {
- color = ((local_palette & 4) << 2) + color;
-
- color = Core.Maria_regs[color];
-
- scanline_buffer[index] = _palette[color];
- }
- }
- }
+ temp_check = (byte)((temp_byte & 0xC) + ((temp_byte >> 6) & 0x3));
}
- }
- else if (disp_mode == 2) // note: 1 is not used
- {
- local_width = GFX_Objects[local_GFX_index, i].width;
-
- for (int j = 0; j < local_width; j++)
+ else
{
- for (int k = 7; k >= 0; k--)
- {
- index = local_start * 4 + j * 8 + (7 - k);
-
- if (index > 511)
- {
- index -= 512;
- }
-
- if (index < 320)
- {
- color = GFX_Objects[local_GFX_index, i].obj[j];
-
- // this is now the color index (0-3) we choose from the palette
- if (k >= 6)
- {
- color = ((color >> 6) & 0x2) + ((color >> 3) & 0x1);
- }
- else if (k >= 4)
- {
- color = ((color >> 5) & 0x2) + ((color >> 2) & 0x1);
-
- }
- else if (k >= 2)
- {
- color = ((color >> 4) & 0x2) + ((color >> 1) & 0x1);
- }
- else
- {
- color = ((color >> 3) & 0x2) + (color & 0x1);
- }
-
- if (color != 0) // transparent
- {
- color = ((local_palette & 4) << 2) + color;
-
- color = Core.Maria_regs[color];
-
- scanline_buffer[index] = _palette[color];
- }
- }
- }
+ temp_check = (byte)(((temp_byte & 0x3) << 2) + ((temp_byte >> 4) & 0x3));
}
- }
- else
- {
- local_width = GFX_Objects[local_GFX_index, i].width;
- for (int j = 0; j < local_width; j++)
+ if ((temp_check & 3) != 0)
{
- for (int k = 3; k >= 0; k--)
- {
- index = local_start * 2 + j * 4 + (3 - k);
-
- if (index > 511)
- {
- index -= 512;
- }
-
- if (index < 320)
- {
- color = GFX_Objects[local_GFX_index, i].obj[j];
- int temp_color = color;
-
- // this is now the color index (0-3) we choose from the palette
- if (k >= 3)
- {
- color = ((color >> 7) & 0x1);
- temp_color = (local_palette & 4) + ((temp_color >> 2) & 3);
- }
- else if (k >= 2)
- {
- color = ((color >> 6) & 0x1);
- temp_color = (local_palette & 4) + ((temp_color >> 2) & 3);
-
- }
- else if (k >= 1)
- {
- color = ((color >> 5) & 0x1);
- temp_color = (local_palette & 4) + (temp_color & 3);
- }
- else
- {
- color = ((color >> 4) & 0x1);
- temp_color = (local_palette & 4) + (temp_color & 3);
- }
-
- if (color != 0) // transparent
- {
- color = (temp_color << 2) + 2;
-
- color = Core.Maria_regs[color];
-
- scanline_buffer[index] = _palette[color];
- }
- }
- }
+ line_ram[GFX_index, (temp_start + z) % 512] = temp_check;
+ line_ram[GFX_index, (temp_start + z) % 512] += (byte)((GFX_Objects[header_counter].palette & 4) << 2);
}
- }
- }
- else
- {
- if (disp_mode == 0)
- {
- local_width = GFX_Objects[local_GFX_index, i].width;
-
- for (int j = 0; j < local_width; j++)
+ else if (Core.Maria_regs[0x1C].Bit(2))
{
- for (int k = 7; k >= 0; k--)
- {
- index = local_start * 2 + j * 8 + (7 - k);
-
- if (index > 511)
- {
- index -= 512;
- }
-
- if (index < 320)
- {
- color = GFX_Objects[local_GFX_index, i].obj[j];
-
- // this is now the color index (0-3) we choose from the palette
- if (k >= 6)
- {
- color = (color >> 6) & 0x3;
- }
- else if (k >= 4)
- {
- color = (color >> 4) & 0x3;
-
- }
- else if (k >= 2)
- {
- color = (color >> 2) & 0x3;
- }
- else
- {
- color = color & 0x3;
- }
-
- if (color != 0) // transparent
- {
- color = Core.Maria_regs[local_palette * 4 + color];
-
- scanline_buffer[index] = _palette[color];
- }
- }
- }
- }
- }
- else if (disp_mode == 2) // note: 1 is not used
- {
- local_width = GFX_Objects[local_GFX_index, i].width;
- // here the palette is determined by palette bit 2 only
- // hence only palette 0 or 4 is available
- local_palette = GFX_Objects[local_GFX_index, i].palette & 0x4;
-
- int temp_c0 = GFX_Objects[local_GFX_index, i].palette & 0x1;
- int temp_c1 = GFX_Objects[local_GFX_index, i].palette & 0x2;
-
- for (int j = 0; j < local_width; j++)
- {
- for (int k = 7; k >= 0; k--)
- {
- color = (GFX_Objects[local_GFX_index, i].obj[j] >> k) & 1;
- color = (color << 1) | ((k % 2 == 0) ? temp_c0 : temp_c1);
- index = local_start * 2 + j * 8 + (7 - k);
- if (index > 511) index -= 512;
-
- if (index < 320)
- {
- color = Core.Maria_regs[local_palette + color];
-
- scanline_buffer[index] = _palette[color];
- }
- }
- }
- }
- else
- {
- local_width = GFX_Objects[local_GFX_index, i].width;
-
- for (int j = 0; j < local_width; j++)
- {
- for (int k = 7; k >= 0; k--)
- {
- color = (GFX_Objects[local_GFX_index, i].obj[j] >> k) & 1;
- index = local_start * 2 + j * 8 + (7 - k);
- if (index > 511) index -= 512;
- if (index < 320 && color == 1)
- {
- color = Core.Maria_regs[local_palette * 4 + 2]; // automatically use index 2 here
-
- scanline_buffer[index] = _palette[color];
- }
- }
+ // kangaroo mode, override transparency with zero
+ line_ram[GFX_index, (temp_start + z) % 512] = 0;
}
}
}
}
-
- // send buffer to the video buffer
- for (int i = 0; i < 320; i ++)
+ else
{
- _vidbuffer[scanline * 320 + i] = scanline_buffer[i];
+ temp_start = temp_start + index * ch_s * 8 + doub_size * 8;
+
+ for (int z = 0; z < 8; z++)
+ {
+ if (((temp_start + z) % 512) < 320)
+ {
+ if (z < 2)
+ {
+ temp_check = (byte)((temp_byte >> 6) & 0x3);
+ }
+ else if (z < 4)
+ {
+ temp_check = (byte)((temp_byte >> 4) & 0x3);
+ }
+ else if (z < 6)
+ {
+ temp_check = (byte)((temp_byte >> 2) & 0x3);
+ }
+ else
+ {
+ temp_check = (byte)(temp_byte & 0x3);
+ }
+
+ if (temp_check != 0)
+ {
+ line_ram[GFX_index, (temp_start + z) % 512] = temp_check;
+ line_ram[GFX_index, (temp_start + z) % 512] += (byte)(GFX_Objects[header_counter].palette << 2);
+ }
+ else if (Core.Maria_regs[0x1C].Bit(2))
+ {
+ // kangaroo mode, override transparency with zero
+ line_ram[GFX_index, (temp_start + z) % 512] = 0;
+ }
+ }
+ }
}
}
public void Reset()
{
- _vidbuffer = new int[VirtualWidth * VirtualHeight];
-
- for (int j = 0; j < 2; j++)
+ for (int i = 0; i < 128; i++)
{
- for (int i = 0; i < 128; i++)
- {
- GFX_Objects[j, i].obj = new byte[128];
- }
- }
+ GFX_Objects[i].obj = new byte[128];
+ }
}
// Most of the Maria state is captured in Maria Regs in the core
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/MemoryMap.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/MemoryMap.cs
index f8229d38c5..553613d004 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/MemoryMap.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/MemoryMap.cs
@@ -34,6 +34,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
else
{
+ slow_access = true;
return tia.ReadMemory((ushort)(addr & 0x1F), false);
}
}
@@ -45,16 +46,17 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
else
{
- return 0xFF; // TODO: What if Maria is off?
+ return 0x80; // TODO: What if Maria is off?
}
}
else if ((addr & 0xFF80) == 0x280)
{
- //return regs_6532[addr & 0x1F];
+ slow_access = true;
return m6532.ReadMemory(addr, false);
}
else if ((addr & 0xFE80) == 0x480)
{
+ slow_access = true;
return RAM_6532[addr & 0x7F];
}
else if ((addr >= 0x1800) && (addr < 0x2800))
@@ -105,10 +107,11 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
// return TIA registers or control register if it is still unlocked
if ((A7800_control_register & 0x1) == 0)
{
- A7800_control_register = value;
+ A7800_control_register = value;
}
else
{
+ slow_access = true;
tia.WriteMemory((ushort)(addr & 0x1F), value, false);
}
}
@@ -140,10 +143,12 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
}
else if ((addr & 0xFF80) == 0x280)
{
+ slow_access = true;
m6532.WriteMemory(addr, value);
}
else if ((addr & 0xFE80) == 0x480)
{
+ slow_access = true;
RAM_6532[addr & 0x7F] = value;
}
else if ((addr >= 0x1800) && (addr < 0x2800))
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Readme.txt b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Readme.txt
index 84fa199c5f..7a936ddbfe 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Readme.txt
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/Readme.txt
@@ -1 +1,8 @@
-todo:
+TODO:
+Pokey: used in Ball Blazer and Commando as well as some homebrew
+A2600 mode: used in diagnostic cart
+Color Artifacting: used in Tower Toppler
+
+Emulation:
+Check timer in One on One Basketball
+Water Ski tow line glitch, does it happen on console?
diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/TIA_Sound/TIA.cs b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/TIA_Sound/TIA.cs
index 1a9b012e4b..ee7212933a 100644
--- a/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/TIA_Sound/TIA.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Atari/A7800Hawk/TIA_Sound/TIA.cs
@@ -33,7 +33,7 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
_capChargeStart = 0;
_capCharging = false;
AudioClocks = 0;
- _spf = (Core.maria._frameHz > 55) ? 740 : 880;
+ _spf = (Core._frameHz > 55) ? 740 : 880;
_doTicks = false;
}
@@ -154,7 +154,14 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (!Core.p1_is_2button)
{
- return Core.p1_fire;
+ if (!Core.p1_is_lightgun)
+ {
+ return Core.p1_fire;
+ }
+ else
+ {
+ return Core.lg_1_trigger_hit;
+ }
}
else if ((Core.m6532._outputB & 0x04) != 0 || (Core.m6532._ddRb & 0x04) != 0x04)
{
@@ -169,10 +176,16 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
if (maskedAddr == 0x0D) // INPT5
{
Core._islag = false;
-
if (!Core.p2_is_2button)
{
- return Core.p2_fire;
+ if (!Core.p2_is_lightgun)
+ {
+ return Core.p2_fire;
+ }
+ else
+ {
+ return Core.lg_2_trigger_hit;
+ }
}
else if ((Core.m6532._outputB & 0x10) != 0 || (Core.m6532._ddRb & 0x10) != 0x10)
{
diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Sameboy.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Sameboy.cs
index e47f0743f5..69695f892f 100644
--- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Sameboy.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Sameboy.cs
@@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy
"https://sameboy.github.io/", false)]
public class Sameboy : WaterboxCore,
IGameboyCommon, ISaveRam,
- ISettable