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 + ISettable { /// /// the nominal length of one frame @@ -38,20 +38,20 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy private bool _sgb; [CoreConstructor("SGB")] - public Sameboy(byte[] rom, CoreComm comm, SyncSettings syncSettings, bool deterministic) - : this(rom, comm, true, syncSettings, deterministic) + public Sameboy(byte[] rom, CoreComm comm, Settings settings, SyncSettings syncSettings, bool deterministic) + : this(rom, comm, true, settings, syncSettings, deterministic) { } [CoreConstructor("GB")] - public Sameboy(CoreComm comm, byte[] rom, SyncSettings syncSettings, bool deterministic) - : this(rom, comm, false, syncSettings, deterministic) + public Sameboy(CoreComm comm, byte[] rom, Settings settings, SyncSettings syncSettings, bool deterministic) + : this(rom, comm, false, settings, syncSettings, deterministic) { } - public Sameboy(byte[] rom, CoreComm comm, bool sgb, SyncSettings syncSettings, bool deterministic) + public Sameboy(byte[] rom, CoreComm comm, bool sgb, Settings settings, SyncSettings syncSettings, bool deterministic) : base(comm, new Configuration { - DefaultWidth = sgb ? 256 : 160, - DefaultHeight = sgb ? 224 : 144, + DefaultWidth = sgb && (settings == null || settings.ShowSgbBorder) ? 256 : 160, + DefaultHeight = sgb && (settings == null || settings.ShowSgbBorder) ? 224 : 144, MaxWidth = sgb ? 256 : 160, MaxHeight = sgb ? 224 : 144, MaxSamples = 1024, @@ -74,6 +74,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy _sgb = sgb; Console.WriteLine("Automaticly detected CGB to " + _cgb); _syncSettings = syncSettings ?? new SyncSettings(); + _settings = settings ?? new Settings(); var bios = _syncSettings.UseRealBIOS && !sgb ? comm.CoreFileProvider.GetFirmware(_cgb ? "GBC" : "GB", "World", true) @@ -179,8 +180,31 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy #region ISettable + private Settings _settings; private SyncSettings _syncSettings; + public class Settings + { + [DisplayName("Show SGB Border")] + [DefaultValue(true)] + public bool ShowSgbBorder { get; set; } + + public Settings Clone() + { + return (Settings)MemberwiseClone(); + } + + public static bool NeedsReboot(Settings x, Settings y) + { + return false; + } + + public Settings() + { + SettingsUtil.SetDefaultValues(this); + } + } + public class SyncSettings { [DisplayName("Initial Time")] @@ -213,9 +237,9 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy } } - public object GetSettings() + public Settings GetSettings() { - return null; + return _settings.Clone(); } public SyncSettings GetSyncSettings() @@ -223,9 +247,11 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy return _syncSettings.Clone(); } - public bool PutSettings(object o) + public bool PutSettings(Settings o) { - return false; + var ret = Settings.NeedsReboot(_settings, o); + _settings = o; + return ret; } public bool PutSyncSettings(SyncSettings o) @@ -246,10 +272,29 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy }; } - protected override void FrameAdvancePost() + protected unsafe override void FrameAdvancePost() { if (_scanlineCallback != null && _scanlineCallbackLine == -1) _scanlineCallback(_core.GetIoReg(0x40)); + + if (_sgb && !_settings.ShowSgbBorder) + { + fixed(int *buff = _videoBuffer) + { + int* dst = buff; + int* src = buff + (224 - 144) / 2 * 256 + (256 - 160) / 2; + for (int j = 0; j < 144; j++) + { + for (int i = 0; i < 160; i++) + { + *dst++ = *src++; + } + src += 256 - 160; + } + } + BufferWidth = 160; + BufferHeight = 144; + } } protected override void LoadStateBinaryInternal(BinaryReader reader) diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper035.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper035.cs deleted file mode 100644 index 0e4ed7107d..0000000000 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper035.cs +++ /dev/null @@ -1,133 +0,0 @@ -using BizHawk.Common; -using BizHawk.Common.NumberExtensions; - -namespace BizHawk.Emulation.Cores.Nintendo.NES -{ - public sealed class Mapper035 : NES.NESBoardBase - { - private ByteBuffer reg = new ByteBuffer(8); - private ByteBuffer chr = new ByteBuffer(8); - - private int prg_bank_mask_8k; - private int chr_bank_mask_1k; - - private bool IRQa; - private int IRQCount; - - public override bool Configure(NES.EDetectionOrigin origin) - { - switch (Cart.board_type) - { - case "MAPPER035": - break; - default: - return false; - } - - prg_bank_mask_8k = Cart.prg_size / 8 - 1; - chr_bank_mask_1k = Cart.chr_size / 1 - 1; - SetMirrorType(Cart.pad_h, Cart.pad_v); - return true; - } - - public override void Dispose() - { - reg.Dispose(); - chr.Dispose(); - base.Dispose(); - } - - public override void SyncState(Serializer ser) - { - ser.Sync("reg", ref reg); - ser.Sync("chr", ref chr); - ser.Sync("IRQa", ref IRQa); - ser.Sync("IRQCount", ref IRQCount); - base.SyncState(ser); - } - - public override byte ReadEXP(int addr) - { - if (addr == 0x800) - { - return 0x20; - } - - return base.ReadEXP(addr); - } - - private void SetMirror() - { - SetMirrorType(reg[3].Bit(0) ? EMirrorType.Horizontal : EMirrorType.Vertical); - } - - public override void WritePRG(int addr, byte value) - { - addr += 0x8000; - switch (addr) - { - case 0x8000: reg[0] = value; break; - case 0x8001: reg[1] = value; break; - case 0x8002: reg[2] = value; break; - case 0x9000: chr[0] = value; break; - case 0x9001: chr[1] = value; break; - case 0x9002: chr[2] = value; break; - case 0x9003: chr[3] = value; break; - case 0x9004: chr[4] = value; break; - case 0x9005: chr[5] = value; break; - case 0x9006: chr[6] = value; break; - case 0x9007: chr[7] = value; break; - - case 0xC002: IRQa = false; IRQSignal = false; break; - case 0xC005: IRQCount = value; break; - case 0xC003: IRQa = true; break; - - case 0xD001: reg[3] = value; - SetMirror(); break; - } - } - - public override byte ReadPRG(int addr) - { - int index = addr >> 13; - - int bank = reg[index]; - if (index == 3) { bank = 0xFF; } - bank &= prg_bank_mask_8k; - - return ROM[(bank << 13) + (addr & 0x1FFF)]; - } - - public override byte ReadPPU(int addr) - { - if (addr < 0x2000) - { - int index = addr >> 10; - int bank = chr[index]; - bank &= chr_bank_mask_1k; - - return VROM[(bank << 10) + (addr & 0x3FF)]; - } - - return base.ReadPPU(addr); - } - - public override void ClockCPU() - { - IrqHook(1); - } - - private void IrqHook(int a) - { - if (IRQa) - { - IRQCount += a; - if (IRQCount > 0x10000) - { - IRQSignal = true; - IRQa = false; - } - } - } - } -} diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper090.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper090.cs index c79cec18b4..296cf53d6d 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper090.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/Mapper090.cs @@ -33,6 +33,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES bool mapper_090 = false; bool mapper_209 = false; bool mapper_211 = false; + bool mapper_035 = false; bool nt_advanced_control = false; bool nt_ram_disable = false; @@ -67,6 +68,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES { switch (Cart.board_type) { + case "MAPPER035": + mapper_035 = true; + break; case "MAPPER090": case "UNIF_UNL-TEK90": mapper_090 = true; @@ -148,6 +152,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES ser.Sync("sram_prg", ref sram_prg); ser.Sync("ram_bank", ref ram_bank); + ser.Sync("mapper_035", ref mapper_035); ser.Sync("mapper_090", ref mapper_090); ser.Sync("mapper_209", ref mapper_209); ser.Sync("mapper_211", ref mapper_211); @@ -465,10 +470,24 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES SetMirrorType(EMirrorType.Horizontal); break; case 2: - SetMirrorType(EMirrorType.OneScreenA); + if (mapper_035) + { + SetMirrorType(EMirrorType.OneScreenB); + } + else + { + SetMirrorType(EMirrorType.OneScreenA); + } break; case 3: - SetMirrorType(EMirrorType.OneScreenB); + if (mapper_035) + { + SetMirrorType(EMirrorType.OneScreenA); + } + else + { + SetMirrorType(EMirrorType.OneScreenB); + } break; } break; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/TENGEN-800032.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/TENGEN-800032.cs index 7a59062a2a..9c17d9e76d 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/TENGEN-800032.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/TENGEN-800032.cs @@ -1,5 +1,6 @@ using BizHawk.Common; using BizHawk.Common.NumberExtensions; +using System; namespace BizHawk.Emulation.Cores.Nintendo.NES { @@ -25,6 +26,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES bool irq_mode; bool irq_reload_pending; int separator_counter; + int irq_countdown_2 = 0; + bool clock_scanline_irq; public override void Dispose() @@ -172,20 +175,20 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES case 0x4001: irq_mode = value.Bit(0); - if (irq_mode) irq_countdown = 12; + if (irq_mode) irq_countdown = 4; irq_reload_pending = true; break; case 0x6000: irq_enable = false; irq_pending = false; + irq_counter = 0; SyncIRQ(); break; case 0x6001: irq_enable = true; SyncIRQ(); break; - } } @@ -224,20 +227,79 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES { irq_counter = irq_reload + 1; irq_reload_pending = false; + + if (irq_counter == 0) + { + if (irq_enable) + { + irq_countdown_2 = 9; + } + } + } - else if (irq_counter == 0) + + irq_counter--; + if (irq_counter==0) + { + if (irq_enable) + { + irq_countdown_2 = 9; + } + + irq_counter = irq_reload + 1; + } + + if (irq_counter < 0) { irq_counter = irq_reload; } + /* + else if (irq_counter == 0) + { + + irq_counter = irq_reload; + if (irq_counter == 0) + { + if (irq_enable) + { + irq_countdown_2 = 9; + } + } + } else { irq_counter--; - if (irq_counter == 0 && irq_enable) + if (irq_enable) { - irq_pending = true; - SyncIRQ(); - } + + if (irq_counter==0) + irq_countdown_2 = 9; + } } + */ + } + + public override void ClockCPU() + { + + if (irq_mode == true) + { + irq_countdown--; + if (irq_countdown == 0) + { + ClockIRQ(); + irq_countdown = 4; + } + } + else + { + if (clock_scanline_irq) + { + clock_scanline_irq = false; + ClockIRQ(); + } + } + } public override void ClockPPU() @@ -245,14 +307,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES if (separator_counter > 0) separator_counter--; - if (irq_countdown > 0) + if (irq_countdown_2 > 0) { - irq_countdown--; - if (irq_countdown == 0) + irq_countdown_2--; + if (irq_countdown_2==0) { - ClockIRQ(); - if (irq_mode==true) - irq_countdown = 12; + irq_pending = true; + SyncIRQ(); } } } @@ -270,7 +331,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES else { separator_counter = 15; - irq_countdown = 11; + clock_scanline_irq = true; + } } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.cs index 7e97f907cc..0b937975f8 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.cs @@ -297,6 +297,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES ppur.status.cycle++; is_even_cycle = !is_even_cycle; + if (PPUON && ppur.status.cycle >= 257 && ppur.status.cycle <= 320 && 0 <= ppur.status.sl && ppur.status.sl <= 240) + { + reg_2003 = 0; + } + // Here we execute a CPU instruction if enough PPU cycles have passed // also do other things that happen at instruction level granularity cpu_stepcounter++; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.regs.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.regs.cs index 5e6865a382..332e4ab220 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.regs.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.regs.cs @@ -40,10 +40,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES show_obj_leftmost = (value >> 2) & 1; show_bg = (value >> 3) & 1; show_obj = (value >> 4) & 1; - intense_green = (value >> 5) & 1; intense_blue = (value >> 6) & 1; intense_red = (value >> 7) & 1; - intensity_lsl_6 = ((value >> 5) & 7)<<6; + intense_green = (value >> 5) & 1; + intensity_lsl_6 = ((value >> 5) & 7)<<6; } } } @@ -427,10 +427,33 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES //OAM DATA (write) void write_2004(byte value) { - if ((reg_2003 & 3) == 2) value &= 0xE3; //some of the OAM bits are unwired so we mask them out here - //otherwise we just write this value and move on to the next oam byte - OAM[reg_2003] = value; - reg_2003++; + if ((reg_2003 & 3) == 2) + { + //some of the OAM bits are unwired so we mask them out here + //otherwise we just write this value and move on to the next oam byte + value &= 0xE3; + } + if (0 <= ppur.status.sl && ppur.status.sl <= 240) + { + // don't write to OAM if the screen is on and we are in the active display area + // this impacts sprite evaluation + if (show_bg_new || show_obj_new) + { + // glitchy increment of OAM index + oam_index += 4; + } + else + { + OAM[reg_2003] = value; + reg_2003++; + } + } + else + { + OAM[reg_2003] = value; + reg_2003++; + } + } byte read_2004() { diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.run.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.run.cs index 781adc1ec4..331c2b665a 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.run.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/PPU.run.cs @@ -166,7 +166,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES //Not sure if this is correct. According to Matt Conte and my own tests, it is. Timing is probably off, though. //NOTE: Not having this here breaks a Super Donkey Kong game. - if (PPUON) reg_2003 = 0; + //if (PPUON) reg_2003 = 0; //this was repeatedly finetuned from the fceux days thrugh the old cpu core and into the new one to pass 05-nmi_timing.nes //note that there is still some leniency. for instance, 4,2 will pass in addition to 3,3 @@ -207,13 +207,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES yp = sl - 1; ppuphase = PPUPHASE.BG; - // "If PPUADDR is not less then 8 when rendering starts, the first 8 bytes in OAM and written to from - // the current location off PPUADDR" + // "If PPUADDR is not less then 8 when rendering starts, the first 8 bytes in OAM are written to from + // the current location of PPUADDR" if (sl == 0 && PPUON && reg_2003 >= 8 && region==Region.NTSC) { for (int i = 0; i < 8; i++) { - OAM[i] = OAM[reg_2003 & 0xF8 + i]; + OAM[i] = OAM[(reg_2003 & 0xF8) + i]; } } @@ -258,7 +258,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES if (ppur.status.cycle == 64) { soam_index = 0; - oam_index = 0;// reg_2003; + oam_index = reg_2003; } // otherwise, scan through OAM and test if sprites are in range @@ -297,7 +297,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES if (yp >= read_value && yp < read_value + spriteHeight && spr_true_count == 0) { //a flag gets set if sprite zero is in range - if (oam_index == 0)//reg_2003) + if (oam_index == reg_2003) sprite_zero_in_range = true; spr_true_count++; @@ -769,7 +769,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES { } else runppu(1); - } // scanline loop ppur.status.sl = 241; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES9X/Snes9x.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES9X/Snes9x.cs index cf81e5edda..e71c8e995b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES9X/Snes9x.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES9X/Snes9x.cs @@ -297,21 +297,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.SNES9X return new LibWaterboxCore.FrameInfo(); } - protected override void FrameAdvancePost() - { - _virtualHeight = BufferHeight; - _virtualWidth = BufferWidth; - if (_virtualHeight * 2 < _virtualWidth) - _virtualHeight *= 2; - if (_virtualHeight > 240) - _virtualWidth = 512; - _virtualWidth = (int)Math.Round(_virtualWidth * 1.146); - } - private int _virtualWidth; - private int _virtualHeight; - public override int VirtualWidth => _virtualWidth; - public override int VirtualHeight => _virtualHeight; + public override int VirtualWidth => BufferWidth == 256 && BufferHeight <= 240 ? 293 : 587; + public override int VirtualHeight => BufferHeight <= 240 && BufferWidth == 512 ? BufferHeight * 2 : BufferHeight; #region IStatable diff --git a/BizHawk.Emulation.Cores/Libretro/LibretroApi.cs b/BizHawk.Emulation.Cores/Libretro/LibretroApi.cs index 28875d5d47..db2286cd84 100644 --- a/BizHawk.Emulation.Cores/Libretro/LibretroApi.cs +++ b/BizHawk.Emulation.Cores/Libretro/LibretroApi.cs @@ -151,8 +151,8 @@ namespace BizHawk.Emulation.Cores.Libretro public retro_system_info retro_system_info; public retro_system_av_info retro_system_av_info; - public uint retro_serialize_size_initial; //size_t :( - public uint retro_serialize_size; //size_t :( + public ulong retro_serialize_size_initial; //size_t :( + public ulong retro_serialize_size; //size_t :( public uint retro_region; public uint retro_api_version; diff --git a/BizHawk.Emulation.Cores/Libretro/LibretroApi_CMD.cs b/BizHawk.Emulation.Cores/Libretro/LibretroApi_CMD.cs index 9bb5b6540c..21ceffb8b6 100644 --- a/BizHawk.Emulation.Cores/Libretro/LibretroApi_CMD.cs +++ b/BizHawk.Emulation.Cores/Libretro/LibretroApi_CMD.cs @@ -62,7 +62,7 @@ namespace BizHawk.Emulation.Cores.Libretro { Message(eMessage.CMD_UpdateSerializeSize); WaitForCMD(); - return comm->env.retro_serialize_size; + return (uint)comm->env.retro_serialize_size; } public bool CMD_Serialize(byte[] data) diff --git a/BizHawk.Emulation.Cores/Libretro/LibretroApi_Structs.cs b/BizHawk.Emulation.Cores/Libretro/LibretroApi_Structs.cs index 24cfaea56c..0c50eeaa39 100644 --- a/BizHawk.Emulation.Cores/Libretro/LibretroApi_Structs.cs +++ b/BizHawk.Emulation.Cores/Libretro/LibretroApi_Structs.cs @@ -30,7 +30,7 @@ namespace BizHawk.Emulation.Cores.Libretro public sbyte* valid_extensions; public bool need_fullpath; public bool block_extract; - public short pad; + short _pad; } public struct retro_system_timing diff --git a/BizHawk.Emulation.Cores/Libretro/LibretroCore.cs b/BizHawk.Emulation.Cores/Libretro/LibretroCore.cs index 623c1ef01e..243688c6f0 100644 --- a/BizHawk.Emulation.Cores/Libretro/LibretroCore.cs +++ b/BizHawk.Emulation.Cores/Libretro/LibretroCore.cs @@ -375,7 +375,7 @@ namespace BizHawk.Emulation.Cores.Libretro public void SaveStateBinary(System.IO.BinaryWriter writer) { api.CMD_UpdateSerializeSize(); - if (savebuff == null || savebuff.Length != api.comm->env.retro_serialize_size) + if (savebuff == null || savebuff.Length != (int)api.comm->env.retro_serialize_size) { savebuff = new byte[api.comm->env.retro_serialize_size]; savebuff2 = new byte[savebuff.Length + 13]; @@ -406,7 +406,7 @@ namespace BizHawk.Emulation.Cores.Libretro public byte[] SaveStateBinary() { api.CMD_UpdateSerializeSize(); - if (savebuff == null || savebuff.Length != api.comm->env.retro_serialize_size) + if (savebuff == null || savebuff.Length != (int)api.comm->env.retro_serialize_size) { savebuff = new byte[api.comm->env.retro_serialize_size]; savebuff2 = new byte[savebuff.Length + 13]; diff --git a/BizHawk.Emulation.Cores/Waterbox/PeRunner.cs b/BizHawk.Emulation.Cores/Waterbox/PeRunner.cs index 080b91e4b3..fdb242e35a 100644 --- a/BizHawk.Emulation.Cores/Waterbox/PeRunner.cs +++ b/BizHawk.Emulation.Cores/Waterbox/PeRunner.cs @@ -507,7 +507,10 @@ namespace BizHawk.Emulation.Cores.Waterbox { long ret = 0; for (int i = 0; i < iovcnt; i++) - ret += Write(fd, iov[i].Base, iov[i].Length); + { + if (iov[i].Base != IntPtr.Zero) + ret += Write(fd, iov[i].Base, iov[i].Length); + } return ret; } diff --git a/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs b/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs index 63cca7450c..a9add9cf4e 100644 --- a/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs +++ b/BizHawk.Emulation.DiscSystem/DiscIdentifier.cs @@ -60,8 +60,10 @@ namespace BizHawk.Emulation.DiscSystem _disc = disc; _dsr = new DiscSectorReader(disc); - //the first check for mode 0 should be sufficient for blocking attempts to read audio sectors, so dont do this - //dsr.Policy.ThrowExceptions2048 = false; + //the first check for mode 0 should be sufficient for blocking attempts to read audio sectors + //but github #928 had a data track with an audio sector + //so let's be careful here.. we're just trying to ID things, not be robust + _dsr.Policy.ThrowExceptions2048 = false; } private readonly Disc _disc; @@ -74,14 +76,13 @@ namespace BizHawk.Emulation.DiscSystem /// public DiscType DetectDiscType() { - //check track 1's data type. if it's an audio track, further data-track testing is useless - //furthermore, it's probably senseless (no binary data there to read) - //however a sector could mark itself as audio without actually being.. we'll just wait for that one. - // not fully tested yet if (DetectPCFX()) return DiscType.PCFX; + //check track 1's data type. if it's an audio track, further data-track testing is useless + //furthermore, it's probably senseless (no binary data there to read) + //NOTE: PCE-CD detection goes through here (no good way to detect PCE cd) if (!_disc.TOC.TOCItems[1].IsData) return DiscType.AudioDisc; @@ -179,7 +180,9 @@ namespace BizHawk.Emulation.DiscSystem if (!_sectorCache.TryGetValue(lba, out data)) { data = new byte[2048]; - _dsr.ReadLBA_2048(lba, data, 0); + int read = _dsr.ReadLBA_2048(lba, data, 0); + if (read != 2048) + return null; _sectorCache[lba] = data; } return data; @@ -188,6 +191,7 @@ namespace BizHawk.Emulation.DiscSystem private bool StringAt(string s, int n, int lba = 0) { var data = ReadSectorCached(lba); + if (data == null) return false; byte[] cmp = System.Text.Encoding.ASCII.GetBytes(s); byte[] cmp2 = new byte[cmp.Length]; Buffer.BlockCopy(data, n, cmp2, 0, cmp.Length); diff --git a/Dist/BuildAndPackage.bat b/Dist/BuildAndPackage.bat index f259b92b64..616b39d95a 100644 --- a/Dist/BuildAndPackage.bat +++ b/Dist/BuildAndPackage.bat @@ -35,7 +35,7 @@ rem explicitly list the OK ones here as individual copies. until then.... copy *.dll dll rem Now, we're about to zip and then unzip. Why, you ask? Because that's just the way this evolved. -..\dist\zip.exe -X -r ..\Dist\%NAME% EmuHawk.exe DiscoHawk.exe defctrl.json dll shaders gamedb Tools NES\Palettes Lua Gameboy\Palettes -x *.pdb -x *.lib -x *.pgd -x *.ipdb -x *.iobj -x *.exp -x dll\libsneshawk-64*.exe -x *.ilk -x dll\gpgx.elf -x dll\miniclient.* +..\dist\zip.exe -X -r ..\Dist\%NAME% EmuHawk.exe EmuHawk.exe.config DiscoHawk.exe DiscoHawk.exe.config defctrl.json dll shaders gamedb Tools NES\Palettes Lua Gameboy\Palettes -x *.pdb -x *.lib -x *.pgd -x *.ipdb -x *.iobj -x *.exp -x dll\libsneshawk-64*.exe -x *.ilk -x dll\gpgx.elf -x dll\miniclient.* cd ..\Dist .\unzip.exe %NAME% -d temp diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..62ffad7a4d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +This repository contains original work chiefly in c# by the BizHawk team (which is all provided under the MIT License), embedded submodules from other authors with their own licenses clearly provided, other embedded submodules from other authors WITHOUT their own licenses clearly provided, customizations by the BizHawk team to many of those submodules (which is provided under the MIT license), and compiled binary executable modules from other authors without their licenses OR their origins clearly indicated. + +Due to the high degree of licensing heterogeneity of this repository and the nature of some of the licenses contained therein, its condition as-is should be considered an illegal combination of several incompatible GPL licenses. + +However, if many of the C/C++ emulation cores were removed, the result would be an almost pristine MIT-licensed work. We are therefore providing this repository "under the MIT license" with the expectation that the c# parts of the remaining "frontend" elements authored the BizHawk team is what will be of interest to most people; and besides, those elements constitute the bulk of the original work. + +In short, individuals with a keen interest in the licensing details of any portion of this repository should contact us or else assume it is a minefield. + +-------------------------- +All of the BizHawk team's original work is provided under this license: +-------------------------- + +MIT License + +Copyright (c) BizHawk team + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md index d829e8c21a..468425cee4 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +# BizHawk + BizHawk is a multi-system emulator written in C#. BizHawk provides nice features for casual gamers such as fullscreen, rewind, and joypad support in addition to rerecording and debugging tools for all system cores. [Release Notes](http://tasvideos.org/Bizhawk/ReleaseHistory.html) diff --git a/References/PeNet.dll b/References/PeNet.dll index 0ba0982b04..dba74b9d7e 100644 Binary files a/References/PeNet.dll and b/References/PeNet.dll differ diff --git a/libmupen64plus/mupen64plus-core/projects/msvc11/mupen64plus-core.vcxproj b/libmupen64plus/mupen64plus-core/projects/msvc11/mupen64plus-core.vcxproj index e433e456d7..babf35aab0 100644 --- a/libmupen64plus/mupen64plus-core/projects/msvc11/mupen64plus-core.vcxproj +++ b/libmupen64plus/mupen64plus-core/projects/msvc11/mupen64plus-core.vcxproj @@ -132,7 +132,7 @@ Disabled ..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.15\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.8\include;..\..\..\mupen64plus-win32-deps\libpng-1.6.18\include;..\..\..\mupen64plus-win32-deps\freetype-2.6\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) + DBG;WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) false EnableFastChecks MultiThreadedDebugDLL @@ -156,13 +156,8 @@ -<<<<<<< HEAD ..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.15\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.8\include;..\..\..\mupen64plus-win32-deps\libpng-1.6.18\include;..\..\..\mupen64plus-win32-deps\freetype-2.6\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) -======= - ..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.14\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.3\include;..\..\..\mupen64plus-win32-deps\libpng-1.2.37\include;..\..\..\mupen64plus-win32-deps\freetype-2.3.5-1\include;%(AdditionalIncludeDirectories) DBG;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) ->>>>>>> master MultiThreadedDLL @@ -188,7 +183,7 @@ ..\..\src;..\..\..\mupen64plus-win32-deps\SDL-1.2.15\include;..\..\..\mupen64plus-win32-deps\zlib-1.2.8\include;..\..\..\mupen64plus-win32-deps\libpng-1.6.18\include;..\..\..\mupen64plus-win32-deps\freetype-2.6\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) + DBG;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;DYNAREC;M64P_OSD;M64P_PARALLEL;%(PreprocessorDefinitions) MultiThreadedDLL diff --git a/output/dll/mupen64plus.dll b/output/dll/mupen64plus.dll index 6088630804..d4f49ceb97 100644 Binary files a/output/dll/mupen64plus.dll and b/output/dll/mupen64plus.dll differ diff --git a/output/dll/nlua/KopiLua.dll b/output/dll/nlua/KopiLua.dll index 5d1f39048f..14fce5129c 100644 Binary files a/output/dll/nlua/KopiLua.dll and b/output/dll/nlua/KopiLua.dll differ diff --git a/output/dll/snes9x.wbx.gz b/output/dll/snes9x.wbx.gz index 73472cb76b..7d590fce19 100644 Binary files a/output/dll/snes9x.wbx.gz and b/output/dll/snes9x.wbx.gz differ