From 244fc3f7d3351dc998af98d660331188c1bb3b53 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 3 Apr 2020 17:08:42 +0200 Subject: [PATCH 01/69] initial commit --- src/common/bspf.hxx | 1 + src/debugger/gui/CartE0Widget.cxx | 18 +- src/emucore/CartE0.cxx | 101 +- src/emucore/CartE0.hxx | 20 +- src/emucore/CartEnhanced.cxx | 259 +++ src/emucore/CartEnhanced.hxx | 204 ++ src/emucore/CartF0.cxx | 152 +- src/emucore/CartF0.hxx | 104 +- src/emucore/CartF4.cxx | 139 +- src/emucore/CartF4.hxx | 101 +- src/emucore/CartF4SC.cxx | 204 +- src/emucore/CartF4SC.hxx | 102 +- src/emucore/CartF6.cxx | 182 +- src/emucore/CartF6.hxx | 99 +- src/emucore/CartF6SC.cxx | 244 +-- src/emucore/CartF6SC.hxx | 102 +- src/emucore/CartF8.cxx | 151 +- src/emucore/CartF8.hxx | 98 +- src/emucore/CartF8SC.cxx | 224 +-- src/emucore/CartF8SC.hxx | 102 +- src/emucore/CartFC.cxx | 133 +- src/emucore/CartFC.hxx | 90 +- src/emucore/CartFE.cxx | 100 +- src/emucore/CartFE.hxx | 50 +- src/emucore/CartMNetwork.hxx | 2 +- src/emucore/CartUA.cxx | 133 +- src/emucore/CartUA.hxx | 72 +- src/windows/Stella.vcxproj | 2 + src/windows/Stella.vcxproj.filters | 6 + test/roms/bankswitching/0840/Untitled.bin | Bin 0 -> 8192 bytes .../2K/2-in-1 - Freeway and Tennis [p1].a26 | Bin 0 -> 4096 bytes ...ir-Sea Battle (1977) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes ...ea Battle (1977) (Atari) (PAL) [p1][!].a26 | Bin 0 -> 4096 bytes .../2K/Air-Sea Battle (1977) (Atari) [!].a26 | Bin 0 -> 2048 bytes .../2K/Air-Sea Battle (1977) (Atari) [o1].a26 | Bin 0 -> 4096 bytes ...Air-Sea Battle (1977) (Atari) [o1][h1].a26 | Bin 0 -> 4096 bytes ...Sea Battle (32-in-1) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Combat (1977) (Atari) [!].a26 | Bin 0 -> 2048 bytes .../2K/Combat (32-in-1) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Combat (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes ...t - Tank AI (19-04-2003) (Zach Matley).a26 | Bin 0 -> 4096 bytes .../Combat AI (16-02-2003) (Zach Matley).a26 | Bin 0 -> 4096 bytes .../2K/Combat Rock (PD) [a1].a26 | Bin 0 -> 4096 bytes .../bankswitching/2K/Combat Rock (PD).a26 | Bin 0 -> 4096 bytes .../bankswitching/2K/Combat TC (v0.1).a26 | Bin 0 -> 2048 bytes .../Freeway (1981) (Activision) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Freeway (1981) (Activision) [!].a26 | Bin 0 -> 2048 bytes .../2K/Freeway (1981) (Activision) [o1].a26 | Bin 0 -> 4096 bytes .../2K/Freeway (1981) (Activision) [o2].a26 | Bin 0 -> 16384 bytes .../Freeway (32-in-1) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../Freeway (AKA Rabbits) (PAL) [p1][!].a26 | Bin 0 -> 2048 bytes test/roms/bankswitching/2K/Freeway (CCE).a26 | Bin 0 -> 2048 bytes .../2K/Freeway (Dactar) (PAL) [p1][!].a26 | Bin 0 -> 2048 bytes .../Kaboom! (1981) (Activision) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Kaboom! (1981) (Activision) [o1].a26 | Bin 0 -> 4096 bytes .../2K/Kaboom! (1981) (Activision) [o2].a26 | Bin 0 -> 16384 bytes test/roms/bankswitching/2K/Kaboom! (CCE).a26 | Bin 0 -> 2048 bytes .../Kabul! by Jess Ragan (Kaboom! Hack).a26 | Bin 0 -> 2048 bytes .../bankswitching/2K/Okie Dokie (4K) (PD).a26 | Bin 0 -> 4096 bytes .../2K/Okie Dokie (Older) (PD).a26 | Bin 0 -> 2048 bytes .../roms/bankswitching/2K/Okie Dokie (PD).a26 | Bin 0 -> 2048 bytes ...Stampede (1981) (Activision) (PAL) [!].a26 | Bin 0 -> 2048 bytes ...pede (1981) (Activision) (PAL) [p1][!].a26 | Bin 0 -> 2048 bytes ... (1981) (Activision) (PAL) [p1][o1][!].a26 | Bin 0 -> 4096 bytes .../2K/Stampede (1981) (Activision) [!].a26 | Bin 0 -> 2048 bytes .../2K/Stampede (1981) (Activision) [o1].a26 | Bin 0 -> 4096 bytes .../2K/Stampede (1981) (Activision) [o2].a26 | Bin 0 -> 16384 bytes .../Stampede (32-in-1) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Tank Plus (1977) (Sears) [a1].a26 | Bin 0 -> 4096 bytes .../2K/Tank Plus (1977) (Sears).a26 | Bin 0 -> 4096 bytes .../Tennis (1981) (Activision) (PAL) [!].a26 | Bin 0 -> 2048 bytes ...nis (1981) (Activision) (PAL) [p1][o1].a26 | Bin 0 -> 4096 bytes .../2K/Tennis (1981) (Activision) [!].a26 | Bin 0 -> 2048 bytes .../2K/Tennis (1981) (Activision) [o1].a26 | Bin 0 -> 4096 bytes .../2K/Tennis (1981) (Activision) [o2].a26 | Bin 0 -> 16384 bytes .../2K/Tennis (32-in-1) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Tennis (Dactar) (PAL) [p1][!].a26 | Bin 0 -> 2048 bytes .../2K/Tennis (Pet Boat) (PAL) [p1][!].a26 | Bin 0 -> 2048 bytes .../2K/Tennis (Starsoft) (PAL) [!].a26 | Bin 0 -> 4096 bytes ...ideo Olympics (1978) (Atari) (PAL) [!].a26 | Bin 0 -> 2048 bytes .../2K/Video Olympics (1978) (Atari) [o1].a26 | Bin 0 -> 4096 bytes .../2K/Video Olympics (1978) (Atari).a26 | Bin 0 -> 2048 bytes ... Road by Charles Morgan (Freeway Hack).a26 | Bin 0 -> 2048 bytes test/roms/bankswitching/3E+/3E+ram.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/3E+/3E+ram_I.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/3E+/3E+ram_NI.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/3E+/3E+rom.bin | Bin 0 -> 32768 bytes .../3E/3E Bankswitch Test (TIA @ $00).bin | Bin 0 -> 131072 bytes ...avies early notBoulderDash demo (NTSC).bin | Bin 0 -> 131072 bytes ...Davies early notBoulderDash demo (PAL).bin | Bin 0 -> 131072 bytes .../3E/Boulder Dash (Demo 2).bin | Bin 0 -> 32768 bytes .../3F/Espial (1984) (Tigervision) (PAL).a26 | Bin 0 -> 8192 bytes .../3F/Espial (1984) (Tigervision).a26 | Bin 0 -> 8192 bytes .../3F/Miner 2049er (1982) (Tigervision).a26 | Bin 0 -> 8192 bytes ...r Volume II (1983) (Tigervision) (PAL).a26 | Bin 0 -> 8192 bytes .../3F/Polaris (1983) (Thomas Jentzsch).a26 | Bin 0 -> 8192 bytes .../3F/Polaris (1983) (Tigervision) (PAL).a26 | Bin 0 -> 8192 bytes .../3F/Polaris (1983) (Tigervision).a26 | Bin 0 -> 8192 bytes .../3F/River Patrol (1984) (Tigervision).a26 | Bin 0 -> 8192 bytes .../3F/Springer (1982) (Tigervision).a26 | Bin 0 -> 8192 bytes test/roms/bankswitching/3F/Untitled.a26 | Bin 0 -> 8192 bytes .../bankswitching/4A50/Ruby Runner 4A50.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/4A50/rr3.bin | 7 + test/roms/bankswitching/4A50/rr4.bin | 5 + test/roms/bankswitching/4A50/spin4a50.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/4A50/test4a50fix.bin | Bin 0 -> 65536 bytes .../4A50/test_includes_file.bas.bin | Bin 0 -> 131072 bytes test/roms/bankswitching/4KSC/4KSC_test.bin | Bin 0 -> 4096 bytes test/roms/bankswitching/BF/BF_256k_test.bin | Bin 0 -> 262144 bytes .../bankswitching/BFSC/BFSC_256k_ramtest.bin | Bin 0 -> 262144 bytes .../bankswitching/BFSC/penult-demo-9-NTSC.bin | Bin 0 -> 131072 bytes .../bankswitching/BUS/128bus_20170120.bin | Bin 0 -> 32768 bytes .../BUS/128chronocolour_20170101.bin | Bin 0 -> 32768 bytes .../bankswitching/BUS/draconian_20161102.bin | Bin 0 -> 32768 bytes .../BUS/parrot_20161231_NTSC.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/rpg_20161019.bin | Bin 0 -> 32768 bytes .../bankswitching/BUS/rpg_20161231_NTSC.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/test0_stuff.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/test1_music.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/test2_speech.bin | Bin 0 -> 32768 bytes .../bankswitching/BUS/test3_bigscroll.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/test4_xevious.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/BUS/test_20161231.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/CDF/cdf0_fast.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/CDF/cdf1_music.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/CDF/cdf2_speech.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/CDF/cdf3_fastjump.bin | Bin 0 -> 32768 bytes .../bankswitching/CDF/draconian_20170309.bin | Bin 0 -> 32768 bytes .../bankswitching/CDF/draconian_20170314.bin | Bin 0 -> 32768 bytes .../bankswitching/CDF/draconian_20170318.bin | Bin 0 -> 32768 bytes .../bankswitching/CTY/chetiry_NTSC_STELLA.bin | Bin 0 -> 61440 bytes .../bankswitching/CV/Magicard (CommaVid).a26 | Bin 0 -> 2048 bytes .../CV/Video Life (CommaVid) [h1].a26 | Bin 0 -> 4096 bytes .../CV/Video Life (CommaVid).a26 | Bin 0 -> 2048 bytes test/roms/bankswitching/DF/DF_128k_test.bin | Bin 0 -> 131072 bytes .../bankswitching/DFSC/DFSC_128k_ramtest.bin | Bin 0 -> 131072 bytes .../Frogger II (1984) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes .../E0/Frogger II (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes .../E0/Gyruss (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...mes Bond 007 (1983) (Parker Bros) [b1].a26 | Bin 0 -> 4096 bytes .../James Bond 007 (1983) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...Rings (1983) (Parker Bros) (Prototype).a26 | Bin 0 -> 8192 bytes ...ntezuma's Revenge (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...ma's Revenge (Thomas Jentzsch) (PAL60).a26 | Bin 0 -> 8192 bytes .../Mr. Do!'s Castle (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes .../E0/Popeye (1983) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes .../E0/Popeye (1983) (Parker Bros).a26 | Bin 0 -> 8192 bytes .../Q-bert's Qubes (1983) (Parker Bros).a26 | Bin 0 -> 8192 bytes .../Q-bert's Qubes (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...Star Battle (1983) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes ...Death Star Battle (1983) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...(1983) (Parker Bros) (Prototype) (PAL).a26 | Bin 0 -> 8192 bytes ...dventure (Thomas Jentzsch) (Prototype).a26 | Bin 0 -> 8192 bytes ...(01-03-1984) (Parker Bros) (Prototype).a26 | Bin 0 -> 4096 bytes ...5-1984) (Parker Bros) (Prototype) (8K).a26 | Bin 0 -> 8192 bytes ...(12-05-1983) (Parker Bros) (Prototype).a26 | Bin 0 -> 4096 bytes ...(12-15-1983) (Parker Bros) (Prototype).a26 | Bin 0 -> 4096 bytes ...(12-23-1983) (Parker Bros) (Prototype).a26 | Bin 0 -> 4096 bytes ...Arcade Game (1984) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes ...- The Arcade Game (1984) (Parker Bros).a26 | Bin 0 -> 8192 bytes ... Game (Parker Bros) (Prototype 122283).a26 | Bin 0 -> 4096 bytes ...Super Cobra (1982) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes .../Super Cobra (1982) (Parker Bros) [b1].a26 | Bin 0 -> 4096 bytes .../E0/Super Cobra (1982) (Parker Bros).a26 | Bin 0 -> 8192 bytes .../Tooth Protectors (1983) (DSD-Camelot).a26 | Bin 0 -> 8192 bytes .../Tutankham (1983) (Parker Bros) (PAL).a26 | Bin 0 -> 8192 bytes .../E0/Tutankham (1983) (Parker Bros).a26 | Bin 0 -> 8192 bytes ...2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 | 65 + .../E7/Bump 'N' Jump (1983) (Mattel) [b1].a26 | 63 + .../E7/Bump 'N' Jump (1983) (Mattel).a26 | 65 + .../E7/Burgertime (1982) (Mattel).a26 | Bin 0 -> 16384 bytes ... - The Power of He-Man (1983) (Mattel).a26 | Bin 0 -> 16384 bytes .../bankswitching/E7/fruitcake29Oct09.bin | Bin 0 -> 16384 bytes .../bankswitching/E7/fruitcake_22Oct09.bin | Bin 0 -> 16384 bytes .../bankswitching/EF/64kbb.EFEF_tagged.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/EF/EF.bin | Bin 0 -> 65536 bytes .../roms/bankswitching/EF/RobotZed_07.bas.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/EF/megaboyEF.bin | Bin 0 -> 65536 bytes .../bankswitching/EFSC/64kSC.EFSC_tagged.bin | Bin 0 -> 65536 bytes .../EFSC/Distopia0.95_NTSC.bas.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/EFSC/EFSC.bin | Bin 0 -> 65536 bytes .../F4/AVGN KO Boxing 2009-09-06 NTSC.bin | Bin 0 -> 32768 bytes ...oids Attack (2020) (Demo, Game Select).bin | Bin 0 -> 32768 bytes .../F4SC/Fatal Run (NTSC prototype).bin | Bin 0 -> 32768 bytes .../F6/Acid Drop (1992) (Salu) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Acid Drop (1992) (Salu) (PAL) [b1].a26 | Bin 0 -> 8192 bytes .../F6/Acid Drop (NTSC Conversion) (TJ).a26 | Bin 0 -> 8192 bytes ...C by Thomas Jentzsch (2 joystick Hack).a26 | Bin 0 -> 16384 bytes ...lifornia Games (1988) (Epyx) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/California Games (1988) (Epyx) [!].a26 | Bin 0 -> 16384 bytes ...e Dragon (1989) (Activision) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Double Dragon (1989) (Activision).a26 | Bin 0 -> 16384 bytes .../bankswitching/F6/Garfield (Prototype).a26 | 23 + ...idnight Magic (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Midnight Magic (1984) (Atari).a26 | Bin 0 -> 16384 bytes .../Pete Rose Baseball (1988) (Absolute).a26 | Bin 0 -> 16384 bytes ...Rampage! (1989) (Activision) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Rampage! (1989) (Activision) [!].a26 | Bin 0 -> 16384 bytes .../F6/Rampage! (1989) (Activision) [b1].a26 | Bin 0 -> 16384 bytes ...Sports Boxing (1987) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/RealSports Boxing (1987) (Atari).a26 | Bin 0 -> 16384 bytes .../F6/Sentinel (1990) (Atari).a26 | Bin 0 -> 16384 bytes .../F6/Solaris (1986) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Solaris (1986) (Atari).a26 | Bin 0 -> 16384 bytes .../Summer Games (1987) (Epyx) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6/Summer Games (1987) (Epyx).a26 | Bin 0 -> 16384 bytes .../roms/bankswitching/F6/Super Box (CCE).a26 | Bin 0 -> 16384 bytes ...Flight Simulator (1988) (Absolute) [!].a26 | Bin 0 -> 16384 bytes ...light Simulator (1988) (Absolute) [a1].a26 | Bin 0 -> 16384 bytes ...Flight Simulator (2002) (Skyworks) [!].a26 | Bin 0 -> 16384 bytes ... (1984) (Atari) (NTSC) (Prototype) [!].a26 | Bin 0 -> 16384 bytes ...ystal Castles (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../Crystal Castles (1984) (Atari) [p1].a26 | Bin 0 -> 16384 bytes .../F6SC/Crystal Castles (1984) (Atari).a26 | Bin 0 -> 16384 bytes ...Dark Chambers (1988) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Dark Chambers (1988) (Atari).a26 | Bin 0 -> 16384 bytes .../F6SC/Dig Dug (1983) (Atari).a26 | Bin 0 -> 16384 bytes .../Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Jr. Pac-Man (1984) (Atari) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Jr. Pac-Man (1986) (Atari) [!].a26 | Bin 0 -> 16384 bytes .../Millipede (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Millipede (1984) (Atari).a26 | Bin 0 -> 16384 bytes .../Radar Lock (1989) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Radar Lock (1989) (Atari).a26 | Bin 0 -> 16384 bytes .../Secret Quest (1989) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Secret Quest (1989) (Atari).a26 | Bin 0 -> 16384 bytes ...Sprint Master (1988) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Sprint Master (1988) (Atari).a26 | Bin 0 -> 16384 bytes ...uper Football (1988) (Atari) (PAL) [!].a26 | Bin 0 -> 16384 bytes .../F6SC/Super Football (1988) (Atari).a26 | Bin 0 -> 16384 bytes ...Aquaventure (1983) (Atari) (Prototype).a26 | Bin 0 -> 8192 bytes .../bankswitching/F8/Aquaventure (CCE).a26 | Bin 0 -> 8192 bytes .../F8/Asteroids (1979) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...Asteroids (1979) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes ...Asteroids (1979) (Atari) (PAL) [a2][!].a26 | Bin 0 -> 8192 bytes .../F8/Asteroids (1979) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Asteroids (1979) (Atari) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Asteroids 2 (Asteroids Hack).a26 | Bin 0 -> 8192 bytes ...C+ by Thomas Jentzsch (Asteroids Hack).a26 | Bin 0 -> 8192 bytes .../F8/Asteroids SS (Asteroids Hack).a26 | Bin 0 -> 8192 bytes test/roms/bankswitching/F8/Asteroids [p1].a26 | Bin 0 -> 8192 bytes .../Battlezone (1983) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...attlezone (1983) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Battlezone (1983) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Berenstain Bears (1982) (Coleco).a26 | Bin 0 -> 8192 bytes .../F8/Centipede (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...e (1982) (Atari) (Prototype) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../F8/Centipede (1982) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Centipede 2k (2000) (PD).a26 | Bin 0 -> 8192 bytes ...laxian by Manuel Polik (Galaxian Hack).a26 | Bin 0 -> 8192 bytes .../F8/Elk Attack (1987) (Atari).a26 | Bin 0 -> 8192 bytes .../F8/Galaxian (1983) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../Galaxian (1983) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Galaxian (1983) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Galaxian (1983) (CCE).a26 | Bin 0 -> 8192 bytes ...xian by Jess Ragan (Enhanced Graphics).a26 | Bin 0 -> 8192 bytes .../F8/Gravitar (1988) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Gravitar (1988) (Atari) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Gravitar (1988) (CCE).a26 | Bin 0 -> 8192 bytes ...H.E.R.O. (1984) (Activision) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...R.O. (1984) (Activision) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes ...R.O. (1984) (Activision) (PAL) [a2][!].a26 | Bin 0 -> 8192 bytes .../F8/H.E.R.O. (1984) (Activision) [!].a26 | Bin 0 -> 8192 bytes .../F8/H.E.R.O. (1984) (Activision) [a1].a26 | Bin 0 -> 4096 bytes .../F8/H.E.R.O. (1984) (Activision) [o1].a26 | Bin 0 -> 16384 bytes .../F8/H.E.R.O. (1984) (CCE).a26 | Bin 0 -> 8192 bytes .../F8/Joust (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../F8/Joust (1982) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../bankswitching/F8/Joust (1982) (Atari).a26 | Bin 0 -> 8192 bytes .../Jungle Hunt (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...ngle Hunt (1982) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Jungle Hunt (1982) (Atari) [!].a26 | Bin 0 -> 8192 bytes .../F8/Jungle Hunt (1982) (CCE).a26 | Bin 0 -> 8192 bytes ...u Master (1984) (Activision) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...ster (1984) (Activision) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Kung Fu Master (1984) (Activision).a26 | Bin 0 -> 8192 bytes .../bankswitching/F8/Kung Fu Master (CCE).a26 | Bin 0 -> 8192 bytes .... Roboto by Paul Slocum (Berzerk Hack).a26 | Bin 0 -> 8192 bytes .../Ms. Pac-Man (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .... Pac-Man (1982) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Ms. Pac-Man (1982) (Atari) [h1].a26 | Bin 0 -> 8192 bytes .../F8/Ms. Pac-Man (1982) (Atari).a26 | Bin 0 -> 8192 bytes .../F8/Ms. Pac-Man (1982) (CCE).a26 | Bin 0 -> 8192 bytes .../bankswitching/F8/Pengo (1984) (Atari).a26 | Bin 0 -> 8192 bytes .../Pengo - 1 Player Only (1984) (Atari).a26 | Bin 0 -> 8192 bytes .../F8/Phoenix (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../Phoenix (1982) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Phoenix (1982) (Atari).a26 | Bin 0 -> 8192 bytes .../bankswitching/F8/Phoenix (1982) (CCE).a26 | Bin 0 -> 8192 bytes ... the Lost Ark (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...Raiders of the Lost Ark (1982) (Atari).a26 | Bin 0 -> 8192 bytes .../F8/Spy Hunter (1983) (Sega) [!].a26 | Bin 0 -> 8192 bytes .../F8/Vanguard (1982) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../Vanguard (1982) (Atari) (PAL) [a1][!].a26 | Bin 0 -> 8192 bytes .../F8/Vanguard (1982) (Atari).a26 | Bin 0 -> 8192 bytes test/roms/bankswitching/F8/Vanguard (CCE).a26 | Bin 0 -> 8192 bytes test/roms/bankswitching/F8/cfg/a2600.cfg | 10 + test/roms/bankswitching/F8/cfg/default.cfg | 5 + .../Defender II (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../F8SC/Defender II (1984) (Atari) [b1].a26 | Bin 0 -> 16384 bytes .../F8SC/Defender II (1984) (Atari).a26 | Bin 0 -> 8192 bytes .../Elevator Action (Atari) (Prototype).a26 | Bin 0 -> 8192 bytes .../Stargate (1984) (Atari) (PAL) [!].a26 | Bin 0 -> 8192 bytes .../F8SC/Stargate (1984) (Atari) [o1].a26 | Bin 0 -> 16384 bytes .../F8SC/Stargate (1984) (Atari).a26 | Bin 0 -> 8192 bytes ...Mountain King (1983) (CBS Electronics).bin | Bin 0 -> 12288 bytes .../Star Castle Arcade (165, Harmony).cu.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/FA2/fa2plus_test.bin | Bin 0 -> 28672 bytes ...ecathlon (1983) (Activision) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...cathlon (1983) (Activision) (PAL) [b1].a26 | Bin 0 -> 8192 bytes .../FE/Decathlon (1983) (Activision) [!].a26 | Bin 0 -> 8192 bytes ...bot Tank (1983) (Activision) (PAL) [!].a26 | Bin 0 -> 8192 bytes ...ot Tank (1983) (Activision) (PAL) [b1].a26 | Bin 0 -> 8192 bytes .../FE/Robot Tank (1983) (Activision) [!].a26 | Bin 0 -> 8192 bytes ...V by Thomas Jentzsch (2 Joystick Hack).a26 | Bin 0 -> 8192 bytes ...Space Shuttle (1983) (Activision) [FE].bin | Bin 0 -> 8192 bytes .../Thwocker (Activision) (Prototype) [!].a26 | Bin 0 -> 8192 bytes test/roms/bankswitching/MDM/MDM-test.bin | Bin 0 -> 131072 bytes .../bankswitching/SB/menu_multicart128k.bin | Bin 0 -> 131072 bytes test/roms/bankswitching/SB/t128.bin | Bin 0 -> 131072 bytes test/roms/bankswitching/SB/t256.bin | Bin 0 -> 262144 bytes test/roms/bankswitching/Sub2K/2k.bin | Bin 0 -> 2048 bytes test/roms/bankswitching/Sub2K/4k.bin | Bin 0 -> 4096 bytes test/roms/bankswitching/Sub2K/Pong256B.bin | Bin 0 -> 256 bytes test/roms/bankswitching/Sub2K/Pong512B.bin | Bin 0 -> 512 bytes test/roms/bankswitching/Sub2K/Vong_1K.bin | Bin 0 -> 1024 bytes .../bankswitching/UA/Fathon (Digivision).bin | Bin 0 -> 8192 bytes test/roms/bankswitching/UA/FunkyFish.bin | Bin 0 -> 8192 bytes .../bankswitching/UA/Mickey (Digivision).bin | Bin 0 -> 8192 bytes test/roms/bankswitching/UA/Pleiades.bin | Bin 0 -> 8192 bytes .../UA/Time Pilot (Rentacom).bin | Bin 0 -> 8192 bytes test/roms/bankswitching/UA/UA_Limited.bin | Bin 0 -> 8192 bytes .../bankswitching/UA/Vanguard (Rentacom).bin | Bin 0 -> 8192 bytes test/roms/bankswitching/UA/ginger.zip | Bin 0 -> 6074 bytes test/roms/bankswitching/UA/gingerUA.bin | Bin 0 -> 8192 bytes ...Panther (Probe) (Prototype) [bad dump].bin | Bin 0 -> 8195 bytes ...nk Panther (Probe) (Prototype) [fixed].bin | Bin 0 -> 8192 bytes .../bankswitching/_code/0840_EconoBanking.asm | 102 + .../bankswitching/_code/0840_EconoBanking.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/3F.asm | 118 ++ test/roms/bankswitching/_code/3F.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/E0.asm | 178 ++ test/roms/bankswitching/_code/E0.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/E7.asm | 250 +++ test/roms/bankswitching/_code/E7.bin | 1 + test/roms/bankswitching/_code/EF.asm | 674 +++++++ test/roms/bankswitching/_code/EF.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/_code/EFSC.asm | 762 ++++++++ test/roms/bankswitching/_code/EFSC.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/_code/F0_MegaBoy.asm | 761 ++++++++ test/roms/bankswitching/_code/F0_MegaBoy.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/_code/F4.asm | 381 ++++ test/roms/bankswitching/_code/F4.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/_code/F4SC.asm | 427 +++++ test/roms/bankswitching/_code/F4SC.bin | Bin 0 -> 32768 bytes test/roms/bankswitching/_code/F6.asm | 189 ++ test/roms/bankswitching/_code/F6.bin | Bin 0 -> 16384 bytes test/roms/bankswitching/_code/F6SC.asm | 247 +++ test/roms/bankswitching/_code/F6SC.bin | Bin 0 -> 16384 bytes test/roms/bankswitching/_code/F8.asm | 116 ++ test/roms/bankswitching/_code/F8.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/F8SC.asm | 135 ++ test/roms/bankswitching/_code/F8SC.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/FA_CBS+RAM.asm | 192 ++ test/roms/bankswitching/_code/FA_CBS+RAM.bin | Bin 0 -> 12288 bytes test/roms/bankswitching/_code/SB_128K.asm | 1135 +++++++++++ test/roms/bankswitching/_code/SB_128K.bin | Bin 0 -> 131072 bytes test/roms/bankswitching/_code/SB_256K.asm | 1658 +++++++++++++++++ test/roms/bankswitching/_code/SB_256K.bin | Bin 0 -> 262144 bytes test/roms/bankswitching/_code/UA_Limited.asm | 102 + test/roms/bankswitching/_code/UA_Limited.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/macro.h | 165 ++ test/roms/bankswitching/_code/test.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/_code/test.lst | 1493 +++++++++++++++ test/roms/bankswitching/_code/test.sym | 121 ++ test/roms/bankswitching/_code/vcs.h | 157 ++ test/roms/bankswitching/_code/x07.asm | 754 ++++++++ test/roms/bankswitching/_code/x07.bin | Bin 0 -> 65536 bytes test/roms/bankswitching/_code/xaa | Bin 0 -> 4096 bytes test/roms/bankswitching/_code/xab | Bin 0 -> 4096 bytes .../genesis/Asteroids (Genesis).bin | Bin 0 -> 8192 bytes .../controller/genesis/Defender (Genesis).bin | Bin 0 -> 4096 bytes .../genesis/Defender 2 (Genesis).bin | Bin 0 -> 8192 bytes .../genesis/Defender Arcade (Genesis).bin | Bin 0 -> 8192 bytes .../Defender MegaDrive (PAL) (Genesis).bin | Bin 0 -> 4096 bytes .../genesis/Double Dragon (PAL) (Genesis).zip | Bin 0 -> 93540 bytes .../controller/genesis/Enduro (Genesis).zip | Bin 0 -> 19080 bytes ...ingerbread Man (Fred Quimby) (Genesis).zip | Bin 0 -> 6074 bytes .../controller/genesis/H.E.R.O. (Genesis).bin | Bin 0 -> 8192 bytes .../controller/genesis/Kangaroo (Genesis).zip | Bin 0 -> 31849 bytes .../genesis/Kung Fu Master (Genesis).zip | Bin 0 -> 38887 bytes .../Mission Survive (PAL) (Genesis).zip | Bin 0 -> 21220 bytes .../Montezuma's Revenge (PAL) (Genesis).zip | Bin 0 -> 21924 bytes .../genesis/Moon Patrol (Genesis).bin | Bin 0 -> 8192 bytes .../genesis/Moon Patrol Arcade (Genesis).bin | Bin 0 -> 8192 bytes .../genesis/Mouse Trap (Genesis).bin | Bin 0 -> 4096 bytes .../genesis/Omega Race (Genesis).zip | Bin 0 -> 38328 bytes .../controller/genesis/Sea Hawk (Genesis).bin | Bin 0 -> 4096 bytes .../controller/genesis/Solaris (Genesis).bin | Bin 0 -> 16384 bytes .../genesis/Spy Hunter (Genesis).bin | Bin 0 -> 8192 bytes .../genesis/Star Trek (Genesis).zip | Bin 0 -> 33771 bytes .../genesis/Star Voyager (Genesis).bin | Bin 0 -> 4096 bytes .../genesis/Starmaster (Genesis).zip | Bin 0 -> 19035 bytes .../genesis/Super Cobra (Genesis).zip | Bin 0 -> 27323 bytes .../genesis/Yars' Revenge (Genesis).bin | Bin 0 -> 4096 bytes {profile => test/roms/profile}/128.bin | Bin {profile => test/roms/profile}/README.md | 0 .../roms/profile}/catharsis_theory.bin | Bin 410 files changed, 11017 insertions(+), 2539 deletions(-) create mode 100644 src/emucore/CartEnhanced.cxx create mode 100644 src/emucore/CartEnhanced.hxx create mode 100644 test/roms/bankswitching/0840/Untitled.bin create mode 100644 test/roms/bankswitching/2K/2-in-1 - Freeway and Tennis [p1].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [o1][h1].a26 create mode 100644 test/roms/bankswitching/2K/Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Combat (1977) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/2K/Combat (32-in-1) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Combat (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Combat - Tank AI (19-04-2003) (Zach Matley).a26 create mode 100644 test/roms/bankswitching/2K/Combat AI (16-02-2003) (Zach Matley).a26 create mode 100644 test/roms/bankswitching/2K/Combat Rock (PD) [a1].a26 create mode 100644 test/roms/bankswitching/2K/Combat Rock (PD).a26 create mode 100644 test/roms/bankswitching/2K/Combat TC (v0.1).a26 create mode 100644 test/roms/bankswitching/2K/Freeway (1981) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (1981) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (1981) (Activision) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (1981) (Activision) [o2].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (32-in-1) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (AKA Rabbits) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Freeway (CCE).a26 create mode 100644 test/roms/bankswitching/2K/Freeway (Dactar) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Kaboom! (1981) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Kaboom! (1981) (Activision) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Kaboom! (1981) (Activision) [o2].a26 create mode 100644 test/roms/bankswitching/2K/Kaboom! (CCE).a26 create mode 100644 test/roms/bankswitching/2K/Kabul! by Jess Ragan (Kaboom! Hack).a26 create mode 100644 test/roms/bankswitching/2K/Okie Dokie (4K) (PD).a26 create mode 100644 test/roms/bankswitching/2K/Okie Dokie (Older) (PD).a26 create mode 100644 test/roms/bankswitching/2K/Okie Dokie (PD).a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][o1][!].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (1981) (Activision) [o2].a26 create mode 100644 test/roms/bankswitching/2K/Stampede (32-in-1) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Tank Plus (1977) (Sears) [a1].a26 create mode 100644 test/roms/bankswitching/2K/Tank Plus (1977) (Sears).a26 create mode 100644 test/roms/bankswitching/2K/Tennis (1981) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (1981) (Activision) (PAL) [p1][o1].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (1981) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (1981) (Activision) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (1981) (Activision) [o2].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (32-in-1) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (Dactar) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (Pet Boat) (PAL) [p1][!].a26 create mode 100644 test/roms/bankswitching/2K/Tennis (Starsoft) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Video Olympics (1978) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/2K/Video Olympics (1978) (Atari) [o1].a26 create mode 100644 test/roms/bankswitching/2K/Video Olympics (1978) (Atari).a26 create mode 100644 test/roms/bankswitching/2K/Xaxyrax Road by Charles Morgan (Freeway Hack).a26 create mode 100644 test/roms/bankswitching/3E+/3E+ram.bin create mode 100644 test/roms/bankswitching/3E+/3E+ram_I.bin create mode 100644 test/roms/bankswitching/3E+/3E+ram_NI.bin create mode 100644 test/roms/bankswitching/3E+/3E+rom.bin create mode 100644 test/roms/bankswitching/3E/3E Bankswitch Test (TIA @ $00).bin create mode 100644 test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (NTSC).bin create mode 100644 test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (PAL).bin create mode 100644 test/roms/bankswitching/3E/Boulder Dash (Demo 2).bin create mode 100644 test/roms/bankswitching/3F/Espial (1984) (Tigervision) (PAL).a26 create mode 100644 test/roms/bankswitching/3F/Espial (1984) (Tigervision).a26 create mode 100644 test/roms/bankswitching/3F/Miner 2049er (1982) (Tigervision).a26 create mode 100644 test/roms/bankswitching/3F/Miner 2049er Volume II (1983) (Tigervision) (PAL).a26 create mode 100644 test/roms/bankswitching/3F/Polaris (1983) (Thomas Jentzsch).a26 create mode 100644 test/roms/bankswitching/3F/Polaris (1983) (Tigervision) (PAL).a26 create mode 100644 test/roms/bankswitching/3F/Polaris (1983) (Tigervision).a26 create mode 100644 test/roms/bankswitching/3F/River Patrol (1984) (Tigervision).a26 create mode 100644 test/roms/bankswitching/3F/Springer (1982) (Tigervision).a26 create mode 100644 test/roms/bankswitching/3F/Untitled.a26 create mode 100644 test/roms/bankswitching/4A50/Ruby Runner 4A50.bin create mode 100644 test/roms/bankswitching/4A50/rr3.bin create mode 100644 test/roms/bankswitching/4A50/rr4.bin create mode 100644 test/roms/bankswitching/4A50/spin4a50.bin create mode 100644 test/roms/bankswitching/4A50/test4a50fix.bin create mode 100644 test/roms/bankswitching/4A50/test_includes_file.bas.bin create mode 100644 test/roms/bankswitching/4KSC/4KSC_test.bin create mode 100644 test/roms/bankswitching/BF/BF_256k_test.bin create mode 100644 test/roms/bankswitching/BFSC/BFSC_256k_ramtest.bin create mode 100644 test/roms/bankswitching/BFSC/penult-demo-9-NTSC.bin create mode 100644 test/roms/bankswitching/BUS/128bus_20170120.bin create mode 100644 test/roms/bankswitching/BUS/128chronocolour_20170101.bin create mode 100644 test/roms/bankswitching/BUS/draconian_20161102.bin create mode 100644 test/roms/bankswitching/BUS/parrot_20161231_NTSC.bin create mode 100644 test/roms/bankswitching/BUS/rpg_20161019.bin create mode 100644 test/roms/bankswitching/BUS/rpg_20161231_NTSC.bin create mode 100644 test/roms/bankswitching/BUS/test0_stuff.bin create mode 100644 test/roms/bankswitching/BUS/test1_music.bin create mode 100644 test/roms/bankswitching/BUS/test2_speech.bin create mode 100644 test/roms/bankswitching/BUS/test3_bigscroll.bin create mode 100644 test/roms/bankswitching/BUS/test4_xevious.bin create mode 100644 test/roms/bankswitching/BUS/test_20161231.bin create mode 100644 test/roms/bankswitching/CDF/cdf0_fast.bin create mode 100644 test/roms/bankswitching/CDF/cdf1_music.bin create mode 100644 test/roms/bankswitching/CDF/cdf2_speech.bin create mode 100644 test/roms/bankswitching/CDF/cdf3_fastjump.bin create mode 100644 test/roms/bankswitching/CDF/draconian_20170309.bin create mode 100644 test/roms/bankswitching/CDF/draconian_20170314.bin create mode 100644 test/roms/bankswitching/CDF/draconian_20170318.bin create mode 100644 test/roms/bankswitching/CTY/chetiry_NTSC_STELLA.bin create mode 100644 test/roms/bankswitching/CV/Magicard (CommaVid).a26 create mode 100644 test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 create mode 100644 test/roms/bankswitching/CV/Video Life (CommaVid).a26 create mode 100644 test/roms/bankswitching/DF/DF_128k_test.bin create mode 100644 test/roms/bankswitching/DFSC/DFSC_128k_ramtest.bin create mode 100644 test/roms/bankswitching/E0/Frogger II (1984) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Frogger II (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Gyruss (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/James Bond 007 (1983) (Parker Bros) [b1].a26 create mode 100644 test/roms/bankswitching/E0/James Bond 007 (1983) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Lord of the Rings (1983) (Parker Bros) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Montezuma's Revenge (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Montezuma's Revenge (Thomas Jentzsch) (PAL60).a26 create mode 100644 test/roms/bankswitching/E0/Mr. Do!'s Castle (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Popeye (1983) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Popeye (1983) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Q-bert's Qubes (1983) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Q-bert's Qubes (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - Death Star Battle (1983) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - Death Star Battle (1983) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 create mode 100644 test/roms/bankswitching/E0/Super Cobra (1982) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Super Cobra (1982) (Parker Bros) [b1].a26 create mode 100644 test/roms/bankswitching/E0/Super Cobra (1982) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E0/Tooth Protectors (1983) (DSD-Camelot).a26 create mode 100644 test/roms/bankswitching/E0/Tutankham (1983) (Parker Bros) (PAL).a26 create mode 100644 test/roms/bankswitching/E0/Tutankham (1983) (Parker Bros).a26 create mode 100644 test/roms/bankswitching/E7/Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 create mode 100644 test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel) [b1].a26 create mode 100644 test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 create mode 100644 test/roms/bankswitching/E7/Burgertime (1982) (Mattel).a26 create mode 100644 test/roms/bankswitching/E7/Masters of the Universe - The Power of He-Man (1983) (Mattel).a26 create mode 100644 test/roms/bankswitching/E7/fruitcake29Oct09.bin create mode 100644 test/roms/bankswitching/E7/fruitcake_22Oct09.bin create mode 100644 test/roms/bankswitching/EF/64kbb.EFEF_tagged.bin create mode 100644 test/roms/bankswitching/EF/EF.bin create mode 100644 test/roms/bankswitching/EF/RobotZed_07.bas.bin create mode 100644 test/roms/bankswitching/EF/megaboyEF.bin create mode 100644 test/roms/bankswitching/EFSC/64kSC.EFSC_tagged.bin create mode 100644 test/roms/bankswitching/EFSC/Distopia0.95_NTSC.bas.bin create mode 100644 test/roms/bankswitching/EFSC/EFSC.bin create mode 100644 test/roms/bankswitching/F4/AVGN KO Boxing 2009-09-06 NTSC.bin create mode 100644 test/roms/bankswitching/F4/Asteroids Attack (2020) (Demo, Game Select).bin create mode 100644 test/roms/bankswitching/F4SC/Fatal Run (NTSC prototype).bin create mode 100644 test/roms/bankswitching/F6/Acid Drop (1992) (Salu) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Acid Drop (1992) (Salu) (PAL) [b1].a26 create mode 100644 test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 create mode 100644 test/roms/bankswitching/F6/Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26 create mode 100644 test/roms/bankswitching/F6/California Games (1988) (Epyx) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/California Games (1988) (Epyx) [!].a26 create mode 100644 test/roms/bankswitching/F6/Double Dragon (1989) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Double Dragon (1989) (Activision).a26 create mode 100644 test/roms/bankswitching/F6/Garfield (Prototype).a26 create mode 100644 test/roms/bankswitching/F6/Midnight Magic (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Midnight Magic (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F6/Pete Rose Baseball (1988) (Absolute).a26 create mode 100644 test/roms/bankswitching/F6/Rampage! (1989) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Rampage! (1989) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/F6/Rampage! (1989) (Activision) [b1].a26 create mode 100644 test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari).a26 create mode 100644 test/roms/bankswitching/F6/Sentinel (1990) (Atari).a26 create mode 100644 test/roms/bankswitching/F6/Solaris (1986) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Solaris (1986) (Atari).a26 create mode 100644 test/roms/bankswitching/F6/Summer Games (1987) (Epyx) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6/Summer Games (1987) (Epyx).a26 create mode 100644 test/roms/bankswitching/F6/Super Box (CCE).a26 create mode 100644 test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26 create mode 100644 test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (1988) (Absolute) [a1].a26 create mode 100644 test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari) (NTSC) (Prototype) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari) [p1].a26 create mode 100644 test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Dig Dug (1983) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Jr. Pac-Man (1984) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Jr. Pac-Man (1986) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Millipede (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Millipede (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Radar Lock (1989) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Radar Lock (1989) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Sprint Master (1988) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Sprint Master (1988) (Atari).a26 create mode 100644 test/roms/bankswitching/F6SC/Super Football (1988) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F6SC/Super Football (1988) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Aquaventure (1983) (Atari) (Prototype).a26 create mode 100644 test/roms/bankswitching/F8/Aquaventure (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Asteroids (1979) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Asteroids (1979) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Asteroids (1979) (Atari) (PAL) [a2][!].a26 create mode 100644 test/roms/bankswitching/F8/Asteroids (1979) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Asteroids (1979) (Atari) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Asteroids 2 (Asteroids Hack).a26 create mode 100644 test/roms/bankswitching/F8/Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26 create mode 100644 test/roms/bankswitching/F8/Asteroids SS (Asteroids Hack).a26 create mode 100644 test/roms/bankswitching/F8/Asteroids [p1].a26 create mode 100644 test/roms/bankswitching/F8/Battlezone (1983) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Battlezone (1983) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Battlezone (1983) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Berenstain Bears (1982) (Coleco).a26 create mode 100644 test/roms/bankswitching/F8/Centipede (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Centipede (1982) (Atari) (Prototype) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Centipede (1982) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Centipede 2k (2000) (PD).a26 create mode 100644 test/roms/bankswitching/F8/Cyber Goth Galaxian by Manuel Polik (Galaxian Hack).a26 create mode 100644 test/roms/bankswitching/F8/Elk Attack (1987) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Galaxian (1983) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Galaxian (1983) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Galaxian by Jess Ragan (Enhanced Graphics).a26 create mode 100644 test/roms/bankswitching/F8/Gravitar (1988) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Gravitar (1988) (Atari) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Gravitar (1988) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [a1].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [o1].a26 create mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Joust (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Joust (1982) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Joust (1982) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) [!].a26 create mode 100644 test/roms/bankswitching/F8/Jungle Hunt (1982) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Kung Fu Master (1984) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Kung Fu Master (1984) (Activision) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Kung Fu Master (1984) (Activision).a26 create mode 100644 test/roms/bankswitching/F8/Kung Fu Master (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Mr. Roboto by Paul Slocum (Berzerk Hack).a26 create mode 100644 test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari) [h1].a26 create mode 100644 test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Ms. Pac-Man (1982) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Pengo (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Pengo - 1 Player Only (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Phoenix (1982) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Phoenix (1982) (CCE).a26 create mode 100644 test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Spy Hunter (1983) (Sega) [!].a26 create mode 100644 test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [a1][!].a26 create mode 100644 test/roms/bankswitching/F8/Vanguard (1982) (Atari).a26 create mode 100644 test/roms/bankswitching/F8/Vanguard (CCE).a26 create mode 100644 test/roms/bankswitching/F8/cfg/a2600.cfg create mode 100644 test/roms/bankswitching/F8/cfg/default.cfg create mode 100644 test/roms/bankswitching/F8SC/Defender II (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8SC/Defender II (1984) (Atari) [b1].a26 create mode 100644 test/roms/bankswitching/F8SC/Defender II (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/F8SC/Elevator Action (Atari) (Prototype).a26 create mode 100644 test/roms/bankswitching/F8SC/Stargate (1984) (Atari) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/F8SC/Stargate (1984) (Atari) [o1].a26 create mode 100644 test/roms/bankswitching/F8SC/Stargate (1984) (Atari).a26 create mode 100644 test/roms/bankswitching/FA/Mountain King (1983) (CBS Electronics).bin create mode 100644 test/roms/bankswitching/FA2/Star Castle Arcade (165, Harmony).cu.bin create mode 100644 test/roms/bankswitching/FA2/fa2plus_test.bin create mode 100644 test/roms/bankswitching/FE/Decathlon (1983) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/FE/Decathlon (1983) (Activision) (PAL) [b1].a26 create mode 100644 test/roms/bankswitching/FE/Decathlon (1983) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [!].a26 create mode 100644 test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [b1].a26 create mode 100644 test/roms/bankswitching/FE/Robot Tank (1983) (Activision) [!].a26 create mode 100644 test/roms/bankswitching/FE/Robot Tank TV by Thomas Jentzsch (2 Joystick Hack).a26 create mode 100644 test/roms/bankswitching/FE/Space Shuttle (1983) (Activision) [FE].bin create mode 100644 test/roms/bankswitching/FE/Thwocker (Activision) (Prototype) [!].a26 create mode 100644 test/roms/bankswitching/MDM/MDM-test.bin create mode 100644 test/roms/bankswitching/SB/menu_multicart128k.bin create mode 100644 test/roms/bankswitching/SB/t128.bin create mode 100644 test/roms/bankswitching/SB/t256.bin create mode 100644 test/roms/bankswitching/Sub2K/2k.bin create mode 100644 test/roms/bankswitching/Sub2K/4k.bin create mode 100644 test/roms/bankswitching/Sub2K/Pong256B.bin create mode 100644 test/roms/bankswitching/Sub2K/Pong512B.bin create mode 100644 test/roms/bankswitching/Sub2K/Vong_1K.bin create mode 100644 test/roms/bankswitching/UA/Fathon (Digivision).bin create mode 100644 test/roms/bankswitching/UA/FunkyFish.bin create mode 100644 test/roms/bankswitching/UA/Mickey (Digivision).bin create mode 100644 test/roms/bankswitching/UA/Pleiades.bin create mode 100644 test/roms/bankswitching/UA/Time Pilot (Rentacom).bin create mode 100644 test/roms/bankswitching/UA/UA_Limited.bin create mode 100644 test/roms/bankswitching/UA/Vanguard (Rentacom).bin create mode 100644 test/roms/bankswitching/UA/ginger.zip create mode 100644 test/roms/bankswitching/UA/gingerUA.bin create mode 100644 test/roms/bankswitching/WD/Pursuit of the Pink Panther (Probe) (Prototype) [bad dump].bin create mode 100644 test/roms/bankswitching/WD/Pursuit of the Pink Panther (Probe) (Prototype) [fixed].bin create mode 100644 test/roms/bankswitching/_code/0840_EconoBanking.asm create mode 100644 test/roms/bankswitching/_code/0840_EconoBanking.bin create mode 100644 test/roms/bankswitching/_code/3F.asm create mode 100644 test/roms/bankswitching/_code/3F.bin create mode 100644 test/roms/bankswitching/_code/E0.asm create mode 100644 test/roms/bankswitching/_code/E0.bin create mode 100644 test/roms/bankswitching/_code/E7.asm create mode 100644 test/roms/bankswitching/_code/E7.bin create mode 100644 test/roms/bankswitching/_code/EF.asm create mode 100644 test/roms/bankswitching/_code/EF.bin create mode 100644 test/roms/bankswitching/_code/EFSC.asm create mode 100644 test/roms/bankswitching/_code/EFSC.bin create mode 100644 test/roms/bankswitching/_code/F0_MegaBoy.asm create mode 100644 test/roms/bankswitching/_code/F0_MegaBoy.bin create mode 100644 test/roms/bankswitching/_code/F4.asm create mode 100644 test/roms/bankswitching/_code/F4.bin create mode 100644 test/roms/bankswitching/_code/F4SC.asm create mode 100644 test/roms/bankswitching/_code/F4SC.bin create mode 100644 test/roms/bankswitching/_code/F6.asm create mode 100644 test/roms/bankswitching/_code/F6.bin create mode 100644 test/roms/bankswitching/_code/F6SC.asm create mode 100644 test/roms/bankswitching/_code/F6SC.bin create mode 100644 test/roms/bankswitching/_code/F8.asm create mode 100644 test/roms/bankswitching/_code/F8.bin create mode 100644 test/roms/bankswitching/_code/F8SC.asm create mode 100644 test/roms/bankswitching/_code/F8SC.bin create mode 100644 test/roms/bankswitching/_code/FA_CBS+RAM.asm create mode 100644 test/roms/bankswitching/_code/FA_CBS+RAM.bin create mode 100644 test/roms/bankswitching/_code/SB_128K.asm create mode 100644 test/roms/bankswitching/_code/SB_128K.bin create mode 100644 test/roms/bankswitching/_code/SB_256K.asm create mode 100644 test/roms/bankswitching/_code/SB_256K.bin create mode 100644 test/roms/bankswitching/_code/UA_Limited.asm create mode 100644 test/roms/bankswitching/_code/UA_Limited.bin create mode 100644 test/roms/bankswitching/_code/macro.h create mode 100644 test/roms/bankswitching/_code/test.bin create mode 100644 test/roms/bankswitching/_code/test.lst create mode 100644 test/roms/bankswitching/_code/test.sym create mode 100644 test/roms/bankswitching/_code/vcs.h create mode 100644 test/roms/bankswitching/_code/x07.asm create mode 100644 test/roms/bankswitching/_code/x07.bin create mode 100644 test/roms/bankswitching/_code/xaa create mode 100644 test/roms/bankswitching/_code/xab create mode 100644 test/roms/controller/genesis/Asteroids (Genesis).bin create mode 100644 test/roms/controller/genesis/Defender (Genesis).bin create mode 100644 test/roms/controller/genesis/Defender 2 (Genesis).bin create mode 100644 test/roms/controller/genesis/Defender Arcade (Genesis).bin create mode 100644 test/roms/controller/genesis/Defender MegaDrive (PAL) (Genesis).bin create mode 100644 test/roms/controller/genesis/Double Dragon (PAL) (Genesis).zip create mode 100644 test/roms/controller/genesis/Enduro (Genesis).zip create mode 100644 test/roms/controller/genesis/Gingerbread Man (Fred Quimby) (Genesis).zip create mode 100644 test/roms/controller/genesis/H.E.R.O. (Genesis).bin create mode 100644 test/roms/controller/genesis/Kangaroo (Genesis).zip create mode 100644 test/roms/controller/genesis/Kung Fu Master (Genesis).zip create mode 100644 test/roms/controller/genesis/Mission Survive (PAL) (Genesis).zip create mode 100644 test/roms/controller/genesis/Montezuma's Revenge (PAL) (Genesis).zip create mode 100644 test/roms/controller/genesis/Moon Patrol (Genesis).bin create mode 100644 test/roms/controller/genesis/Moon Patrol Arcade (Genesis).bin create mode 100644 test/roms/controller/genesis/Mouse Trap (Genesis).bin create mode 100644 test/roms/controller/genesis/Omega Race (Genesis).zip create mode 100644 test/roms/controller/genesis/Sea Hawk (Genesis).bin create mode 100644 test/roms/controller/genesis/Solaris (Genesis).bin create mode 100644 test/roms/controller/genesis/Spy Hunter (Genesis).bin create mode 100644 test/roms/controller/genesis/Star Trek (Genesis).zip create mode 100644 test/roms/controller/genesis/Star Voyager (Genesis).bin create mode 100644 test/roms/controller/genesis/Starmaster (Genesis).zip create mode 100644 test/roms/controller/genesis/Super Cobra (Genesis).zip create mode 100644 test/roms/controller/genesis/Yars' Revenge (Genesis).bin rename {profile => test/roms/profile}/128.bin (100%) rename {profile => test/roms/profile}/README.md (100%) rename {profile => test/roms/profile}/catharsis_theory.bin (100%) diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index e7cc60024..06333b13c 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -84,6 +84,7 @@ using ByteArray = std::vector; using ShortArray = std::vector; using StringList = std::vector; using ByteBuffer = std::unique_ptr; // NOLINT +using WordBuffer = std::unique_ptr; // NOLINT // We use KB a lot; let's make a literal for it constexpr uInt32 operator "" _KB(unsigned long long size) diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index 9413ce5c0..de845b197 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -98,9 +98,9 @@ CartridgeE0Widget::CartridgeE0Widget( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeE0Widget::loadConfig() { - mySlice0->setSelectedIndex(myCart.myCurrentSlice[0]); - mySlice1->setSelectedIndex(myCart.myCurrentSlice[1]); - mySlice2->setSelectedIndex(myCart.myCurrentSlice[2]); + mySlice0->setSelectedIndex(myCart.myCurrentBank[0]); + mySlice1->setSelectedIndex(myCart.myCurrentBank[1]); + mySlice2->setSelectedIndex(myCart.myCurrentBank[2]); CartDebugWidget::loadConfig(); } @@ -114,13 +114,13 @@ void CartridgeE0Widget::handleCommand(CommandSender* sender, switch(cmd) { case kSlice0Changed: - myCart.segmentZero(mySlice0->getSelected()); + myCart.bank(mySlice0->getSelected(), 0); break; case kSlice1Changed: - myCart.segmentOne(mySlice1->getSelected()); + myCart.bank(mySlice1->getSelected(), 1); break; case kSlice2Changed: - myCart.segmentTwo(mySlice2->getSelected()); + myCart.bank(mySlice2->getSelected(), 2); break; default: break; @@ -136,9 +136,9 @@ string CartridgeE0Widget::bankState() ostringstream& buf = buffer(); buf << "Slices: " << std::dec - << seg0[myCart.myCurrentSlice[0]] << " / " - << seg1[myCart.myCurrentSlice[1]] << " / " - << seg2[myCart.myCurrentSlice[2]]; + << seg0[myCart.myCurrentBank[0]] << " / " + << seg1[myCart.myCurrentBank[1]] << " / " + << seg2[myCart.myCurrentBank[2]]; return buf.str(); } diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index ff3a9b52c..3788a95bc 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -34,17 +34,17 @@ void CartridgeE0::reset() // Setup segments to some default slices if(randomStartBank()) { - segmentZero(mySystem->randGenerator().next() % 8); - segmentOne(mySystem->randGenerator().next() % 8); - segmentTwo(mySystem->randGenerator().next() % 8); + bank(mySystem->randGenerator().next() % 8, 0); + bank(mySystem->randGenerator().next() % 8, 1); + bank(mySystem->randGenerator().next() % 8, 2); } else { - segmentZero(4); - segmentOne(5); - segmentTwo(6); + bank(4, 0); + bank(5, 1); + bank(6, 2); } - myCurrentSlice[3] = 7; // fixed + myCurrentBank[3] = bankCount() - 1; // fixed myBankChanged = true; } @@ -69,7 +69,7 @@ void CartridgeE0::install(System& system) // Set the page accessing methods for the hot spots in the last segment access.directPeekBase = nullptr; - access.romAccessBase = &myRomAccessBase[0x1FC0]; // TJ: is this the correct address (or 0x1FE0)? + access.romAccessBase = &myRomAccessBase[0x1FC0]; access.romPeekCounter = &myRomAccessCounter[0x1FC0]; access.romPokeCounter = &myRomAccessCounter[0x1FC0 + myAccessSize]; access.type = System::PageAccessType::READ; @@ -81,7 +81,7 @@ void CartridgeE0::install(System& system) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt16 CartridgeE0::getBank(uInt16 address) const { - return myCurrentSlice[(address & 0xFFF) >> 10]; // 1K slices + return myCurrentBank[(address & 0xFFF) >> 10]; // 1K slices } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -98,18 +98,18 @@ uInt8 CartridgeE0::peek(uInt16 address) // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FE7)) { - segmentZero(address & 0x0007); + bank(address & 0x0007, 0); } else if((address >= 0x0FE8) && (address <= 0x0FEF)) { - segmentOne(address & 0x0007); + bank(address & 0x0007, 1); } else if((address >= 0x0FF0) && (address <= 0x0FF7)) { - segmentTwo(address & 0x0007); + bank(address & 0x0007, 2); } - return myImage[(myCurrentSlice[address >> 10] << 10) + (address & 0x03FF)]; + return myImage[(myCurrentBank[address >> 10] << 10) + (address & 0x03FF)]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -120,83 +120,38 @@ bool CartridgeE0::poke(uInt16 address, uInt8) // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FE7)) { - segmentZero(address & 0x0007); + bank(address & 0x0007, 0); } else if((address >= 0x0FE8) && (address <= 0x0FEF)) { - segmentOne(address & 0x0007); + bank(address & 0x0007, 1); } else if((address >= 0x0FF0) && (address <= 0x0FF7)) { - segmentTwo(address & 0x0007); + bank(address & 0x0007, 2); } return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentZero(uInt16 slice) +void CartridgeE0::bank(uInt16 bank, uInt16 slice) { if(bankLocked()) return; // Remember the new slice - myCurrentSlice[0] = slice; - uInt16 offset = slice << 10; + myCurrentBank[slice] = bank; + uInt16 sliceOffset = slice * (1 << 10); + uInt16 bankOffset = bank << 10; // Setup the page access methods for the current bank System::PageAccess access(this, System::PageAccessType::READ); - for(uInt16 addr = 0x1000; addr < 0x1400; addr += System::PAGE_SIZE) + for(uInt16 addr = 0x1000 + sliceOffset; addr < 0x1000 + sliceOffset + 0x400; addr += System::PAGE_SIZE) { - access.directPeekBase = &myImage[offset + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentOne(uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentSlice[1] = slice; - uInt16 offset = slice << 10; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1400; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::segmentTwo(uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentSlice[2] = slice; - uInt16 offset = slice << 10; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1800; addr < 0x1C00; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + myAccessSize]; + access.directPeekBase = &myImage[bankOffset + (addr & 0x03FF)]; + access.romAccessBase = &myRomAccessBase[bankOffset + (addr & 0x03FF)]; + access.romPeekCounter = &myRomAccessCounter[bankOffset + (addr & 0x03FF)]; + access.romPokeCounter = &myRomAccessCounter[bankOffset + (addr & 0x03FF) + myAccessSize]; mySystem->setPageAccess(addr, access); } myBankChanged = true; @@ -206,7 +161,7 @@ void CartridgeE0::segmentTwo(uInt16 slice) bool CartridgeE0::patch(uInt16 address, uInt8 value) { address &= 0x0FFF; - myImage[(myCurrentSlice[address >> 10] << 10) + (address & 0x03FF)] = value; + myImage[(myCurrentBank[address >> 10] << 10) + (address & 0x03FF)] = value; return true; } @@ -222,7 +177,7 @@ bool CartridgeE0::save(Serializer& out) const { try { - out.putShortArray(myCurrentSlice.data(), myCurrentSlice.size()); + out.putShortArray(myCurrentBank.data(), myCurrentBank.size()); } catch(...) { @@ -238,7 +193,7 @@ bool CartridgeE0::load(Serializer& in) { try { - in.getShortArray(myCurrentSlice.data(), myCurrentSlice.size()); + in.getShortArray(myCurrentBank.data(), myCurrentBank.size()); } catch(...) { diff --git a/src/emucore/CartE0.hxx b/src/emucore/CartE0.hxx index 0a9453ab2..35513be85 100644 --- a/src/emucore/CartE0.hxx +++ b/src/emucore/CartE0.hxx @@ -156,32 +156,18 @@ class CartridgeE0 : public Cartridge private: /** - Install the specified slice for segment zero + Install the specified slice for segment (bank) 0..2 @param slice The slice to map into the segment */ - void segmentZero(uInt16 slice); - - /** - Install the specified slice for segment one - - @param slice The slice to map into the segment - */ - void segmentOne(uInt16 slice); - - /** - Install the specified slice for segment two - - @param slice The slice to map into the segment - */ - void segmentTwo(uInt16 slice); + void bank(uInt16 bank, uInt16 slice); private: // The 8K ROM image of the cartridge std::array myImage; // Indicates the slice mapped into each of the four segments - std::array myCurrentSlice; + std::array myCurrentBank; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx new file mode 100644 index 000000000..ff4113ad4 --- /dev/null +++ b/src/emucore/CartEnhanced.cxx @@ -0,0 +1,259 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#include "System.hxx" +#include "CartEnhanced.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, + const string& md5, const Settings& settings) + : Cartridge(settings, md5), + mySize(size) +{ + // Allocate array for the ROM image + myImage = make_unique(mySize); + + // Copy the ROM image into my buffer + std::copy_n(image.get(), mySize, myImage.get()); + + // Copy the ROM image into my buffer + createRomAccessArrays(mySize); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartridgeEnhanced::install(System& system) +{ + // Allocate array for the current bank segments slices + myCurrentBankOffset = make_unique(BANK_SEGS); + std::fill_n(myCurrentBankOffset.get(), BANK_SEGS, 0); + + // Allocate array for the RAM area + myRAM = make_unique(myRamSize); + + // Setup page access + mySystem = &system; + + System::PageAccess access(this, System::PageAccessType::READ); + + // Set the page accessing method for the RAM writing pages + // Map access to this class, since we need to inspect all accesses to + // check if RWP happens + access.type = System::PageAccessType::WRITE; + for(uInt16 addr = 0x1000; addr < 0x1000 + myRamSize; addr += System::PAGE_SIZE) + { + uInt16 offset = addr & myRamMask; + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + + // Set the page accessing method for the RAM reading pages + access.type = System::PageAccessType::READ; + for(uInt16 addr = 0x1000 + myRamSize; addr < 0x1000 + myRamSize * 2; addr += System::PAGE_SIZE) + { + uInt16 offset = addr & myRamMask; + access.directPeekBase = &myRAM[offset]; + access.romAccessBase = &myRomAccessBase[myRamSize + offset]; + access.romPeekCounter = &myRomAccessCounter[myRamSize + offset]; + access.romPokeCounter = &myRomAccessCounter[myRamSize + offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + + // Install pages for the startup bank + bank(startBank()); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartridgeEnhanced::reset() +{ + initializeRAM(myRAM.get(), myRamSize); + + initializeStartBank(getStartBank()); + + // Upon reset we switch to the reset bank + bank(startBank()); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt8 CartridgeEnhanced::peek(uInt16 address) +{ + uInt16 peekAddress = address; + address &= myBankMask; + + checkSwitchBank(address); + + if(address < myRamSize) // Write port is at 0xF000 - 0xF07F (128 bytes) + return peekRAM(myRAM[address], peekAddress); + else + return myImage[myBankOffset + address]; + return myImage[myCurrentBankOffset[address >> BANK_SHIFT] + (address & BANK_MASK)]; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) +{ + address &= myBankMask; + + // Switch banks if necessary + if (checkSwitchBank(address & myBankMask)) + return false; + + if(myRamSize) + { + if(!(address & myRamSize)) + { + pokeRAM(myRAM[address & myRamMask], address, value); + return true; + } + else + { + // Writing to the read port should be ignored, but trigger a break if option enabled + uInt8 dummy; + + pokeRAM(dummy, address, value); + myRamWriteAccess = address; + } + } + return false; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::bank(uInt16 bank, uInt16 slice) +{ + if(bankLocked()) return false; + + // Remember what bank we're in + myBankOffset = bank << myBankShift; + + uInt16 romHotspot = this->romHotspot(); + uInt16 fromAddr = 0x1000 + myRamSize * 2; + uInt16 toAddr; + + if(romHotspot) + { + System::PageAccess access(this, System::PageAccessType::READ); + + // Set the page accessing methods for the hot spots + for(uInt16 addr = (romHotspot & ~System::PAGE_MASK); addr < 0x1000 + myBankSize; + addr += System::PAGE_SIZE) + { + uInt16 offset = myBankOffset + (addr & myBankMask); + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + toAddr = romHotspot; + } + else + toAddr = 0x1000 + myBankSize; + + System::PageAccess access(this, System::PageAccessType::READ); + + // Setup the page access methods for the current bank + for(uInt16 addr = (fromAddr & ~System::PAGE_MASK); addr < (toAddr & ~System::PAGE_MASK); + addr += System::PAGE_SIZE) + { + uInt16 offset = myBankOffset + (addr & myBankMask); + if(myDirectPeek) + access.directPeekBase = &myImage[offset]; + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + + return myBankChanged = true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 CartridgeEnhanced::getBank(uInt16) const +{ + return myBankOffset >> myBankShift; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 CartridgeEnhanced::bankCount() const +{ + return uInt16(mySize >> myBankShift); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) +{ + address &= myBankMask; + + if(address < myRamSize * 2) + { + // Normally, a write to the read port won't do anything + // However, the patch command is special in that ignores such + // cart restrictions + myRAM[address & myRamMask] = value; + } + else + myImage[myBankOffset + address] = value; + + return myBankChanged = true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const uInt8* CartridgeEnhanced::getImage(size_t& size) const +{ + size = mySize; + return myImage.get(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::save(Serializer& out) const +{ + try + { + out.putShort(myBankOffset); + if(myRamSize) + out.putByteArray(myRAM.get(), myRamSize); + + } + catch(...) + { + cerr << "ERROR: << " << name() << "::save" << endl; + return false; + } + + return true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::load(Serializer& in) +{ + try + { + myBankOffset = in.getShort(); + if(myRamSize) + in.getByteArray(myRAM.get(), myRamSize); + } + catch(...) + { + cerr << "ERROR: " << name() << "::load" << endl; + return false; + } + + // Remember what bank we were in + bank(myBankOffset >> myBankShift); + + return true; +} diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx new file mode 100644 index 000000000..22d253b6a --- /dev/null +++ b/src/emucore/CartEnhanced.hxx @@ -0,0 +1,204 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef CARTRIDGEENHANCED_HXX +#define CARTRIDGEENHANCED_HXX + +class System; + +#include "bspf.hxx" +#include "Cart.hxx" + +/** + Enhanced cartridge base class used for multiple cart types. + + @author Thomas Jentzsch +*/ +class CartridgeEnhanced : public Cartridge +{ + public: + /** + Create a new cartridge using the specified image + + @param image Pointer to the ROM image + @param size The size of the ROM image + @param md5 The md5sum of the ROM image + @param settings A reference to the various settings (read-only) + */ + CartridgeEnhanced(const ByteBuffer& image, size_t size, const string& md5, + const Settings& settings); + virtual ~CartridgeEnhanced() = default; + + public: + /** + Install cartridge in the specified system. Invoked by the system + when the cartridge is attached to it. + + @param system The system the device should install itself in + */ + void install(System& system) override; + + /** + Reset device to its power-on state + */ + void reset() override; + + + /** + Install pages for the specified bank in the system. + + @param bank The bank that should be installed in the system + */ + bool bank(uInt16 bank, uInt16 slice); + + /** + Install pages for the specified bank in the system. + + @param bank The bank that should be installed in the system + */ + bool bank(uInt16 bank) override { return this->bank(bank, 0); } + + /** + Get the current bank. + + @param address The address to use when querying the bank + */ + uInt16 getBank(uInt16 address = 0) const override; + + /** + Query the number of banks supported by the cartridge. + */ + uInt16 bankCount() const override; + + /** + Patch the cartridge ROM. + + @param address The ROM address to patch + @param value The value to place into the address + @return Success or failure of the patch operation + */ + bool patch(uInt16 address, uInt8 value) override; + + /** + Access the internal ROM image for this cartridge. + + @param size Set to the size of the internal ROM image data + @return A pointer to the internal ROM image data + */ + const uInt8* getImage(size_t& size) const override; + + /** + Save the current state of this cart to the given Serializer. + + @param out The Serializer object to use + @return False on any errors, else true + */ + bool save(Serializer& out) const override; + + /** + Load the current state of this cart from the given Serializer. + + @param in The Serializer object to use + @return False on any errors, else true + */ + bool load(Serializer& in) override; + + public: + /** + Get the byte at the specified address. + + @return The byte at the specified address + */ + uInt8 peek(uInt16 address) override; + + /** + Change the byte at the specified address to the given value + + @param address The address where the value should be stored + @param value The value to be stored at the address + @return True if the poke changed the device address space, else false + */ + bool poke(uInt16 address, uInt8 value) override; + + protected: + // Pointer to a dynamically allocated ROM image of the cartridge + ByteBuffer myImage{nullptr}; + + // Pointer to a dynamically allocated RAM area of the cartridge + ByteBuffer myRAM{nullptr}; + + uInt16 myBankShift{BANK_SHIFT}; + + uInt16 myBankSize{BANK_SIZE}; + + uInt16 myBankMask{BANK_MASK}; + + uInt16 myRamSize{RAM_SIZE}; + + uInt16 myRamMask{RAM_MASK}; + + bool myDirectPeek{true}; + + // Indicates the offset into the ROM image (aligns to current bank) + uInt16 myBankOffset{0}; + + // Indicates the slice mapped into each of the bank segments + WordBuffer myCurrentBankOffset{nullptr}; + + private: + // log(ROM bank size) / log(2) + static constexpr uInt16 BANK_SHIFT = 12; + + // bank size + static constexpr uInt16 BANK_SIZE = 1 << BANK_SHIFT; // 2 ^ 12 = 4K + + // bank mask + static constexpr uInt16 BANK_MASK = BANK_SIZE - 1; + + // bank segments + static constexpr uInt16 BANK_SEGS = 1; + + // RAM size + static constexpr uInt16 RAM_SIZE = 0; + + // RAM mask + static constexpr uInt16 RAM_MASK = 0; + + // Size of the ROM image + size_t mySize{0}; + + protected: + /** + Check hotspots and switch bank if triggered. + */ + virtual bool checkSwitchBank(uInt16 address, uInt8 value = 0) = 0; + + private: + virtual uInt16 getStartBank() const { return 0; } + + virtual uInt16 romHotspot() const { return 0; } + + private: + // Following constructors and assignment operators not supported + CartridgeEnhanced() = delete; + CartridgeEnhanced(const CartridgeEnhanced&) = delete; + CartridgeEnhanced(CartridgeEnhanced&&) = delete; + CartridgeEnhanced& operator=(const CartridgeEnhanced&) = delete; + CartridgeEnhanced& operator=(CartridgeEnhanced&&) = delete; +}; + +#endif diff --git a/src/emucore/CartF0.cxx b/src/emucore/CartF0.cxx index a69c3c8ed..9f021a685 100644 --- a/src/emucore/CartF0.cxx +++ b/src/emucore/CartF0.cxx @@ -15,159 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF0.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF0::CartridgeF0(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::reset() +bool CartridgeF0::checkSwitchBank(uInt16 address, uInt8) { - // Upon reset we switch to the startup bank - initializeStartBank(15); - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF0::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch to next bank + // Switch banks if necessary if(address == 0x0FF0) - incbank(); - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch to next bank - if(address == 0x0FF0) - incbank(); - + { + // Switch to next bank + uInt8 nextBank = ((getBank()) + 1) & 0x0F; + bank(nextBank); + return true; + } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0::incbank() -{ - // Determine current bank, and increment to the next one - uInt8 nextBank = ((myBankOffset >> 12) + 1) & 0x0F; - bank(nextBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FF0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF0::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF0::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF0::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeF0::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF0::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeF0::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartF0.hxx b/src/emucore/CartF0.hxx index d4733a784..07123bf34 100644 --- a/src/emucore/CartF0.hxx +++ b/src/emucore/CartF0.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF0_HXX #define CARTRIDGEF0_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF0Widget.hxx" #endif @@ -31,9 +28,9 @@ class System; There are 16 4K banks. Accessing $1FF0 switches to next bank. - @author Eckhard Stolberg + @author Eckhard Stolberg, Thomas Jentzsch */ -class CartridgeF0 : public Cartridge +class CartridgeF0 : public CartridgeEnhanced { friend class CartridgeF0Widget; @@ -51,71 +48,6 @@ class CartridgeF0 : public Cartridge virtual ~CartridgeF0() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,35 +67,13 @@ class CartridgeF0 : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0); - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + uInt16 romHotspot() const override { return 0x1FF0; } private: - /** - Install pages for the next bank in the system - */ - void incbank(); - - private: - // The 64K ROM image of the cartridge - std::array myImage; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + uInt16 getStartBank() const override { return 15; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF4.cxx b/src/emucore/CartF4.cxx index 8111bb1a0..0cb689228 100644 --- a/src/emucore/CartF4.cxx +++ b/src/emucore/CartF4.cxx @@ -15,155 +15,24 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Random.hxx" -#include "System.hxx" #include "CartF4.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF4::CartridgeF4(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4::reset() +bool CartridgeF4::checkSwitchBank(uInt16 address, uInt8) { - // Upon reset we switch to the startup bank - initializeStartBank(0); - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF4::peek(uInt16 address) -{ - address &= 0x0FFF; - // Switch banks if necessary + // Note: addresses could be calculated from hotspot and bank count if((address >= 0x0FF4) && (address <= 0x0FFB)) { bank(address - 0x0FF4); + return true; } - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - { - bank(address - 0x0FF4); - } - return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF4 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FF4U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF4::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeF4::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeF4::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartF4.hxx b/src/emucore/CartF4.hxx index d9c8fd346..3b4f0f141 100644 --- a/src/emucore/CartF4.hxx +++ b/src/emucore/CartF4.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF4_HXX #define CARTRIDGEF4_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF4Widget.hxx" #endif @@ -30,9 +27,9 @@ class System; Cartridge class used for Atari's 32K bankswitched games. There are eight 4K banks, accessible by read/write to $1FF4 - $1FFB. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF4 : public Cartridge +class CartridgeF4 : public CartridgeEnhanced { friend class CartridgeF4Widget; @@ -50,71 +47,6 @@ class CartridgeF4 : public Cartridge virtual ~CartridgeF4() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -134,31 +66,12 @@ class CartridgeF4 : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0); - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; + uInt16 romHotspot() const override { return 0x1FF4; } - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - - private: - // The 32K ROM image of the cartridge - std::array myImage; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - - private: +private: // Following constructors and assignment operators not supported CartridgeF4() = delete; CartridgeF4(const CartridgeF4&) = delete; diff --git a/src/emucore/CartF4SC.cxx b/src/emucore/CartF4SC.cxx index 24496b161..5364f2eb4 100644 --- a/src/emucore/CartF4SC.cxx +++ b/src/emucore/CartF4SC.cxx @@ -15,211 +15,13 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF4SC.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF4SC::CartridgeF4SC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeF4(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x007F]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x07F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - access.romPeekCounter = &myRomAccessCounter[0x80 + (addr & 0x007F)]; - access.romPokeCounter = &myRomAccessCounter[0x80 + (addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF4SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - bank(address - 0x0FF4); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FF4) && (address <= 0x0FFB)) - { - bank(address - 0x0FF4); - return false; - } - - if(!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF4 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1FF4U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4SC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF4SC::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF4SC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF4SC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF4SC::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF4SC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; + myRamMask = RAM_MASK; } diff --git a/src/emucore/CartF4SC.hxx b/src/emucore/CartF4SC.hxx index 20c003970..5f49a33a6 100644 --- a/src/emucore/CartF4SC.hxx +++ b/src/emucore/CartF4SC.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF4SC_HXX #define CARTRIDGEF4SC_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartF4.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF4SCWidget.hxx" #endif @@ -31,9 +28,9 @@ class System; RAM. There are eight 4K banks, accessible by read/write to $1FF4 - $1FFB. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF4SC : public Cartridge +class CartridgeF4SC : public CartridgeF4 { friend class CartridgeF4SCWidget; @@ -51,71 +48,6 @@ class CartridgeF4SC : public Cartridge virtual ~CartridgeF4SC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,32 +67,12 @@ class CartridgeF4SC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 32K ROM image of the cartridge - std::array myImage; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + // RAM mask + static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF6.cxx b/src/emucore/CartF6.cxx index a7a8dec2b..567424d7a 100644 --- a/src/emucore/CartF6.cxx +++ b/src/emucore/CartF6.cxx @@ -15,195 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF6.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF6::CartridgeF6(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6::reset() +bool CartridgeF6::checkSwitchBank(uInt16 address, uInt8) { - // Upon reset we switch to the startup bank - initializeStartBank(0); - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6::install(System& system) -{ - mySystem = &system; - - // Upon install we'll setup the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF6::peek(uInt16 address) -{ - address &= 0x0FFF; - // Switch banks if necessary - switch(address) + // Note: addresses could be calculated from hotspot and bank count + if((address >= 0x0FF6) && (address <= 0x0FF9)) { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; + bank(address - 0x0FF6); + return true; } return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF6 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FF6U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6::bankCount() const -{ - return 4; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF6::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeF6::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeF6::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartF6.hxx b/src/emucore/CartF6.hxx index 4dc2c62b5..275727786 100644 --- a/src/emucore/CartF6.hxx +++ b/src/emucore/CartF6.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF6_HXX #define CARTRIDGEF6_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF6Widget.hxx" #endif @@ -30,9 +27,9 @@ class System; Cartridge class used for Atari's 16K bankswitched games. There are four 4K banks, accessible by read/write to $1FF6 - $1FF9. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF6 : public Cartridge +class CartridgeF6 : public CartridgeEnhanced { friend class CartridgeF6Widget; @@ -50,71 +47,6 @@ class CartridgeF6 : public Cartridge virtual ~CartridgeF6() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -134,29 +66,10 @@ class CartridgeF6 : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - - private: - // The 16K ROM image of the cartridge - std::array myImage; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + uInt16 romHotspot() const override { return 0x1FF6; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF6SC.cxx b/src/emucore/CartF6SC.cxx index 60b998182..034f02bce 100644 --- a/src/emucore/CartF6SC.cxx +++ b/src/emucore/CartF6SC.cxx @@ -15,251 +15,13 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF6SC.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF6SC::CartridgeF6SC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeF6(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x007F]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x07F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - access.romPeekCounter = &myRomAccessCounter[0x80 + (addr & 0x007F)]; - access.romPokeCounter = &myRomAccessCounter[0x80 + (addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF6SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - break; - - default: - break; - } - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::poke(uInt16 address, uInt8 value) -{ - // Switch banks if necessary - switch(address & 0x0FFF) - { - case 0x0FF6: - // Set the current bank to the first 4k bank - bank(0); - return false; - - case 0x0FF7: - // Set the current bank to the second 4k bank - bank(1); - return false; - - case 0x0FF8: - // Set the current bank to the third 4k bank - bank(2); - return false; - - case 0x0FF9: - // Set the current bank to the forth 4k bank - bank(3); - return false; - - default: - break; - } - - if(!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF6 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1FF6U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6SC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF6SC::bankCount() const -{ - return 4; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF6SC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF6SC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF6SC::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF6SC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; + myRamMask = RAM_MASK; } diff --git a/src/emucore/CartF6SC.hxx b/src/emucore/CartF6SC.hxx index 45a7c5ac3..a791a538d 100644 --- a/src/emucore/CartF6SC.hxx +++ b/src/emucore/CartF6SC.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF6SC_HXX #define CARTRIDGEF6SC_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartF6.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF6SCWidget.hxx" #endif @@ -31,9 +28,9 @@ class System; RAM. There are four 4K banks, accessible by read/write to $1FF6 - $1FF9. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF6SC : public Cartridge +class CartridgeF6SC : public CartridgeF6 { friend class CartridgeF6SCWidget; @@ -51,71 +48,6 @@ class CartridgeF6SC : public Cartridge virtual ~CartridgeF6SC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,32 +67,12 @@ class CartridgeF6SC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 16K ROM image of the cartridge - std::array myImage; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + // RAM mask + static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF8.cxx b/src/emucore/CartF8.cxx index b23ed802e..79b4708c4 100644 --- a/src/emucore/CartF8.cxx +++ b/src/emucore/CartF8.cxx @@ -15,176 +15,33 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF8.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF8::CartridgeF8(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8::reset() +bool CartridgeF8::checkSwitchBank(uInt16 address, uInt8) { - initializeStartBank(1); - - // Upon reset we switch to the reset bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF8::peek(uInt16 address) -{ - address &= 0x0FFF; - // Switch banks if necessary switch(address) { case 0x0FF8: // Set the current bank to the lower 4k bank bank(0); - break; + return true; case 0x0FF9: // Set the current bank to the upper 4k bank bank(1); - break; - - default: - break; - } - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; + return true; default: break; } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF8 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FF8U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF8::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeF8::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeF8::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartF8.hxx b/src/emucore/CartF8.hxx index b586d70ff..71e4d6e72 100644 --- a/src/emucore/CartF8.hxx +++ b/src/emucore/CartF8.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF8_HXX #define CARTRIDGEF8_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF8Widget.hxx" #endif @@ -30,9 +27,9 @@ class System; Cartridge class used for Atari's 8K bankswitched games. There are two 4K banks, accessible by read/write to $1FF8 - $1FF9. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF8 : public Cartridge +class CartridgeF8 : public CartridgeEnhanced { friend class CartridgeF8Widget; @@ -50,71 +47,6 @@ class CartridgeF8 : public Cartridge virtual ~CartridgeF8() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -134,29 +66,13 @@ class CartridgeF8 : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + uInt16 romHotspot() const override { return 0x1FF8; } private: - // The 8K ROM image of the cartridge - std::array myImage; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + uInt16 getStartBank() const override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF8SC.cxx b/src/emucore/CartF8SC.cxx index c885a9c83..e9dd5bd5c 100644 --- a/src/emucore/CartF8SC.cxx +++ b/src/emucore/CartF8SC.cxx @@ -15,231 +15,13 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "System.hxx" #include "CartF8SC.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF8SC::CartridgeF8SC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeF8(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(1); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x007F]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x07F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - access.romPeekCounter = &myRomAccessCounter[0x80 + (addr & 0x007F)]; - access.romPokeCounter = &myRomAccessCounter[0x80 + (addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF8SC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::poke(uInt16 address, uInt8 value) -{ - // Switch banks if necessary - switch(address & 0x0FFF) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - return false; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - return false; - - default: - break; - } - - if (!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF8 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1FF8U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8SC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeF8SC::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeF8SC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF8SC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeF8SC::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeF8SC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; + myRamMask = RAM_MASK; } diff --git a/src/emucore/CartF8SC.hxx b/src/emucore/CartF8SC.hxx index 592637d3d..9ec8209c4 100644 --- a/src/emucore/CartF8SC.hxx +++ b/src/emucore/CartF8SC.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGEF8SC_HXX #define CARTRIDGEF8SC_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartF8.hxx" #ifdef DEBUGGER_SUPPORT #include "CartF8SCWidget.hxx" #endif @@ -31,9 +28,9 @@ class System; RAM. There are two 4K banks, accessible by read/write to $1FF8 - $1FF9. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeF8SC : public Cartridge +class CartridgeF8SC : public CartridgeF8 { friend class CartridgeF8SCWidget; @@ -51,71 +48,6 @@ class CartridgeF8SC : public Cartridge virtual ~CartridgeF8SC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,32 +67,12 @@ class CartridgeF8SC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 8K ROM image of the cartridge - std::array myImage; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + // RAM mask + static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartFC.cxx b/src/emucore/CartFC.cxx index 565e577cf..741935c06 100644 --- a/src/emucore/CartFC.cxx +++ b/src/emucore/CartFC.cxx @@ -21,52 +21,35 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFC::CartridgeFC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFC::reset() { - initializeStartBank(0); + CartridgeEnhanced::reset(); + myTargetBank = 0; - - // Upon reset we switch to the reset bank - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFC::install(System& system) +bool CartridgeFC::checkSwitchBank(uInt16 address, uInt8) { - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFC::peek(uInt16 address) -{ - address &= 0x0FFF; - // Switch banks if necessary if(address == 0x0FFC) { // Trigger the bank switch bank(myTargetBank); + return true; } - - return myImage[myBankOffset + address]; + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeFC::poke(uInt16 address, uInt8 value) { - address &= 0x0FFF; + address &= myBankMask; // Switch banks if necessary switch (address) @@ -88,108 +71,8 @@ bool CartridgeFC::poke(uInt16 address, uInt8 value) myTargetBank = value % bankCount(); break; - case 0x0FFC: - // Trigger the bank switch - bank(myTargetBank); - break; - default: - break; + checkSwitchBank(address); } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFC::bank(uInt16 bank) -{ - if (bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for (uInt16 addr = (0x1FF8 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for (uInt16 addr = 0x1000; addr < static_cast(0x1FF8U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - myCurrentBank = myTargetBank; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFC::bankCount() const -{ - return uInt16(mySize >> 12); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFC::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFC::getImage(size_t& size) const -{ - size = mySize; - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFC::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch (...) - { - cerr << "ERROR: CartridgeFC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFC::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch (...) - { - cerr << "ERROR: CartridgeFC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartFC.hxx b/src/emucore/CartFC.hxx index cc96d0131..c1987a189 100644 --- a/src/emucore/CartFC.hxx +++ b/src/emucore/CartFC.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartFCWidget.hxx" @@ -30,12 +30,12 @@ class System; /** Cartridge class used for Amiga's 32K Power Play Arcade Video Game Album. There are eight 4K banks, writing to $1FF8 definies the two lowest bits - of the wanted bank, writeing to $1FF9 defines the high bits. Reading from + of the wanted bank, writeing to $1FF9 defines the high bits. Accessing $1FFC triggers the bank switching @author Thomas Jentzsch */ -class CartridgeFC : public Cartridge +class CartridgeFC : public CartridgeEnhanced { friend class CartridgeFCWidget; @@ -58,66 +58,6 @@ class CartridgeFC : public Cartridge */ void reset() override; - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -138,13 +78,6 @@ class CartridgeFC : public Cartridge #endif public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - /** Change the byte at the specified address to the given value @@ -154,19 +87,12 @@ class CartridgeFC : public Cartridge */ bool poke(uInt16 address, uInt8 value) override; + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; + + uInt16 romHotspot() const override { return 0x1FF8; } + private: - // The 32K ROM image of the cartridge - std::array myImage; - - // Size of the ROM image - size_t mySize{0}; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank{0}; - // Target bank defined by writing to $1FF8/9 uInt16 myTargetBank{0}; diff --git a/src/emucore/CartFE.cxx b/src/emucore/CartFE.cxx index 36cfa7c84..1837c7b88 100644 --- a/src/emucore/CartFE.cxx +++ b/src/emucore/CartFE.cxx @@ -22,20 +22,15 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFE::CartridgeFE(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); + myDirectPeek = false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFE::reset() { - // Decathlon requires this, since there is no startup vector in bank 1 - initializeStartBank(0); - - bank(startBank()); + CartridgeEnhanced::reset(); myLastAccessWasFE = false; } @@ -51,14 +46,27 @@ void CartridgeFE::install(System& system) mySystem->setPageAccess(addr, access); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeFE::checkSwitchBank(uInt16 address, uInt8 value) +{ + if(myLastAccessWasFE) + { + bank((value & 0x20) ? 0 : 1); + myLastAccessWasFE = false; // was: address == 0x01FE; + return true; + } + myLastAccessWasFE = address == 0x01FE; + return false; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeFE::peek(uInt16 address) { uInt8 value = (address < 0x200) ? mySystem->m6532().peek(address) : - myImage[myBankOffset + (address & 0x0FFF)]; + myImage[myBankOffset + (address & myBankMask)]; // Check if we hit hotspot - checkBankSwitch(address, value); + checkSwitchBank(address, value); return value; } @@ -70,83 +78,17 @@ bool CartridgeFE::poke(uInt16 address, uInt8 value) mySystem->m6532().poke(address, value); // Check if we hit hotspot - checkBankSwitch(address, value); + checkSwitchBank(address, value); return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFE::checkBankSwitch(uInt16 address, uInt8 value) -{ - if(bankLocked()) - return; - - // Did we detect $01FE on the last address bus access? - // If so, we bankswitch according to the upper 3 bits of the data bus - // NOTE: see the header file for the significance of 'value & 0x20' - if(myLastAccessWasFE) - bank((value & 0x20) ? 0 : 1); - - // On the next cycle, we use the (then) current data bus value to decode - // the bank to use - myLastAccessWasFE = address == 0x01FE; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::bank(uInt16 bank) -{ - if(bankLocked()) - return false; - - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Setup the page access methods for the current bank - // Map all of the cart accesses to call peek and poke - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFE::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFE::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFE::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFE::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeFE::save(Serializer& out) const { + CartridgeEnhanced::save(out); try { - out.putShort(myBankOffset); out.putBool(myLastAccessWasFE); } catch(...) @@ -161,9 +103,9 @@ bool CartridgeFE::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeFE::load(Serializer& in) { + CartridgeEnhanced::load(in); try { - myBankOffset = in.getShort(); myLastAccessWasFE = in.getBool(); } catch(...) diff --git a/src/emucore/CartFE.hxx b/src/emucore/CartFE.hxx index dabfafdf4..18361faf0 100644 --- a/src/emucore/CartFE.hxx +++ b/src/emucore/CartFE.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartFEWidget.hxx" #endif @@ -75,7 +75,7 @@ class System; @author Stephen Anthony; with ideas/research from Christian Speckner and alex_79 and TomSon (of AtariAge) */ -class CartridgeFE : public Cartridge +class CartridgeFE : public CartridgeEnhanced { friend class CartridgeFEWidget; @@ -106,42 +106,6 @@ class CartridgeFE : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - /** Save the current state of this cart to the given Serializer. @@ -194,20 +158,14 @@ class CartridgeFE : public Cartridge */ bool poke(uInt16 address, uInt8 value) override; - private: + protected: /** Perform bankswitch when necessary, by monitoring for $01FE on the address bus and getting the bank number from the data bus. */ - void checkBankSwitch(uInt16 address, uInt8 value); + bool checkSwitchBank(uInt16 address, uInt8 value) override; private: - // The 8K ROM image of the cartridge - std::array myImage; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - // Whether previous address by peek/poke equals $01FE (hotspot) bool myLastAccessWasFE{false}; diff --git a/src/emucore/CartMNetwork.hxx b/src/emucore/CartMNetwork.hxx index ad0decad9..ef06aae57 100644 --- a/src/emucore/CartMNetwork.hxx +++ b/src/emucore/CartMNetwork.hxx @@ -106,7 +106,7 @@ class CartridgeMNetwork : public Cartridge uInt16 getBank(uInt16 address = 0) const override; /** - Query the number of banks supported by the cartridge. + Query the number of banks supported by the cartridge. */ uInt16 bankCount() const override; diff --git a/src/emucore/CartUA.cxx b/src/emucore/CartUA.cxx index bfa1321bb..4fd5a5410 100644 --- a/src/emucore/CartUA.cxx +++ b/src/emucore/CartUA.cxx @@ -22,20 +22,9 @@ CartridgeUA::CartridgeUA(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings, bool swapHotspots) - : Cartridge(settings, md5), + : CartridgeEnhanced(image, size, md5, settings), mySwappedHotspots(swapHotspots) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeUA::reset() -{ - // Upon reset we switch to the startup bank - initializeStartBank(0); - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -60,26 +49,33 @@ void CartridgeUA::install(System& system) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeUA::peek(uInt16 address) +bool CartridgeUA::checkSwitchBank(uInt16 address, uInt8) { - address &= 0x1FFF; - // Switch banks if necessary switch(address & 0x1260) { case 0x0220: // Set the current bank to the lower 4k bank bank(mySwappedHotspots ? 1 : 0); - break; + return true; case 0x0240: // Set the current bank to the upper 4k bank bank(mySwappedHotspots ? 0 : 1); - break; + return true; default: break; } + return false; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt8 CartridgeUA::peek(uInt16 address) +{ + address &= myBankMask; + + checkSwitchBank(address); // Because of the way accessing is set up, we will only get here // when doing a TIA read @@ -90,24 +86,9 @@ uInt8 CartridgeUA::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeUA::poke(uInt16 address, uInt8 value) { - address &= 0x1FFF; + address &= myBankMask; - // Switch banks if necessary - switch(address & 0x1260) - { - case 0x0220: - // Set the current bank to the lower 4k bank - bank(mySwappedHotspots ? 1 : 0); - break; - - case 0x0240: - // Set the current bank to the upper 4k bank - bank(mySwappedHotspots ? 0 : 1); - break; - - default: - break; - } + checkSwitchBank(address); // Because of the way accessing is set up, we will may get here by // doing a write to TIA or cart; we ignore the cart write @@ -119,87 +100,3 @@ bool CartridgeUA::poke(uInt16 address, uInt8 value) return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeUA::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeUA::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeUA::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: " << name() << "::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeUA::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: " << name() << "::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartUA.hxx b/src/emucore/CartUA.hxx index 38588e4a9..66fe82ec8 100644 --- a/src/emucore/CartUA.hxx +++ b/src/emucore/CartUA.hxx @@ -19,7 +19,7 @@ #define CARTRIDGEUA_HXX #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #include "System.hxx" #ifdef DEBUGGER_SUPPORT #include "CartUAWidget.hxx" @@ -30,9 +30,9 @@ are two 4K banks, which are switched by accessing $0220 (bank 0) and $0240 (bank 1). - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeUA : public Cartridge +class CartridgeUA : public CartridgeEnhanced { friend class CartridgeUAWidget; @@ -51,11 +51,6 @@ class CartridgeUA : public Cartridge virtual ~CartridgeUA() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -64,57 +59,6 @@ class CartridgeUA : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; /** Get a descriptor for the device name (used in error checking). @@ -152,16 +96,14 @@ class CartridgeUA : public Cartridge */ bool poke(uInt16 address, uInt8 value) override; - private: - // The 8K ROM image of the cartridge - std::array myImage; + protected: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; + + private: // Previous Device's page access std::array myHotSpotPageAccess; - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - // Indicates if banks are swapped ("Mickey" cart) bool mySwappedHotspots{false}; diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 9aa49cb84..fcd2b85fb 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -717,6 +717,7 @@ + @@ -1739,6 +1740,7 @@ + diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 4a2fe6691..ef41cf662 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -1005,6 +1005,9 @@ Source Files\gui + + Source Files\emucore + @@ -2063,6 +2066,9 @@ Header Files\gui + + Header Files\emucore + diff --git a/test/roms/bankswitching/0840/Untitled.bin b/test/roms/bankswitching/0840/Untitled.bin new file mode 100644 index 0000000000000000000000000000000000000000..4c475170003c729f5370caaa0b39005832116e66 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26 b/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) (PAL) [p1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..20278eb6ce4db3efaaf3b39d60ea83693466c266 GIT binary patch literal 4096 zcmeHI;cpY!5r4a0J8Q>@_rg*3N&u5{q&Qq9SCuNO%5iA~>BaK3QG22lpZLP5;S;Ka zL@S!wiO1{MwMlRigx@x)9;0;@+25cSR@V5cr@yMcV^xDk$4| zLG+(!p4a`o zIrlyiofn)*NP<|48}VwUw1c0ljn~fA-mhi(?&!~~S(0o`E}CVKpxGdih*Qu%Gw*;4 zn#`}jO&yQ|(Od(+xfb*lQ_6op;lM%&Jw3ZOKOZ*Y_a-}kC-Zrt^9pDtQ`{a!qQsJo zOU}h&C0FP8VYi{lwMAnw*u+-X7S~eBby&Q=;m!j1w+!t6pMh7n0gTHY*lYX~ngaRI z>vJDoo&&M6w*kAC@zoCE&HJ@@8g)H@-Oz441~(o;H`$YDn`Pvx9_#4BhSwRjsUy;t&%HnM4Aqx0np0wGk#l4wVE&OM+4M z%fM*p6lxo-O&QaW!LXf8UP$JWF=MK_J1ZqK$*F?v|82v_!1Sz4pX+R0d3t$jS*$}o zJJN^Q%L25V8x)gkfoXd~-bjyCjF{|_7bEj;S2N|uZ3_INz{hbRy% z$u#tj(BzRoPH8cF6fXyEIntIR`s5+EhE4?Xin1K64>oTQCZR_T1f@?kn@$wH3k7muo6l*Brt5&{sJ9QYvAyy419b*4C? zKYncBadb^&5;tTNI>*@e=h7j$a*+gkqsxzQ&0DO>ti?DVRMnxbYH#+9(mo7{%#~0- z+l6VXBK33js-Z{tu9Af5*|b8et(dc*%v{vTVHOB3OP1TSv#gitc!BCmlWT|p?K#k1 zK}=}DkmX&|s{X7C^G#$&UYb{sJ;OW!eb8l=2V}jBuFF=lxfH&qmG&4Z)~uRK$F&=& ztU}3(ggf&g7hTaA+o3PUk`cu$NI-G!qIO&niY~7w-a${MU4Gx zI+zQg7JXM`S3}=PW&O3kEtpqBzJYxxQeTR$ni;GL&ErvzYx+1cSS_GMBAh+9t}Gb2 z0lRYq(s)6P&AJP2UjMS?!nz+T?5Mm|Kb-Cy)9<9#m4|$le;O1Ycp?6Zi@}X9OCI-0 zxO7Z(v=Kq+|G|+%hu@Xm>dK#40w(X?dxVddgocUjB7)u2l$|P-%YXRepRO%k?<(VX zL3v#sZ!2*T*;NdG<1ZKAyBsct{eGf2Btaw&LEM^2D`skI2Opaqo2kvsj`un?=jS(( zO`!l^^C;u1^PIwkO%hAmb~r@H^^|SP2MLL-Jol*~vM=$;uUmYC41aw4<#U4IGy4%~k<^7mGs4@1Jm(7BD*E8Ly+6s!{L)BZTsZbux%nV?d?JSrCcDQAmXFM zdSl`{hqIt5a`h4>Ea9Ik5-A#5(3jBgyH$Nz#{=KZsyyH;IfjJPO2H1neQ9E@NCnbtFN8s0}&@kVyi!ZagW^^fr|F`=; VZ>8J)f4l#0_y6tw|9{p0{|gJ>A!Yyo literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [!].a26 b/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..96465e288ebeba9e7622fb5fd9c0d8687e0fc598 GIT binary patch literal 2048 zcmX|CVQdpe7M@+Noweh{TWHEw3B(PK8mIi&{yABvz~vC+8q23kr5-0(lj%^$YbJ-yQpnT}0{j^s=>rCERMFXw)r` zZ>_u7gIlccu@{ThCJtJg;XpZ~{1+=6lm@V~#RG-Kh?%&5srPf4&ojN(v2HQN>r*6( zY}vf(UM^QjgJZ{?rY_f)&E;?l+rY~Yx4pTGIJm3&t^ccjjjM)e?8gVpf8mx;K|5Ib z^jZmv)vhM)T!T*+7H>VQC$gaB5$?oY=2MQ3JI8*E?X%6<>7-cm*(aBh;+e{R>Oj;H zp2Fwx1dZdQ84n9MP6PN#?A;%Xf|=}{t=Tyl#2OO~Bb5T`XH3Qu^&}JVEGP+!wuC3x z??V&X7-*ZQ&zX5V1@StczLK6z$IZD~XHH5_rRNMMm}{C-IA4_M3&OUPXV>P|Py-h< zpCN>O_Um+=Dg7|Qu5z`rv90FB@B?gAyBm0+da!|u^e(=Q`*4`b_-h)(8}ws*lN~4u z7CJoCwD%a!t#!H5TKzjZe5`3d24h>wJ$%S4gq1S2*Aa6s#l^54g@H{@2JkiR?;?0H z>~Iw#4U#X2WEK=TEHKHMVW%yVqj|qU=GD=`GL=IG);2PfWgbu)WJ8zc;R*&}lWcdu zS7HYv*2W|8yZ4%vJ!|hZS(|EYjEdhyn>p87v`IFCu_n0PFn zlY9myPlRTbHfuofbKtfsYrA5N$J|<(J_r>QW$o?8Nb5FY5_sfNM>R4-5$WTHX*XG- z4!Le^5E?3sw7o(p(dQss&^+ZTL)z~wigiN-+}@FPZn*++UzolqJCL>(h;`?V}(gz@C0NheA(af^FCc&2tH^8ZFpHW;HU%E-hwS;Qdx^>uGl}G)c#o!8;nW-KxA_06RmaIlam@uam7ZS zns6Lk6Pd&fnMUs<`*|s=$<=uj9*lkY1lIiJn#|hF%VAX=?W+yu4pq7#Br;b*gKQt9 ztqRmf>~)hw`L2ot>DjW5Y>4?FVPTnhsGGwy5G+f!*VnN^R_L@r$?By|zyS7KV9yX! zdRVjln|dvn^FY3d?8Gbc3b5yxFGNN>*2=I;;!4pZ6@jdP;Qd zL4q>$ixbC=e;|9+^*^%|zI5;Y6L|ed8%K@@2~JB3lxi}WN@ud?FFZ`bcuDy^K7Tv% zAlXxnyz!U$53fbakzf!hE=drPOAvQw)DD^2-owXE&rW7%r{}|-oyEl+U^5_q&mze9 z>LRCLVF$(2juX)k`cuYn;q4BToe067BMF`2qetK>Qjo)z| ztR)=a{jJAdj3cB(96llCgFn7_K7bVEC(if)LVbOG*PZcmsK2YLU)I)vL}X)DY=E4#`a_l6Mf3 zQz_^Qrmns7*9H4zc31!v-!35LgCq*t!-mNAlyu%dj_j(3;ClgEKu2~{BhS!o{X-up>8H*hn?L^pEvJpv literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [o1].a26 b/test/roms/bankswitching/2K/Air-Sea Battle (1977) (Atari) [o1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..f0323e474ebcdc1c4f6a40dd11c6083015c3a3cc GIT binary patch literal 4096 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 J^8W|?{}+;X9lihn literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/2K/Air-Sea Battle (32-in-1) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..1d701802152fb834a9e69bfc5c54db0017bc8721 GIT binary patch literal 2048 zcmX|CVQdr06`ozMoweh{d*LX1B?Oamq&VD!!J|` z=~~g$PW-%%O%AKclEfg+$z?fDXo_QXs~ROJ)rAO06*qrc-4&gbL*Rq<6m1W%si17% z1ktg*^WHZz?|tv>d*k;%qh!$__t{hG13&m+nu;KTfIt2rwK$(C;WE`G&WrO-KKSc@ z(Va{ zgO|D>4WhLHL2Dx%D5jPFg2IVuNIf&(kzb6MiF;FBznA$u*>weUiz!~8B2i+?<|X%X zu`*rf{9&)D%e7^5Io!n7HQG%B7f?V}Fnoj?}O z!WfOis2L9n5T^mS5c}>o1u#durmJ>NMp$EFA)8F1^cIt0tTxI-m_{RE(UxG0{VFu3 zoknY8wHb33vY58BsSBy;RNS1Y?#)T5Y-*<91b^2svoJd^)8_`;RGwa*SrzM$*L(#b z?6Y5`YfS0E5q1?T`|4Y2P7Hqqh01|C%vHMTFi-EmE$D_YmEltwgmwBp++ZE^f<@kZ zyJ5E#oSSQMsk!nG^5#Ipeu&OCmAmkUnGY*PYOfLIUW$uhJBkBLE(YK-k9V=4U>s-y zBMeSmo081DB8LSgS(EI9WpXw@ts58B;l3i3LwVLRG>~B)G#g|CQx`G+eYi=scjHrH zuScx)2jUmeMyYKz+F&iJwLUC<5o_dJtFeZ$9{f?mxP?dkRmt{n+diMq_y_^PmMqiw z7+oF>O)D){uj1##ZCA#2#hyIm-Y|$zUQt%V^`Yi1!X%8yg`|v0N{nuPnC>^0sAF8Q z)(slU54F5xDbZ&L&S{=vg%RzS76rW^B5&_dEB9Qq4_ND<$Nuop`j`iMsIf(Cw>szy z3+idyTb(W)idgiXUVT=Qs_xQvkh9O|G?dCQZN>P&IPe)8DF z;~1LAB<{#8bd9qgEMzpfa*>4lVylmE&0nm_ti?PZR@LF|YG3Y+(tb>d%#F|>+k<7R zqVx;)s%b>|u9Af1*|bLNot(3<%skZ1X%+}BOSadyyKI!{M1dMBQya(u{khOzK}_ml z&Gv8T)nLwp^(L~TFWoDso?*U_G32qzgR)V^&}F;XT8Z4#OZ&_;YgVn56Z(yGPN8H? z!ku}|L)Q$(b{Q+Yls0%!v$u$~GP_PTH#OhD_`o=3IQH#F^Fm7Jexh!@h`E2w0BcEW zG4@pUG>qL;HeUPtl66%J4DLrreFSu&>wovu;H z-~};0?=5(F|I4-q`+mHztMXR;NTzGtxRc&g9`aTGY7jp70{)uA;Kh(7pZ648Ixf1} zh@cGo@aW+q@5)|v?Jq0|Q+Mw@!mpobBgF9#!D(vB&6LXJKmO^@*H*4~mvOw1{2rgb zm3WBkDMr5a*Ng96jua!oAW>YBAQG1#?#!eWE48(gkL}Lw^!9e=d!5^hi`%HC5x~bH zVtjRxOSrI2;wi_8XoOr(JC1yakoem3fU1%G$xnaN5+G#cliQ!%9#IJ)^5O5F86YFK zov&6C4(k5q!_P+uQ6dhXi1O}lpFis*it;^Yq?eHH?(Qqj$Qjbp-rgf?YeYTP>+~K| zi5lup^oLZ^pO_8JCi;o&mHaM2Zf}o7PMva`Q#-?Ph|tv0i~37kAfh1RSBdw<#dnV6 zKv(4IB`jFNUsp6*H1%*GspEUA26C(03+bD@dqJOZ>&FL-o+DV?MoIGa zfpI*Ew}Po_2mdx_AIl61XyWrZ!hBdnL3^+uvbF`C-yer|%wu!eLb39*`V;kZ*2sQ_ qH^VIRqx)$X#Xpc)BfFsEeRLIXWH&9$GP2YEcn>V-$Nx!eV*d}%bdawA literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat (1977) (Atari) [!].a26 b/test/roms/bankswitching/2K/Combat (1977) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..5c52aef014c920d4e27164e62fa550eb7e77bada GIT binary patch literal 2048 zcmYjRe{2)?6+fRZ_F)|RfRJ8jejMq!B!AEjTT#g>rfq0!C$&sM+oTjJ zQYuA@N%9TGD63ibt#Kd=v3;4(DpP`TZQafrm9{C)D)o|*Gz;VhzbrsidgO;4NS52X zqM^Ri_uYG+@Atj$yZ7T-rea1<>^PTMQJC%y5(T;VBW|zG{p1mMYK5C#?Os<%mQ1*1cM@kBZhC$nXrIXawK&VBQkGsAA8^^#+ zM2>1}^3AMEe?3+NMzd%Rk@75ZC2ptxxgzLjHZgAs?xI;VE6)Lb=P5pyxCMge3?hr> z(41*8D!Oy?x!bv0xjW{;h7KM4xgeAx9B zdHK(;07%ONPhZ0f>08ZmVao6KCuP}tZ#XynaFgX*MtnOe7o9^YDjxa}xrWlnog0>i zeP3yp2EOP)6{r$DkIG>cLkMo^N;~Nv+@`qE8O1KN#3B9NXcpt#S_sMw75P(HoN zp0uFTsDFx&GqxORBy))KtSEbttaPCS9~ZYG8EsK$^d6LiLp#l)NHL4rFSyaT!@-^y z$Mc}*em@%b`%U%sD055VI~plPWJoX?idng%i=*aJy9L_s?;2xIj3v`a!Yf+X-O(fw zE>_Zx-B1zJnqE7zz1YsS9v# zwvH98Uf&OsL!aPGm<$F-Mn{*^okr}Tu^LW zrqFnMW}|?ggUmqg(ZrPi$p_(X!)KUzN}#m60J%w~w-!Jj)2WH`8a4T@R*cUpZv3u1 z#x`S&^W9=4oB)@8enNZ!pK~PB`|~(CV)B%t<8Cgn1g^~kwuw>wlH|RIm?=3f(t<^& zx7>C`T+oXIXV8-`V8g+Z!ptqLGtPn1R13bvWu(6Ax^708$!Js_;c{ z-P`bQ(@C*H;q8hYm#G&aDe(ED4_iMhMRW7hPE!YgB*acskrcxq&n`C3wl`#7epNiLWI zSG7qC)eFIeh3a2bFQifnpauZ|mIBP&O_>sGEUXstHk+;VIks#E*gkm-dfrz0jlRS2 zlwwz5)Fi_y{~5yYn(tu3M`5?0&#`T?htq@3mJ>y!vJ=d{?>MWj&e!v`$9L=y zb%{OpyJIZNw!F0OSWB(b=A?hq^wG`N>^3i>w;s7e62#_Gf*}mc7K`DoayS0+M}}DU zJ)^1Zt?*!zaenA6qwnu+G)a$blFJD7*#Nqm*KlKQ{AO9>Fyb$j1xIZ#~?ZNF&pE)6P_m=+w D2%(0? literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat (32-in-1) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/2K/Combat (32-in-1) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..a71ae9a42ac729b50f6c40baae68248811c44f68 GIT binary patch literal 2048 zcmYim3v3hT`Fy_EhdJyEA>jgf9O2S(G;43H0t;0nn}&w1h^8HtHnwV(Ix5j^D6Pbl zO4;Hj`GYabX4d{SPGBL9FY{SNOS0Trm$?IJlj3OFE-6VPninq%&=!s)wgbs>`>seE zpY?zK-v9UduW2f3bVXn1|Cm+S&NdPS_^yYU4)mNtA`)5Pm_NeAiirv3`OXhX{_sP7 z`x1|q`PUZt`-}WH78M!|gL?O+c2Zjfq6S$$?f4vmIQpj%IjXJ7(`l#vYP0~N%%V9& z%CpEByP3S46?HTln>Ptp!7Q4U=RkhziF_`01BmKVh%A^xbEe0r5?WE2#0;uv)8NO*IhaJQ%&GtmsRR`*>b<(cY0S`X23hbU>}MQ8goP_-J3PG@E` z=sUQIq)wsJ+7aQj)R6H<=ggrP=yc4VoX?{^kD*b~8STFO-U@fzg5E>DQ$inW%b*4_ zgZMYI${r*u9VjOBNt=<33SlH4Dm>!R4s$SapLj}w89EZF@8%JeI+8~PAiDy^L-m2q zR?=fs&!DlWVJ1Rr)I~Px>KKn&lRwBG9IGD3Hav-^Mn>5OzNkg*6N327%j0Lg0vE;9Wi;z*6c<>^}aL<@yIpCazpo zdvpg-ii9I37vaCT1UqWg8KJ$=A+$D7qD3PoBk-a=Q)+Roe02bqCTsGzm{W*=L>*_?M<>t3gN}D!c+xjjVrzu<2AkTQ zuGFh?I2T?~dtuFS?^KXG{vQ;Chp-EYa7QVMpe`S5zP0{aSu^7_mFo$?GsivZi<14T zEVgDL+r8=qtu)s&*{z20kjKE`Tv!dm?vS}~eQ`Ez(Kn{8p<=B_9jf1uRm0qI8k-8m zf+M*L>K=)b_puvb+GJ=0Ok1(y+uD}N+mcN^qcac$s~BAPhU}szz*Bs zv9^nT)TZRopU@}h)6}&*Vv(Af%A=1{(|MHiDa2hI)mD8@SY2n82@6#VfrW*tH>(yB zi3MN-AOMsAnW;^f6et!}@;RH$R=G+x? z2iz;ooUgITXlnEk#MSlYCP|VAt8H!VC59m>rfhAk!p5?!yLo+`t>YzkZEcgU&R1Jm zQNeLUTg!n8hGB?bw;KlKBnT(n`?DTl7tIrg>W+M`TJ*g3{dnM9sJHFz$o!RiH?JCm?kfB*fH-~e literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat (Atari) (PAL) [!].a26 b/test/roms/bankswitching/2K/Combat (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..18646de33d41bd05b7258acc41d2a177dca1315d GIT binary patch literal 2048 zcmYim3v3hT`Fy_EhdJyEA>jgf9O2S(G+S@10t;0nn}&w1h^8%-HnwUfbyT9;P+Ey8 zm9oW6@&{v<&8+)toWMdHU*@xlmZZ70E^`OcCdJXTIVnjaninq%&=!s)wgbs>`>seE zpY?zK-v9UduW2e`bVXk0Kgz0XXB&z9eAmNF2YOB=5s55t%pYN5)x?Ba)A<3(AAZPh zU*gd+|Jovdf06&@qDrG-Q18CfPNr9Zs6m!bJ3faXj{a#xj;2?Y>6BA{B~k!UX3-oX zm09GB-b`H1iaMH&&YOg*U>40Pb0ELA1UIn!fQa%JW-H#0Xfw@kzO zpX(6M3Aq&@hcbz5$`{BUspxVm(L2N9dR)|XN+onsOF~N9l|LK=A+7X3`5R_Q&q|68 zQeLk&rYP<^!^{aQ0epipLapTa#Vq~qcS*~ zAPHCf7X4By=^ZFiUFei*AiwHEGm#9mR+lf5%1pICr3Y!HLzL3wMQ8goP_=0qozBdp zq3_@-k~)P>r;iAyrG|_zGG`9OK&PX=#C#t0d5km_nMvPQ-do|0ThM!`cS`7EZ5h-+ zW)S~oR^5XXwF5WS+F=ex=@U;$FhfT?`Dz|f$s>7G0J1AkJXG)R zY$ZKL^$Z$|7-k}Ln!3nFTpi;PYvKp_gJad>*oG(Z)W|6NK#o|nUeSfd9S-i;IGzVa z_j=K|*K4vjN7);)(AGey5=+AMgApr_7e~#bb&9mt+cCx+8;d1kgj=$3yTdUexJmm^ zv^W6JplPOmA?H5Su;}8B4aO4x&Y}UKwXsOU?t7$YO*_EYnx>$*0c8O5qRV}cM%TEL zX4%v{Il!it2B_5L0a|@1T!Vs(a1^8@u9j6xbw^yoc%$fw32iL-yHLR6jGu#hQ?;CA zb$h-W8@!B@LDKIZ869PpWF-Js2A@NL6d4pmOFW0QDLknJQu&~j_hgj->xAavQkBNV z$@M(m3Y~%Gp@~aAQt-pwhQ~1b6h(=GJoF}(p!2|w>D0v8G&T8tdJ{gYy72qT7Y-z``7eFd^;4XB@G_*K#;EV&b@}<4*qS5`;DlY!jpUdD(pju~SN)M2i-kQoh8K zT3CP9%ux%c?7=O<1WTpLf=o&ZR;Kn1?0~71s{{_K2HqtLewNZ+WcTqeFV{a7`&Is*|4xzPy5-n+RG7K;3Gqo0n-CFdX4fjJ!Luw`NhR_%4 z88gTxmBPiU9hYj|&=e?N%vbwyX`&{Ni#e6>OVn|OeRT3nEZ}(e`6qqTB(_FqZ?I|I zsY<;nhjXD7trylD_f7@4ligYf4|xn6%7wHL><*a=)fZ<|7JXyN8Z1s1X+!lJvRa5cPGeJ{ zT5vdbLE9ry%06}jOq&dDfN85%d^^2m^0s8t&gcvT!5Rh^z9Bm*S?fy;-#o zk1qi02LYfs$V_eAq(HH-lF!*}wvw$}={E3v{0R7*t>i0yo8$50M|U%~m#HnnGrM-z zlrd}nx({^h*}?*`w&t#N zudS6etu~ic9^gv%Hyd-#GEVsMyM}StNzwFAT3TA(ctd#R_lEIKBY*CP2aMH5H|MUH zJK$bv=H$jEqp49Qh^y<(O_C%LR@>Uziwr|jOxfC6g^gudck}u>TgOZ8+S(?$POh!2 zsNguFt>r)k!!X3J+YN(q5`>fbP0KrWg5CRdrgCV$PN;c(+crs;xud^4%5hxN3ww_? z)i5@O{%PYU(}(RgH>)?lbc-a2jU@z27?whd;i_~s{ODyvs{Mx1*z$I8pwT!x__opW zmlm2NNh@7mKs*KI v&i|tOk3GNY{;WsXMf1d=x+CAK7Co}|U{GJoaX&8r5Xy9)mcaGHJZ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat - Tank AI (19-04-2003) (Zach Matley).a26 b/test/roms/bankswitching/2K/Combat - Tank AI (19-04-2003) (Zach Matley).a26 new file mode 100644 index 0000000000000000000000000000000000000000..c53da0041c28973a1dd018e819ff17e8f4c67021 GIT binary patch literal 4096 zcmeHHk8cy#9ltwYoWmIV0wFk%kQ;Lf2DDw#R6K+T+o(n?uVqzRZBnON0xD(Qq|gbe zm7-yiyu<`Wn6XC)lm;AM=CeRcs@x*4i%O+V#L+a)rU@+kNcd&qs7fz{_*X)2-)94Y zZhrz_`}^+uKKH)g_qp%)``(9F1NzCpZ-jVC=G&VX31V1_ZlasgIN)~*_;~OZ7}c$a zDH=!P#A8^rCMFWM6Sop~$U=9M2JtLFr3jg%QDl^^pyI&llTImkuix=)*r92xOlgcV z2$WVye|Z%^PUgk@#Cs8F@jaH!w&?UgY>N(%YxO$h#R@5r%$R~TzjX(lYta;8b(v50gRP%FE zi$heIGnVG-VAZG`I+VDfLjJ+k!DuWxqFr_umdD<-iYRcdR@>gbP{f=@z4pfXWeRpC8HYhN z!D55T0=-_T7Yiuf7G-)%CDiY~2 z`Wc^ZXn2^P^+;{N$G-u=_I|sA4yUkk6^}}7(X`(n*i%v)ZvjTQT;}ld!B`HjfV4r8 z(1@`0p|CL95|?7yW+{mjNa=v2xWZCGH4YBt+@9IN&vVr=b)_^=t3#>8B3m7U2GD?Q zZ?f8o6!+`1l7f;wapAWQQT)6YJ~yhXj1;%~M5_7X{xhj9vE57Ni>n&tv`7Bd zBhQn+)GcxjT4SYacvR`s){+`1ozY@{seOcJqZNL0RPrM8?U95vvnbA(T2`&$$1|KU)Z z>7&tfzAF@w-)L{%WmHZ@tF$#Koa)FZXQA-;?A10~-6PZnr+6K5z#iqO6P@(Hu{F3W zQ-pDpO?COAtjZ>ll{WK>pu-ve zBIt10fbXiMqjyE4a#%A%XsloeBy30xiw3uQ&eK*)haw#m9H_|Fw9xth=!I|?x04!q zdeGqR4Ek*Fy$t$?)a`OP3}LC8H#sunZ%zCY~@2IV)x;gRsz*tOqJPg4sE&Kl>!LdA#k4HZ?}Y~@=T^l?jt&A#U& zU4PBOa@_j|4jkCM+y2rgy8c1EaN?b9`h309=3G6#&6#Pi>4m3GEiR*YN~cR`-CAYc z_3kfqvF2sH{=hzeZ@qrBZ=c@v`2mh$7z0;XL_H&wm1SjC>r-GU&zsG~#S}%;lwqx5 zYHQ<;O&iwC@x)9JK*9Vbvbx4-$TYDeu`zYh6M_|G;?4ozH0-u^=8j7E-#$!y8{QIv^g z8P04nlWWDqu?(@uf`XdN6lEswh*KWqOeV9D0pMB4Y=qQ4FGjX9D`tO|eLGv1ZO9(U z2C_CCiqVmmIrNhy|pMyjI`_ykOPSSi~so_%s%ToVb&Zb?}Rs znVH$SER66>6UU~D2WqOGNY{7)dj7NXtDgVtJhYG@k@Hdr-*oX&A@t+$U&43X*PoS! zqVkeuE1qnZe^x-Ezavoe{}GyDIbPWArFdu(nxxuV@@(W6_KOU>$iRyXyvV@+$pEEM G)PDiR3gMLi literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat AI (16-02-2003) (Zach Matley).a26 b/test/roms/bankswitching/2K/Combat AI (16-02-2003) (Zach Matley).a26 new file mode 100644 index 0000000000000000000000000000000000000000..4a6741baed20fa7d59695aac4369d8bd757afc63 GIT binary patch literal 4096 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 MwgTT&0sQ^{FW_}SumAu6 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Combat Rock (PD).a26 b/test/roms/bankswitching/2K/Combat Rock (PD).a26 new file mode 100644 index 0000000000000000000000000000000000000000..847d99835d318a10c6114c03756e7c2c508c45b5 GIT binary patch literal 4096 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 J=Ly}t<^LQ!h~oeN literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Freeway (1981) (Activision) (PAL) [!].a26 b/test/roms/bankswitching/2K/Freeway (1981) (Activision) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..dbafe87b5be2873c45cfa804efb1e672302f498d GIT binary patch literal 2048 zcmZuxUuav`89%zZy0&CFx}lLR&t7tq+M|k1Q2NlhMcveaO(P653`QUFAj)Fm?4^Af z9fZtQ^eM_e_cqOmojq)d$T2zzrgFDi;xdEU(jbYIUiOebGocQh6ie~O?O3i{r*`_C z>((1#pEx?_JKvvkzTfvd_pLiQ!U-k6UoqFU!lRsL(XxlqeWz$*;qu zf?a$c^uiwg+)BDt>$G_Ud@Ev>K?V=YT&2d zxL_dLf~)@dd(b_9A9}QB?D;Qn`6cvZ)EbY$Ug1|tb*FlGE3~m9++}}-rK}hFg@K&| zFFOsGf}JnAOiAeTcQH-So?pTgX3gS`Lk+Z0<3#eT{4ezM8XU_K%c2S@| za`Y>9F7yAR8vh&Q_+UldBHt|Sy`V~IU7UgQJ0dF#WEi!6J$n`_l4ehfl>8dBLm&=2 z(oX$1se_)d{NuFg#bj;l>`2eQ*_kbTu+VLXt%z+jZ3kRt!xBbaz_Qv$EK4L3x52i2 zAF4jg2H1IFCXZc2Rg@;!pz#o_R7#XSa(5)yC4W1&;>s*|6)wVQSwEfE@iP5MUO6_`SHRufpuX)ZmyLj zuIUPY0*?`yCU?`|!YYBU`R`zZJ%&xT9&YjZyzV?Ic4*=6%_Cozv$|Bz!Z(X{bFlhN zK|b`PW`DX-P%yxT&CE>LZT^jIeA?6lJV1kd5AEbG+J*JpYz{T!aoTltv$U|*3>{gc zorvrn)5nqs@DJ91vU%_XhZt}J^BYtD<$CR0+1;J_b{+N9~N)oWGLJvdg) zK0!Rgt)`R>%w$P#Rh7fdtJPFmNy91rDoCPzHPfGyv2rJ=x;{4{H#u;CA&LSOP$09 zxkmz4&V?jU!m6oR`;An*&|y#gd8+unzGKaJFiz-$JN#|hFx%n<|E(!ws;m?o3OH2h zEVLSWMCONSqoOY4i1wy^*&xL>O9_pump>pYV&kLjjgJWe_lEg0UP!injO)O)WnbZd zF}>B*JewR!#&u6dm9iwRx0H$sGQcx~DEq+1Z_?Wyn@;16G13K-IhUZKU|21QE4$elm)+gr{2LJ328f?nsN)SwIWlZtvL5gI=r5Vajd^PwYl zIiS1ifzl!5j?b6S)*ev}q>Q>j)x@nUYXA2aMaHULV>NW-5?#gfuQ`W%pF-#Ysfx{&ye;l`9W9no*cC+KxHc~);@HsZk(m}p|KYA28= z@neZTe_uP9<8}VeR{~`8wZp&s#ZHTSc;>_0OB0)+p~c?S)}aurKIw{*E2+E2MS*YrneD`~I9QrYLzzB8j)wZuk}X zsqJkw6hV8)-@3i=)FL75(dS}MZU0vt+x+}bD4%bR5qJU{C^!+{uH9QMs*1Blh>C;6 RaG+?h$Wc|@sS+zT@hu2ZaUK8w literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Freeway (1981) (Activision) [!].a26 b/test/roms/bankswitching/2K/Freeway (1981) (Activision) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..895e05760a75ee3233e14283c765b9c1dbef0946 GIT binary patch literal 2048 zcmZuxO>7&-6&@~^E0Lnibz@4DrOInZ3PMXrm>v?LU|J@qgqqMnMS!A*9EbuItn|`e ziWD#$iRPo}KV{>1EV+l4COiVihES^Q22l_JOoA9B(IAT){8PoKjFz-WE5Rm+mx>(8 zeX~l`!pI|bXWqQ`zM1*nw|wTzbdv%#j^`8I*TIN%d`2fog zf(r(-EjSxkxDDM4cc4dm%wG5xPX7%(8MVe^uwUerQr)Q@-U@B32)EcjU^(lB0TEzl zz{^eoLa?(%mnjK<;TFOK?S*B8Fl$cMY4CC{P!VYe6R|mJyal(6_Yo|>iAaN85P(*Z zWPAkYjjQ1RAW8<^nQ#lpWsfQIlIiA44Y=WC%|v?V>=pOIaz)()wcyq|Y|KXBtDvzn zqvKyR8Zh{+YY)|xD-IevIL}xzl(fY3`(ecS1Z!ibM|-|xr?&aQi|!vy9MEPRQrr zQr?E{rGkz9T`Jo7rMJ;d^}s+yy~FpOy&$ovuS5|f3&%^EsiFO{z%ICYv1QkGNV?HT8ztyy4uF&bx zr@t~9w2S*`@YIAtJDtkFb{@vq@p3Dd3I|xtQn0kky2l!xduEs=55>wW`hJ!io(lie z>SD>T+bcuoP~8O~?t&n6Ko{&a-!-P=X!)W~m$KN1qDPl7{9tj0z=nvRGS|xz*K~zH zga^n=le=kfagD&&{59BQ4`7RJgj;+*uRD*99a{Wn^YGW@tS;5F@XeCl9IAd(kPkhq z*&l8e6fCe|D>EB*o1d`F51V>`2WXJ*qn+GEyYN2On#0X_oOWH_DlM)zLxAz1G|Elj=H||aldiN%Ooi@z2c)@>t+L$gY1xE&sTsjM_ zh8~gm%d}BZ7js1Woqf?D#WqU`O{f>&BCBHIy`6>k2~zi4^LadwY(0nbz?BtW;VENg zyRUgRHJps=o{TDGNnCF!6&2KgXBK((fsOx3uX}7dgD1vH7fj_`LXJXX74?3uoj2)? zN=4nkPPpi$CEKPSg>WNx{?s3?H}i`nEaeG$m5)(_F47Mw>di!G;wizX?J$}T9k$B> z-CYlq4xxH{zJ#`ZpK2gw)J>`;u3u6IzB?#tR`nWdp~DyG8t#9|nU+f^)ISTI;nJG1 zhSgwaGMSEmo-XGA##J3tZrp4~aemj1KUT2YK^)_ZBA3T9TlS5TIfkKJD zlIZvMx088Z=byb0AY;FJ`Ij&4w#YlD-pT!Va*Ncj{$;*S$XG0*sj3!(8 zeX~l`!svfcJz_cY=6%e}@BNmK$M56_CzSkh)!fhuk8++R%N|bmpQf1=xgb%cqW&YT zr{4q#_VGi|2M73btLav))8-NIt%^|w89Xd=t!Ap%>P1bLYPDjoF0-lr)1W}hd`dDO zWB6fk!C_X9HNRyR{CAM!gE#6H`Q~WfMO8}cVhIM+xpR0UY3__j$*)5@ z1mdtK?cDz+bPR8}0cgJG+e!UUbJ{J7Nb-+X0u^u#8a`@mlSpmL(F2 z(_mS?3{@Xy1MGq@6a(9JV+PjteOMNb4p2pR6>bSaC4D0*}W&5svn2y6%oGIPBw zaZOkF6L^fcG`X7w7uN`U#(x2u>@jSyjc|+4=XK{%u|tc0Y99TpoYkdz7Cv9Hn?u#l z3-XaCHT$E@f`S1yY-MJ{Zu5_9^P{F7-~k%s2WTgE(Js8t&E{}39;aQ`wn~fZ&CtBE zr?5os(SVh6ArX|YYHHSDBNZ=n*weqCF8)^Evu-??AoRf<{swKBZSjKt*0eEQRtgRc z9J+KCS`9rS^VeykqAuo$_EYMj#bo0 zxpv;9w<{HO11sU8SC?#?ejLJ$-1)OVztzkymN1kj=nXzb4Z27_tf+Sqp^4`OqPBx* zK6KPB2XuEmP&$I_@%a+k`Xj1=lumg?|e7YmyCbq&#y$s9f?LmLWV*o z6N#vzj6|a&irZtD4%SN6L literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Freeway (1981) (Activision) [o2].a26 b/test/roms/bankswitching/2K/Freeway (1981) (Activision) [o2].a26 new file mode 100644 index 0000000000000000000000000000000000000000..10e525cacf9af630b8a2202738510e6f16f2068c GIT binary patch literal 16384 zcmeGjU2GdkdAwe4V#lesT%9;gNVmNNotx907Qv?w_G;^(H%Gc^eMHOnbV!tZVnZeT_LEBDD?dJ1wi zE({TRiAjI_*eCRS=6_Q){*%bT!4dT`ehb>bMOjFztPOm=$+*IBhHBOi7tY~`goQJV zrG6bcArOZ>X=nU5HAi|3^4Bw_7nya?bK`ygpl4h1!GZ1~v?z9^X*MonLtei>W>ss>t{C{TD6^bSCV&?#mkw!dBcA^oc9? z2<8JmpYO_jk|oM7Y*{fH*0;kk>m^;(g0~t*BYdDNtG;iA-BW_reJm?p>M0Yn0HQS( zlfo-IO-s}zZFc<2|1=s}kM7rkXQw2s+o24!@DN5%mD_cpaER6{2}ygbhqU2&XohL> zNUXf39;C_9neaEP9-0ihy&`mv)LjtLT@ZvW=z;y_?~K_vrhL(-3RzS{(W43oe!M(K zV2eS}GB?YDuBej!1RkSYnz~yHE^iR{RR0-l)5owwx58~cpVytof*o4^WAo^z<*X{y zv+&u9-5jZYRuGRoso5WH7bGOGVJ9;mcAI~o+aEU7fF96-`T?z5cWFI1o}10lW<0L- zT-zxvZ#F|mH??k*?E%wAlPJv5r0+{fS~K_Lyx5z|%79&2^At9n_dT0T2`N{K;2nQJ zYBQ#{R5`vhegZa0N&U_MI*sA5YBb`>RmVjuOA61^QEioH2$B_X_VPCRK3}J zDfIv?e?8lus-;e$irnJ?E9XK(kixR5Sci>NywGLO{&u$bYjw}2@nDK*5ANu1XbrO? zUhvgKCtmW=?#yq&0&v` z(gia)7c)m@V-@*Pu2XMnw<{HS3pL@=uCCa&_E88Ma_7(f^j0&!TtZSkq216YG(%g~ zKB&ld5}~OVnM7?zqWREKyBtv6^+4$eT940{P&OZF3J4i_Tay#FuF6ACJBl_ddyS3I z(aYKfwtv;hmP=@;zhriXRU5_zQiGkzWV+^x(og2*vFok2KhTyFpWC=G%UVb2cj9a4 zbt?6&+CgoUhn_%2(<4`hao8BSy z8^2nt6EYEtD6*_XViU2K4m~FZ_dWlWSI1sfx;&&yd3nqe91MD#TfE;dk@o#}zL^ZJSi$=#JzaO7|zyIX;aG(Fgm?WJ@Bu+B?6N&FT=zi%n zR*pK?nDli7MaeTMk~qHkj$aa=sopJyA_x!p+jlFT$s`y&`aVFp}cRv0NrjK_f z2|R&qO!y$aef=#IS;nVAh>RDB;e|EnF<=kq`NdSWvxpa1#%&*y(W z|MU5u&;NY=&)5Hsf8gmNo_!$j^*>+#^YuSp|MT@f^A_;+KllH0|9>C%|D)Hl!TtZ- z|IhvZ-2dNlvG3lw|DW&w<0dw)oq_NF^ZkFm|IhdT`Tjq~xbXe|)+Ykr|L5_4JpPZx zLh|@O9{2Lg}(=jZ?U Y`9FUCkDveJ=l}TmKYsr2|2+TqFT1XXt^fc4 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Freeway (32-in-1) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/2K/Freeway (32-in-1) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..bda078131da146fc7d76a96cfdb0e959d61f1baa GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Freeway (CCE).a26 b/test/roms/bankswitching/2K/Freeway (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..738083931db2c936d4de9d73a19c0f40170c7dda GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Kaboom! (CCE).a26 b/test/roms/bankswitching/2K/Kaboom! (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..4f18cb0bbca6359cc93b7e9ebcadfb96a3ca1b7b GIT binary patch literal 2048 zcmah}e`p)m9e;W{oz99nJ-cou*J`VP5-g{5A}~0N_Jb0eS<}K=GU)o3DNVq`e~gWl z{2^RNxvzW#3R=kpJ3pM$Sx@+EOFm^2BvrL}tWj;Tm4k*Z6vD)4jT6RtYwUCEZ1&z= zl9JLt_I=WO@B8_F-}mQxcj}gg&MN4_y1A47(><-L@hiJnS&rrd#YIzSb9s(t2P=bT z4oV8N$UmT?q}C>Z2Y*?@<^#as0YU#R1mG#vD{+!f^-Bk(L(*h*7i7TI4d|`f5UJj0 z>wo5}J4G2Hxn3y(y~RnH+*+Y^*r8VeyN4WnA4KE+`4;&v5Qh4sZHc4PaDZX7>Y$y> zWxw`9M|6(Pu6j<&34vD3ep;{&HD0xyFqz!n_}FgmH?clu2>Mt|PGJ2wMC4Zc8ROGO zT5Ye{L32#EBOUzrqazTxE+gRSHuTEN#Netsu-zgbm9w~{nw~&FM_?OR_c3+fSDFlr zz>9gT2g0LcusO=Zmi{xCloJP*N!|~*IVqc)%o2uP_e^uLCM0lkOD1;#uh~WW`c(u` z*cbQD$q$oeP#wX}T{`8Y?V@hdYKWP6XylOzI85yui>8ler)BgtAJ&n_UT(WSm_d9O zcBK2?@CN-VX---lW=l)Ri6Ih_weRF))?_!zlI(iuY)JOQ%9gXNLg}F|8SuE+Zd$cJ zvnI3fTGp^k{^Fo4ZV#9yKT`|?8aa1xyB6!uq$=A zMgFcIc;`H>OyG43OEV(fy5l3BDe?2mVd4>gv5NEj>aM{g;S-l{Z00fDgv-(I*)XMr z8vooVZ_%YdJUplSVf(tUrTk@Oy}3;` z-RGfZB`kR)#AY@Ct(`XgYcr--JUOH8v3nI4Oss~cR1}*bTzsoIBc0*TfTSk?vv5@; z$xJC_kZ8=#mH7$r{p0+dol54~b>%`4>TwFxGq6LAkr%&kaNeO|f}n;%# z{PV^UhoPbgbiu;Sh1_DTZvL%B zw)7}enica?YM8iLpd~9zCsO&RHSYI?T1hFKE49cbRfj#Gmb9~0pq0}a_v}=7)B_9J zUao8wVr9}@o?vgsa^H@Dp$ygZ`Ars9$lMow$u@X;ad;0d#>&4;(CTWZ(a#!jh-$Hm z#5=qfK5=2y%JUl1eWtMb7TfLVZ{;q+1*b97F+X{&bl(YH#ce*%Ssqy~724S13|_@k zre{UEq!U=WAEw%1x1mh4altnY zSM^g+XWru8c@i= z2L=X$_{kwMWMDwV7UESUL_sjd`NA&-AqA2H_z|w zS?C+|E)q$$4Xk;bbx*X2xHO97ou(h!8`ZpSvf~#O}O9r!p?@Of3KZ0hCE> AO8@`> literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Kabul! by Jess Ragan (Kaboom! Hack).a26 b/test/roms/bankswitching/2K/Kabul! by Jess Ragan (Kaboom! Hack).a26 new file mode 100644 index 0000000000000000000000000000000000000000..72dcc7e52283657ee96755605e6686f09973e0b7 GIT binary patch literal 2048 zcmah}Z)h9m8GrTabUMlEbavfLuGLlnC0I`BMA$&2+8;`6X3Yy*$)MXOF_wUbKa7o) zd@!z}+#?@>f|lfhoj=a$tXKGKOFm`ONTO=aK#$O6XEs-x>eIBc-qQb2DFB3uV3e6`gA_S%#!XN+V|u z2of~;e}JbTS7v|(cTvFl6TsjAPW>8q;W^nUFoH{V3kQUQ!c2J=M8M@u7%ZC*EI+32 zPnXI&c@ct{K_Li(`5BSFyH2XGL#_k1jV!zeLJ{{;lm9pH6m<#P0z>9tKgCGdLVIb* zVdWK1Xpt;594EynM@srI$r%T0Z<SS1qV)Zx##b)aT?cSbN z%c*-vhU$98eIM_cK=7uBfF;{7D6a7uQ{I8?CjaMR8W&{U;q|HrObx3ps_yzslY&8b zHH%emU}6%sCRpgGKY$rAx_^z&x&hZ`M16~T!Z2vt)MqMO6xTZ<{}AwonKy4kNvE|Q)T(HCMEho42cZ^xhx@k7`V z9{*1?7?%0^jN#FnN>q%F@_teIN=BqZwzDjVc7)!VU_R|^F-j= z&yMuIbVvFypEEeoaEk`3vll+RaOcAN^g86P{I1<0tKLXpQFX)iO|Bz-u->k3^IP`y zkkbMd90H;%{Q=rIt-Ckob!Y74yxgVdD#Gbl_Rq>FJkK+cPJUiE!=3>_jRL0W%198Y zQbOZHVKY-?Q?ZjN)d@K$B(wo?&0y-+_~$oLR7g@02c#C)1tPyJTnnf8Fv;m0IURXN zf6@3hDH*?LgtCW?UQ&wqyxxf$g%zn2#{1F`@F*ZCRZs)xeJ9RzeVIR2gn8Gtl@2Dl-eUR5twkmveL~I z^<22f_ZL(2?ilvn(J&ODJbrPDrsdarLa&(`OD>Of;c~e6vnVMydbMFXh=W84U*?@- z-N1=U4I|4cNOkF4<88X@s&8j5!zF7lb743CR^hRgyo_6HmN6WnSje@o!Dy_EXLZNA za7E=|^>KhG6AlIE^S@k>7F0wFyPNewPMw1V$OD-j$wv(1xk9epVlq;Mxz8X?V@P+oxnq8Yxr zwvs`9JfFed>Vo2Jwc7CgnA<0xb(w0O&OZOF2*&G|vIcc-q zZh5nxjDN{ck#azqZ}Lx)qv_$1bb_Qc#`7&mC*^Kz{efS5B5aR!Cp=b9T-!;Ej~qGD zi;{l6ef$3y2&a$KN_$cf1(KoGa zdi>R(Z)%ifr;^EOOMfc)V_V(FzG3lk`x#}wK}B)I$7pV`7|(Hh$jagKyajxLkJ2PQ zryoj&Q2(!fG#!8GMtu5*SNi*82B9|t@pv#cHT_obIKq}kgeYSD?L8lg?k-t$YRcxV Hh1UNc?CWX2 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Okie Dokie (4K) (PD).a26 b/test/roms/bankswitching/2K/Okie Dokie (4K) (PD).a26 new file mode 100644 index 0000000000000000000000000000000000000000..bb746eacb70c093206f5da38e8a536f92f5cac01 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Okie Dokie (Older) (PD).a26 b/test/roms/bankswitching/2K/Okie Dokie (Older) (PD).a26 new file mode 100644 index 0000000000000000000000000000000000000000..fc754ff1837afe3e6d266cbedef1cd331287a101 GIT binary patch literal 2048 zcmaJ>acCQ56o0v<>9yU~ud_r{$=g@hnP2;<3XX`({gYSF4 z_ulv3ckg@e)$0yHSW&_d2Ba`DxPXF$uu?%(QIrbG(MGWqLBPeaRKgXcFbIkwfMWOe zJ7Pi{74BfFs+yC4CjvmATkV#40x|@NTp#m{jp>puhDGUUp*s+?E$7P-l?T3J-y1(= z19TGzm%>4n$R?BmdLZlx$euw`kp1#0Hvm9#B=w^*@>c`Ga&z)K1?uP@e9i0?&xgnW zbaWj$=rRD$9y;{g8r!rf|Ei+}aQ}RjU0TqKLV;O2mEpL~)-eMIStP z&?jwySgP39i(fI77YTe7S`39^vEFFkO3{h;Zd4-LRsS(Uua?IQFT*{;JajjGVsdEu z8r?y;=>qMX{)FzBzD_5mKg~~np3^31XJSXZlkS)sA{7RXHAO@_Bbt17h{_SQk->Qt z6k|gND zb=W-5uW?SX$g(ZVutBN^_<+7{%CGv!w6bdY+B^eX$RAn^FXZpav$6EG2(#&#cuH-Y zPMsfhZ|exOE7TReJqoV$&j^Fuc`QF;NqwAcqA@2)bPBmgg}YVOKob?eFi@Yhae3|%@nUkevBQ+39ty1Mbeg*w=ZwGOTpZZ0)8{xe<^nB7qmZdDD8keA zsTg;>@PdZkGeEZssX9JI0(~f2wtU^#rsZd^7>yY~1xB9C3#XTaiKU(|{&r9n5wf|A z$5EfDjvp^Pr41UdEevW2Yco1YP=zhgEZS;W|1n>=h;i}$K(jf=(LlZD=(1|L_xDZ7 z++HiETSlvPnKYrzAS$zi3xg(D#3WV&LPu&i44OPY-co3tjFt4Q2B&U{$6Tc7t%%wk z)V46J4VN2@t$1j-r+vAlz|Rd6uj-8tYnS)R#+w*EJA7|uf1Qp@#ssVCfISFGy3cAr ztSEu~xT%ftiJPOa*S4J0PAKHQHeq!z4ztukZ_!!irH`S4Va62Nyq0W?;)!!?fXb9Z z*>@yv4uBktWMihUwnx99hLB2 zEps9vngcE9#c`Pk z>YR)ZFtXh9%@S6hmo{d6Do}2o)PALewljkY%%nT9>bm}I<&@jXXR(#fVJnYgD__V@ zU;MvTh7(Doe%Sl^@Ietk2U*8{vXV(fvEb)NAG_-XxV*2cNrj?4Ya8~r_JaMpt?6s| z`?}`l&+U1q?;jF?6mkiN&ngj@0&8;|AQ}t?cyH)mJ=%Ny8?e{=VQ5#!CJetyj{a0I z7~OyouAdhKLU`VLYJ)z6XEylv9>5zt#LMy;t=Z#zbtYyk_VE0FcgkgxZlz{6t3E8v z-6J?f!Q!;3^hfja3i&OPX~l84l1|-JVO4aW=`=N&Fj|;OQ}i4w(6cDHs5clqJxkBg zae5&FGLAtWbhBUTT*zs;GH*PG^^(I5KEw7;CiDi&=knk`!dB;%JFM&l#`d6^vp5!< zWzJnFi(uVt!>M)2&UkOAIPBAE8H~nx6AY^oxsk_dkj~?PLF05jqTLGYoSW5V%U)|6 znsv3C;C+%eG YBkZjsADn#u@H;1utiJyBrRz)o0PpHoga7~l literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Okie Dokie (PD).a26 b/test/roms/bankswitching/2K/Okie Dokie (PD).a26 new file mode 100644 index 0000000000000000000000000000000000000000..c2bc1c036ad7cc16c032f79419305df7fa4484f6 GIT binary patch literal 2048 zcmaJ>QD_@y5+1GB^4d=9KdD=k#19*2+Kov$9e1Uh(t_HmcMdg&9t@>#qHvHDb2tYF zeh}?i)-P7F1FjMUCj@sY9VT=Y76CPqdKZ6;^A4Uu@+Jc zL{$|*btWf0F(IA`-(YE)R+2#=B0zXl8&w1X3PgzF&Ijh_4cU-ll6<~08jd)&_mqex zfY5R_7p5G5Q3A1gETR#`f_m5p#{yv`Fik2-NSX2j0Ayx!|5j(e??Tw<&HO_J7yU!9 zm;EO2E;0Z^Bj;Z68Gz@{ojbeF_8cnz*3$y`U%tmaKIO#3{c3f0_kJQF1B@h+6Ig1wK+`H@df%v)EB)q2fp;X_*ARlUf;}WBo9sVk!m{Z5KYo2y<*W7 z@j;t)(X{xUTQkHzZWmlV-3XXm@ul?5+6RQk@*HDtQjP{Fu#ro7ZaKx7k5XI;*wdG; za%jwj`^;`}+1*gZm)(^l_fF-kj(!V}KAu*^8}4R0trr`&&5&MR|H$N`Q^vV_<8R93%vS~15lb}_rT_JT`i zmy+Ut+aCBO0@3c&jiB9yB2^7PhcB%=wRm?9PCK?&*hQ6mt1sF^jH7ARNAJ;f#?z-z z!KkXMw0FPM7$}h97^MoHKo8RaI!OEJ$uw6~G)QHvKbc{cq5}4PA6^U6o zDChi9zJjBC6-RjiNBMer^~TSQGF;3cO~UCnvad)01}FxOlby+^stsR0`P2g*;O3c; z9u2C_x??(@I~&e7j&AJN@9!PIe*42;!{M*R_x7J0^$C~H9uc3y`+FQ95s8EaKKi2` z?fK9F%=7O?pB_4d;rGbXPeme$0~q1s`=UsQAn;QM^ijNXz(4;IX7mHzQTA!y9`~!a zF_Xz3?*H^nxnjm|*1};esJ~2t*q&ow?cS}ysaf2oU~~FP{{3cCC11n~{kRx+^SQek z?1{c*2F)#{%|52l9KFga^a@ID7+t17uh6S>fnJY;f(uaq!~K!@c!^Q{eAtxc2i}1I+HG z1*YAK-zno>$d_@~pmDw&*YAZ-*4Fj)25%ojv!U9(Fu~qEUc9&Vg-h4hzIJISj&6^~ qS*OzZOXt(hdgpH)vA0(YA@%kSkfTFK$Pse%3GdIl?(OZ{+y4i~CRe5a literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [!].a26 b/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..8fb0c970f5a57f43c2d51c0a8965d6f17fdcbf02 GIT binary patch literal 2048 zcmZuye@q+K9Y5a>+uS@j3I-P&I8uW+lXdR2sNTksE-I+Dh!k~A*J-QdtpbhwG3Ad% z${z&W^xlm+%X(2cYGBgb8wWlbYe(@>?1bPhDqv5VPMeaU4Q&L9XP0$4lG$cq;5}#2 zGOhc(lit1e{d~Xg``-8aeec4Why(>>JgYs3ERXf*yP`QPktE4n(D5*$<3ZgJ5?)WI z{W1a?SplHHrF>~BnUyEORm~EN%w7eK*|$NUyj*_r$W%{XFQK-kEM#^kt2Tu zriY6O>mmh?f{q@aE+fN_ggfA>x(nV`Q-A;#(2{K6=VV0xh_iBbfJ&-(jDCNY1QbVd zpXZ(wv2YEjW^tBaZQcOr05yOHE#RrLE$IQM0488$n`AfJ1{?tDLks(G7WQ&uTKgS9 zIR|Iwn*7&TRNIFmBook#nd=(LC4#3ep^TZ#Aw z{uaH2il=>N0m>pj9Yx&^(XtpS3X8(8N5)2^k=eASOJfYG<3s?ggp{VKvE_HDhHQ{A zfw6uASO9Sm4+)7hwa<;qjo_WB`Dg%zxuRfc9&-~}Ho;yGruv=ZQ*-AA72^i3pkQ8F z^7(wWUNxdo&Ly`cvm|04k14nq;Fh{n@CoD5ZOfY}nlWqW@}_8T&bf`eG33UwoRw8W znHcGExfm=W#ir)m6f|jeTHHp_*}c=c!^jf+&E`Ta$~*(`q#LGa;J96jS`5==?;tNSg|l3Y@i_*90xTR`Bjo z6r8SvU!8N=*h8rEZ17k|pfb*zDfSA;t6qiwpnKwEX{KCKk# z@9c&R@aW_>w&x=pE|c5I8PGv{bgoS{flwHSvMfi03AqXWfjyDr8su}~!bo5wm=*## zb6Wd5S0}A9rbt{bfH$E@(ZSJNOXepTUjEv{YBO9JMLp8Oc3ir#y{KEIfNw9w& zA-8YOfw|c9$a;LQu-6+0alTGQdKbYWk7ibxD$Ok2OjRf_LTe%+&D;71wv)F0+DPi| z*<1*T-0M+ybv(Jl zugP~oOfG>r?Khsh28+ZOiGP}hnSp6-!>kaS_(~@4(e09;k?~C4#+)nXScoJEArhZ1 zFfgwENYd|023$$rRk7zafzj0vQw4<3LtD09Ayvg=xvEvK$!{>!wAOpSU_f!i+|u08 z+<+j+m!EbWK`J}@%ILg2XoI-mxj5+ecN)6~e%RS3ZPFIp^vJx3juiv!)p0l$B6 z0`dp^-|xHz*%sr;!4w>qzZB#jFZa3kei_XnNFotTh+hpHPM&_{yDxvUT1TRCPX6>8 zRhIUbuFV_{4Gta*Ic!eEDoN7J;nLy2gF%n`1tbhaI2>BqdvK!C@&tkrl}(*5B`!S= zz5O@bcdHTPF7gb8Vkqnp14ifXZ|FLL(6B*lP!vs32*P`8<~8l)`$vBDKad28vfY{|2>5+Qpx;Av1Xb#-ja7~L z;u&jmv$gs6a3kli=P=Cq8u5JV4BRG);YRbRzEgceVbk#Jo8;6Uy#0;9J`3RM`^L=p z?2l(=UuT8Mf3QZ*o`6q}V^YxWuy)oV9*p~8@pP0+U7&}l1A!{nlDa1t{fNGi{1;Dc Bnc)Bc literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][!].a26 b/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..41b7523dfa6f17fbe14b7338723c9c208e5c38d8 GIT binary patch literal 2048 zcmZuye@q+K9Y5a>+uS@j3I-P&I5LAclXdR2sNTeqE-R?Eh!nNW)@iHctpbhwG3Ad% z${z&W^xlm+&3aL})WD>){f$%*a^X1RKT7zoi>G`4Q&L9XP0$4lG$cq;5}#2 zGOhc(lit1e{d~Xg``-8aeec4Why(>>EUP_;ERFW)yP`QPktE4n(D5*$<3ZgJ5?)KE z{W1a?SplHHrF?lZnUyENRm~EN%v=SInYTg9gfN_JQ2sD;8PE(-eFYrx(x8z!0Qk&X zz{Lt_VAp=jIhI2DZFd)B1}8&G?f)Y~S$Pd$SMP|=Rv>Ptj!vhw15nMiDD96G_+t{{ zBTQhOv-Es>cN#j^!q;T8OV`qF$Sqqa`>QuT*7%R$zZ|m0F_kn82$b(2`G-_ zKF>WVV&NK4&EhP<+PneK0crpZTEG{|wxkE30+@i2ZIaz=8*l)q4=wD&S=h^sY3+9a zkn(%T~Bczxwd>hm+?B+KJzABg_QWTGRn{EBe5xJSYBBJy{p8mKf z60s>YO4S!MkL=FB%bWAjJDOZno>HT^p9#?sSK|uLyO{N85CDp0?`LeOf8f z-`x!x;L*viZ_hBW!DGbgWe=arbzivx!0ra>UeU8 zUz6{Gm|Oz0+HX904Hk(n68|(0GXvAwhFKvt{?$z0quV7xBjcI8jX77&u@FfTLL@#_ zU|?MRk)+?147ifKt76Y<0@qeTOcfA94{h0cg;W)f<*HV^CcnW@(^~KSq5;Jbb4znW za|41PUwO)P1gY%oE2H!Bpbg@J=i;E>-)Za~_)%xK(PHfGylAlu_8fIsE)H}X2mJoQ zamXL=|Df|aWLu0U2UBod{!);CyxiyB`(-qTAc;gUA$~1zIC1*r?|tjVY8{EnIr-CX zR9V_zx;}k4G&p!LpWFyU5cNilMMa3>clizoF|0Lc<2JK~XeCAqelWnb)+F?;rWq|3DHb8{O{q zIBU_-qiuVeBukP9qvYo1JCr^J?^8MSlxBgNrmA(#f z;&@Zl38?hXwJ-JcwVjvFd~|HvN<@g z#WU9CW^42B;YQA3&tjPKRpPnUX}C=k!;R)seW&_{!lvPwH^|97c>5cHeFnhS_x0(q znV(G0yv7O>|6q-rJprE{$AqA*vUb)X9*p^6@pP0+U7&}l1A!{nlDa1t{fNGi{1>PI Bnl=Cc literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][o1][!].a26 b/test/roms/bankswitching/2K/Stampede (1981) (Activision) (PAL) [p1][o1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..9e0d5f555d1d6b313b28f9b71105d72135d83d8f GIT binary patch literal 4096 zcmeHI|4$p|89(0_+uS@j3I-P&I5LAclXdR2sNTeqE-k3Gh!kzj)@iHctpbhwFy)6u z$`1tG^xhkFn)RY`sewszZyfk&tR2Niu@i#3sDM3bI&BI=8`=mIW|wt3lG$cq;JwbG zWm@+ijORV+z2|+tywCeS&+~pRtcXZZKt?j!gUG^gm%byK!xBl7%mp0}BRU?`4I$yx zblNW?pq>=~3S7z;$CDX(3|!SL!N}BA;Fx*~G>r*^$vWltQA`=a!pF>V*~z} zg!l*(Smi8T-`bgk!8P$!naskqv>WP{Je1mOVETks!&*$2l%FzTm0kJTPa7007M z{s2r5HxpJx3LFJ(T|Qk#1|JEx!Buq!yrrf90W6>?S;tSyi2fmGwy%k^pP zw*ciFoSkd%UuRKm4|2#>Kr?RL&`>TBJaq|W%w!gECMc9CfUJm1H<}YK@8z4bLO~$X z+`9JH=p|G<1i)fQX&4_~c$=!r z1Q`<;?lpi}5Et=~kVsQ|+=yHc-X5Qc22fZl3YO+EH<4iz?2TZm*EupieXd_IuHgy_ zW~6za&u8maBO2wLcU!jRMeL(t1s4O{e1{4?W<0uWVLe4NW({3f7Y)v7w~;r7+*pRQ zvTA56M!H-s28&3s@o6^&U7DR1w^4L% zrYSUx$MZSxX8hd(xGYzN7c&|m#eCu0pmuI2w?^<4!7P!Yc+}fy>s^erRQ?= zM+K3HO{h_-Hm`YPckUhDoQvMkJf<~T{7-=I+0CTx@v@$J1FOvI{Oq(M&kQ4;5?W&F;BUJh#H;=(No-MXcr zU?euGy)?9;Mm<>z1^X_V|3Dh{`P2`1v?KKbyoDc_eZE%4q~l(bW{l+D;g1Y@O-YQm zm(-+1z6_+ujzyAeStP?)%c9$`B%6fMp$YkCf~IPzaBNh;HN3>bgAOgj+>x=-Cx2dO zz9yvAW`|9HL&oBP-lF!O;=}Wt4`gg zl>+^pov;C3o&4J7OoYQ_ax*yz+Gvl?wa6wA3gb|g;fOFHH^4uzE0SEDd@h_H3Je9) zLLh5SYk%Wvq$S1_iR*drI&>*IIGStPdSi>1pL^JChAY=lk2Jd(mu_y(=~gM=+YNQk zf?37@JD?`ieG}YV5sT8aCtIB=SH2$Ug+X-BWU|%No;s?ZR3}on(yp$O)H5M(1xfb0 zO1Ws0TQ{e{bZla1HNKnQ?T&*uUn3*kb6}1~x0aX+%`DwYl_@YoDF1qr!`g zJh{!U$ag_ZE`n+8*PfgPo5UB1f0BchfoUy+tPmUh@>b5H+a*CG<6Ai!bFNflA(AA7 zNPHsCz`Xh+Nxv%@a3y(H*{;_Ft}TU_3Lu0Y`m%KksR|y;RxEi!`zWv9HtE z=lA!ILj6Af_uH>SZHw__e+u%YF9r3Fm*(udzldfLB#{Uv#IFPn#!kQV-EV%QQb(e4 zR{rE`6_(Z)uTLHf^!M)%IBZVDDoN7h!TdqrgMN?u1tbha$PUc!J~&Zsc>=+R@`m;o z6PKQc(f*6vcPkO(F7h;mVkn#u14ifWujx91&~QLnqbQo95QO*G%q!Z-_m2GXzeo}& z8{O*mIIGd&qiN(Xj5H<}?y-tqr!q?vj>{9@u z?`xAIQ$L=ZdX*K%{>~aXdjdj_V@%MNSv%_x_ecD&dD=>?F3^M2zCe|FN!=BUenekO bUO2@6L;OF)|3myg#Q#J5Kg9q4JN*AAKwUI? literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Stampede (1981) (Activision) [!].a26 b/test/roms/bankswitching/2K/Stampede (1981) (Activision) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..263b5922b896bbc554d5815755dac32c6dec7d72 GIT binary patch literal 2048 zcmZuye@q+K9Y5a>+uS@j3I-P&I8uW+lXmX3sNTeqE-I+Dh!l0r)@iHctpbhwG3Ad% z${z&W^xlm+&3aKeYGBgb8wWlbYe(@>?1bPhDqv5VPMgBehBgAlvzv7~lG$cq;5}#2 zGOhc(liq#b_s9Fb_x*m~_rkh}1O;R~t38M;kM-!gqB$&)B*|RR@i3y}LER7%UQeg} zG6EV|0ieL8e0eIFl_$Yf%@T~vUImWXcRv=5pn5#G*Ir2wf zdbpXeAyVKd=;-n3GBW&#c^6z&cfmVq3J|~oT9OU?oQ&unb5_m{P)QY!(I4!RfZ|B* zi`Q9GMm zFxGDX3m`7yAt8~b_PKGn5xhG!9}S=|R}?JGV{RhLCfMu2RKIh4YVO>iV%)?P6wFIY zKA+Flt41`+x#YHFmPG86F$EU`+)|ecK4m<*ZFwt2GiD84-VzPYIk%BFhTK?|v$AR^ z6C+(N7lTEl*wmbxf+o#Qi`ytVyYIH%WlW@2w^^%yVbi8n9KD2|#zm^_Zkj?xjGLp- zFdi@D!Q1ioi{P?c6JE(`gcS3IZ-M&7-TWrOR|RuKisDgkv#oz6A~&;FM3i34)1MSY zA~vl?srrKEk=^6C=~|&jn4@QsLNyf@^r0h6f#4gRvuH6Hor4*g7ht z)wLYq4N$1C7Tb=S3c_FG&lQAwX*bqWe_y&uSL=_mjy16GiBRW#v`tqRXsb@$rZDc16p8Bv@Fp}VIyjnZ$-I@}<%bml3|B@`kF>B8mu~DV>Q*V>+Y9wBfCa_? zE1)jadjs597faHdCs&)QR9=eoLnnIYv$ba1&iX{7831aqt|afO*z=me=xT_m0z&AaEnBaUs^YO+)vDLzHyCPK>%C7KP#iJ0G&eLi zAPDl6XIw{+%FezrIxi2}ATD?=4*LC_#_oY1b#@yq#_rCG7RzAIQHSN?K(}$g?;o6i z@&o=KbY6qf7URjm6r{^v3d$cZ&$;)18OidB96T6u*qn$}lBAi#rNe;-gC6&bNEnEa99r6YaH7)k1cDKjO`R_%F1-M~ z{WsiqsuAQ4@+^g7D4Y=kM(6Ku>N4093=sZ=^VJRB;$TKdz*`eyrUyEcSur)t~D)1T*j|JJSTzZ6TQuS1+T z-c)r0D*bc)OMQK9=cO|rAKS4K5Z3$|YZ=7tE@TtgY0VP^{65Ff@1Z(^D)rXJs>Xcr zjJ3Jh+WdQXkaO7c80LJ9c%gL$9uviIqxn?dslK7GX?XTca%vC0{zhP*1+e?RF*82< zlbPAqSz+=YtdX-PVC!*A3fdZLXC30fxF0rUeqHiYu1$xn$ A_5c6? literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Stampede (1981) (Activision) [o1].a26 b/test/roms/bankswitching/2K/Stampede (1981) (Activision) [o1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..e79c73e08df010d00e5e5debe4b6eb6dac71f0ee GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Tank Plus (1977) (Sears).a26 b/test/roms/bankswitching/2K/Tank Plus (1977) (Sears).a26 new file mode 100644 index 0000000000000000000000000000000000000000..a2bde7013ffb6cc468bedf6f200475682a5f6660 GIT binary patch literal 4096 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 ZKK|h2FYZuJJon=M7oU5=WT78%W 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Tennis (1981) (Activision) [!].a26 b/test/roms/bankswitching/2K/Tennis (1981) (Activision) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..faef0f0d959ee1acd22de59a0c598870fc515e05 GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Tennis (1981) (Activision) [o2].a26 b/test/roms/bankswitching/2K/Tennis (1981) (Activision) [o2].a26 new file mode 100644 index 0000000000000000000000000000000000000000..f9c3c08b5a68ae359d771c98a165c102cc598c46 GIT binary patch literal 16384 zcmeHO(Qn(v87C=9qHNh>QeeT_E2b>hIR!U*n(DgE3g*piV54?Sw=9V z4*~p;IcmydXxXWmMyeIp2pC2bL?`a#OiCOt@*JeHMLCHt%@VAB%0uGV!y4QM+e(%+ z-qG&bwSU1L?juCK%lr~>rKQ3P6_72wQ~_tlL^psfTQ#q*F+8L?lV^xw^! z+p|p>)Ht3R9Z!ofuq)L+GYOBO*R+?UTF4qUP^+y=9`Fp<2~TTOEQ1!7q-Ug^QoXUR zdN$fr3q1Noz~M$}xADup(sLH9Iq-QGXesj*tNc=E8d)%?_Zw@PBXMTgSuXPry!TgB z!NO(uP_s#lL`n3b2%U>EwE5qbWvtLPtWiew7*vDIyCfyqT*>Hi6*wfm2beN^BvI-M z10OP7!K_^aAr=L*jru9X&Ya@wQ_<2it1v1hMw87nc()`6AX_AB{GU>iM5QUmOsdr(}U>d}Ij6s9` zJ2~jqlXs7sK7}>jfQ+tySgf7STo|Uzjx1}eLdJO98S}3WD-OsR9_TQtG30FRhiniF zZrj!FEM3AsS-hrF*40Xj^GW1ZU&UQ!L&yW!Dbt{DkS$OGiCzPvPna_ z)S&v9cruloelu$;iOJOQ=@%87EFRbAkt08BRcXr)3%LozL^vTr`|m2sHe>zf1ac)N za7N@oVz{f_7JBqAgZdieFqodlUAj72pek+YzWk-k1-6o#@HrDBU5OLWo;cB!7!maO z{lgh^P{D24f?FOR&R;@Rw=Tn{3^sB3)}?&Xe|OO26sP$hYYW*|bk)b+$)QzUv6OP( z*5tTf86|imNi@OU?i6i)4mQqnCbJ`LM#8&7$HBfKam*75AOdU zF<9o2pbtfEgCRX0SqE|bD8Kc;PXeYvfuoC8Ag>RaC$kP+F+WnO@jDbeTsH3ySM@;` z4bJO>Lg!I@b55i4=gcFBGpiA6)<9rk?@4ICqkq#)9e9#`0o)6W`xc@)1%myJ*9SM6_zFbM%%P4%Wlj+Yp(HMfGvQx zlBtVWQLJPax_~!=z_YQig&Hm1lPglSL<7YtK_{U(!cs3ma zbg17^Nx+R-bfP1*Wc zkwV|SP^3&7dKRN>cDG&>A~mD>3_in7`~kWSieN_L3>SPo)(W*M>AG57EF-#h8-4Ej!f)^sA?bSQP7%~Hs70i*UTZ-jxlIEUvV1xjFc@l(B& zo|O&*DXcwTa8(it{wN9hY-dS*zq^?R<#rn6+G)h7PI0g$LI*Jh@fdCcPj6@{UjPo^ z%qKxUKLM(NJ2xVxWHFOFA*N+Hr~8}WMk=cA>*(m%=cTCWs3d;!$=gIl z^JQ;vZS&}^Y#s|=ik3ZJyt44lL204;ot}fzk@!c(!qmcz?jzmZ3xBN%4TJ_*mxuPy z?*Hv`;B89+0Rf9&=naPhjy-|E9)}xW-0t4c?mG8@J&pt6a4#--ApC2qpxg0E@4a|@ zC?3C;Y_udb-^A5&P4h$Xm3TbPyXz8Oz4!KlXII z@ynmTwgpYbCbb_#pDdsL_s=Y V|B?7V68}fy|497b|401ae*i9Z5(EGM literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Tennis (32-in-1) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/2K/Tennis (32-in-1) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..e5d5764bf8120491751234f985a4f7083202b9f1 GIT binary patch literal 2048 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 bYm~huLQ#{95AQo2-*d literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Tennis (Starsoft) (PAL) [!].a26 b/test/roms/bankswitching/2K/Tennis (Starsoft) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..1c0eb0afd6bc2565e813e1dd715cbf5830565335 GIT binary patch literal 4096 zcmd5fPPSwT0*MkFEQsA$hEA3KXx*t3oVHM-stFy2rXj<`(}n~yoeudy z>uDL|kb4hVhFByL2!}G4L#OJ*M`XtW>|$b?`r`}(G^Mh1DPykFJdVpq|Aw> z)JbY8E6Yp^%1GG)lafEO?0>jlyZKdZ^%7e+`xK`8@O*F;00L+Qj zceSZ+Xp6;pe4c8M?T{y?c{@A|Gu53U3B$vK=JSI3P?pLpgdY<74uN&r6 z^RQplm%ixt?_S4LxLMq;T_%NohlLMD+!Jxhp9AZ-SApqOuk%Fs`i9NS3UAUVg3q9N zlSR@F&Cs>OQ4p=|=`aKtfpE1Ew+>$E;dprptQY+}s3-Ux(qRv)>3wU)To;&Y##_%f#x=shZDikG`UMWu}l@#mG9SKi8sKrO5fM ziYI80f2J~05CVaPx_E0NQ5Gc)@)eblKVKdwz0w#osjO^QO>!9X*Hm7uS zbz@v<2;yF*;LbyhsY6=M$@kRzWJCD9lZR4~((?@p8#F6dlX{xM#eimpc&tud;jHomnc+A5 zj&a!B%ZFtvY?5nXi_AbsNOMR0sjbSdk_M#&4f1dRLuC?;HD6WSprDtHa?9 zsfN|BhZ}kwnp4_RH3VCvP*oa2(k92$TPuMg6WBC-M0H3F%3Dd36ja^}=HfGgcwBnd z12?1wiw^cl4bJ78u(4OvrS>WtHCD;h42n%<#`pF*{w^sVYnKx94>`~U0uM@um9#(onY8Y>y-*F>suM}@OtBT@oJJjLp;q}Iy%j*<-P=C?hv(TJ_WyEp3qC=lFWbPlm zYmOT*1st>+J>aX=FuOQcfU8P_S%FH5$|bJ1#`s*`Izls#U}|cH0L7(u!3?IRU69|j z2WB)SV*$wLXGk3s^;4q=%yFE|tUw?iW>m(8RJKdhtg#`yXvVQbi`8@0_uGGhlIm29 z+V>QFaB6=i(H?5;B#K^}g{UDpSL$?D*%DG0eyhu6Jsg8h=n`4kqCOLtuZlVRF(J3J zSJU-G)CJ?+vL_ShjFI#qUXkw7Yu!X)wEI)tidl0greJ=5H__~^h#Hd)xe}D&!*~}7 z^g#FUhf+_hn_mxnrT9p@Wg;BJq~w&km-h&-t#s?4ccBhi7V0!cFmnwhRXQ(XDxTqV zcpww0R6Cf!oQgmywI6c9+Omy{`nh<^b}r`U67B2+w51wpKro<{w+Mp}Pjy94MYZP( zz+|^vv)D~v0NAP(RxMhzXqD?OFxzojXHK0ub*7b&^6~{Q6c$FuKD)W5^__hOKfk)l zQ(awMN{F6e*73ua8txgevMgI%Tvj&t*{|=O;c>ZKbBl|Y*3?wrHLxx9!3FM@&v|$L z7$45yzFsp|RB+t3ZE1VC%R8R^tenVx1}2M`+}C+z;N`Xaz{;1a*YX=fZ^{D)2ad1Y zxN_yd65HGja~lj6yUwn&-sy9ONnb3RB+^M9outu87M&!~Ne-Q)&G!_blULv)$5HS`@G&hUCKqwS?f%VgJa5AzNcfP&*B3bHP>R9~KDOy{g zP25qtGYb-}JYC&~$>fqiLZor%6IC}NUD9%fPO7GnY*Eki4gkqog3HrWuX9YR`?na)c=gG6t}&;Y&HDkU&eUrg03(!ppuv~vf0 zkyPO!?K^ZP$8rT(8dt2^GG&AIJZ>wGw->&pnUtm4a+MV|q+iGXBljQZ6Ef)r3jFE> z%;BtDZj5h#_ADgZ>(4@SY&~u7qU}AmGLxv2j;V~u@R_tFn79CM#QcM|?RNfYPBbM) zN4o;i4w{BIGe;#yNi^U%g_j!zk5ldx(it66;tcPqGKY4f1@ zo5R3p@k$*LLkmK>Qy<%s#;$Pojc z`ymXu+ zoGxh*0mm-+h&trguK4;s6?7t@qr2bLfrZCNiN;>_24-yw%<-$|E9pvLgz(x23Q(zH%O?0|vp52VF}B zM@PYiHfVwGgH0wb!x>SBLl_100GnTJqNf{}xXbb9FhCif&<%#ZWi$|A1609OBtrqs z1$e8O;UQ@V+1OnWZ#{AroU#G#r?6~;hkWzWbecx(Gv7)_nZkap{#voMnCcbkEU z({^*J|2CdXop#$Z=$_Q+3q@D`q%w{g|wrorxU!INIvE3O{=>lF7J4W^b z$_C!%IFSjRi5gbQk6|R&;>o0O78TW%qUlz2vnyfj&;c9-Td#U9JE;Z^OD!mq$2(E* zwlAB22hg|alia@e7PrsIa{D(k-2S+9%B>kY;nXC@_hGLK`Z8Sa8$5Ft*}w2*vR^z& z_Bt3scmEUN&!&VwJxloaQ^J>V&hVu>Y2WwJncK`Cy+qTmrY}u0ey87YUy#LkYpCB% zsnb=C@M&M)nOmqGC4`2k?hdp+V>^)QN8A3}w*78u`)5RT859>q-*M5V)G0JPg@*TX zh~}4WXk8H2I>C4`~7>b7f(F7RP@B93o_qpfaJuc! z<~%jwcJwJ*t<|V6q`^4BgcK`llITXbalVQuB%ust6w9od9#|(yk2%AHB+VF-jCVqD zlYckA3wF{+|FaU1H7k=VL5XH&6(e(L%-}9TDS}ptbABX0N~n3n6Y%Xh4jo@;DM+da zH||Z#2yWiHh}TaXbF$gduG;32WUCe;NGdS?VU6>5m6k9^zp`GV z{(&o?Pg_;Mb%IoOh(d)>$lC=)H;+8pRfNOKiPISef{QH0#3-Y**AkF*LN0Yt$ZdWK zI0Og|f-0`3iyJg-(DKHRQ4wdXKg=wB;~_+swm*bftG?41ohC7)6Nb`TE#XR_Mm-dR z#2Rpkwq!WuLo!O3cyB@-*PBaM2*%5*m!d5Mw5YehgDJ5*)zv(`ajR*YKv$aLv;3u2{PEx2s05Npm%S|XU(8159{uro@vJgjPB zcPjeX2eqUZui~uJ2?xL`UIqy=Bzyv&O6rU@W*toDC9?Fd*1SfTiy$F~gZVeFimQi; z8>Oo)?PWnzO189|AeKJuY}Z^&fpS;$?5p?#{k+~Mzr~cPx7nYG)9f3Vdo`7fO{cOqSh6?ZyU;6{BpZ zQ>+HJ%vy>Y`sjXwQ1Dc?!u+%}2vd>?Lby$_)`5C2%d8Z-D)O<4k^Lq{&(wEN+p%rb z#o_b)UG@qoqb_^BhuYS~rLq*N)tY>^qQlUhEKn#ASoRmdN5Z8uvU=#+eM(ImHW=Tq zn(kkh{Mb+CzF5Lz3?;GXXnP1Kx*Tnrhj5V|;^}R-tv(+|%d4jOM~?QYj#%@f0QFyi z5@;80)&Y{$*Ql?W{3RDNJN&{zE-z7NVGa+x&M!!(Ae6u1uv=!~lCm>uYY2Y9ydY6p zcNVfPcL546=@x`mF7VS#l%>R&Rh}!7nrMNn5A=aJ-Ob(K2VdEmyQGifdd!D@ub8|5T0_TZ(EKy!kovx#5jQ7PzEu(^}HIWwbohzi!lPkeJ2E zSGoZAfw@8^I#pUpm^^p#D!ek@CipoCxM~OT?MWON8h*pSzB^>x7FKIXGe) zG4Uri><35gV&*6Hvj=@cBgA{L<&LCk`Yo0`kB<($*1vN0&`2z5IznLPv!f%iNPpQ# z^yp}srJu7Lv9LDQb_~-|5a_c71z z@2B4p_tR42uzm5w(u@3&3Hzew!qv)$f3`0Qo|C`%<(nsGCf+=i4*%-ZyQe+2ihVJi zjzo&ZXf(9eW7_S_!~a{J=#JSpX>99-C(Ehfq;dbN+TCLTn&!nLk!2}fxYn13lsBylEC?ugY)h(7-H9fdal5SI)2}+uABz4~j z#*Dtb{2tg%AN%);U)HQltpp^RnNzx%OXCJt5sG27QkeH4`C(kmBc6b7&2#Aa#g>Ak zvT)<>jEvys-HUj=m6Ay&GNQ|6R|kb`jrzRV5tr!DESmSC)XVSr-m@SD@qW>7>Bn!Q z9xt-1Eo#RC?O?*}vk-)Qcn1Vrv(-UX6@XbjoSbd)q2c*^e272K2b=s9e^Y8h7-pp7 zFl}1+YjR5YBEIWxh&_AvJo^p=lGDlykiRo6zr8XoQOumI6K|Stv2RKQOv42zN+}O&Wt0$R7tjonN<~q>}`i54V;)axp4wJlp}TKcLehsrIm;? zzbELo*6EWQVuS==T%EhVD6u=3=!nW8WOMVf$=SFYAPC@}iL4 z{1k8)5PTCs6d90%F*pDxI6N3<+~$#L`cuinm)3E#7LuWlNb@bEH!e!9>S#r2vPGQL4&_ zs)^01=%?@35+1yYa}Ea_0*iPVBuJC+5qvDE)7q$ID3z1Q;y+sp8eu++ge-REU%V=& z9xiMYueP+81x+#0(sF`W{J67Sb253#Ro1hw;t%w*dcXVzQ=;Bve=5$fKgQUr$xMAQ zti#?8e{>&b-mXd)2Z_YRy@Lcv9bu1_d)Pzuol0+6BkQmtGuvP9p`Kzg>>g?_R@hzc zmJM}^)!>p@OLD^>+=~+m?#fn(pOJ=OS~5ZqmnoJyRPSS%m3&uOK3?u-zmBP=>bt0& zSU2k8@cF?mTbYzmm#yAQ?dal?84A^EO+HiBVbYe!Q^@bH`10T-;nHbYJ$&sRrKSxV zjCVv$53EZ*Y$ttBEaEnXqFAuE-2@bz_O{hcI7v70fv=bNWAj#@$)R#^El9QPmd3G_IlPI(}j~ia+6Qq+6%-yit%yV!_*&VSq1fO79 zlqjt$0~x0)4|%6_3xX>b_!%a`QexDiPKg(kz29GI$-5Ly?uOi(DACl0uaqcswn9!~ zUy}^q6M?fE9B%cmvW>iD$Wf)jsH=|SNN}>c%AJM+6ScA^;1Ek;WalWAQ!I6&EIBEI zzx-$c#U42;Wi5+h8fUck4As z%;4b6Cb8)H6h6f@IY;T3n=BFwu7ar(l3fMQSj9}E1ev%7_oy?DcrsN3l(}s&!epju zQM8lLoB7iw_2&*{4nuFCX;I5xV7KJYVx5NQfnG4eKG+Wj;2Y47lP<41OSs?Jm7jX73)bofUDD`yUmMkB_f1V%ooj7Gx) zrEa2EN7F3*jQOaUwX)XZ7zU4RJ)F&;v2ix8t=1b&&V4Rg#pviRrib3i>|tIT_z8W0 zdHUc0{g!x;mKsNFODC3}X4FHgRG%55#% zmQty3xKM~hBAlPY;Prbr&(v={z7t^QPfP~wjVT#b7Yx3w?XcJod?vv9aWl zpN}aD+X3PUY?AHv6Z$JiyS;h%Kg(m;aoZ-0Z@uuCyG3!t*7caHd_^lkwA*^ER;wTA zz(n7~OA`})-|d??b!wuoL*VD7iBp(|0q+>=91x0i{p|Mq-=6>5^M8B(Z_oej`M*8? J|L^Aie*qNry;lGL literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Video Olympics (1978) (Atari).a26 b/test/roms/bankswitching/2K/Video Olympics (1978) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..14a5bdfc72548613c059938bdf712efdbb5d3806 GIT binary patch literal 2048 zcmZ8hZ)_Up89!eB`hv|lOB%8y^VK@iuw~iR(;60~GwIrDP_Ofc#8taZ^!K6I+8eLz#Nus=+f#U_=KiM`lL zRPDLD_kDiP``q*Ip6A~EJkg1@f)H!U9UDmcl_Y6O9v!rfOR!Yb5n0a3tyG zJayrA^a)$5*Qw8>;W)vB6f0|z=w`Tip@t|Vp$ugd%dDCn+9XMjIm3h`%>%BXfDe;4VQag4T))ek4CksCmQ_@T~<7J-^gekW>+F z-kp^ZtlqtZ*IQ|sWTKPxGr%2O=;lorD?l z;@?u!$`^?}cf;(vcQ3GSLohX?ya0teGxA$&GZMwj%Q|t@a*KUKB47qCLP`1&gd`5K zAV5J>_9S-0unIIZ7)L=l(#@ zZ*J13x5Ow3{)9SzV@YCnF|kpVQ^@5PWV54Fvn?XYRx3o1RABt08s~2-ZDE0aX|qoK z9alh~wyJ>Z2C3{3g$kjNw+o7H5qY%h2#1#wXEP22mspC4QAX*YB_QjBTVX&} zHh@cXB*Rf3l2O9MdlTxo-dws$FkV)@5^cLVi&xMEu=0j5)_LLL4J*WiQH zhm9Jp6#;SVP?gEgTZe^tF=`zk)1}*Oh?Q=&;fl3FY&bJ%iC|(AxKn_`&L~xNRMo=n zRP@vL>q#$O#d)U_j(}CX0up3M_y|6h)ERBeI-Jf+Wa(e+MUAi!K|&4(^KV`iSC168 zO4r)jD}tt!Y->3|EPdSFuDh55<*w-2SMUe=d1F9+ohegqus;)L*`HwUl~lH|6w%>m zM?SibEALQcN<&2Q(*7ZWq>i!2E4}QI#%`srqLFpjkcAy+^ioeTS#}?_9~(4QjIyCY zu^QYm8!2w&gL?@=!Bg1|^Rv=0%t$5(;WouuM;iSsvsUP-$R{gC_Ujlu)!0Mr#Mwwggv)1T^~m*ml$thdF}_hX zJ-8|Pv7gL6v4qDMN@CH`@eojSIXX5E;UYc6liO}v|4tlL*G-EL9i4R@vEfGn>c0Xd z&@SApLnN!OQ(w0D%PwYq^x36cUZT*_0v>psUyx2iD1Xyox6H$3WpC8h6#RmDNuspw zEM#5o0u)@*EeNe$EONlY7IxSvQ_J4o5E$>k@`I~ZIvP@H3{&KR|-HLgMeN{4i zPXx|kaC+3g&NU0xVP}nspq>WKBgx6?8g~|oOw7ijpi?YIkb|RCF0tIrvh1P^fy$#r z6o2HZR9GH&=ovBY6%FOa;S zhhSW>HUDTyDJV_^Tejws<+{OtFxdUSWUoSR_I>Q&r@lQFC^2U;!2Y3Rhx!`TfQJ7?!QYQ4$qI^d>NjE?SMdg!4d}`%6{`i!A*>mw)<^4a|mj%zu@BH$$m*=KlJDm>y>hxP@JhqB`Ih~F~ zip6L&$^|$~zJQnWPXEs9KLrl{)KoAKoOT9%ffr_e7z%~`;ct&y#y>eWKAt-Ei*ZF^ zyF@&pZP@8N!CzrIo$bT_TOR99*tcn7=Y_}89mEkk*JG*j6{`f%>FBjut$wgell_w~ hPEPiJw}0}?naTbxz|V`5XRr(t-Z9rbAQao?{{YB7UaSBB literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/2K/Xaxyrax Road by Charles Morgan (Freeway Hack).a26 b/test/roms/bankswitching/2K/Xaxyrax Road by Charles Morgan (Freeway Hack).a26 new file mode 100644 index 0000000000000000000000000000000000000000..448ab30546bf9b7a80b00a7caf7d45031fb08a19 GIT binary patch literal 2048 zcmZuxO>7&-6&@~^E0L1SO=3!v#mZ}$3PMXrm7qv&H9OM5BY ziz?B4^!iWUI37zXik2oc0@sECs>lWr5CTk$7$ngEiyZtD#i)#yv_uQVrl^;S9Ep9i zN}M0$5xX;Q-h1E7eD7PHyqh5gq2$kN)|QfcoblytXC&2onrf?JPM}g*{!dCzy#)g7 zHF_Wl`;8aYQq4+-V+=rGjgKOT;A7fC)sh$13yLmOtA%b|WYfK;L4u|mNx^!8<%hrn z{plv0^)20puB8VMQJ!;_{)y9nK}3_Qh6)FGUNPB~j2O+(!U}MY{R39ge(2)?b{_of z3?Kx%Q1Dm+_m}P=OvqVUK?tkrW}O4S;RnhiHEuk%NX>WQp7|ky1r5T}U=IYLnJ1Ya z!)5b&EC`6Ap*tIE0C?Q4R!p`T+GBz6hCOX%Sl^)~H7A7Pg{`=cj5 zXXmvauBv^z$j!kUb#c5!8oeY7DV^_u<69gR`ZY%FHy6+0jfBNB9MZT3Z4ivZo|Jq4 zThwKbNB(`r@*`LaJ2x8nFFU)-4_@?X!fwS=HXWB-=D-S8UBYX%joLN`;-|s3d|fI( zN(b2m9w-EN`^HS{?FX>J6J4STQtm!a;7!etR3z26mJ(Awkl`6ah67CFTFP+w9Li@M z=*s6D>~Fr{Wb^N#n~XqTS$<&byKqHd(=pGrK-PR1v*VUv9G$;Ua2^Z<0`m_@nkavD zWW}u6zmBQ)ONK~8w`*oCw!b9nfnUbF69Vlxkrpp^mIx|<(AtfJ@aj(877dBcjQ;q4 zW{q|ltu%CYLZTgRWpFnSW9(F^*${F)tZGYG+G#&xHQysE#u7)=(yD%dB}S%WKeszs zBIfmr&@s5~fw19$5VS)l?6clCXX0qtLO>VN*ocBp7cl%}d6vKykDxL)OM;>3lF@)C z$V=Vu($Mk-fiH|d!8UsWJ8Ub~6bSgeS#+H6@~8FVUzF0iu%3o5^G(z?o9UQNu8^~#_ z*%H#hxipDZWHDA>s3cQT3QimSAn+Det=5c)cXwgsts7H97QaxK<19e3i0vRyVF^pD zCaf@abikLXjEZ)ek32CiH>a?Peb zAR2GbT3KGs5asvIyh#czwiKR_=ieo3eBpzq3m+1s?swL!cp%aKDb9n}Rs*>g&Dq_) zX4&*eBCh*1SxA$(-c&3|r~%&`@*DsM|C28I96F09#!3%NXFObvTw`VVai-0v(>vv| zyoH_c(5rdJp&y5FBX9QXA8*&Q%S9|T#^`n9C^hLay;+v;j)f;)%rm?R8Jr+VGiAe7G2dpI6D_LpNC**U5XD6*^!s7KY8dY%(Qdk?<+ zi`QOJ+I^&5dF3@|H>jvMNFc)% z1?i?!hAs+$Hz;&3)Y8eVh=P5Tb}2mCE#HyzAVYG8d)_bSHyq=$V#S2<_1BVrv9@Vz zUk=MQzDa%zK5W{$gzqYmee+Rdu`*VaW$6x`shOkT+eYE> zT<98q4wsuIiu>y;O|u?n>#I$(6?fFjO|yHI@eAUTe5Vhhwx!{yW`Ad`1b!sR{_ERP z5FM25XK(h;c1~W$w_7fdN^Q968dBIhKQ_^}$-j?(R9&!U@@GAlK9DY-lXmHlPX9@q z*o^u9k4Jj_ycB&Y`81@M-1s(}UcBQ&0!RcdqKn7^`+t2-tt_f25`{t40DjVE?)QH8zTwkO<^~{pbEiY8ta@ zB=7{-f9`*cjbbJw0#AYc=l(}(8nbF7Faqp9_rJzQF%uGjQDFbM|B;%;tQrYC1NNW$ zUt^<~35mdSVE?)Qk($P=8VQU8`_KKau~E!~L|_8gf9`*zrZKBV0+Yc0bN_2>6f+?a zm;&~n`yZ)k%&L*VOJM)G|1~y>nUDy~0Q=AVkJL0~)kxqKu>aiu8XLt-NCakq{pbEi jY8ta@Brpf;Kli`JMlll-fda7qsr%pXApsKj9|AuCU{KhS literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E+/3E+ram_I.bin b/test/roms/bankswitching/3E+/3E+ram_I.bin new file mode 100644 index 0000000000000000000000000000000000000000..23c0e2a9e95f0d49aaf8861c3f96a503ea5108b8 GIT binary patch literal 32768 zcmeH~ziU%r7=^!k6WiV(F^Y<4NJWBJQ4tjpDM<$lddcYD;NOw9d4m)xcc>*w2MJ{O zN(&uabjsk;K;VwtCRx3<@_@ad3;`IBc zroX?WU6P*ZEe_pkTI?+iT_>IFwT5neH}4-vl=1BxOLC2B(hc`n+kvlU z?EeDgHqu-pNCx`8I(qLkg7wW-_};sX!OOP~)1RFvkal-^IqFO8)z>#JdEqKg({IZ& z(}gHlag{;oqYtFu%Q7L8GUeY%Bw^lt*}tUp_xr)U(WjjBb5i%s?A4cg2Jtw)J^zar z6EKp%Ub2_`kq6lS?W6cl6OB}m7-LL8{m-NS{-^YRj1}UeffG>wC(!-hrT@ScB>ET= zQ2(dU{Xf$F=l}mP){c)hl7RYOK=+^f-$VFa4f9`)H zZ6XF*0_uMW-GA*GK~D|9N!(x&Mu{i5O@JsQ+bj|GEFsYDZop38?=SbpN^k zjkJjvXbGtQ7t#Ia{zt1Fd5t8X{$E1(pZniPn}~syfcjrW_n-S8t#;%!l7RYu8Qp*G zeM_wZdsQ*{d{pbES(k5b{C7}LaL-(KiAFX!eHIjh(e*@ir z?tdd~A_iIl>ie?w Q`_KJvq)o&?OF;eq4Fu8@od5s; literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E+/3E+ram_NI.bin b/test/roms/bankswitching/3E+/3E+ram_NI.bin new file mode 100644 index 0000000000000000000000000000000000000000..ece5dea86085be34978172cbeb46c3addb079734 GIT binary patch literal 32768 zcmeH~O=}Zj6oucJq#qL`Mo|$BsYnnjRzyWaBtC>sFY4_eBcH#p&Lc zre9dw2z#H#x3inU^Np}i@zZt^K7K>A)Sj=?GM$Vgm*lCo6H@*E(-kVl(c)33t8_7r znn#_ss2oRwzo*M1m!xO=D&HINGWsD!Dl3b&j^uhz)cHpZS z|6!)wcA9Gh$&laI$M4-nu=T1He)Mj8_~PB8^hY-esNI|EL<6e5+rAe(TK7 z6{29xRfeU{KA?gx(=^S{tbb1tg?ab&;G)vM?|<%%Kk1ZTq`GfruL0FFh$r#wrJuNv zfPe({ll|nkILiIsIgbA@Q9uQOFu?@a|Gb6Y{}ldDuts>a(gfK5X$$`E!hfX|1oi|I zVE<<=_fCSk8a~Ax^ z{uj_DAZSZ~{XcKPf9!v4)dR191la!z7W~Kl7tkgkXiI?oFI(^*`(Io2z$+jD_P=7m zf9!t&Z32R}1la#e7W~Kl*H%673P^zczih#O?0*4m0)n;#*#D{p|FQqIRS&!Z5@7$Y zSnwbFUqG9Hpe+IR|EdN5vH!JI54-{rVE?aK@E`kMK%0P|Edlobx&{BS|Fu;QyaEzn z|8H3EANyZGn}DD#0rvl<1^==CwN($i0uo^VZ&~mk`(HqtfS@e__WzCr|FQqIRS&!Z z5@7%DTJRtHUqG9Hpe+IR|DFZ^vH!JI54-{rVE^x1@E`kMK%0P|Edlobfd&7u|Fu;Q XyaEzn|7#Zf$Nm@4CLm}_fc^gki(_?? literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E+/3E+rom.bin b/test/roms/bankswitching/3E+/3E+rom.bin new file mode 100644 index 0000000000000000000000000000000000000000..da9b96d279022ea048f818e4a965a06ebdb4bc98 GIT binary patch literal 32768 zcmeH~ze`(D9L4Xu#vfNos-i_S#8RYaQ7I}#M503l`*8Gc=-&}F-ynkJ4H}|2lt6|n zEr?q?WpGglyg{LR!In;LQd(#q#V&=1-SRzh9%M-FaL@bXe1>CuR;-vX{(e>TlRFh# z`~1FS;~&Y7!JCS$OZd7R*;gkb%jNNctjojDnVLBczU~$NJ=~CN=$29rH)S|<#gxO6 z7iw`E+H~FpjX4?fjCV$@Z#Rt;ubJ8K5(&bOZ ziOraAcRbSTmt@fwlTSkylN;BQP{73o|n3V)tNFW33e@y>d z*c@Jc9|&{+`+rUU??VOo4lN|m1?+$7{%;{qUQGf>1iFF!=l(}(8nbF7@Br9eMgsl7{&W9pY!ovg5qJdb zKleXU)0kBwfk9yZx&JjbikXlI3<3Mk{g2c%X4Oa_2kbxhzs5!}6B2aiuNKIo_ zjRYP8`_KKau~E!~MBoXq|J?sbO=DJ#1V(}V=l<8&C}u(;@D$j8?ti4FF{?%bW5E7% z|7&a%Ga(Up2JAogKT^|}RU?53VE?)QH8zTwkO)ix`_KK4)HG(*NZ>iJ|J?r?8^ugW z1g3%g=l(}(8nbF7FbnKI_rJzQF%uGj7r_2=|06YxSv3-v1NNW$Ut^<~35mcwu>aiu jNKIo_jRY2e{pbGI*eGT~B2WPKKXv~bJ|sW_|3lz6ilNvN literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E/3E Bankswitch Test (TIA @ $00).bin b/test/roms/bankswitching/3E/3E Bankswitch Test (TIA @ $00).bin new file mode 100644 index 0000000000000000000000000000000000000000..fa79f1d008fca8cb40e8fc3342bee71883f10132 GIT binary patch literal 131072 zcmeIwxo;d*9Ki9nLlSHt&L(l}4M$jxaEB}0$0ik`ph`()A^r&3-FdS_km@*d009C7?o|v35FkK+0D*7pJ@o>e02@oJafB=CL2nY}$K!5;&Z~`a86$>UnfB*pk z1QrnxAV7cs0RrI!PK7HLOn?9Z0t5&wAs|42009C7!U-&gD;7+E009C72=ovTAV7cs z0RrI!PKPTNOn?9Z0t5&=iGTnB0t5&U2q*AVxMINs2oNAZfWXrT2oNAZfB=DT0?&ji z7EFKu0RjXFoIyZ<009C72!s=OHe9h_0t5&UAV8pxfB*pk1PBlaC-7XjV!;Fm5FkK+ z!1D+Q5FkK+0D*7UnfB*pk1l~YEfB*pk1PFu^I2W#1FaZJt2oNCfCISKk2oNAZAe_Kk;fe(lAV7cs z0RnF$AV7cs0RjZV3A_`oSTF$s1PBly@Gb%Z1PBlyKp>pJ`EbR82@oJafB=E_5D*|h zfB*pk;RN0fS1gzS0RjXF5cmKA0RjXF5Fijv;KOjmf(Z~HK!5;&j}QSAV7cs0RrI!J`Yzcm;eC+ z1PBlqARs`1009C7!UF%&BFd0O|?Fp z<>9T1?V(A^!>zB|?nZe$`6kcpzf!h7S|%JT&*yKq*P3d2=IRes|F3^GFT<+oe09E8 zZt4D%>DltM%qhc_`&05T*Ljdfxyj#87V~)0&6n5GcyMKsR@36Fy}O!D?Om7luFK`R zz1463EKAfIbu*Zx&2sX3=g9TZ_IR{1Yj-x&@rTAI9vYuKFkY``xxUqJe<|nLsLQ4Y z7A)HzSa3BhZKi)MxSEzX(}4wVUaz;u^>|QD`SaeA<&d+o?B(`u*{W<*mF{{yUwg1s YexSax67G*Jm;eC+1pZf`)9dv923G#y2LJ#7 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (NTSC).bin b/test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (NTSC).bin new file mode 100644 index 0000000000000000000000000000000000000000..b55d6a8961ddd5dea8ba635eb8b0d6617d09c9e7 GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (PAL).bin b/test/roms/bankswitching/3E/Andrew Davies early notBoulderDash demo (PAL).bin new file mode 100644 index 0000000000000000000000000000000000000000..3330b3c33aa16ff93e18b5ab26aee387bef6cfbf GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E/Boulder Dash (Demo 2).bin b/test/roms/bankswitching/3E/Boulder Dash (Demo 2).bin new file mode 100644 index 0000000000000000000000000000000000000000..c0530c8bb1a64ccba30734ebe307392f7723f39b GIT binary patch literal 32768 zcmeHwdt6gT_V|zokMIhJ8Wr`Hq6Jr7T3t)60wP+W>58qkKgHdRRj61Wthl9aZHbzR zh(>~d0!mF|Zpy`4u|C?UQCx)r)q1K zHwW%K&dfP;=FHqVbMKv*q%2xVJsC?q74zgo>fa1=mu6;D)7C6nok=}4DJF(`BYkyt z=Bky{sthV|)nAq`NncGREy`XR^?rS9LVrS zW;(TKdy(V+zYgG3AGBQ^# zUjCOQ1h)pVK((`$W-iXA(pSEgxe`QJm9=I?X7-{rL|coNzqV?1=9;A|vd8k(Tm=-X zsl}_7xYe?J)oYoHsg$pbX!R**6VT+U`_1~0%1D12|8MS3l-{d>()!kZ#XVO&Tsyt7AwU~Yd#O6qaH&RC zJy9#UZup85HySRnQ6-lu8C3F3$$XQ*!Aa;%(LpKS2prWv%hq~1N?tJ`N69>s&{6WW z!mzi-hm+A)qJufHL_&RFgCNKGq@-kqLxe&23cV>MBTp+xK8!c%y^dVsavZ!LVsNuEld{TmeQ1zl-O%6_!Y(n&o56CZ zx~ElN13IPToA$52`leC3Ujc$%;@VMY7#g@>{;XGCo~Jrwd$kP>9U>b%Xkg^yiESZh zz~Iq*=t&e3Isgqo1BXUO0czreSKA8Fz{$_VK0WDobF=^6*4FkI`d7eLfV_MWTp=hV zK#D>{Lh*24A0!Gui0VsIi^NZ;#KPbB3emU#e>6Ejf+mYb!ZiY};c$h+H4Ltya1DV= zh9LHSj6KIPet>5{*mMJ0FZ1{Ow_1Sl5^CUF*nClEt8;x$MgU> z5krA3zz(t0f>30{V^1)dqak0vWGO(nRC)@b*NcnSgf2ozCfe}((CsN|!mvL~iHm=R zz_W2v5Nft}bv^s+gyxtS3#yAA+vrzEvW5T*2_qVadVAj7q$GlSwK!~vYNbeoP|U37 zpGrx7k{}->?=|T59{!CIaP#Sd3|*##U@48u-W#@_@R7fmC{GPYfDroK+be!LQK2b| zA(6T}ckZlMvEo)OgcE1XNLn%%A%#>j8I(Cp0BvzOI{L=AMv^mjlvq6E@lit%+PL9# zDI%KgpB(a@j-vkj7=_SFbLYO4x|gJuje0VAR2d1OiL++K`tl{B^S5rTxOKkZgP#Im zP(O6&(jfnW|n93!QB={h?IyII3U&RE+ z(eM8qsA0bg3 zLPDVsZr)&k5hF%SnKI?gH{X1t!{xejr|0|cyHAkln;gekEEZ64pSpp{XJj9zp3a)P zjvlRg^ysX=0&dm-?Veo$dmuC#AYz$|6d4z%+}+U7(&BREDrP6h7i9x(_H4y#t5Ee3IwWCL8WC3nPXi@1N-#txk;?WVV9-zKYocretLfnrw_n5lX-Dsft0S-LNG}wVH zj2BMPzfx}g!U=6K+l)GJnt5$IUTA)ggpxaO^NCUI=3x#abOcqJ8al$UMk%ZF$BB8M z*qN&5bUu0Py`@YHPEr3!{Rj0Q_5S7N&mBN(asZbzBy`yUT&f-BW{2LTo^7ySs^sb93WIjtsu=>84E^g~Iz*1M<3WuLndVt*^(792uXR>w+fg?(T#R z!n20H6g)D%58v7O>z?y~S6_(qDv%7i7{_&X_Q?}JGT5iDkM`yKSNuMC`7S<^hxkW; zJB8c^#FRl5z4(#2Ux|G}f|Nu~0^N@QcM8b^6|z9ReyKtv90^);Lnp5_1-Z#$;oh4v zB|IGN!Vy71pWku0IyyRXa&mLudh4xNJ~2FeI7mrE1R;6BYAl_7oN`ABdxMM+$IIK= zh_~VI<=^(J!LNeh5%cCng#QZtXhg)k`ST+lo%AcLi(sIuz)VCa5{bp$-abCQzJ7iZ ziNAk9Kww}{P;jtR8WIv3I$%Ip*ua5<1`Qr8lMNX%bm*{QP|e{ZMvNRuQI9-?>8zr9oALSQdH{`l}=hvP6n>uW;vJ-}BF z0C9*kAFu;gp-_-uH2~?Wy#NIfVt^ATPE4FQ@$g}UeuOsLv17;1ojbwp_z}7KGC%P5 z1DrUq`@{zX%oR!o>Bp8NG)lYlZ#R}~V7sjORy7!wGfX=!$GfTh9eA4F7sfa+FDdL@ zT^_wYTEGc(<$!?U>TV<3LT^vk;O%r#Cc;HHG1^;#7ci^AL?r;#EIgA|bKZKbTEU8q zo7IaN)rzqj1X8bh)%v=8TARKVYw1FuEOb-OH>x@DO?8EI2%XOkG*lejuwN;VR12?5 zy=5`N#u&kl4LU>(b*ZFn}} znr5Ea2DnUu+X^^0>8zzUO&_A@06hPfBu_trgl}mmMTGKBsyOLR%>txKR=uG5y=u1V zkI>w|k^69uP>|vgT2S1)c@sv8RG8lIa~_?L-l>_1@N=gQw&P{;e8=ATcHqmk^0-ou(uIO^H?iKw`l!ByL}4wXEw5=LSb_dk#;&$CTeY%Gquufihbp5Z8`v2&zzx|Q*-`8&1+gJY%Qvda&{)MFe zr=6yQ|IPa2e^7tnFY4dXVrl7;ZS1N!BSgZu?00f=g<09T+2Qd4;Q_f>5RDCriwh5r zi^~p(U%WVXaZu1oMRs-^g7n<1ER-9*7*bKLxA)@Lb5KyO;?47c0pVj2I(hEV^}kH& z-|DVE_sIHJwww0!)xWbH>i;&WzlPM`>@@BFW&P9gRMT$W?00L(5!bnO>)mckGqlp( zd)6Ln?4Pqbx3;v{hyD5d`SY<>tMwvRQ_o&L(qz5m_yivQy!5&1MKIG_2&3YQa1Sm6 ze>qNMY9bS21dJ4KhNwkyd>{U(g?LXb7NkgWW2+?9fR78k2 z+DzH~i27;9P|B95h`#7|!QSji!G(-hZGOy~bbib@-4nbGc*eNJjO?lsTnzO`GmCY; zT0wfrvW()q>Q1&3m#DU?G}=_0NN*db6d1O!!;A$D94FEX8BW%y_hS9k8`K*aCC2j8 zZFn0_)cXQkuSRvgVT%db@z#3cYU)*6aH7_a8fK$@YXcXC$zuF2U6@`Xk?FjR#2ERh zc2xcoTXdnHExOS7h@tj@EqXYsw9@b>TSVt^gCgZIvbwxFwKNoF1h15Af*FC_*$t0` z0&AYJ0<3VdOCp&idqiPN^Vof=g%a(6>$HmVv52(6GHs|usP&a;{iS}5oHv+qfw}^E z=Oc(8X%t{;<3e6SZyyxkBlHPCewS9PYToD_a3xEjIAuAP5L(hb;n0K$6T09b{#e9h zRPu-9Ns~I@AAN1_(=ynSRa)Am6X zmlUhcYzmTnY*DOh>P!e72=6n1`&~Epl6h!SM+f|)4#GS&6>&8juy^yWI@rgU%>2l_ zbKKx(B9g|XO_~rkb#zix#?)D%b3)T1mxs=YDqH*VZ}OIp8=N*cV(^5)QDGTj6T+gx z`r@-9k4C0N&WfB9HYaRE*toC+N>9z95~zrfmyo;ytVr9N^y@~`?O6A6ls*Nh8 zN(GS(n;=QOQK?!FxDD$!6aZeialMKFye`OX%5^p6-Z|A5YC7d=I+Y92Q+HgaAOb#k ze5R&TcXIEL-0+7NvP^MJ;Yp<*0bl&bnGd%9#nQ-6rlF3QtMfYjnAki(o(S>f3qrV`TLGmoPPqKm8zW;sla_bU7yncfwDb!7TfJm-+-bi-@Z24C$=$fcR$)Fe7Jvz(Ai^Q<$| zTQkj>>7#khY5uNF6Gwtc#7S{Noe@_S*WTaFll~VlQ zN(j)l60Tc$UYnhoLZ_zKX|}d$3Y@wyQ2czvMWgv~HsG2kz0)g}pY{ML`ixUkN2FAg#*#@Q<3+8_2BrPqNzF7Bn5mM(q!?O=`zc3(;_p~!oWpMOBm zzbEv-n*RGjNo5HBB9h7?uEGWX$KgT|c^M%|@EM>iqwIl~g!orX4|x$8w{K_gXyWz8 zk}`5~GJp;t;`PSp{rYKCkez<7K~fz~>+yc$`whO;p_vHB zc@gufLfjEFFR3c2YF=J%>|t+gtSnqMdCC+Sz+@STOqq==gDT z`}XbQZm$=K;}{eiHON;=c?};ik_rwB8#02tUfh~j7nyYXk4WH$mZS<$sz4+WrUnN} zyru;N2?fsw1PcWrVS~KG`rab`j~f;}74m4{KSBc!k6WJD|8xx)G%*3RwoK`u3(Ang zs!`CJrCnrpBGx)+-L-P8kEQoq+XW9&-i$BSvjY5{^+Wl#9_uz{HvayYy2-e?-0;1d z;004^+c&y4ZqUg)wyUXathhqw^i!7UoJ&iORUl_x%wzu~gY;wTwqxqe#-?()>aGg7 zlc2(&$s=Flwd9+80n8?g>k6oQoz$l`Yk{?Z`kSpz>y82%A_Yt!<$c#YsYhC8&hEiQ z@-_=x1^=MU`}EQKX>VFL#t0W3}vc){v6A8$WjNq~P)U~q_ZKxo*YfwI9v zh7BDaK7tw<@z~>|BA*x?H70uOZ^r$0{F5X>CwP{x(2rFG!!1J%6%8F{Zq#B?9_#sFTb%WX>m&2(=X0isR*Y+Uznag z|M9^-PjAy7IMMj!naxK^HnQKo&FtQIJ@8%0LfmzHn8yUj0^WH?CX0=g zSuBukTTc(TpRen=9n@{<2@enN`L3oW8&)jjzLlN*#=3QHWCP^#|8e0X;rBB%9hc)`!ZG3s`ky2-S~PQEmY5WMV2C5ylyo^~>oD~F4O zU+0(o5GRlQ5^R(R$#dF(5-+=X)09D8k@Tk`pHEELc9Q)8o=1{ggvV#@b!5i(%p8Xm zu=-q7)yUq{XW>-(fcjM;ih>!WyF)qJV06zQano+HKy9ZTWNYS57TQJVCd9XKZqfLJ zJoYP)Yf{?>WIY*tJORT|Wxm;l6E)YJa@6)LJXY(zUSGI(79AU5F$2QR&Q#x-@R=wO%|{YZJ=IcZnan3?kM@8QR;*o9QT+` zaPo#7GL_xv$S-T{$dhtB4Qsbkwkn-Sl52rcmgcsLdoaRHP{yP0pgED$#WwrR^6P)4Twv$eh@Trp$ z+vQK&sbHH9(MN%vsRr{qo~cP4|ojiZwEr?ng7ssnNVacTKiUKV z`j{U(D>}H!9K@X*!oiGZDJ)`0sWKz(Bt@e2^cjV_mmz6X(uSlcY1Hz%nd7 zb7RAU;^7M=>D*bwjpM^S#yh|}K0Y8IJUk!^?wO$J@O3jh=(V`q93SY`K|w*eD-{a8 z;K&aRF3ua&*eG@A#0=uq_A_0r`Kg1xrunghKB&3Xp}F4CCqu6&@IA!?9u0Uj;L*Up zMFRr{4H_y7A39>#NPPCef@QkFPl+2~=hGQOwaMR(PniPjxW*J@*X(wfg6;StSQm9% zeNNp3$$@rQCDznwIID^?HdVk==_yuVt+{SNtOd+p6MUky(CZrnx}nuxd3wRYrjiqR zd5zKzo!7x8T&fw}Q4fBZ<_X?ELLwjQ#Nd9yz-vt#HmQ#>{v>b|n6)t8)F>NnWk%`+ z)OZ^+j2deLo2Lb73aH68o$!lht#_XEF5?vd9EzxryT*d+t)<##gSP%`nf5E@agfK3 zEz}>$?l4|7YQD`-mZ#DhOB;d5z0NB0<+hk54GGaBagp|MD|uM0(>5S(5InEm>$Da? z(BDdebr58qrHd*}TpKP1s%VN6S&Oa3rBxOIC#2SN84Cpk+5QqR5Y81oT0PL=4{@%!wR63?DwH31-Yd!pB9CY5|>B-qd>D>fM3UH zWU`01F(RCTH^F>qGu#faF%e%RkL~jJ+i7KV4pzcF6YVR8&*ktP`xI{Ar$eFiyUDtxDEknu`CijQ8dVn;ws z#GGcsfPia=;R#al6~-IaGV5`DsREygrAu%4;ZnNnh7T^I_uLRy3qY`4v9zu?SPs#> z*uad%G)TLjNFI4EHPpze8x3EmK7%^{9iOL<;0oBlh_~RaI3HidyJ0EK0bGmgum)d( z&+}LCe7pcxV#Zx%P=E_pz~r%>*?~VL8zO$WSQVy+4=q+z|>RmP7Qg6u84H+2gV5Qsz*Cd`~re}C=e zAILKR+2sL~+2u~y+(B1Kg(sFeRR`$9vh+i+#p6(H${=RHH2OnQw{>H{2N+wlQ<6MofL%X!z;!qTk+bR8$CtD|AP2L0}+52}vH@lIG5 z)EFa@0N@h(Q%+L%DeDar>TX;gsf-z0XOKo2Xwx28>|xS5D&-;V(!hGUGP+~P9tWs7QOAwi+gy*E~;V`LhoAO$*nX|gMJOeG_PXr?d38D9vMO4y$`|5PDW z+CDbDo$;zT9a?UWa^;~(>7 z=|AEhCFwtAqADuBot1n7cmDJ3`SR!6W&gSBMBrUu>YKXyU%Kwa^JGgLS$0og007yJ zM;71{7{tS10I<(BYK!Wu4yjJ5PBUTnZ!qFDshVjEG3w36v(zo{>e*Y?8tdQcn%HZG zvt-aX%{cJijAt!AtPi8mO@mB&fx79)i4z}lJc+T%e2g=!uMubknPDf)eaJ@Xw?O}r zI^2BpfIN3#>VhRJ-`ucu2RzZ?Q~0!LFbD&q}VyNrlwTHuyJwW@t2%Dw#=z;1zdkC%oNmfN6nznT`GoYYmO6g2;2y-_qwB z>h&V6Krf)7`ZQm6{yliUJ`l>JDm&?oqg10XI~f;qYZcb>fPvMN8>$0pH&*-Bs;Wh` zSi6Ki=jVmb_1o*-FnmUy*0144b+WPII-8VR6$K|*ZwSjk^d$l(Q=?J__ko&I2;@maWFX1QueY@4Qj3}VlNnqO{MlK(2r>Y z;=-VdxI+PeFSp}j`Rp!rG3B~T5~^T9=G#P5m82iKdzy?cc$+9xA6QAN`8ybk#t;}?6)q#aL8NTvce5go$oo-0NZJ5W7eeM#@b z7vZD#ZV-{>w0jvp`T5Q|3;QAG961b5G@$pu-jM=Yhqq&`wb)o}e$Npz3>P&FVuSj% zIGL=tut6Sj*Sc2`96Yq&-=KkE-mW?Wbdf4BaXY26t$XQ@Vgl>Pcam=CJoQwXi+K}& zN`DIPZH6!lAVfZ;cp2-j=SSPMg6K9r3%xUDAn+h72tSgF^*-vo3cA5B0Twt$!ZJuu zHS{VWJJhH%?0Lj(h`4!B>>j=%T55?C`b@@mu=IAX0?-d8X+BU5glPpoi9*<*pi9UL zqDs>Zr!0L}Z7JL>yG%|9m)Dj-xLiTBLv*9}2KfSEF7r8E(!gnj#;Qhj6ME;N4z7CW` z5ieN&+IJ!HK`&Z+iE&~J{^6MVhIN}v@0;JKzMfuA-lnDR!Y!F%e2om6t=MX=;cyeg zn{^_2HNSdlq;?i*KR<7%@&IFzMaT-^jxA>Va8X?We6TBOhesZ|*CA1O7&=58z&)HA zONQ!S4CZ8TCL7w`+M5$R$aody&EpS5&B=iyNUy>Xq{MRzh~V&1 zID+&z96?IFUZl%a1^|)!E<_N@0DwYy*PYV^hn~e#*Et+_s0nX4*n(9Do3T0%99&-y z?ne3yj#uC~YN*}qb8T)+yxiIeM5hdARPhRRT;XXRO#-kn%b?}iUIDg-0>}dg5Wwye z9v9fA1{_^fc$&wO{V^i#JenM_Mqj_=)*#e&(uZ#7w6@5PQhf~<*_(zh zrB-~1R>p+!g{t%6G@UQ&RTouPi?^uUG(Ot1ysSgpdiSfzw1>zKIZ-kP;6Wjj(N2BX zMSmw{c{FmsHtu-pf&+F16~T@?pfYM_;<`osUc)ITW_=G!c^O)glp43<4J5 zLW5SdoiDUcY3^Nchv9sLhtS+$x>ypENw(|=xL1is!G82&=_}Ul^2jc_C|QJy+`(e$ zbYle~U)$kT9@|iAdn1 zO=WVa`FtFTG;CM(>nE_G5DIyf6tb?%dR6|!T}C;hI3~nU)VmwZXU3HwE4yGHqY%2a z7&6gkah$@K&v&B3TgZWoVdOwY&`=o~NEel%L7b@Oooe6GGUdSbEvhg1?&}`_yXyqi z9R|Jy-~hmS4mxS!p;LSdT458E*{cJ7&<b$--qF1@Q9jvR=WA86w>5^dM} z=p=xLO=@wJ$fsp;<2w;YiT(%P&8_kV`Vxc)@ly{$V0aL7nJ)nlVlyD4vXsb99?WH`x-8Q2J? zekG~W>(AC@3h*E3O8h+NHjYAWj#*CFQ5{cp+29BUAEqPdwjZp@u~@#5KU=4PJ#X4``{0P^Ea z1d{prA#Z`u$4}(nd*r59F#Hr4Acpiq1O|Bt#A5ipB9VxkfEg@>gE}St0Rk^^;QlMN z)!Pg_^7Fn(y1;I1AtX*GTkQJN+T-%M7D;v(o*SZOLAm%kBHWwk3yY zzHTQQSRZR-gP5^>8-y8uHgLwKOs{BRrvLdS8|TzCwacSydOvj>9Qwr@0x~Yj4>?H3 z6KY>D=9@q0g5LI`3$~wrY0N*oB~Nvcn`BakoXicWG%KawD5cs#tS=1tSCO5>n^&Pkiq+N`b()q=YWM#J#dQt^ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Espial (1984) (Tigervision) (PAL).a26 b/test/roms/bankswitching/3F/Espial (1984) (Tigervision) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..5484ff61b077a87ad1e300496c54772aa44fd2ce GIT binary patch literal 8192 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 Nk|+XN04O76{9oj%QWpRK literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Miner 2049er (1982) (Tigervision).a26 b/test/roms/bankswitching/3F/Miner 2049er (1982) (Tigervision).a26 new file mode 100644 index 0000000000000000000000000000000000000000..40812263d7e2c69254ac6dd94b49db45578b6619 GIT binary patch literal 8192 zcmdT}e{>Ypy}!HJAG1G_Y#@dZpw6SnAico}-<#dNGxz)Je(#;{{rx zt#i2KR>Gi|Mj*O~INg9;gGSR6Jk1XeJC7G+CvM81s~# zJ!Bwb%pNlj8lR6I72mIu?yVDt7_ItXX~N18f5DzXnj^l%p+`&ehn(mctVi!J)FMt}#Thq*cHD+Q}yh@Hd zA|0Bq%#=qUVwtm^mV$7%@FfEz~-qQv4VO&U6Hy`5kTPw#fsEa#iN(dBkgy}tJEWO^WbK+jV529 z&d`@BH?3Enp-t*`+N?d--y6|(&G0RxPicDps)gF_8Tvx)MY&0PNp7Z3k3KiLYg8ZI zeTDvKjQ)8>ze9Tg^mOMq@#xP+pC5gp!&;+01=&wuBm0>NvUfoCPRQPVMfN!TRoO4v zvR~4&#I|hdQke=9wQ{6wby!VF?5|Qh;@moMMh*KG)J^KTi{*OAn8<}^B`h!2j>}!xd~3wjm09N7X%lV6zV3#HxEoB&1MC(r zE_zhHLn)FQ#g>TJ6ww}*yR{Bk!Xvo5wbODJ9__CZl$)7I`R?n4>P57XE`iwZ(7W{z zy+;gJv5Do$zhh&t;gtcoNnBfnDKyb~JOWE(Jla^X8Oi{r{chNJOZR|~vbJ0W+e58sw4zAuDDfhM3AX#`*GQB3?XtO2#x z;9aZ%N1&zk5Plb3qiAxYl98KW1(>ulUtS6kSYJI%m#Uw^rD_+$IpRBY>bcu8^c*~4 zmHL*^fZg{a%`zTTv^~VSrK5{zX=9qET0zs@Gg;Ftm+3YFSeXmTEcqh1)1%h1!BJ^W z#7tY&y04oI8-uE4%uvr-3)B(g8+4VvI_suhgv*Lj3$#NHqX-0(py=7bH!MF~CKm9l zc)t3DHfO2Bn8F+ty#(|sx|*iwvs9r!mA+fYcGhVG5=?|yTbwrOLE0=nUnNdqi>`Ic ze3`P=gt-Ex?)B}aL$qGv=ET?rI2^*8X+7S0GdMA!=Igi_uat-tZ$|gCZh)(yKqls`=A3n4*|;W&m*p&3s)Zc&OAZjcaIZrhIBfe zgaKJU&o6+5;{gU79lH-Yz`bsEd5JTJp}pw4ybcGydt87sBnBc3$ogKl11ucR6kz<> zKIi~%ZDCg{5yMRVR`jE-p%A~vqkuCc7J@J!>$kRqS{Xg)*v0s>eb51(;g^%#D;=+p z9;=XMS75Chu=(4}NHRxywoE&RVDjg3X*S-f3ZJW;f-U1+G6!ONmp985LEa&5DOWtW z-BZqYE8GEmNE3T;ibGxsC&8HD7T_M%YO?rdxosq3K^5~5eDm5a?0=HNy#m`<*kEh5 zN3Kd~uF|l_{*O|)2hcV_!p1AE5e`5}!r!^&#as&4VoO#@Wj1E>C%Gxz)mw5aUD7-4 zR=Vc!;dZtT_AD^XCT8ZaR5o#syi=T2t`Hk3uhD1217+CehUUlR9az&T>PPe`-A$jS z+tp9#GfGTef<3TzzV@;FbSej_j*xPg0n3>p?N4dv3z5674B@@f8)YU$}c_ z3TRJ@IZz#0n|ud!;C|_+<>G`d6keKj!Far#c_Hm26njQq%wCta9RlR%*eiQ3D~C@E zsUM_0SB?pI6Zmt*CRp4GQY|5Bzu zW_a{Y!>MmWvvI}y%TNu7vYXb|JRTtMrY*~!b8;mL7kiP{J9 zPHjWVBc>K`1+O!?0=yq)bYOwmfd!_fje$k}Y8KcR3na|Kzyccs3+zh!5G;>;H4BW1 z#SSpp231(Dtp`^^oX(8r`$%!~uS;;5UC42@t@6VPnq*sQ-0-k;0*nuvts7HiA0&V~ zbRyj_Kl>6o@J4yw4U`iLBEEh77b}R^0#jQmt*%UWX*+2>Z1ymWmbGj8OKu&bF|_n9 zEJHhXOq`7~Z2U2vvS4pQ$~1%A>ed3m4JdnWi7R1o0gM{W;7;Qr#1?^)0$p~FN#@dx*@GLz+t_L zs^ArXunLUh@rd>JjivdDV^{BnNcWv#m+r=133jg-4*TydwU*+No~}TKbU|Jvb5WO! zG`)E5z1q<+bF$%tn4^f>$_DYH3PonkBWNIhuhW=~nh0sa9>;)axOJi18Q<$b60>Un z^-#AXj>m4t+awMu52s3kie#y*t5jCE;|mgR6+13>v>Zz$I(D(&<*k=H5*-~KiHABm zE)ycQUJhNZjCTm(L{t<)EmlGdhm(ROMup2lhnVOHb#$~|ZVk1zk{MGb7nKxje09z*y9 zugC2og4Z{ReTWbQ$RErLjfS5M>m~>Xa=?ChEg#2BwSR z#z<_c1AJ+&T_Kj-uq5XZrVXndzCs(U&l+g+SGufaZv}3lk!!?L9a|gp5#<#j>kRQS z#gEIxVfIDn@3NoJV)2(=Df;YJ&lMiCMe=G`;%4}-8gL;E*b%8tjpc^8|X zU0{+0B3YpQ9wYH5vYVdvCOE>5N zDkEQd1h9?z6#AL?Vzu;GwyvG%-|fL+9>}(Mu(4ww5;o*(n^=lAK|NMP@aU1{Viil2 zmml1ivQU(qoDRHkoNnx`#o5N!`}VP0ao^9`Ew^t!yE%;-rN{6qdkv5BGFFbkN5kBApoUCBI?bmh>qnQ|EQ3^lZ6u zJoT}jQ~bS8>8DU&C}{bL?{h#0sj6K6S~t6K@)M~~bcbY=E5}kFT_v|pEwxFt_xkUM zSmL2JV{-pLVBwO*hMzCp>2F1nLB6JA(tG7lp?^6;e_{k}^omGw#QHsyJ%b-V&+A_q zp(8_rHtFFCB8ZWdM0?x{vJ*5f&eZ0DSleg@ z43Dg@CW``I$SsSoI zC+B$*p%caE9(TA?;<1D~nsAe-dqDKGhM( zQC~EX@sW^kK=ijp{ozE$Z$Xb}AT9>P5OfcuT)`G+FyzPt4M#BP%#FHoi9nbo82M`3 zP*KmUA#YMl6-liN(T(-oFtjjPkcyT5g|=<2e7|ieY9E+ZTr8+&%UnP|(`#S`#qZ5ANZuc2EOti;VW;3uUraWSqxu^@(F$sqgzHkj$G$ziSt?xAjvF5>J0=q` zWQ!QKMZ9K<_>C>%x3sx^GaE6zCb<8K?2jTl#Zd@JZd_1|%Rc1ZmXUy2T@{|U&i z)jfb5W@sF&0lk6_1KmPj19~_84bUs-Z{s+3W8C{V_s==^e$L%%bMs?4pc(hiIro0f z-D`8d%(;KTx%)VGKj;3X&HXZNL+UR$cOU2O=iI-vxnJSj1DyL;ocjRhe%0oFg>w&Z z?q6~41DyL+&OITjqoQr^isLl~#CNOC4Z@0~Q&sjmv@Y0|)4mx?rI1t)UZyy$8rH|! z$-JGy+i9#FGhLS7EVex6T!ir>aivfisZ!>kxh;bTayX7diDeW{^-Af4|1NMibA*>p zA}fl#1IcU3Cm7>6N3P-9Nuf%0bd&6)cSAK)} z1Nct3Wm5yb}V2SH1=w29pmrJ#CoCI9M=_{qJ({}QpY|R zm!cgtorV`au}*S^m3A>&r##G>N6}=%xLetTPJEn$-HU1>wUJvRwKgnWn|>gjNk`HV zLbA{6(&v}|WO@DajD`=RYN%~^pdr%`X#h?3d0oT#@K5qG2Y$jnjAmc$z6bVY_C@xA zCi}c@-+4kxYD<1l@`sX03EvZgC_|ot1Ww=EK?RK z15fsOUD^3Bf?pJW5uTKpgz#O6$%gV^ zxS`xFmKVCsLYL55=<+8EUBqp!jOBvc8;wN*Bo+Z+c|$HZywQg80BI;EK5=EEPi(9S z_SDRCr)uT_usr4yV^zVPs=4k|)m*YN7QrxRMS-kroLT4rkta7ghZN;TMH0!4BF)H+ z3Zw`bg(Ko4LJmszc#sGIGf0TXohl@rU{4__bf#Xcv*S;;>C1tK6N)Bpeg literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Miner 2049er Volume II (1983) (Tigervision) (PAL).a26 b/test/roms/bankswitching/3F/Miner 2049er Volume II (1983) (Tigervision) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..758070c83a0f859801a0faf3cc593637007bf342 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Polaris (1983) (Thomas Jentzsch).a26 b/test/roms/bankswitching/3F/Polaris (1983) (Thomas Jentzsch).a26 new file mode 100644 index 0000000000000000000000000000000000000000..73c5bc5214e8da761aa6010296b660f406649654 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Polaris (1983) (Tigervision) (PAL).a26 b/test/roms/bankswitching/3F/Polaris (1983) (Tigervision) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..053d3ec5251339653b1233aefb751e117d97005e GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Polaris (1983) (Tigervision).a26 b/test/roms/bankswitching/3F/Polaris (1983) (Tigervision).a26 new file mode 100644 index 0000000000000000000000000000000000000000..053d3ec5251339653b1233aefb751e117d97005e GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/River Patrol (1984) (Tigervision).a26 b/test/roms/bankswitching/3F/River Patrol (1984) (Tigervision).a26 new file mode 100644 index 0000000000000000000000000000000000000000..aeec4821b7a707f8c03b5af3377d32cd5cf6eaa1 GIT binary patch literal 8192 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 D8ujEN literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3F/Springer (1982) (Tigervision).a26 b/test/roms/bankswitching/3F/Springer (1982) (Tigervision).a26 new file mode 100644 index 0000000000000000000000000000000000000000..aabd6a45f16ba2e82ff129ebdb0b61ca27980ec8 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/4A50/Ruby Runner 4A50.bin b/test/roms/bankswitching/4A50/Ruby Runner 4A50.bin new file mode 100644 index 0000000000000000000000000000000000000000..0c2b88297fd126135b2174676ceee744dd0d30d1 GIT binary patch literal 65536 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 C*@-{^ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/4A50/rr3.bin b/test/roms/bankswitching/4A50/rr3.bin new file mode 100644 index 000000000..511cd62c2 --- /dev/null +++ b/test/roms/bankswitching/4A50/rr3.bin @@ -0,0 +1,7 @@ +êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿâÒÂòÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÂÒâòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL²·¹ê…*ê…L%°†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L±¹!°L€±L°¹ê…*ê…L%±†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L²¹!±L€²L±¹ê…*ê…L%²†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L³¹!²L€³L²¹ê…*ê…L%³†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L´¹!³L€´L³¹ê…*ê…L%´†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…Lµ¹!´L€µL´¹ê…*ê…L%µ†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L¶¹!µL€¶Lµ¹ê…*ê…L%¶†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L·¹!¶L€·L¶¹ê…*ê…L%·†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L­·¹!·L”·……û L€°­°…­°…­!°…¢‚…L°L·†ˆø… oLï¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL±×…*¹¹L(Іˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…Lѹ#й'ÐL‚ÑLÐ…*¹¹L(цˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÒ¹#ѹ'ÑL‚ÒLÑ…*¹¹L(Ò†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÓ¹#Ò¹'ÒL‚ÓLÒ…*¹¹L(Ó†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÔ¹#Ó¹'ÓL‚ÔLÓ…*¹¹L(Ô†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÕ¹#Ô¹'ÔL‚ÕLÔ…*¹¹L(Õ†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÖ¹#Õ¹'ÕL‚ÖLÕ…*¹¹L(Ö†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…L×¹#Ö¹'ÖL‚×LÖ…*¹¹L(׆ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…L¬×¹#×¹'×Lš×…û L‚ЭÐ…­Т‚…L ÐL׆ˆø… oLï¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ99}}mm}}99ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££ÇïÿÇ«£ )AM££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿßWGSƒ›+#GGßÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿ÷ãÕÑ„” ¦ŠˆÑÑã÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ99}}mm}}99ƒÇÿƒ99}}mm}}99ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÿssûûÛÛûûssÿÿÿÿþþþþþþþþþþÿÿÿÿãÁœœ¾¾¶¶¾¾œœÁãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ''¯û‹‹ßßÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÉÉëãã¾¢¢€Á÷ãã÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÝݾ¾°°¾¾ÝÝãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}}»»Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwûûûûwwÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ9}mmUUmm}9ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££Çïÿ)AM££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ ÿ?_OOo¯?ÿÿÿþýýøùúúøøýýþÿÿÿýøõôáåèéââôôøýÿÿÿÿ???¿¿?ÿÿÿÿǃ9}mmUUmm}9ƒÇÿmUUmm}9ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ9}mÿ?Ïïoo¯¯ooïÏ?ÿÿþüùûûûúúûûûùüþÿÿøðçïííêêííïçðøÿÿÿ?¿¿¿¿¿¿¿¿?ÿÿÿŸŸ¿??ï//??ÿÿüüþþþûúúøüÿþþÿÿÿòòúøøïèèàðýøøýÿÿÿÿÿ¿¿¿?ÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇÿÿÇ»»}}mmmu³³ÇÿÿÿÿÇ»»yqem}}»»ÇÿÿÿÿÇ››]mmm}}»»ÇÿÿÿÿÇ»»}}mM=»»ÇÿÿÿÿÇ»»}}mmm]››ÇÿÿÿÿÇ»»}}meqy»»Çÿÿÿÿdz³ummm}}»»ÇÿÿÿÿÇ»»=Mm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿø÷÷ïïììïï÷÷øÿÿÿÿÿ¿¿??¿¿ÿÿÿmmm}}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mÿÿ?ßßïïooïïßß?ÿÿÿÿþýýûûøøûûýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ)mUU99UUm)ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££Çïÿ££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ )AMÿÿÿ???¿¿?ÿÿÿÿýøõôáåèéââôôøýÿÿÿþýýøùúúøøýýþÿÿÿ?_OOo¯?ÿÿǃ)mUU99UUm)ƒÇÿUm)ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ)mUU99Uÿÿ?¿¿¿??¿¿¿?ÿÿÿøðåíêêççêêíåðøÿÿþüùûúúùùúúûùüþÿÿ?Oo¯¯Ïϯ¯oO?ÿÿÿÿÿ¿¿¿?ÿÿÿÿÿÿòòúøøïèèàðýøøýÿÿüüþþþûúúøüÿþþÿÿÿŸŸ¿??ï//??ÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEÿÿÇ»»}}mmuu»»ÇÿÿÿÿÇ»»uumm}}»»ÇÿÿÿÿÇ»»]]mm}}»»ÇÿÿÿÿÇ»»}}mm]]»»ÇÿÿÿÿÇ»»}}mm]]»»ÇÿÿÿÿÇ»»}}mmuu»»ÇÿÿÿÿÇ»»uumm}}»»ÇÿÿÿÿÇ»»]]mm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««Çÿÿÿÿÿÿÿÿÿÿþýýûûûûûûýýþÿÿÿÿ?ßßïïïïßß?ÿÿ}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}ÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿø÷÷ïïááïï÷÷øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃU99}}99UƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££ÇïÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ )AM££Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ãÕÑ„” ¦ŠˆÑÑã÷ÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿßWGSƒ›+#GGßÿÿǃU99}}99UƒÇÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃU99}}99UƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÁˆªœœ¾¾œœªˆÁãÿÿÿÿþþþþþþþþþþÿÿÿÿ#«ssûûss«#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÉëãã¾¢¢€Á÷ãã÷ÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿ''¯û‹‹ßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇÿÿÇ»»}}meqy»»Çÿÿÿÿdz³ummm}}»»ÇÿÿÿÿÇ»»=Mm}}»»ÇÿÿÿÿÇ»»}}mmm]››ÇÿÿÿÿÇ»»}}mM=»»ÇÿÿÿÿÇ»»}}mmmu³³ÇÿÿÿÿÇ»»yqem}}»»ÇÿÿÿÿÇ››]mmm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿwwûûÃÃûûwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÝݾ¾††¾¾ÝÝãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxØ¢Š¨ÊšHÐû¢óš©…€©ø…©`…‚ An¢ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ En¢ 8l½ÊÐ÷ 9l½ÊÐ÷ :l½ÊÐ÷ ;l½ÊÐ÷ l½ÊÐ÷ ?l½ÊÐ÷ Dn¢ 0l½ÊÐ÷ 1l½ÊÐ÷ 2l½ÊÐ÷ 3l½ÊÐ÷ 4l½ÊÐ÷ 5l½ÊÐ÷ 6l½ÊÐ÷ 7l½ÊÐ÷ Fn¢ l½ÊÐ÷ !l½ÊÐ÷ "l½ÊÐ÷ #l½ÊÐ÷ $l½ÊÐ÷ %l½ÊÐ÷ &l½ÊÐ÷ 'l½ÊÐ÷©…Œ……Ž…©……©…©€…ˆLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©•…øLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ +  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¡£¥§‘“‘“BRbr‘“¼½¾¿ÀÁRÃÄÅrÇÈÉÊËÌÍÎÏÐÑbÓÔÕB×ØÙÚÛÜÝÞßàárãäåRçèéêëìíîïðñBóôõb÷øùúûüýþÿ©–…ø©…˜©@…–©€…’©À…”©…“…•…— Fn ,„0 ÿ Fn³’½‘’ȳ’½‘’ȳ’½‘’ȳ’½‘’ÈÀ<É¥’i¿…’°Æ“8¥”i¿…”°Æ•8¥–i¿…–°ƗƘУ©…˜©@…’©€…”©…–©…“…•…— Fn  ÀlLþ¥’¥“ ÿ Àl FnLþLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ)}ÉÐÖ±”Ð ±’ ¸‘”I‘’Lþ±”)ð4ˆ±’”Ðȱ’ ¸I‘’ˆI‘’ÈLþÈȱ’”Ј±’ ¼I‘’ÈI‘’ˆLþˆ±’)‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ±–Ð ©´‘–©°‘’Lþˆ±’ðȩ‘’LþÈ©Æ‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þȱ’Ð ©µ‘’ˆ©±‘’Lþˆ±–ð©Ò‘’Lþ©Ö‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ±”Ð ©¶‘”©²‘’Lþȱ’ðˆ©â‘’Lþˆ©æ‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þˆ±’Ð ©·‘’È©³‘’Lþȱ”ð©ò‘’Lþ©ö‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ¥’i@…’æ“¥”i@…”æ•¥–i@…–无ƘдL¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©š…ø¥ˆ0 ÿL)…ˆ¥Œ…Ž¥…©"…,€0 ¥ŒÉ?°挩¢…,€p +¥ŒðÆŒ© …© ,€Ð ¥É°橦…©,€Ð +¥ðÆ©¤…¦Œ¤ ÿ½É©"…¥Ž…Œ¥…L‡¥i¦Ž¤ ÿ¥­‚)Ðlüÿ ÿ¦Š¤‹ ÿ Bn ½™½™½™½™½™ ½™(½™0½™8½™@½ ™HŠËÀæÿˆº O¾½ò™½ò™½ò™ˆè ÿ¥Œ8é°©ÅŠ°ÆŠ¥Œ8é É5©5ÅŠ报8é°©Å‹°Æ‹¥8é É5©Å‹æ‹ Bn©(…ý© …ÿ¢ sæýæÿÊö ÿ âLÿÿ½JJJJJJ ½(JJ03½JJHJJ@JJ8ý½JJJJJJ ½(JJ03½JJHJJ@JJ8` Bn©(…ý© …ÿ¢½Yýƒ) „ÿZ½ýa) bÿ‚½^ý ‰)  Šÿ_½&ýf) gÿ'½ oý:) ;ÿp½(9ýq) rÿ:½0tý?) @ÿu½8>ýv) wÿ?½@yýD) Eÿz½HCý{) |ÿDæýæÿÊ0Lï`ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ0 €p`P@’¢²Â‘¡±ÁÑáÀÐAQàaqÒ#Câ3S °!1R"b2rB‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……†ƒ„„©……©}Í„÷©…F†°懩……JÐù©Ã–憩…¦ƒ¤„¥…L€ An…©……©… +©6…………¥‰) û¥ˆ©JJJJJ…‰©$‡ÐL¬¸…© …$©0… …#©…"©P…!…………………*……©*… ©Œ…  DnL‰·…©6…………©0…!…#©P… ……………"©À…$êêêêê………*……©*… ©Œ…  EnL‘×…©…©……………………©Ã–…©,‚Ð ©…‡,‚P懩,‚0©P +eˆ…ˆ©… …©ÿ……¦ƒ¤„¥…L€©…‘˜Jf‘Jf‘i0…ÿŠe‘ªL€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ oLx…ø oL¸ oL oL oL oLF¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/test/roms/bankswitching/4A50/rr4.bin b/test/roms/bankswitching/4A50/rr4.bin new file mode 100644 index 000000000..ebbb4bf9d --- /dev/null +++ b/test/roms/bankswitching/4A50/rr4.bin @@ -0,0 +1,5 @@ +êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿ ÿÿ ÿâÒÂòÿ ÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòÿÿÿÿÿÿ  ÿÿÿÿÿÿÿÿÿÿÂÒâòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL²·¹ê…*ê…L%°†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L±¹!°L€±L°¹ê…*ê…L%±†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L²¹!±L€²L±¹ê…*ê…L%²†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L³¹!²L€³L²¹ê…*ê…L%³†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L´¹!³L€´L³¹ê…*ê…L%´†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…Lµ¹!´L€µL´¹ê…*ê…L%µ†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L¶¹!µL€¶Lµ¹ê…*ê…L%¶†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L·¹!¶L€·L¶¹ê…*ê…L%·†ˆì©U…©ª……* ©U¹…©Œ…©*… ©€… …¹…¹…¹…ˆŽ…+©\……*©Ú ¹…¹…©€†"† †!†#…¹…¹…¹…L­·¹!·L”·……û L€°­°…­°…­!°…¢‚…L°L·†ˆø… oLï¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿL±×…*¹¹L(Іˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…Lѹ#й'ÐL‚ÑLÐ…*¹¹L(цˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÒ¹#ѹ'ÑL‚ÒLÑ…*¹¹L(Ò†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÓ¹#Ò¹'ÒL‚ÓLÒ…*¹¹L(Ó†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÔ¹#Ó¹'ÓL‚ÔLÓ…*¹¹L(Ô†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÕ¹#Ô¹'ÔL‚ÕLÔ…*¹¹L(Õ†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…LÖ¹#Õ¹'ÕL‚ÖLÕ…*¹¹L(Ö†ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…L×¹#Ö¹'ÖL‚×LÖ…*¹¹L(׆ˆê ©U…*…©ª…©ª…©U…©Œ…©*… ©€ …¹…¹…¹…ˆŽê†"† †!†#…*©\…©Ú ¹…¹…©…+…¹…¹…¹…L¬×¹#×¹'×Lš×…û L‚ЭÐ…­Т‚…L ÐL׆ˆø… oLï¸ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ99}}mm}}99ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££ÇïÿÇ«£ )AM££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÿßWGSƒ›+#GGßÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿ÷ãÕÑ„” ¦ŠˆÑÑã÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ99}}mm}}99ƒÇÿƒ99}}mm}}99ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇÿssûûÛÛûûssÿÿÿÿþþþþþþþþþþÿÿÿÿãÁœœ¾¾¶¶¾¾œœÁãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ''¯û‹‹ßßÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿÉÉëãã¾¢¢€Á÷ãã÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ“ÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÝݾ¾°°¾¾ÝÝãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}}»»Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿwwûûûûwwÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ9}mmUUmm}9ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££Çïÿ)AM££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ ÿ?_OOo¯?ÿÿÿþýýøùúúøøýýþÿÿÿýøõôáåèéââôôøýÿÿÿÿ???¿¿?ÿÿÿÿǃ9}mmUUmm}9ƒÇÿmUUmm}9ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ9}mÿ?Ïïoo¯¯ooïÏ?ÿÿþüùûûûúúûûûùüþÿÿøðçïííêêííïçðøÿÿÿ?¿¿¿¿¿¿¿¿?ÿÿÿŸŸ¿??ï//??ÿÿüüþþþûúúøüÿþþÿÿÿòòúøøïèèàðýøøýÿÿÿÿÿ¿¿¿?ÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿ}EEƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇÿÿÇ»»}}mmmu³³ÇÿÿÿÿÇ»»yqem}}»»ÇÿÿÿÿÇ››]mmm}}»»ÇÿÿÿÿÇ»»}}mM=»»ÇÿÿÿÿÇ»»}}mmm]››ÇÿÿÿÿÇ»»}}meqy»»Çÿÿÿÿdz³ummm}}»»ÇÿÿÿÿÇ»»=Mm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿø÷÷ïïììïï÷÷øÿÿÿÿÿ¿¿??¿¿ÿÿÿmmm}}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mÿÿ?ßßïïooïïßß?ÿÿÿÿþýýûûøøûûýýþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃ)mUU99UUm)ƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££Çïÿ££ÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ )AMÿÿÿ???¿¿?ÿÿÿÿýøõôáåèéââôôøýÿÿÿþýýøùúúøøýýþÿÿÿ?_OOo¯?ÿÿǃ)mUU99UUm)ƒÇÿUm)ƒÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃ)mUU99Uÿÿ?¿¿¿??¿¿¿?ÿÿÿøðåíêêççêêíåðøÿÿþüùûúúùùúúûùüþÿÿ?Oo¯¯Ïϯ¯oO?ÿÿÿÿÿ¿¿¿?ÿÿÿÿÿÿòòúøøïèèàðýøøýÿÿüüþþþûúúøüÿþþÿÿÿŸŸ¿??ï//??ÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿÿÿÿÿƒïÇÇïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEÿÿÇ»»}}mmuu»»ÇÿÿÿÿÇ»»uumm}}»»ÇÿÿÿÿÇ»»]]mm}}»»ÇÿÿÿÿÇ»»}}mm]]»»ÇÿÿÿÿÇ»»}}mm]]»»ÇÿÿÿÿÇ»»}}mmuu»»ÇÿÿÿÿÇ»»uumm}}»»ÇÿÿÿÿÇ»»]]mm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««Çÿÿÿÿÿÿÿÿÿÿþýýûûûûûûýýþÿÿÿÿ?ßßïïïïßß?ÿÿ}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}ÿÿÿ¿¿¿¿¿¿ÿÿÿÿÿø÷÷ïïááïï÷÷øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ*EQ*ŠQTŠ¢T¢¨E¨*EQ*ŠQTŠ¢T¢¨E¨ÿ““×ÇÇ}EEƒïÇÇïÿÿǃU99}}99UƒÇÿÿïÇ«£ )AM££ÇïÿÿDDDÿÿHHHÿ"""ÿïÇ«£ )AM££ÇïÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïÇ«£ )AM££Çÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷ãÕÑ„” ¦ŠˆÑÑã÷ÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿßWGSƒ›+#GGßÿÿǃU99}}99UƒÇÿÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿǃU99}}99UƒÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÁˆªœœ¾¾œœªˆÁãÿÿÿÿþþþþþþþþþþÿÿÿÿ#«ssûûss«#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÉÉëãã¾¢¢€Á÷ãã÷ÿÿÿÿÿÿÿþþþþÿÿÿÿÿÿÿ''¯û‹‹ßßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇïÿÿÿïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ““×ÇÇ}EEƒïÇÇÿÿÇ»»}}meqy»»Çÿÿÿÿdz³ummm}}»»ÇÿÿÿÿÇ»»=Mm}}»»ÇÿÿÿÿÇ»»}}mmm]››ÇÿÿÿÿÇ»»}}mM=»»ÇÿÿÿÿÇ»»}}mmmu³³ÇÿÿÿÿÇ»»yqem}}»»ÇÿÿÿÿÇ››]mmm}}»»ÇÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÇ»»}}aa}}»»ÇÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÇ»»}} }}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ»»}}mmmm««ÇÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿÿÿÿÿwwûûÃÃûûwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇ««mmmm}}»»ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÝݾ¾††¾¾ÝÝãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxØ¢Š¨ÊšHÐû¢óš©…€©ø…©`…‚ An¢ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ l½ÊÐ÷ En¢ 8l½ÊÐ÷ 9l½ÊÐ÷ :l½ÊÐ÷ ;l½ÊÐ÷ l½ÊÐ÷ ?l½ÊÐ÷ Dn¢ 0l½ÊÐ÷ 1l½ÊÐ÷ 2l½ÊÐ÷ 3l½ÊÐ÷ 4l½ÊÐ÷ 5l½ÊÐ÷ 6l½ÊÐ÷ 7l½ÊÐ÷ Fn¢ l½ÊÐ÷ !l½ÊÐ÷ "l½ÊÐ÷ #l½ÊÐ÷ $l½ÊÐ÷ %l½ÊÐ÷ &l½ÊÐ÷ 'l½ÊÐ÷©…Œ……Ž…©……©…©€…ˆLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©•…øLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ +  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ""""‘“‘“BRbr‘“¼½¾¿ÀÁRÃÄÅrÇÈÉÊËÌÍÎÏÐÑbÓÔÕB×ØÙÚÛÜÝÞßàárãäåRçèéêëìíîïðñBóôõb÷øùúûüýþÿ©–…ø©…˜©@…–©€…’©À…”©…“…•…— Fn ,„0 ÿ Fn³’½‘’ȳ’½‘’ȳ’½‘’ȳ’½‘’ÈÀ<É¥’i¿…’°Æ“8¥”i¿…”°Æ•8¥–i¿…–°ƗƘУ©…˜©€…’©À…”©@…–©…“…•…— Fn  ÀlLþ¥’¥“ ÿ Àl FnLþLÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ)}ÉÐÖ±”Ð ±’ ¸‘”I‘’Lþ³”½)ð4ˆ±’”Ðȱ’ ¸I‘’ˆI‘’ÈLþÈȱ’”Ј±’ ¼I‘’ÈI‘’ˆLþˆ±’)‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ±–Ð ©´‘–©°‘’Lþˆ±’ðȩ‘’LþÈ©Æ‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þȱ’Ð ©µ‘’ˆ©±‘’Lþˆ±–ð©Ò‘’Lþ©Ö‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ±”Ð ©¶‘”©²‘’Lþȱ’ðˆ©â‘’Lþˆ©æ‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þˆ±’Ð ©·‘’È©³‘’Lþȱ”ð©ò‘’Lþ©ö‘’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’ȳ’ȳ’ȳ’Lþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥’¥“,„0LŸȳ’L$þL$þL$þ8¥’i¿…’°Æ“8¥”i¿…”°Æ•8¥–i¿…–°Æ— Æ˜ÐµL¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©š…ø¥ˆ0 ÿL)…ˆ¥Œ…Ž¥…©"…,€0.¥ŒÉ?°(挩¢…¦Œ¤ &ÿ½)ÉÐh½Ðc©­©¬L¸,€p-¥Œð)ÆŒ© …¦Œ¤ &ÿ½)ÉÐ7ʽÐ1©©©¨L¸© ,€Ð ¥É°橦…©,€Ð +¥ðÆ©¤…¦Œ¤ &ÿ¼¹)Щ"…¥Ž…Œ¥…LÏ¥i¦Ž¤ &ÿ¥­‚)ÐlüÿL ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©›…ø ÿ¦Š¤‹ &ÿ Bn ½™½™½™½™½™ ½™(½™0½™8½™@½ ™HŠËÀæÿˆº O¾½Y™½Y™½Y™ˆè ÿ¥Œ8é°©ÅŠ°ÆŠ¥Œ8é É5©5ÅŠ报8é°©Å‹°Æ‹¥8é É5©Å‹æ‹ Bn©(…ý© …ÿ¢ ÚæýæÿÊö ÿ ILÿÿ½JJJJJJ ½(JJ03½JJHJJ@JJ8ý½JJJJJJ ½(JJ03½JJHJJ@JJ8` Bn©(…ý© …ÿ¢½Yýƒ) „ÿZ½ýa) bÿ‚½^ý ‰)  Šÿ_½&ýf) gÿ'½ oý:) ;ÿp½(9ýq) rÿ:½0tý?) @ÿu½8>ýv) wÿ?½@yýD) Eÿz½HCý{) |ÿDæýæÿÊ0LV`ÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀÀ0 €p`P@’¢²Â‘¡±ÁÑáÀÐAQàaqÒ#Câ3S °!1R"b2rB‚ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ……†ƒ„„©……©}Í„÷©…F†°懩……JÐù©Ã–憩…¦ƒ¤„¥…L€ An…©……©… +©6…………¥‰) û¥ˆ©JJJJJ…‰©$‡ÐL¬¸…© …$©0… …#©…"©P…!…………………*……©*… ©Œ…  DnL‰·…©6…………©0…!…#©P… ……………"©À…$êêêêê………*……©*… ©Œ…  EnL‘×…©…©……………………©Ã–…©,‚Ð ©…‡,‚P懩,‚0©P +eˆ…ˆ©… …©ÿ……¦ƒ¤„¥…L€©…‘˜Jf‘Jf‘i0…ÿŠe‘ªL€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ oLx…ø oL¸ oL oL oL oL oLF¹ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/test/roms/bankswitching/4A50/spin4a50.bin b/test/roms/bankswitching/4A50/spin4a50.bin new file mode 100644 index 0000000000000000000000000000000000000000..2abd7550f3f53c24e7fb726a1205b006bf32aac9 GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/4A50/test_includes_file.bas.bin b/test/roms/bankswitching/4A50/test_includes_file.bas.bin new file mode 100644 index 0000000000000000000000000000000000000000..5c530eec67a422210bfead8875de33fb7c4b615f GIT binary patch literal 131072 zcmeIyQD{?F7{KwHEVebPP3nXdS~YvvhPA^yY(-fn;)Bc(q*WR0VGsrz$i^mPlrcu> zFyCDpr?%>CZB5hkHmB{a7Fui`6m(+@tMw%+*@V6HVV2sxM7OcF5xa8>+t?Uvk0SpM za?f{8E?>U$yXVH<7JH?5^x05VG8n2ZRfnqe*md-`EBg!`9Y2RoBsXNb#(oKPjU5bC zH=nw4!d<_-rf6knf{V_ll5~o4)G3$aPP4Q*VG+kCYn>UXaH?d;estM*U%qqR5X*U4 zPCM)6l(R?5LibCt!^Oz%&vopMtPltwfB*srAb<%P^P4ZJ9So69dciZ zZHU*bHS5eOGhjCO46ENhIA^LZ$*6W2R0T;n{+hc5Da1Zrbd1rMy?Sk3Tu>*cni5r0 z&56L&0X^t(Y#F>QAKkToa2lsfgrbh}>LlxvczT(bmn2lTjK0_ym*bWUbv zGAXsHbGqwpQ8r#p<ikV35jcO_&2H(;E&FG?-~ZL_OtJCbZg+Pve%#P)SO2~3SlN>MD{n5X z0AWyU^z@EKFw1x=W^RFHzebyfa+v%cc@NtNd=u zx~%wQO*WnA&1Mp3oo~b|p7=GSE+^-U;xwK0A{gT#;*K~ZF4*wcg{l#_Bi47N5EA(cK zxXw0~m)uMj-n+6RYq)vau28VT=k<8JzKURISKB}5`Dg5KZYbJlw+uFBT85H0eEDKL z+Uc%lqK$(scH>Y>=8x6A(N6Ex!qr028+^^(wi=NEH7seRq+ewvWgEFsE1PpHl^e5$ zbLXrPeV%6<^7qt$+|~!+mOcnKRZ8;l=!AE!Fjr88>uWn-)o2BETbH_}OWo9^^14(* zZpa$R*}BZ2E|;;gZWBN0LL<7+ur8!@p=?~)x~IKUV#oD?3YQ$Oeq8#s)^ERiHN@j6 zea7^W^7)Kh+xB~biHBCo3W|3oShRgpsf$NSR%qrwMqR0X#0njGm^f>m89D7HeP++d zDL3ggyH|fXW-PWHjyLTJhk{0NHvjcRrgKZc@An@vMw9Oq$8H$$$Mlc#32iI#?rKC@ zYjkX{sc4PIBV}cKB9T31Wp#S2tZa?N8tN+Dc_bchb?^Ty{&plB4%bwc?cV9m^~b$` br<*>ZOi$3Z#y5W$+qdj7nxYR@9<2Nh#kVm^ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/4KSC/4KSC_test.bin b/test/roms/bankswitching/4KSC/4KSC_test.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e294944115601597e889b53ae93b6eabfc9a4dc GIT binary patch literal 4096 zcmeHKUrbw77{9&ifK{Mp>O&)C)Vv1AK3F-GZNz&f=XiNs(OLi^NG%cAR6zfJ8_5$b7_s65q>V*ucec;f2o6bDwjHm$Gp_VkPA_?r?wVere8%R z|Gg<`;Y+a6FQVP(JEnIKsMI?NnDs7(T!?6I6#Uv0EO?=c`lEe22T;8%$0junD#7f% zm9syeWCIr{)Bb4B&bTm}E_lN6q)@+~)Hvbo{p4H@%g;T;@^g8H9wB1sk85Q$_2%Q! zS%;Bc4%<2U?{H>3k~Te8tfD1lPoRgQ^I#{wZO4?{2lW1zq|OoU23H9+8~ zb_k4c7>;Wxcx7P_>(vS`WEe1V$>c&1tP3(!T^Sy|GRhpug^*;uAz@dZs&29wJ{X;n zJwpXGS*JB{oUu&>JtI>g&zSZN@L&+tdZmS|l0QXBnRPmyAP<{NmXG8as))9W8GS4B zR*ZbOm0^akm|^#U%%1l|Y0PlbwwU=XXy0cckGvbCL6ZrB=)8&J+n_xwQYBU4oPY6p zfnlVDh={7UG7KT{={!<1>~6G?G9zy=@WwJ?YjpqDj=iqh_1na$Z;)E$J)*CZcI7P5 z*U%CO2HKT##Cyva`$=^AS?U_5u452$HZX`YZliUM&1lCN|D=B4^z+N{<#>uGXW1Ew z{6Jtl@;!lImZ_Yp5Kk{#%X-zi2n>8zj!3is2?%vhm1PMsOzvTB*GpU>3X5S8Y{*c{1u5? z8Sw>1e4Y`bQdGsBPhSO9#Jy#Ipz-($@dN|!EC7Q>akt^NG8(x>cSFKFp9{zV0{kjT zsm81F^@-mDw$=Z6B2(>jz&4Tfj7h`O0}PBxL(`WT7?B1Gg@rfL?$5-QM!Su0sqNU; z^CABUv&m#?tDo_nNww9_in!_k?z{oKE^B6()C>&?17?^kZALg^BiUEW?T3VoEXETw z5KbsuDxA>WsqX?Qqt*nIe`l0xylpv;hbOVpwVUwY6*jZa_Gh5D`l13w1&Rt36(}lD zRG_H9lN4}#To?|Q1xJIW%q5DBl9FbJqq(HSiqG7<^Klr}q2Y`A>5BnM;?tN8EY*H+|ZPP0g+EaA_|67ovU>TmS$7 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BF/BF_256k_test.bin b/test/roms/bankswitching/BF/BF_256k_test.bin new file mode 100644 index 0000000000000000000000000000000000000000..314f8c268b16d02dc650502c6854ac7a09a99701 GIT binary patch literal 262144 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BFSC/penult-demo-9-NTSC.bin b/test/roms/bankswitching/BFSC/penult-demo-9-NTSC.bin new file mode 100644 index 0000000000000000000000000000000000000000..164bb0838c335b6bdde4bd63966c0d6ff2a9dd89 GIT binary patch literal 131072 zcmeEv3t&{m)&Jf1Bagj=CE1V=76Q6Kv=LepFlwThB5W(Q=KK88N45ym_)*HI{nyk# z)yC|ua;CoJN~8% zmr0y(N_^9lE4+!=4q>}=NO)Qr5E^mciTg9SKa2Y=+;`*t9PZEK{sQhzxbH!!gTf9e zRoE-+6Pktn!iz$S6eqkSb$Xxj>76eG#hMIvU;>hR<)phk7|@FWlU4|TuN{2Vf?DA4 zr(Qr2X=c@9YB7+Z_D=)t3hDR4I;m5r65q_o4VXYi?VAj$QjhohzE~n3$lwDSXICc> z?133lwvV%y3`w~@72ReFT0tj`^Qn;lrqO>DqYy_0JsGONILR*KXEJ7 z_64+pskM*f0rxKNx8zEA4!`72v)?@=xHB|DsrXWc=5T4iAi9N@oU6J-_bnRXCCFp+ zr;EOfT>m8TkUv>GBe=!ghtC8o!WnVT;kN^Zep|6h*mF#Lw_WeQoJltYh?9Wi4kU?9 zhu;c}6SuZs7Kj0(Og)rk6yAi?8dTTRBksYN@zk6K422}26Wj-?mZ^yg+56uxS9HI zgZjILD(E{~);Ey-6G@^8sGHhvVKsyhBpoO+xhH_wI9Ub|ZekT}IwtP*=PSUQrJq8u zp|D_4B4tCSW3a7gA>O}0h<-&-vIYaS<(rVi21!s4H1JIfDD`>w_;kp1KGxT+g3@m3 zAw1TMGgt;`jwQe2Gs&hz$xd&MZyb`$QWBN&YLtJh4+Wq)sxk2TynW0Vrp0DX1IP}H zO?^ z8EYS!)tB)x3j0hd!G{jBTCNGSu7%b?%$?!(Cwpf|D*L*jz}+2Nfv@&!oLhT4MCbWl zWalE=A!#UkVQVD2Rmryd6TM%O)RaB5qn1hsmUh(1MX7&T`@EARjW#J&A~8<-6`Hv-)XbnF?YRITb_?&etNnAtpF_2?rAHOBXo49`;MEcbQ}AnG ztYL%Hf>B=-BT1!5Fm!Qm@S^I=Plv%*1je-w z1mZwxa=_3�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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/128bus_20170120.bin b/test/roms/bankswitching/BUS/128bus_20170120.bin new file mode 100644 index 0000000000000000000000000000000000000000..dee840a35d4483235754c82ca97c11430743ad34 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/parrot_20161231_NTSC.bin b/test/roms/bankswitching/BUS/parrot_20161231_NTSC.bin new file mode 100644 index 0000000000000000000000000000000000000000..10f54bd1aecc179f654fd3c1d32e892c5989c0e6 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/rpg_20161231_NTSC.bin b/test/roms/bankswitching/BUS/rpg_20161231_NTSC.bin new file mode 100644 index 0000000000000000000000000000000000000000..187f4edef512b4704e259edccba6d41f2122a99d GIT binary patch literal 32768 zcmeHQeRLbum47oDNh4VvjU5NZvK&j66FYI7$XKMI&4*&Uifq}b`)9 zW63Acf%KF7fi%m9(^H~&@`o^<$H!6;7(ecerLK0zQj{&03fscz9Zq0(INinXN>e#` zsdJ)e(SUCle3dz5?@Pz*;WPtw2JAFQ1QJ0U*!CplgLrwdl-qV7jhwsFw6lGTv9*pc zs5N<36gO75+tZL;stj@}!#=1Zjpr$tpM?2>aj^A?E5isSP+v)6PzQ<*xzFj58&Sv| zVh*HdTctgNpa%=UANHqgi6jqaxBK>9V1>p{jrwu~M~x4^uK z-wA7DDHbFTjL*V=q+~e^z9!hCVm<8Phn#PRobLnvA&kQhrfr80q-{s>{)rSdFP1Fe zJJR>8jHNXGjxokrH$t1%rSO?h!GW|3<}fZ5wr)6cYiboj7Ruk3ekQL!Ng4A}IWX2# zYe#T?tZjdqHm^(Ogu8gtuJ7=q}EDeQD7&I~75#n)l(EQqJ}f*8Q8Ywti-0F4~-WR}>d) z|8y+bZiyvv{0`%E{C4BIWE$3l6FWw7tM`v>DUBs(yZh3)_MKzqe$7bks=Z@npMHC6 zrnUH7xQ0ZhV`Mg*m2&o_dE4D1w0-Xw?TI9ESM3-(1~rM#VUW&bQS>vgj;w*)UjQF* z(=SpOui4K2v?c*LfP7|Ef0BW9P*+B7eKh$~@H5+}5jwtitO|0P4g2A<^UjVDP4(U} z&2R5c(D5B(hrmxG`+Z!@s*}GOqkaqd!kUM(*5nSvk{`Fu{95h^_txD>yzYKj_u1hc zBUZHU1b()URlPRWv-~$>k2epDX>1({23UDU_!)PCeGJ1Qo^^)y(5+ zk$V*H1M;1|L+|{vxuVIoI-8N(oW$=9d_JT!Pse_&>5EaC{@4r5xIIa^ccu!&#mQ_R z6psA_?TTqoEcPNivy<6#tS$CqgDplGZLt^N9z5xGL!GROBv8wJ=@pxQk=nj4nnW#; z^umlil2-Ppy?Px|cpM6m%;RJYV*_@2>aEt8>4&!is%Q4L(?V?02S+l|;N3 zBEC3g3RwNkfzAGV0tfuZ1B3qDn~Jad+)dYBx8tV0*S&hv&~@gUORjIadDHcG-@Nbo z|Gatldebe|EzP%V-g3_^2eur)#a%tP#a%OCS-J47L1Q8}Q0)I);9CEVz+V5WfgwL% z!&eVj%nScCNGJGL_!kE(nuTWvkBs$s_+E{bN)$pKR?B_0XW!e)QcQcg6_kJ zOumgR1-|iKOQ6746lg{L8<8Wwsc@5}kgCZG9G+%4+n;Utb z#m~z-*MyuiB4HOs2qgDa>xL|1PP zYPDJ*nG8+1(uA9Ykx0AWs*={4ABcq|)jol_ZcL$lf!_>{;IWii$gXJ8k4YE z{RvoUpUCU6256Vn&({1qRKJ7}IgN~vd>R=c`7|;@@@Zs*4#h5g#elfZuM!S=_H`&|4Rw4{P5dN2b4`5bk~P8h>U~8ai=KX6oajAICB%vMro@S_ zooD5{lZN^U_S)At1E#r^*1EcqCVQZy@r%Mkf}zwBe4(`1i|nmPoG_oa`YZv#v9T`U zc$+HfdQB+w*#bo&%3dVoxHq6yp*ql9m*23tu)r4(#Cd-ZkmIHG8_?Q~2IITy=^9hz zMBEH{RvWBmgVbm8^ZpXgZ`9cLtj~wD0|yl; zeY!mhIlTgmF?I zXLqxFonQ&BzVXHzbv%5&@V$&x>vdZwyEyT#NLg)GaUw19uB{tfPHRrT?|U?m{+1Ep=C*-#L@wgm?1m=swhl7E^V|13^}SCQ&6N(aT_+ zrr%vKVzOo~Bf2-UUWs$Dtjxq$_F)|G3m8YG|3rd!Ope(cXU1B6#evWJkZn##vq*@4 zDfFY-+423M=W6rg?}Q$$HOE`vTg_L|e{F1T4kI+rbM-@;nwxWiyuBhIPUMJJCnzUV zQ&2G+e?GAqJokE5Ku_IU3lYEU`CL`O(3}u@fLg@IH;1VGy|pG1+dyLL;#c{o{Y8O0 zAo^9!4mnaP{$RpIA}u757R!-JNhEsF966GOM7o?rDu|b7B9%9z{fqpinQZNlZ41fv z=v0OOR(Y4#<6lV>z{#~$x;R^E@#mI_6V}Pa*7XT3jC3%XJ;|0gCvtp+0cyTBj$|L> zB$J>(7bmonx-u4!)RwPJFhPVUsC)dK%><0!cl_Qf-`(){IQ*{Q_XEExW$@4c0j#f{)t74%I47N7nNE4a8q^x`|(X_=_&%P$cMAB_;7|6h@8#h#J%U)gy1b~ zunC4jX6eFerc|7WpJ80f7Jd*HCvH4zlJhi>Jo(0l1WU*aQKef*`u=A@^CmS|a{2i_`}tr0-0|H-skv{w=cst}FP#gR z&vR8K*OA3Pdu#U<>1Xb{QiCW8nARW~Bn{F4(g4y3(nxEJFmD9isADxoI+rp~6m2k4 zry+MgFg^qMeh+&i9)1vnp9wG7mQJ~*mQ3^3C0kufm+&scu#9j4En@_i;6ef`ScN4* zsql5-Tf)DATmoZO7(OkYo;-aD`e%X9pKc?)c>3|9R}TOmeth8SqriuiF*?d0UHa0} zqg#(|eQE0G6zIGQ6XIA-;FfXAmMmMc%>{IYc!lT$VrC|Utc})2wy~{iGp0uCv4Ud- z^b#6*Z}m>ewAG7gDG=|K>>b_??@Qh$@1_~;_1=0|T>%9C%pTbJSs;;FMrb*+5(s^S zu%8Ili~Wx<=Ya4UOrIg7j8-z+Tq33lpls>FYcLHGQby-U^qG)AoW5Qnn$vPQ+~wS2 z?pp47z_N_n$UVz#oIIj3@7G>P^Ph5EC2K2TJmtE}Rpb&! zhew|}Jv=%&`sdS=qvEJ|`uWjoN1s29xD{L*x8(wA0~_K@oE6BFMfh1N{u)jPGXm%2 z{II_5BD;>$Ktw5y5*vGIGK9z~Kdjy++ZF$nFvfOi2CtUlDC?Ddov^nvvoH2rA)i9> zSI*T2S!eHSmHlu$CATdQ2j_vuH*#BnrG2+$;!7FfUdc!CpN`Q6F{aP872-&%@J=(? z@$7M2iJiwIHAL=-+(;xDMZnsL>kh0$)*yB0{FgB|2~;P^=!RRzl;SkZZmFU zx9LP3zF%tVd3bX_YDZw5$sd9LO!mG~Tk$|~*PLY~KeSzAA1^VL-tMR<8-!n5LZgA< zgHFeQrq#o*@ZnYk19X{|1I-9cpWSrRO+T&bF4hZXUq)uJ{c@o&qib2Mq-&wExYKI& zxMQV8bUcQ3Nu5NHx(oKr&NEBTa{q@^DJ!X$(S}r;|Vh6O1HX3qnh#GAVsb&WzNEtE@|+f;5I9;woqv1rM&O$j)EM=pU7t zghBae&T`QZCrM|rbuwT{3Ka|<$T}GiU0;!=D zWUbHO{4uW`fm!Ni+6!-gL7o>3rjx^^YcF*W1J=vt&dcbE*K~Q~n2Hta(@Fg8dUl*k z=(Doh^qVki*8esg=b0xZYsqez+Z$Od7wIs@CSw1abQ~YAlcW;$Bk|>lOWW~!fke5m zQzFW_O~(N@vhP1R=MpL1a!9Pa9QR1>KB6mgWFq4SBY7P*DRbDDG{t~tWF2eMD)uTb zpL>zzg0;kjSfm)R9|?zp$a@o2nkC!FW3rO$HQkX#N-oj>yUozZ8nA;bmluGd+EfHo1XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi6 z1XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi6 z1XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi61XKi6 z1pZ$m;J@rm>$p|=J5+y9zcfm}YkvA%gC75}%zZX=KkpB{c@TZ~v11Q<`zH^godvwo z@%%w?r-g6YHBRIq#7CpJ>-{|JT+;7vMiA9bqFSaOg-;L>I9}^gS2? zWuVBOj*};Q!ckk)9xaP5kXQ5|X*ya73-pSsB75M$9P8f;|36t#)JlNH57gd+A1t-= z0UGL{FjF4zXlZz~KMIq+1NVPO6|sZ8wN*kx*KHC?>pMmz+$9p#8vdBF$*2@=P-_AJcHIkd!?H2&Mf8BB3g-d0qyh$IW>*{9;4Db@^nrec?og`G)8d{OUT^29yTja%dDg#A{_J9V{G;`m9>9C`xRwGN8I(PXRVg0 z=d6f)-qOB^1KGRICyK5?2V9&@xNiGL^m`)*Jn`3`JQT7Il!92_NS}HrXfIS+?Sc|R z1r=>+^)fVU{uyT~lIe2Lxl$P`2FiESlim&A-+p|jbkpt9)$5Ok|FwQPJmMUfj1!dWjWg{_NG5Rv4 zNbf}DGICPK5n7F@z25&j>}odf{Q`9SC*JZjuhwKynI-su_Iz*A4Zse072a?#>;4jY zQCpOah3QH+d}_shI(92LUN(ECE9TpiC1YWtG7CL(P4Dy8>|Xv|MZ67vVe_*Fo5+%M zKhG|@7%6Y~!=$V2egwO{?@yGY;Z`q96y8EFU)N`RwtKOX|N526Yu{X|nD%%n0I8pq zKI;tZ$bPw&uV;6jb4`1(vURKMiP}cFQSW=u`_z}>?OZe?u|MN2C#6^CF&#raKpqNv zyxeA|(Mm6l)_S<9$eCFIroFq2pKAb!>ys3+y=VMjh!splgP{7egm&ccBmQ1WMm2k2&2pK17Ys zz7c$D^!KL;z4wdC6lOVSA&%&fD|(LKrTy94F;Tlijdv#+-so+tu|IkJv$*Tppt;T@ z5d-}CE^4Iq4R>-`bJP7G`aYGs3HU^mR%5AuTqiJWJR97@<=Xw(j(dchPKSqU_Z0Qc z)uQ=#?l|Xugxn6GHdDbsja#jCsCUvwse7-3oC0b${*`7TL_Q|Jddc7QVFytg>L3Nl z(e?0y0Q#tpdCG1|R-rXYtBB^;FR5=l`IdKlBpM&0-6d`8vx*!|cD)uoE> zr1&}@h73Y}gV>!Wa{lt`*=zr85%faYLd@&?jYG7(Wl20>jEe2SgGz-`Ctv`@}r$>q0g>96~O%AuAvcBB5h?`~@FlAVr0?P?H!vvQOus ziE+p%w8i%5nL?k9@9DA5HfL3Db#4@M)*N*jrQbhs@u2wf4|m_XYRzk}h=Oy4gxUXF zF}2md`6oZPI*S|+&TY2WJ>uVd*B3S={F`s06$ygYr8TWWUkp!hEA0t`_MUG&yw~T42`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m_P%8XDmE)%sJ{D!{;&M7_H9yujXlY@1p|`HaN&#Ccp%k z025#WOn?b60Vco%m;e)C0!-kJ34Fny>$y$+=sTzB`LmZ#^%qz2)ycS(pVA*RX<2!H zvfauzWkdP?Y;*olc3sx!!tY<*{$#CeEN^6uEJ2L@x|6?e^2f%dRKtp*zT#}gD6V8h z*2pX9oQ`LW%hn1u++<1r^jOx&Y<@MB-Ez735q`;Pb9M{7*ksjgYFmhWC#-7Y!5>uh r|22H&juG+#On?b60Vco%m;e)C0!)AjFaajO1pY4x)c=Tgs!sKvNtQ_w literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/test1_music.bin b/test/roms/bankswitching/BUS/test1_music.bin new file mode 100644 index 0000000000000000000000000000000000000000..1b0ff8ff4a647ba16bbf0ca7ec258d09d95849a3 GIT binary patch literal 32768 zcmeI5e{2-T6~||G*Y@6F`xdZUW2|@&19AbwnI8$EN>~E{W8BnW(vp@`r?!7kHL6e> zRZ$d`v+<=QvPqyMl_DqJrl{g5NJIftr6xLB5+!L=oq+6g`3^v57Z!r7ud;qYvcpwNB<@C*A&o}b{8iY%d&K1_H;Rna%NnvU#J!@&mVIS%>sPBQ+ppO-z_Rix&&QWL+dIWm#?IC9n{gv8Qj5Tc)T7!sO6lh-3 zZ^3sR)_7no)`*+-#s`L+jXNMaQBOSW+`oUwx&Me*KWp>prd6Z$I*%_lZ8_eXS7J+Z zQf0R-a_X!Za^|B?aB0@JA?G!A8)Nl6o^}q7&saP>-X4d#+*+0s@u~W=juh#(#wE6B zl}|jXRhf@zA{M?nIpJV5V@Yhag}n*;W8Z<@R<+vZ=YM)zNMD^*F~8LF^lhp>lCRa% z4)01kk;+=TkFAmaf<5K2o}6kN%WujkxoPY^`<&~}*u2QJdg@I}%-8x2J=%FoyuQttjJ58Ave~Pt3|FnmUc9KASXo! z^V0IZY*kx-{&k#5kw>VQQ@wBh9pk()i2X2p-1RTpf>&)UN<@pK3i!nbB zjHx?HXte=bq_VTf$k^{PWt?<6OlV=`KWN+@*;ljVB`F z87=4D#Ty}FV~8yn@6V!Q?d^`t<(#S^k4TrrTQ^S-@!Zwe@7Ym>BDEHYKi{WndWG8{ETD@BYldJ;Isp z39s?)Dc(Cvh~VEef1mX?oNWbfGfPW&;5!@7AG@8GCmV87e?vaD-|bLV|8+nc+S7VGMBW?gIV zbNn@y+|$i`Dd0P)rUHl|osd_NyHUoBzrM8h%*__g9?xmWd0e}+fz7Bq&gV*TK0_T* z+e0fu9go&4w@b&DuIui)IKmE;w?DGHyq&G!!)(P=oQC~)fLI+)1!MsZ^a4@;m_=Td zVClM*ymH=abv(Xt#k=@k)(%Jw;~M17tIPEj+OSxSF$;{?0oKH`d|qX&v-#4Wl#WCl zgeBIUG^Am5MSA%QuDf^xV$k3xW#3qTWG$cflO-2V`E#fT($U0}HSBZkuW|RnJ1*0C z)V=VM%RT*~D|z}L+8Nr1(Ju6_&@S|TH`H;Y=@g$BS36$ybVbJ-o-SX-rqsvPVx+iF zDtJ^v6o>}dcwkQFoQ|dq6EM5Q`~K?9x1N(P-(p%me%{e%bJ?v zcVw5|GP!(m^;c)AC*2D_a(M&O-3#CIVwba5o8{8zue;wZ`Grn4H@FwR15Xamd%f)7 z*&>e=^I7ix;F@O)o@?PL!E>3HKRjp4BgKqc-Hl#OB8Om3>Vfd8`VD+heLS>k@`G%q zl;JbWMx?BJ;cl1X^T&uz9WL&PcRoVQnBMZuhCkmq;g*y9bmQl*q@!1U|C^@AX4}*L z_)b&vFW!4(hVqr_mdg3VbAJ8i_PNf%9SiU-VIv`>_esaOh(pBrSo-B>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+Sp zM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOfFq0{9$K)R>6+9G{RJB^JQp+kO zxuSxrN`zOHsb%BJ)rt_}|Nk!Yk^Vx+7fW(=j4k?vh<4%o@BD9vj}YNMuOzoZ-%%3L z9<)EM|Bd1?Ft?arXd%K5<~25c-$!WQ4#pjd!Q$0sTeo_vlyw(Iq$+cTF^=Lc%E6f1scTFM=$7axs zG*QYKcnY(7J*g$hkh#B9`9fs(p_S*8lMmf{KH0D(bI$i+$xw1~vf+cNyx@3of+kG% zK~Lwyg@sA!Tx8$nl@(!>XLRC{Z7(EfCvx)B0vO) a01+SpM1Tko0U|&IZaxA3S5u>46#fAO&SwMw literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/test2_speech.bin b/test/roms/bankswitching/BUS/test2_speech.bin new file mode 100644 index 0000000000000000000000000000000000000000..42d1266b8066e1cb6409859c68a5ca6352fb0aca GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/BUS/test4_xevious.bin b/test/roms/bankswitching/BUS/test4_xevious.bin new file mode 100644 index 0000000000000000000000000000000000000000..464e38747a468f300e5615746fcb3ce619650653 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CDF/cdf1_music.bin b/test/roms/bankswitching/CDF/cdf1_music.bin new file mode 100644 index 0000000000000000000000000000000000000000..7ebbd03a42eb0df82736a4c0608e2cf3d12afce9 GIT binary patch literal 32768 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 EAGiCNT>t<8 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CDF/cdf3_fastjump.bin b/test/roms/bankswitching/CDF/cdf3_fastjump.bin new file mode 100644 index 0000000000000000000000000000000000000000..9c37d586217458d4c13d403c1279871fb23fb9ba GIT binary patch literal 32768 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 S5nu%VPY4wLlYh)QX8jYWW^wEQ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CDF/draconian_20170314.bin b/test/roms/bankswitching/CDF/draconian_20170314.bin new file mode 100644 index 0000000000000000000000000000000000000000..ffda5825a508ef70a73f9e1b9ae5014c166184bf GIT binary patch literal 32768 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 B*Zcqg literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CDF/draconian_20170318.bin b/test/roms/bankswitching/CDF/draconian_20170318.bin new file mode 100644 index 0000000000000000000000000000000000000000..21b667dbfc94dd66c8bb4ccb9a9c4ef1e945a0a5 GIT binary patch literal 32768 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 z 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 b/test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..a38a8e7b127c389d7765e65848e46d29d1e94bb5 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Video Life (CommaVid).a26 b/test/roms/bankswitching/CV/Video Life (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..4e880920f3c1b36fec3091e7a068ee7e71c91a46 GIT binary patch literal 2048 zcmb7FT}&I<6}~h6hk%D91lT3u-RAH&@mR4CQQt7IpsKHv%*X1Q@(mwR9Y+qJ3 z%$We$1YlP)S%i@tLZ~kv@1njscW%PrCi(j!AoNITnJJd z^`X7a?*UOs_`G0gc+4=hzMBEQS6+c6V>VY#Nol$`<;?fzB&S+J- zebpH*?|;@gbe2Jt*C7nOpwb6#n3}qh%A#vC1YYnPC&32+;}k!4eMy~IGgNnvV;DdI za@~3>imM#X#luimllXL3nqY`ZR$UIuD@2- z&(`(y9-=8Rd)B7Zk<{PVTQSe5=fzq=4TW>(G{0#?8^wkwndSpPL;knt-TT7J&%-T7NfOS&!mA|&}QVcKooN+NU`q0`$qop8^xMDbm>9pT4uHwm-EKB@ zW#69o4|}?_SG?#35uAi+(OOO-bQ+=4+oM1KswRY}R4UbKwN|SMO5*=^quvi=o}n+t zy07>k%@X)ojRqid3sYs)`NbYsAurr^j6Jvs)S29a50PgM?7XIDR~GG^m5lJWoLQH1`NGZq4PSnN z7MA)8zV(INR(fku`}4%1N?}Ptq{7?zpQ6IbqP4RRc{qXAmZ{e&m9#zjDVx&Ydrm)R z)ACbdGs1%en?Z!ju0lE*UgZL^oLIzCEYU!M18 zI}zr5CJ6-#?h8q%Sagph;laYIOTue;Cr+Q9oE)E&WBl~+@OVeZ@c8&R%5V%zS;sI+ z@scr_0%kMvtu2Wmsds#pNn6&s+4LG-+Fw z*jX!W=dJ9`dnK)wo2Tm%_);B1F~@#0a%PTwEMIH*qDRadSt7o5tEHtSI^>(f;QOx) z_&*r%Umv(*&N)ABy!Egyg8td^Z0fTOuYWf6*OeP=w&l&=k64@gPFHS-W4EFK-&|+9 zGvAqY{V=mKGegVtkSWA-{IA3G2KEHh3=-5YCc6$lWdEWiAziF*PK*FKxgEBno+~j+cT06d;Lh z~Q6~?Cyh)+)pM>HHqGLRM#Tm=I4q>l|!jKYDVrL{7E0H-v&S zUR6Ch*xqQwbUhMje^f!4(xDFy2E!3WQ~qSAsc#t9*n;~tj1@Mi0CvLif_rlRl%aS8 zVab#icoR<+H+aw=w-$2O4o)HLI!d-n9#^@P5zP9L*A9Ak2Ty^HXLcVYtcrjTOI>J2 jU)*6S#0;1r^Q3vo@EShwLx7S|vMU?#e)pXy*X8vu_ZhWX literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/DF/DF_128k_test.bin b/test/roms/bankswitching/DF/DF_128k_test.bin new file mode 100644 index 0000000000000000000000000000000000000000..8678c2029d5b6635469e06b5497efa1d93698f42 GIT binary patch literal 131072 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 G|NjFV*4O<2 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Frogger II (1984) (Parker Bros) (PAL).a26 b/test/roms/bankswitching/E0/Frogger II (1984) (Parker Bros) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..0b88a15f1905a878d850c041f969982d5236effd GIT binary patch literal 8192 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 Y>pnTcX%c(f++^=fp8j9&$!*d90mkCv?EnA( literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Gyruss (1984) (Parker Bros).a26 b/test/roms/bankswitching/E0/Gyruss (1984) (Parker Bros).a26 new file mode 100644 index 0000000000000000000000000000000000000000..653a6c7e5f874fb78f15fddc28cf52384cf690c9 GIT binary patch literal 8192 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 Ixzr?6sJWMb=k*G2a$wFatjTkB`US0PI~#rBYj* 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Mr. Do!'s Castle (1984) (Parker Bros).a26 b/test/roms/bankswitching/E0/Mr. Do!'s Castle (1984) (Parker Bros).a26 new file mode 100644 index 0000000000000000000000000000000000000000..d6e316ca6fe93f853116ae9a3efd1e68de4b899a GIT binary patch literal 8192 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 IfFsNP7n*_**8l(j literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Popeye (1983) (Parker Bros) (PAL).a26 b/test/roms/bankswitching/E0/Popeye (1983) (Parker Bros) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..3b44e7e418d9b0f3a2e0848ccb188e9fea9761c0 GIT binary patch literal 8192 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 JN-v?r{{Zl{yHfxF literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Popeye (1983) (Parker Bros).a26 b/test/roms/bankswitching/E0/Popeye (1983) (Parker Bros).a26 new file mode 100644 index 0000000000000000000000000000000000000000..cedefbdce563b0f55b71aded2ac2043bf8fa6c2d GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26 b/test/roms/bankswitching/E0/Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype).a26 new file mode 100644 index 0000000000000000000000000000000000000000..c4c659f8f7c01e79d9ccfd1536c86bfec1e18753 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K).a26 new file mode 100644 index 0000000000000000000000000000000000000000..9c92498368cea7b402dbeb205d11f02e457ed668 GIT binary patch literal 8192 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 mx%~Uh)Gta9;zU0`1?O;0L2Ob literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype).a26 new file mode 100644 index 0000000000000000000000000000000000000000..807f50d708ffbc0bb738d8dbecb7b92c6e7ec8a5 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype).a26 new file mode 100644 index 0000000000000000000000000000000000000000..5ac51749703f8b6788e586bfb6626be3d40a2104 GIT binary patch literal 4096 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 K%W}hPNBIX61VyC) literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..679a98c9c6d8ed3ca4568ef66a83eba4d797e0c2 GIT binary patch literal 8192 zcmc&ZeS8yDwv)-^qoFj@FCE%SgDt!UP$Lu?YhGKiU>dW+s_atKH7czs>q=eqtzQp9 z$qi`{9NCUr5Nuw^)J(x{$`Y60b_vk3NfvqYRzU^VWq%5`(+@{L!F|5=ojaw7Kk@f_ zKi?mFXYSXz=iYnn*SY7M8zg-yAL%3bqne|lW`>uk_xecFf=VAL5QyT>$>ia425>0N zN2Yv)aQntr$RL@rH10Vfe`TpSess@KQ6C^$kF-va2L#$4Jz|d@bvYb0+5kmQaX12c zIy>y(rnJ=*22`TH&4JSaJ$G$uE*(35RG!o#?~WeDP`dNWBeCi{B*_u8Ivk7VaYq9b zFImVyy2C*qbmNQMJqROC-+ktzh(FZW5 z_kx7a<6G-{-`C>X!21k_g)Qc<7q*0BA6Fo*;~eyLo-P*R$P0a(_ci&B_}<2CsJR3u zrs%H(9*;f(0h$$R^3z(=o@^(T<)_uo1vck$TTmSplj-ao$?Qm0(#T#L<~?Se_*^2M z%|03Vmn0Keg&~!qI}z=&e)Z#gt}D*4wbAy0!lWyr^9`EjR(1@+9%ye3wsy-^0V3LC zXBwy^8{9GyKcRwBu5JuTVY9m5d8HYday#$IcJmUqDL^L|yID;j*E*nT{oL+$uFB>%0WPM} ztPRJ`=PZ=X7Z%Fg=WgcNb2-U&mJ$eVlW9dI_gTMh=oA^zb`17AU(Z71Y(&C}6KE1j z=bMtGs1**Qt>{%}md*5^xrjtF6$B?i^J|kjR^{Toq6y|`Fy)hA1=~f+C&_xek`eOE zV2Z{wrxu^ZMRKD8UKwrQ)0156kC2H(8?C7sV;WRRV}xw&iFPH+_w;_dpb!dr;rx|` ze83NGIhiBQgeAWzSrxfHBt_e|v=h;;EnS3=y+tGhVoMLPrI!%KkR&|rthc4;<_^hn zCqF1^17qG3-jgBU2lrP-%7LaeVrk&T;uCPLRjuv(dUIuiiR%gwyf3L@X~?TYL-7|D zTOm*aNtapI+4D{g8W4a*z%23nS;GvzgZFhjHb6l1I_g-&uY})q|AY0< zuX&Z*Txis(Rp3TRVw9v*nw;X&>U&o_dmHZpY* z90B!!F<~9h!!{!^^W#i@`hSqb(XO)nGYFIGR6w>gMsQq7JU^3I6R<#5CKPvYJc960 ziXhfDd;A!%wwWN-Z6FAbf87S`n_6(mfh60uc`NquOivh&#kX?G^J#n>% zUmGO&lbRDE8T9x@f;!%_awQs$?kFCi)02zCiMEK|?{8z(Ox+1M7;0EnZbx*tQd)jx z>B;01tVSv2c1L%J{|fsN4Iv2-GhzGO#O>hy5a)5booBBJJW+fS_7>qC4788$GJeRs zrdYD5!~9_D4sLhxFioAJSS@BUPhJCj!mRD|4MleZ)uyj8&lUz!!-(wjRc0@ z%x}Y|=L+m?fPFj0zGoaeq+n|Rn?fNz1RGD&46JVl91f3zRR_raobJw222P?VSOQXt7tCjnGe60RRfm;-DPh*QDT#GoE_<0v|& zVF4@-DLj#;LVFjT6&BZzu=)XL@~rb=rU6#=tTK!IuB05v?c2#_!qMG@wxie3LG%{- zgL9^hKPVT$q^N3Cozd-Rgx`gR`43MKGKFa}%VE*Tk2p^=0h-?lCEL)5@N?_w;kZdu z8IZ&@=+Pj|4nGo^1T;oq+yOvl>IPZ0bs&%oD3N!>&JP3at?nS@{3_=S581IVbifcH z`}-kCr65QoAn^P7gW`(ItnsD@={=BCiKO;G3w?=Q0?fA$V3c;Bb{{lkj@QIR5-CYb zjRleigo3_pEQz)WtNXS^aGVC?CecoQXR;nddTwQ zY1LWP>Rjp?oL{o!w%g{+DJsgz(P(h~p{gHSssSNaeGP^44_h8FErkZ=lQYyfpH?=j ztfuVYvggZM%XXFZl@Znw>m62?^;zp?Yp3;)mA1+^SuJ;111{^!&szVo*?N1YRei`> zI;D)bxs0eO6CN(x`+S+Zwd}&KGN`T{=f{lma1Nx9vF{1sXLbwJXlXBAi6^tb+@umAMXrJ#Rolvw?on8>LN~lwqW=Eu2;~{f5$t z1(ep1k#$Yp^(8l!TC49`?$+og8MCJ370sSA-{!d6^_W(lk!nF%bC6-cKm2=sOMvYddPn(3h$O6>7srBAzrH`)LaWWYo zf@-`C^~c&Ha~tSm?d%Ov(O`&*5z;=KF{gc* zb4e}yAQukkEmYsm$k_%OcKc9NRO&jg+##M6CUYYHfqctF5R%XbqDEL^Vr%*Lki@^g zNLqRMXD*srYIzAFw)UbxGIj5v_ud~DAXGzmQn?xW6=3r?cobp$cBrn-SkAQ z^Cz|VR-u-;f;wSwpqy)O?ZWamNd4oQij%1o9`Fu=Bpw>P7~5Wpq}aAv1}>+JMs3}3 zbX*|nj-g`^zKh;{-=!v0Rb&+nUtN{TGx2HYT+?*Ryef#NFX1@O*|;3oXQg-ni}A{= zXB_XvbMj?RggV}H9C*g3iVqyS$HZRqCgW}~b&J+b_9fm>tz;UAOYEC#4*{}1Fs7`ts;xwv zq{yxY!we8vv4AL)b6vt1*NgFBdtnLGb@)sEOYu=y**%r$OBiQD*1!Z31Q~@Ws6swKt7CBB3q(N^Ac)p3D+7)iWs)z6SMZ;6>pWgQ9(+!V3 z^vfSDsC(q+b-%ppM~~cD_xN)Sb^Li6Yx-DVQo)gs!dMV!(09g&valq`$fSHURzG@( z`6%COOdXccEE=S_w!j*%gvjXTxpD9;7tErKh1{%#m z#fS_RZVf((^`r=>g>w*z<(dHFebf8i38^e7sMUvj(?#-y6<#en0qTbC9 zVj%?;r9wk~OH{!GvUd#=e#=gb_Q_sxJCJhS;WtBX(ja=ZFw%ItFJoM#O*9i)eeQ}j zd)_ER#!t3H-T|>EbTb|dD#GN1`!+?EdZllZQ{(;YimLp`1UZu5LR}{3GazTWLQYJ~ zfH}SH@b5#vr+G^bL5SxWc0HbnT{zgwupc749r95Dx(-c6g|J?<1p8tV*g>ubYebQd zi?UEQqL3!Q2z!whmQq=&*oRhJD|W6F8RJtTTD$Gy(TTl;<2 z`KCIX=i*KxQ(@9)L8>5vISq6;G0wktvm5haSE88!QRe*^rauKaJnx_UM*m5heggUO zKqqkD=-#}sfM|go(wU+=oSAcq(`mhS9aF!~`NUk1@LnihXL$y+=cj~6fD>!iS?kvc z7tt<(LEHJASfV_LZ^Rt*mg$#sy&pQ~&gI{N>kYldZ^zMgVI6wSdU_iggkrE~IUJe~ z(T71IPJ^1G2f36C()^%r(0Y1M;Zo=iJfIJv*Isjc$`4jP3(@33{lZt#IK!y)D_wYJtJ*;|_4!q6fZJwi5*G zCCMjQXY_5~V6qqNV+8j$*C#B6A%d>5;k!Hw?k`iRa$(R>EQlsemyJ14cbn47PJEwj zo$H)x(~vq!rB&oanjo(DX@XW9957IUulQv`R-AJ3Rxemk%zSeO$JVZ0u)uaX52Xu= z!Ck_DQe2K<6FBvUPL7>CRDZcffoa+D`iz2!e7eoVWM#ZyoyZdvYibH=)>KU7EjBG< zZ>*TWH&uCX2@aK%lEV&st#8o}Vmw=KUbi!Vz2h#eWEQf*OFWhjY;uVSaED_t#X4 z{zov=XApLx_2^yUZRCf0|1*#Ps*xVf*eeq^t>A(6Q!JMPwl{)A;?z#e38v})?M8jR zrlzJ*f&r)3>xt2Le3XRzs873^@_tREr?0NAuCBuQQI7}1eWM;IPX|X)FDUuy>K6#D zRy&H@nQ*oRTVCFRm)LE0+V2ABf#&Va9*Ap_H8tBHUV5x{=@y8=tyLBmrfuBmVR279 zno*!kI)E~4E+#v});LkVrb1s(ps!dnk#B^>O*GmvCh{~a;(cctt*}Jc(bT>A>(dRU ziRQ+k6QL)5O1}8@=-5PlBCdi_k2`7tq{OD{zw1m;V#>^#cGaKG{2oWEGOzx@aZ;%= zzZ;C7v#W-1Ag}hpW>kp&zXtIm@gtYqRjQ1PjGO}hZ8wg0YHakgtN!xX_c&P|`<_ph zjmEL>2II`+sv&Tlt9=APk}HlKOLfk^Chxj=^X6F|ecTm~d%iWY&G-IOT=l&#fP)?S z&+7m3rp71shj@Hoeu$T$-VgD#DXTiSW!j4dlbymRnbw>1ODKC*2?Ys!(rJ@{(r0Px zRJckHICQ`eeb)~1kolP{efaH@*8ll& z<#GyAh=hk85WrPff)(D!A{9sq>1dLmMjAwc44w(%@iZ(9d1rXB-ixKPd{9IOyZ;I) zviol+zx(f~p!;Jq)P1_M`_nK#gz|j_-h6LCXb{A%gjY#>^DlMg`l;|cQoE%m^yvCCI)a!r{_Saa~F-_ zeYF@)W#RPC@5AZWY&d;l`8YgCgpSA={h_zzw7$1lO{(umWHKo1Q@A5wSAchbqpm#( zkbOw;x9C*2(U7Bb`0)G#6Hcp$NrQLdIS$Tm^v)yEW*lX1}{OZmbG9mlt3dJ zzy?I}a3>mYBPoPU7_>}kCBBn3@&kZ^RZaZ#AWsps{6O*<#g-|-!_$^c1Q0Of+*^TP zpn65h9qqEap@8e+B`D;F9IUou==h5YG4BB(&^9H4)&#L$*70FXKp5;UAZ#%eNxxVk z%!D_oP)N@3%LY&){qiKyAP^1*)38{i!O9yJ7F$n;MGY8z>%!In3Wd4$Xu|w8G-9S; zWFB({82x+UJ&k63NMw|p`8E= zq@yrQ1Wbt=40=FtJFADsw$qYxU4i;JoIFJ!(+d2KDFY;haO*X+r78lT|?OL_rK|!&Vv8| literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (1984) (Parker Bros).a26 new file mode 100644 index 0000000000000000000000000000000000000000..c03bda5bf416f625191188d3d9b9a76efcd979b2 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 b/test/roms/bankswitching/E0/Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 new file mode 100644 index 0000000000000000000000000000000000000000..4d6f16f195556aa18032347ab433e5c4c853bdf9 GIT binary patch literal 4096 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 E|9hXjp8x;= literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Super Cobra (1982) (Parker Bros) (PAL).a26 b/test/roms/bankswitching/E0/Super Cobra (1982) (Parker Bros) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..5ea207651d3e21159211d3a95c79eb7894b676db GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Tooth Protectors (1983) (DSD-Camelot).a26 b/test/roms/bankswitching/E0/Tooth Protectors (1983) (DSD-Camelot).a26 new file mode 100644 index 0000000000000000000000000000000000000000..d38ecf7e2bf9d93c6c61f05b74078605841ff87a GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/Tutankham (1983) (Parker Bros) (PAL).a26 b/test/roms/bankswitching/E0/Tutankham (1983) (Parker Bros) (PAL).a26 new file mode 100644 index 0000000000000000000000000000000000000000..5ab6e6fbe92417a292b0e6b1f75d0bfac4f01b28 GIT binary patch literal 8192 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�d)`zKqS!hS>?b( zSP%{?K}AfBARIk@R1iQlQ8aLBU?M~K%l$t$b=oI|v!8|k z71^t@i{O97`1dMh>pvU+A4i5q761RO%-ny5+KKodL0+Kv|5+$`>`UT*qA1yFr67_A zKQ9F-DMx)1siO!q{r?V*kL?aE87WVjbI zo%fx1wP^3wm$y#qX5QbE@(1|;OV(djG$zYqf4KfH;va&4$mSu^FC{yL(8`q)2>#>o ze^x0R*!Y7%dUkepdSbfL7jl8!6QIv3U06D{(WvB<^%CZf$RECK&)hJh2;)>7Rm7|2Tm$$?wl!fI$Bes2Z*ru7MvQi1lyW zxB<*?&F$N_!Ay)sN5dpvAOz0{&>M`<=cfy$KRf<6%*n~&xG%x~(YfoBs-8eOq2()A zt=v(#Z27V`o?iOQ()@y_3dn!#NlV%L&*lG*ESQM@Nd`QD{|v|r{&f70k_rB^0pW-; zB7i!j`Z}f3BM9?I-e|`9~nE3u5qZ%fZ7l;QpgB^rYt#>C5TXb1m2vKoI>`g=G1u)og1(p;(j?A zv5SeOJvX_@qui69nC9OSJmT#O2c+vQC?s9=(|T6CFyf>I`z^$(D)MFAXA3!zu;muT zGEP;#e7dKviFSu<`=M!KK|wKv-{W5R#B<0iP50Ayzc5jnBJ9tn@P6*-C^U?!_wzIi z$E_aq9P-Jhkfag1cqDZ56q&(Z@eyIaAwj5k=v`5q3rZ^VAL9zaBQar>V;c7_pGebP zcA)~a0h=mRB(S(*eDW1Uw^HI7M}%&?MX>jDNjbR7ktlRZ^Lsmck2o1|vT)>BNNoD* zVCUcwXVli`+UiGPS<`Y?}o;kN)}Fb!cp z%xJ$i@S6eLR3%Lft0a|a%7~x37;^j|Ogp}ZyPGEaDc!nIcvn*q?k8RZAi5Dx`SY>wuF0^Pb!9PkFv0B-jRefL8)*k{I&#}*WXQyp3m=_yfH zbve}wnM~YJFwsE`1>O~>@;vW3WVZGDzIL(S^y3kCy9@dGucMPIc`@nYka0 zS|$Zfi`=h9MV0CLsB0_NFzR@S+cWA&_fteV9WLd41hk5^NG-qRO%}#L7rH=|X)-Z+83|Tsp%c1_C*k1b zsg6{9_@Nfjg)SVEv@KWQq6SADbQ?@cyh<8rpi#2vy;0!x(P9=#8BH`y^{^ko%{}a3 zdV&sGXEu_-DctQxxXXO8o4`arVg~D!k-*^!vodZDj0-09+xD=N@mX=me?^K9eJgaC z5l3zPEmz>F#x*-6Wd+WN;Yx9`-)VRRrs_m-ro21hHR4piljZcAc&C%{jdJhYMOLRQ zCL)cypLARt;$2*Dz!NrgjJUSygdN3dm}(N4CRtD>T<@L4`epcOV#{?2EDvr1A1EmB zLN{L~_p`fT4@0rDaP*rSt+c06Vjuz5>ZN?iOvb?P`rQQu1^KeB_`e|K_DOhhEZg>} zvDO!l8K-QU;cVK@(@w-y-;vT%_T(Uf6nVh*fi9)YE8d@w=rI z;pYXq;`n^|WjF8EOCrs?8_Q`NUfhiPB^CGDm=M;}(%%XFV11tio|4qu>8OcUx$d>=czK~z^sE5*4&V?I^ycXG4t`fKftdX>0{n{-!97QFBdQx{HmsNpQdnZf~4 zBY2^h1n#O%)OdVD+w_~T&+MecX-*`iIBD^IAL47lt0$oZPoq->Y8ua6dei3&T&&Eff9sW7EguqGB z8;Hnee=T?gc)gK$X#XZ)frgvXFFLe-XEA6Dg~X3dN274ki-lkG)QQ>f?&Faj0C&>c z^i60&!AS*GfUVkM6~I8EFRS=k)9EO7-v%mWXbZ5{{+eqr`yVY?4v z8<%X~YTs^ubI9(oA27S97OS+uZ_{VsKEKU)nbSvbNPMcwuqKdmlJEi3Ntk~>{E&0f zyB8|v@^lx1M?4d9Bx_|%vCyA2E7XAqrssntydo> z&V>1R!f?BNZZRF~fsp%?^3amY8yx5BSoU#xwUTpL9h+6!fYrywQ z+#^ngvqKQ@sBup*Q(r9va9b7ofY7%Du$5fzJF`US*S!`QAVo{_HS2Rkq3&xAcjy1@H7N#5<76 zrvWz|=c%;sckO_vT0G4?cSk%4VeL+{5+V7}8@nLxFgIS8F>NxR1{|B}@0`miT(s<| h#mjP+J+quMKAN}axy6f@KKb;brSM>&LeV8-zXw06$n^jK literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E7/Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 b/test/roms/bankswitching/E7/Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 new file mode 100644 index 000000000..77dccc9cd --- /dev/null +++ b/test/roms/bankswitching/E7/Breaking News (2002) (Ric Pryor) (Bump 'n' Jump Hack).a26 @@ -0,0 +1,65 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿff~ff$|ff|ff| ±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…………©`…Ñ…Ó…Õ…×…Ù…Û©ý…Ò…Ô…Ö…Ø…Ú…Ü……*`¢……*¹Œð•ÑÈèèàÐô……*¹Œð•ÑÈèèà Ðô……*©ðLñ`…*¢þêê……*Lò…°……*†Â©Äΰð±Ê…¦¦Ñ©•€ˆÄÏ°±Ì…©¦¦Ó•€¦Â…,……*©Äΰ±Ê…ˆÄÏ°±Ì…©Äΰ±Ê„¨¥ã…+ð-%É……*„¨¥ê…±Å…±Ç…©¤ÂˆÄÏ°±Ì…ÀðOÆã©Lò¥ä%é……*„¨¥ë…±å…±ç…©¤ÂˆÄÏ°±Ì…Àð ©Æä……*Äΰ±Êð…ˆÄÏ°±Ì…ðnLVñ¦áÐ`L +óL%ó…µ³ªµ‡…Îðò†Ñµ™…ʈÄÏ𠩈Р±Ì…ˆ±Ì…Ä……*©…µ€)Éz¥Ä…µ“…µ€… )é8éÐü………*µ«…©……Ä…,L•ñµ³ªµ‡…Ïð‰†Ó©Äΰ±Êˆ……*…µ€)ÉCµ™…Ì¥µ“…µ€…!)ééÐü………*µ«…Äΰ±Ê…ˆ…,Lžñéü…¥Ä…µ“…µ€… L|ò8éÐü…µ™…̵“…µ€…!LÉò……*©Äΰ±Ê…ˆÄÏ°±Ì…ÊÐæ`ˆÐL$òÄÏ°±Ì…Ð…ÏLVñ……*ÊÐù`……*¥Ãê¥ê…êêê êˆÐü……©…%…&©À… ©Ð…!©……*………… … ©€…… ©………+……*¢ :ó  ñ……* ¾ð¥ñ¢Ù Öô……*©,……¢ :ó ¾ð©…Ê…Ë…Ì¥ñÐ ©…Ê……*Lúóø¥ËeñæÊ……*eñæÊeñæÊeñæÊeñæÊ…ËØ……*¢ :ó  ñ……*©€…… ¾ð……*¥Ê¢Ñ Öô……*¥Ë¢Õ Öô……*¥Ì¢Ù Öô……*¢`©ÅÑІÑÅÓІÓÅÕІՅ…*©,…… ¾ð  ñ……*¢ + :ó©€…… ¾ð¥ði…ÃJJJJª¥Ã)É +0¥Ãi…Ãø¥Ã}ñôآم…* Öô……*©,……¢ :ó ¾ð¥ð)ª¼¶ð½ºð…… ñ¢ :ó……* ¾ð¢ :ó`……*…ÃJJJJ¨¹i÷•¥Ã)¨¹i÷•`$06BHT`frx… „ „©À… ©Ð…!ê êˆÐü……©…%…&¢©……*…………… … ©Š ©………+……*©… …±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…%…&……©D…… ¢……*¹Mý……¥âj°8íh÷ûê¥â††ˆàLÅõ8íh÷û¥âê¥â††ˆË……*©……¥î)ª½i÷…Ñ¥íJJJJª½i÷…Ó¥í)ª½i÷…Õ……*©… …©… ©…!©……ê……©…©…©¶…… ……*©… …©ý…Ø…Ú¢`¥ó¢R†×¢`¥î)ð¥¿)ð¢Y†Ù©…!……*±Ñ…±Ó…±×ª­h÷ê±Õ…©,…†±Ù……+©¶…ˆÖ……*©…………Ä¢þµ³ªµ³…×¥ÎÉÿЩ)…Ù +…ÕI¨……*µ™™Ê–јJ¨µ‡™Îµ“™µ«™µ€™Â¦×˜¤ÕÅÙÐÕ……*¥Â)¨¥Â¥Â… ˆÐý………*¥Ã)¨¥Ã¥Ã…!ˆÐý…„ ……*¤ãȘ%ɨ±Å…±Ç…©…%…,©…&©¡åᨅ+……*©… …¥òÉðð É0ÉÐLBó……*©… ¥ê…¥áÉðÄÏ°±Ì…¥áÉð +Éð LòL–ñL‡ñLVñLÜñ`#*18?ððð`ýFýýýý`ý¥øÆø……¢ ½y÷•ÑÊø`©Š……©ý…Ò…Ô…Ö…Ø…Ú…Ü¥Ý¢Ñ Úô¥Þ¢Õ Úô¥ß¢ÙLÚôCopyright 1983 Mattel Dave Akers Jeff Ratcliff Pat Dulong €€€BBBG€€€JNEEEŠ +€€€BBBG€€Š + + +JNNRT€‚„„@@OO€€€BBBC€‚„„@@OO„„BBBC€‚€€ + + + +–BBG€€@@SRER € + + +Š–VNSEEERTE€„„€@@SRER€€@@SE € €€Š + + + + + + + +VASEŽ„ŠŠŠVAGCIIICBBGCHCCIICC@€ + + + +–NNSEER€ ŠVASRERRTRŠ +Š–NNSRR €@@GCIIIIC€€€BBS€„€BBGCHCCIICC@€@@SE€€@@SE€€@@SREEETEŠ + + +Š + +–NNC€@@G€€„„@@SRERRTRUR@BG€€@@S€ €BBS€€‚‚‚BBG‚@@G€Š + + +€–VNSEEEETEUE€€€BBG€ € € €BBGÀ@G€‚‚‚‚B@SEE€€ + + +€€@@SEEERTRR€BBGHHCC IIICQC€„„„––D@SRERRTRUREERRTR€ €€B@SEER€ü@üü@üü@üJüJü„ü@üËünüÿ„¾ü@üJüEüÿ„Jünüÿ„Jü|ü„¿ü4üü0üü0üü0ü¶ü4ü¿ü¿ü„Jü|üÿ„JüXüÿ„ËüJü„ËüEüÿ„Ëü|üÿ„ËüXüÿ„¿ü üLtôLêô¥òÉðÐ#­‚)Щ…ò…Ý…Þ…ß…ï…ñ©…à©…âL¯ôLŽþÉL×ô¥«)ðÉððmÉ°ð É€ðºÉPð¹¥€Ð+ ¥ì + +e‡8é¥ȹêɄТL#ô¢ —þ©ð…«©@…¹L^ô¥ ¥ 0­î𢠗þ©€…«©x…¹¥8é…L^ô¥«É ÐLêô©@…“`¥¹ðHƹ©íîLŽþ¥¹Ð%¥i…©P…«©…¹ø­í8é í­îéîØLbôƹ©……«©…ŸLbô…“LbôÆâ¥â©ð…ò©…‡©…â…ê…ë…óLŽþLøô©î© í©P…©"…‡©…«©@…“LŽþ¥¹Ð…«LbôƹLbô¥ð)ª½µö…ý½ö…Ĥïðˆ±Ã0ˆÐù„ï±Ã)…ó + + +¨¢¹ó•ÅÈèàÐõ¹ó¦ðÐJi²LFõ¥ð)yóª½Åö…ê©-…ì…ã…ä ©¢™«–‡™ŸˆÐõLÍô¥ò0LÉÐLö¥«Éðð? ¥îР¥íÉP¥¿)Ð+¥íÉu0ÈLžõÉð¥íÉ20È„Â¥á8åÂ0…áL´õi…áL¿õ¥ì…ã©0…äLðþæì ¹«)É_ ¹‡8陇ÈÀÐé¥ìÉ0ðL´õ©…ã…ì¥ê…ëæï¥ïÉ`Ð;©…ï…óæð¥ðÉcЩ…ð©ÿ…ò©…ô…ö©…÷…õL´õ©…ò¢øµÝuÊ•ÝÊ÷Ø©…ñ¥ð)ª½µö…ѽ½ö…Ò¤ï±Ñ)…ó + + +i…Ó©ió…Ô ¹Å™å±Ó™Åˆò ±ÓÉ„Ð…êLŠö¦ðÐJi²Lˆö¥ð)qÓª½Åö…êø©eß…ß©eÞ…Þ©eÝ…ÝÅà0¥ài…à¥âÉðæâØL´õ`À €à@ ðððñññòòDà*ุ4©…Ä¢þµ³ªµ³¨Éÿð+¹‡ð&µ‡Éð 8ù‡É °µ8ù…ÃIÿiÉ0˜ªLÖö¥Äð¢L—þ`µ«0í¹«0è©`Õ«ðÙ«ð©PÕ«ðÙ«ðLR÷©°™«L÷©À™«L÷©°•«L÷©À•«L÷µ«àðÉ ð¹«ÀðÉ ðLÄ÷©…Ä© •«™«„µ¥)¨¹ô÷•¹¤Â†Â¹¥)ª½ô÷™¹¦Â©ú™Ÿ©•Ÿ¥Ã0µ¥) P•¥¹¥)  Lé÷µ¥)  •¥¹¥) PLé÷¥Ã0µ¥) (•¥¹¥) ØLé÷µ¥) Ø•¥¹¥) (™¥˜ªµ³¨L÷-¥òÉððÉТ††`Æõð ¥òÐLcòÆ÷ð,`¦ô¥òð0½òLFð½IòLFð­‚)Щ…Lcò½"ñ _ðLð¦ö¥ò0½1òL[ð½Vò Æð`ÉÿÐ(¢¥òð†††ò†ô†öÉÿÐæò©<…õ…÷`†ô©…õhhL#ð…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJÉ¢ð +¤òð¢ Т†ª½ñ…õæô`ÉÿТ††`…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJɢ𢠆ª½ñ…÷æö` :8b †‡ˆ‹Œ›4ðD9ðI5ðEx4ðD9ðI5ðE|4ðD9ðI5ðEDH7ðGBGDGbðBvHCwDFxEGt9ðID7ðGEH6ðFGCA@‚ðR#xS&dðT(w+)$'X'v*%(&4ðD8ðH7ðGyHEDHDEy4ðð$9ð ð)HDu4ðð$9ð ð)DEy4ðð$9ð ð)(&s4ðð$9ð ð)HDu4ðð$9ð ð)+)u4ðð$9ð ð)$'v3ðð#7ðð'##bðBCHGCFDHFGEDGDyrFH3ðCGDvHE7ðGDIÿ4à”à”à444ਤ¨4à”à”à´àð¤ÿ7à—à—à777ধ¦7à—à—à·àð§ÿÇ7¦§¨Ç¤¨¦§¨×ÿÄ4¨¤¥Ä©¥¨¤¥Ôÿ¥öЩ…À©…©…¦î½{ò…`Æ÷Ðæö¦ö½°òÉÿЩ……ö`½vó…÷¦ö½°ò…½ó¨)…˜JJJJ…` +  + + + ÿÿÿ ÿÿÿÿO@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@ÿ‰ŠŠ‰…ƒÿ…‰‰…ÿÅÅÅEEEEÅÿMÿ‡‰ŠŒ‹Š‰ˆ‡†…ƒ‚ÿ…‡‰ŠŒ‹Š‰ˆ‡†…„ƒ‚ÿ + + +ÿÿÿÿÿ +ÿ +ÿ¥ó)…ó)@ð¥¿)Ð¥ÀÉ𢠗þ¥ó €…ó¢¥êÉ„ð¥ëɄТÿ†Ó¥³Ð`¢þ µ³™×ȪÀÐõ¥ðð nö „¹תµ¥)…ÄàÐLõ¥òLˆõµ«ð +Éð7LæõL6öµ‡ÉÐL"õµ¹Ð"¥îЩ•¥L€ô¥ÄÉРµ‡8几û”Ÿ©ÿ•¹Ö¹µ€Ð (µÉT°ÉG°L›ôÉ` Ø”¥¥Ó¥Â)ðLˆõ©p•«Lõµ«Éð—¥ïÉ^Lˆõ¤ÂÀ0 ¹Õ¨¹‡8õ‡É°¹ŸÉìð©ú•Ÿ©•¹Lõ¤ÂÀ%¹Ù¨µ‡8ù‡É°¥îЩР¹ŸÉð©•Ÿ©•¹µ¥Ä•¥¤ÂÈÀðL)ô`Še¿)ÐQ¤×¹‡É–°H¥êÉ„ðB©àð µEÁ)i…Ĩ¹£ö•“¥îÐ àð#©•‡©Lkõ©­•‡©P•©ð•Ÿ©ÿ•¹ Ø¥¿0 (”¥Lõ©•¥•Ÿµ¹Ð©•‡©•¥•Ÿ©•«LõÖ¹©•¥•Ÿµ‡0ãÉ0ßLõàðµ€ÐQ©ÿ…ø©øeÞ…Þ©eÝ…Ý¥ñÉ™ði…ñ؆â —þ¦Ã©ð•«©@•¹LõÉðð”Épð­É ðºÉ°ðÜÉÀðºÉ`ð5ÉðLõµ¹ðÖ¹Lõ (¹¥0 Ø˜•¥L’õµ¹ð Ö¹©•¥•ŸLõ©•«LõL›õ¥¾ðƾLõ©ô…˜¤Ü©`™«¥Œ8陇¥’™©™¥©™“…°©…Œ©ü…¤Lõ¥°Éð.¥ŒÉ‚Ð(¤Ü¹‡ÉЩ™«©#™¹©…°©…˜©…¾©…¤¢L—þ`ü²š€ô!ñáÑÁ±¡‘rbRB2"òâÒ²¢’scSC3#óãÓó£“tdTD4$ôäÔÄ´¤”ueUE5%õåÕŵ¥•vfVF6&öæÖƶ¦–wgWG7'÷ç×Ç·§—xhXH8(øèØȸ¨˜yiYI9) ùšššššššš ¹«)pÉ_° ¹‡8åᙇÈÀðL1÷©ú…Ë…Í ¹«Éðй¹JJJª½µþ™“¢¹¹É轺÷L‰÷¹¥) +ª¥¿9´÷Ðè½¼÷8ù‡™™ˆÀ­«É…Э¹ÉZÉ0¥‡i…‡©¬8凅™`ÀÔèü8L`t$$$ˆˆÔÔ „±¢ÿ–³¢þˆµ³†Âª¹‡Õ‡ô–³¦Â”³¢þˆé ¢þȵ³ªÐú„Î`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ<~BfZZZfB~~<<~BfZZZfB~~<ff<~~ÿ¥îÐ¥íÉ!ø¥í8é…í¥îé…îØ`¥Ái)…Á¢ à0µŸ +8j8j8j +LeÿJJ)þLeÿµŸIÿieÁJJJJJIÿiL„ÿeÁJJJJJu‡ÝÅÿà àð©L§ÿ½ÅÿL§ÿݹÿÐi•‡Êž¢´¹—ö•€Êö` T®®®®® !"#gýgýgý \ No newline at end of file diff --git a/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel) [b1].a26 b/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel) [b1].a26 new file mode 100644 index 000000000..1dc3344de --- /dev/null +++ b/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel) [b1].a26 @@ -0,0 +1,63 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿff~fff~~ff|ff~~f```f~|fffff|~``~``~```|``~~ffn`f~~~~``````BZZ~ffBbfn~vfF~fffff~``~fff~ff|fff~~f~`f~~ ±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…………©`…Ñ…Ó…Õ…×…Ù…Û©ý…Ò…Ô…Ö…Ø…Ú…Ü……*`¢……*¹Œð•ÑÈèèàÐô……*¹Œð•ÑÈèèà Ðô……*©ðLñ`…*¢þêê……*Lò…°……*†Â©Äΰð±Ê…¦¦Ñ©•€ˆÄÏ°±Ì…©¦¦Ó•€¦Â…,……*©Äΰ±Ê…ˆÄÏ°±Ì…©Äΰ±Ê„¨¥ã…+ð-%É……*„¨¥ê…±Å…±Ç…©¤ÂˆÄÏ°±Ì…ÀðOÆã©Lò¥ä%é……*„¨¥ë…±å…±ç…©¤ÂˆÄÏ°±Ì…Àð ©Æä……*Äΰ±Êð…ˆÄÏ°±Ì…ðnLVñ¦áÐ`L +óL%ó…µ³ªµ‡…Îðò†Ñµ™…ʈÄÏ𠩈Р±Ì…ˆ±Ì…Ä……*©…µ€)Éz¥Ä…µ“…µ€… )é8éÐü………*µ«…©……Ä…,L•ñµ³ªµ‡…Ïð‰†Ó©Äΰ±Êˆ……*…µ€)ÉCµ™…Ì¥µ“…µ€…!)ééÐü………*µ«…Äΰ±Ê…ˆ…,Lžñéü…¥Ä…µ“…µ€… L|ò8éÐü…µ™…̵“…µ€…!LÉò……*©Äΰ±Ê…ˆÄÏ°±Ì…ÊÐæ`ˆÐL$òÄÏ°±Ì…Ð…ÏLVñ……*ÊÐù`……*¥Ãê¥ê…êêê êˆÐü……©…%…&©À… ©Ð…!©……*………… … ©€…… ©………+……*¢ :ó  ñ……* ¾ð¥ñ¢Ù Öô……*©,……¢ :ó ¾ð©…Ê…Ë…Ì¥ñÐ ©…Ê……*Lúóø¥ËeñæÊ……*eñæÊeñæÊeñæÊeñæÊ…ËØ……*¢ :ó  ñ……*©€…… ¾ð……*¥Ê¢Ñ Öô……*¥Ë¢Õ Öô……*¥Ì¢Ù Öô……*¢`©ÅÑІÑÅÓІÓÅÕІՅ…*©,…… ¾ð  ñ……*¢ + :ó©€…… ¾ð¥ði…ÃJJJJª¥Ã)É +0¥Ãi…Ãø¥Ã}ñôآم…* Öô……*©,……¢ :ó ¾ð¥ð)ª¼¶ð½ºð…… ñ¢ :ó……* ¾ð¢ :ó`……*…ÃJJJJ¨¹i÷•¥Ã)¨¹i÷•`$06BHT`frx… „ „©À… ©Ð…!ê êˆÐü……©…%…&¢©……*…………… … ©Š ©………+……*©… …±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…%…&……©D…… ¢……*¹Mý……¥âj°8íh÷ûê¥â††ˆàLÅõ8íh÷û¥âê¥â††ˆË……*©……¥î)ª½i÷…Ñ¥íJJJJª½i÷…Ó¥í)ª½i÷…Õ……*©… …©… ©…!©……ê……©…©…©¶…… ……*©… …©ý…Ø…Ú¢`¥ó¢R†×¢`¥î)ð¥¿)ð¢Y†Ù©…!……*±Ñ…±Ó…±×ª­h÷ê±Õ…©,…†±Ù……+©¶…ˆÖ……*©…………Ä¢þµ³ªµ³…×¥ÎÉÿЩ)…Ù +…ÕI¨……*µ™™Ê–јJ¨µ‡™Îµ“™µ«™µ€™Â¦×˜¤ÕÅÙÐÕ……*¥Â)¨¥Â¥Â… ˆÐý………*¥Ã)¨¥Ã¥Ã…!ˆÐý…„ ……*¤ãȘ%ɨ±Å…±Ç…©…%…,©…&©¡åᨅ+……*©… …¥òÉðð É0ÉÐLBó……*©… ¥ê…¥áÉðÄÏ°±Ì…¥áÉð +Éð LòL–ñL‡ñLVñLÜñ`#*18?ððð`ýFýýýý`ý¥øÆø……¢ ½y÷•ÑÊø`©Š……©ý…Ò…Ô…Ö…Ø…Ú…Ü¥Ý¢Ñ Úô¥Þ¢Õ Úô¥ß¢ÙLÚôCopyright 1983 Mattel Dave Akers Jeff Ratcliff Pat Dulong €€€BBBG€€€JNEEEŠ +€€€BBBG€€Š + + +JNNRT€‚„„@@OO€€€BBBC€‚„„@@OO„„BBBC€‚€€ + + + +–BBG€€@@SRER € + + +Š–VNSEEERTE€„„€@@SRER€€@@SE € €€Š + + + + + + + +VASEŽ„ŠŠŠVAGCIIICBBGCHCCIICC@€ + + + +–NNSEER€ ŠVASRERRTRŠ +Š–NNSRR €@@GCIIIIC€€€BBS€„€BBGCHCCIICC@€@@SE€€@@SE€€@@SREEETEŠ + + +Š + +–NNC€@@G€€„„@@SRERRTRUR@BG€€@@S€ €BBS€€‚‚‚BBG‚@@G€Š + + +€–VNSEEEETEUE€€€BBG€ € € €BBGÀ@G€‚‚‚‚B@SEE€€ + + +€€@@SEEERTRR€BBGHHCC IIICQC€„„„––D@SRERRTRUREERRTR€ €€B@SEER€ü@üü@üü@üJüJü„ü@üËünüÿ„¾ü@üJüEüÿ„Jünüÿ„Jü|ü„¿ü4üü0üü0üü0ü¶ü4ü¿ü¿ü„Jü|üÿ„JüXüÿ„ËüJü„ËüEüÿ„Ëü|üÿ„ËüXüÿ„¿ü üLtôLêô¥òÉðÐ#­‚)Щ…ò…Ý…Þ…ß…ï…ñ©…à©…âL¯ôLŽþÉL×ô¥«)ðÉððmÉ°ð É€ðºÉPð¹¥€Ð+ ¥ì + +e‡8é¥ȹêɄТL#ô¢ —þ©ð…«©@…¹L^ô¥ ¥ 0­î𢠗þ©€…«©x…¹¥8é…L^ô¥«É ÐLêô©@…“`¥¹ðHƹ©íîLŽþ¥¹Ð%¥i…©P…«©…¹ø­í8é í­îéîØLbôƹ©……«©…ŸLbô…“LbôÆâ¥â©ð…ò©…‡©…â…ê…ë…óLŽþLøô©î© í©P…©"…‡©…«©@…“LŽþ¥¹Ð…«LbôƹLbô¥ð)ª½µö…ý½ö…Ĥïðˆ±Ã0ˆÐù„ï±Ã)…ó + + +¨¢¹ó•ÅÈèàÐõ¹ó¦ðÐJi²LFõ¥ð)yóª½Åö…ê©-…ì…ã…ä ©¢™«–‡™ŸˆÐõLÍô¥ò0LÉÐLö¥«Éðð? ¥îР¥íÉP¥¿)Ð+¥íÉu0ÈLžõÉð¥íÉ20È„Â¥á8åÂ0…áL´õi…áL¿õ¥ì…ã©0…äLðþæì ¹«)É_ ¹‡8陇ÈÀÐé¥ìÉ0ðL´õ©…ã…ì¥ê…ëæï¥ïÉ`Ð;©…ï…óæð¥ðÉcЩ…ð©ÿ…ò©…ô…ö©…÷…õL´õ©…ò¢øµÝuÊ•ÝÊ÷Ø©…ñ¥ð)ª½µö…ѽ½ö…Ò¤ï±Ñ)…ó + + +i…Ó©ió…Ô ¹Å™å±Ó™Åˆò ±ÓÉ„Ð…êLŠö¦ðÐJi²Lˆö¥ð)qÓª½Åö…êø©eß…ß©eÞ…Þ©eÝ…ÝÅà0¥ài…à¥âÉðæâØL´õ`À €à@ ðððñññòòDà*ุ4©…Ä¢þµ³ªµ³¨Éÿð+¹‡ð&µ‡Éð 8ù‡É °µ8ù…ÃIÿiÉ0˜ªLÖö¥Äð¢L—þ`µ«0í¹«0è©`Õ«ðÙ«ð©PÕ«ðÙ«ðLR÷©°™«L÷©À™«L÷©°•«L÷©À•«L÷µ«àðÉ ð¹«ÀðÉ ðLÄ÷©…Ä© •«™«„µ¥)¨¹ô÷•¹¤Â†Â¹¥)ª½ô÷™¹¦Â©ú™Ÿ©•Ÿ¥Ã0µ¥) P•¥¹¥)  Lé÷µ¥)  •¥¹¥) PLé÷¥Ã0µ¥) (•¥¹¥) ØLé÷µ¥) Ø•¥¹¥) (™¥˜ªµ³¨L÷-¥òÉððÉТ††`Æõð ¥òÐLcòÆ÷ð,`¦ô¥òð0½òLFð½IòLFð­‚)Щ…Lcò½"ñ _ðLð¦ö¥ò0½1òL[ð½Vò Æð`ÉÿÐ(¢¥òð†††ò†ô†öÉÿÐæò©<…õ…÷`†ô©…õhhL#ð…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJÉ¢ð +¤òð¢ Т†ª½ñ…õæô`ÉÿТ††`…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJɢ𢠆ª½ñ…÷æö` :8b †‡ˆ‹Œ›4ðD9ðI5ðEx4ðD9ðI5ðE|4ðD9ðI5ðEDH7ðGBGDGbðBvHCwDFxEGt9ðID7ðGEH6ðFGCA@‚ðR#xS&dðT(w+)$'X'v*%(&4ðD8ðH7ðGyHEDHDEy4ðð$9ð ð)HDu4ðð$9ð ð)DEy4ðð$9ð ð)(&s4ðð$9ð ð)HDu4ðð$9ð ð)+)u4ðð$9ð ð)$'v3ðð#7ðð'##bðBCHGCFDHFGEDGDyrFH3ðCGDvHE7ðGDIÿ4à”à”à444ਤ¨4à”à”à´àð¤ÿ7à—à—à777ধ¦7à—à—à·àð§ÿÇ7¦§¨Ç¤¨¦§¨×ÿÄ4¨¤¥Ä©¥¨¤¥Ôÿ¥öЩ…À©…©…¦î½{ò…`Æ÷Ðæö¦ö½°òÉÿЩ……ö`½vó…÷¦ö½°ò…½ó¨)…˜JJJJ…` +  + + + ÿÿÿ ÿÿÿÿO@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@ÿ‰ŠŠ‰…ƒÿ…‰‰…ÿÅÅÅEEEEÅÿMÿ‡‰ŠŒ‹Š‰ˆ‡†…ƒ‚ÿ…‡‰ŠŒ‹Š‰ˆ‡†…„ƒ‚ÿ + + +ÿÿÿÿÿ +ÿ +ÿ¥ó)…ó)@ð¥¿)Ð¥ÀÉ𢠗þ¥ó €…ó¢¥êÉ„ð¥ëɄТÿ†Ó¥³Ð`¢þ µ³™×ȪÀÐõ¥ðð nö „¹תµ¥)…ÄàÐLõ¥òLˆõµ«ð +Éð7LæõL6öµ‡ÉÐL"õµ¹Ð"¥îЩ•¥L€ô¥ÄÉРµ‡8几û”Ÿ©ÿ•¹Ö¹µ€Ð (µÉT°ÉG°L›ôÉ` Ø”¥¥Ó¥Â)ðLˆõ©p•«Lõµ«Éð—¥ïÉ^Lˆõ¤ÂÀ0 ¹Õ¨¹‡8õ‡É°¹ŸÉìð©ú•Ÿ©•¹Lõ¤ÂÀ%¹Ù¨µ‡8ù‡É°¥îЩР¹ŸÉð©•Ÿ©•¹µ¥Ä•¥¤ÂÈÀðL)ô`Še¿)ÐQ¤×¹‡É–°H¥êÉ„ðB©àð µEÁ)i…Ĩ¹£ö•“¥îÐ àð#©•‡©Lkõ©­•‡©P•©ð•Ÿ©ÿ•¹ Ø¥¿0 (”¥Lõ©•¥•Ÿµ¹Ð©•‡©•¥•Ÿ©•«LõÖ¹©•¥•Ÿµ‡0ãÉ0ßLõàðµ€ÐQ©ÿ…ø©øeÞ…Þ©eÝ…Ý¥ñÉ™ði…ñ؆â —þ¦Ã©ð•«©@•¹LõÉðð”Épð­É ðºÉ°ðÜÉÀðºÉ`ð5ÉðLõµ¹ðÖ¹Lõ (¹¥0 Ø˜•¥L’õµ¹ð Ö¹©•¥•ŸLõ©•«LõL›õ¥¾ðƾLõ©ô…˜¤Ü©`™«¥Œ8陇¥’™©™¥©™“…°©…Œ©ü…¤Lõ¥°Éð.¥ŒÉ‚Ð(¤Ü¹‡ÉЩ™«©#™¹©…°©…˜©…¾©…¤¢L—þ`ü²š€ô!ñáÑÁ±¡‘rbRB2"òâÒ²¢’scSC3#óãÓó£“tdTD4$ôäÔÄ´¤”ueUE5%õåÕŵ¥•vfVF6&öæÖƶ¦–wgWG7'÷ç×Ç·§—xhXH8(øèØȸ¨˜yiYI9) ùšššššššš ¹«)pÉ_° ¹‡8åᙇÈÀðL1÷©ú…Ë…Í ¹«Éðй¹JJJª½µþ™“¢¹¹É轺÷L‰÷¹¥) +ª¥¿9´÷Ðè½¼÷8ù‡™™ˆÀ­«É…Э¹ÉZÉ0¥‡i…‡©¬8凅™`ÀÔèü8L`t$$$ˆˆÔÔ „±¢ÿ–³¢þˆµ³†Âª¹‡Õ‡ô–³¦Â”³¢þˆé ¢þȵ³ªÐú„Î`ÿÿý`Ÿím©Êœ{@ÞÞäÿèvÖô®ò8×hûHkéÞØÝê'ºù@’@ß²¿Ýn@üêûí½2Î_®ÿ}]·Ñ}¯Iüw¿ôÿ2âþIùSÿó÷Y¿ýÿ€dŽ¿ÏÞyÙÕçùÿß~|í{îøˆ:ßÂÿ9o€«¯ûÅÿ³î}Þ>þv¿_ÿ€OüzÿϽýÿý¯õ÷(e#¿oÿÚïÍ[ó€ýÿ|裏€€ÆÿÝ·òöÿ¿5ߢ#òôÿoû"ýÿ?ÿê÷„cÿIÿŸo5·VÏý¿ÙºÏÝûß&ÿäÞ—ëùÿÆÞ÷Ùš¿[‹Ùá€vopïŸý7_¼²¿ú@?²Ü¹öüüwwJå·ÿ½çkCç\&ÿÎä×ïÿîùT^ÔþŸ®~þþþr‘úÙ÷„¯™¾Þþüýç÷®‰ßüõÿ¹üû¾½¾ÏÿTÿžÿ@vÿ&ý]ŸÐûþÿuï í¾®z™ÿÑïí÷7û €÷ûaÝïûPYïç¾ÿÿþëoþÿÝûÿïõý@yûZýŸîßßþ÷·ÿ€ÿ¹´ÿÿ­Ñ¿\Nè> íÿ³Î÷÷aÿø¿ˆgùFáÓÿ§nSs~7ý»½ûÉÿ¨_–Oýâï«ÿžß»ÿ[òý¯×æÿj½•ý~ÿ;ûnì¿T»ï.ÏŸñëxjÿ÷÷W¿yŸe}@˵ýÿoÿ {gÿûï@•÷ûûÿïÿvæwõ€}ÿÙ8ìÿæß–ïûææÏ}sŸÿ"úûõÿôÿûÕ·Ýgoßtüôÿïþ÷þÿþÿ¯véÿA÷ ÿàÿ€ÕÿÖßÃÿvsaîØî¶ÿÿ]sÿýþwìý æyÿMw€óÿÿÿûÿÿÿS½@é÷]¼÷ˆ‡ß0äuñÛï²÷¿ÿ +2·½þ¯Þz•ï½×íÿ@î®–æ½_Çüï>¿·¿:š™Ï¶þ ûý›û«~ûÿò÷Úý<¿ú ÿû^wÞ;÷¹Ÿöïÿÿ|ßdäçö@vÿ|¦ÿ¤SùÛÿo»ËÿüËŠ¿ {þ÷ÿGÙE6m÷ï[·ûwè§ïÿÜù¾ÿYÞ½ÿÛ½ç—ß¿ÿy·ýNýÍ¿îû?þµþŸÇúÛþïŸý¿õúvÿ—ÿ}ÍÞ¿Ÿÿ ~o­ÿïˆc-Ìöûgý†vóýâÏtcsÉ5¾ô¿jÊ7ÞËïN¯©àñÓÛ€ZËûôwÝ>ÿÎõÎÿ@×ÇÇËÂû5ϠʼnÍDÈû½¶ôõ –½ÿê® {lŸ®Ç_ÿ?ïŸíso×s®}__÷ï»÷½þýÿ¦ÿÂÚäü ïîyoÓßìYÿúÏß(«lU]>ÿ@Ïßßʆÿ²­Ú÷å1iå|ÿÆ>׿þû·w/_Ùü_ÿ‹5úï®ï¿·«î@»ÿþ×>ÿRï·Ë|ÿ|Rtó£þûñ ÷þÿÿÝüßÞ}­Ó ª&…›þ Où,·¿}øߟ»ÿ¼ßÈËýdû—º÷ÞöþOy=ûæ÷û­+û XþËÿö–€Öw}ÇûþëÉò×êÜ÷³õ¯¨ý)ÿÞ /÷ûï}ç½û,ßÎÞw·íÿýþfþRý-ÝÿØïý÷eoíßé{ ®»ÛI¾ÿÿNÿýÝwýã×ùÛA[÷o}¯Rûöÿ}hrŸÏ­½ë€ëyÏýÿ ßûív«ïP‚®=]¿ú¬ÿ÷ÿ@óëÿÿKÿÛãºÿ·ÿþ}û8ÿ0YßÝ8ÿ¨úËÿ€wÿ½–£ÿAšY?hïÑû>÷ÉÆÛ˜@Kw{ýÅê¨ÿïÿûÿ.·½÷êÿ¯ÿÌ~Ýõ„Ã~Ì]¿ä$ŒówwÚïëŸ½Û³ß }ÿúÿwÿ·ï™×ùýPØ»ÿ¿ß`Ë÷Óÿ4õöÿ÷Ýý^ûߟïK»ûWk¾ÿºîÿ$ý÷øüþ: ¹ùÿî|û¢ÿÇrÿu¿_ÿ¦ÿþïoÚ³ù÷{€?ï»ÿ„ÿ@OßÐÿ¾Þ÷ÿ÷ëŸ(ÿ÷ÿßÚ½¿;ÿŽþC´ÿî¿ýüÛõÌ÷4î +ÏtÛ}¯Ž¾C¸-÷Éýïýÿw7ßD>»ó€€µ7¿¾ñÿÆ=ÙVùÿ—ÿûÿÿ¾€ìïÉíßÚü?Mëóf@ÿ°Ïëëïíÿ®ü-ÿî¿Ò÷V/òç÷þ {í÷þûúúŸßÿÿÿ ÷ÿKÿðþµÎÈÿýâˆÿ®ùýÿ€Ý¾ÎÍË»…ÿí÷W¾ÿ o÷úº¾æ ˧®ÿzæ½ÿmÿÝýÙîîþýߟÿãz²ÿò{öw§ÿùù‡Þxþ­íßÿ^ïŒü›ÿ]3îFï »[ßïGo \ No newline at end of file diff --git a/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 b/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 new file mode 100644 index 000000000..865cfba29 --- /dev/null +++ b/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 @@ -0,0 +1,65 @@ +ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿff~fff~~ff|ff~~f```f~|fffff|~``~``~```|``~~ffn`f~~~~``````BZZ~ffBbfn~vfF~fffff~``~fff~ff|fff~~f~`f~~ ±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…………©`…Ñ…Ó…Õ…×…Ù…Û©ý…Ò…Ô…Ö…Ø…Ú…Ü……*`¢……*¹Œð•ÑÈèèàÐô……*¹Œð•ÑÈèèà Ðô……*©ðLñ`…*¢þêê……*Lò…°……*†Â©Äΰð±Ê…¦¦Ñ©•€ˆÄÏ°±Ì…©¦¦Ó•€¦Â…,……*©Äΰ±Ê…ˆÄÏ°±Ì…©Äΰ±Ê„¨¥ã…+ð-%É……*„¨¥ê…±Å…±Ç…©¤ÂˆÄÏ°±Ì…ÀðOÆã©Lò¥ä%é……*„¨¥ë…±å…±ç…©¤ÂˆÄÏ°±Ì…Àð ©Æä……*Äΰ±Êð…ˆÄÏ°±Ì…ðnLVñ¦áÐ`L +óL%ó…µ³ªµ‡…Îðò†Ñµ™…ʈÄÏ𠩈Р±Ì…ˆ±Ì…Ä……*©…µ€)Éz¥Ä…µ“…µ€… )é8éÐü………*µ«…©……Ä…,L•ñµ³ªµ‡…Ïð‰†Ó©Äΰ±Êˆ……*…µ€)ÉCµ™…Ì¥µ“…µ€…!)ééÐü………*µ«…Äΰ±Ê…ˆ…,Lžñéü…¥Ä…µ“…µ€… L|ò8éÐü…µ™…̵“…µ€…!LÉò……*©Äΰ±Ê…ˆÄÏ°±Ì…ÊÐæ`ˆÐL$òÄÏ°±Ì…Ð…ÏLVñ……*ÊÐù`……*¥Ãê¥ê…êêê êˆÐü……©…%…&©À… ©Ð…!©……*………… … ©€…… ©………+……*¢ :ó  ñ……* ¾ð¥ñ¢Ù Öô……*©,……¢ :ó ¾ð©…Ê…Ë…Ì¥ñÐ ©…Ê……*Lúóø¥ËeñæÊ……*eñæÊeñæÊeñæÊeñæÊ…ËØ……*¢ :ó  ñ……*©€…… ¾ð……*¥Ê¢Ñ Öô……*¥Ë¢Õ Öô……*¥Ì¢Ù Öô……*¢`©ÅÑІÑÅÓІÓÅÕІՅ…*©,…… ¾ð  ñ……*¢ + :ó©€…… ¾ð¥ði…ÃJJJJª¥Ã)É +0¥Ãi…Ãø¥Ã}ñôآم…* Öô……*©,……¢ :ó ¾ð¥ð)ª¼¶ð½ºð…… ñ¢ :ó……* ¾ð¢ :ó`……*…ÃJJJJ¨¹i÷•¥Ã)¨¹i÷•`$06BHT`frx… „ „©À… ©Ð…!ê êˆÐü……©…%…&¢©……*…………… … ©Š ©………+……*©… …±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…%…&……©D…… ¢……*¹Mý……¥âj°8íh÷ûê¥â††ˆàLÅõ8íh÷û¥âê¥â††ˆË……*©……¥î)ª½i÷…Ñ¥íJJJJª½i÷…Ó¥í)ª½i÷…Õ……*©… …©… ©…!©……ê……©…©…©¶…… ……*©… …©ý…Ø…Ú¢`¥ó¢R†×¢`¥î)ð¥¿)ð¢Y†Ù©…!……*±Ñ…±Ó…±×ª­h÷ê±Õ…©,…†±Ù……+©¶…ˆÖ……*©…………Ä¢þµ³ªµ³…×¥ÎÉÿЩ)…Ù +…ÕI¨……*µ™™Ê–јJ¨µ‡™Îµ“™µ«™µ€™Â¦×˜¤ÕÅÙÐÕ……*¥Â)¨¥Â¥Â… ˆÐý………*¥Ã)¨¥Ã¥Ã…!ˆÐý…„ ……*¤ãȘ%ɨ±Å…±Ç…©…%…,©…&©¡åᨅ+……*©… …¥òÉðð É0ÉÐLBó……*©… ¥ê…¥áÉðÄÏ°±Ì…¥áÉð +Éð LòL–ñL‡ñLVñLÜñ`#*18?ððð`ýFýýýý`ý¥øÆø……¢ ½y÷•ÑÊø`©Š……©ý…Ò…Ô…Ö…Ø…Ú…Ü¥Ý¢Ñ Úô¥Þ¢Õ Úô¥ß¢ÙLÚôCopyright 1983 Mattel Dave Akers Jeff Ratcliff Pat Dulong €€€BBBG€€€JNEEEŠ +€€€BBBG€€Š + + +JNNRT€‚„„@@OO€€€BBBC€‚„„@@OO„„BBBC€‚€€ + + + +–BBG€€@@SRER € + + +Š–VNSEEERTE€„„€@@SRER€€@@SE € €€Š + + + + + + + +VASEŽ„ŠŠŠVAGCIIICBBGCHCCIICC@€ + + + +–NNSEER€ ŠVASRERRTRŠ +Š–NNSRR €@@GCIIIIC€€€BBS€„€BBGCHCCIICC@€@@SE€€@@SE€€@@SREEETEŠ + + +Š + +–NNC€@@G€€„„@@SRERRTRUR@BG€€@@S€ €BBS€€‚‚‚BBG‚@@G€Š + + +€–VNSEEEETEUE€€€BBG€ € € €BBGÀ@G€‚‚‚‚B@SEE€€ + + +€€@@SEEERTRR€BBGHHCC IIICQC€„„„––D@SRERRTRUREERRTR€ €€B@SEER€ü@üü@üü@üJüJü„ü@üËünüÿ„¾ü@üJüEüÿ„Jünüÿ„Jü|ü„¿ü4üü0üü0üü0ü¶ü4ü¿ü¿ü„Jü|üÿ„JüXüÿ„ËüJü„ËüEüÿ„Ëü|üÿ„ËüXüÿ„¿ü üLtôLêô¥òÉðÐ#­‚)Щ…ò…Ý…Þ…ß…ï…ñ©…à©…âL¯ôLŽþÉL×ô¥«)ðÉððmÉ°ð É€ðºÉPð¹¥€Ð+ ¥ì + +e‡8é¥ȹêɄТL#ô¢ —þ©ð…«©@…¹L^ô¥ ¥ 0­î𢠗þ©€…«©x…¹¥8é…L^ô¥«É ÐLêô©@…“`¥¹ðHƹ©íîLŽþ¥¹Ð%¥i…©P…«©…¹ø­í8é í­îéîØLbôƹ©……«©…ŸLbô…“LbôÆâ¥â©ð…ò©…‡©…â…ê…ë…óLŽþLøô©î© í©P…©"…‡©…«©@…“LŽþ¥¹Ð…«LbôƹLbô¥ð)ª½µö…ý½ö…Ĥïðˆ±Ã0ˆÐù„ï±Ã)…ó + + +¨¢¹ó•ÅÈèàÐõ¹ó¦ðÐJi²LFõ¥ð)yóª½Åö…ê©-…ì…ã…ä ©¢™«–‡™ŸˆÐõLÍô¥ò0LÉÐLö¥«Éðð? ¥îР¥íÉP¥¿)Ð+¥íÉu0ÈLžõÉð¥íÉ20È„Â¥á8åÂ0…áL´õi…áL¿õ¥ì…ã©0…äLðþæì ¹«)É_ ¹‡8陇ÈÀÐé¥ìÉ0ðL´õ©…ã…ì¥ê…ëæï¥ïÉ`Ð;©…ï…óæð¥ðÉcЩ…ð©ÿ…ò©…ô…ö©…÷…õL´õ©…ò¢øµÝuÊ•ÝÊ÷Ø©…ñ¥ð)ª½µö…ѽ½ö…Ò¤ï±Ñ)…ó + + +i…Ó©ió…Ô ¹Å™å±Ó™Åˆò ±ÓÉ„Ð…êLŠö¦ðÐJi²Lˆö¥ð)qÓª½Åö…êø©eß…ß©eÞ…Þ©eÝ…ÝÅà0¥ài…à¥âÉðæâØL´õ`À €à@ ðððñññòòDà*ุ4©…Ä¢þµ³ªµ³¨Éÿð+¹‡ð&µ‡Éð 8ù‡É °µ8ù…ÃIÿiÉ0˜ªLÖö¥Äð¢L—þ`µ«0í¹«0è©`Õ«ðÙ«ð©PÕ«ðÙ«ðLR÷©°™«L÷©À™«L÷©°•«L÷©À•«L÷µ«àðÉ ð¹«ÀðÉ ðLÄ÷©…Ä© •«™«„µ¥)¨¹ô÷•¹¤Â†Â¹¥)ª½ô÷™¹¦Â©ú™Ÿ©•Ÿ¥Ã0µ¥) P•¥¹¥)  Lé÷µ¥)  •¥¹¥) PLé÷¥Ã0µ¥) (•¥¹¥) ØLé÷µ¥) Ø•¥¹¥) (™¥˜ªµ³¨L÷-¥òÉððÉТ††`Æõð ¥òÐLcòÆ÷ð,`¦ô¥òð0½òLFð½IòLFð­‚)Щ…Lcò½"ñ _ðLð¦ö¥ò0½1òL[ð½Vò Æð`ÉÿÐ(¢¥òð†††ò†ô†öÉÿÐæò©<…õ…÷`†ô©…õhhL#ð…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJÉ¢ð +¤òð¢ Т†ª½ñ…õæô`ÉÿТ††`…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJɢ𢠆ª½ñ…÷æö` :8b †‡ˆ‹Œ›4ðD9ðI5ðEx4ðD9ðI5ðE|4ðD9ðI5ðEDH7ðGBGDGbðBvHCwDFxEGt9ðID7ðGEH6ðFGCA@‚ðR#xS&dðT(w+)$'X'v*%(&4ðD8ðH7ðGyHEDHDEy4ðð$9ð ð)HDu4ðð$9ð ð)DEy4ðð$9ð ð)(&s4ðð$9ð ð)HDu4ðð$9ð ð)+)u4ðð$9ð ð)$'v3ðð#7ðð'##bðBCHGCFDHFGEDGDyrFH3ðCGDvHE7ðGDIÿ4à”à”à444ਤ¨4à”à”à´àð¤ÿ7à—à—à777ধ¦7à—à—à·àð§ÿÇ7¦§¨Ç¤¨¦§¨×ÿÄ4¨¤¥Ä©¥¨¤¥Ôÿ¥öЩ…À©…©…¦î½{ò…`Æ÷Ðæö¦ö½°òÉÿЩ……ö`½vó…÷¦ö½°ò…½ó¨)…˜JJJJ…` +  + + + ÿÿÿ ÿÿÿÿO@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@ÿ‰ŠŠ‰…ƒÿ…‰‰…ÿÅÅÅEEEEÅÿMÿ‡‰ŠŒ‹Š‰ˆ‡†…ƒ‚ÿ…‡‰ŠŒ‹Š‰ˆ‡†…„ƒ‚ÿ + + +ÿÿÿÿÿ +ÿ +ÿ¥ó)…ó)@ð¥¿)Ð¥ÀÉ𢠗þ¥ó €…ó¢¥êÉ„ð¥ëɄТÿ†Ó¥³Ð`¢þ µ³™×ȪÀÐõ¥ðð nö „¹תµ¥)…ÄàÐLõ¥òLˆõµ«ð +Éð7LæõL6öµ‡ÉÐL"õµ¹Ð"¥îЩ•¥L€ô¥ÄÉРµ‡8几û”Ÿ©ÿ•¹Ö¹µ€Ð (µÉT°ÉG°L›ôÉ` Ø”¥¥Ó¥Â)ðLˆõ©p•«Lõµ«Éð—¥ïÉ^Lˆõ¤ÂÀ0 ¹Õ¨¹‡8õ‡É°¹ŸÉìð©ú•Ÿ©•¹Lõ¤ÂÀ%¹Ù¨µ‡8ù‡É°¥îЩР¹ŸÉð©•Ÿ©•¹µ¥Ä•¥¤ÂÈÀðL)ô`Še¿)ÐQ¤×¹‡É–°H¥êÉ„ðB©àð µEÁ)i…Ĩ¹£ö•“¥îÐ àð#©•‡©Lkõ©­•‡©P•©ð•Ÿ©ÿ•¹ Ø¥¿0 (”¥Lõ©•¥•Ÿµ¹Ð©•‡©•¥•Ÿ©•«LõÖ¹©•¥•Ÿµ‡0ãÉ0ßLõàðµ€ÐQ©ÿ…ø©øeÞ…Þ©eÝ…Ý¥ñÉ™ði…ñ؆â —þ¦Ã©ð•«©@•¹LõÉðð”Épð­É ðºÉ°ðÜÉÀðºÉ`ð5ÉðLõµ¹ðÖ¹Lõ (¹¥0 Ø˜•¥L’õµ¹ð Ö¹©•¥•ŸLõ©•«LõL›õ¥¾ðƾLõ©ô…˜¤Ü©`™«¥Œ8陇¥’™©™¥©™“…°©…Œ©ü…¤Lõ¥°Éð.¥ŒÉ‚Ð(¤Ü¹‡ÉЩ™«©#™¹©…°©…˜©…¾©…¤¢L—þ`ü²š€ô!ñáÑÁ±¡‘rbRB2"òâÒ²¢’scSC3#óãÓó£“tdTD4$ôäÔÄ´¤”ueUE5%õåÕŵ¥•vfVF6&öæÖƶ¦–wgWG7'÷ç×Ç·§—xhXH8(øèØȸ¨˜yiYI9) ùšššššššš ¹«)pÉ_° ¹‡8åᙇÈÀðL1÷©ú…Ë…Í ¹«Éðй¹JJJª½µþ™“¢¹¹É轺÷L‰÷¹¥) +ª¥¿9´÷Ðè½¼÷8ù‡™™ˆÀ­«É…Э¹ÉZÉ0¥‡i…‡©¬8凅™`ÀÔèü8L`t$$$ˆˆÔÔ „±¢ÿ–³¢þˆµ³†Âª¹‡Õ‡ô–³¦Â”³¢þˆé ¢þȵ³ªÐú„Î`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºîª:¨ºþº¸ºîª¸*ºþº:ACg=æÚ¦<~Z~<‚Âæ¼g[e<~Z~<Û<ÿ$ç4ÿ$ç~B~ÿ<ç$÷<ç$~B~~ÃÃÃÃÃ~½ÿ¥’’¾¾þþ¦¦¦¦$$<ÿ¥îÐ¥íÉ!ø¥í8é…í¥îé…îØ`¥Ái)…Á¢ à0µŸ +8j8j8j +LeÿJJ)þLeÿµŸIÿieÁJJJJJIÿiL„ÿeÁJJJJJu‡ÝÅÿà àð©L§ÿ½ÅÿL§ÿݹÿÐi•‡Êž¢´¹—ö•€Êö` T®®®®® !"#gýgýgý \ No newline at end of file diff --git a/test/roms/bankswitching/E7/Burgertime (1982) (Mattel).a26 b/test/roms/bankswitching/E7/Burgertime (1982) (Mattel).a26 new file mode 100644 index 0000000000000000000000000000000000000000..65cd1acb20f80759474bdb7f5348e93c56de9072 GIT binary patch literal 16384 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 K#J??^^#1}DbcSsJ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E7/Masters of the Universe - The Power of He-Man (1983) (Mattel).a26 b/test/roms/bankswitching/E7/Masters of the Universe - The Power of He-Man (1983) (Mattel).a26 new file mode 100644 index 0000000000000000000000000000000000000000..74a946621c6c20bcb13048d2e3d8564fa9616976 GIT binary patch literal 16384 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 Jpp=#Je*y9KswV&d literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E7/fruitcake_22Oct09.bin b/test/roms/bankswitching/E7/fruitcake_22Oct09.bin new file mode 100644 index 0000000000000000000000000000000000000000..456c2a6e2ba07ecd5de04625963fe71fa35564a4 GIT binary patch literal 16384 zcmeHOOK2NM82)#yNV0LP^(#?r2ThC;oJT>>QhX>xt#vRVhn{=sUINLfKKkHT>tx54 z9lKT>2zDVzsFukFOp~JyPG68VOADf>miCaQ#A;0I+H#0nS-%8p&?8M^$i2-;*_QZR7dI*PrE8{(n{Z8C*oKKv1{Jr>z6R(~)5NZwW4b%mE zzCGTWni`d!9Ra{0G2kF4l}ZItsbnfOo$^mlC#QjJ`Tn%C;vmWiK>m*P*D-9YJ5FW8 zajF#U3%YPme{^b-HlqmkbqC1#L9eo@Lp zMw6;hlt|Hpu13kP)H2MNdtEiAkg9p0M-hv7k>!Ug3W2E_MFqn{3UpC`MHR+SEUFL$ zbkbb2Yk{t*em@xqMF*musu=3qC}m(O3U)?^n4%D>Vl8B9tPxfQCq~RXevbmHh^DBh zta=o~fWuG`1w<7FiKaXT0ZgoKz-zz;v{5V;!w84HsoUFzP2Cm&@RQAi-)6{Yi;00W- z5QBfaS<%+Ejtb}tK`_K($VLM~73(04LEltyI;e{%kwJsv%T|~fbP8V-oWUS%eg)+y z8ITP89~kJ<--$+;Mk{yopWa9(jsIGG(VUBa$S0xfhPoSgxOozu-Pp4m-rex+hJQC| zw_u&;wN{H2;d|5LrkReK+?=xNc+#A-h)>`!ER7FAp0`%`1+J!jiF}1?ypcCqZ}B?I z;0yr=J+!p6#9O$^kLs4n2@`y*!xL9j#)^jJG^k$R%GR#xAlX;Id&Xd`RBT7EF$g}*;cv2+r#mVgC)_iht0)AiK zmmLnC)%ftNsnupDP9ihTO@3UTH`V+G`cn8YuIgxyxHr?t)rF6XyxrCwL2u_C-MYeS z)2&=hhp~gJ2&{rhDJOgJbx3S2qxeMEd%F0sOtay=S_*g2KWC#&>|H41qTv zqizSHEla@_xsA(4+y|btg)h+%??5;ChdR;n^7S1oFB7>}=5W@GbOuk4L>jr79l29p zX>~71;P!}~9yCpq8p%#_uD|GCom@{cAQ_MhNCqSWk^#wpWI!??8ITM}1|$QL0m*=5 zKr$d1kPJu$BmBo1{I6TaBP%dMU)4pK&x&(qgrx)GR4?}C=wa{8QJm{lrTNU&p{6rejb=Nc-P6N0 zT6fm$e$aFcn;a51!rc!%Ck3`%&KDap&JrJT+sM>iGQP6&C2WmwU#`b~1-YZ{CH{5D Z)+GZkHv_o2;}*Ypf1mi<{hdlw`U@rws>1*P literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EF/64kbb.EFEF_tagged.bin b/test/roms/bankswitching/EF/64kbb.EFEF_tagged.bin new file mode 100644 index 0000000000000000000000000000000000000000..1c574f8f932d888ea68a8a900b2f6d9053cd228b GIT binary patch literal 65536 zcmeI$Z)h9m9S88!S(a_Zw&W}w0z0+$A}LK=qBk=w^_mc9xT*(n|GXJwL<}~PR~@B< zz8Fqk=y!9>mN;oIu^m~G&w6Y>Zc1%xy+}|=DNWosFRJ`eT<8nuMPpo#F~#m&Mhe>R z?y_DMhBgpG488}lp8G!M-*fsrXPcj8h$f_uOsUZO{CbaHOLRvnn%u3)Hcgf^aYq}} zET6tqUb!n@yn1)GgRi-}vLr)SmuAEE^^bqQSSr-%H`>I~bzfmC7uuuA@}m+em*8A= z@`GMp=jL@z{+5^f-Q4fwr@g%1&Fh`~BQFoQdBDlP^zsHbZ*cOzdU>OpH#&L9%bVQ1 z$;tP4dC<*+PJYnKx48KhCx6S!o87$G$xnNEi<`GN`A1&f>gKJ52)p?-c~O&Jdb1&S zHuTTgMNNLE$>Jm1urnLvBXU%wCbz&}oJ)TG*d_Y5uzt0S0|F3$00bZa0SG_<0uX=z z1pdDStn#Q_*W^Ks8}!RL|8!H>^bg1Qm|6W~x%0@(k$C0Llkd!TO4aNAxohN(fALYj zXm|WLAOHafKmY;|fB*y_009U<00I!GwLsPV|K9vwS%?0=*87O{ApijgKmY;|fB*y_ z009U<00NZ+s_y>}=MPIi`u|GCn1cWWAOHafKmY;|fB*y_009WpTA=Fw|9JkmtVjP} z>wU!f5P$##AOHafKmY;|fB*y_0D(#ZRrmktd|C$3|5q}`90VW$0SG_<0uX=z1Rwwb z2tc6L0#*0_SMpb61N#43?<3ZS00bZa0SG_<0uX=z1Rwwb2vicNy8mC!FUv;s|CNj} z2LT8`00Izz00bZa0SG_<0uZRRK-K+!IbW7d=>KcIk60f95P$##AOHafKmY;|fB*y_ zP)VTb{=YNdDZ}XhD;Z-B0uX=z1Rwwb2tWV=5P$##AW&<8s{8-F`Mt6Y{eP|Z5$i($ z0uX=z1Rwwb2tWV=5P$##DhX8G{~yjDmRr&PS2D&N1Rwwb2tWV=5P$##AOHafK%mwF zRrmkL^T*{+(ErzZAF)0JAOHafKmY;|fB*y_009U2mfO((S2D&N1Rwwb z2tWV=5P$##AOHafK%mwFRrmi_@>k?jUjMIOt@S6u`VfEs1Rwwb2tWV=5P$##AOHaf zJSk9h|G%7HCRLXIbWW8%dWLpPo?Trv(!!wBP2ps}VA~{faqe zy?Kqq8On$O8W%-M%3$Pvk&5~|C8hEnlZyV_gSCqVCDD5ErjiI< zylsze@yIUwE-^s?Y9Q58 z?9CAu%#1A4c^aV$G)8F}&om@xAcFGd{Z0;Pdw@Yta{}IPd{L0$eT#7p8 zlGOh3@aV^*cCa>=F*+_Ae0z!Zf$&$8o1@ue;=IFe-|`OHX_w8W5+m76;)48)RPymZ zkly_&qlm)w?m~mOd0iHK1C}zlI;s^OCX&2WMXO#OGS4lB|IQCwuqC0AB}1AlYno>H z^rf=3$ILEJI};=#*bM&6UQ=M{%UMUy;i(dEUDpN*k)pi(qfWQLeQAVQqod# z(`Gg&O_7^1CvzW|Q~cv_uew1&cG)HKd1aa`u$4o#Pi>VW`8h~W|-8)aLMw|Coe5*m|cti;hih(nlifXEQ_3hJwN1(L>XNua=G;nu*Jw z;=h_t{4 xcQo7Qz43Uzef{s_zwV7jqmkyo{+H}?e%aT*WDlRb-)j2*mk+#rpl`iz{U43)Wy$~m literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EF/EF.bin b/test/roms/bankswitching/EF/EF.bin new file mode 100644 index 0000000000000000000000000000000000000000..8038b3c55dc32bf5b7d951ab9b93ce0e570d3cd8 GIT binary patch literal 65536 zcmeI)J!=#}7zgl60zyEv5(GihSR0K-t;Cl|P{EJjfsoH&XSEqgaDK3PpZNL$mkmBZEa^1<~VXIg(YtEo~QDAkct9WB+dQq7iXu2l1-S}4_G zscx34U8=jKTH37A)F+mYuTSvSp|$8kfWXcI;e8ArV)z)_8=rhg_!PtE7`|-T*g04D z8pF33zHiwT>KJ~+@N>(?jq$%?_#MOQe|B{S_)dTT0RjXF5FkK+z(53AYqPWAU0gX) zO}7VfK^GxFpiu&KUC&IdrQZTR1PBlyK!5-N0t5(*v_Q)Lr*r;4CI63fpWPgRZUQO) zdj-%9$94h)2oNAZfB*pkBP5XW|CyZsFUkKS)K#}apm%{z{`U%?cQGRg5FkK+009C7 z2n?q{%KvjY|KFDXhqHlZO`snFUI+9;)j0_eAV7cs0RjXF?5jY^|7Ualza#(eYad*k zK%)dYe-z;V0yL^ACPRP#0RjXF5FkKcZvrX*pUe4wN&ep(q@xLpl7K}4qts3JLVy4P z0t5&UAV6SUAm#u0od563|DFf}1bPs#G@u70LkJKcK!5-N0t5&&P$1?1^Ev-NlK&gn z9aAFEJON7sn%5IEB0zuu0RjXF5FpTtK+69Ya{hlJ|M$XW41uv1ury%o9{~Ua2oNAZ zfB*pkLn@H+|HYjDpUeM4+CkGM&;S980vgZ+Qy@Tq009C72oNB!y+F$UmvjDqA^&d= zWiJ5&-32TP=x$>V0RjXF5FkK+0D*=Gr2Ky+=l@soe?vNA8U%(=z@mU5Y?>((AV7cs z0RjXFjGI8p|5tPVe=GlwTkG8~fq@8E8ZZ!M7a>4^009C72oNB!qd?04*K+<}mH&6N zGJpVq-3wS6uzNE{5FkK+009C72oUIpK+69MIsZrbzaPBLNnq>+EDad@M*si;0t5&U OAV7dXLj+R(zy1%-ANa)p literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EF/RobotZed_07.bas.bin b/test/roms/bankswitching/EF/RobotZed_07.bas.bin new file mode 100644 index 0000000000000000000000000000000000000000..5ea0d995334eef8055b0d048e71c162a7db0630b GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EFSC/64kSC.EFSC_tagged.bin b/test/roms/bankswitching/EFSC/64kSC.EFSC_tagged.bin new file mode 100644 index 0000000000000000000000000000000000000000..89fb09f12506e688be947b08dd70478929e53409 GIT binary patch literal 65536 zcmeI(Uu;v?9S3mx;y8&(;*+eKA|*7gCOS3EH1B2Vq^Pi>p^NK|Q1&v73Aa+G!V`O$ z`T$8f`R9dbVTRT~g6#y86F3o(61AOFbS<{2kS0KDws^6$hfr-qSzhKOkZ5aK@0@Fd zY0IB37eW4fuVj4g*T?72=iGpPNXg~a_9bkT5&eCcm@UgQBQ2Ae@QkoiM8kb@_aqneQv) zj(qMg^KcL{$X)r|W#&zV ze0@G&Z|3_7d09R$GxKmEFVE-YWZJNI$<{1I z&9`m2{HaB^E_U3r!ju(gl`a-;)t+`)!Qz4d1Rwwb2tWV=5P$## zAOHafEJeU_{lCfBw3K;Q(|5!=3-$j~sQ*{fvw*!o00Izz00bZa0SG_<0uWfP0+#Fl z-Nx?ay0=HQF5$3H|9>C#|D!r5%mV=kKmY;|fB*y_009UDiLX1?YV9XVEY$zMLjAv5p9|~@0uX=z1Rwwb2tWV=5P-mP z60ltV=ZxjFoyW2kQEH+7e-ripV>vWT3IPZ}00Izz00bZa0SG`~jR{z;|LcspHAeQ8 z?Fwe0{y&WR|0|#fAOHafKmY;|fB*y_009U<;GqjxuKza~n;!b2R@i`|(n9@z67~NI zJ8mo&0uX=z1Rwwb2tWV=5P-mn6tG2U?$c;b5MT;s6_5Tp+|A%-K7zzRqfB*y_ z009U<00Izz00izKV7dNpFi=bNh*$&!AOHafKmY;|fB*y_0D)C5V7dN3Z=7G{ zL=W7a_@;&W{}a^z4+KUB2tWV=5P$##AOHafKmY;|uq$GoLk$jFB$oK;MdF94hquv5o~Ed9 zRbNk2+W*Fku$}Sun}7ahW||){_OoDxaexKgMvH1S%hvG0`g*G4zaI{T$9qFVzoT0I z+u=5uJ(=9ks3LiQkvrL4-HdT^wLl})$s7};p_9X;bJs(O4z7^-0hbZy;ald z5+xMnM}`kx@Am(C#!ULs4x7Jb)^`7ETG;&Got-|rD3^EkGr7F8Io0}Hw$yNUTk2@` z2Y2hPb}(?rCYM|J#pU{)vuc)~&6Cm55=i=C`vW&9PfIkO9j(IJ)zoj zA-TL@O&iPf&3E-igU3vEwd9TTv>LWI9_;Mx37!ytCXMX=3%NHkJvN>iX-F0Gt0N+1 zZ%f$Pr@Hjir@^Q^qI9B2?1~&6W&e>6oU1&jQ9>|X@|MT4Zr@<_`)1VH#AGVl8@AlYw`K2b zIoUsdC;R&s=BC=8DNflx^wi$?XWToRA0`-`jPtn5MR6H_D6bFV-kb6xIefWq@QK^Q z2W}4@xMS!*>t+utacFkC<|tvF&8=U)Pt_;9$&Z;Y`4Ov+{e&g2u)VRDSn{&G^E3Iu z-q?25e#w#gyPVP&R-G@)&R68eve!rQWBHwr<=uAmoxSoqh0Z_sg|&<6i|MS!UQ)aR ze`VA?@E1n$fvb#S11Uz)ge^J7VofZWX0aVC`8O7OnI*?rY^NM&@mfRb6W-m?!g#!+ znekZ10mh>p`<0|`P@7Corg?g#H2k7GuJk}o4gR?r{4+K9q8hwGE=>+4*QtiRVoq^c zO{W(54>|NsHT27B=pAZk^N@H#u6x_Nl#tWN2i*Iq(B$JI|C%AqXEyAD%ST>5+YX2A zz1HXca_!l5rv1h2o?ZO`@vWu)2dU@Hn>;hpGMNcq zqA^jWiv^vJ>FxO^eTDzCf#pL00uX=z1Rwx`y9zY^(!3g*tL61vbxCs|(CBn-ZEW1? zbk@rEva)8szoE8F-8TjT&8q+Yz^jd3ueZ9)`NH$+UcOZS=T-B|lUS+$f4p_)mZrI; Gx&HwJ?P7cY literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EFSC/Distopia0.95_NTSC.bas.bin b/test/roms/bankswitching/EFSC/Distopia0.95_NTSC.bas.bin new file mode 100644 index 0000000000000000000000000000000000000000..ff4edd986464fa5f1504ade68511d076b59dacd1 GIT binary patch literal 65536 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F4/AVGN KO Boxing 2009-09-06 NTSC.bin b/test/roms/bankswitching/F4/AVGN KO Boxing 2009-09-06 NTSC.bin new file mode 100644 index 0000000000000000000000000000000000000000..64ac6011b5c5c6bbfc2fee9cadaf48fe997233a1 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F4/Asteroids Attack (2020) (Demo, Game Select).bin b/test/roms/bankswitching/F4/Asteroids Attack (2020) (Demo, Game Select).bin new file mode 100644 index 0000000000000000000000000000000000000000..af58232bb8260ab518eb2c8caea82fd72147fd63 GIT binary patch literal 32768 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 Eze(pPf&c&j literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F4SC/Fatal Run (NTSC prototype).bin b/test/roms/bankswitching/F4SC/Fatal Run (NTSC prototype).bin new file mode 100644 index 0000000000000000000000000000000000000000..d936473e6f9ec6084a63f66be839fd982a1a337d GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 b/test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 new file mode 100644 index 0000000000000000000000000000000000000000..1c27745bcd92d6ae77f3be48de85b2f4be5e1a73 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26 b/test/roms/bankswitching/F6/Battlezone TC by Thomas Jentzsch (2 joystick Hack).a26 new file mode 100644 index 0000000000000000000000000000000000000000..8f97a3a0eaea4e160eccbbdc6816895a3c7da2f9 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/California Games (1988) (Epyx) (PAL) [!].a26 b/test/roms/bankswitching/F6/California Games (1988) (Epyx) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..cf76cd7b10bccdabae7377ee7b430040ca14f0bb GIT binary patch literal 16384 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

`LXC9iNP zI_1^~7ZsqcV%Gzj68Hjj8m3DOUT82QY{zbaF;ejcmgMBU+F)5b8T=*7QZ{C?22F_j(!))kA22-^aE;W_(6qx7dyLPfca3)tX z+c-6|6|U;Z;F;VSr-2d=F^Wp71CdAr@#)alJ`f5xN5#5Zw;)%6E6Jq0_}p` zHE9{uv<_NMzF2yZ!StYS&o232hd((67oA-0nh9Lb5jT>ZduQFSORRKN?oA@oh{O4Z zA(rj33G#9LK<=suNtK%L;h}fGu@F8AE}{qBPf!hhBLV}jKxW_x82=4AJ7@aA^5BmV zehL0Nzij{D-+(vZzrDcyN&fWdvLF0bB(9Zsw{mhwr}u|(<9lER_{WORbFwm*EnS?x z2;C#Qf&hud&&>^lSl1n{t8YDg{CKNy_g}U0a?dw6J@7krQ`$SS_nBUFYxu1vZ@mc5 z?{2-=o7%eqej9ps^nTy_b8qUctXp}v%Hi303*0lWg1>snlDV(GGzTG>Y(;VL$_BEi zlfk9=)br0j|8yk*U|jOyU!4MM+wzVH<(RA&uJ!hTa_aX>AZ$g@V*MhCLJ<_CR0anJ zgX2l1P>|^CLx*1QA9~>sfIllXAAMm;Clgp z!vAj&2vGoc73rTLIR58Lqb{wuw5{~gs0nLUoU@<12lTAM}N7BNU$K((Jp>Y-iDZvNt0DUBS6becqB&fUahD*hz`9o z@eh;Z6~U3w(J=|n2*spdBr(^0J86U_TA>&bJvreKd7$P6B4PlD%+;d!tc7qR)a#>2 z2_>J`N#0uyj8Y+)W+aSFp(4ID;>;y5b^2@tm>R&V9VmwyQ@TD} zh4c`OIXzHJDWeSOCb%stz$`Pk0@{KyD*3rTYxaxt=g;o& zFI2}o^9vyXL}(&KvHVy6XR~L|{_v5>W3tk9feJkhN~sDF%fvGY+3&sg#>W#sn-l|s zq-i~gu#`xm!TKNvalbcX+Kb7_{~k;50^><~bKc8;oG}ZAq98*Y0I^(77R7)Jg+iH7 zAfHi(ul{8Yj5GXBTi6!Dx>2gtFbfD(KJ^J1a?T2WmP|eJ*^kox`u?)XlcOQZUIxMD zIubT5hB=1NbrVXDpA1e-K`anX=YhLuH5}CYOkmQ@gF8oDg0l2cdRRJT`6f9o0W7#B z7RK_eWfQpBhGA`0a3AKYRDJkz3B&7iW51XtUa}H0a^=Dj_zS6TyEf&*A2tmW{-gr}nZDt77 zhlk@x{OwBa-+;qM;jd%Ark|QKJuV>$^7xysZ|co9CJ%2;#d(fz_%J3fD6#GvE|{_5 zP0VJZ(cKOL3jy@*1kVp;iC77a9m+DaYZK5uM`+KvCZeREN+qD#eXsOo_ATf$`7QqD zzRP`E`qceR{Vn~c`+w=b+<&uQ3`i%_kY{Bx_?7I z+dr-!rIXE+i4H-?F@)%wAE5(nG#_aHHVj6Z znw^RkeVnj3duam6En6T^_-Gk9QlOWQ6VRf8y2a>AWP0SiB*mDZw2*PZ<5iD^K%2#A z&GH)q@2i3L(o0K8n1E2TJPcBqOFs}wGT&aZc_idB65p9Z%^+tNq)ehjVFH(ayo7wk zGnan6IP@z4|J9FQ34K}pYS_mlmx?yhA>&o!f|HeGC7_IT*H(w3Ojr{d zl#v^`K?7;c+7OiS4)xhEQ^;q-pwqvt{TnO`_=$xFP+yEJkE>B;Lge$>NyDC^pBZ8Z ndye!v51Ej8+j2-{qZP9+!5fkI|8D=*9zW~}k|);^CI7zxgJpN) literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Double Dragon (1989) (Activision) (PAL) [!].a26 b/test/roms/bankswitching/F6/Double Dragon (1989) (Activision) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..1d0afb0c4e98b9418ed11d1f8883ba2ec299fffc GIT binary patch literal 16384 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 ;++=>/75 mýÍÍí}= Íûs `cs:¼„6vn^>H¶ËµµJ66ÆÎ\=!lnvz|mÓ­­RllHvöèüœlìÜØpP0ppðpppp0<ÜÞ.~rlnv6xpþ’’’’’’’’’þ’’’’’’’’’þllllllllllllllllll`—”d’’aðøøìÞ^oo·÷{;]oç÷ûøüýÿÿÿÿÿÿÿüãÏ¿?ÿÿÿÿÿÿñäÎΰ¹;ÇïOÿÿÿÿÿÿÿø÷OŸø÷¯_ß¾¼€¿¿¿¿¿ßßO ¼¯Õêer9Ïφ†††Ïö¶6‰‰É‰‰‰†?}~~||¼Øæÿÿ£¼?ÿÿÿÿÿÿÿÿ?¿ßÏîåó÷ûûýþ?ŸÏïòùÿÿÿÿÿÿÿÿÿü{§ß/pßßÞ\ïïïÏÏßß–„yïoõzý^ÏÇÁ<=››99ÀÀؘÿÿlÈÈlþþþlŒˆ‹Ž6/?2hØØ88||TªTªT(GG((((2222ÖÖÖØÖØÖØÖ$$$'$$$û ÐØÔ´tÌøà€€À@€ÀÀààààððððððààøüüþþ~¾Ž¼¼xøðððà Àððøðx¼ÜÌüü\ ØØXÐØØÐØ0`ÀÀÀà` ` `ààóûÛƒƒûû‹›ó㥥¥¹¥¥¥9;wffffv~> @@@ „Ì´„„„„AAB|BB|„„„ü„H0BBB~B$(D‚‚‚‚þ@ þ~@@~@@~~@@|@@~xDBBBDxff<?ÿ€Ààðøüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ56789:;<%&'()*+,ÿ?ÿÿÿÿÿÿÿÿÿþüøðàÀ€ÒÓÔÕÖ×ØÙÂÃÄÅÆÇÈÉ +ƒÇïÿ?ÿ..,*(&$‰†‰†‰†‰†‰††üxè4ô”èxüÿ~JUUUJ~ÿïï÷÷ßßûûlŒˆ‹Ž6/?2hØØïï÷÷ßßûû61ÑqlôüL ªªªªþþªªªªªªªªªªªþþªªª(€ÿÿÿÿÿÿ~ÿÿÿÿÿÿÿ~PXÈ°úú~|6/:55:-% xxxüü  +Xx xXØ8 8Ø22222222GG((((22222222GG((((DDDDDDDDDDD&&&""×&&&222222×××××ש…­©Ü…®`©ð…¯©Ü…°`©…­©Ø…®`©0…¯©Ø…°`…¥À… ¹zÖ…¹žÖ…êêêêêêêêêêê¥Ø… ÈÊÐÝ…©… `…±­…±¯…¥“……꥔……꥕……꥖……ˆÊÐ׆ `©… …±­…¥Á…꥓……꥔……꥕……꥖……ˆÊÐÖ`3#óãÓ󣓃dTD4$ôäÔÄ´¤”„eUE5%õåÕŵ¥•…fVF6&öæÖƶ¦–†gWG7'÷ç×Ç·§—‡hXH8(øèØȸ¨˜ˆiYI9) ùéÙɹ©™‰jZJ:* +úêÚʺªšŠk[K;+ ûëÛË»«›‹l\L<, üìÜ̼¬œŒm]M=- ýíÝͽ­­öŸl­÷¿l­øßl­ùÿlððð­ùÿØx¢ÿš¢ÿ©•ÊÐû©…ƒ………  ù Zø©…„©…‡…ª©……………¢†©,–­‚)ð+­‚)ÐB¥‡ÉÐ +¥ I… ©?…‡¥ Ð ZøLið iø©……Lwð ~ø©……©…ƒ…§…Ä…Æ……©…„…ªL’𩅇Ƈ¥…)ª½³ù…½ºù…‚LÆÿ­„Ðû¥…)ª½Áù…½Èù…‚LÆÿ…©…©#–¥…)ª½Ïù…½Öù…‚LÆÿ­„ÐûæÏÐæÐæ†æªL)ð¥ƒÐ ù­‚)ÐL‘ò­‚)ÐL‘ò¥¤ðF¥¤É~Щ…Â¥¤ÉP©…Ó¥Âð+8¥œé…œ©…ÂLNñ¥¤ÉOЩ…©…Ó¥Â𠥜i…œ©…ÂL‘ò¦Ì¥œÝ•öÐ /õ¢¥Ë=ËöÐ:¢¥Ë=ËöÐ% ø0 ¢¥ËËö…Ë¥Öð ¥ÌÉð ÆÌL”ñ¥ÌÉ ðæ̦̥œÝ•öÐ Fõ Yõ©…Ù¥œÉÐ ñô¥ÍÉ +ðæÍ ñôLÂñ©…Í¥¨iÔ…¨°L‘ò¦Ì¥œÝ•öð¥¨iÔ…¨¥ÒÐ¥ÖðÆœæ™Lóñæœæ™©…È¥×ðE¦ÈµÉЦͼñö¦ÈµöˆÐû¦ÈµÉ$¦È©Œ•¥†E¦È•‘¦È¥=Óö…¥ØðU¥×I…×L‰òL‚ò¦ÈµÉЦͼñö¦ÈµÖˆÐû¦ÈµÉ°$¦È©•¥†E¦È•‘¦È¥=Óö…¥Øð¥×I…×L‰ò©…ØLò©…ØƜ札€ ø)ð.­€ ø) ð$­€ ø)@ð ­€ ø)€ðLÉòæ¥Ð©…LÓò¥†©……†¦È¥=ËöÐ;¥¢¦ÈݯöÐ2¦È¥Ëö…¦ÈµŠÝÁöð ¦Í½ö¼-ö ªø Ý÷¦È¥¡Ëö…¡¦Í½#÷¦È•¦È¥=ËöÐ'¦Í½æö)ЦͽFö¦È•Š…ŒLó¦È½·ö•Š…Œ©…Ló¦ÈµŠÝÁöð*¦È֦ȵð¦Í½_ö¦È•Š…ŒLó¦È¥¡=Óö…¡©¦È•L…ó©…£©…¤ ê÷©¦È•Š…Œ¥£ÐLÀóƤ¥¤Ð&¥§ðƧ¥§Ð©…Ÿ ñô 3ø© …Š©ÿ…©…©…£…˦ÆÐ ó÷½÷…½<÷…¦ÆðÆÆ¥ÃÉЦÄÐ ø½t÷…© …ÆÄ¥ÖЩLúó©-…‰…‹…ˆ¥šÉ¦Í½æö)€ð¥ŠÉ›Ð ¥ÖЩEL ô©]…‰¥§Ð. 3ø¥¤Ð'©…‰…‹…ˆ¥©Ð©…ª…†©…©¥ª)ÿЩ……©…ª ˆø¥Ÿð¥„Ð Cø¥ƒð©…„¥Ÿð „ÀLvô „À¥ÑÐ0¥ÍÉÐ*¥œÉ\Ð$©…υЩ…Ñ…Ò þ÷ø¥³e³…³¥²e²…²¥±e±…±Ø¥Ñð)春Ð)ð!©…Ò…Ñ ñô©'…˜¢¥Ë=Óö…ËæÍ©…ɤÀL×ô Ýø©…¢¦Í¥§ð½Ûö……½©ö…ÉL¦ð©…œ©…š©…Ì…©…×…©…`­€ ø)@Ð¥œÉÆœ­€ ø)€Ð¥œÉ„°æœ`­€)@Щ…Ö­€)€Ð©…Ö`© +…™ ø ¢¥Ë=Óö…Ë`¢¥Ë=ËöÐ2¢¥Ë=ËöÐ *øÐ$¢¥ËËö…Ë¥™ðÆ™L”õ *øð ¢¥Ë=Óö…Ë© +…™¦™½xö…š` ˆøL¦ð¥7©…¢……,LÚð¥ª)ÿЦͽÛö……©… ©…ª¢ ½èù•´ÊøLÚð¥ª)ÿÐ%©……… ø ó÷ Mø©…œ©…š©…ª¢ ½èù•´ÊøLÚð……,¥Úð©Ø…Š©…ÚLÚðPPPPPPPPPPPPPPPPPPPPP›››››››››››››››››››››››››####  "$$" "2DTdt„2ÿääääääääääØØØØØØØØØØ€@ ¿ßï÷ûýþ€€€€‡‡C!ÿ‡C!ÿ‡C! !"#$%&'()*+,*)('&%$#!  + ()*+,()*+,()*+,()*+,()*+,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿþýüûúùø÷öõôóòñðïîíìëêéèçæåäãâáàßÞÝÜÛÚÙØ×¥¨iÔ…¨`¥£Ð©…Æ© …`©9…Æ©…`©…………Æ`©…é*…Ä©ÿ…`©…………Ã`¥Ÿð¥=`¥<`¦Ÿð8****`­€ ø) `¥Ÿð© …˜LBø©'…˜`©’©…ž©…©……’…‘©…`©…¶…³©…²…±… `©…¶…³©…±…²…´…µ©… `¢©•±Êù`­‚)ð¥<0©…ƒ…„…Ñ©…… ~ø©…§ ù`¦±øe³…³˜e²…²¥±i…±Øä±ð榦ͥ¦Ý +÷Щ…¦¥§Éðæ§ þ÷`© +…À¹±)ª½Ýù¦À•´ÆÀÆÀ¹±JJJJª½Ýù¦À•´ÆÀˆÆÀÙ¢µ´ÉDÐ +©”•´èèà +ð` Cø©…Â…Ú…Ö…Ó…Ò©…Í©…Ñ…Ì…Ë…Ï…Ð…†…©………Ä…Æ………¢…£…¤…¦…¥…Ÿ…×…Ù ø ó÷©…Ô©…É©…Õ©…œ© +…™©…š©'…˜©…©ÿ…—©…‰©…ˆ©…«©Ö…¬©…­©Ü…®©ð…¯©Ü…°¢ ½èù•´Êø©…ƒ`œììììõððð°ðBÔ* êÐÐÐѰѱ¢¢DD¢õõõö°õDLT\dlt|„Œ””ÚœÚÚžÚŸÚ Ú¥‚)ðÉðð"¥‚)ÐÉÐð¥‚)°É°ð­öŸl­÷¿l­øßl­ùÿlððð \ No newline at end of file diff --git a/test/roms/bankswitching/F6/Midnight Magic (1984) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6/Midnight Magic (1984) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..2b2a74845036991258ca16c31086e2a033b6e2e8 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Midnight Magic (1984) (Atari).a26 b/test/roms/bankswitching/F6/Midnight Magic (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..e20291c041a9415edd1597ef3f8b6049d0c65854 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Rampage! (1989) (Activision) [!].a26 b/test/roms/bankswitching/F6/Rampage! (1989) (Activision) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..927dde5ed5a504edb11ceba5fb9945de0083e0c6 GIT binary patch literal 16384 zcmb_@3qVsx*6_{y!6Ok+f`D966s)FEQE^2fAS+-5%A;EAYFe$uWcvWLJT9Pu2;@I=LE5j|{lERb|386y@64Pz zb7tnuxpU5(Ya1klE50#%ifx#IT~9r-2QWfjXl!;ck^yE$#iw-1PTwGd6wnhmkc3nRH zV6ETVdslU*)NC?Q%;S%xW)}Ir zY@-NTttZRzWP=#MfD`O|>7YT17{ULHDAEl2ty28H-WCmPAtope-g&^xCXYj9bF+!2 z8Y{GH>Y*x3ua%HH2wc}eu(iQjZW&Q89VDd0bWI4M5s%e%ly&@glw#Z1L@4k;_zWZeH3X~c$d`Up)r$^6%UsKLtt`e?=*@s<+ll&jya6X@d7Jbsklyx;KJ0ftZvpH8b>21N|#Np91<0 zLPC}iUgRf)Z#`K9Opo#!O8$-T25x?feUQM(!^A`e8&%7%huiv|D)JN9FM z3n+-N;}Awn{DpY_e^{eFU-|)J8piiSAYTt`e}TxKW5)MmpzQ?O2a6+$i7;Sx6bHHn zC@?%YF_9cW`=xcDdVGZHDWF;hR4*f{XBny=0oCe}v1S$26CelVC>jt3EE`77BW{x; znEBGvm&qMSZp*YvZ-M5g~PST~$7H%hm;jV#3EJAw(e4Aw$=1C^3a8JGTp|(*+ws-x1!ld^bz;f zo+FnOAYsn5Y;=FcZ2e4(r@XkUr%fz;8q699Uo}PwK?9P| z2G2s;&#n<^44URPU{*?ro7<#($fpgOvNq>e#-gt)W z)H1RSW_c~O8YXH3)P|(*r4CBw*n=tjZEWa=(_t*SgW2>%h1r{0j9w4aA{zz;WE&u| zTA^Ho1BRJPO)(3gzCSP`0aDKMMl#E^Bj*)rYyF z^og#8`gN`+DmkiI#+cg~`1?j^;0>cKK$T;JgzUM|j@Sb5bw*pHdyM|Cvgg`S!4=fQ ztC%|GcEE5wC=b9J4*^nyUN?gD6+!~Jj=3EK^K6%>j))w7zIiL z5EGGZRizI?fqnqWx0rf_=(mVy<7l!TB|jfcUPsA)KzBJH18PgRGogs+a!QK`T1~c{ zvAQIc>@#JpYNE{+5c5+T(XQUR(U5oS>y6pjw`&6e0yr!VR^mM8kGVwfBi{KypK=9ZL{6k`~6w6x?XTo9C$94;z#!mR}IF-RZ9N=6E>>5IoMeq-%9 zsukO}LXHJQIs>p-Yv#7iJcDj$&Paxdg8snJ4{2KQK?HLV zU~C5b{Mc-q0S5cGnK%x52kY(*5AW_qWl|}QV;E$O0Go{nFbPCt6c^El;DV{q+bh`u(}Wuo2|+O>ZvZ%9M{_+g|LMM4w?=Q>toU8@*iavdBupL`JS;1t zxB^b%+6}L~GVizfzo9Ld0<_=yH{AS&_9*UeXpiRmP6+Y-T_%6C444Z4W*MORG2_G;XVZ@(c31a0Ci3SN2Z*6O1*HAm$EW3pb`@}P0k>%VmS zH%}vsgaId0_>2B?b@V?#4--7)@vPwl$Hk3X6e9dh`@bYdW$QQizn4Ej!sGqRxQr}| z^IKznQ8~Ymho{jQ{Z$Ky(tknvCGoqfG-gzr{ep;|erK8fUo<;Z0A_|2#=;4&Zd!im zY{#wY&9oYk`ZrK<-=o6x6%RZw^S43u-4eQnmOW>k_bF}K;}_Fb^MuCms2odpEPz*#HKJ%v|RnTPO8 zRW^b_WQ=>Tf>?w|ZRUfWB^|s2hSnGx4Q3vgS~d=t;yhi1Zc3}#(FYtl9sq}qe&EpY z5I9uhLsjMgAP;n*A7GJ15K~OP$kp)B(jsMDCU-?~%Ij?&!a|Tl+5Csq1`FC~a>|Jw zXLogkrQF10dIqeSanz4!U=9(LL87e3dAB-(9KqoroXH61`UpoO)wW3lQ2YGAv~|zc*=pz%Jj0Vs#u5*T!f&cilNe4glZdYva8IK9sky~D#z&_q8F zHnZ@}r|Rt`)IGZe%)(ClN!Y{RzJ8LtEtM3cu&l`1kiC7_?Ap0foQ^o-$QQxFwo(?aY#_^Fy=2HEF{CYztZVq+Uls>@0lJFJ&%wn8l~ zv^K*C_F<&kK>y$_r1)gH>j1T_u9SKU*rNHys7*w(+GZe1)zFHI1@%X8RvHzOD1o)$ z#)I>Wte>E!l$BbVflfTo2}89nLw6{t8JuNOwmDzdX5_UYV$dB#%-W1t38Ti;+&fEq zyK8AaS?UU?Wb01AQ2y9LKY(EjpeCKR+Dp)$`E=Q32Xx8Y z+GFZ^DMcQ0;q)x>s6q~|DM2}TT=ouj0c`DJI+Qq09)(mjaa3)$MzO4RlWfcNi^Oqr zv})&RkgTI%^-Elw%72n4sXvgF)Le!u1sLF9AOqF2`Q4bUL!Qq#n=#hTt7ko) zt@Cfi^#NrDhOpEx8>Tngu65k*?!Pzm@NUPNi)+x1@kGv!B?8~~-U}-&4fE0L-!PMI zi7DFIT;0?o!R9UfV2922;sIJv>Q0f-?7KnTP);r*(@w9ST@#AA{P6M2?!h?D&nCZo5#k&Lc%75g@l5y zz}rhC@fk+P-qZ30LXkKm*x%pF-`n5cTPBlncmlu?i-bY}pNFxy0x|3ueY`{h9*2bm zjO7OjFeu=10s{kOLBYWxp)5Wo8yCbM8^FQ1JfO!|65a?fAi-oY6)=I9P~e4rLiqpd zW&f-fBdur7R~N5bxq5Y^y!?2DJtwCy;znctiWM?hMh2y?tW=wDn6O%n2IdUISOVb0 z$D6+c7or(?1Oxn4Ce_i2s@1DA_wNVP{POb0UR+;&2v26{sM1)WYz+Rw2~>I4}ZzZVYovH}?(nxxX;> z(KPL582zs`n3M)OFbo>ZP4@u+HUo@o*1FwoolP~{1_mG>h&*Z)&=5(@Fhz}Klm=u> zS47j5wY8{7SF$Z@`r_E*A`^xV-kGd7g`B zmrR)+DHDdpZKDTec7x>j>P2BJ-5A#2KVHv0{A1?n6y-dvH;=8fkW>Nm!`kkdGf%j^v9i1B;=onQ z(*jpKm0oo818c>pv(+EfeNJJHGnljxI>zQ`g=D?Ab3Yky{ZjQyDrtX7j2f-JQ z0himx+qNhhIffS( zDV4{LviZkznelYj{?8R)XmKd|3oZ5pp24su9(z$+yl!S5=dqdNpIx;8L;(a#SKCyq8{1@-{Snka?J9~S3JDY|ym81nH%5Fmpp)0uT@crKOPk-_Cx3ECj<|Z*IT#;!mI7d*M$1-Twaj z_uB^F*)rcRz(>UM2^&9tyx1FL9jSgkR|GEtiEoGunY8B%&YS1{qDK4yw{)9(1n|Ia!A^&GwW(E4S75rLN5J)rj(_+RJ%%#-)$Q{nHw`$=8hl{EF* zsZ+=7+vl?JUItY(R4xm-b;8#-B&4KdU|_S6ek9Qz4?Q?IIMSwPXz*cg=bD8J7EJKr zaNy18KXuJ==h>pAmNh@@n|7R9YVnGX@PXy{cw8Q;((?8B=V4iUdj5H(G!Csu_=A28 ze)hqIMnV6eXJ}D>S~a3jnDvbt6tim#$Uar6WVU!2d-7L-5`2MH{SC#agY2by7iLZquT@W z2XyNse?+$~b1pvgrKuSIOQ zYx+tPSkqUVh+fC_Tf{xb&$oykOPizjh7}HQ+qHbHz|xLveuB+d{b1-<^%8AW_sXk! ztYjMzqJu+WBDk)d`UVV3HsC=@J?b*iiF7_{leg_#q65tIZgX!D3CC;9DezBGc~&!4 zJ3-HHtzDpJwL0cC5eJ?38i+$+Qyp~4>9}&|i%mp3{@gX96J5H{#R3;Pf+$0`34|5h z0*P{TlM=_#O+=hPH#SiTQv?&nt?EQ0nL4Ju=oD7fm6{67cY-+pws2dOg(*r+<+T+# zuqulfvdT~vq%UGsWyorP8L`7X2%w6mCn)d5xE_5M| zqDG>lruVv|`?{6v&_WKHArOh{c+Z!x227ZZJ3Pxa4?gpnrK+r@zTUnI7k_Pa{CI<~ z)O>eC*Mak{;Sawa{WA-|&aE?CFccWW+63o542) z@ed<@Io-rxd*&EaV1(!%_7oBKiMwjD*a|L%wZDNZe2WSbXIPih^)s?H6 zc4mP;sgUM0LsAz-(*jZ#b6ZO2$W}^b#*A<}u4_Z2U@;sQKaZfg4OyT+S08^8OVXI9$AP-P?sl#i!T2PP}ItE;v-_`u<+m{$ros?CSb!*~M?#y7J#Y z|8-Z_juQKomM%F1iOXNilgk%nu77KcP?Qo&|cmX`NySz3DhP{2nvwM5rN|3sL5eLU0wC%C(EyVDO;YHoRX+qk}hAWR4JD!SEi@S7bj(Brl&xOD(T52 zl`?IyJR>DLJ1Ze4b4hZ7Qk9*uEIl(xo}o}F7tfqEJ6f5Rv|O3FRK84^maNRqR;I}l z(zCMD;igPmlAbAlA}1*!DN(*GJuN#kNvV>j1I}`#JUcxTa?+t%;?k5f<#PFw%%r5W z_ypxs@?|Ni<;t9;Nl9{*GCnagJu53oo|U~iLz$zJFV0crWGBlLQnHpQGZUA}6LYe% zlQJQ#Ql+FV$%3|15OzlTQs7ITl>{8AfZ6oSY^Eou|5?h!Oy#m9X#9_vNm*&>a_AZG zx>TN}Op9Nfk_3aHQf9?JnY2WiCC^AsPfAN!Ay>|sJ1=H_CUgcyDHB=)q@09=bYNkz zQU&<(Gs4)lQYwEmL#RkjF=LsN>Zj}ElURmljPaTWf{tmE-II$K+UJ1h7uZn zQkj;fOoqu&W~yL-lH{36RZ_~5WO-&vVloWf;^Cqs)WXuV^c7D62TAh8sA-QW!ERil zRHE)>!>HzDB`U$x&Vmju%ScYilBX%Nl83QX={YG`%;O3eD#U7HN*es7DYH|i&yXwA zlo{!BvS6SYM7ip57`gaN=wWt_DoZI}4xFSw6ELt@%B-jVl>OA=q^$U5=_zSRS?SA^ z$x1oQKw`QI&3}$+F-*$hq_ijDmYAIMR8kt64G^Aqm2xTcE(wMm4R>lf%+?xpIEYG; zDk&>DJuO`YGYnFZlL8ziCZ}gAmn6y4(w8O4|ENr1<_Qh;vZUqd>5JvcoJ>HFXF%uE z<6%hT*o4@Xn-8A;idj9dY~Cw;WY9+-lRp=h8m8CNdbM7oS8FtGy<4w`fB4byxRlno zHFRz~02FCxwZ2lLjyK_WE)M^wn%-1v(pOSYN8bl|8Tt9vZ}Q;*&#lx0P54I_L{6&K zq*5b98J08hChH-_fK2~L7PkYM(c2(Lt5jeJFTwHgiBSAG-xyi-!Pq|820 z_*3BzlM!ngbip(WO^%5R)4iM@83{(sPIrxL_|bTEh2S}E5l1tQeI1W!>=;a&rc{62AJV!`L!Fn zcJKG|_j5e)M8nhj-i(+s`Aw4sARg7hI)%PMNd&o&4EiBpofbT6m?nPW#EIc=ZrHzl z{{|ROymsOH^Cvnt=noXG&CrMJUv+o;KeykNN;4{@zf^nXz`??G%((5__s@O*3=CL) zINcnwzjcKmAzTc&J07CD6^on+Cv!kvZdFdhP?F4nVnazM|4)7J_Q90INn zO$-mu+$FP+7Fqb2a&tHtF+akwCo?m1f7HyXsE8%(gg+*y9e`$>B@9wEoqu8xndg&|5!eIxbttC7BuS0`84$;oRAwS{Z3@Z~u<5!efWq{cA>(|F_lgVOa+tjiAt+DI9*T;Hq zd+DW@w(_^Cx5cjCs$L`m`xlUYwai+HZ+IP(zeV904!ql1b;!?7ndS+wpmL2)~ z4qI#=p8NRoudLn06=yEg)?TVgsK0vc#-_YI``+4daOcqvhR44T8^iS(KRIgNEct@4 zrEx1n+3Ix}f7r2Mn`r(J(*7j+SN6%jbZ^+E$tDgA}?Ej{3;0K#mI9azk%r9ayu2r+3RyiovdxfOP-%~AQZz{H2cRaU;X(|N=Ld-TW5bIE1}+k6mq z=tA-Y?2Ap5cR>``k7$F->n_)IL%m$Qy1UxfqwO)F-7px&X@kUFbDplFweBvMu3}^< z=|p9Bov9uo7=%H!FC+ZW{EEHwnzd2-G|`lvYpxP^QcAS%!P@A z^gNp{(Prs#WDio@<~GU)9v}=^j|&G>FL&YW!JE$yQ9Rt|A;rg6_u#z`fgak$8|$SG zvJ1kalgJ`C;>Gtrpcgofdx$m%d~wkMc|uC;ID^uEgEUy|?IuoDTSNz#C5OOfIRqHs zB7k^lMC`U2IHQ?Nnka(jUgD4%Vz!^f$9LgL-OyWlIeCm0H6Me6;$?VzH`zk@qF@GM zmkGnicWVpOaK0UFV!?9(J)PWjsetZQle^B`X?4yTq(fv|c3}!JgwS%~1e*m1?VO@r zSo1Mt$D&i}V`}?JS`2oVnC99`q;2*)QM7_h{RlC_Q4%+c7Qh2CuB{HQL8~KpP|9&k z8Z_L2$ZAw&4hjg^)m;x`Ma_U%fOx&c<}uuX(GP=T{S4Fu>$JIcu^yT=+^J>L+*&Od zXc(N)BckO{oh*R3>My$Mk+53r<{Q%n^}HK%2leA1exO9U`F;s=IuEpYm0zmPc3YZ_ zQV9(3cxd074#0Ompt9l7hxTzvD4uP|Py!vIl<2tM%NW&bmClXYWTk@Pc-;f1**q6V zFG5CJ9yNgu16E56cTflm&KWR@gjNObdI`)l@MqCBqe%#bj?q43lkAwX+@!5ABuMNRUbMt5+e(i3nn?>EV(2xgonY_l)yw^wZ zZvQIp5nk_T-Wx;ZAY{6NM^q*E7^>=FmYsuQ*%s#@L0i>CM~a8&bc^VzZZSQ*fSOg- zSup<$R&)j{m~Y35>~K4c6`h9Lhgi{vm>F}N!Xi4s&7+0~UI+8=Ar{dA(vAwiO>+u! zoF2}Ae3bDa=CBWEKt9Sijn1Q(Dv*yd>`X={G^z$?$&hOCUAVDuxbbWfl;YWFloH$A zC?&Rq!3`ES{iTaVUvshPTP_aW3Jy3A6DTA^t5W0WG#iQ%3(lMxrPxGPY)vc`% z({FWN1?5!nH3S@iv*;S=sHzU4s|tK|NLOh)EZtRYFwY+{jS*>mMEL~IjB`!jy@eqCo-Cv-iC3b1RSW!`-a ztSqusp|FVz7PV^(l>zH(61bdS7=oaa0@~L$=8}c-yF`L^+YTNY57A=7iTviB$h9;2 z!3r$Ry~Cfj*a8g}+gd{j!~nerYg5JRcLf5W@|#J6@W$I7GYBhoyNRokJd7D!GiWdw z%xX{;FbYz75~YIq6M$AQgFYDRA}Ytg^hiLI__*|e>gitm`##W$5D7$&zkX5;t|5OH zi}JR80*WH|A;rPJdZ>D?@BT@o>Qoc@Oc>Hdl*rgnLOo^JOXrw4jHZBGDV=QcsM>lN zm-$KRGz3lsK+n4EdlcTdrJwS0R1O;UXuI*^2Ucy{={+#jmNpn^if8g@yDvLl9W?BX zx$R4InOHy~hz@MnOZ(erDJ1qg)CO=)wwZYN=6+L{F`|{4X1_x}4@)5mmO?nN9$eN5 zoSmfnfM?nVI>B$)Tgf(YjWGNw_5;qA_sx1{m`{>WVga%wU^!a+aQGq z;8P#bfNFHa{gO*vRKRKLWfYuro|zK+UPB3tpuNms#d-b6)2D{l1wsFeSNBuR_>=u6 zPhr`8GqfR~d4<;da5nwa1FErl$)GcJ(2UV?z-H4TZm??mPaoDf4{w?VXu04eXAK7@D&t7EC;yx)+611?pIj+Oca`?$OqViiBp;_2KqCydt8=UKS-pcM@I_ zRBpQGD|TYl-fAM9;zDH3#^5W z4ZOQ;VvuQ*SE0owHQd3^c0&umxEE-06HD8MPk&g~2A_Hm?UpuDF(3AQOUR>iqC)AK zpy!h9^n5hl(GXG>2MT&R>H#d#qfj7(0@wn=2H;qff|fvz8tJfh1xMxcka@fB1h9{^p!b#Y)@o$qR; zL(2+izNO`I&7wi_7ErtS@(?Ym*v@_dKDTQdfQ>o3a#}O`Hh40TU)JL0(xJ^QZZx+lntvjHa^+BL-B0iVZVNgC zQGCPLFTgGh`{vfD+)Eu44}9=ZxvpG_4=Wpmg?1Qu9fn;nm%5!VRF>&ZH1EWZ4rp6o zd*seeL+!s(0tumUG2<}FEEy?&DiS{?qO-~={@ z!{zcGaxfN~%M*yad?Zr8fU)Bsrfz(2=!7tQqA+~Y&o1vJ)o0&Z)9-Qb|@$nhi8FQj%&zTcHXU^=TBt;T8D=R)aJ9}ngMn-mY zRw8F{cE%HvqqCCYp^73&F)KbhBT12vk(eEw5kH3)pOui1#ZzQuJ&_du1bAx|i5c14 zj6_~^e8$XdAjHkco|Q0pPW&wH6VbectR%%8E)aPldrm@zB8!b>UA&vuH@IdfZcTsO zK>wP7IFVm)uqST;gtGv|EsTww9toi?uWn$R6A;b-Fa)7?;LYecaKLXnrtx?NF9RS+ zh>bW|_Eu3jBz8oJoq|Dd;YDD2+Dyur@nXR6M4E?lau{}1ec I&o}VV>2ahBQN)%#FJEMjAimg?wNVK)1wM^;bcB+oIUFIDTGq9!Geu{LOb(MHPnak42s{F+i|P_G zLS}aE>|C_1JgYpbKe0bCOPQqv6%>}w5@(5})oMggOXql+ariLHa~ zpo5uUCd3iqnA|wIvGaWAd7(q-(9jy14g*HfQM;peM|Wm-W*2uBcg8AXm3@{z3mrj6 zFl9^`Ee1XaQ~+Zq?63GszR7z4d)G$ z&?KZM&=dUnkJ3l!FM%x31uO=h05Ww<9r}dd)(_|pXzbe&_A*L_0^ZkrUo)))LYqab zh((>)1-#zf>~6-zxLkW(dr_9}1DDc8-$&nfzVLh@bgeL($!4%W?&v1b1odHi(3U#j z`{aGnoZXyl4Y!8#%7^vu$MnZ{`xkUi%%7N#W9=UUIvR-ffe$eM0dzBN2XPQq2*Usa zt2(SYjPgt+Q|W93HaVLJLl|YYGW!$y6S@|NeJ$82*ol5n32X#50c(ILdkM(54azhz zO$_>N7C_i6Yz9|T*}LprXty!S80C1~@j4w$2fL&$DVi1J3UbjBTEg1{{!`2qbNR*j z#n=S(e)WFlDs#2CtGLTTTWGG4Yh=%`XZZG^Kgwx&R&-W$KAlfb&!3)8Po^hlMFACA z3WLpHBRM2T)vxL|UN&BKECU8Pg6M7Zwk%tg&0KCS&uh$UB-tdphv{L^mPlKq?Sk%t z?q~LA)}Ce0Dlirp_s8y!711IZmJZrF-8vo18V?x{5sFaU1a3mCELO&t8M8;>QIvX0 zJz}7gkuvBD#$Co;yWG3n^bPt3C*njQbO_yMZZp%}boZs$OR-9W(!dlkMV=f_4%5c8 zu`*Vs605|ll2w*^OTDpm02Msay)@jmn@hOe>jILbucHO91Ls>Qzb;uu0iu zuo|pav#(~eVpfdp&9&xQuez?f=uWy5{n_rddnJ^FO5B&YuYeQ~<|1>Ejc4QIF2!AX z#PW!R)v-F_As!V_><~MmJW(EvL*oc%!kPDS-pg_9bL?Y7*-*NiF1Oe%_U-2F<~hxC znw!nd=Bz7OSC}rQ3vDW?E2+aY41p-mo@cMktIbmaR0xGiv6J1&w(Ht;!6$=HqCFQ? z7gcBGoSAd_i_>3BVWu!Kt{9h2tP`_ZR*QZzr)5q{i@C+@y6n14Si-h*?c7RsB`XK! znsd#Zf>W?+R!ww7C$tDHZkHPbFB7zrUC1s(r@(&4xzfpYviLh?p)58rP->HM;Xoy) zG`r1iTaYaX>xghgxNzJqIxad;7vCOeJI)htxHsHJZ2TN{{l)bcWr?z6D*#?S*=U;& zIF231R-3EM#7*3m7E23f;VjG*<_a+o1L`u#Ofqa6>a#Rj8b3??EU`h@Ak03QeKN(K zVqeLv7l6*=0 zWq%+)+{%Zt-;i(alwE3GYBt-=_I6LZM+9lhB(xR_BkRP5oU+k5mymc(QocIlX6mSIb}I@M-K@3^;Cpagkf8;eb}Z|9jiKq z_bp#Xv!$7@Lv7&gIz>(q%lDS=9U_Ma```VT`>`wTD{h*jx%TSzYGsA8qWEI*#db%# znDA-@H-(BP`!udvuND*WcKEI%#VBwgBV^)5=@?)|G7(pW7kIcF_ z>tePw+ZuE{==eo)5xbhWBis>a6BH>Z1RMbH&!PiGn6?yH3Jw4W0|7jl{A6+*0Mow!%$w!O%agTItyH7XD5i~_HgaFe@#CAMEr?FO`;~41e1pW8m&gF2h2^Lo18W?ZKgkO#-tgOHm%>Z z9`k&F*6P-3d@6~OSBvWhB$c=p<{@U~%|Zwfqk)u=LZC38cl(3Sgbx)_k^2Fdjmr?P z^!CSXQ6YXsdB5yv0LuDtRd|&b1yw4PL)=>y^RC{;9etnx(_;|a7|z%2>z1iyYAS|` z(aqP*2X}P868B2n3*-e7EshqaZ%f}+<}1VI`^5K)?~l>N=ya5h8XGq@E{=+$ewX;W z#57f!Y9YY4*td9d>gH6HTBXK1?uCD>u+O!?u$RJKO3)|#>R93W`N!lxCMRu4+M=1N znYv|Y%g~C{6{%Sy>t3~lsEPW`xo^%@0MKuwdZ|7g@JqqFIsUQc$3JOq5{@-gc~@Xq zDoh!soTi_KqWZbRWFKGo_{t5lH_W~_e}r!7Tq){q-PXEon94iJ5xR%Tj?g_UKRPrz z^iJVniImioR4pJ1h<%#|(68069VRj&Ieqr@*^}o@p0}ZTLv?RTZwmf6UNK&wRcdcJ z`EBW7MX*9UK|5hY;bC7=m!~erdQs-lHy?fTwY1mLU^s?J+)dsY{~7uj`c3*xFQvVd zma0qr^-hOktGBG)vM6d%)c>VD{|=a%Fg0QJlG#hJzx{e&1^iI=L*1#;Q>7dA8}*x{ zo22pTcy-kBsO2vezEoH^t#I1&e|r8;ty@~R+_iLM>Nl%@vpQo@#-a(*2~tUdBq1R_ zA%3L9-EYIk0bEg=0Koe0N{meT`%k(|x-40gEYgqFkChSGNTFfh{JwRs{IBH)0q*UW z^w#uNR2Qd;$R^HKUJ{RHKN5k4`zOv=`jtvLK|&3$X`7T*?MdVG5P zKhv#Vr(QQ#GgqUCR76VEQnh}(e*FK`H~uvM$A9CNjazCuYdTZ8RBm|v_ojV`zQppI zm-dX{>&-PP`Lcepz^H|M7N=st`i zzpwbdg8GR12;+$_oL@L?Dx1o~dRT|mVPz$(#1?7`rFy8IXDgqrv>vn`bUK_4Q=%!6 zxxicymI_NTuEsqq>K~{Xs1a9+E1fo{?WFUh(`K@nD#|O$`SS|_Ex-Xfikg!}(B(F~^!?1+0M8Np(_;^)MbndyC9P zX4Khj>NZufl`O_9bP*6@j$Bi&NyDNnN6k=s)WXNV>^VAG{!~- zv%y@_R?>Dc_G0X)x>0ppC{V&lJQ1D<Bw3Zpl3@pPk6i0D|xMtX0-i^{47>Gi@`EI*vLDnLJ$FbQZ*$v_bF|G@yM@*0KXE6}Z9p#R4HiM{|$n!VzAF6KHR@x5sK@wRqMU2^?b>W2in}eY~!wuBHl6UseC|(wCRM zrh847*^t@b1@r=DR?Mux7_tFCd<0(yz7Jmf;Kf{duH5vp>E+t*YQMYOeYyMjjn8jP zUXr|I$%Z8x9vSn<7^Om~5D^i%ka;0<_9wGHS!iBpmV`(`&Mi2%plw^*wjtk;FO{T{ zuWG)kNt=^4r`OlZ>xS&1zkT<&?;PJczP;LawXgqr|MmLh`eb~+>{zs8(R+X*ZIO2G z>b!nhKGi#L)D@nQ4q?=06`>(NQ0%puw@LB21$c3mKrA= zCzS+Af+7LqqQ*sO1R8;Qta|L2h%pi3AaRf^SccUHhXQ0$nG{4NQXuvreh<0Lrtqfl zn39;1+Wgx5mjI=QOAo&QINf@>b*Xx(`Wf~aw!%itGD#+m zAO9{z{jk^O(~ytw=lh?sELqmTZFq^7s8Us_yk zfd+P+?K+EUIWOn+*NZ-jZTHuGO9SWtOwmozRWwxa=}={;a?j{Jqw!qt_q%?-t8{0=zhO=>rxIckVj@OIj1B=v08)`ugg!!~(3Jr6MF<6^#ihihfSIWJ78(fDe7A0Y zcDVz%pnL%gqbvl-=RZT9`NQ*ncplric-i7*e%XW-2`hZ3eW&dJ%=@Y1r;a*6=hn`x zUq1ci)3^`H=*Z~s)%)rvO_?-Brj=>A0dC-(?02%?-SqCJ(A3aW&r;9QU~#Zm3PgLS zPnkYtrgWwhw)I+Ui@z?6*Pb9xkfZja_N>&bRE$UaNFPbM4LlbZ4!uARoiGwgxl%3$ z2nE7BzYQ;gsvZD@Bi4kkNlZ#iN-9b!I z_hjz*yYKJ(ezeYA=RRJ0ycU+bI()io+%*D~Ky^xTN|N?)+QSPTTkzP_SyN}NcyYyx zOP4KOR(PoJP-RVJO=C-Ai>umI4M)dB7$gjOmApzUpIbhE_2E|^{&DY*d*ScL^Eu~p za?a(P!&n>7M|}by0vEO03){fCfpeIpN>C->6OpV>)@!@8UFfqIt6~gU_;lgZ(^pSl z{mtobPG9f7-t9Z!JJ9Xz_U10hUGlT-XWPx|H?MDBzJ2+?;J~2Xr|0$HJi~0t5iw3wDy7yMTD6co0CAkR@+D_107P8y-3$FpcvSpT>S; zf6tblEtrpO&9r7(Q4Ysd9xe}m!1sU;+#o3-Jt3W+*D&9Wy~f@rL{ErzY~HcCL{*~N zv0%r7`xoB7aQn&aCwouyp1`u`E0Ix=QQ_CZuc2gqX3dHaDZp8H+=M5f_q2G@pqsW>| zYc5SA)3AvI*P#(>0_5prIvLu7z;(~7@~Q@U2YSswT)S|M!m_yD%ukq~aG?J{KYnji zHL7~Wz2cJelJwlQxoa1cEhv*5mK?_Z#C4{Z>l%7 z2XJ=i>`*3^Nuhm+vLj_j@R=e@k@?R~h6F>r|7S=uq~MkW?eVI;>fXNIKBZ6T+qGxc zp8BNvq|=S38+~VeXA|TJa{t)j+Q9b{z8mIy=c7yW>jdQE*h!~Lr{i}VbNrrx&}L{A za)o@6ZxIZ>Pl+*oZ%=Q}S^Zf($_)$+4B=dZzho?f?_;#NuZsZk5P1mhXH;;|c5LUdosVWdnn@Z-V=NH$AR4#^PA-v4 zz+~_Iiuo1)(lr2V9^!^L=#tx;B%cqv^wPCUyuV|c{@-f=%>UObU$5MDV%rIPuizTH z$Fs+?eqjB;Q0Y+VnGer=7!AO&;4-;PzLBtK3<9t|1Z)fXljkMRn-Df34EySV{~x&jAAYw# z;(r7J_y2+W|G@o!;Ql{w{~x&jhYKsbw?YK&{{#2`f&2f!{eR&8KXCsaxc|qS^uYc9 JzvBM?zX9Iz<`)0} literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..f25030fce287ee43db75abbf238cfd55c644e6e3 GIT binary patch literal 16384 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 iBw=^+cfZn|EBZV0aTig+jdc3%3gS^QrKmh?&h literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari).a26 b/test/roms/bankswitching/F6/RealSports Boxing (1987) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..d51abf023a5a3a0498aed5a434b6157556031ba4 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Sentinel (1990) (Atari).a26 b/test/roms/bankswitching/F6/Sentinel (1990) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..b0647c5b53120c1645283ad262bdc3f811d7b70b GIT binary patch literal 16384 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 H_y2zalQ1=x literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Solaris (1986) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6/Solaris (1986) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..57d3132d9e738b06cd6ac1780f52aab850c7d90e GIT binary patch literal 16384 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 QjQ92TJNxbbTE3S5KR^2eR{#J2 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Solaris (1986) (Atari).a26 b/test/roms/bankswitching/F6/Solaris (1986) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..0ed3d8d3d8cc113648742e17407ac148136de739 GIT binary patch literal 16384 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�X~y_Q&i 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Summer Games (1987) (Epyx).a26 b/test/roms/bankswitching/F6/Summer Games (1987) (Epyx).a26 new file mode 100644 index 0000000000000000000000000000000000000000..3e0946eda82cfdcc0394087509f91c48da5852f3 GIT binary patch literal 16384 zcmeHue|%HNmG9NnZ~2EVw!s1$EQlf4B*ob#jgyk#rjUYHZ%ekXyPNkbYPSUFrl}tZ z32kYRK_grTunZR1;1EUl3SAo;34D!ZTebp0v0Rc|AP^G*acD5c>83Y?fCI*U-?_5+ zk?iNa?LY7H+0SQZq6RDy@}Uy=hic74If~ALFff(jR2K zu0DgrdV4;tlMMW>JepqV)H(I8JzgC{SpS}ZKBM%$m$jx=S@&(VEUk+h-D*>wfz;)C z3Yr4K7E&2C$foeYnuTuSwmsqI-ST!c?Dy;w5n+)L> zRFgp7Pc2K)|Cxb>0af9 zlWF1Bym<>jZTB)hR($pJ4#xesWE9Iz*D&sf9V(NUr*z>3>E4L#h~-U5i$$GQSygIq}1NT`MwBh58LNA!fH(W{@-;I_E-J44m= zP&+Tc7`eKTe}61cpey4(>EYh;LK~e%Yi1P&$j7(KTCX13?$Zm5t~y`0JzuviKdxHk zpsN38@Il+xy8`8&13lbzpH6g~EDfeMmwHO89Ab0x0ndS|<{s`+EFk^K$GECp+g;l* zi2|ZSo<`c651{XLfyvvLnr+NLAJkiP9BG%&#{%3rK}FhyDpG0lZxPscoNVw0?Eq+1 zUIrXCI@!f$=^9Z%{EZHF@n{|=tIMRcMA|B=yCoeYwof+k`}+6gnPt|?R9o!c(eCOz zJr#NGX8Fp(&1AD~OCnZlw~#H$7$@HvS>H;D^`SAys660Hio9K8EC3hA9`1_MXm`oW z+m;tzViyJ3Q>g6UPo0iH@g)md=k-G;5`jVw9-W|>_ zoL@S>a$a+O?Y!YlcTPv8`MHikA)RQ5mdqrxND@gN930Gb5ROcsrGkzO*A0hcq_aYo zNp|Q8?pMjp&`^EodfiQDwkwNdldRYz&(vmd9=u&ZC64u4=6<7dt z{ktT#|Ml2woJP=+*L)g*>mlsS3VBw5e=V*Z6027*o@%iM*BYq2&Yg<1+EZh4YpWMx z7WN8;9_byWy5yP3d5!{ou4jqb;#L*@a-kO#Wca#rEl8K+Kz7H zJ@t8N;-Sls`UtRsSpj)MF~8NQ#+*M(wzv&g#5Bqx_Aiy?<8`4Y!d6o0bGT|;I|UEf zL29uYpkl#7*8~)cHFU9&%t8?cFuD*$zGU0Ns<=wh2#oxhWd&Q0EMa{{<;HL6gHR|5 zmNh`2o;zK&d<~KL9r0251M-E}JfxFneZlWsx|8hWYnRrN+A{86dkYLcDnYBvV&YNM zz3An-i8XSASLeE!;DQW`5L$iY%8nYD@ekAc=Zyd6Kp6t}A*l6oMqDq=;;)kH{1q}J z^pY#&s`Ths{wjZ&ToL*K|Cn5sa^o6#Qd}i#fF%QC2qjmMzAl+4gj^;=jj{290=wcm*@bBo@9hZ!M_|uR=e=FV&DQcyHc(`O!dGu9r)T zav0mi=Agbh_YIB()#P07k_mun1haGtIK?T0D5{l-*Jk(dZ{)2Fgk<^e>ht>KqVAAf zk2U}!Z}99LEfN^5O28&R9@okf1?bFoT+fBucviQJ-D5MrF~>FnF2)VA}W$o ziJU8Q<|R2~BALWj8u4UBgY}r{tZQO99RSxP5WP)_mRwb_8UtsY&oBdpTG=vrpok3Ub`ZG*V4W-6Ye@YRg-(QCM`VKzVW%rll}GS-^u z9}pMw!Y`NO{vuQU8l~LK{13*y{be%B-0`a;%G5_`ZVlt?&g`DjJ@u8TznzNwKQVU3+4TFd)cW#e3QpMzDZfi+ zn6B+dw*RpDZ>vvKud05e=3i>&)cmOCXEpy=^ONe&s{ebns%CP{KUe?0`u=KC{qFSk ztJMdK7i_EAR_XD0s;Vk2snfn=pOhH?A_v22bUF=7Zw6CxYO=|I+~{8s*2HMQRr%>& zL1MT7p`>6W8eOA{tyvS((VI@E8&ME-!_nvnkcXqOHNdkZ$0!{CHNybnwiq6|rd zVbnqcZuAGbb11`&21=+jRsf1#VzP*^xGyO1$h=FM9(&%zk8 zAAjYQdD#rdafOA2=(t4*^X9$s%ILgrX~rsXL2qyGDp730wSRMeZ|{Z$yBE~>a&L%N9I+tXEvtff}A?a2X4p zWgSh+M2|xhmp$FY)H`aQfBu*UWlhWM3sA!X@i)D_;^t+b6YCu)_|2-Or|rwcRUXf> zrso%UmWjRpnx3qCtasV&V?DjS%tbT00$LxO}E9rbHY6iG=dsUI+ zk(#|sQbV*u_i{40NB*cllJ-3n9MCvI09xq-;ln{;qP%iX74y`Jh7q`MZ#! zE0CMY=#a(Y1}sUyp~YNAYcD0KT8Es|Q$ z&ffS`DHWA)k^v8gn}UVhXx`g-PnSZUgihSEKD84pWFBH@LY-C@A+&8wY(`OI*Iyh)!_VeL9wUi~OhAfG_`3i>A_Qq9i z1CVw?)V21ZLVo8Z72UUAqGkL}ZLQ1(^>ESbEOXY{30ru{931v=f$-Pu9xEOv`QB+| z(#0c7G7IK(9YIb)~)%fMOw~MoKV_ix^h2&p@UoIC0W@z6*s; z{K>R2=rqa->~PTkIihq$ZCesVy?>5a!(F5q8Gb9L_iC8_x_&;9`wAtG-He>Q8Id0Y zo5E<#4r)VP#5_?EpP(Uigcmkof4?M%NyDYvRyFfG7mtz}z7_@+yLc_xf#}zDG*zsJZe|J^Pdz*;Euz2hk})6<7&fsE&tB+ac2E<~48CYR+9jun{`j=u-1ubo z9EED8oCaA@ty32#)oXRocOnNk|9Z*|2#2u^i#2{bvK-rwqw zlEfCv3bpmKW*~|!g_lg$?KElK(rkUF89tn7JSypUpAmhte%&n3;42>M$Dr`OsRLca zSH4&k;C+t_bYbLtQ~LqAT4$%UUpMnD+Jn-Uyf04|*GZp26b1e0G;Kl^2u|@bV3U#4 z;#1|+c(!bcPmqoAG@0pZ zl=uap1h7u4k>f-0?WlA+)*L$@BK!IM^2FHwF}ipv{9o&=pB}W?L_3D;LdfHfcf03U zR#bcZ&_xnLMe6#EerrLNz`AZ)nwTzW{f&|0F473Va!JHOW|i}W2dnx|I5bG7Q2=5zm5JArtMUkUE7&C@Q9R05jkkTo;%xJK~&tZ(Iwv zD%=KW5nfR=QY3$$?}}@rhx+TVo9?2I6MHj}cU86Z*9U3m@O+7Df)YAbMA|X_frZV^<~&*caka@k$>h!o@Lk2l3nO`| zdI0V*xgQDIl@|UdG#D+xX$oCu}|a{>#W2Xm+akd%kA=qOJC>2>x+GS<*Rr%LPfxm_XxWq{ z%L=M0{b6feh^P7=*9KWQs#^Fie+1=uED4q8skEVhWd#O0@^J?VR2LUV2D^f6aWM&b zwf?R?R@UWF%}H`L@S$QzbR@`PQnuR{Q8x(0qFGKV?aS>4BDXgIqmBZ{Y9$shOo>A- zmDkJbOV*c^mXykBrmysNlwS|NE^qCtWY&+xQf9rw!Q4epsW-?j**W0sD~+mE(bDMp z==wfXSh(J@zF@r_Ifu*PD%uE7LN!wh@5P<;lzPay+BxL>w6ssH8ZI3!{d9eDB5u&^ z(syXQOcW7Rx8q&>50wtBA6mb9-E-^u!M&reR0g27T{D^-OLowx!C&W4|J(Eh4n+bW zlF|PX+IiGc)>kXz{89qXf{ZZEU(F#VL z3g1cvjgC#xjeQ&Kwb9mS$nk~aPt2c~FCE|Hf3;%>u@w>Qs+mGZB3c~dvG7(83LG3t znRO4W`;8JGVAP}QM;*gs>a?2DGe57MUcrX#>9y)ifp-=?1j$}XnMu`jwW zx~Ff0Oop7p8`n4<1Vuu7GGk!OH=M6H-*u?V)x|VnuC$`BUc_(Ip>vp(sLx?^IZP^Q zqjg+&TrNFddVc+(^@ldNHaIGv1+|!Q)u@Bk(uWvL)N}{^v>b*~KkoRgW2NJK>7n)O zHn5x7THQBVyqkkN=)r>mSn1jmAkRco|5y}@WoN=`{Na}&~3851X^SSC-&VzRjx zA2gf28nK0h@M$72gPGbON4bc%}|T9JbA`p?Z8&GtIH9DbVF4-nm%^1;O_dt$RicSLI2h68p3 z$7&dj#$ZfIH6nFI~(ps$)EY$dKmrj+i|**?l^Y-_?hD$Bc4At`}pqT{$r724aZuJS&qMR?8#%cj$_u- z$D02X-g(B>c^aGMSFx9qi~v-h@pN8o6OsTHw4Mf~+Y>w;g4Oc@(jVKUL%c8kWY8!~ zf=qq^Wm2#-$QV4G(+Fm$8Q%Zt1WYZrP55?_Ly4V&sN-0<06H=81 zqBj3ARQ`y>WKL~T2c(@nB?)~NEFwKI}WZtE)Iluok_?;JexP)b58+pOAsvffBX##tHF#7%FqcMi|iz@rT_r(S2($ z$IIF>-p}PB41f(9Q@b8yAmy8pTF((ITq~fBL}+h791m!lc|&T$-0z!WNcQ zFD_a-KnALpUIdQ#;nD%mhhoFhi}CgDX<{R%ww*fx+}S0wV5zqWOE6+8FYEb}E$4k~ z=%+O|a;R#F5i)^1Y@Z(EPvOPkDG;4(aI>BUSdfjfsym!@k_?2iPg<-ePkUng0KL6s zM<*V_2#^6U1D8R5JR_)!n}VwD?y5h9Jy0qk11*C4+zU%gg8JlpGW=y|kD`1|ndAsrRY)y26{y=VX?{n;FmXLhA>oJ%@0>0zWfE?h*VW>C4{d@&F| z34jjV*THTEi1=wCtkgQ%3hKy{RB9F6S3rRuilmTKV#dP83J(wynM3Zw!tgN`nh|1# z?+L4m5!SJlR3MY^9D&YEDIvXd{=FkokmV&yy`(B!kxfsd2uZgVOy6Xh?2*29rMk>` z?_=;$2ULEf=S-s2$opsLDU8p^9Jor%^&J=Kp$7%U$AKd~TwUK)j#6;W8L^9lcnLLu zF4Zn8Nuzh?JtUph2Z`d$1RPsaDHM*cInL=$#TSU48?lPVE|NJt+~?>bJyS6axKn8} zg29(T>CqIp_=@%)t9lL&FSKGsK8Sk@{`*N#I7gb5hCU#Fj3il^(_T~P zK>ZFcIJG^7HI&RCGeRP{M-jp_D7}{Fi6L}=WOs5OxpH~`CWERhYLrg8rotCIgJ}3L z(ZNeiX>d>_pWLEpb7j+-!`w%ka#eo63(m(-sNOlFj5|Tas0a^Z!S5l4J0)f*Us_KD zK0pkycd;Vu@1;(5v#-#lqZAa|Il#YLOfJ>)0X$lo4-rG;+!+#v8=rQ^f5|z32UF`g zZ2aCk2cNT_7{dMMi0H-gM3Tv8SRtG(!V;n=1MORL2gTk;u@BbQ4G4cjW|KUHjQfb> zmibhneIyHridKXU5?z^d0H8TIrGreJ-)X436pk@g)oF@IVOS!1@Yp_yuA>546`uHW zQ0;xUsu{xshW{9fAlEWtkoufi{jE@!>`u2k$b z{yN>M_E_nuv?-^R&UDk>V>vKB*Uj8J^PYzv`tDDE@>KuD{)-+CJYO6n2HO*-X}%w; zwKDJ?u5KXFDU1PcTQOG3`|%3cFkZyt&22(hb~+*WI&7jKJ9=iO?+oeom7uvqt%<8o z9?uODW$wXEF5Pq~M0Sg?da1AQtA?8`=j`N?h4-ykjpT((cw(@^I!^-@=v58g(M#s; z;0@=+K=^8}_M-ip#?QZ7NFC?SIKxgIF^Gq7)-Df2n$XP8=v*Ge0$p6&-0gqX=st+<7M8 zn~25Q@aaHMRTh~D-Jt}^WTX!Id^#EFM5H)W)p~H^>_i!+aSE#c7AD1_YaONF2T3Z@ zhB8G%@0#68WwcUr8K>$_RD5@nsMU$$e1qj5Jfm>}eVEGSZYVWr}t7?83sLMT-^` zS}hcmF)=+&g^+^Xe2RHOx`~0QH9ER>evVnMRx#_GuCnrt6%`eX`SsU!ZhG|(HCrny zVBjc$D=3l2!Z?WD9nn5{Xn2HSI9Pvau>a^u8t&iv|GRbPKLR2;cpZPHq=Z_uO1MhH zcpf$?PEjBrf&Pr++;yLHJ0#$f@~3_0(ULoGsDW9;=rnhLkc`IOx&siqor^^i@a#K+ z0zv-W=jZ37!hoh``dtAQ_jvxV5IjhxP%^i>V4Pa%joUq*WfJ|rmHoF8Q9BL->Bc+> z>Z`+YU-VA2zP>(h(Oau;fsnTs71;|o&Y-}MFL~q^_YBkb}wsHY7dC!2JBB zM3_5w!-fr8=DyZ67vb>Sq8}&1+_^trxo*o`tCfO%bAR|$BFvr3L8mE zd+dl%VKZJOEH=i3rEifJXHuzPvoHg1;M3?*Cj6A>u?5w6JDqKK(05?pO}EImk1gAB zzU29ZZPIsruWW8sxmxhvm3gj}>D;+IARCvH8TBR;vh~6)+GaVD%;OKtT41-^moLI2 z=7{fzuRZ`MUe8YTM~KFm75P`0WXIZsw@B-A&2+<^Pc*Kn&Mbc<@)b&iFO_X&Ype~W z%YOFX|FHh|Z*{i%cQT7!xc48h_Aw87HWcEHVWO1IEZ0-V`czePG$*p_H|f{NrX(W8}wY$zSMZxG_y2Jw(N z;9@Vf?=lI43%+T5x3DJ=e(9Qa581=-8wUjxP=EyJcB_1mknS6*Ylr*c`@SJpn6!HD z54A3WGfPn$MP(G_`GSOP_fqlR3d;CDd(g2Kq@^Ug^(+pKY1%zFcWhg;) zJ;r;K9!)vo6Bqz(yewQ@zxY>c%4|P+_+AS? zFR<7#v)kEiXNJ~3R$FM{7^XHk;bFb+>=jq?<_T~X5nrrr5dBtoyDcC3z>c-yz`+^} zAJ0G?fTO7QW@7XiUA`VyvhV{)4a(Ky(qi+Vr=v8kKz^T`9yx`>>XDBx6aC;IG{c7q zmTYio{SA?oUqY)A`q+tu3uE~O2*U{#;yXzMyZ8e_KGE|6JcL$d5V7OUrwBj|Q%&Q$ zfJV=Z)Ke#70!7jMv04-j{tyf@L_fy*Esa`sq)k=>i0Rqt8*mx=!%*l{03d|%9@Mpk z9ao64v;2yjI!JBNvW;!nR0FBZ+2%^|KH$7P*=Un>ZGcCga!){mW|GP`KrMc!umzjG zRp=wyySVU2>)v!tbJA&>z`8^9*oaZ_lW8&NZ$DK^>VT&1Wet3)uMy|^_3IEymEdrU zj*KV{2DZOGwl}ty%k($)loz`i>m$`yI89853H<`jVDGixxHPb*ddJS%*LL0B9SIXj ztM%-aMBhhmGXcI9LrQ&=>G4VbGk-_q+*jyKD)C4Dc?h2?Oic_1i^7~~j@)1zUgq~R2X1@xhu579)lq%L?+x!)6`wn~s zyN5Faqa92*2uypWc9;JSE+Mlyc-iiU1hsV?ve{SZY9$>Mp|!H|XW#Q`Xq70W_Ix&h zCGi)hQP9)x2&f&2vp2AvcpMV2HeB|?)vLbT-!3q&2G?7+9JCo^x0Kd@#D4@|t^6nw zzD#0~H!qX8S1+h%#_IVvsf)xfTUHneU%oI#V&%S3UCgZ>aCRncU0MJKTifv zTbAx1J9wPk!khUw6FGFMzSnO3*_gWtsHt(iY>IWpwa~>)I9AX#2I(4y(8eb7m7K=A z*;(m-TYjR)^){+$_il7nN)P$lr3dguMGxu8?OCE8aJ36jADeqfp4c3T>LqhoRm96w zbyXJ*Ev+Fny+T2cbl!Ey+IofWS?nM^1)BbSv8Gs4|2}~|(&Wa6804_sUsuP&UzR5? zmZfBVSFu|co#AF*~JbMH<6Y`+k+|H-M2BioxH2gKFSmn6h8Pj592`eFx@=i zYmdY!Bl+?HPwoB=kG0ROu_cviPspl~Zl@Iv=LKo^O(q zv8xDS{!f?K=SL#GVUp`h4uAJ+c=$lqXToa%tY7l%KD~RgoC5r5kr#$3dT=5NOjs|b z%SnCepuXev;Sf)<%8T6zFB(H~Wo;m|o83JcU&W6{9$ZuHZy#w~pSl=6vmM;e+Hf-%38LYqLIg-FD_WCNAXw zUxNy>h|Z~vWDb+v5$iCi<4;F*vZe5nC4PS}8Apd+zzY}(ZnXaSrmVI`Z+f+~6O=rh zH%zi~Kjcy&vn<)rr@=g9$<#9LJT2{ZPIYEGHBPNFi?RVCxL`5H^sp%UYlUw@;nq8f z&pi#@PNV-&7{DA4K27=sRTN;~Nx>Qk0H=KcR?!T+LXiZ@HN1CvG?Bx}AFl4nb}h?iJ&RbpgI+NZk3OGvARP%hBU_H|$8|qVkJcfKj@C7a^xC`^*S$(wtZLphI__2& z9XAhqjBW~C0S1q9#mem<_EMBJ;l@wVyrZ0+<5Uu;; z@13NDGW}s6kG~RNKqj0OuvlJA7^61}v@3*?-WTawi)76iu zbvlL_8FA@yRBH9m5c~P(pMU!4@bFEg*P0@O14a+Yr)CenOiYIsWdxMbn(}qHYZxx! z>9B(ow;ZPJVJ5C|XU6rxbm1UrqR$xm1`0l~>9&=0WSbT(r;l)?tk@jggV{DtxreEb z)MGACosT5nBzz>}rt&3oc2|n?jLgRooK~vhF9vqjI(gEefXbSdU!C#Sh}6 zQl5Cy^Fi<)@gSFz`$x{y$4EM>Wz_c62z@Qo_}H|Y@&vx|vFw|2M)TqD??ya_ZS5mS zy?QIPGm%O%8I12ky) zl14B{nc~}c(S+~3EtXXgPeklm!FalC7e+j9E0~@m;+y1j|7kH&c;PfHzJ%f+)@@J3 z(`8SbNzf$Dn;ni*$TuNDsn!Vivm z_K4VR6q62jCNC5R)A~E`5ov^*f%%3*et6_`h#||;4o^rt0LBi8`wA~~#P4^jJ^Sop zI1oNG>IsMAqn>^7z3vI84i>28WV?6}=YchN^>xsG>flvT6ypZB8L#Ay3iCV?j@e41 dq{6Oapu!B?L5;ZC{&MY>$@Tw8&>3Ws{}1l^10MhY literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Super Box (CCE).a26 b/test/roms/bankswitching/F6/Super Box (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..d3269e859df0dd7e8151fde754a4237385f7e2f7 GIT binary patch literal 16384 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 P>(Z_8PxA7A&C>q>Ge*Fc literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26 b/test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (1988) (Absolute) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..a02dc8763a3639956b6ad07bcef6ebfe8da7aa00 GIT binary patch literal 16384 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 S^wofG;B`*51$Ziq^8WxY375A3 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26 b/test/roms/bankswitching/F6/Tomcat - The F-14 Flight Simulator (2002) (Skyworks) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..93b7627829a32169eed3c5f723faccf21efb1bb2 GIT binary patch literal 16384 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 &+AGeYlNIMtN5w^F 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 Re(vT!_g?_GYTW(*{{jv6v9|yK literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari) [p1].a26 b/test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari) [p1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..9259262e64d6d2d58e45c63b008d6cdc24899cff GIT binary patch literal 16384 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 Z<4ga8-v4K9e(vT!_g?_GOWghc{{e)F{#*b6 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari).a26 b/test/roms/bankswitching/F6SC/Crystal Castles (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..83ca22ee55d54fccd078c057db2907eb9ffa4ebf GIT binary patch literal 16384 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 H{{R02c_*cL literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..e07cf7f2906a008cdc06d3d79d4480b2bd74ef0c GIT binary patch literal 16384 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 gzWd0=e+8Te`In*AA21xe$R literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari).a26 b/test/roms/bankswitching/F6SC/Dark Chambers (1988) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f7277e85c15ff40f3e6292268ed46fe925a235ee GIT binary patch literal 16384 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≀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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Dig Dug (V1) (1983) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..326a101f6b31eea89f52c6677fcf7d77df2b176f GIT binary patch literal 16384 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 fYi9238*kuhdf5ga-|k0yye%N;JE(<<#&5^ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Dig Dug (V2) (1983) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..3ba7706ac8550e346fa7c606bf13a4befb226830 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Jr. Pac-Man (1984) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..59046f13698c0cc1c88b6debdd240e79ecc39e30 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Jr. Pac-Man (1986) (Atari) [!].a26 b/test/roms/bankswitching/F6SC/Jr. Pac-Man (1986) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..48508e163edd27ad1db99a8673e36e077b5bf5af GIT binary patch literal 16384 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 aN1EB?QQhf-7*1ZP(%JzAy^hz;YyZEG%fh4p literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Millipede (1984) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Millipede (1984) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..927edf9350593682f1e3a899f604e91940082b60 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Millipede (1984) (Atari).a26 b/test/roms/bankswitching/F6SC/Millipede (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f2acc1e479f14ac5117a8cb74650ba2a683b0420 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Radar Lock (1989) (Atari).a26 b/test/roms/bankswitching/F6SC/Radar Lock (1989) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..7aafe653a9816da22273078ed17dbffbf278a36a GIT binary patch literal 16384 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 KV7~s`|Np;9Poc~J literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..f190e4f0412e61111014fd0cf419184315b0de20 GIT binary patch literal 16384 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 SFS)-u-Q<45`M>21p8p1Q8jy4V literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari).a26 b/test/roms/bankswitching/F6SC/Secret Quest (1989) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f25c7fa436caf1b4b120f2da8e393c27ae08ca04 GIT binary patch literal 16384 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Sprint Master (1988) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F6SC/Sprint Master (1988) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..22556c382b7d82a33b62cb08edc3bb8d2814b002 GIT binary patch literal 16384 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 K(DSd)|Nj>yRRqWY literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6SC/Super Football (1988) (Atari).a26 b/test/roms/bankswitching/F6SC/Super Football (1988) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..62eaae4a4366fd50c6b120d77c087c61459e5311 GIT binary patch literal 16384 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 J{Oj}ozXLFl#@PS> literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Aquaventure (1983) (Atari) (Prototype).a26 b/test/roms/bankswitching/F8/Aquaventure (1983) (Atari) (Prototype).a26 new file mode 100644 index 0000000000000000000000000000000000000000..387de9a3950c872e648ecbc24faacdc3e459314a GIT binary patch literal 8192 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 z zJA%L94&bv~3qHq*S&+Op-N1G*y9msFR&pn1Jd~WL($yH8vG} zW(aJGL1|$vh}!2?IwJI6hd>9IM+*y4M~aw!0iMzA5KxRRQFAS&mFl zJKlwMn@WqVm9?zZ-o)hR=jY|+!47X78tzYg=nwWr$dxkB>jl+P`3=y2e7H8ZHAoDQ8q-eCMY17iD-`HS|O^nI{d`9|ze$MY$h6t4$6QXUfn){-ELVJpyGvXlw{Eyqk>j zdfsIiQ^N%1c`9PKWYxy6i0BGs5OLLzJ4OMR4l4|;XYXsWHyNj0|2A(WMJH>8B%;K> z2(k~^55|D8_&|D0jvT}JE;+H)S>re=?O){18;+w^Fah^eUq<-619_a}p2bH%)@pTw z*Fp@mU-14mav9kJT|R}-<3NDF?gBctQr!SU!z5<WX4@4;dg!+ssZdMB{_B&;%qJvNS&M8f~%m%?C5B{2m=d+lHg$Y$HM>7ZB3u>i*d zTpM^WXngp_IQ>s<5c&b+U3CNK2a&71%O{5wqvE>pk&#!Ay>qPj*o9+M+q|})v~6vx zt8Bd#_SkMB z!XM|m_|N!Ld=Gz-zry$Pvct;5n!~ppo_TnDXK;^>cNHddyywn_-=vQBY&2hst-3-L zE@vH(d8r-c?y0*6V)e%i@RQzB2auqkH;ouKj6^r23bKpXFhcJhA#_)a|2@ij{27o> z5$p+iSPw~Ao#(BQ^;hr}_G%%*R~a-Tj|X_Y#|3E&j_5pB(0bB4o~tBWR}rk;m%{ZP zE@HUm5#sG0W5>vlhxU&!F#NQlic?Pi*#5Ec{0KLEA5vvGsZri@m-`{kWcP3~ za?#?TU?z2-GAk_alrR&fVX|J(FgoIKd0B<=?op1y<*?3G2ue-{wJcl#6EN?|DaGaW zp2nz!V4!Y_g>1P$8AiW{fkaAS?Sh(Y^#wUuu8q&$U|akdLIOqVQPW46@6E;UpIx;Y?ZW;@zxES2&}?X`2r-MWM2z);5!^C6yXm zI_%$Ijo}8!LLOZa?;vY9w1_500ytXN5=bIL89S}x@ddq*dNH-c7XLa(drD%HL=k2% z2Qr`R$a={)$2cOeS}FxOHj7FJoGt_^XfAuxxcqwT=u$HZ6$%E#w6L*g)La4Cv8&@P z8|9Q$pWJ0r+IPWpVzckAtB9_~_ka@2zUQAK+zEk#E`;6)<0j*QG1&XcFwDxj!UPCJ zO`#k+95V2PVVhRkGJ+2Bunt%>lrTLyNVJR>$2uM40kFocf!5*2QV3&{_C1hNf z#EF4Em39d!!2|38e}ye}{|1YNbh|5E*}^60Ogzh(fT?a_>?^qMN`=c}nq%OqvH&jm z7IG&137&@2a5~&>A>0L=DtsqMhWjzt;>dA47l~d*kIcESj z!xk#Gg9+)_iuIr3PhnE&#@(!Sy&wBeGf06b1&X6&ii9{tJSC5Vld@ci@}GSpg4BzD zUV`p^e9OMM%Qx=Q+?Q*8^X;@nb4q{x^7I+n*Pnj&fr{mCY}t0NWoiE1RjHe1Kk?A6 z&9`URo-?IA^I&DxOF6H6^KJxo2D8W+P9~EjCB;EetD%ylh>MfUMf1h7)zH4I3=!r3Red zQLa15A)tafrtlpuyHCq!Y3o^Amu?j6Bv5%2^bLWe5C|8+NjMp6xxz;*8Sh{=wC; zvCJnVlFM@NWKQkgUSh2+ON+~*Ce`k}+2bjYR7r)^T3hyw6cZ^*oCPaf6od$3OH1VV zHawR@^^&q#zQ$H;@O?~7^|fN9FVNI$#S4RKAsDrHB1EL=ibP|=StNIry%x1)jzkxQ zvq!RYA_Y{5Tn5(EcJiO%1cI)u{+8V}lOU3vwa!V9G)bEby5sgP%Ph+ri@^#-5`%B6 zCA{DZVZc(%8cyLPwobB1jTfI}f+R%O1IlOR#6bf!Hj%QVTSX1DOsn@JB#R^L+!I*Ft%wdd_U;=l z*LJcwS$U$8tXM?)n-=7^=kYQAeQc}uAs&}m8&21Qy>li7G?^`fKw2k_R>Cb2fTtjxEyFb1sj0V=-{6WG z07(8{_!9qbe3?V6Eui&Ku0ji4+xZ=Yk~iv@H+Ye268(2jPoQ-muAIM$2lzo8`VK<= z0{)us!RH}^kK%-$PP~v1nRf4wg$j}ltBJKo>jgQ>;X0CCKwCz|fq zKRQ+%8Z0&%-yA*6tjf!#bw~^fevi{$IJNof7k>J{UALvk`u_fxBMp0h`^t+?JeV^# zmFoY;U)%oR+VScyo_y%;dDG$szW(CV{U82rQ~v6Qm&{L-ht7X_w9#Ghe`}w5O$E}*{-+a||uzoixB%`hn71A`#&?uZo z>qyJ0%2tU;r3wQQi7J(74iic-FB<`&P9?Ppfs)Y`0lWEGW15VTtCU*PK9g2??8=73 z4OfoAOA9Z5Q2tGR(2t^}cuU2m{AZtedd=!`o3(U#?!87-I2O!fnDAIQX!eWYk+G4m z=nq0ALTaQ!-r;em7?!|hLJ|~%eqbUmGmsGmfD(?FtO+g&H$fpu1RhCEOvepvq&BWi z;u9qu1Qz9iU(n(QsxdJV42wkVSa=LzBjT7CjEoVHpbQKIC&UPt1C-zpRK(zj2nvYd zQ6(T1*!}P$27#WmqV*Bt3CQsSaD>nh^+ZLC2-rz*h!pY-`u)VH5Y){e$saZo4haU* zgJuAO-DV&Jw}FMcNdWxBCnsPeC`czb;u`2DiY0B5DSk7O7|i2g2WB%OuqX!5L>BoW zH4&Lbf{Q(13e<=y1XVKwln9zYnr9BiYRDf%k}PvD&q;_8pozes2gC(|jz9nabqKLU zL8ypO5CgSf9&iu}Qa2MG!eKV&IYr;}y^@l73|Q`HwCt?DRN~^rrJR&Qujn0U@Nc7AX>Mf*G0FDSw{~`{1>CKiY1%|CVKj8_?PNfALPT zVfl=ulVC`vH8htT+;eNn4LYP#eb7>JaJFVL%xwR1^8yImBr=ruj}z+_+@hZ>4pBe) z<+^<1R63b@;YNT>qO(4EV*jDD#aq{G&AlOTb>)Zq51g3_LkMDZ=T9Pav!Ule=|y+_qGmEndrCjZ}Hp&NM61? zIrd$=c=>YpHaCmS@D-blb+Ko;R79!NNu^LKTZ%RpZ7JTmwRlTnqQMaTCK?vynx5TI zTwaqnQ6iBmSI(XL{PR}7zpd@)(Tgh`SMk(o>;x+ z>1UpO?zzIkS2jhhwcB@8R95Y-*|X=l@$&oeVi+%b#*04F_~_Fht*WlM^JH&$5tOCm zXVKrDI`I@zYP1SDI%$WXW*3cw(R`?U2?gDXWK^6yj*^eRP~`aW2r~PbY=ppp*4Z%3 zHoW}u#?^HX)8a zFw`5A3xA;-N9o~Fdj2R~b)A+E|GtzGhFz2eVakPgd*k*~@AL^N9CFNbYci)~ANAo2-nu^AgDKu#*KlDaDRqN8yzliL-ytY~eaE1k2X??Y zW;A^5m`(^BGcna0lnIG&7D3!Xh?z;(XUZ8xNt%SzWL*;JL6wfqYwkPNcdjqgm(rip z|5Nxj^?Cb__g(CZ^v&ykpx@hv(7Kn_Z`e4VXR?7Ozu5n~-;AF~(&kK`F+-)%}e=9Y zs^z$mYsXfu5x>i&U~;1Un460~WZaIbmG$24eq45s5B@=bf1%uEew|0b@){`dHiwVV ziqgZiX85rm(&Pw9lO*5J*kh55BlrmPk(c)dwuv)9H&8&m988=y;7Op*4V&f;kZkE< zdUmoq1C^rOXj(D=+IQ+17e%awH01}}4k5|Np1LT*r`WG9BK(z+Jq?Z1>=|gBA-N|Q z+zxMg2;01KLb!~rZnt^lJ=KDuz06K^R2$ikFWLk-r@-~@3ijiG%`WTo=0$Lw^vm_s z_k0XchY)9)7YY=4@;h9nw2<3j6_WJqsRBuB0ch2;r=bB_p>YNnG$67D*OQuE=dK_U zIjbbsBnw5`F%2CzX`p&sUEtZW0cP&p#fvv@UccUnByTBa9Q^6_dIVx!ZM;^4bP8_` zGF~A5%x1ea_5>qaeZdw;$fi6AdbWD4El_EvJm2i9iL&cCb3DYnqoTtBqr*)4n*J;j{fgttcnMF5ZTD7t%Y?N;~D;R^cTb+sDwiUv*cOR&b*k z@V66WW1KJ@yPOJ`zc{&+iwIZXN|EYlV_b6It5+RPnC-Y6T+LPD8c_W{m~)Cdh`-|Y z;?rC+KEsI_ki0kCzz#6G5X^pFawldylV+To$;E+x2v_0?nBscch%MabgsP{qr-H2v zXazN=meAm;ltx({?hY604$Kl00;!@hFe)aPzP##`gSqgAD3OfT5xW^K5pSbgBcc|Z zlEZBH@2jSNU8R!-88$b|Ea%S#4!Y$6!!nmvfYJ z6}FX@(Vvew<4FI|#7|-+MGRq(j?T_o#T1(D9WJH^KGjS|H4`203VP*`DQ9SKC%^N} z6+`aIQ+E&9e+WZ=CwpYp&=@`f!Bqz0?G%UfZ$3EWa64suW7ZXQ9^`pxmQ2t%KY(_t zT8C{FHLT6i$mHhc=H%qS4t%y$ZeO`^N4!Rx#@9fs<4?FvKN}i!yDPoBhNMoY18$vY zfD`n>6E%EIK<-JLn1D<>hpeXcLx9r`5}eZ>XW9fH%MimPYjr89)6%BjGD9k0i&jwj z)R8jXFjjZdqTTGKMC2Bf`Ij1%|8bK}0n0^MlS|5?T!ZyB9m&Cif zHDCexxATM>#N>&I;6)Y8!2kh|8et-~6Dma{1_LTGJKG7JHpW@Qu$8cMveo+6pNIsi zpeL%xJZZf41jq&|%0qElY-`--O^&qN>~femlLzJ!F*E@owX& z1|}%)GZEtjn=bybh`vAu5myg-VibUBx53bQ{+>ohqiNc;@A6hsbi77LBuWB{A^VVH zUkn(F52VNB$T6J%f(zSR)y_lG{zdM(?mT1z6L5FcMTE~fk=I4;S^NZKtJ2i_ti(Xa zIp4dHi^vh|^ecpJCj$I6H_)*antB)-W-;B5gc%SFO&zxi=yzR0+@XtT*JWf%z0Mx_ z0W4-Q?3EbSH-Y6RVO25g;c=`a683?#a&<`Nrs_Q@>LhiCozZ_PK@@uAthu=8-{^6#>=MGb?^ILz?`dVvkMazXT zul+i<;WC%Z20N$$q+eSG?A{P6Anba!Y%L(kj2tvQKB`t|)T#uHS{juK&w~1ub>0BF z?`%ILf;5$58%SYoV0h2oMrtThy)t@rJPkKueM1q3eIBZ%s9NmyA$Sz{tFuh}#&|Nb9_Xz6^%z%7~U~i9? z^^%m;d*2&gdkJ4+FBc$unL#sic!1Y=-H^uMh~9e%ttGwVy-dP&8Nu3pVXV%}MT}Ry zLcGIkY9Ai-(t%+HhM!JUbE@f|IzBa>9p;Aafy%@b7#KD^Gs1iC@I1ho9bQgGE?S%v z%%o0KYJ=sS5@x|POx6n;Mn^m@D=jzOIl@u64A!}FLB+|SmVwJ*0_MG0CAh54+Yq%7 z4Af7tkSz-&!RYrgkVwg_L(q_|z91*dwdwimY;$0SpoHnY*;F#p)66!L7_i;1J4SFf zdlq7F)--JlqVRamOtQ;^;UpIx=FAyw;+?EpUof-XWnTa@MS-fl#y*R!A(d)-8tmU- zjo}8!LLOZaZzF3sw1_6B5*)2<4knVJj9s?z_<~+Yy_i~JOCTT8o|4!kQG^-Hfy^g6 zvR?AbG0q6AmMTGxEuzW^rwf7Vv6Q}JT5&CQbg3SJ3IzjV+L)_Bu)(U zskBQ-?%B)k4V2qs_iwORNVmJvl`UL?&cd@@N=$VLqu;=NR|;Gf(;Nd=m3eT<2 zV|W@)#c6Q6g>WZus`2e08SckmizCPJTqJra2{&)C>si?AmU9U(9eOZapngJ5U(yAR z%p^uWd7D~q*Q~cITr$gBMuuSn0gaf&X>fpR!Cl;0{26Fz!w#}B!_5%5rmO+n1Y4-s z4koN;%h!H}KZ8l73wN=$wE-MB$sh%y6ey08DU@-FcuF1zCuO+`)KLxjY_~%b{km=VMsDEm0U%^7mdGx6@3yW=YNFY{4bK{{{aWbzCHi| literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Asteroids (1979) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Asteroids (1979) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..0ed4431aaa2687c6cce8e6651270e85fdad1f8b8 GIT binary patch literal 8192 zcmc&Z3v?6Lm7~#Lw&iiC6M+qg#H5jF8bL^^7B2{FLu@O7&657;M`>}24ek1zg|p-| z4FdV82`R0zMZ`(^QB;lWakjgnm9kitZAxs}qZAlB{0!KL5QHtD9@~=qxAwk~`L&$( z^qlS48LWBl-T!^}-TU6dbbbPns1W7bq&uzQ{0XcTZO*A~`jtT6G z&(g7KSE+ZNE5in?Fom`e<3E0ixHT|}2QVa%mIW}+C_N4CAyF1RgVgja%5LfELwPM{ z`%r$EAyAfk45<&t-KpAa_jGNRdnQ(^c8}-8(G13QPXK5Vdb92+XiYhZ+AM$rGD^9V zhvR5E7K&59xgT@7sT#9KYAb@E2< z(-6Qi`Z`*QGH4b;nLv{Ftm&n(JpCz5e;!GH@^RSnnpl{dK@_IALvNGd5Tv{3_{NZ& zzJVTv80kh!-m?N{DQ1zw3w(2Ufo~2k@Xg^d-<&zVIIe&OVoTs)lVZNM{PuH-_Opui zGYT9qY>JmeZ*rOKL!6u*MmJ42KHd*eg%dy?z@q{@3h*9)kD#b2^VEKDNFxLW=S3uF zgPpk;Ekuh zk2H>2fkz9|g(h8J08%Yax{7R5ruR?LUDb9K^M!&=>H(&RQ`12mUtW%q<>i&hsugGo zs3sYr93EC-CmDHT%a8g&?a>z0kF=OITGDc$A4xCSZiP!(}xm_1jXrA zT{cRpR078d=-rWU2#wP%x1n3n81!yKQPM>?yZlK$lU>0p*sZ*TJ;ccmCI=!C4pL=0 znB8L#wO9N+U=C<}8It&iHLD$xWH^dZ0hX@Mzq`Ut-Qf zb3$lBdisYyK8G#d=v6imXB)!Y1TSwQ&f$h9?r=CKYsa0(YsWyTf4Ca|Zvyz?kKgkuDj>sQ>V|IJ=c5w!o|M+OOeZ;T>12B^xD8+?D~zH ze;WGx?K|*S?K8i4$D$qI|G~e4z5DOB=+Es3`+ok9wC``tuah`D(<@47Q~Hg8>pX*c4(!|U5H{v5pG;Fgum1@CTt_ZB_I!|mJf_jgWhzVPW? z{MY$S&87gr%LJS)?kxv1eAfkfugPBl{L7n50Df?LJnvNA&Sm%NxAAw+d5Z&Uj}W`{ z_}NVmq0nq7w8KCUyK8-JU+r!pbfSMY84VGHfT5qhGj&BT9X)#VrJ^~S5YS9xoEkl# z&S9OnIDR4&0-D{KvR6Z)SMCts7WfJb-viNW48RJWIc}x^)<6BO%!HvOnf%R>7(PtEF-+J4B6|K+y{@Lbr&5T&c z#1bTBw&E=9k|8n{P8Sb`g8ddQAm>p6jiCuNg=SC+a&??pfRfBgG|oH+Woa9lX7-_3 z*L>TkDr!`L(#n=7mP7bGJwy2OiN7FE$lim@6GvVL4QaNug5sw(MNBvbkiH1l!jNw);y1 z!hA#g&b?cF7vewky}vO~?l1X0L{3vW9-2#quq|m;28x3jd_{Wn&hH$w1n{JRulS4a zK+>(WnC8-^4NV&+)*ZPoePBaiL)(TU6~1EMU(ny?zy2^_wUz+aRd>s1ExF&fRr zh&E!0L@Y-w5sL*zp`(pNoDr?o0uOG%5C9@-*lnoQ5{XQrCe;eHT9K(xD-`Hf^e@(Q3`w8eELjb6eOQlk| zoFrwWTp}0AKOLE)D`T{X-PND!jXo zJ$$QAlm?1h%UdgOpXjMw@2M-_0Zvq^@$|PRO;2tVpvpA0eoA`Jg>c5hErlxYKhlGlrg6mue4`K?Q0_AXN<&> zTER=3NbO#Uky;yE>nr}C%)7-%S+o>oFuan|>J3Hulu=)#p;CkqWTzzg)A^EAX8vj; zk)kw3dSgmoWYB9xRlx!|Bq+r5RlwlTreIM<7<8Iw> zTTr5;*#!2l^_6{)abO~~V~hYu>dn*mb*0{6K8G{ZKC-&nTV7zPd6>2+jmScG!fz+t zr4*qqCW68UZ&I6300mJSMy8u|YrLc`o0}K4&=!{@tXK7YJH?H+d^d$GrXTV6V1O(b z)2jhWrOWCd2DmB4h#4??6gG(`;q+!@BfNNk8jBFTC~Uh3C%xMvN<7k+#^Kay2q)8y z&X}@C=wsXu3%Y8u;n?8aPKVhDw~g-SbLbvueT(juo|j(WzKrp@bR@44hBwd`xMCNf zWoEfAx|H~{g1&^{AnTGkK7zcAk0Wr>YUA_hHvS=jFh_f05^T4kpMV7y871lyMDzKc zi?#%?x;AaQ=;?!|5;yw*=@{QfUoN;ztt&fm_Fw|4eEk6VbF#GA7%m34&5y3u*0BhG5sNx2|$@k!N}lbL)7Nl9zyeBWRXka z%%D8piP4oP$s7g=#~QAuV0FL^-3*p zA|Zr3=zu$df{8e+p+4@0zaAfO zb>arUwRcO3%dsUODC63lvrSgQFu2`eonvBzOQiG_lHW=_38(re{Elj8sh4zS)Lz9m zM211qkg(!=B4;mbezWmzH>Fd+sXwNvqEL)>%-zGe2wrwZ(8zD)6;vEFs^%8MtsB-2 zTn92~hr>bFJL*Bn+UP|fI2p3i^e?&ZPqmk4Ob^8&eH3)+MJkn74ih_OGAD$kyalg#zMK(v1iU4o5ND)2lnT@V zo-c3I$>5~lsT-H#=@+3+CV;y4voG=zJ306w>Y-cMT<<(qZkGWz#5$l}LY<}~37ADK z>g3?7lkrcoGX4pctR6U@#|a0xmW>T}52~B0Zabf=~x&Ze(r|BL|l^C64E}bgsx3VLcy@0ewY)HZU*en zMjx6Ej|o$zf+U@-SB3g1CA7#;Kk%kUSq`$dMW^8lSPlOzh{6X7y7b?mgJlX71hp)v zi+c{fM${GU=So0^1oBXqQUc>o3vBhcK*9I~>eBvl60!8&a`r`GzAxQQ@62K(NbAzA zLS3*xtL+Q%B@>FvM!jSxh<~F&7|DjY44M{>$wu+(6hZt!5^E|V^y|Tm6bHXb3UxX~ zkiDg^(Y@SLbQosj?K1?;zWp%)b1vajU^^vP-VPk)jhHP=;M=`~Y4;d#8A6>P?e9h4C@iIHY4ARsoKG*D)By**;_&VO~a27eV(^%W>4ewWp>^$!2nE z@EkI0P(QN}v9Le51b*QSgH!{As;Hqh2uV60;tpS(#hD;n?}OW*8Yo-}oxChnrLe_O zLRFbiRqaH>I4C#;8Uj%_xz%)7pNobJgD=??nyM+-c$^*=0D0_`SIKPGU~9SlvXr3` zZbZ}lA^MNtAQ6PZb(hhWbdmmEF3%aE*$ByzboaqCj*o2#Pg28>;0{yc1db*U)H6W}$k+9iYQ<8a2(p(&|Bz0^$>@YmPLXt?p(#4cD+_LLQZr-W z#=Q9qzste?9Bzm!xk9$a{wQnlK8%AqKFcj&vH`XZU@fK8NcO>kK{Pl%}UJYI; zax?-9QVe&c!=4e?C3&Tu;Q@}Nt<(dai*$W%z0Sxh=z3)df--2HtHI0vZhlTBlyNE- z{~yl$dIET=n(7HKG6XS5>@ zC~-hp4S+EL1-Ih%k3GqViW8gKrz28c9g*=W_vle6FF7jXa)k9PGDCWUc!2N-MI^i` zqU1gU30eX-^8NZNkaX{p+<}F}o9P}Flm%7Mv51^fz^IawxnMKt=!q!#uY$nMAaIj= zR5MPuzFd|zWt|RcFDr%85`;|x zBm>sTXVwNGbxI(??m_M63})N0ZQBfH*j+X3$7`*zB{!vcd1=b*f~^^pDN(r2Y>UH2 zNDf&+>`9pY^$j{BryiiL+mf))fJKv}B7UoWxK5|%GgvJ+=-3Ra=P%=e{WGQ3Q4hPF zN_*B_`>bf9z@l%}{&Lpa1cXmOwOIyG*jXvi7^eEMQY#%RQ#k6I9E8IG)2gXb2^+L% z!ZbBa$I+NA?n!80pY_BC=rI(JChkM)Kj?7y_W>mfyDYDqt%ObG)bu@C;J%=wUQlw| zpD77o{~=(~0MJ^8bpRYNWM&A^J=4>|E0o4aF6@#lcnxSDoW;j4{OL0@B8L?!sl$Pp zFLu-q6vQ{J)GL_Wh|)XXp3CF{7$6a)>JAE1c)!6l_cFqJL|B7@>F#7#+B@|GteOG8 z)lutrI1c&i9Sz}6}24ek1zg|p-| z4FdV82`R0zMZ`(^QB;lWakjgnm9kitZAxs}qZAlB{0!KL5QHtD9@~=qxAwk~`L&$( z^qlS48LWBl-T!^}-TU6dbbbPns1W7bq&uzQ{0XcTZO*A~`jtT6G z&(g7KSE+ZNE5in?Fom`e<3E0ixHT|}2QVa%mIW}+C_N4CAyF1RgVgja%5LfELwPM{ z`%r$EAyAfk45<&t-KpAa_jGNRdnQ(^c8}-8(G13QPXK5Vdb92+XiYhZ+AM$rGD^9V zhvR5E7K&59xgT@7sT#9KYAb@E2< z(-6Qi`Z`*QGH4b;nLv{Ftm&n(JpCz5e;!GH@^RSnnpl{dK@_IALvNGd5Tv{3_{NZ& zzJVTv80kh!-m?N{DQ1zw3w(2Ufo~2k@Xg^d-<&zVIIe&OVoTs)lVZNM{PuH-_Opui zGYT9qY>JmeZ*rOKL!6u*MmJ42KHd*eg%dy?z@q{@3h*9)kD#b2^VEKDNFxLW=S3uF zgPpk;Ekuh zk2H>2fkz9|g(h8J08%Yax{7R5ruR?LUDb9K^M!&=>H(&RQ`12mUtW%q<>i&hsugGo zs3sYr93EC-CmDHT%a8g&?a>z0kF=OITGDc$A4xCSZiP!(}xm_1jXrA zT{cRpR078d=-rWU2#wP%x1n3n81!yKQPM>?yZlK$lU>0p*sZ*TJ;ccmCI=!C4pL=0 znB8L#wO9N+U=C<}8It&iHLD$xWH^dZ0hX@Mzq`Ut-Qf zb3$lBdisYyK8G#d=v6imXB)!Y1TSwQ&f$h9?r=CKYsa0(YsWyTf4Ca|Zvyz?kKgkuDj>sQ>V|IJ=c5w!o|M+OOeZ;T>12B^xD8+?D~zH ze;WGx?K|*S?K8i4$D$qI|G~e4z5DOB=+Es3`+ok9wC``tuah`D(<@47Q~Hg8>pX*c4(!|U5H{v5pG;Fgum1@CTt_ZB_I!|mJf_jgWhzVPW? z{MY$S&87gr%LJS)?kxv1eAfkfugPBl{L7n50Df?LJnvNA&Sm%NxAAw+d5Z&Uj}W`{ z_}NVmq0nq7w8KCUyK8-JU+r!pbfSMY84VGHfT5qhGj&BT9X)#VrJ^~S5YS9xoEkl# z&S9OnIDR4&0-D{KvR6Z)SMCts7WfJb-viNW48RJWIc}x^)<6BO%!HvOnf%R>7(PtEF-+J4B6|K+y{@Lbr&5T&c z#1bTBw&E=9k|8n{P8Sb`g8ddQAm>p6jiCuNg=SC+a&??pfRfBgG|oH+Woa9lX7-_3 z*L>TkDr!`L(#n=7mP7bGJwy2OiN7FE$lim@6GvVL4QaNug5sw(MNBvbkiH1l!jNw);y1 z!hA#g&b?cF7vewky}vO~?l1X0L{3vW9-2#quq|m;28x3jd_{Wn&hH$w1n{JRulS4a zK+>(WnC8-^4NV&+)*ZPoePBaiL)(TU6~1EMU(ny?zy2^_wUz+aRd>s1ExF&fRr zh&E!0L@Y-w5sL*zp`(pNoDr?o0uOG%5C9@-*lnoQ5{XQrCe;eHT9K(xD-`Hf^e@(Q3`w8eELjb6eOQlk| zoFrwWTp}0AKOLE)D`T{X-PND!jXo zJ$$QAlm?1h%UdgOpXjMw@2M-_0Zvq^@$|PRO;2tVpvpA0eoA`Jg>c5hErlxYKhlGlrg6mue4`K?Q0_AXN<&> zTER=3NbO#Uky;yE>nr}C%)7-%S+o>oFuan|>J3Hulu=)#p;CkqWTzzg)A^EAX8vj; zk)kw3dSgmoWYB9xRlx!|Bq+r5RlwlTreIM<7<8Iw> zTTr5;*#!2l^_6{)abO~~V~hX@@#bm#x>D~jpTikyA6Z@PEibUtJWN}ZMr5Ho;kT3S zQi@O)6G35wH>pi1fP$zEBhyW~HC|Ge&CQEiXp2h{)~ouyo#Mt@zMDc8(~o$3FhCZJ z>D2(G(q(lJ1Kbp2#0(fc3Y)}}aC)<{5nen%jYSAv6t-Q2liuwSB_8QZ<8bOUgp+AU zXH3~6^fB&-1zk1SaBT2yr^9T7+eY{EIdl)SzD4&+&r2_GU&eS{I+E82!yD)eT(OJL zGPB$lT}u2}L0>{}kabBNA30%n4>*03AS6&Pr!nUj1u(;qWOH! zMOy+`U7NOD^z=bfiJN_Zbd2w#FBe><)|DMamp3hnA3T_hd%2*3k<*@#XVg1sAu1#Xo^TTw% z{vkK(lF;G%F%abSrseUISl$IbOrLX~26aK3Fla-84>N&_!X>G5v!E3|hAF|0`DlUZ z!BM&c#hr?m;`aG)B==^9KI9a1hi(>i*kRDMnEsH;1fa~NU}SKzA!>7N525)mvdATI zX4CCDiYJ{!ol_EO=e`Dn*HK5b-Q*qt42?@ccY?o37X^Vt@?<#d%w!bQ3V=Ng=<@)5 zNNGkLi~_ZTK3E%PCfyFFKRM`PC!Go=+ifMWE!pp^b%I$CE+C4PInX*>Lm=pf9RTL7Y#6(Q~+oMY(|FKsY~~%<4D9j zg{yEA+|mRJI%_o8RrBZoC7W9*_%thqfYE+3iM=H@olQ6iy4f(8!%|*}a#L4VBdiwb zekIx1WoxdhuC7Kmgj+6rztfLK=0abQv}#vP4sauIm4lbUE_S$YuORung9)-5=}y={?6*Iz6N94N+VC_=&@6nMgyCue2R0ox zT4TsHlRT?;OfCk4Q^Ttwiuv9=%BPs$8*cj0-QawTq0W_Y->tqdOA>8Mcn?U8$(JI zF|8c`tp(M~U&qy2QhZZQXILf57wpF3f?5{T z#XSdKBkGFwb0r`{0(q!QDS`2)1-5!zpkRCgb!mS&iCB7XIs2k8-k_p9Sqh2x;#J|xXjAX-H22BgcWTW_XiXi?Vi8U1w`t{&Oii2Mzg*u%g z$llV|=w9wAIt(-N_8Ed^-~O0@IhSxMu$>YtZwHR@M$8r_@ak9(DXg1@1YZ#N)B;$GJ2v8rvCQuaZTk(bP|S-o6e4b0C1{H zG`l`>d_>0;P=^(dRfbVGOtn0wmsA18AYot$N?exG@KV=G?XgLSy+5IAV26T#lxfsd zhR_Hd(p1S%h<$+5!uS|$9MZ85s{qHp>llpUY#*|XFfXI1i=g|dAKvL8<{lRn$-$ge090afh$Y;!F^(_rYyY4HPbgPF|L(QrO}s zp{h)%s&=Ab92A@a4S}ee+-f?k&qYIq!I$g`P1O`^JWh`bfIN1}t7Nuou(e!&S;|le zH=^nO5dBARkO)HIy31%wx=4R7m*_g#+usZN zI(k82iKCb2{Jk)P^a%w{*^g0DC9kOxXSrVxQ+^>~}blIbe34fdZB;CT17u3;Np*wmE`f3Nm?_1$CO~y{gi^ zD%GR=9^FgtGux7ysvMNi{OHLP`lJqL-}u}v^qB^L=v5t`cnhksI}-Lq{`$f~uLiFa zIU0clDTce!Vb2KclDtyS@BqisR_X!IMY=w>UT5SLbiJ|!K^Zj9)!^lSH$SHm$~cva z{|{$=JpnvbP4$Gb#8LltJz=(u){bG-$3e9$8iEfjFkBt?s?69HTso5U7`A83Gujac zlsKTQ2Edqrf?IL>$DU+F#feSr(-A4Jj>veGd-SN3mmHOGIl_7tnIXMFJV1DaA`)H| zQF5Pw1TBFZ`F{NsNV@k)?!ZFg&2$e7%7UusSVT@KU{uM;T(FsR^hA{WS3%%r5V*-b zsu`zSUoK0b)}~Dy`UahmQx8zrZAsW?z@kY~5x-SGT&L6X8LSo@bZmyz^OteK{+UwisE6H7 zr9JDeeO5G4V9~c~e>v-I0>USt+AISo?5q@M3{(ABsg;hEDIE1p4#MGpY1LGzgbi9W zVVatz<7mtl_awBh&wAnm^cadq6ZfI@A9OhU`+$;#U6xnQR>G!oYWf~6a9>bTFDSX~ z&y)nP{}3=~0BEhlIsgtBGBX6|p6O}f6-r|y7j{V&yau!n&f?=2{`8p{k;4j=)ZxI) z7dz?)3gVkq>J?0GMCqMx&t-A}43LOYbq9qhyx-uOdl}(9BCJ8dba%2V?VWl8R?UFl z>ZtWQ9Ebe%j)w53acXG5Oea{SSIo-HY_{2NZ2;{>X1@dSeilqq2A>N%w44FzYMp)( zDnXJpdPi8oT*qqcG1lOXLfc$ZZJtvh#O#r}Q2Nnf}VZ^-b? zzfvxhNhM+uE+EudnHegj0xnlxAhu@xTmHUfZ+?j=Q>$fSxc(tYvLHKKeyd56Qi>q7 z_zHs%5yQh1)8G7NylESHa(BgVaNcuo?_zrJhFuCFgAPI}&$o|%FFY7mPhVzG!w i&CJ~0#xSM`((@@HJqsNF&wdV!}24ek1zg|p-| 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 a%JWIFJc|*d%{#$$B$l=pv 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 R=>Hbn&atca|5M}S^WU8rgGT@W literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26 b/test/roms/bankswitching/F8/Asteroids DC+ by Thomas Jentzsch (Asteroids Hack).a26 new file mode 100644 index 0000000000000000000000000000000000000000..478d1d40837e35b3c936ea45cd7f2034e4e73db1 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Asteroids SS (Asteroids Hack).a26 b/test/roms/bankswitching/F8/Asteroids SS (Asteroids Hack).a26 new file mode 100644 index 0000000000000000000000000000000000000000..58e75c07558cb60280215585d44709d2064df0a1 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Asteroids [p1].a26 b/test/roms/bankswitching/F8/Asteroids [p1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..f53843df3210e929b237244578177d316e55df50 GIT binary patch literal 8192 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 Ijg!y+096T#l>h($ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Battlezone (1983) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Battlezone (1983) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..c26c2b17b412c717c5a8887b27f31cd9dd77cd62 GIT binary patch literal 8192 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 RgrE#8&~x%>iq?-G{y%NVEqwq0 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Battlezone (1983) (Atari) [!].a26 b/test/roms/bankswitching/F8/Battlezone (1983) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..8dee5f262704222dfb3c7667130b858126f0afb5 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Berenstain Bears (1982) (Coleco).a26 b/test/roms/bankswitching/F8/Berenstain Bears (1982) (Coleco).a26 new file mode 100644 index 0000000000000000000000000000000000000000..ccf863c54cba543016a07912425bc12e99a9ce76 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Centipede (1982) (Atari) (Prototype) (PAL) [!].a26 b/test/roms/bankswitching/F8/Centipede (1982) (Atari) (Prototype) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..4232271efc31716e8b1637a4692c914d896b43b7 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Centipede (1982) (Atari) [!].a26 b/test/roms/bankswitching/F8/Centipede (1982) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..6befff16ba4b71ea9a83d287e0360ae2ad4fb74f GIT binary patch literal 8192 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 PW5OT9@uw;)r6Be{A5(o- literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Centipede 2k (2000) (PD).a26 b/test/roms/bankswitching/F8/Centipede 2k (2000) (PD).a26 new file mode 100644 index 0000000000000000000000000000000000000000..210d5195ff0ae0998cce20ee9bae3495664fc729 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Elk Attack (1987) (Atari).a26 b/test/roms/bankswitching/F8/Elk Attack (1987) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..0b6f9b8ccd91ac695a744592ca6c6fed6eaa1c33 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..caa8cf4e5afc6da5e212f3a9afec6fded10b7835 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [a1][!].a26 b/test/roms/bankswitching/F8/Galaxian (1983) (Atari) (PAL) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..1180a78b8b4e126ec34b63f632008bb0cbcd35e5 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Galaxian (1983) (Atari) [!].a26 b/test/roms/bankswitching/F8/Galaxian (1983) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..44078febbc071836a23d47b0df2fc27ffa5e1acd GIT binary patch literal 8192 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Galaxian (1983) (CCE).a26 b/test/roms/bankswitching/F8/Galaxian (1983) (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..77472a3139f6492b668b2c996da1f296c2a3686a GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (CCE).a26 b/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..35d1ed35134de0c49c51c5fd09fc73b1ed67539f GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Pengo (1984) (Atari).a26 b/test/roms/bankswitching/F8/Pengo (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f65d859dfffb4b1fd2242f12f96c4e67de908a49 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..5417c5ab1b7b808be74d6e492c408002dda83415 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [a1][!].a26 b/test/roms/bankswitching/F8/Phoenix (1982) (Atari) (PAL) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..805ebe5725f12537b61c25e8c4a4e6647bc0b3ab GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Phoenix (1982) (Atari).a26 b/test/roms/bankswitching/F8/Phoenix (1982) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..b4bb21f3dd7b3a3a025002ee3569190b4a4a6760 GIT binary patch literal 8192 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 G#s39kAd1WY literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Phoenix (1982) (CCE).a26 b/test/roms/bankswitching/F8/Phoenix (1982) (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..40347e597ce0c8016314cc0595e26ffaa20708ab GIT binary patch literal 8192 zcmcgx33L?4neOT7IW!tcEeX(wOR^ag#1RXV*aJ4Uo=j}e&f5^e+F574k4Fqa4oP_N zCTqt;=$IPDNP^~=7+G1bc1$a@Fv*NzY|FOLaA=?hkjv(j1VUIKBx6I{!5os1_N$(e zk7Vt)Z}Z-kj_#`Z|G)mL{{OG)>RZDc=g1l}dQ?hUdgkcN^t6=ZB)u(6b5@HMFCP;J z@`XA(uAr_0#+trx{EIrld ztKYR1RICXqR$vMvSoNEfG-3&F2F+aHDQ5{^U2Y&ApHC-2L`LBo@xw0y_l~@@07v-s zCIglRE*4MM7yo9|+9K8(nm&MS>NkaJnPk4aoQ9?jm<H_Km=Fvmz}qD4!dLAU{u|}RRoC++)#1GY;+denmO(#HA3*S1yFZ;Iucy_+sbaIb`eyI+1^ z=NN#|DtZk%A2HY$K4^z5Ot-rC#&rM#=|+p2ERgE8{4Lt&u1luLXGkt{I~a|b8v55= z)#nW5Px=O@Bhw-d?H}p!uK^*`lnA+lE!%-ZRolPy!4WCnpl-h#H_3ioN--jBK_V0 zsO}hx5rAD^X<)$m9+8_`K9Tt7uDTr%V{4HlFeMx~M?Zl|&XV$g$y=$Ek_ts6a2{Wj zMdlp20)Z;ck{0T>k%=GbO(q!f zV(5ifb&i4VVuZ2wUlRq=SBQT2A(II)g9-SJWU(W1XnVAh?hF_K%S@y5sPn)?U_CGi zZoVKG=dpUCK?j)sVVpyqR9B3?$(Yoo&eNEbm-iu73c#@7`3B;pGOhae zd`~sC_I!Zx2st8G7fD9^Qa-+6jTPz}IX%Rm7 z?P#N|p=tJ6k|h>2z@3fs=S?VRS-W95zXZs*Ze z)9SBilVa2{ixMf5TU7(K zDLV;KCXou7C6}qDpj95!1f>Rn1>>&1-;fHKxGw%#wFO0a5Q-V6^I+Es=)?dQRNBr<{mEKi~Y z;B2*k_;7+?522RJ{z zTdI&MG+dc?WuBc&{EQlt!X4h9i@`XF0}>n~;-}lO|>WA}j03pFQ`p zwf^8Mdk)g}3m;#5WBr{>O+oxC#1S7M>Y8)j}C2D`_fOT83_+>}0);5@#Xn zv5uqUQi;Qfo>LU2JhpPo+{f;n%2{&-aXMb_YhSj5&3&cuVu8KRI%69*op8>Ynx^4P z`=8*PPdrglvb^vKZtBzrADlXM>YaCTcixF7>u}u0t>L>bR6M~=$(Zjf`Vv8t=vo<# zMpwGH62^+l!3{;a9xz8&bAx8{YO{Hev)k=MM~)m}{lQ3NkXs#%;<=j3&v!WN<{{Q+ zzZ`%|*z+r`eACI*F4y9dn?#PAw|FsoU%gm=7Z-D`dE81s7Zyp2mirbrMDae4FD-Pg z6Y7|9zSJBKlw8_hHq!QADtW-Mo?FkY<9wWlD=(kJ&F3EB=5dAGqD6D&%z28nIdj_E z+t~{qL$?QRTs_yk##M6Cx4h8xyW`%c3h!Nw{{{Cx|9)Z_OPc#tcbetk)s^;@R}bQm zhDW4J`0%N&$d@?z;&l;gzkTe9#fugdmT)(={QgD%mMu5p^YUGH-6e;2%AA4q=dGL~ zic?n3`y7|&EtZrti;)fR{QVD2$T0#?;Q6u7ubIo<3!eJboH;o;DHeUaeBaXNADWPs zfY~>&=64UVcOV!oM~BzUhCYGIThik2obbubUpWLG5TklecZpWKEa{3Av(Y{I z6XfDidge)?R=F#$Yk@{Sl0Txxou#}@y2B>9Y!ZvCA?;B)N*_kS!IKYI76j$(nF4P<-U0;9b_`mGTvl#d<<-DWK{m?^iR)N1Q9k|4DN_Ilf(1;}={9AW|o zQ|0x=Jb6tHAt{Auw!FUOHJXA98P&Cr1a-(ER0ScuHW5%48QtDbQ8oyuLpuAWtB(eG zyFp&fHKsAVCsS~eLQMYRI`c=r5I{pK=WQs z`8G;tEE_M7ljX)DI8-W0qP#cBc{JbXK5`8yehoZ!L;hIBN6xwWrjbuzH$h9Tv*w`` z(hNRNt9OI<02_q51J^KWig_hEm6e69M5=FXY8WCL6B?#AzoI0wS_ifIf3Xs*H-82| zUSl8@-3W9{7m8qS<+?thK{5LS^_2iM`)lLiXRr`2{YDwajaOBDtjRxwE47)!q`B#V zVcf9&>oBRTgE42rn4?2wHJiCmWlc9HS7e_Zs;T8_0-R4gf5;P(BYCB8qDa83?AWbn z*^eo~Oj4y6Kgk;SU>4jcSNRoJUq(zkt9+O2b-!^fzAEvM0j$i{gF{!cH7oGa&v+q8 zX0o=<*w{7{FMz;?AQNn!wODdbmYClpBrUrhYWBk2Kc zLVYWAD&!T=OnI-`41G=_dwcfE&9?9DCC%>N-gMrx&;@syEZw6Y>ZfCojfhtQxdrbS zC!gzkyr^i|pqh={lHKsm+d~SMYZ}6FsL|c<8N-lRv7Sb4J-5)aN__N|^Ima2)HOiL z<+HB7UltW@Z|sD^8e_wxzj4j*_E3LAsLWHf9VH{%I+kr!KJjvXI_rMKEQNJpb#h+W zOWNG8-U>ib3@+1K*^3tM2=$d>Mt!Bcm(7SMWKCz=hG=?kmq6cx5%;m-DQ@p|xmvS_ zH@BS8%;6VX&d?|2y%S*Gz4AWx*oX5_Mef?$VFk$A4_N#}OdN=I> zci8n2v1~Cs4rnLj1KN8KOlRLU!hZAD2>J^qXoBxJDL%osI!pU!q=$#JA10XZ zGx(LTqJA&MCNR!MI7X>Yibvtt&=wcx5)+4>hZ41Pch&U- z`w6}w9E(nLd7hQd3vXuezCcP+OM|AZ#SbCSJBsuDo41F%U42G>H=@64q?ua*R2sAc z(5lSxZ&n`hcgJ-V%$42=Z_a)4wtq83u!OrE#YRM@&*vp1vpggHA>x9rqWk3Lyi%GS zm%((sTbZ?8orU1nnp8?!-Is5~`8S>HR_xnV+^)taSfp)swu*MS8L6RJZbdw64OqOD z*b!D1W5NN-vyD%1wv#g8%lWD~I9(TWat{F>^X&05SzsXKLZxOKIg3#%JGQYiV0~pw z{Bti1I6)5}W;zxyIXIYQpuWJ7E1^T?m+kD7i%WT2DhTR;G^$rmRTi9Zd)?A40G!w0 zZrIGZ*fyVat3v>@Nh_JcMg~q{;K#xD;@#okAsmWrs$H6|rc2|3Z|UBn?a~>sXge5- zNfv)Cj^lcQdr9ZaqOmJ&HW9!+OV;;UZXMgx?lrgK{+FV2AwWqLU@Y3Ickg9d3)*o% zPJk_dtQgl|qK{Y&dSj7j8fB7~v%T@eP#vdPa?jnyuo2`z8@pg5+tkY2EXVhDndlVl zpW=%JV15?9s2wNwUT@-fiIh0kIdkF6fFazd{yBJ59Ur_4R%!_!N2yTO(kZ@;AzR=3X5ld*HL}WP>)#Ia9nlV2Wu|!@Jdq!5h%mUx3T&xP8F20QbBe zZ>>ni?MemN!1&P?JC810sE-!~hH(j@Jq#1yQ1gQK>)N#jFNeE})4@P@Uv^7p@N7aj zIRbx-L|ea*8rMKpMwL-Vx%8<1wMC$X%*V9Zdc>WDSa5fpAn&nB7GH#?H?=zub#0`~ zb@5GgqBN?0FcuT-EnSkW@1A9Y>__~y`|N;D;RbO3BF6$|xQ!tm8nskif@GahW6WJUd6;VGTHFC;#jzw zoE9@YReHc+U7h5%DtS-#CD>X|g63Gh(cRGxrL55&2|$^1FAZta!@D7lniiapaEmUZ zWS3tjVQe-*euKQuyoQ?nyZg-k#u$y&35~lsSD(42k@L}Ox=b_m5RlZ6n?DpV;vZ}{ z5kn7AM?JznvZ^SbQ-7q{nA#F0QU`HD-F$;rzXcz~F7T0O1Y#m~_9agFJ^Rk3e}d7$ zMlQ?sk2g3TEXB9Hfx3kOtG^s}?{~>+o<;@F3!1SA-}cnJG|7zaTFrzjS+Z6>l&9$f zgv}Fl0gQQfV}<3pJDm{RmrSj%6B_zL9T3 zL8vKHNk6@eV?#3J?kd8@W8VtSvhQH=B9;}f$pMq|i2KuFmKA~s_@$C{YhQt**r1;P z^0y-$*r_d^4vdJ=TbFn%bq7Ux&f=7*!e6`2QEX{YQ>9Dwl}oO7$1_Z+X2A(UbVqI@ zzlaMoP~5)cWMXm&CNb(ho0xR z*+Ft}>#{@SkisofiF#T-q%I5!vZ|#zFGKKBa=GU)bn@{MsH_a%xh9w4H(U#)PcF0F z`-k8BM-Ug$8m}NTDBL4uPvf_!$VAL#rZRu+k~+B2cvoNAAvoVHPnDV^2|ZQC97=lw zyGl1zEn$b#)zPwng4J5E1QA#ej7FX}7`TOrpMoW;o?TtChBKsR&bsg4*9?my zyYO=4-Z?q{JFdb<7B2qL(&elE?b&j#l$%>x`s=kdJB%i?U@{v=?z%=U0%i>l$A8m@ z(T0Ww2ZxW8M@p@PHSU*adkt3WmMy1VfBn?#qN3R+AHTF>Y)z6c>(u;1v(=<$i&o4& z)pp<0_2Zq>zw3Mcd0*Y1{#5r|>Du+7hFAXJ@kv|j{`kuJI$wSHtE&sC$JGFMm4GHYM8f<<&Qb-PxLc{?|Sz{cpbRh&liO literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..1bc00d280e3f18dc061e1656f29f7bf4c89c5f89 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari).a26 b/test/roms/bankswitching/F8/Raiders of the Lost Ark (1982) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..5274c722f315d7061e50fd9e371e56cde787244c GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Spy Hunter (1983) (Sega) [!].a26 b/test/roms/bankswitching/F8/Spy Hunter (1983) (Sega) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..dc189113c27f522388688af53d60ba83b430ddb6 GIT binary patch literal 8192 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 F{NK~P#99CV literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..c6317774cb5775463cabf1ef6a8b5199dd1a1c47 GIT binary patch literal 8192 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 L7!%0-SLXf)k|BR^ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [a1][!].a26 b/test/roms/bankswitching/F8/Vanguard (1982) (Atari) (PAL) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..e3d2154270afb34177ceb2bdd178f5be907e971d GIT binary patch literal 8192 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 N23F^C$o*I5{s)YKe!Ktx literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Vanguard (1982) (Atari).a26 b/test/roms/bankswitching/F8/Vanguard (1982) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..94397376542f0388398caa4aeb35a485414b90b7 GIT binary patch literal 8192 zcmbU`3v?URm7~$ZO++)+1;dd5AC|U zKw)cwlIRUCB}IYAiQ(YYQ9X*sXR*iKh+>MV14Q~(}3kv=W6$QOCLWE2{$I~%Q5)GH)?=X+&F zvLzaYM%jTGu?saKTIfeELhyn%Gb_mQHfg2MBUh`7qlS2!*DlmOIM86hQ7HbUgZI=p2hAv0v7! zUj<|ba*AfONSIV<(T0jqA5c@}a@E>JW1IL&WC**&r+`?o_zu)>inp;w(E@EN!Bg!` zy@KMqG8Dcb>FN%uidWAq`UB~~McQ-@)dusJWt+-?togvUml66vXbKfa4SZN5V)Pcu zl5jq*AUJ2583el*P*YWwhop;3QI?oLvv%812 zM2oa))W$2qv#1Z<8qooGdF&)CP9Mr|=TS*~|Ed$n9zOz4hlY%of^uon)ugoV2c+ka zz5M`kbP%FVy*=%Gi>Q0&HLSCu<%o7SvP_Mm(gJ)g;Y)h3Lv*0V_Mp}vFF^fm$negq z5}+@2_jt_-g=L~!cqKOlp@wd~PETl57s_3r$^a0eKq#P@Xzal^5rYD98lZ>J1*5u= zvQXUy-Jr2YKv-B*?Tv+=3LmB-RH5^FhCVsn>avvXBiBz23#bv6&8 z{0lIUm|Z^n?9foxq5PChGIbsvME1~GWKZ2B8K4mwM2?gbss{%{e*_d4RD*+|USx+C zC>zmO2<8XvK}WQbKLJLBkJQ?!B0HQmN3?QbXX#g3J;m!5|#A5vgRo{9{ z#~XPgD(Gk(z`7RR6a_VO-Z2C#QZkmZ;!6=z9sVr1Bv=w$5}~73pmT`wsD5k~E03Q5 zPf4K@&gy%@7ZinbIB*_;J5|`)ssWvVt&-~m@z~={$HaSpN8rl6zn&IkmXRkyi@8f5 zQl#kgP_&AUlvxiY(uhL3k@}oSFdZe9!r+ALEfBiF_kwn0Bc>CR-0x4lvX}OU%;50M z?lLbE>&74XC9{z5xYV=Y0~4MPQ9|@0D=Gq)OYyL}a6r(pW4uY|Zt;yT3h7!p?Wd3; z^mthhs~W{^;ODL4I(RZ-abySuJKey15NRG*9N2HsX_j~0mm*!H6w!5f>M$7SIRzWq zgWS`9x^Mv=s6^*o(|ihS(9ubsLiyl2pq}4l!(Gi| zDIGA7z}z^r=!Rl3aPq}u3EVHXIdfEuu-dS@S{(i)n;@Fek%Mvf#1jQ zqtS(+F=&dIg1r%akO>+HFDxnmkE|jWbe95~AEEz77tsW|jIM|}w7RLc{Znm|UqU7A zDq7P12~yfWZfU>JEGP&(QLqFpN%XSBG~h@8p_ic5h(U%baV?SoR3~mm{o+=X6pbh- z^sry|)WAXKZ|O`8qTbH4gGh<2X;&H=sJbqfl!n@KP-C?kf*PaM0#qHF@viq&sfBVC zUKG8Pe~*7Rx|*+xzQ7Mff5IoDd3@0CZ;nzOU4!BMA{FlFAQaXP=h@f&@Q5VPoY({OuB&Ja}C_&~v9ssn!-gVC(aGO_d+FTvjYkod-VCBk9 zTcG+mv@4}%rf0G`y~(kB{ZrZc`aid|-R*KwJs->#>VvhX|2_H0X^MK|G;`*6Ns8jm z{Q68kyaQ)GIy3qKMJ1DkUrR4qeb?si?s|-`kG+~082SG-V~G*=^HTYxi?zG)ckK)sZnR@ zeHH|->k!S2!{hTVjqlv*Mgm_1&(;HhW@0+c&3|bdgvxwUUo!r0fO5yn91@Fbe6`tZ zt*-{NbFkbSOxWj}sjVG&em?y9f!f*`pAWj{!zrp^*N)E49lIKCggf0k1Yw8Uc_W2izNP06TYQcV&0G-8X{EcJIiJ?%4eew|nas zx@Knf?rr4x#=U!IX1)LhVOaKo2Wo3;eP86pS@zh-uZQo`8*OFtnBVjEuClBha6kL_d~~X8H!+{xWjBDoU{yEv z=#9&=yG=Jj=h_fdI2?}W91kvE4-Pi_#`-6}IrZqpvTWzflj)joKY8}S>L)uMnfm!? z*~N}wX6TVO9aFVG{j}{f^@)qSeGexRiHCjEZYLC9iSVNSpjqfV`W$=Spqj_20Y>?WJb3#ZqLZezASK{J{2K zP;b%nz6~4pP%qWL5c(bXqv2>YdJjcY1*ID{Y$z?DUbuhz_U+$qpbE4Vdy;zhg>X3B zFi5TQ`?tYA^-ehxr2npu+J806>9Ifi@>vSMpo1&VONg+`YK?%Gy7sJ6h`^{Jxux3dGq&olwf2HYI z&~%0J(oYptx;j!7A#n>bm>y(!UYQ#6fP)a3t2m?LGB5aqM{-Q zCwutg3f~X_sFG`4!hiKYzf5W6T%d%>qimBb@Pn84WAX-oYjnH8W+b~wOQOA2GbE;uGi!m zNJA#3l_;&4)pN@x6#NpmWWr-plaTIM6i+%o>rbm@=ac>Ea1x)5w*r4Sp7a3}`pv!^ zTminO@N2-u8pvyeq!mJ&hs7HpokZ7^33W1y?*e9N>=oK9`eyM7yj-Zi(&|}{`p)&? zB|_Z082E_jL1LR^%+VCLh5HW@(Q-no-v^0FPRfBR23pxo5gkm);3Xi&(SFx(T3#8l zjNdEWR*~htby?%m<=Qmc^|Zu}SBDDWK7$mP=eQz)9xIqItY8!Ovr9Qv@Fig56Cmof z=)JW2_B)LUeox=0hus%?jS*fk8KLl#GEVCQfn zD~e=YH%}+_XnYq77?!*RRHILYLe`WdF`!J^0?{W#$-T33E&@3VWm+Y9ABXl_PS#lH z#da+*)&}-ul$p@RbW*`5gdzDr=q?~>1G|zudV_+b_#eVJ{y}&sE`{61Afa{7@CBkt&p6<6M(D;ah8T$lH{=g z?KUwK9?Dtnq_dh1V@R?=mMe}c)G#KhlvyJ&KOnmC3J8=0(+dNiY2fm)Ii58BUJrK= z-aaC{!5m&lZt_Rr&Bf|S4p1%$*@S*r0%M2~_o1UgowHgeZ^dxM(6)K=oB8Qne@9VT zGLielo4PdrJ|qI)lxYa%kH`#WVB;Posl{2NE_Ou4BnNVLxsDwU84Zdb!ion4$U2<>F~vlRcYUqWO!Vn2QHFD@m~Rb78D#f zP`D1B5Q)9`VzKX*HSmP`cfRw`KmHWp1sgYRymaQC9BYfx-nZJR->I zF>xI-#P)(j%ds0a>^L1x%0E-h@`J$m7F;mK?+qv8C&T^mSHi7uz`POx1BV?&n9J>` zV#yh@UEf4CAuIHoDj1@;cv410>%`;wMK)@XXupEaMyTL#g8wDn9!^H|IW64*dc8B; zFTxlQ=kcnoUMD5g@4UM6TGQ3wHFUM=ut#;WdW*yNBPi(PVaS(se3tf|KUqaNmfcpi zZAbOvPuB}a-~QvDiEo7^FhRc1tlDJ@)^o#?;B1ZD`U&orlSql?#gll0CUAwIz}B>o zT?`&JWEAs!=Np0BHpZ)qyEsj)rR>Ei%3*hA7Vr@J<8o;5oq}!pX5z zK5ph#PYQLu@q!Q|uMU~PP#|TkUV!un9Xq1l6dT1xG#V)mo{o({Z7kvoo{1Qvc|c_h z)CYTFu`uNapUeuQDl;-VGAfM0du(Kk&>h8Y0k(<3GlNER3bj6=WUbbUtZ(Ni*3d;O zIt}?7LXeCgdGbyvivQ71@?C*P)CsTleark?3Q| z9I-y`!A!i(vk$ab+|<`GOkEl3A}6=$ydqzd3ahHEpzpjYIjb6pR;4TaiK7_&GvZ@? zM+czdJI|+dArm%Lo49kCaR%JkA3)K=BpyA zO>ofcQ5VZP>=cqw!}~+3UcsQWa2qNb32;A|Mr*lmPr(3Bl!}k~&XX-8TSBI>luo^f zUkAidAPfB#aq74ndIcKredAG3{b$$Yhb6oGptM-tF1bMQYeH)ytAj?dHaZkBb3dMn z+zgF_&|shei&8`Y+^rMhSTxB!Iwh}F^<4BC@CYY8_^cx&=zs%6&+WekvCmQ=;k^PG zD66zUEJtZW0y1G#R39FOkWk&NsemNo$=ai}LV}G6lf)mYjo^(S!`9M?u7T^G6uM(1 z$U(Z5xK`7q9fmf7>GtT;UYS?tt>#cSGy)HJAWC5Y02IzB#knJ0;B4!K|Rsi}T@FGs0>a zYV_RZt6In~38pHGW(Y7#(BepG&=_%u{~R3x<-sSJJH>Co;)LvezjJ4uyfws*Z{_Zq z^7}1a&}QlCt&mz0az}@uvoVWJo%^$JZa@wSn9bz|xhTmE-T_a@4MvAZ0E*4Qq9(`z z1&e?<3Q9VKM`R~Kk_bK{nZe}sVDe@0q4P=SPQ^EFm9I(+L=vSF(SX5?Vou#=m5 zx~j2JUMbnZU*t(JmNk%gwyJ9rtYrWWp~WC_q4;C8Cq9IdkY?|XLs%4UtAcD>Z&$TC zInb7fYoVkW2285k;vEoBey_RXD`{*PiF5Z)gLA9MIPs$9*ra+}Psi(70Qj7lorln& zj$_%KhtXk?+Sz~_P6>znQohijnuS9a9Xd2JS>>0eg$CJx(*U702y7|6FC)ohYpHtf zCs&0GYlK{#f_H)ytRUTZTnmVrJL;$LtvZ@9TMSm?p1r}kU!Z4rF|c+oU8!Z0g@pf= z04*`Z{ydHf2U65(*v=pXW&{Q2L4Sx5z9G><+3^!z65{Cb4iYhLd&e7v;fMB8Va~p#Y1Z-&q(x0Qpk9^Fx*YPWGa@31=kaAan1&? zQBW*8$UrL=IQijehP^_VC=iChAp6k(@yQIRY*?GPKscv?|1<|ar%mk?&f}W^`&85d z;WqFCK7$N854}3oDU4{ngHh{jZ;s>$@Deo%!)pFqj80;Y;W6Qy2H7+tKSa(RbZ$&I zujauRITRw=JwFD1Jr8Dp@2;dh!Z{}nLr`mdw4XH%md!}?xEcn-hrtj#S3UP1ZNKmT z@M2a&LA~*Q^2IhJnFjxL1}=3Df+^?0J)<8kevBLlG2%loDo|5ZS?+bQ5cX-GY+->M z3Ofk_1r4EHoyVlE7AbDU1nXRR3%hdJO^#*%#5$MV!m=w@YSrsdp$#dqNlQPVSU&<7~Ef9RZ#9l2{i zssH&$NKxh*_7H7h{RX8WKq+i*v~r~GT%D%yI=KE^Pk_PAF<0gwo8Q@Z-&>^Ici-?Z z#9f;=cWP iMx)7OGLt-l1=cVxFAoM%`!iY2J>k!GAE4BCYyJlbdyI|% literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Vanguard (CCE).a26 b/test/roms/bankswitching/F8/Vanguard (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f5d6e905a01b21c3fa1977882e294a6c60372e6f GIT binary patch literal 8192 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 R&15<6cre?wkJ8?&`5y{!jeP(B literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/cfg/a2600.cfg b/test/roms/bankswitching/F8/cfg/a2600.cfg new file mode 100644 index 000000000..90dde01f6 --- /dev/null +++ b/test/roms/bankswitching/F8/cfg/a2600.cfg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/test/roms/bankswitching/F8/cfg/default.cfg b/test/roms/bankswitching/F8/cfg/default.cfg new file mode 100644 index 000000000..02f098671 --- /dev/null +++ b/test/roms/bankswitching/F8/cfg/default.cfg @@ -0,0 +1,5 @@ + + + + + diff --git a/test/roms/bankswitching/F8SC/Defender II (1984) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8SC/Defender II (1984) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..2bc9c59a4d331c94e9088bc505a27d02e92b3f3d GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8SC/Defender II (1984) (Atari) [b1].a26 b/test/roms/bankswitching/F8SC/Defender II (1984) (Atari) [b1].a26 new file mode 100644 index 0000000000000000000000000000000000000000..8f9b713c60a592f606c4a998e641886fc59b40b6 GIT binary patch literal 16384 zcmeG?eSA|zwl_B)y-5>t3oR7+ihNX3U5xC?Ru=)4R;UqC`B3-cbrrgRsE8kcRtcpO z(n2w^M%%hby!M9PKuZdi-6+utr8M!`UIa>kwqy}Q!F@U@1=>=Qcjl%Q)Ze~8_r2fS zoZHEqIdkUBnVB3z%Ex6(MkUJ+!) z_hNx9z5@%hQK?`-RS3EAvAj4BLzN8k`Jx6@2@Pn2upQZiC~6ia7iVMC0;mJX>rk1H zh$_s9Cxlyz-=TqB%U5AVeU+%-r?Lr^`Lt0c>IFHq9)P{zLf9*tZ{l%Hg06r+B^-l1j&7-}h}O?7P-x znA2+h?65aTWt>-+1}Sck|8YCb>5G7cQ;R3eBaiai#p(QJ@i(py0|C>WH6FHS-vLbe zIuWEi6C|njyYZMHix&o2PqIKkQ`fH0u2i3{-LRll_zJyczVsFJa9(||)YBE~k&Z%#hb7*krk_Q=iij=BWjJ?-etau;4*J4w_D zG_s@3eCblUcs8ybFV5j8YpE3ntZxc5u{VkgP`i)AwF=MWtz)r0>>T8MvK@LZG0ICP z$JX1P1aqSEJ=F?IxUk`_Rx7r#CxkI*d%a6c+9boaO=c`S2BQYcthTg=g8e1%`-Ne6vlc@&N>>>sQ)o zL0LQpgXy@@X0kPSK^)09i>drBF_~keMfD^G*voU7zCbF^#YM5{pmp>v3}Z zdax2$aI}+{1F;x!8ebreHv5jn=2R{!iyy-Hwkl|Gi(e)V;tTMY`T~B(($Q!KEQZB6 z-LLZ~xZAC+n3)5&YZo^1rT!$(IF72c;H5LZK^|EL7zgiy_HI!l1kqc9G8J}j{VqNq zC-aqk z@0C{6=JU3qcAvEsoi@)q4)v#fs1=wB2-9B)(;mXK0+{%9#OwyQK_7ZoQBd!Z6`{`Z zN^z1}IRWFra7{3E%>!+Ypm$2!zItd-12e ztxlCdZG9N_kl4fNVa6CN>j;<@!Y0DqzI?2KPSd~a#p1V{*AUlkT$@dx!h4|=VefaX zC|nbSvfJ0v3i49d^tQTvjaZ4d&cQo-q)F0=lYC!dWq9jDSR4;Rs(SIh&elz@5_dnL z87IQtAQIg^O&h2K?J5z?UWJWFBZ{|ZGNnI~rCG{L`5l-jDaQ&Y1s1jgJZJ&zG~cjx zIO8eww$IQ`tmz#dFIA#D z;c-@6kMSrcwYRY**s!7&fodPqQE!h{|c@^7C_v~#X z{#otmD(I{L<-)KuU~MGJM0ZVW7l+gY50>)bbd3hqVlXc6H2>mcZdg#*J2m$2;Y?%Y zX45H21YYbPgvWsmKj_zs=L9Wq*983|Jgq_!ah@bjP(pC={K@N8pM%LjaMN!cZt!Wa zTw!4@ggL~i5nd`Lroiry4hr#;BBQJVUFqpqACHX%2edCoCTALF{2J2feFFDZsW@ zLRSV9hQNUPs1bHIn3L8odYF=OuJnE!;yTWT#ZWmX%FR8eY$bTorw1@hECR7MKvS18 zppy%?)wOxf6o5HoVxw#^b_>z1_hWOzDPcMK9_9hew3xzdvT-eBd~H~CpQ4XoGFdcA(-A3` zB&g+ya!6`5t(6snu#(NP|@U&mi5Pe$wC}DMM3+ z4^J8j`Iw|oh<& z`oUh-4;G818%X9J4yC+(%N$Y?5^k<)KTbn0;t!(we zJAai-F~6pmREpX5{_ABW^Vta$#pXO};-Z1${|vNC5<%*@QJ2WHLA ze$f2ToQLN=^5|pp<}X0>D6l4Z-EA4rtOzX27jU&jt)e_Fig=|8fC4`j}~|6WQLe#A7<`ew-o?mhbsHXc{2 z)v%Oc2!JTH8l_SRNTN1Tqtr@>R+Fe9^-vM3N`w;Fj#`;Wo>;5I#8@k3qGT%|Ffox- zsR>!F1#6O^xF>2}ei+cO^z>8zU9;luXhlUuM@7Z&cevdjyWK}Bggfpq3Ibmxra6Zh zx_T=MX#ak($GO&^=y4|Y6SQKFFxjaxP(65v^O1hy65vt^=>HSVvkDty-b>8-&IS zDM*7@loTjK$yP)8@#^<7Pa5@^C(%hxZdIW4%4?WqG%z7*SOBZiI>DOegma5bYci}# zIr*TH8ny{D49{GK#adf_oBIcXtEN(Dk2DanM%P~zPXDnE8f*pE~wfrpPG(y|zP z5zY|)1i@Z61av)u4x)S->3N)8QQeKkcsnr)d%wkQZxco%yv-Pm^tKV~EG`eDk=79f zBhiR@%r?O&^O4>#sR#bh7?g$-NC^VvieN(H z1QBMEGXJs5{F_S@RlUuu?y`OW->RT3QdPf=MpnOvMx!xCjFd=Y!zb$A^(gpv(A%Jk zq3#2_iZFV#)mzbs>TN%5R9D6NFV}tG*-2Q$Z7vQw12y~62Ov5fjkMKxP~r`v zLF@ug&0b_sW8_5d+i6%|kbhkbNn*`Dw5_HAZRLOM@K`yJ&zKXsczof)1=mTdjz5J4 zp>*@vE^E2#By=3I>PXjw3>w0qtYfUBi9~px)7!wT4162X@$G03e;VoQKCtRMhU%@> zL1=_kUss0G8EB=7O#*4P#AaUD1zlaZU>#)DLq{{aK*onwZopV+B!jt8!=#NuW6YgV z=eWv7>^F$C^Y{IpVJEnYe92unZwHd}$sxug>+ntMLGW>eYz#M6lG0`3a^54(1YC~9 zhLfCk^^1bnC5g_vjR~U3Nfm72o4JH+yR0F=_S7B4qe4f8YslUW?NX&6Obg*xL1;Y* zzd{?~JEyg@-Yt%{Znho`Sl1Cv;2lyaDy_{OR$<^%k@Q^?zCt-Oq1UQL95lol*$ zp@j72L`h6x!R!x!EtU-%He5*npx_T8G&#W&666rB07U|lUoR2TPZ%XGLjHLbHD&;) zwQJWxoJdg-607t>gpwa>I^Evde&|2~1a=febrwrB`sSNbp)VS3I&|oeJ{s)<%?VB^qKwn^fZdH)Ye*{X$)YF z1~5sqRFbg%pZ;3vI%AA-L-_|3V(l0NYble-l&Z~oBNbqEMqZXGFDK`XoSdnuth}jN zDy=FDey8Q;PR%6%zp=l(oTsL0wQrbj8>wB}+m|zA)vEdP=dW6|>VeD&DZ~EMzP25h zp_rSSlasSz#fqF92t(IAGI#EtJs0=v`S#%{Q>IOs^1Fspr;c1ab?WO|=FM9$Z{EUz z0YpHfjEoGEi4X>GcFVks$d)a68T$Hp64cdEbrOW?2p=@a$cQ0^egwkUjA&HiAr*}6 zUY7lwW$(2ydIAty!=GMHe0u>LhShy2jOglKcXj6l@N8Y+1}{V2{UfK{0{eUf0tcSM z&!4|AC1r4$YRFA@=_XUR85k{-s3*aiUYDq07)GtrG1QR3NlAl;P{UGEhP^z0m0ztc zRIA&FHqmuHzJ~X$i%uSZjsYOmsZ&!~m0ra{PKvqF+yRu-9^i)8BmxxKUHuT+RajWKE0mczfBx&wW{w(_boh}+4*&dxsvpVl~ceC+@3V`tCj0PpWUbfkRuCw2e0@{cP!|F*wz7l5lDz=fyr>Z)YRP6{8jVU)Yo5AjR0)`Leuf4rrk}uTh3hQ+7ICE2b<0ImI%-U zKt@I&F9!F;K%&6L%E`%#RT3<3Q4IRofsm(_Mk|H=FnbZ0LQ=`jgNdBSwj?LNot)eP z^ZB=l9z#W{lPzKFlx?+TMfVb%)A4w4Zp$ojM#JQf(|3<`-^2|r(`=!OUd>amMKXPLB;d}kR{N&a><93YraL9X!f0l22ZT*W^pSk$-x4-@Ru~QEox&MnheZQ!g zP&tZE*{X9Wi(f}CUwih_;{PH#n^v3NfD}XDSZ$I90wiMep#=*NlzY|oX*77otZtBd72qJn_=tR?tt4} z_wKtjmyS6cxBpK7KGa~4dIo3N57)7uQ+`@^y?h-TXhre?>Og+I?mDF(TkLRbM~Z3$x&<5~xGiMg8%*c@^f|r%S8L5{}y}D4{03vOV1lX{Qf_F z{~y2qkKg~t@BicX|MC0(`2BzU{y%>IAHV;X{sSO>{||Tm|1alX{Qf_F{~y2q{};a)#qa-rnDF@h|G((| G|Gxp`AWuX9 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8SC/Defender II (1984) (Atari).a26 b/test/roms/bankswitching/F8SC/Defender II (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..06b4d24a28724920f47a57ff766527e7bc063be1 GIT binary patch literal 8192 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 R`8F_m|Hoo)@5uZAe*?W+gTep+ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8SC/Stargate (1984) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8SC/Stargate (1984) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..0d2322855c05ea104d8c8c6aa7cec26c0a76b3be GIT binary patch literal 8192 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 P|G&+7?Ee3sbpQWf)&^+= literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8SC/Stargate (1984) (Atari).a26 b/test/roms/bankswitching/F8SC/Stargate (1984) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..9ad3f1cd615d89d8fd8e259bd23b12c675630865 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/FA/Mountain King (1983) (CBS Electronics).bin b/test/roms/bankswitching/FA/Mountain King (1983) (CBS Electronics).bin new file mode 100644 index 0000000000000000000000000000000000000000..56b870d6a7d269159c3bef351d15de2bf7f68b8b GIT binary patch literal 12288 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∾ajc~6IwAyo&Rn;nM`eW_+#g) zV$tV1p^Kl5L9xA**^)+%Mf`@{&WfHE*e$DbBFX5Ozd9gGhQJYNA(Z}e;1E;X6HdBo z_Yr6L-jA+(=)n1#=v#){cfFUs@VO7Ked6V__*?^L#0n^oAw1wZkr7j15u8VpVr{$I zZ)H2Xa68e9e!L1CqX;(n&sQW5iu{r(!a8%KHPC}*5+>Woj>?}=C_)A zr>y9wVEk58$1_2U`eMIT1tHn<Qq*3mtsmctnFWkfSRRa_qFQ`(P1_qw(8CFZkMuBB}q53i;B;nftOTO6O5xjVAf zZhei2kjsw>~4}Rwud$HVs=`#xK6+B5WW#MlhRf;9pZk_Rg5|bM$KkM zjm;x0#R6MP$KthtLmf-jVlFwZx#iLH+`B8Y=2t$IG5zj!lV?^wHTmny*L=BX`D019 zFIks8efheSDa%)9EPr&PC2RRQYkI{x$Fj#2%Q~6Qy_PPnvi3XcR5|DO)Bg_2$^;13Id&c2@Whxp}&}5=+11qZ(E`*U?vl z;>SU5e*{6k{pS$T>qbClVE;M#2?zxHfGH|=7TEcqX~h5{n1zT1t~iVEWg!BAD?UN& zvJg?g73UGSEJO%!GdUW>76&mAsy6Ey5Q?WV{)buMPzDpCh}|e5q}Yj4Cz;CHK8&`A zfEKb?VjoHfEcT$(L)=yCJh5m`+0$hhaVVdGn$}90NFf7X~}n zytO&J-;hSBRf|wZVE|_uv}0`OobeCph8O^4dhqTNAj}3U z6f=P78s)e=O|%mRg=HAf!@wa};<;LJ1(0Exm7 zR~xgd7viINPy@Y!>g2du^o;%i)UrFsny4d){wfA=#a_r~H>wsHIPkR~m@eyZ13K9V z*!w^L8gDU7tmvRPBzBq<27nih0J7eZp(FHb9|Cah9BP1rHwHu%jGSVH#DRO^;P4uAi=ZcU|wgOY6w`DeGsi|EKj2u3xv_xBj{Hht~gc{RitW ztha8Myy2z|U*F)_ux7)S4L{oO>W1)!zic?S!CXDD`iAN|s+SE*!pD mT#{(cqhr z1PFwI3>XHz01}|umdAguO2z&S)86=(G7LZqlz4E)K?X1}!>I%m1I*|uo>3 zV)QV`EH^3<&|`)jE0iR_5|wup7z0$4{bTJDX^h|zP|JAuL|GNgIH3{GF@?u;KgNit>2in@v9qe+gQHw(T$rn{$S$^8{gRYyN#zday1z>g*C-B3u`KCYHD`Y zwA6$~$%#e#E7~i375<8C6_E<1VxZz|#kq=)D?X_>UvZEg^mIw`T~ZO123_JyCp7dW zu?-LB{oyht#U<`PF$Jfuwi6s}bBQgeZ4vjPu=j}A65fNb!D0X{cyYQ{HsTz>9Gv)o b*dRYMYJ5TP+0^evTUuyswQ6fsl!%##xHPq* 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∓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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/FA2/fa2plus_test.bin b/test/roms/bankswitching/FA2/fa2plus_test.bin new file mode 100644 index 0000000000000000000000000000000000000000..ccb94b4fe1159b8d7ae26308b990720e41f28a35 GIT binary patch literal 28672 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 E7t^S&761SM literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [!].a26 b/test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..6caf4cc3634eae76632826fb17c0c2673d21946c GIT binary patch literal 8192 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 fTbS|N2;Y2X&}~_`tY*^qegOheK{GL0ZI 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/MDM/MDM-test.bin b/test/roms/bankswitching/MDM/MDM-test.bin new file mode 100644 index 0000000000000000000000000000000000000000..2a172f1ed23b2788942b79ac4d1db0a6f21ad751 GIT binary patch literal 131072 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%0An*0a<4^qk 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/SB/t128.bin b/test/roms/bankswitching/SB/t128.bin new file mode 100644 index 0000000000000000000000000000000000000000..03441590d4628b61d5a8f353acc61fa0760152c6 GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/Sub2K/2k.bin b/test/roms/bankswitching/Sub2K/2k.bin new file mode 100644 index 0000000000000000000000000000000000000000..bcaafe54025b405ac443c3ab564c5d7ce0757732 GIT binary patch literal 2048 zcmcbyl3~?~Q?ooS{9ftS$~m)v;e^1imF=yJT&+y43|<$0u2k-w#i-uV7ap!{VG{V=#<<|XN~R-C7noXQk2G9hYLh+Ea)G&3 zUZ+j|NHb7S?non0P_Cnu>B6lR*%rB0#+BMY<5hSJm|9wwwqCGY+V+9@S&PoGmZdEx zw|rn-3e)&2kg literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/Sub2K/4k.bin b/test/roms/bankswitching/Sub2K/4k.bin new file mode 100644 index 0000000000000000000000000000000000000000..2eae2f8b794255503f2dac42a77cbf7c176528f8 GIT binary patch literal 4096 zcmeHJ&ube;6y9B}eywGB42i8&rb;0R*+jHU+kg)S`%p?+a>$<$2pDqdS%;9S*?H^T zwQLKl6x%r12wu`jG2|R5=uj^x_%KJ`dRyvTy0^Aik@9BULjQ;E9A@8p`@L`8n|Z^$ z)@ff0e|o!jSDuR*D8VLdiTmIIh_AsHmmxST@Q%pCWw0!`0?))-57figFFUVQw!cEk;KF4~|UPJ!_v{N;xUEX3i9Kne9Y@WGI0 zxK8*wU%>Ee3PKEM4$$rEDd|eWL<#mp4|c>o*cDn*rD*mjj9t+oTOLfvBY&%L{ZPE| z7Qh(frQy{FC{3Zk0m$*W69C^J1oXv86n$a} zooHPmo4r^ja#>NB%J&uK?3Kh4V@2D)!m4PHUZwbS(l04$uZQ07XIZXc@Q8MoO`#_n zH4I4!iSADd;64C&xJ#$ofS$Mn+Y|vy?9eVH*FwrS7eO-yGU`b#_L`9w+HJ=QZIk}E z&DbTH-@sROpvzkqoMlG)q8L+dzE0IsgpQy9Af#fWQe*YdW^yjxzzxax2Cmm0F<8fr z`g9bRA@wFdzyo=QD4G21!ghm{tKh%!4lo$b$%^;{0!p_HKJDk6lI`!oSB}B(JNbFM zNrpct7PUyoyL?`)u7K>TxQpFkLmIpb^Z(-5rx=poO~QYq@F_wa0Aa{;EA_PEZoKsm z?>1FK59Xt7W+GwIqK77KLIJm+c<;**++GCZZ07aoo1#VI`Bm*1qhh-ijaRh)j7n{l z#>vTvqg80sYBk4kwB_YouCVlAFc_uc@^ZCW8EFq6M$sh2XfqARSzIaZFz3|Lp!}_dmP;+54Zp|JnPW_6gbh QpY{J)|DW~$|A+qn1A&j=`v3p{ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/Sub2K/Pong256B.bin b/test/roms/bankswitching/Sub2K/Pong256B.bin new file mode 100644 index 0000000000000000000000000000000000000000..4947e18faa9f63d4d67bd2c96097d3dddf3ecbfa GIT binary patch literal 256 zcmcbyl3~?~Q?ooS{9ftS$~m)v;e^1imF=yJT&+y43|<$0u2k-w#i-uV7ap!{VG{V=#<<|XN~R-C7noXQk2G9hYLh+Ea)G&3 zUZ+j|NHb7S?non0P_Cnu>B6lR*%rB0#+BMY<5hSJm|9wwwqCGY+V+9@S&PoGmZdEx zw|rn-3e4z!6uy&BR&4^gp-Im;aSS~QZ8Bs^`U^q}!kA_*WX;yGkmc_1)141Gm9!8N zFb4|NV49&@=@2*!_K<4q*3F@t_oSyjxp@-$r0;u=Cw+SVt8nr!v$I$FPOU;67(7xQ z#1O$6JW)MJKtQhgkV2*saKQm$hjPGCPd|JjiWa2%+oU zEJRq_8c`sZ@sF{AjhToqBfD$QM3m{P2 zso3P#RheiHh0QWWVvFBYc-SgI6VWNfQtD*-r_F#4-kgA|LcDLdvTMuoaYUZ`i@-v6 zv2MX#JhngDGe>(>-1P{|D%MhR)|p zKlye=D5Yc>%wsOYiNj@-B6^Hb%VO9aQYbLkehK8y>ec;g*2K8zI;TE*@dC(^F;4a7 F@E^1r%}xLS literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/Sub2K/Vong_1K.bin b/test/roms/bankswitching/Sub2K/Vong_1K.bin new file mode 100644 index 0000000000000000000000000000000000000000..f1933d80fd7b945c8dac61c3e1e9a3790769a6df GIT binary patch literal 1024 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/FunkyFish.bin b/test/roms/bankswitching/UA/FunkyFish.bin new file mode 100644 index 0000000000000000000000000000000000000000..f10a64de3694c2527802d7bc3bdc359ffedbe8df GIT binary patch literal 8192 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 GKJz~Up6zG= literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/Mickey (Digivision).bin b/test/roms/bankswitching/UA/Mickey (Digivision).bin new file mode 100644 index 0000000000000000000000000000000000000000..3e8293ff46180e6fa06655b90ceb705736e555d0 GIT binary patch literal 8192 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 kU`k(lYAX>Ei+PwuC7xJ4X~41{l7TTof{(B@F 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 Mv*LgD+W7zf05UrfqyPW_ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/Time Pilot (Rentacom).bin b/test/roms/bankswitching/UA/Time Pilot (Rentacom).bin new file mode 100644 index 0000000000000000000000000000000000000000..90f86e7f7b603c8c87fc660d490d0691c6dfa994 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/UA_Limited.bin b/test/roms/bankswitching/UA/UA_Limited.bin new file mode 100644 index 0000000000000000000000000000000000000000..5cb088b299ddabe0f057a68062f31d1e7152e7fa GIT binary patch literal 8192 zcmeI#Ar8Vo5QX9GpfDVvSyK-;ASlvs2#!%%GYR1cs0|4Th~5E>s;opIR;{ln+qJC+ z@z0vc%!BcGKTX5I_I{1Q0*~0R#|0009IL UK;T~mV)nO-5L5olfieGYzRba|kpKVy literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/Vanguard (Rentacom).bin b/test/roms/bankswitching/UA/Vanguard (Rentacom).bin new file mode 100644 index 0000000000000000000000000000000000000000..6b94298681c672cfee421bfa74629045ab574a7b GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/gingerUA.bin b/test/roms/bankswitching/UA/gingerUA.bin new file mode 100644 index 0000000000000000000000000000000000000000..2f6a6f9323bffbfbbf708f592aaca5f8431b18e6 GIT binary patch literal 8192 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 AfB*mh literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/0840_EconoBanking.asm b/test/roms/bankswitching/_code/0840_EconoBanking.asm new file mode 100644 index 000000000..b655664cc --- /dev/null +++ b/test/roms/bankswitching/_code/0840_EconoBanking.asm @@ -0,0 +1,102 @@ +;;A bankswitching demo for the 0840 EconoBanking technique. 2 4K banks (8K) +;;By: Rick Skrbina 3/29/09 + + processor 6502 + include "vcs.h" + include "macro.h" + + + seg.u vars + org $80 +BG_Color ds 1 + + seg Bank0 + org $E000 + rorg $F000 +Start0 + nop + nop + nop + + CLEAN_START + +Start_Frame + lda #2 + sta VBLANK + sta VSYNC + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + sta VBLANK + + ldy #192 +Picture + sta WSYNC + dey + bne Picture + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jsr SwchTo1 + + lda BG_Color + sta COLUBK + + jmp Start_Frame + + org $EFE0 + rorg $FFE0 +SwchTo1 + lda $0FFF + nop + nop + nop + nop + nop + nop + rts + + org $EFFC + rorg $FFFC + .word Start0 + .byte "B0" + + seg Bank1 + org $F000 + rorg $F000 +Start1 + lda $0800 + +Bank1Sub + + inc BG_Color + rts + + org $FFE0 + rorg $FFE0 + + nop + nop + nop + jsr Bank1Sub + lda $0800 + + org $FFFC + rorg $FFFC + .word Start1 + .byte "B1" diff --git a/test/roms/bankswitching/_code/0840_EconoBanking.bin b/test/roms/bankswitching/_code/0840_EconoBanking.bin new file mode 100644 index 0000000000000000000000000000000000000000..45dbbb187523162e91b0e0fa4d58741b76ddf296 GIT binary patch literal 8192 zcmeI#Ar8Vo5QX9CVyJ-|kQzL_0*Vk0!7-3ElMs%8+K@CUqIW=}Dv>C}s`VAic5UlH z{Ig~|BAb!##?!0e4%Qc(5IT*lzM+4TQ{~mK^W())a)~Ek$0tUPquo3?R z12(7sUbAOz4A_$XvjrINYG85P%6hlo3=S_#HBr$td?qSISJTz^S~RhyW<{&U@|1Vv m`Ga!|ml&=w++w)L@Q5HhplH{B88#}fi7+qgaDK3PpZNL$mkmBZEa^1<~VXIg(YtEo~QDAkct9WB+dQq7iXu2l1-S}4_G zscx34U8=jKTH37A)F+mYuTSvSp|$8kfWXcI;e8ArV)z)_8=rhg_!PtE7`|-T*g04D z8pF33zHiwT>KJ~+@N>(?jq$%?_#MOQe|B{S_)dTT0RjXF5FkK+z(53AYqPWAU0gX) zO}7VfK^GxFpiu&KUC&IdrQZTR1PBlyK!5-N0t5(*v_Q)Lr*r;4CI63fpWPgRZUQO) zdj-%9$94h)2oNAZfB*pkBP5XW|CyZsFUkKS)K#}apm%{z{`U%?cQGRg5FkK+009C7 z2n?q{%KvjY|KFDXhqHlZO`snFUI+9;)j0_eAV7cs0RjXF?5jY^|7Ualza#(eYad*k zK%)dYe-z;V0yL^ACPRP#0RjXF5FkKcZvrX*pUe4wN&ep(q@xLpl7K}4qts3JLVy4P z0t5&UAV6SUAm#u0od563|DFf}1bPs#G@u70LkJKcK!5-N0t5&&P$1?1^Ev-NlK&gn z9aAFEJON7sn%5IEB0zuu0RjXF5FpTtK+69Ya{hlJ|M$XW41uv1ury%o9{~Ua2oNAZ zfB*pkLn@H+|HYjDpUeM4+CkGM&;S980vgZ+Qy@Tq009C72oNB!y+F$UmvjDqA^&d= zWiJ5&-32TP=x$>V0RjXF5FkK+0D*=Gr2Ky+=l@soe?vNA8U%(=z@mU5Y?>((AV7cs z0RjXFjGI8p|5tPVe=GlwTkG8~fq@8E8ZZ!M7a>4^009C72oNB!qd?04*K+<}mH&6N zGJpVq-3wS6uzNE{5FkK+009C72oUIpK+69MIsZrbzaPBLNnq>+EDad@M*si;0t5&U OAV7dXLj+R(zy1%-ANa)p literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/EFSC.asm b/test/roms/bankswitching/_code/EFSC.asm new file mode 100644 index 000000000..30c8674c0 --- /dev/null +++ b/test/roms/bankswitching/_code/EFSC.asm @@ -0,0 +1,762 @@ +;;A bankswitching demo for the EFSC scheme. 16 4K banks accessed by $FFE0-$FFEF +;;Also includes 128b RAM mapped at $1000 for writes and $1100 for reads +;;By: Rick Skrbina 4/4/09 + + processor 6502 + include "vcs.h" + include "macro.h" + +Bank0_Color_Read equ Bank0_Color_Write+128 + + seg.u SC_RAM + org $1000 + +Bank0_Color_Write ds 1 + + seg.u vars + org $80 + + + seg bank0 + org $0000 + rorg $F000 + + repeat 256 + .byte $00 + repend +Start0 + nop + nop + nop + CLEAN_START + +Start_Frame + lda #2 + sta VSYNC + sta VBLANK + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + lda #0 + sta VBLANK + + clc + lda Bank0_Color_Read + adc #1 + sta Bank0_Color_Write + lda Bank0_Color_Read + sta COLUBK + + ldy #12 +Picture0 + sta WSYNC + dey + bne Picture0 + + jsr Swch1 + + ldy #12 +Picture1 + sta WSYNC + dey + bne Picture1 + + jsr Swch2 + + ldy #12 +Picture2 + sta WSYNC + dey + bne Picture2 + + jsr Swch3 + + ldy #12 +Picture3 + sta WSYNC + dey + bne Picture3 + + jsr Swch4 + + ldy #12 +Picture4 + sta WSYNC + dey + bne Picture4 + + jsr Swch5 + + ldy #12 +Picture5 + sta WSYNC + dey + bne Picture5 + + jsr Swch6 + + ldy #12 +Picture6 + sta WSYNC + dey + bne Picture6 + + jsr Swch7 + + ldy #12 +Picture7 + sta WSYNC + dey + bne Picture7 + + jsr Swch8 + + ldy #12 +Picture8 + sta WSYNC + dey + bne Picture8 + + jsr Swch9 + + ldy #12 +Picture9 + sta WSYNC + dey + bne Picture9 + + jsr SwchA + + ldy #12 +PictureA + sta WSYNC + dey + bne PictureA + + jsr SwchB + + ldy #12 +PictureB + sta WSYNC + dey + bne PictureB + + jsr SwchC + + ldy #12 +PictureC + sta WSYNC + dey + bne PictureC + + jsr SwchD + + ldy #12 +PictureD + sta WSYNC + dey + bne PictureD + + jsr SwchE + + ldy #12 +PictureE + sta WSYNC + dey + bne PictureE + + jsr SwchF + + ldy #12 +PictureF + sta WSYNC + dey + bne PictureF + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jmp Start_Frame + + org $0400 + rorg $F400 +Swch1 + lda $FFE1 +Swch2 + lda $FFE2 +Swch3 + lda $FFE3 + rts + rts + rts + rts + rts + rts + rts + rts + + org $0415 + rorg $F415 +Swch4 + lda $FFE4 +Swch5 + lda $FFE5 +Swch6 + lda $FFE6 + rts + rts + rts + rts + rts + rts + rts + rts + + org $0430 + rorg $F430 +Swch7 + lda $FFE7 +Swch8 + lda $FFE8 +Swch9 + lda $FFE9 + rts + rts + rts + rts + rts + rts + rts + rts + + org $0445 + rorg $F445 +SwchA + lda $FFEA +SwchB + lda $FFEB +SwchC + lda $FFEC + rts + rts + rts + rts + rts + rts + rts + rts + + org $0460 + rorg $F460 +SwchD + lda $FFED +SwchE + lda $FFEE +SwchF + lda $FFEF + rts + rts + rts + rts + rts + rts + rts + rts + + org $0FFC + .word Start0 + .byte "00" + + seg bank1 + org $1000 + rorg $F000 + repeat 256 + .byte $00 + repend +Start1 + lda $FFE0 + +Sub1 + lda #$1F + sta COLUBK + rts + + org $1400 + rorg $F400 + nop + nop + nop + jsr Sub1 + lda $FFE0 + + org $1FFC + rorg $FFFC + .word Start1 + .byte "01" + + seg bank2 + org $2000 + rorg $F000 + + repeat 256 + .byte $00 + repend +Start2 + lda $FFE0 + +Sub2 + lda #$2F + sta COLUBK + rts + + org $2400 + rorg $F400 + nop + nop + nop + nop + nop + nop + jsr Sub2 + lda $FFE0 + + org $2FFC + rorg $FFFC + .word Start2 + .byte "02" + + seg bank3 + org $3000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start3 + lda $FFE0 + +Sub3 + lda #$3F + sta COLUBK + rts + + org $3400 + rorg $F400 + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr Sub3 + lda $FFE0 + + org $3FFC + rorg $FFFC + .word Start3 + .byte "03" + + seg bank4 + org $4000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start4 + lda $FFE0 + +Sub4 + lda #$4F + sta COLUBK + rts + + org $4415 + rorg $F415 + nop + nop + nop + jsr Sub4 + lda $FFE0 + + org $4FFC + rorg $FFFC + .word Start4 + .byte "04" + + seg bank5 + org $5000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start5 + lda $FFE0 + +Sub5 + lda #$5F + sta COLUBK + rts + + org $5415 + rorg $F415 + nop + nop + nop + nop + nop + nop + jsr Sub5 + lda $FFE0 + + org $5FFC + rorg $FFFC + .word Start5 + .byte "05" + + seg bank6 + org $6000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start6 + lda $FFE0 + +Sub6 + lda #$66 + sta COLUBK + rts + + org $6415 + rorg $F415 + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr Sub6 + lda $FFE0 + + org $6FFC + rorg $FFFC + .word Start6 + .byte "06" + + seg bank7 + org $7000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start7 + + lda $FFE0 + +Sub7 + lda #$7F + sta COLUBK + rts + + org $7430 + rorg $F430 + nop + nop + nop + jsr Sub7 + lda $FFE0 + + org $7FFC + rorg $FFFC + .word Start7 + .byte "07" + + seg bank8 + org $8000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start8 + lda $FFE0 + +Sub8 + lda #$8F + sta COLUBK + rts + + org $8430 + rorg $F430 + nop + nop + nop + nop + nop + nop + jsr Sub8 + lda $FFE0 + + org $8FFC + rorg $FFFC + .word Start8 + .byte "08" + + seg bank9 + org $9000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start9 + lda $FFE0 + +Sub9 + lda #$9F + sta COLUBK + rts + + org $9430 + rorg $F430 + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr Sub9 + lda $FFE0 + + org $9FFC + rorg $FFFC + .word Start9 + .byte "09" + + seg bankA + org $A000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartA + lda $FFE0 + +SubA + lda #$AF + sta COLUBK + rts + + org $A445 + rorg $F445 + nop + nop + nop + jsr SubA + lda $FFE0 + + org $AFFC + rorg $FFFC + .word StartA + .byte "0A" + + seg bankB + org $B000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartB + lda $FFE0 + +SubB + lda #$BF + sta COLUBK + rts + + org $B445 + rorg $F445 + nop + nop + nop + nop + nop + nop + jsr SubB + lda $FFE0 + + org $BFFC + rorg $FFFC + .word StartB + .byte "0B" + + seg bankC + org $C000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartC + lda $FFE0 + +SubC + lda #$CF + sta COLUBK + rts + + org $C445 + rorg $F445 + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr SubC + lda $FFE0 + + + org $CFFC + rorg $FFFC + .word StartC + .byte "0C" + + seg bankD + org $D000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartD + lda $FFE0 + +SubD + lda #$DF + sta COLUBK + rts + + org $D460 + rorg $F460 + nop + nop + nop + jsr SubD + lda $FFE0 + + org $DFFC + rorg $FFFC + .word StartD + .byte "0D" + + seg bankE + org $E000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartE + lda $FFE0 + +SubE + lda #$EF + sta COLUBK + rts + + org $E460 + rorg $F460 + nop + nop + nop + nop + nop + nop + jsr SubE + lda $FFE0 + + org $EFFC + rorg $FFFC + .word StartE + .byte "0E" + + seg bankF + org $F000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +StartF + lda $FFE0 + +SubF + lda #$FF + sta COLUBK + rts + + org $F460 + rorg $F460 + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr SubF + lda $FFE0 + + org $FFFC + rorg $FFFC + .word StartF + .byte "0F" diff --git a/test/roms/bankswitching/_code/EFSC.bin b/test/roms/bankswitching/_code/EFSC.bin new file mode 100644 index 0000000000000000000000000000000000000000..8025a8145b24f2fb6da84ec6ccdbb0f4ae11ce34 GIT binary patch literal 65536 zcmeI)J8KkC7zW@;0zyC}jSvttjkVEe)JnWWf(rfw146)mV5iN32x4zzu<{fKe}cV@ zmUiB6>m>y2ERHAHWWtgQo9oWbJ`+g3%*^hb^USx!JLIG&`g?0On|I$nD;_?7^t!`lR=3M)cBRUb7??Y{G{75&7Ltv?#scv}iXT(_lxCK< z#Z%+w6u+eSwQXnXJ>s_%zo+=4?NDr{_%p>{Z9A9G|DEEW6zA7D)H=a;0t5&UAV7cs z0RjZ}MW9$1AMfwyHBbUw}&99D^c2fB*pk1PBlyuswmC|If((Da^|M z+iM`Ns;7WO0rkAEW<`Ji0RjXF5FpUk0y+Or%Ks_clmGkrb71nF3s@S^xs@{s5FkK+ z009C72vkWR=l`?ve+rM~|0=bmu~b;V(trxz977{OfB*pk1PBlyu!%s<|L5fY6rRfe zn{%(%l|37kpFwBZH={R0u}{S?T#1^0RjXF z5FkK+0D(0EIsadj|5JD=|F7u{I|y_vU{OHFR8Ay7fB*pk1PBly&@F+S|1Zh^DZG~d zyVZiOTL%G)0_t!V&4B;`0t5&UAV8qz0y+O*mj6?DC;!*H(@n2i0+t4JOWt(}5FkK+ z009C72(%02{C`FMPhnpEZ*L605!fXGO9OTZ(%TRqK!5-N0t5&U*r7nq|5NgR3Q7Lo hVJCSxf%OF}4OrjBUIGLN5FkK+009E~Es*p7)&Inb0Pg?* literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/F0_MegaBoy.asm b/test/roms/bankswitching/_code/F0_MegaBoy.asm new file mode 100644 index 000000000..e21b8d5ff --- /dev/null +++ b/test/roms/bankswitching/_code/F0_MegaBoy.asm @@ -0,0 +1,761 @@ +;;A bankswitching demo for the F0 (Dynacom MegaBoy) BS technique. 16 4K banks (64K total) +;;3/26/09 By: Rick Skrbina + + processor 6502 + include "vcs.h" + include "macro.h" + + seg.u vars + org $80 + + seg bank0 + org $0000 + rorg $F000 +Start0 + CLEAN_START + + + lda #$0F + sta COLUBK + +Start_Frame + lda #2 + sta VBLANK + sta VSYNC + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + sta VBLANK + + lda #$0F + sta COLUBK + + ldy #9 +Picture0 + sta WSYNC + dey + bne Picture0 + + lda #1 + jsr Switch_Banks + + ldy #9 +Picture1 + sta WSYNC + dey + bne Picture1 + + lda #2 + jsr Switch_Banks + + ldy #9 +Picture2 + sta WSYNC + dey + bne Picture2 + + lda #3 + jsr Switch_Banks + + ldy #9 +Picture3 + sta WSYNC + dey + bne Picture3 + + lda #4 + jsr Switch_Banks + + ldy #9 +Picture4 + sta WSYNC + dey + bne Picture4 + + lda #5 + jsr Switch_Banks + + ldy #9 +Picture5 + sta WSYNC + dey + bne Picture5 + + lda #6 + jsr Switch_Banks + + ldy #9 +Picture6 + sta WSYNC + dey + bne Picture6 + + lda #7 + jsr Switch_Banks + + ldy #9 +Picture7 + sta WSYNC + dey + bne Picture7 + + lda #8 + jsr Switch_Banks + + ldy #9 +Picture8 + sta WSYNC + dey + bne Picture8 + + lda #9 + jsr Switch_Banks + + ldy #9 +Picture9 + sta WSYNC + dey + bne Picture9 + + lda #10 + jsr Switch_Banks + + ldy #9 +Picture10 + sta WSYNC + dey + bne Picture10 + + lda #11 + jsr Switch_Banks + + ldy #9 +Picture11 + sta WSYNC + dey + bne Picture11 + + lda #9 + jsr Switch_Banks + + ldy #9 +Picture12 + sta WSYNC + dey + bne Picture12 + + lda #13 + jsr Switch_Banks + + ldy #9 +Picture13 + sta WSYNC + dey + bne Picture13 + + lda #14 + jsr Switch_Banks + + ldy #9 +Picture14 + sta WSYNC + dey + bne Picture14 + + lda #15 + jsr Switch_Banks + + ldy #9 +Picture15 + sta WSYNC + dey + bne Picture15 + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jmp Start_Frame + + org $0E00 + rorg $FE00 + +Switch_Banks + cmp Identity0 + beq Stayin0 + sta $1FF0 + jmp Switch_Banks +Stayin0 + rts + + +Identity0 + .byte $00 + + org $0FFC + rorg $FFFC + .word Start0 + .byte "B0" + + seg Bank1 + org $1000 + rorg $F000 +Start1 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B1_swch + +B1_Color + lda #$1F + sta COLUBK + + lda #0 + jmp B1_swch + + org $1E00 + rorg $FE00 +B1_swch + cmp Identity1 + beq Stayin1 + sta $1FF0 + jmp B1_swch +Stayin1 + jmp B1_Color + + +Identity1 + .byte $01 + + org $1FFC + .word Start1 + .byte "B1" + + seg Bank2 + org $2000 + rorg $F000 +Start2 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B2_swch + +B2_Color + + lda #$2F + sta COLUBK + + lda #0 + jmp B2_swch + + org $2E00 + rorg $FE00 +B2_swch + cmp Identity2 + beq Stayin2 + sta $1FF0 + jmp B2_swch +Stayin2 + jmp B2_Color + +Identity2 + .byte $02 + + org $2FFC + rorg $FFFC + .word Start2 + .byte "B2" + + seg Bank3 + org $3000 +Start3 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B3_swch + +B3_Color + lda #$3F + sta COLUBK + lda #0 + jmp B3_swch + + org $3E00 + rorg $FE00 +B3_swch + cmp Identity3 + beq Stayin2 + sta $1FF0 + jmp B3_swch +Stayin3 + jmp B3_Color + +Identity3 + .byte $03 + + org $3FFC + rorg $FFFC + .word Start3 + .byte "B3" + + seg Bank4 + org $4000 + rorg $F000 +Start4 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B4_swch + +B4_Color + + lda #$4F + sta COLUBK + + lda #0 + jmp B4_swch + + org $4E00 + rorg $FE00 + +B4_swch + cmp Identity4 + beq Stayin4 + sta $1FF0 + jmp B4_swch +Stayin4 + jmp B4_Color + +Identity4 + .byte $04 + + org $4FFC + rorg $FFFC + .word Start4 + .byte "B4" + + seg Bank5 + org $5000 + rorg $F000 +Start5 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B5_swch + +B5_Color + + lda #$5F + sta COLUBK + + lda #0 + jmp B5_swch + + org $5E00 + rorg $FE00 + +B5_swch + cmp Identity5 + beq Stayin5 + sta $1FF0 + jmp B5_swch +Stayin5 + jmp B5_Color + +Identity5 + .byte $05 + + org $5FFC + rorg $FFFC + .word Start5 + .byte "B5" + + seg Bank6 + org $6000 + rorg $F000 +Start6 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B6_swch + +B6_Color + + lda #$6F + sta COLUBK + + lda #0 + jmp B6_swch + + org $6E00 + rorg $FE00 + +B6_swch + cmp Identity6 + beq Stayin6 + sta $1FF0 + jmp B6_swch +Stayin6 + jmp B6_Color + +Identity6 + .byte $06 + + org $6FFC + rorg $FFFC + .word Start6 + .byte "B6" + + seg Bank7 + org $7000 + rorg $F000 +Start7 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B7_swch + +B7_Color + + lda #$7F + sta COLUBK + + lda #0 + jmp B7_swch + + org $7E00 + rorg $FE00 + +B7_swch + cmp Identity7 + beq Stayin7 + sta $1FF0 + jmp B7_swch +Stayin7 + jmp B7_Color + +Identity7 + .byte $07 + + org $7FFC + rorg $FFFC + .word Start7 + .byte "B7" + + seg Bank8 + org $8000 + rorg $F000 +Start8 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B8_swch + +B8_Color + + lda #$8F + sta COLUBK + + lda #0 + jmp B8_swch + + org $8E00 + rorg $FE00 + +B8_swch + cmp Identity8 + beq Stayin8 + sta $1FF0 + jmp B8_swch +Stayin8 + jmp B8_Color + +Identity8 + .byte $08 + + org $8FFC + rorg $FFFC + .word Start8 + .byte "B8" + + seg Bank9 + org $9000 + rorg $F000 +Start9 + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp B9_swch + +B9_Color + + lda #$9F + sta COLUBK + + lda #0 + jmp B9_swch + + org $9E00 + rorg $FE00 + +B9_swch + cmp Identity9 + beq Stayin9 + sta $1FF0 + jmp B9_swch +Stayin9 + jmp B9_Color + +Identity9 + .byte $09 + + org $9FFC + rorg $FFFC + .word Start9 + .byte "B9" + + seg BankA + org $A000 + rorg $F000 +StartA + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BA_swch + +BA_Color + + lda #$AF + sta COLUBK + + lda #0 + jmp BA_swch + + org $AE00 + rorg $FE00 + +BA_swch + cmp IdentityA + beq StayinA + sta $1FF0 + jmp BA_swch +StayinA + jmp BA_Color + +IdentityA + .byte $0A + + org $AFFC + rorg $FFFC + .word StartA + .byte "BA" + + seg BankB + org $B000 + rorg $F000 +StartB + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BB_swch + +BB_Color + + lda #$BF + sta COLUBK + lda #0 + jmp BB_swch + + org $BE00 + rorg $FE00 + +BB_swch + cmp IdentityB + beq StayinB + sta $1FF0 + jmp BB_swch +StayinB + jmp BB_Color + +IdentityB + .byte $0B + + org $BFFC + rorg $FFFC + .word StartB + .byte "BB" + + seg BankC + org $C000 + rorg $F000 +StartC + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BC_swch + +BC_Color + + lda #$CF + sta COLUBK + + lda #0 + jmp BC_swch + + org $CE00 + rorg $FE00 + +BC_swch + cmp IdentityC + beq StayinC + sta $1FF0 + jmp BC_swch +StayinC + jmp BC_Color + +IdentityC + .byte $0C + + org $CFFC + rorg $FFFC + .word StartC + .byte "BC" + + seg BankD + org $D000 + rorg $F000 +StartD + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BD_swch + +BD_Color + + lda #$DF + sta COLUBK + + lda #0 + jmp BD_swch + + org $DE00 + rorg $FE00 + +BD_swch + cmp IdentityD + beq StayinD + sta $1FF0 + jmp BD_swch +StayinD + jmp BD_Color + +IdentityD + .byte $0D + + org $DFFC + rorg $FFFC + .word StartD + .byte "BD" + + seg BankE + org $E000 + rorg $F000 +StartE + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BE_swch + +BE_Color + + lda #$EF + sta COLUBK + + lda #0 + jmp BE_swch + + org $EE00 + rorg $FE00 + +BE_swch + cmp IdentityE + beq StayinE + sta $1FF0 + jmp BE_swch +StayinE + jmp BE_Color + +IdentityE + + .byte $0E + + org $EFFC + rorg $FFFC + .word StartE + .byte "BE" + + seg BankF + org $F000 + rorg $F000 +StartF + CLEAN_START + lda #$F0 + sta $FE + lda #0 + jmp BF_swch + +BF_Color + + lda #$FF + sta COLUBK + + lda #0 + jmp BF_swch + + org $FE00 + rorg $FE00 + +BF_swch + cmp IdentityF + beq StayinF + sta $1FF0 + jmp BF_swch +StayinF + jmp BF_Color + +IdentityF + .byte $0F + + org $FFFC + rorg $FFFC + .word StartF + .byte "BF" + diff --git a/test/roms/bankswitching/_code/F0_MegaBoy.bin b/test/roms/bankswitching/_code/F0_MegaBoy.bin new file mode 100644 index 0000000000000000000000000000000000000000..d4ec07408541ab087c9d58b29d53be6183c016d9 GIT binary patch literal 65536 zcmeI%xoT8V9Khi_lXbF9V{L4#jk{K2To4KP2>J%L>8vh@Aoex}E2r`i>;*BUosZ!3 zfr%#pU()<%yXTzmPV-B4e|;|Aefj?J+5W+xU-kywvQrji_vrU|S?pac zyKnao%FfYid%fcagU*#=^l$D)^ISB~NAp57FGllHG%rVUFPc}Pc{Q5j_pC?HZ$xuH zn!~a7E+21yr$0ROLx2DQ0t5&UAV7csfffq)^61Q z!*Vnz!WUt%8U7G(G_)DV*$EIJK!5-N0t5&UAkZ*@9~=Msf9KM$)3DPy&S?Un|F38J z|C;_k&CP2B2oNAZfB*pk1PBnQqd?mK-8vq@o-Zg6`u|3@{~zf83zGU60RjXF5FkK+ z009C7Dl3rm|JGb(_i1C}7bv#2Z)W@dh5jGEwkr}KK!5-N0t5&UAV6TY0!jZ5=V!Ya zt4~!R{Qv(}w*O!1|Eb;xixD6|fB*pk1PBlyKwt_2Y5y-wVMR++MIiM5?QH+Q*8f$x zNA^L0009C72oNAZfB=DU38ekMIIhdOP7MS?|KG{>{~P^ZgWG3|1PBlyK!5-N0t5&U zIF~@$|4ZlktT)$NAoTy;Z2y1I|MkAJc29r+0RjXF5FkK+0D+SNY5y;ue1m5iD-ins zUbg=~>Ho&wbO$3qfB*pk1PBlyK%lh(Y5(_H>(Iu7hyK5x?f^009C7 z2oNAZpxFXx|F1Oruuhi8Cf3*Q8a)h%A zg#O>o_Ww`)e^x{9BS3%v0RjXF5FkK+KwSjV{$H!hw(WBa0-^sOW&8iP{vQLcOAsJH zfB*pk1PBlyK%i0rY5%WRYHv0(S%J|1kF)*%NB>V&-qi^ZAV7cs0RjXF5FjvpfwccO zroRCz&P*Wm|C4P0AL{>^-4qKGAV7cs0RjXF5FkKcLIP?3_b0T9%T`e!^#9YpAa4{_ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/F4.asm b/test/roms/bankswitching/_code/F4.asm new file mode 100644 index 000000000..987f33930 --- /dev/null +++ b/test/roms/bankswitching/_code/F4.asm @@ -0,0 +1,381 @@ +;;A demo for the F4 banking scheme. 8 4K banks (32K total) +;;By: Rick Skrbina 3/31/09 + + processor 6502 + include "vcs.h" + include "macro.h" + + seg.u vars + org $80 + + + seg bank0 + org $8000 + rorg $F000 + +Start0 + nop + nop + nop + + CLEAN_START + +Start_Frame + lda #2 + sta VBLANK + sta VSYNC + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + + lda #$0F + sta COLUBK + + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + lda #0 + sta VBLANK + + sta WSYNC + + ldy #23 +Picture0 + sta WSYNC + dey + bne Picture0 + + jsr Swch1 + + ldy #23 +Picture1 + sta WSYNC + dey + bne Picture1 + + jsr Swch2 + + ldy #23 +Picture2 + sta WSYNC + dey + bne Picture2 + + jsr Swch3 + + ldy #23 +Picture3 + sta WSYNC + dey + bne Picture3 + + jsr Swch4 + + ldy #23 +Picture4 + sta WSYNC + dey + bne Picture4 + + jsr Swch5 + + ldy #23 +Picture5 + sta WSYNC + dey + bne Picture5 + + jsr Swch6 + + ldy #23 +Picture6 + sta WSYNC + dey + bne Picture6 + + jsr Swch7 + + ldy #23 +Picture7 + sta WSYNC + dey + bne Picture7 + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jmp Start_Frame + + org $8FC0 + rorg $FFC0 + +Swch7 + lda $FFFB + nop + nop + nop + nop + nop + nop + rts + + + org $8FD0 + rorg $FFD0 +Swch1 + lda $FFF5 +Swch2 + lda $FFF6 +Swch3 + lda $FFF7 + + rts + rts + rts + rts + rts + rts + rts + + org $8FE0 + rorg $FFE0 +Swch4 + lda $FFF8 +Swch5 + lda $FFF9 +Swch6 + lda $FFFA + + rts + rts + rts + rts + rts + rts + rts + + + org $8FFC + rorg $FFFC + .word Start0 + .byte "B0" + + seg bank1 + org $9000 + rorg $F000 + +Start1 + lda $FFF4 + +Bank1Sub + lda #$1F + sta WSYNC + sta COLUBK + rts + + org $9FD0 + rorg $FFD0 + + nop + nop + nop + jsr Bank1Sub + sta $FFF4 + + org $9FFC + rorg $FFFC + .word Start1 + .byte "B1" + + seg bank2 + org $A000 + rorg $F000 +Start2 + lda $FFF4 + +Bank2Sub + lda #$2F + sta WSYNC + sta COLUBK + rts + + org $AFD0 + rorg $FFD0 + + nop + nop + nop + nop + nop + nop + jsr Bank2Sub + sta $FFF4 + + org $AFFC + rorg $FFFC + .word Start2 + .byte "B2" + + seg bank3 + org $B000 + rorg $F000 +Start3 + lda $FFF4 + +Bank3Sub + lda #$3F + sta WSYNC + sta COLUBK + rts + + org $BFD0 + rorg $FFD0 + + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr Bank3Sub + sta $FFF4 + + org $BFFC + rorg $FFFC + .word Start3 + .byte "B3" + + seg bank4 + org $C000 + rorg $F000 + +Start4 + lda $FFF4 + +Bank4Sub + lda #$4F + sta WSYNC + sta COLUBK + rts + + org $CFE0 + rorg $FFE0 + + nop + nop + nop + jsr Bank4Sub + sta $FFF4 + + org $CFFC + rorg $FFFC + .word Start4 + .byte "B4" + + seg bank5 + org $D000 + rorg $F000 + +Start5 + lda $FFF4 + +Bank5Sub + lda #$5F + sta WSYNC + sta COLUBK + rts + + org $DFE0 + rorg $FFE0 + + nop + nop + nop + nop + nop + nop + jsr Bank5Sub + sta $FFF4 + + org $DFFC + rorg $FFFC + .word Start5 + .byte "B5" + + seg bank6 + org $E000 + rorg $F000 + +Start6 + lda $FFF4 + +Bank6Sub + + lda #$6F + sta WSYNC + sta COLUBK + rts + + org $EFE0 + rorg $FFE0 + + nop + nop + nop + nop + nop + nop + nop + nop + nop + jsr Bank6Sub + sta $FFF4 + + org $EFFC + rorg $FFFC + .word Start6 + .byte "B6" + + seg bank7 + org $F000 + rorg $F000 + +Start7 + lda $FFF4 + +Bank7Sub + + lda #$8F + sta WSYNC + sta COLUBK + rts + + org $FFC0 + rorg $FFC0 + + nop + nop + nop + jsr Bank7Sub + sta $FFF4 + + org $FFFC + rorg $FFFC + .word Start7 + .byte "B7" + + diff --git a/test/roms/bankswitching/_code/F4.bin b/test/roms/bankswitching/_code/F4.bin new file mode 100644 index 0000000000000000000000000000000000000000..1a2470daaf9e441e7f443d212cf9c3fb13d61e2b GIT binary patch literal 32768 zcmeI(ElUJJ90%a_OcsqcwU~X^D40Y9KZ5rStbTz75yWmfOkUXUU^WSY7zM#_>4NWu zapuljuDEX8@XVI~GPAqGGwCgHni_Pg84C-N+BrE4$Gx-Zz=r%j$YmrH^&y1~1&7?gxzk0RjXF5FkK+009C7 z2oU&7p!g2GL2D036tAIp3&neA4_omOiqBAdjqbk`Y?-W4H|7$7#AISf8 zXpJF2fB*pk1PBlyK!5-N0*w`@+6jpHe?8^@L;1h4>t|vF2oNAZfB*pk1PBlyK%kC5 z)&Br7|8J!HeVJTk|2I?qKbQX-yM87{fB*pk Z1PBlyK!5-N0tAvk)%pJagkt{R`T@#S>7=PF|32BU}_7()e`SY!Fb@y;{(CM{3_g{J);(yfU9- z^ZzROzsyU_+z>zj0R#|0009ILKmdVK3Pkq;~M$pGMU-yxOL^ zeXDy@m7hpQ)r-r4u`C1-KmY**5I_I{1Q0*~0R#~EzkqsJ^|b0`lX|sJ^h_M7Jjep+ zC+$8p0tg_000IagfB*srAbvxw&s){7w%GtN}tVg@yEi(cLAbrXBw%Ddz(lJFo`; literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/F8SC.asm b/test/roms/bankswitching/_code/F8SC.asm new file mode 100644 index 000000000..26aa08552 --- /dev/null +++ b/test/roms/bankswitching/_code/F8SC.asm @@ -0,0 +1,135 @@ +;;A bankswitching demo for the F8SC scheme. 2 4K banks of ROM + 128 bytes of RAM +;;By: Rick Skrbina 3/29/09 + + processor 6502 + include "vcs.h" + include "macro.h" + +PF_Color_Read equ PF_Color_Write+128 + seg.u vars + org $80 + + + + seg.u SC_RAM_vars + org $1000 +PF_Color_Write ds 1 + + seg Bank_0 + + org $E000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Start_0 + nop + nop + nop + + CLEAN_START +; jsr Call_1 + lda #$FF + sta PF1 +StartFrame + lda #2 + sta VBLANK + sta VSYNC + + sta WSYNC + sta WSYNC + sta WSYNC + + lda #0 + sta VSYNC + + ldy #37 +Vert + sta WSYNC + dey + bne Vert + + lda #0 + sta VBLANK + + ldy #192 +Pic + sta WSYNC + dey + bne Pic + + lda #2 + sta VBLANK + + ldy #30 +Over + sta WSYNC + dey + bne Over + + jsr Call_1 + + lda PF_Color_Read + sta COLUPF + + + jmp StartFrame + + + + + org $EFE0 + rorg $FFE0 +Call_1 + stx $FFF9 + + nop + nop + nop + nop + nop + nop + + rts + + org $EFF8 + rorg $FFF8 + .word $FFFF + .word Start_0 + .word Start_0 + .word Start_0 + + seg Bank_1 + + org $F000 + rorg $F000 + + repeat 256 + .byte $00 + repend + +Init_1 + sta $FFF8 +Bank1_Sub +; lda #$0F +; sta COLUPF +; inc PF_Color + clc + lda PF_Color_Read + adc #1 + sta PF_Color_Write + rts + + org $FFE3 + rorg $FFE3 + jsr Bank1_Sub + stx $FFF8 + + org $FFF8 + .word $FFFF + .word Init_1 + .word Init_1 + .word Init_1 + diff --git a/test/roms/bankswitching/_code/F8SC.bin b/test/roms/bankswitching/_code/F8SC.bin new file mode 100644 index 0000000000000000000000000000000000000000..7c3cfba1eba50cdf39247461cf8986c753bc0b2b GIT binary patch literal 8192 zcmeI#Ar8Vo5QX8{#h^%oLXjHog5VHXZh*v0LP**Jpc)h_xC0u6M55QND?uzv>)HcA z(tpOxWLHc+_e6$W-uvz2B!~0uxV*nz)QPidRMdXkiAuFlyH8J|rnCzf>k)Oy g*bzVg0R#|0009ILKmY**5cpq#d=$#Me_osaKknA5{r~^~ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/FA_CBS+RAM.asm b/test/roms/bankswitching/_code/FA_CBS+RAM.asm new file mode 100644 index 000000000..a38d240ea --- /dev/null +++ b/test/roms/bankswitching/_code/FA_CBS+RAM.asm @@ -0,0 +1,192 @@ +;;A demo using CBS Electronic's FA (12K) + RAM (256 bytes) bankswitching scheme +;;3/20/09 By: Rick Skrbina + + processor 6502 + include "vcs.h" + include "macro.h" + +;BG_Color_Read equ BG_Color_Write+256 +;PF_Color_Read equ PF_Color_Write+256 +;BG_Write equ $1000 +BG_Read equ BG_Write+256 +PF_Read equ PF_Write+256 + + seg.u RIOT_vars + org $80 + + + seg.u FA_RAM_vars + org $1000 +BG_Write ds 1 +PF_Write ds 1 + + seg bank_0 + org $D000 + rorg $F000 + + repeat 512 + .byte $D0 + repend +Bank0 + + nop + nop + nop + + CLEAN_START + + lda #$FF + sta PF_Write + sta PF1 + + lda #$0F + sta COLUBK + +Start_Frame + + lda #2 + sta VBLANK + sta VSYNC + + sta WSYNC + sta WSYNC + sta WSYNC + + lda #0 + sta VSYNC + + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + lda #0 + sta VBLANK + + ldy #192 +Picture + sta WSYNC + dey + bne Picture + + lda #2 + sta VBLANK + + ldy #30 +Overscan + sta WSYNC + dey + bne Overscan + + jsr Switch_To_1 + jsr Switch_To_2 + + lda BG_Read + sta COLUBK + + lda PF_Read + sta COLUPF + + jmp Start_Frame + + org $D300 + rorg $F300 + +Switch_To_1 ;$F300 + + lda $FFF9 + + nop + nop + nop + + nop + nop + nop + + rts + +Switch_To_2 ;$ + + lda $FFFA + + nop + nop + nop + + nop + nop + nop + + rts + + + org $DFFC + rorg $FFFC + .word Bank0 + .byte "B0" + + seg bank_1 + org $E000 + rorg $F000 + + repeat 512 + .byte $00 + repend + +Bank1 + lda $FFF8 + +Change_BG_Color + + clc + lda BG_Read + adc #1 + sta BG_Write + + rts + + org $E303 + rorg $F303 + + + jsr Change_BG_Color + lda $FFF8 + + org $EFFC + rorg $FFFC + .word Bank1 + .byte "B1" + + seg bank_2 + org $F000 + rorg $F000 + + repeat 512 + .byte $00 + repend + +Bank2 + + lda $FFF8 + +Change_PF_Color + + sei + lda PF_Read + sbc #1 + sta PF_Write + + rts + + org $F30D + rorg $F30D + + jsr Change_PF_Color + lda $FFF8 + + org $FFFC + rorg $FFFC + .word Bank2 + .byte "B2" diff --git a/test/roms/bankswitching/_code/FA_CBS+RAM.bin b/test/roms/bankswitching/_code/FA_CBS+RAM.bin new file mode 100644 index 0000000000000000000000000000000000000000..a20cab2915f35528d146e21ebb777f920e7fa03f GIT binary patch literal 12288 zcmeI%Ee^s!5QgE|VgSL914C-?z!6Xg4uRzcTwoGH!Ua$bii*7h8db>^s4RvbQ3eRX zVrk!5Gh)QD0v`rnF({iT#%gqPtB1jI{lRl2eZFTopd<kGIM60bkj*PbIy6bY~Fsq|KaCF=hK((pHF`Lxm@gZdJDb9^mp3p zoImX?evEhHy~~@u<@4*q%Zr7T&hP*K|MKt9WHt`Lzi|F=_`tIpgTM25ed{dshp+eZ zSj`#)2oNAZfB*pk1PBlyP=!Ee(CvQhEM4B}EvvsO22g`Fqy1N|4dPc&gT2@S0RjXF z5FkK+009C72$Ulb{lA*}|F-@w2RMVL>i-OeWQzm{5FkK+009C72oNYJ5dFWF`u~pp zFDRMs?fO68+1WV(0t5&UAV7cs0RjXj6^Q;{PyK&a|4&NRxbNxz#*Ng02oNAZfB*pk z1PBlya77^cehrY&#i|F%rpISCLTK!5-N0t5&UXtO}{|7Pm{`})7NKLh>W z+R-~W0RjXF5FkK+009Cm5{UlaO8x&p|F>xBqes>MqaLmZ5FkK+009C72oNC9M1ko4 z?bQE|^nVk_JJFf+|3pl_M1TMR0t5&UAV7csfvg3h|94XVujv1*=U8O(`oD;tdkGLA zK!5-N0t5&UAdrVZ^#5+^|Ht}2kAao2OZ{I0sz(waK!5-N0t5&UAV8pI0@43_ssEqo z|C&u^e%sOi^Ru=R0RjXF5FkK+009C7suGC)-%tJjO#fFkg38y`|CNux1_%%!K!5-N z0t5&UAW*tM^#4KX|L6L@bnCh`D4Rvw_(z0RjXF5FkK+009C7rVxn!KT7@oQvXk(*Nj{Ae>3Lj6a)wmAV7cs0RjXF z5Ev&A{ePVL|CRn9$JFT0^natr>u>}J5FkK+009C72oM+wbOx*4)c;-m-`Zb<{%`H* z9h?9G0t5&UAV7csffflw|F5S0U(^3Bn)>Kb_5Y}cD*^-v5FkK+009C72sBY3`hP9; z|Azi=;&>-Ilm4HG$(INaAV7cs0RjXF5Fn7XK=l85>i;eMpYM(M|8MkvRU@c;UHxDA2yB1=0RjXF5FkK+ z009D}3q=2Kr~ZGd|4X;7>jL_}u9LAZ0t5&UAV7cs0RjXF%uXQse<$_-JN-X9)Xbiw z|1%qy?GhkBfB*pk1PBlyKwt`i=>Of+|NHuX3cY6BqW_yQN2ee_fB*pk1PBlyK!CtF zf$0Ce)c=S2e;iYzKhyt>9pZfn;|F`xRq5oSudIu*! zfB*pk1PBlyK%hke(f5w$RQ*5d;feqO0t5&UAV7cs0Rl}Fi2grJ{ePgNy&ZPe*V)7*d1PBlyK!5-N0t5(TEfD>Gl=}Zn|7ShNBAeI$MfBWDfB*pk1PBly OK!5;&JOrZukN*K(Cc%RM literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/SB_256K.asm b/test/roms/bankswitching/_code/SB_256K.asm new file mode 100644 index 000000000..31cf528cc --- /dev/null +++ b/test/roms/bankswitching/_code/SB_256K.asm @@ -0,0 +1,1658 @@ +;;A bankswitching demo for the 256K SuperBanking scheme. 64 4K banks +;;By: Rick Skrbina 5/4/09 + + processor 6502 + include "vcs.h" + include "macro.h" + + seg.u vars + org $80 + + + seg bank0 + org $0000 + rorg $F000 +Start0 + nop + nop + nop + CLEAN_START + + +Start_Frame + lda #2 + sta VSYNC + sta VBLANK + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + + ldy #37 +Vertical_Blank + sta WSYNC + dey + bne Vertical_Blank + + lda #0 + sta VBLANK + + lda #$10 + sta COLUBK + + ldx #1 + ldy #3 + +Picture_Loop + sta WSYNC + dey + bne Picture_Loop + ldy #3 + jsr Swch1 + inx + cpx #$40 + bne Picture_Loop + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jmp Start_Frame + + + org $0200 + rorg $F200 + +Swch1 + lda $0800,x + nop + nop + nop + nop + nop + nop + rts + + + org $0FFC + rorg $FFFC + .word Start0 + .byte "00" + + seg bank1 + org $1000 + rorg $F000 +Start1 + lda $0800 +Sub1 + lda #$12 + sta COLUBK + rts + + org $1200 + rorg $F200 + + nop + nop + nop + jsr Sub1 + lda $0800 + + org $1FFC + rorg $FFFC + .word Start1 + .byte "01" + + seg bank2 + org $2000 + rorg $F000 +Start2 + lda $0800 + +Sub2 + lda #$14 + sta COLUBK + rts + + org $2200 + rorg $F1200 + + nop + nop + nop + jsr Sub2 + lda $0800 + + org $2FFC + rorg $FFFC + .word Start2 + .byte "02" + + seg bank3 + org $3000 + rorg $F000 +Start3 + lda $0800 + +Sub3 + lda #$16 + sta COLUBK + rts + + org $3200 + rorg $F200 + + nop + nop + nop + jsr Sub3 + lda $0800 + + org $3FFC + rorg $FFFC + .word Start3 + .byte "03" + + seg bank4 + org $4000 + rorg $F000 +Start4 + lda $0800 + +Sub4 + lda #$18 + sta COLUBK + rts + + org $4200 + rorg $F200 + + nop + nop + nop + jsr Sub4 + lda $0800 + + org $4FFC + rorg $FFFC + .word Start4 + .byte "04" + + seg bank5 + org $5000 + rorg $F000 +Start5 + lda $0800 + +Sub5 + lda #$1A + sta COLUBK + rts + + org $5200 + rorg $F200 + + nop + nop + nop + jsr Sub5 + lda $0800 + + org $5FFC + rorg $FFFC + .word Start5 + .byte "05" + + seg bank6 + org $6000 + rorg $F000 +Start6 + lda $0800 + +Sub6 + lda #$1C + sta COLUBK + rts + + org $6200 + rorg $F200 + + nop + nop + nop + jsr Sub6 + lda $0800 + + org $6FFC + rorg $FFFC + .word Start6 + .byte "06" + + seg bank7 + org $7000 + rorg $F000 +Start7 + lda $0800 + +Sub7 + lda #$1D + sta COLUBK + rts + + org $7200 + rorg $F200 + + nop + nop + nop + jsr Sub7 + lda $0800 + + org $7FFC + rorg $FFFC + .word Start7 + .byte "07" + + seg bank8 + org $8000 + rorg $F000 +Start8 + lda $0800 +Sub8 + lda #$1F + sta COLUBK + rts + + org $8200 + rorg $F200 + + nop + nop + nop + jsr Sub8 + lda $0800 + + org $8FFC + rorg $FFFC + .word Start8 + .byte "08" + + seg bank9 + org $9000 + rorg $F000 +Start9 + lda $0800 + +Sub9 + lda #$20 + sta COLUBK + rts + + org $9200 + rorg $F200 + + nop + nop + nop + jsr Sub9 + lda $0800 + + org $9FFC + rorg $FFFC + .word Start9 + .byte "09" + + seg bankA + org $A000 + rorg $F000 +StartA + lda $0800 + +SubA + lda #$22 + sta COLUBK + rts + + org $A200 + rorg $F200 + + nop + nop + nop + jsr SubA + lda $0800 + + org $AFFC + rorg $FFFC + .word StartA + .byte "0A" + + seg bankB + org $B000 + rorg $F000 +StartB + lda $0800 + +SubB + lda #$24 + sta COLUBK + rts + + org $B200 + rorg $F200 + + nop + nop + nop + jsr SubB + lda $0800 + + org $BFFC + rorg $FFFC + .word StartB + .byte "0B" + + seg bankC + org $C000 + rorg $F000 +StartC + lda $0800 + +SubC + lda #$26 + sta COLUBK + rts + + org $C200 + rorg $F200 + + nop + nop + nop + jsr SubC + lda $0800 + + org $CFFC + rorg $FFFC + .word StartC + .byte "0C" + + seg bankD + org $D000 + rorg $F000 +StartD + lda $0800 + +SubD + lda #$28 + sta COLUBK + rts + + org $D200 + rorg $F200 + + nop + nop + nop + jsr SubD + lda $0800 + + org $DFFC + rorg $FFFC + .word StartD + .byte "0D" + + seg bankE + org $E000 + rorg $F000 +StartE + lda $0800 + +SubE + lda #$2A + sta COLUBK + rts + + org $E200 + rorg $F200 + + nop + nop + nop + jsr SubE + lda $0800 + + org $EFFC + rorg $FFFC + .word StartE + .byte "0E" + + seg bankF + org $F000 + rorg $F000 +StartF + lda $0800 + +SubF + lda #$2C + sta COLUBK + rts + + org $F200 + rorg $F200 + + nop + nop + nop + jsr SubF + lda $0800 + + org $FFFC + rorg $FFFC + .word StartF + .byte "0F" + + seg bank10 + org $10000 + rorg $F000 +Start10 + lda $0800 + +Sub10 + lda #$2E + sta COLUBK + rts + + org $10200 + rorg $F200 + + nop + nop + nop + jsr Sub10 + lda $0800 + + org $10FFC + rorg $FFFC + .word Start10 + .byte "10" + + seg bank11 + org $11000 + rorg $F000 +Start11 + lda $0800 + +Sub11 + lda #$30 + sta COLUBK + rts + + org $11200 + rorg $F200 + + nop + nop + nop + jsr Sub11 + lda $0800 + + org $11FFC + rorg $FFFC + .word Start11 + .byte "11" + + seg bank12 + org $12000 + rorg $F000 +Start12 + lda $0800 + +Sub12 + lda #$32 + sta COLUBK + rts + + org $12200 + rorg $F200 + + nop + nop + nop + jsr Sub12 + lda $0800 + + org $12FFC + rorg $FFFC + .word Start12 + .byte "12" + + seg bank13 + org $13000 + rorg $F000 +Start13 + lda $0800 + +Sub13 + lda #$34 + sta COLUBK + rts + + org $13200 + rorg $F200 + + nop + nop + nop + jsr Sub13 + lda $0800 + + org $13FFC + rorg $FFFC + .word Start13 + .byte "13" + + seg bank14 + org $14000 + rorg $F000 +Start14 + lda $0800 + +Sub14 + lda #$36 + sta COLUBK + rts + + org $14200 + rorg $F200 + + nop + nop + nop + jsr Sub14 + lda $0800 + + org $14FFC + rorg $FFFC + .word Start14 + .byte "14" + + seg bank15 + org $15000 + rorg $F000 +Start15 + lda $0800 + +Sub15 lda #$38 + sta COLUBK + rts + + org $15200 + rorg $F200 + + nop + nop + nop + jsr Sub15 + lda $0800 + + org $15FFC + rorg $FFFC + .word Start15 + .byte "15" + + seg bank16 + org $16000 + rorg $F000 +Start16 + lda $0800 + +Sub16 + lda #$3A + sta COLUBK + rts + + org $16200 + rorg $F200 + + nop + nop + nop + jsr Sub16 + lda $0800 + + org $16FFC + rorg $FFFC + .word Start16 + .byte "16" + + seg bank17 + org $17000 + rorg $F000 +Start17 + lda $0800 + +Sub17 + lda #$3C + sta COLUBK + rts + + org $17200 + rorg $F200 + + nop + nop + nop + jsr Sub17 + lda $0800 + + org $17FFC + rorg $FFFC + .word Start17 + .byte "17" + + seg bank18 + org $18000 + rorg $F000 +Start18 + lda $0800 + +Sub18 + lda #$3E + sta COLUBK + rts + + org $18200 + rorg $F200 + + nop + nop + nop + jsr Sub18 + lda $0800 + + org $18FFC + rorg $FFFC + .word Start18 + .byte "18" + + seg bank19 + org $19000 + rorg $F000 +Start19 + lda $0800 + +Sub19 + lda #$40 + sta COLUBK + rts + + org $19200 + rorg $F200 + + nop + nop + nop + jsr Sub19 + lda $0800 + + org $19FFC + rorg $FFFC + .word Start19 + .byte "19" + + seg bank1A + org $1A000 + rorg $F000 +Start1A + lda $0800 + +Sub1A + lda #$42 + sta COLUBK + rts + + org $1A200 + rorg $F200 + + nop + nop + nop + jsr Sub1A + lda $0800 + + org $1AFFC + rorg $FFFC + .word Start1A + .byte "1A" + + seg bank1B + org $1B000 + rorg $F000 +Start1B + lda $0800 + +Sub1B + lda #$44 + sta COLUBK + rts + + org $1B200 + rorg $F200 + + nop + nop + nop + jsr Sub1B + lda $0800 + + org $1BFFC + rorg $FFFC + .word Start1B + .byte "1B" + + seg bank1C + org $1C000 + rorg $F000 +Start1C + lda $0800 + +Sub1C + lda #$46 + sta COLUBK + rts + + org $1C200 + rorg $F200 + + nop + nop + nop + jsr Sub1C + lda $0800 + + org $1CFFC + rorg $FFFC + .word Start1C + .byte "1C" + + seg bank1D + org $1D000 + rorg $F000 +Start1D + lda $0800 + +Sub1D + lda #$48 + sta COLUBK + rts + + org $1D200 + rorg $F200 + + nop + nop + nop + jsr Sub1D + lda $0800 + + org $1DFFC + rorg $FFFC + .word Start1D + .byte "1D" + + seg bank1E + org $1E000 + rorg $F000 +Start1E + lda $0800 + +Sub1E + lda #$4A + sta COLUBK + rts + + org $1E200 + rorg $F200 + + nop + nop + nop + jsr Sub1E + lda $0800 + + org $1EFFC + rorg $FFFC + .word Start1E + .byte "1E" + + seg bank1F + org $1F000 + rorg $F000 +Start1F + lda $0800 + +Sub1F + lda #$4C + sta COLUBK + rts + + org $1F200 + rorg $F200 + + nop + nop + nop + jsr Sub1F + lda $0800 + + org $1FFFC + rorg $FFFC + .word Start1F + .byte "1F" + + seg bank20 + org $20000 + rorg $F000 +Start20 + lda $0800 + +Sub20 + lda #$4E + sta COLUBK + rts + + org $20200 + rorg $F200 + + nop + nop + nop + jsr Sub20 + lda $0800 + + org $20FFC + rorg $FFFC + .word Start20 + .byte "20" + + seg bank21 + org $21000 + rorg $F000 +Start21 + lda $0800 + +Sub21 + lda #$50 + sta COLUBK + rts + + org $21200 + rorg $F200 + + nop + nop + nop + jsr Sub21 + lda $0800 + + org $21FFC + rorg $FFFC + .word Start21 + .byte "21" + + seg bank22 + org $22000 + rorg $F000 +Start22 + lda $0800 + +Sub22 + lda #$52 + sta COLUBK + rts + + org $22200 + rorg $F200 + + nop + nop + nop + jsr Sub22 + lda $0800 + + org $22FFC + rorg $FFFC + .word Start22 + .byte "22" + + seg bank23 + org $23000 + rorg $F000 +Start23 + lda $0800 + +Sub23 + lda #$54 + sta COLUBK + rts + + org $23200 + rorg $F200 + + nop + nop + nop + jsr Sub23 + lda $0800 + + org $23FFC + rorg $FFFC + .word Start23 + .byte "23" + + seg bank24 + org $24000 + rorg $F000 +Start24 + lda $0800 + +Sub24 + lda #$56 + sta COLUBK + rts + + org $24200 + rorg $F200 + + nop + nop + nop + jsr Sub24 + lda $0800 + + org $24FFC + rorg $FFFC + .word Start24 + .byte "24" + + seg bank25 + org $25000 + rorg $F000 +Start25 + lda $0800 + +Sub25 + lda #$58 + sta COLUBK + rts + + org $25200 + rorg $F200 + + nop + nop + nop + jsr Sub25 + lda $0800 + + org $25FFC + rorg $FFFC + .word Start25 + .byte "25" + + seg bank26 + org $26000 + rorg $F000 +Start26 + lda $0800 + +Sub26 + lda #$5A + sta COLUBK + rts + + org $26200 + rorg $F200 + + nop + nop + nop + jsr Sub26 + lda $0800 + + org $26FFC + rorg $FFFC + .word Start26 + .byte "26" + + seg bank27 + org $27000 + rorg $F000 +Start27 + lda $0800 + +Sub27 + lda #$5C + sta COLUBK + rts + + org $27200 + rorg $F200 + + nop + nop + nop + jsr Sub27 + lda $0800 + + org $27FFC + rorg $FFFC + .word Start27 + .byte "27" + + seg bank28 + org $28000 + rorg $F000 +Start28 + lda $0800 + +Sub28 + lda #$5E + sta COLUBK + rts + + org $28200 + rorg $F200 + + nop + nop + nop + jsr Sub28 + lda $0800 + + org $28FFC + rorg $FFFC + .word Start28 + .byte "28" + + seg bank29 + org $29000 + rorg $F000 +Start29 + lda $0800 + +Sub29 + lda #$60 + sta COLUBK + rts + + org $29200 + rorg $F200 + + nop + nop + nop + jsr Sub29 + lda $0800 + + org $29FFC + rorg $FFFC + .word Start29 + .byte "29" + + seg bank2A + org $2A000 + rorg $F000 +Start2A + lda $0800 + +Sub2A + lda #$62 + sta COLUBK + rts + + org $2A200 + rorg $F200 + + nop + nop + nop + jsr Sub2A + lda $0800 + + org $2AFFC + rorg $FFFC + .word Start2A + .byte "2A" + + seg bank2B + org $2B000 + rorg $F000 +Start2B + lda $0800 + +Sub2B + lda #$64 + sta COLUBK + rts + + org $2B200 + rorg $F200 + + nop + nop + nop + jsr Sub2B + lda $0800 + + org $2BFFC + rorg $FFFC + .word Start2B + .byte "2B" + + seg bank2C + org $2C000 + rorg $F000 +Start2C + lda $0800 + +Sub2C + lda #$66 + sta COLUBK + rts + + org $2C200 + rorg $F200 + + nop + nop + nop + jsr Sub2C + lda $0800 + + org $2CFFC + rorg $FFFC + .word Start2C + .byte "2C" + + seg bank2D + org $2D000 + rorg $F000 +Start2D + lda $0800 + +Sub2D + lda #$68 + sta COLUBK + rts + + org $2D200 + rorg $F200 + + nop + nop + nop + jsr Sub2D + lda $0800 + + org $2DFFC + rorg $FFFC + .word Start2D + .byte "2D" + + seg bank2E + org $2E000 + rorg $F000 +Start2E + lda $0800 + +Sub2E + lda #$6A + sta COLUBK + rts + + org $2E200 + rorg $F200 + + nop + nop + nop + jsr Sub2E + lda $0800 + + org $2EFFC + rorg $FFFC + .word Start2E + .byte "2E" + + seg bank2F + org $2F000 + rorg $F000 +Start2F + lda $0800 + +Sub2F + lda #$6C + sta COLUBK + rts + + org $2F200 + rorg $F200 + + nop + nop + nop + jsr Sub2F + lda $0800 + + org $2FFFC + rorg $FFFC + .word Start2F + .byte "2F" + + seg bank30 + org $30000 + rorg $F000 +Start30 + lda $0800 + +Sub30 + lda #$6E + sta COLUBK + rts + + org $30200 + rorg $F200 + + nop + nop + nop + jsr Sub30 + lda $0800 + + org $30FFC + rorg $FFFC + .word Start30 + .byte "30" + + seg bank31 + org $31000 + rorg $F000 +Start31 + lda $0800 + +Sub31 + lda #$70 + sta COLUBK + rts + + org $31200 + rorg $F200 + + nop + nop + nop + jsr Sub31 + lda $0800 + + org $31FFC + rorg $FFFC + .word Start31 + .byte "31" + + seg bank32 + org $32000 + rorg $F000 +Start32 + lda $0800 + +Sub32 + lda #$72 + sta COLUBK + rts + + org $32200 + rorg $F200 + + nop + nop + nop + jsr Sub32 + lda $0800 + + org $32FFC + rorg $FFFC + .word Start32 + .byte "32" + + seg bank33 + org $33000 + rorg $F000 +Start33 + lda $0800 + +Sub33 + lda #$74 + sta COLUBK + rts + + org $33200 + rorg $F200 + + nop + nop + nop + jsr Sub33 + lda $0800 + + org $33FFC + rorg $FFFC + .word Start33 + .byte "33" + + seg bank34 + org $34000 + rorg $F000 +Start34 + lda $0800 + +Sub34 + lda #$76 + sta COLUBK + rts + + org $34200 + rorg $F200 + + nop + nop + nop + jsr Sub34 + lda $0800 + + org $34FFC + rorg $FFFC + .word Start34 + .byte "34" + + seg bank35 + org $35000 + rorg $F000 +Start35 + lda $0800 + +Sub35 + lda #$78 + sta COLUBK + rts + + org $35200 + rorg $F200 + + nop + nop + nop + jsr Sub35 + lda $0800 + + org $35FFC + rorg $FFFC + .word Start35 + .byte "35" + + seg bank36 + org $36000 + rorg $F000 +Start36 + lda $0800 + +Sub36 + lda #$7A + sta COLUBK + rts + + org $36200 + rorg $F200 + + nop + nop + nop + jsr Sub36 + lda $0800 + + org $36FFC + rorg $FFFC + .word Start36 + .byte "36" + + seg bank37 + org $37000 + rorg $F000 +Start37 + lda $0800 + +Sub37 + lda #$7C + sta COLUBK + rts + + org $37200 + rorg $F200 + + nop + nop + nop + jsr Sub37 + lda $0800 + + org $37FFC + rorg $FFFC + .word Start37 + .byte "37" + + seg bank38 + org $38000 + rorg $F000 +Start38 + lda $0800 + +Sub38 + lda #$7E + sta COLUBK + rts + + org $38200 + rorg $F200 + + nop + nop + nop + jsr Sub38 + lda $0800 + + org $38FFC + rorg $FFFC + .word Start38 + .byte "38" + + seg bank39 + org $39000 + rorg $F000 +Start39 + lda $0800 + +Sub39 + lda #$80 + sta COLUBK + rts + + org $39200 + rorg $F200 + + nop + nop + nop + jsr Sub39 + lda $0800 + + org $39FFC + rorg $FFFC + .word Start39 + .byte "39" + + seg bank3A + org $3A000 + rorg $F000 +Start3A + lda $0800 + +Sub3A + lda #$82 + sta COLUBK + rts + + org $3A200 + rorg $F200 + + nop + nop + nop + jsr Sub3A + lda $0800 + + org $3AFFC + rorg $FFFC + .word Start3A + .byte "3A" + + seg bank3B + org $3B000 + rorg $F000 +Start3B + lda $0800 + +Sub3B + lda #$84 + sta COLUBK + rts + + org $3B200 + rorg $F200 + + nop + nop + nop + jsr Sub3B + lda $0800 + + org $3BFFC + rorg $FFFC + .word Start3B + .byte "3B" + + seg bank3C + org $3C000 + rorg $F000 +Start3C + lda $0800 + +Sub3C + lda #$86 + sta COLUBK + rts + + org $3C200 + rorg $F200 + + nop + nop + nop + jsr Sub3C + lda $0800 + + org $3CFFC + rorg $FFFC + .word Start3C + .byte "3C" + + seg bank3D + org $3D000 + rorg $F000 +Start3D + lda $0800 + +Sub3D + lda #$88 + sta COLUBK + rts + + org $3D200 + rorg $F200 + + nop + nop + nop + jsr Sub3D + lda $0800 + + org $3DFFC + rorg $FFFC + .word Start3D + .byte "3D" + + seg bank3E + org $3E000 + rorg $F000 +Start3E + lda $0800 + +Sub3E + lda #$8A + sta COLUBK + rts + + org $3E200 + rorg $F200 + + nop + nop + nop + jsr Sub3E + lda $0800 + + org $3EFFC + rorg $FFFC + .word Start3E + .byte "3E" + + seg bank3F + org $3F000 + rorg $F000 +Start3F + lda $0800 + +Sub3F + lda #$8C + sta COLUBK + rts + + org $3F200 + rorg $F200 + + nop + nop + nop + jsr Sub3F + lda $0800 + + org $3FFFC + rorg $FFFC + .word Start3F + .byte "3F" diff --git a/test/roms/bankswitching/_code/SB_256K.bin b/test/roms/bankswitching/_code/SB_256K.bin new file mode 100644 index 0000000000000000000000000000000000000000..f8c818282d7a1a0438501667fe6ce61bf8058b93 GIT binary patch literal 262144 zcmeI#JF8q}6oBDL(j<+Dh=_Ozq9P)4?iUfsxe`JU5fKrQAR-b(L_~s!h&U30zrgB{ z$`t+t|A19WOG`P`(bhuOnkGy$3^TK5@9*2sNt3zkz1R1wY2MS*(_4Ss9o+fl_n)uc z|M%Yc;b3@fcs~DK8xBsMAD+J*@5X!g9v)u0d+y}I=#7&Lmk0m+_2-rQf5!#qPM#jU zdHtcY|NNCE@Y~?x>FDo9X_K3m009C72oNAZfB*pk1f~@joUN?MrvH!WIa z-;4IYeBms91(lu4aR?9~K!5-N0t5&UAVA=OK=l7=_Wz^${{c$R{-^(Yws6NKK!5-N z0t5&UAV8p(0@43#+5eB}|6cAt53T=uyLtyFK!5-N0t5&UAV8o;0@45L+5eC0{~m39 z{HXeW+`}sZ1PBlyK!5-N0t5)uC=mU>k^TRK{;zSpQ=LiwPsQX*1PBlyK!5-N0t5&U zC|V%;e>404N&R2+9_JZe|Ief6S^@+J5FkK+009C72$UfZ{lAs{|CIhOV_^+Uss9^5 zbxQ&S2oNAZfB*pk1PF9YAo_nh`~MmJ-?7asZyf!aqF%=K>v4jGv*>dfB*pk z1PBlyK!CvF1fu^pv;SY!|BFK{>`wZ>u!R|y009C72oNAZfB*pkGYCZgZ)N|#rvGQq ztK$;=U&kJuf&c*m1PBlyK!5-N0+R%y|F^UMU)TSWn5zCv|5v?Uha*6M009C72oNAZ zfWSx~`hO?;|BC+a?Jq+A_jdITPJjRb0t5&UAV7dXj|8IsceDTZ^?#4HK7LgFKknfb z0RjXF5FkK+009C7Y7~h6-^>0#)c-ZEcd9e#|EZXKi2wlt1PBlyK!5-N0!0f%|LLQ4|Ev1HjD;JY^ z(E4-rf9oqS009C72oNAZfB*pk1R58J{y)zCe?$K_Zr#-f=>M*6##{sl5FkK+009C7 z2oPADz~F3cCHwzP{l7TW!tSL13tO0R2@oJafB*pk1PBlyFoQt!|7!OCTl#+ny*e(@ z|8?xqDF_fCK!5-N0t5&UATUWF`hP9^|84z0iK*((^ncasbvOb92oNAZfB*pk1PF`- zqW{;k|KHL7z5PY#|K6_N!3hu`K!5-N0t5&U=#fD5|3>!zyZXOJTOU8F{vY@7iU0uu z1PBlyK!5-N0yPRm|8Hjhzo-9eT<=t8(*IL2`4RyF1PBlyK!5-N0tAW{i2mQo{(oQp z7rn=MhS&e|=(&~v0RjXF5FkK+009DJ2t@yHXa9eo|I1id15@h%22kCS009C72oNAZ zfB*pk9TSND-^u>Jq5nI!ndOb6|CeX&NdyQGAV7cs0RjXF5NJyv`hPe3|3m%X)(TpG zuKsU*1qL8MfB*pk1PBlyK!8Bw0@43_+5aEu|HiGm`T+gk)yPTX|F86a$2POParFQ4tUZYU0RjXF5FkK+009DR2}J*IWdGmN|81?H_2=sU z)>mKv0t5&UAV7cs0RjXFG%gVRznT62wf=A1x~mV+|6SdTxd;#-K!5-N0t5&UAh0-r z=>M(k|8MmF;!q2_lm0JkVa6pufB*pk1PBlyK!Csu0@455+5g|_{~7e^xJ3Wgu}7yM zK!5-N0t5&UAV7e?B!TGvo$UYb^#3HLsz1~JRj=3K2oNAZfB*pk1PBlyFcOIV-_8F2 zUjO&@7oq=qyLtyFK!5-N0t5&UAV8o;0@43_+5bQ2{~m39{HXeW+`}sZ1PBlyK!5-N z0t5)uC=mU>pZ))%{;zSpQ=LiwPsQX*1PBlyK!5-N0t5&UC|V%;{~-JSw*D`AkMj(# z|L4(jEdc@q2oNAZfB*pk1j-PI{y)tAzoY-lSXcv7>i-5%-I4$S0t5&UAV7cs0RkNp pi2gsy{{Kn;cWg7u8%O^y&)Sm+5FkK+009C72oNC9mO%9X@&AFB{J#JI literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/UA_Limited.asm b/test/roms/bankswitching/_code/UA_Limited.asm new file mode 100644 index 000000000..a79347e53 --- /dev/null +++ b/test/roms/bankswitching/_code/UA_Limited.asm @@ -0,0 +1,102 @@ +;;A bankswitching demo for the UA limited technique. 2 4K banks (8K) +;;By: Rick Skrbina 3/29/09 + + processor 6502 + include "vcs.h" + include "macro.h" + + + seg.u vars + org $80 +BG_Color ds 1 + + seg Bank0 + org $E000 + rorg $F000 +Start0 + nop + nop + nop + + CLEAN_START + +Start_Frame + lda #2 + sta VBLANK + sta VSYNC + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + sta VBLANK + + ldy #192 +Picture + sta WSYNC + dey + bne Picture + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jsr SwchTo1 + + lda BG_Color + sta COLUBK + + jmp Start_Frame + + org $EFE0 + rorg $FFE0 +SwchTo1 + lda $0240 + nop + nop + nop + nop + nop + nop + rts + + org $EFFC + rorg $FFFC + .word Start0 + .byte "B0" + + seg Bank1 + org $F000 + rorg $F000 +Start1 + lda $0220 + +Bank1Sub + + inc BG_Color + rts + + org $FFE0 + rorg $FFE0 + + nop + nop + nop + jsr Bank1Sub + lda $0220 + + org $FFFC + rorg $FFFC + .word Start1 + .byte "B1" diff --git a/test/roms/bankswitching/_code/UA_Limited.bin b/test/roms/bankswitching/_code/UA_Limited.bin new file mode 100644 index 0000000000000000000000000000000000000000..5cb088b299ddabe0f057a68062f31d1e7152e7fa GIT binary patch literal 8192 zcmeI#Ar8Vo5QX9GpfDVvSyK-;ASlvs2#!%%GYR1cs0|4Th~5E>s;opIR;{ln+qJC+ z@z0vc%!BcGKTX5I_I{1Q0*~0R#|0009IL UK;T~mV)nO-5L5olfieGYzRba|kpKVy literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/macro.h b/test/roms/bankswitching/_code/macro.h new file mode 100644 index 000000000..ce7b9a15c --- /dev/null +++ b/test/roms/bankswitching/_code/macro.h @@ -0,0 +1,165 @@ +; MACRO.H +; Version 1.06, 3/SEPTEMBER/2004 + +VERSION_MACRO = 106 + +; +; THIS FILE IS EXPLICITLY SUPPORTED AS A DASM-PREFERRED COMPANION FILE +; PLEASE DO *NOT* REDISTRIBUTE MODIFIED VERSIONS OF THIS FILE! +; +; This file defines DASM macros useful for development for the Atari 2600. +; It is distributed as a companion machine-specific support package +; for the DASM compiler. Updates to this file, DASM, and associated tools are +; available at at http://www.atari2600.org/dasm +; +; Many thanks to the people who have contributed. If you take issue with the +; contents, or would like to add something, please write to me +; (atari2600@taswegian.com) with your contribution. +; +; Latest Revisions... +; +; 1.06 03/SEP/2004 - nice revision of VERTICAL_BLANK (Edwin Blink) +; 1.05 14/NOV/2003 - Added VERSION_MACRO equate (which will reflect 100x version #) +; This will allow conditional code to verify MACRO.H being +; used for code assembly. +; 1.04 13/NOV/2003 - SET_POINTER macro added (16-bit address load) +; +; 1.03 23/JUN/2003 - CLEAN_START macro added - clears TIA, RAM, registers +; +; 1.02 14/JUN/2003 - VERTICAL_SYNC macro added +; (standardised macro for vertical synch code) +; 1.01 22/MAR/2003 - SLEEP macro added. +; - NO_ILLEGAL_OPCODES switch implemented +; 1.0 22/MAR/2003 Initial release + +; Note: These macros use illegal opcodes. To disable illegal opcode usage, +; define the symbol NO_ILLEGAL_OPCODES (-DNO_ILLEGAL_OPCODES=1 on command-line). +; If you do not allow illegal opcode usage, you must include this file +; *after* including VCS.H (as the non-illegal opcodes access hardware +; registers and require them to be defined first). + +; Available macros... +; SLEEP n - sleep for n cycles +; VERTICAL_SYNC - correct 3 scanline vertical synch code +; CLEAN_START - set machine to known state on startup +; SET_POINTER - load a 16-bit absolute to a 16-bit variable + +;------------------------------------------------------------------------------- +; SLEEP duration +; Original author: Thomas Jentzsch +; Inserts code which takes the specified number of cycles to execute. This is +; useful for code where precise timing is required. +; ILLEGAL-OPCODE VERSION DOES NOT AFFECT FLAGS OR REGISTERS. +; LEGAL OPCODE VERSION MAY AFFECT FLAGS +; Uses illegal opcode (DASM 2.20.01 onwards). + + MAC SLEEP ;usage: SLEEP n (n>1) +.CYCLES SET {1} + + IF .CYCLES < 2 + ECHO "MACRO ERROR: 'SLEEP': Duration must be > 1" + ERR + ENDIF + + IF .CYCLES & 1 + IFNCONST NO_ILLEGAL_OPCODES + nop 0 + ELSE + bit VSYNC + ENDIF +.CYCLES SET .CYCLES - 3 + ENDIF + + REPEAT .CYCLES / 2 + nop + REPEND + ENDM + +;------------------------------------------------------------------------------- +; VERTICAL_SYNC +; revised version by Edwin Blink -- saves bytes! +; Inserts the code required for a proper 3 scanline vertical sync sequence +; Note: Alters the accumulator + +; OUT: A = 0 + + MAC VERTICAL_SYNC + lda #%1110 ; each '1' bits generate a VSYNC ON line (bits 1..3) +.VSLP1 sta WSYNC ; 1st '0' bit resets Vsync, 2nd '0' bit exit loop + sta VSYNC + lsr + bne .VSLP1 ; branch until VYSNC has been reset + ENDM + +;------------------------------------------------------------------------------- +; CLEAN_START +; Original author: Andrew Davie +; Standardised start-up code, clears stack, all TIA registers and RAM to 0 +; Sets stack pointer to $FF, and all registers to 0 +; Sets decimal mode off, sets interrupt flag (kind of un-necessary) +; Use as very first section of code on boot (ie: at reset) +; Code written to minimise total ROM usage - uses weird 6502 knowledge :) + + MAC CLEAN_START + sei + cld + + ldx #0 + txa + tay +.CLEAR_STACK dex + txs + pha + bne .CLEAR_STACK ; SP=$FF, X = A = Y = 0 + + ENDM + +;------------------------------------------------------- +; SET_POINTER +; Original author: Manuel Rotschkar +; +; Sets a 2 byte RAM pointer to an absolute address. +; +; Usage: SET_POINTER pointer, address +; Example: SET_POINTER SpritePTR, SpriteData +; +; Note: Alters the accumulator, NZ flags +; IN 1: 2 byte RAM location reserved for pointer +; IN 2: absolute address + + MAC SET_POINTER +.POINTER SET {1} +.ADDRESS SET {2} + + LDA #<.ADDRESS ; Get Lowbyte of Address + STA .POINTER ; Store in pointer + LDA #>.ADDRESS ; Get Hibyte of Address + STA .POINTER+1 ; Store in pointer+1 + + ENDM + +;------------------------------------------------------- +; BOUNDARY byte# +; Original author: Denis Debro (borrowed from Bob Smith / Thomas) +; +; Push data to a certain position inside a page and keep count of how +; many free bytes the programmer will have. +; +; eg: BOUNDARY 5 ; position at byte #5 in page + +__DASM__TOTAL_FREE_MEMORY SET 0 +.FREE_BYTES SET 0 + MAC BOUNDARY + REPEAT 256 + IF <. % {1} = 0 + MEXIT + ELSE +.FREE_BYTES SET .FREE_BYTES + 1 + .byte $00 + ENDIF + REPEND +__DASM__TOTAL_FREE_MEMORY SET __DASM__TOTAL_FREE_MEMORY + .FREE_BYTES + ENDM + + +; EOF diff --git a/test/roms/bankswitching/_code/test.bin b/test/roms/bankswitching/_code/test.bin new file mode 100644 index 0000000000000000000000000000000000000000..7c3cfba1eba50cdf39247461cf8986c753bc0b2b GIT binary patch literal 8192 zcmeI#Ar8Vo5QX8{#h^%oLXjHog5VHXZh*v0LP**Jpc)h_xC0u6M55QND?uzv>)HcA z(tpOxWLHc+_e6$W-uvz2B!~0uxV*nz)QPidRMdXkiAuFlyH8J|rnCzf>k)Oy g*bzVg0R#|0009ILKmY**5cpq#d=$#Me_osaKknA5{r~^~ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/test.lst b/test/roms/bankswitching/_code/test.lst new file mode 100644 index 000000000..ccc974d97 --- /dev/null +++ b/test/roms/bankswitching/_code/test.lst @@ -0,0 +1,1493 @@ +------- FILE F8SC.asm LEVEL 1 PASS 2 + 1 10000 ???? ;;A bankswitching demo for the F8SC scheme. 2 4K banks of ROM + 128 bytes of RAM + 2 10000 ???? ;;By: Rick Skrbina 3/29/09 + 3 10000 ???? + 4 10000 ???? processor 6502 +------- FILE vcs.h LEVEL 2 PASS 2 + 0 10000 ???? include "vcs.h" + 1 10000 ???? ; + 2 10000 ???? ; VCS system equates + 3 10000 ???? ; + 4 10000 ???? ; Vertical blank registers + 5 10000 ???? ; + 6 10000 ???? 00 00 VSYNC = $00 + 7 10000 ???? 00 02 VS_Enable = 2 + 8 10000 ???? ; + 9 10000 ???? 00 01 VBLANK = $01 + 10 10000 ???? 00 02 VB_Enable = 2 + 11 10000 ???? 00 00 VB_Disable = 0 + 12 10000 ???? 00 40 VB_LatchEnable = 64 + 13 10000 ???? 00 00 VB_LatchDisable = 0 + 14 10000 ???? 00 80 VB_DumpPots = 128 + 15 10000 ???? ; I don't know a good name to un-dump the pots, + 16 10000 ???? ; at least that makes sense. + 17 10000 ???? + 18 10000 ???? 00 02 WSYNC = $02 + 19 10000 ???? 00 03 RSYNC = $03 ;for sadists + 20 10000 ???? ; + 21 10000 ???? ; Size registers for players and missiles + 22 10000 ???? ; + 23 10000 ???? 00 04 NUSIZ0 = $04 + 24 10000 ???? 00 05 NUSIZ1 = $05 + 25 10000 ???? 00 00 P_Single = 0 + 26 10000 ???? 00 01 P_TwoClose = 1 + 27 10000 ???? 00 02 P_TwoMedium = 2 + 28 10000 ???? 00 03 P_ThreeClose = 3 + 29 10000 ???? 00 04 P_TwoFar = 4 + 30 10000 ???? 00 05 P_Double = 5 + 31 10000 ???? 00 06 P_ThreeMedium = 6 + 32 10000 ???? 00 07 P_Quad = 7 + 33 10000 ???? + 34 10000 ???? 00 00 M_Single = $00 + 35 10000 ???? 00 10 M_Double = $10 + 36 10000 ???? 00 20 M_Quad = $20 + 37 10000 ???? 00 40 M_Oct = $40 + 38 10000 ???? + 39 10000 ???? ; + 40 10000 ???? ; Color registers + 41 10000 ???? ; + 42 10000 ???? 00 06 COLUP0 = $06 + 43 10000 ???? 00 07 COLUP1 = $07 + 44 10000 ???? 00 08 COLUPF = $08 + 45 10000 ???? 00 09 COLUBK = $09 + 46 10000 ???? + 47 10000 ???? ; + 48 10000 ???? ; Playfield Control + 49 10000 ???? ; + 50 10000 ???? 00 0a CTRLPF = $0A + 51 10000 ???? 00 01 PF_Reflect = $01 + 52 10000 ???? 00 02 PF_Score = $02 + 53 10000 ???? 00 04 PF_Priority = $04 + 54 10000 ???? ; Use missile equates to set ball width. + 55 10000 ???? + 56 10000 ???? 00 0b REFP0 = $0B + 57 10000 ???? 00 0c REFP1 = $0C + 58 10000 ???? 00 08 P_Reflect = $08 + 59 10000 ???? + 60 10000 ???? 00 0d PF0 = $0D + 61 10000 ???? 00 0e PF1 = $0E + 62 10000 ???? 00 0f PF2 = $0F + 63 10000 ???? 00 10 RESP0 = $10 + 64 10000 ???? 00 11 RESP1 = $11 + 65 10000 ???? 00 12 RESM0 = $12 + 66 10000 ???? 00 13 RESM1 = $13 + 67 10000 ???? 00 14 RESBL = $14 + 68 10000 ???? 00 15 AUDC0 = $15 + 69 10000 ???? 00 16 AUDC1 = $16 + 70 10000 ???? 00 17 AUDF0 = $17 + 71 10000 ???? 00 18 AUDF1 = $18 + 72 10000 ???? 00 19 AUDV0 = $19 + 73 10000 ???? 00 1a AUDV1 = $1A ;duh + 74 10000 ???? + 75 10000 ???? ; + 76 10000 ???? ; Players + 77 10000 ???? ; + 78 10000 ???? 00 1b GRP0 = $1B + 79 10000 ???? 00 1c GRP1 = $1C + 80 10000 ???? + 81 10000 ???? ; + 82 10000 ???? ; Single-bit objects + 83 10000 ???? ; + 84 10000 ???? 00 1d ENAM0 = $1D + 85 10000 ???? 00 1e ENAM1 = $1E + 86 10000 ???? 00 1f ENABL = $1F + 87 10000 ???? 00 02 M_Enable = 2 + 88 10000 ???? + 89 10000 ???? 00 20 HMP0 = $20 + 90 10000 ???? 00 21 HMP1 = $21 + 91 10000 ???? 00 22 HMM0 = $22 + 92 10000 ???? 00 23 HMM1 = $23 + 93 10000 ???? 00 24 HMBL = $24 + 94 10000 ???? + 95 10000 ???? ; Miscellaneous + 96 10000 ???? 00 25 VDELP0 = $25 + 97 10000 ???? 00 26 VDEL01 = $26 + 98 10000 ???? 00 26 VDELP1 = $26 + 99 10000 ???? 00 27 VDELBL = $27 + 100 10000 ???? 00 28 RESMP0 = $28 + 101 10000 ???? 00 29 RESMP1 = $29 + 102 10000 ???? 00 2a HMOVE = $2A + 103 10000 ???? 00 2b HMCLR = $2B + 104 10000 ???? 00 2c CXCLR = $2C + 105 10000 ???? 00 30 CXM0P = $30 + 106 10000 ???? 00 31 CXM1P = $31 + 107 10000 ???? 00 32 CXP0FB = $32 + 108 10000 ???? 00 33 CXP1FB = $33 + 109 10000 ???? 00 34 CXM0FB = $34 + 110 10000 ???? 00 35 CXM1FB = $35 + 111 10000 ???? 00 36 CXBLPF = $36 + 112 10000 ???? 00 37 CXPPMM = $37 + 113 10000 ???? 00 38 INPT0 = $38 + 114 10000 ???? 00 39 INPT1 = $39 + 115 10000 ???? 00 3a INPT2 = $3A + 116 10000 ???? 00 3b INPT3 = $3B + 117 10000 ???? 00 3c INPT4 = $3C + 118 10000 ???? 00 3d INPT5 = $3D + 119 10000 ???? + 120 10000 ???? ; + 121 10000 ???? ; Switch A equates. + 122 10000 ???? ; + 123 10000 ???? ; There are more elegant ways than using all eight of these. :-) + 124 10000 ???? ; + 125 10000 ???? 02 80 SWCHA = $0280 + 126 10000 ???? 00 80 J0_Right = $80 + 127 10000 ???? 00 40 J0_Left = $40 + 128 10000 ???? 00 20 J0_Down = $20 + 129 10000 ???? 00 10 J0_Up = $10 + 130 10000 ???? 00 08 J1_Right = $08 + 131 10000 ???? 00 04 J1_Left = $04 + 132 10000 ???? 00 02 J1_Down = $02 + 133 10000 ???? 00 01 J1_up = $01 + 134 10000 ???? ; + 135 10000 ???? ; Switch B equates + 136 10000 ???? ; + 137 10000 ???? 02 82 SWCHB = $0282 + 138 10000 ???? 00 80 P0_Diff = $80 + 139 10000 ???? 00 40 P1_Diff = $40 + 140 10000 ???? 00 08 Con_Color = $08 + 141 10000 ???? 00 02 Con_Select = $02 + 142 10000 ???? 00 01 Con_Start = $01 + 143 10000 ???? + 144 10000 ???? ; + 145 10000 ???? ; Timer + 146 10000 ???? ; + 147 10000 ???? 02 80 SWCHA = $0280 + 148 10000 ???? 02 81 SWACNT = $0281 + 149 10000 ???? 02 82 SWCHB = $0282 + 150 10000 ???? 02 83 SWBCNT = $0283 + 151 10000 ???? 02 84 INTIM = $0284 + 152 10000 ???? 02 94 TIM1T = $0294 + 153 10000 ???? 02 95 TIM8T = $0295 + 154 10000 ???? 02 96 TIM64T = $0296 + 155 10000 ???? 02 97 TIM1024T = $0297 + 156 10000 ???? + 157 10000 ???? +------- FILE F8SC.asm +------- FILE macro.h LEVEL 2 PASS 2 + 0 10000 ???? include "macro.h" + 1 10000 ???? ; MACRO.H + 2 10000 ???? ; Version 1.06, 3/SEPTEMBER/2004 + 3 10000 ???? + 4 10000 ???? 00 6a VERSION_MACRO = 106 + 5 10000 ???? + 6 10000 ???? ; + 7 10000 ???? ; THIS FILE IS EXPLICITLY SUPPORTED AS A DASM-PREFERRED COMPANION FILE + 8 10000 ???? ; PLEASE DO *NOT* REDISTRIBUTE MODIFIED VERSIONS OF THIS FILE! + 9 10000 ???? ; + 10 10000 ???? ; This file defines DASM macros useful for development for the Atari 2600. + 11 10000 ???? ; It is distributed as a companion machine-specific support package + 12 10000 ???? ; for the DASM compiler. Updates to this file, DASM, and associated tools are + 13 10000 ???? ; available at at http://www.atari2600.org/dasm + 14 10000 ???? ; + 15 10000 ???? ; Many thanks to the people who have contributed. If you take issue with the + 16 10000 ???? ; contents, or would like to add something, please write to me + 17 10000 ???? ; (atari2600@taswegian.com) with your contribution. + 18 10000 ???? ; + 19 10000 ???? ; Latest Revisions... + 20 10000 ???? ; + 21 10000 ???? ; 1.06 03/SEP/2004 - nice revision of VERTICAL_BLANK (Edwin Blink) + 22 10000 ???? ; 1.05 14/NOV/2003 - Added VERSION_MACRO equate (which will reflect 100x version #) + 23 10000 ???? ; This will allow conditional code to verify MACRO.H being + 24 10000 ???? ; used for code assembly. + 25 10000 ???? ; 1.04 13/NOV/2003 - SET_POINTER macro added (16-bit address load) + 26 10000 ???? ; + 27 10000 ???? ; 1.03 23/JUN/2003 - CLEAN_START macro added - clears TIA, RAM, registers + 28 10000 ???? ; + 29 10000 ???? ; 1.02 14/JUN/2003 - VERTICAL_SYNC macro added + 30 10000 ???? ; (standardised macro for vertical synch code) + 31 10000 ???? ; 1.01 22/MAR/2003 - SLEEP macro added. + 32 10000 ???? ; - NO_ILLEGAL_OPCODES switch implemented + 33 10000 ???? ; 1.0 22/MAR/2003 Initial release + 34 10000 ???? + 35 10000 ???? ; Note: These macros use illegal opcodes. To disable illegal opcode usage, + 36 10000 ???? ; define the symbol NO_ILLEGAL_OPCODES (-DNO_ILLEGAL_OPCODES=1 on command-line). + 37 10000 ???? ; If you do not allow illegal opcode usage, you must include this file + 38 10000 ???? ; *after* including VCS.H (as the non-illegal opcodes access hardware + 39 10000 ???? ; registers and require them to be defined first). + 40 10000 ???? + 41 10000 ???? ; Available macros... + 42 10000 ???? ; SLEEP n - sleep for n cycles + 43 10000 ???? ; VERTICAL_SYNC - correct 3 scanline vertical synch code + 44 10000 ???? ; CLEAN_START - set machine to known state on startup + 45 10000 ???? ; SET_POINTER - load a 16-bit absolute to a 16-bit variable + 46 10000 ???? + 47 10000 ???? ;------------------------------------------------------------------------------- + 48 10000 ???? ; SLEEP duration + 49 10000 ???? ; Original author: Thomas Jentzsch + 50 10000 ???? ; Inserts code which takes the specified number of cycles to execute. This is + 51 10000 ???? ; useful for code where precise timing is required. + 52 10000 ???? ; ILLEGAL-OPCODE VERSION DOES NOT AFFECT FLAGS OR REGISTERS. + 53 10000 ???? ; LEGAL OPCODE VERSION MAY AFFECT FLAGS + 54 10000 ???? ; Uses illegal opcode (DASM 2.20.01 onwards). + 55 10000 ???? + 56 10000 ???? MAC sleep + 57 10000 ???? .CYCLES SET {1} + 58 10000 ???? + 59 10000 ???? IF .CYCLES < 2 + 60 10000 ???? ECHO "MACRO ERROR: 'SLEEP': Duration must be > 1" + 61 10000 ???? ERR + 62 10000 ???? ENDIF + 63 10000 ???? + 64 10000 ???? IF .CYCLES & 1 + 65 10000 ???? IFNCONST NO_ILLEGAL_OPCODES + 66 10000 ???? nop 0 + 67 10000 ???? ELSE + 68 10000 ???? bit VSYNC + 69 10000 ???? ENDIF + 70 10000 ???? .CYCLES SET .CYCLES - 3 + 71 10000 ???? ENDIF + 72 10000 ???? + 73 10000 ???? REPEAT .CYCLES / 2 + 74 10000 ???? nop + 75 10000 ???? REPEND + 76 10000 ???? ENDM ;usage: SLEEP n (n>1) + 77 10000 ???? + 78 10000 ???? ;------------------------------------------------------------------------------- + 79 10000 ???? ; VERTICAL_SYNC + 80 10000 ???? ; revised version by Edwin Blink -- saves bytes! + 81 10000 ???? ; Inserts the code required for a proper 3 scanline vertical sync sequence + 82 10000 ???? ; Note: Alters the accumulator + 83 10000 ???? + 84 10000 ???? ; OUT: A = 0 + 85 10000 ???? + 86 10000 ???? MAC vertical_sync + 87 10000 ???? lda #%1110 ; each '1' bits generate a VSYNC ON line (bits 1..3) + 88 10000 ???? .VSLP1 sta WSYNC ; 1st '0' bit resets Vsync, 2nd '0' bit exit loop + 89 10000 ???? sta VSYNC + 90 10000 ???? lsr + 91 10000 ???? bne .VSLP1 ; branch until VYSNC has been reset + 92 10000 ???? ENDM + 93 10000 ???? + 94 10000 ???? ;------------------------------------------------------------------------------- + 95 10000 ???? ; CLEAN_START + 96 10000 ???? ; Original author: Andrew Davie + 97 10000 ???? ; Standardised start-up code, clears stack, all TIA registers and RAM to 0 + 98 10000 ???? ; Sets stack pointer to $FF, and all registers to 0 + 99 10000 ???? ; Sets decimal mode off, sets interrupt flag (kind of un-necessary) + 100 10000 ???? ; Use as very first section of code on boot (ie: at reset) + 101 10000 ???? ; Code written to minimise total ROM usage - uses weird 6502 knowledge :) + 102 10000 ???? + 103 10000 ???? MAC clean_start + 104 10000 ???? sei + 105 10000 ???? cld + 106 10000 ???? + 107 10000 ???? ldx #0 + 108 10000 ???? txa + 109 10000 ???? tay + 110 10000 ???? .CLEAR_STACK dex + 111 10000 ???? txs + 112 10000 ???? pha + 113 10000 ???? bne .CLEAR_STACK ; SP=$FF, X = A = Y = 0 + 114 10000 ???? + 115 10000 ???? ENDM + 116 10000 ???? + 117 10000 ???? ;------------------------------------------------------- + 118 10000 ???? ; SET_POINTER + 119 10000 ???? ; Original author: Manuel Rotschkar + 120 10000 ???? ; + 121 10000 ???? ; Sets a 2 byte RAM pointer to an absolute address. + 122 10000 ???? ; + 123 10000 ???? ; Usage: SET_POINTER pointer, address + 124 10000 ???? ; Example: SET_POINTER SpritePTR, SpriteData + 125 10000 ???? ; + 126 10000 ???? ; Note: Alters the accumulator, NZ flags + 127 10000 ???? ; IN 1: 2 byte RAM location reserved for pointer + 128 10000 ???? ; IN 2: absolute address + 129 10000 ???? + 130 10000 ???? MAC set_pointer + 131 10000 ???? .POINTER SET {1} + 132 10000 ???? .ADDRESS SET {2} + 133 10000 ???? + 134 10000 ???? LDA #<.ADDRESS ; Get Lowbyte of Address + 135 10000 ???? STA .POINTER ; Store in pointer + 136 10000 ???? LDA #>.ADDRESS ; Get Hibyte of Address + 137 10000 ???? STA .POINTER+1 ; Store in pointer+1 + 138 10000 ???? + 139 10000 ???? ENDM + 140 10000 ???? + 141 10000 ???? ;------------------------------------------------------- + 142 10000 ???? ; BOUNDARY byte# + 143 10000 ???? ; Original author: Denis Debro (borrowed from Bob Smith / Thomas) + 144 10000 ???? ; + 145 10000 ???? ; Push data to a certain position inside a page and keep count of how + 146 10000 ???? ; many free bytes the programmer will have. + 147 10000 ???? ; + 148 10000 ???? ; eg: BOUNDARY 5 ; position at byte #5 in page + 149 10000 ???? + 150 10000 ???? __DASM__TOTAL_FREE_MEMORY SET 0 + 151 10000 ???? .FREE_BYTES SET 0 + 152 10000 ???? MAC boundary + 153 10000 ???? REPEAT 256 + 154 10000 ???? IF <. % {1} = 0 + 155 10000 ???? MEXIT + 156 10000 ???? ELSE + 157 10000 ???? .FREE_BYTES SET .FREE_BYTES + 1 + 158 10000 ???? .byte $00 + 159 10000 ???? ENDIF + 160 10000 ???? REPEND + 161 10000 ???? __DASM__TOTAL_FREE_MEMORY SET __DASM__TOTAL_FREE_MEMORY + .FREE_BYTES + 162 10000 ???? ENDM + 163 10000 ???? + 164 10000 ???? + 165 10000 ???? ; EOF +------- FILE F8SC.asm + 7 10000 ???? + 8 10000 ???? 10 80 PF_Color_Read equ PF_Color_Write+128 + 9 U0080 ???? seg.u vars + 10 U0080 org $80 + 11 U0080 + 12 U0080 + 13 U0080 + 14 U1001 ???? seg.u SC_RAM_vars + 15 U1000 org $1000 + 16 U1000 00 PF_Color_Write ds 1 + 17 U1001 + 18 f000 ???? seg Bank_0 + 19 f000 ???? + 20 e000 org $E000 + 21 e000 rorg $F000 + 22 e000 + 23 e000 repeat 256 + 24 e000 00 .byte.b $00 + 23 e000 repend + 24 e001 00 .byte.b $00 + 23 e001 repend + 24 e002 00 .byte.b $00 + 23 e002 repend + 24 e003 00 .byte.b $00 + 23 e003 repend + 24 e004 00 .byte.b $00 + 23 e004 repend + 24 e005 00 .byte.b $00 + 23 e005 repend + 24 e006 00 .byte.b $00 + 23 e006 repend + 24 e007 00 .byte.b $00 + 23 e007 repend + 24 e008 00 .byte.b $00 + 23 e008 repend + 24 e009 00 .byte.b $00 + 23 e009 repend + 24 e00a 00 .byte.b $00 + 23 e00a repend + 24 e00b 00 .byte.b $00 + 23 e00b repend + 24 e00c 00 .byte.b $00 + 23 e00c repend + 24 e00d 00 .byte.b $00 + 23 e00d repend + 24 e00e 00 .byte.b $00 + 23 e00e repend + 24 e00f 00 .byte.b $00 + 23 e00f repend + 24 e010 00 .byte.b $00 + 23 e010 repend + 24 e011 00 .byte.b $00 + 23 e011 repend + 24 e012 00 .byte.b $00 + 23 e012 repend + 24 e013 00 .byte.b $00 + 23 e013 repend + 24 e014 00 .byte.b $00 + 23 e014 repend + 24 e015 00 .byte.b $00 + 23 e015 repend + 24 e016 00 .byte.b $00 + 23 e016 repend + 24 e017 00 .byte.b $00 + 23 e017 repend + 24 e018 00 .byte.b $00 + 23 e018 repend + 24 e019 00 .byte.b $00 + 23 e019 repend + 24 e01a 00 .byte.b $00 + 23 e01a repend + 24 e01b 00 .byte.b $00 + 23 e01b repend + 24 e01c 00 .byte.b $00 + 23 e01c repend + 24 e01d 00 .byte.b $00 + 23 e01d repend + 24 e01e 00 .byte.b $00 + 23 e01e repend + 24 e01f 00 .byte.b $00 + 23 e01f repend + 24 e020 00 .byte.b $00 + 23 e020 repend + 24 e021 00 .byte.b $00 + 23 e021 repend + 24 e022 00 .byte.b $00 + 23 e022 repend + 24 e023 00 .byte.b $00 + 23 e023 repend + 24 e024 00 .byte.b $00 + 23 e024 repend + 24 e025 00 .byte.b $00 + 23 e025 repend + 24 e026 00 .byte.b $00 + 23 e026 repend + 24 e027 00 .byte.b $00 + 23 e027 repend + 24 e028 00 .byte.b $00 + 23 e028 repend + 24 e029 00 .byte.b $00 + 23 e029 repend + 24 e02a 00 .byte.b $00 + 23 e02a repend + 24 e02b 00 .byte.b $00 + 23 e02b repend + 24 e02c 00 .byte.b $00 + 23 e02c repend + 24 e02d 00 .byte.b $00 + 23 e02d repend + 24 e02e 00 .byte.b $00 + 23 e02e repend + 24 e02f 00 .byte.b $00 + 23 e02f repend + 24 e030 00 .byte.b $00 + 23 e030 repend + 24 e031 00 .byte.b $00 + 23 e031 repend + 24 e032 00 .byte.b $00 + 23 e032 repend + 24 e033 00 .byte.b $00 + 23 e033 repend + 24 e034 00 .byte.b $00 + 23 e034 repend + 24 e035 00 .byte.b $00 + 23 e035 repend + 24 e036 00 .byte.b $00 + 23 e036 repend + 24 e037 00 .byte.b $00 + 23 e037 repend + 24 e038 00 .byte.b $00 + 23 e038 repend + 24 e039 00 .byte.b $00 + 23 e039 repend + 24 e03a 00 .byte.b $00 + 23 e03a repend + 24 e03b 00 .byte.b $00 + 23 e03b repend + 24 e03c 00 .byte.b $00 + 23 e03c repend + 24 e03d 00 .byte.b $00 + 23 e03d repend + 24 e03e 00 .byte.b $00 + 23 e03e repend + 24 e03f 00 .byte.b $00 + 23 e03f repend + 24 e040 00 .byte.b $00 + 23 e040 repend + 24 e041 00 .byte.b $00 + 23 e041 repend + 24 e042 00 .byte.b $00 + 23 e042 repend + 24 e043 00 .byte.b $00 + 23 e043 repend + 24 e044 00 .byte.b $00 + 23 e044 repend + 24 e045 00 .byte.b $00 + 23 e045 repend + 24 e046 00 .byte.b $00 + 23 e046 repend + 24 e047 00 .byte.b $00 + 23 e047 repend + 24 e048 00 .byte.b $00 + 23 e048 repend + 24 e049 00 .byte.b $00 + 23 e049 repend + 24 e04a 00 .byte.b $00 + 23 e04a repend + 24 e04b 00 .byte.b $00 + 23 e04b repend + 24 e04c 00 .byte.b $00 + 23 e04c repend + 24 e04d 00 .byte.b $00 + 23 e04d repend + 24 e04e 00 .byte.b $00 + 23 e04e repend + 24 e04f 00 .byte.b $00 + 23 e04f repend + 24 e050 00 .byte.b $00 + 23 e050 repend + 24 e051 00 .byte.b $00 + 23 e051 repend + 24 e052 00 .byte.b $00 + 23 e052 repend + 24 e053 00 .byte.b $00 + 23 e053 repend + 24 e054 00 .byte.b $00 + 23 e054 repend + 24 e055 00 .byte.b $00 + 23 e055 repend + 24 e056 00 .byte.b $00 + 23 e056 repend + 24 e057 00 .byte.b $00 + 23 e057 repend + 24 e058 00 .byte.b $00 + 23 e058 repend + 24 e059 00 .byte.b $00 + 23 e059 repend + 24 e05a 00 .byte.b $00 + 23 e05a repend + 24 e05b 00 .byte.b $00 + 23 e05b repend + 24 e05c 00 .byte.b $00 + 23 e05c repend + 24 e05d 00 .byte.b $00 + 23 e05d repend + 24 e05e 00 .byte.b $00 + 23 e05e repend + 24 e05f 00 .byte.b $00 + 23 e05f repend + 24 e060 00 .byte.b $00 + 23 e060 repend + 24 e061 00 .byte.b $00 + 23 e061 repend + 24 e062 00 .byte.b $00 + 23 e062 repend + 24 e063 00 .byte.b $00 + 23 e063 repend + 24 e064 00 .byte.b $00 + 23 e064 repend + 24 e065 00 .byte.b $00 + 23 e065 repend + 24 e066 00 .byte.b $00 + 23 e066 repend + 24 e067 00 .byte.b $00 + 23 e067 repend + 24 e068 00 .byte.b $00 + 23 e068 repend + 24 e069 00 .byte.b $00 + 23 e069 repend + 24 e06a 00 .byte.b $00 + 23 e06a repend + 24 e06b 00 .byte.b $00 + 23 e06b repend + 24 e06c 00 .byte.b $00 + 23 e06c repend + 24 e06d 00 .byte.b $00 + 23 e06d repend + 24 e06e 00 .byte.b $00 + 23 e06e repend + 24 e06f 00 .byte.b $00 + 23 e06f repend + 24 e070 00 .byte.b $00 + 23 e070 repend + 24 e071 00 .byte.b $00 + 23 e071 repend + 24 e072 00 .byte.b $00 + 23 e072 repend + 24 e073 00 .byte.b $00 + 23 e073 repend + 24 e074 00 .byte.b $00 + 23 e074 repend + 24 e075 00 .byte.b $00 + 23 e075 repend + 24 e076 00 .byte.b $00 + 23 e076 repend + 24 e077 00 .byte.b $00 + 23 e077 repend + 24 e078 00 .byte.b $00 + 23 e078 repend + 24 e079 00 .byte.b $00 + 23 e079 repend + 24 e07a 00 .byte.b $00 + 23 e07a repend + 24 e07b 00 .byte.b $00 + 23 e07b repend + 24 e07c 00 .byte.b $00 + 23 e07c repend + 24 e07d 00 .byte.b $00 + 23 e07d repend + 24 e07e 00 .byte.b $00 + 23 e07e repend + 24 e07f 00 .byte.b $00 + 23 e07f repend + 24 e080 00 .byte.b $00 + 23 e080 repend + 24 e081 00 .byte.b $00 + 23 e081 repend + 24 e082 00 .byte.b $00 + 23 e082 repend + 24 e083 00 .byte.b $00 + 23 e083 repend + 24 e084 00 .byte.b $00 + 23 e084 repend + 24 e085 00 .byte.b $00 + 23 e085 repend + 24 e086 00 .byte.b $00 + 23 e086 repend + 24 e087 00 .byte.b $00 + 23 e087 repend + 24 e088 00 .byte.b $00 + 23 e088 repend + 24 e089 00 .byte.b $00 + 23 e089 repend + 24 e08a 00 .byte.b $00 + 23 e08a repend + 24 e08b 00 .byte.b $00 + 23 e08b repend + 24 e08c 00 .byte.b $00 + 23 e08c repend + 24 e08d 00 .byte.b $00 + 23 e08d repend + 24 e08e 00 .byte.b $00 + 23 e08e repend + 24 e08f 00 .byte.b $00 + 23 e08f repend + 24 e090 00 .byte.b $00 + 23 e090 repend + 24 e091 00 .byte.b $00 + 23 e091 repend + 24 e092 00 .byte.b $00 + 23 e092 repend + 24 e093 00 .byte.b $00 + 23 e093 repend + 24 e094 00 .byte.b $00 + 23 e094 repend + 24 e095 00 .byte.b $00 + 23 e095 repend + 24 e096 00 .byte.b $00 + 23 e096 repend + 24 e097 00 .byte.b $00 + 23 e097 repend + 24 e098 00 .byte.b $00 + 23 e098 repend + 24 e099 00 .byte.b $00 + 23 e099 repend + 24 e09a 00 .byte.b $00 + 23 e09a repend + 24 e09b 00 .byte.b $00 + 23 e09b repend + 24 e09c 00 .byte.b $00 + 23 e09c repend + 24 e09d 00 .byte.b $00 + 23 e09d repend + 24 e09e 00 .byte.b $00 + 23 e09e repend + 24 e09f 00 .byte.b $00 + 23 e09f repend + 24 e0a0 00 .byte.b $00 + 23 e0a0 repend + 24 e0a1 00 .byte.b $00 + 23 e0a1 repend + 24 e0a2 00 .byte.b $00 + 23 e0a2 repend + 24 e0a3 00 .byte.b $00 + 23 e0a3 repend + 24 e0a4 00 .byte.b $00 + 23 e0a4 repend + 24 e0a5 00 .byte.b $00 + 23 e0a5 repend + 24 e0a6 00 .byte.b $00 + 23 e0a6 repend + 24 e0a7 00 .byte.b $00 + 23 e0a7 repend + 24 e0a8 00 .byte.b $00 + 23 e0a8 repend + 24 e0a9 00 .byte.b $00 + 23 e0a9 repend + 24 e0aa 00 .byte.b $00 + 23 e0aa repend + 24 e0ab 00 .byte.b $00 + 23 e0ab repend + 24 e0ac 00 .byte.b $00 + 23 e0ac repend + 24 e0ad 00 .byte.b $00 + 23 e0ad repend + 24 e0ae 00 .byte.b $00 + 23 e0ae repend + 24 e0af 00 .byte.b $00 + 23 e0af repend + 24 e0b0 00 .byte.b $00 + 23 e0b0 repend + 24 e0b1 00 .byte.b $00 + 23 e0b1 repend + 24 e0b2 00 .byte.b $00 + 23 e0b2 repend + 24 e0b3 00 .byte.b $00 + 23 e0b3 repend + 24 e0b4 00 .byte.b $00 + 23 e0b4 repend + 24 e0b5 00 .byte.b $00 + 23 e0b5 repend + 24 e0b6 00 .byte.b $00 + 23 e0b6 repend + 24 e0b7 00 .byte.b $00 + 23 e0b7 repend + 24 e0b8 00 .byte.b $00 + 23 e0b8 repend + 24 e0b9 00 .byte.b $00 + 23 e0b9 repend + 24 e0ba 00 .byte.b $00 + 23 e0ba repend + 24 e0bb 00 .byte.b $00 + 23 e0bb repend + 24 e0bc 00 .byte.b $00 + 23 e0bc repend + 24 e0bd 00 .byte.b $00 + 23 e0bd repend + 24 e0be 00 .byte.b $00 + 23 e0be repend + 24 e0bf 00 .byte.b $00 + 23 e0bf repend + 24 e0c0 00 .byte.b $00 + 23 e0c0 repend + 24 e0c1 00 .byte.b $00 + 23 e0c1 repend + 24 e0c2 00 .byte.b $00 + 23 e0c2 repend + 24 e0c3 00 .byte.b $00 + 23 e0c3 repend + 24 e0c4 00 .byte.b $00 + 23 e0c4 repend + 24 e0c5 00 .byte.b $00 + 23 e0c5 repend + 24 e0c6 00 .byte.b $00 + 23 e0c6 repend + 24 e0c7 00 .byte.b $00 + 23 e0c7 repend + 24 e0c8 00 .byte.b $00 + 23 e0c8 repend + 24 e0c9 00 .byte.b $00 + 23 e0c9 repend + 24 e0ca 00 .byte.b $00 + 23 e0ca repend + 24 e0cb 00 .byte.b $00 + 23 e0cb repend + 24 e0cc 00 .byte.b $00 + 23 e0cc repend + 24 e0cd 00 .byte.b $00 + 23 e0cd repend + 24 e0ce 00 .byte.b $00 + 23 e0ce repend + 24 e0cf 00 .byte.b $00 + 23 e0cf repend + 24 e0d0 00 .byte.b $00 + 23 e0d0 repend + 24 e0d1 00 .byte.b $00 + 23 e0d1 repend + 24 e0d2 00 .byte.b $00 + 23 e0d2 repend + 24 e0d3 00 .byte.b $00 + 23 e0d3 repend + 24 e0d4 00 .byte.b $00 + 23 e0d4 repend + 24 e0d5 00 .byte.b $00 + 23 e0d5 repend + 24 e0d6 00 .byte.b $00 + 23 e0d6 repend + 24 e0d7 00 .byte.b $00 + 23 e0d7 repend + 24 e0d8 00 .byte.b $00 + 23 e0d8 repend + 24 e0d9 00 .byte.b $00 + 23 e0d9 repend + 24 e0da 00 .byte.b $00 + 23 e0da repend + 24 e0db 00 .byte.b $00 + 23 e0db repend + 24 e0dc 00 .byte.b $00 + 23 e0dc repend + 24 e0dd 00 .byte.b $00 + 23 e0dd repend + 24 e0de 00 .byte.b $00 + 23 e0de repend + 24 e0df 00 .byte.b $00 + 23 e0df repend + 24 e0e0 00 .byte.b $00 + 23 e0e0 repend + 24 e0e1 00 .byte.b $00 + 23 e0e1 repend + 24 e0e2 00 .byte.b $00 + 23 e0e2 repend + 24 e0e3 00 .byte.b $00 + 23 e0e3 repend + 24 e0e4 00 .byte.b $00 + 23 e0e4 repend + 24 e0e5 00 .byte.b $00 + 23 e0e5 repend + 24 e0e6 00 .byte.b $00 + 23 e0e6 repend + 24 e0e7 00 .byte.b $00 + 23 e0e7 repend + 24 e0e8 00 .byte.b $00 + 23 e0e8 repend + 24 e0e9 00 .byte.b $00 + 23 e0e9 repend + 24 e0ea 00 .byte.b $00 + 23 e0ea repend + 24 e0eb 00 .byte.b $00 + 23 e0eb repend + 24 e0ec 00 .byte.b $00 + 23 e0ec repend + 24 e0ed 00 .byte.b $00 + 23 e0ed repend + 24 e0ee 00 .byte.b $00 + 23 e0ee repend + 24 e0ef 00 .byte.b $00 + 23 e0ef repend + 24 e0f0 00 .byte.b $00 + 23 e0f0 repend + 24 e0f1 00 .byte.b $00 + 23 e0f1 repend + 24 e0f2 00 .byte.b $00 + 23 e0f2 repend + 24 e0f3 00 .byte.b $00 + 23 e0f3 repend + 24 e0f4 00 .byte.b $00 + 23 e0f4 repend + 24 e0f5 00 .byte.b $00 + 23 e0f5 repend + 24 e0f6 00 .byte.b $00 + 23 e0f6 repend + 24 e0f7 00 .byte.b $00 + 23 e0f7 repend + 24 e0f8 00 .byte.b $00 + 23 e0f8 repend + 24 e0f9 00 .byte.b $00 + 23 e0f9 repend + 24 e0fa 00 .byte.b $00 + 23 e0fa repend + 24 e0fb 00 .byte.b $00 + 23 e0fb repend + 24 e0fc 00 .byte.b $00 + 23 e0fc repend + 24 e0fd 00 .byte.b $00 + 23 e0fd repend + 24 e0fe 00 .byte.b $00 + 23 e0fe repend + 24 e0ff 00 .byte.b $00 + 25 e100 repend + 26 e100 + 27 e100 Start_0 + 28 e100 ea nop + 29 e101 ea nop + 30 e102 ea nop + 31 e103 + 0 e103 CLEAN_START + 1 e103 78 sei + 2 e104 d8 cld + 3 e105 + 4 e105 a2 00 ldx #0 + 5 e107 8a txa + 6 e108 a8 tay + 7 e109 ca .CLEAR_STACK dex + 8 e10a 9a txs + 9 e10b 48 pha + 10 e10c d0 fb bne .CLEAR_STACK + 11 e10e + 33 e10e ; jsr Call_1 + 34 e10e a9 ff lda #$FF + 35 e110 85 0e sta PF1 + 36 e112 StartFrame + 37 e112 a9 02 lda #2 + 38 e114 85 01 sta VBLANK + 39 e116 85 00 sta VSYNC + 40 e118 + 41 e118 85 02 sta WSYNC + 42 e11a 85 02 sta WSYNC + 43 e11c 85 02 sta WSYNC + 44 e11e + 45 e11e a9 00 lda #0 + 46 e120 85 00 sta VSYNC + 47 e122 + 48 e122 a0 25 ldy #37 + 49 e124 Vert + 50 e124 85 02 sta WSYNC + 51 e126 88 dey + 52 e127 d0 fb bne Vert + 53 e129 + 54 e129 a9 00 lda #0 + 55 e12b 85 01 sta VBLANK + 56 e12d + 57 e12d a0 c0 ldy #192 + 58 e12f Pic + 59 e12f 85 02 sta WSYNC + 60 e131 88 dey + 61 e132 d0 fb bne Pic + 62 e134 + 63 e134 a9 02 lda #2 + 64 e136 85 01 sta VBLANK + 65 e138 + 66 e138 a0 1e ldy #30 + 67 e13a Over + 68 e13a 85 02 sta WSYNC + 69 e13c 88 dey + 70 e13d d0 fb bne Over + 71 e13f + 72 e13f 20 e0 ff jsr Call_1 + 73 e142 + 74 e142 ad 80 10 lda PF_Color_Read + 75 e145 85 08 sta COLUPF + 76 e147 + 77 e147 + 78 e147 4c 12 f1 jmp StartFrame + 79 e14a + 80 e14a + 81 e14a + 82 e14a + 83 efe0 org $EFE0 + 84 efe0 rorg $FFE0 + 85 efe0 Call_1 + 86 efe0 8e f9 ff stx $FFF9 + 87 efe3 + 88 efe3 ea nop + 89 efe4 ea nop + 90 efe5 ea nop + 91 efe6 ea nop + 92 efe7 ea nop + 93 efe8 ea nop + 94 efe9 + 95 efe9 60 rts + 96 efea + 97 eff8 org $EFF8 + 98 eff8 rorg $FFF8 + 99 eff8 ff ff .word.w $FFFF + 100 effa 00 f1 .word.w Start_0 + 101 effc 00 f1 .word.w Start_0 + 102 effe 00 f1 .word.w Start_0 + 103 f000 + 104 10000 ???? seg Bank_1 + 105 10000 ???? + 106 f000 org $F000 + 107 f000 rorg $F000 + 108 f000 + 109 f000 repeat 256 + 110 f000 00 .byte.b $00 + 109 f000 repend + 110 f001 00 .byte.b $00 + 109 f001 repend + 110 f002 00 .byte.b $00 + 109 f002 repend + 110 f003 00 .byte.b $00 + 109 f003 repend + 110 f004 00 .byte.b $00 + 109 f004 repend + 110 f005 00 .byte.b $00 + 109 f005 repend + 110 f006 00 .byte.b $00 + 109 f006 repend + 110 f007 00 .byte.b $00 + 109 f007 repend + 110 f008 00 .byte.b $00 + 109 f008 repend + 110 f009 00 .byte.b $00 + 109 f009 repend + 110 f00a 00 .byte.b $00 + 109 f00a repend + 110 f00b 00 .byte.b $00 + 109 f00b repend + 110 f00c 00 .byte.b $00 + 109 f00c repend + 110 f00d 00 .byte.b $00 + 109 f00d repend + 110 f00e 00 .byte.b $00 + 109 f00e repend + 110 f00f 00 .byte.b $00 + 109 f00f repend + 110 f010 00 .byte.b $00 + 109 f010 repend + 110 f011 00 .byte.b $00 + 109 f011 repend + 110 f012 00 .byte.b $00 + 109 f012 repend + 110 f013 00 .byte.b $00 + 109 f013 repend + 110 f014 00 .byte.b $00 + 109 f014 repend + 110 f015 00 .byte.b $00 + 109 f015 repend + 110 f016 00 .byte.b $00 + 109 f016 repend + 110 f017 00 .byte.b $00 + 109 f017 repend + 110 f018 00 .byte.b $00 + 109 f018 repend + 110 f019 00 .byte.b $00 + 109 f019 repend + 110 f01a 00 .byte.b $00 + 109 f01a repend + 110 f01b 00 .byte.b $00 + 109 f01b repend + 110 f01c 00 .byte.b $00 + 109 f01c repend + 110 f01d 00 .byte.b $00 + 109 f01d repend + 110 f01e 00 .byte.b $00 + 109 f01e repend + 110 f01f 00 .byte.b $00 + 109 f01f repend + 110 f020 00 .byte.b $00 + 109 f020 repend + 110 f021 00 .byte.b $00 + 109 f021 repend + 110 f022 00 .byte.b $00 + 109 f022 repend + 110 f023 00 .byte.b $00 + 109 f023 repend + 110 f024 00 .byte.b $00 + 109 f024 repend + 110 f025 00 .byte.b $00 + 109 f025 repend + 110 f026 00 .byte.b $00 + 109 f026 repend + 110 f027 00 .byte.b $00 + 109 f027 repend + 110 f028 00 .byte.b $00 + 109 f028 repend + 110 f029 00 .byte.b $00 + 109 f029 repend + 110 f02a 00 .byte.b $00 + 109 f02a repend + 110 f02b 00 .byte.b $00 + 109 f02b repend + 110 f02c 00 .byte.b $00 + 109 f02c repend + 110 f02d 00 .byte.b $00 + 109 f02d repend + 110 f02e 00 .byte.b $00 + 109 f02e repend + 110 f02f 00 .byte.b $00 + 109 f02f repend + 110 f030 00 .byte.b $00 + 109 f030 repend + 110 f031 00 .byte.b $00 + 109 f031 repend + 110 f032 00 .byte.b $00 + 109 f032 repend + 110 f033 00 .byte.b $00 + 109 f033 repend + 110 f034 00 .byte.b $00 + 109 f034 repend + 110 f035 00 .byte.b $00 + 109 f035 repend + 110 f036 00 .byte.b $00 + 109 f036 repend + 110 f037 00 .byte.b $00 + 109 f037 repend + 110 f038 00 .byte.b $00 + 109 f038 repend + 110 f039 00 .byte.b $00 + 109 f039 repend + 110 f03a 00 .byte.b $00 + 109 f03a repend + 110 f03b 00 .byte.b $00 + 109 f03b repend + 110 f03c 00 .byte.b $00 + 109 f03c repend + 110 f03d 00 .byte.b $00 + 109 f03d repend + 110 f03e 00 .byte.b $00 + 109 f03e repend + 110 f03f 00 .byte.b $00 + 109 f03f repend + 110 f040 00 .byte.b $00 + 109 f040 repend + 110 f041 00 .byte.b $00 + 109 f041 repend + 110 f042 00 .byte.b $00 + 109 f042 repend + 110 f043 00 .byte.b $00 + 109 f043 repend + 110 f044 00 .byte.b $00 + 109 f044 repend + 110 f045 00 .byte.b $00 + 109 f045 repend + 110 f046 00 .byte.b $00 + 109 f046 repend + 110 f047 00 .byte.b $00 + 109 f047 repend + 110 f048 00 .byte.b $00 + 109 f048 repend + 110 f049 00 .byte.b $00 + 109 f049 repend + 110 f04a 00 .byte.b $00 + 109 f04a repend + 110 f04b 00 .byte.b $00 + 109 f04b repend + 110 f04c 00 .byte.b $00 + 109 f04c repend + 110 f04d 00 .byte.b $00 + 109 f04d repend + 110 f04e 00 .byte.b $00 + 109 f04e repend + 110 f04f 00 .byte.b $00 + 109 f04f repend + 110 f050 00 .byte.b $00 + 109 f050 repend + 110 f051 00 .byte.b $00 + 109 f051 repend + 110 f052 00 .byte.b $00 + 109 f052 repend + 110 f053 00 .byte.b $00 + 109 f053 repend + 110 f054 00 .byte.b $00 + 109 f054 repend + 110 f055 00 .byte.b $00 + 109 f055 repend + 110 f056 00 .byte.b $00 + 109 f056 repend + 110 f057 00 .byte.b $00 + 109 f057 repend + 110 f058 00 .byte.b $00 + 109 f058 repend + 110 f059 00 .byte.b $00 + 109 f059 repend + 110 f05a 00 .byte.b $00 + 109 f05a repend + 110 f05b 00 .byte.b $00 + 109 f05b repend + 110 f05c 00 .byte.b $00 + 109 f05c repend + 110 f05d 00 .byte.b $00 + 109 f05d repend + 110 f05e 00 .byte.b $00 + 109 f05e repend + 110 f05f 00 .byte.b $00 + 109 f05f repend + 110 f060 00 .byte.b $00 + 109 f060 repend + 110 f061 00 .byte.b $00 + 109 f061 repend + 110 f062 00 .byte.b $00 + 109 f062 repend + 110 f063 00 .byte.b $00 + 109 f063 repend + 110 f064 00 .byte.b $00 + 109 f064 repend + 110 f065 00 .byte.b $00 + 109 f065 repend + 110 f066 00 .byte.b $00 + 109 f066 repend + 110 f067 00 .byte.b $00 + 109 f067 repend + 110 f068 00 .byte.b $00 + 109 f068 repend + 110 f069 00 .byte.b $00 + 109 f069 repend + 110 f06a 00 .byte.b $00 + 109 f06a repend + 110 f06b 00 .byte.b $00 + 109 f06b repend + 110 f06c 00 .byte.b $00 + 109 f06c repend + 110 f06d 00 .byte.b $00 + 109 f06d repend + 110 f06e 00 .byte.b $00 + 109 f06e repend + 110 f06f 00 .byte.b $00 + 109 f06f repend + 110 f070 00 .byte.b $00 + 109 f070 repend + 110 f071 00 .byte.b $00 + 109 f071 repend + 110 f072 00 .byte.b $00 + 109 f072 repend + 110 f073 00 .byte.b $00 + 109 f073 repend + 110 f074 00 .byte.b $00 + 109 f074 repend + 110 f075 00 .byte.b $00 + 109 f075 repend + 110 f076 00 .byte.b $00 + 109 f076 repend + 110 f077 00 .byte.b $00 + 109 f077 repend + 110 f078 00 .byte.b $00 + 109 f078 repend + 110 f079 00 .byte.b $00 + 109 f079 repend + 110 f07a 00 .byte.b $00 + 109 f07a repend + 110 f07b 00 .byte.b $00 + 109 f07b repend + 110 f07c 00 .byte.b $00 + 109 f07c repend + 110 f07d 00 .byte.b $00 + 109 f07d repend + 110 f07e 00 .byte.b $00 + 109 f07e repend + 110 f07f 00 .byte.b $00 + 109 f07f repend + 110 f080 00 .byte.b $00 + 109 f080 repend + 110 f081 00 .byte.b $00 + 109 f081 repend + 110 f082 00 .byte.b $00 + 109 f082 repend + 110 f083 00 .byte.b $00 + 109 f083 repend + 110 f084 00 .byte.b $00 + 109 f084 repend + 110 f085 00 .byte.b $00 + 109 f085 repend + 110 f086 00 .byte.b $00 + 109 f086 repend + 110 f087 00 .byte.b $00 + 109 f087 repend + 110 f088 00 .byte.b $00 + 109 f088 repend + 110 f089 00 .byte.b $00 + 109 f089 repend + 110 f08a 00 .byte.b $00 + 109 f08a repend + 110 f08b 00 .byte.b $00 + 109 f08b repend + 110 f08c 00 .byte.b $00 + 109 f08c repend + 110 f08d 00 .byte.b $00 + 109 f08d repend + 110 f08e 00 .byte.b $00 + 109 f08e repend + 110 f08f 00 .byte.b $00 + 109 f08f repend + 110 f090 00 .byte.b $00 + 109 f090 repend + 110 f091 00 .byte.b $00 + 109 f091 repend + 110 f092 00 .byte.b $00 + 109 f092 repend + 110 f093 00 .byte.b $00 + 109 f093 repend + 110 f094 00 .byte.b $00 + 109 f094 repend + 110 f095 00 .byte.b $00 + 109 f095 repend + 110 f096 00 .byte.b $00 + 109 f096 repend + 110 f097 00 .byte.b $00 + 109 f097 repend + 110 f098 00 .byte.b $00 + 109 f098 repend + 110 f099 00 .byte.b $00 + 109 f099 repend + 110 f09a 00 .byte.b $00 + 109 f09a repend + 110 f09b 00 .byte.b $00 + 109 f09b repend + 110 f09c 00 .byte.b $00 + 109 f09c repend + 110 f09d 00 .byte.b $00 + 109 f09d repend + 110 f09e 00 .byte.b $00 + 109 f09e repend + 110 f09f 00 .byte.b $00 + 109 f09f repend + 110 f0a0 00 .byte.b $00 + 109 f0a0 repend + 110 f0a1 00 .byte.b $00 + 109 f0a1 repend + 110 f0a2 00 .byte.b $00 + 109 f0a2 repend + 110 f0a3 00 .byte.b $00 + 109 f0a3 repend + 110 f0a4 00 .byte.b $00 + 109 f0a4 repend + 110 f0a5 00 .byte.b $00 + 109 f0a5 repend + 110 f0a6 00 .byte.b $00 + 109 f0a6 repend + 110 f0a7 00 .byte.b $00 + 109 f0a7 repend + 110 f0a8 00 .byte.b $00 + 109 f0a8 repend + 110 f0a9 00 .byte.b $00 + 109 f0a9 repend + 110 f0aa 00 .byte.b $00 + 109 f0aa repend + 110 f0ab 00 .byte.b $00 + 109 f0ab repend + 110 f0ac 00 .byte.b $00 + 109 f0ac repend + 110 f0ad 00 .byte.b $00 + 109 f0ad repend + 110 f0ae 00 .byte.b $00 + 109 f0ae repend + 110 f0af 00 .byte.b $00 + 109 f0af repend + 110 f0b0 00 .byte.b $00 + 109 f0b0 repend + 110 f0b1 00 .byte.b $00 + 109 f0b1 repend + 110 f0b2 00 .byte.b $00 + 109 f0b2 repend + 110 f0b3 00 .byte.b $00 + 109 f0b3 repend + 110 f0b4 00 .byte.b $00 + 109 f0b4 repend + 110 f0b5 00 .byte.b $00 + 109 f0b5 repend + 110 f0b6 00 .byte.b $00 + 109 f0b6 repend + 110 f0b7 00 .byte.b $00 + 109 f0b7 repend + 110 f0b8 00 .byte.b $00 + 109 f0b8 repend + 110 f0b9 00 .byte.b $00 + 109 f0b9 repend + 110 f0ba 00 .byte.b $00 + 109 f0ba repend + 110 f0bb 00 .byte.b $00 + 109 f0bb repend + 110 f0bc 00 .byte.b $00 + 109 f0bc repend + 110 f0bd 00 .byte.b $00 + 109 f0bd repend + 110 f0be 00 .byte.b $00 + 109 f0be repend + 110 f0bf 00 .byte.b $00 + 109 f0bf repend + 110 f0c0 00 .byte.b $00 + 109 f0c0 repend + 110 f0c1 00 .byte.b $00 + 109 f0c1 repend + 110 f0c2 00 .byte.b $00 + 109 f0c2 repend + 110 f0c3 00 .byte.b $00 + 109 f0c3 repend + 110 f0c4 00 .byte.b $00 + 109 f0c4 repend + 110 f0c5 00 .byte.b $00 + 109 f0c5 repend + 110 f0c6 00 .byte.b $00 + 109 f0c6 repend + 110 f0c7 00 .byte.b $00 + 109 f0c7 repend + 110 f0c8 00 .byte.b $00 + 109 f0c8 repend + 110 f0c9 00 .byte.b $00 + 109 f0c9 repend + 110 f0ca 00 .byte.b $00 + 109 f0ca repend + 110 f0cb 00 .byte.b $00 + 109 f0cb repend + 110 f0cc 00 .byte.b $00 + 109 f0cc repend + 110 f0cd 00 .byte.b $00 + 109 f0cd repend + 110 f0ce 00 .byte.b $00 + 109 f0ce repend + 110 f0cf 00 .byte.b $00 + 109 f0cf repend + 110 f0d0 00 .byte.b $00 + 109 f0d0 repend + 110 f0d1 00 .byte.b $00 + 109 f0d1 repend + 110 f0d2 00 .byte.b $00 + 109 f0d2 repend + 110 f0d3 00 .byte.b $00 + 109 f0d3 repend + 110 f0d4 00 .byte.b $00 + 109 f0d4 repend + 110 f0d5 00 .byte.b $00 + 109 f0d5 repend + 110 f0d6 00 .byte.b $00 + 109 f0d6 repend + 110 f0d7 00 .byte.b $00 + 109 f0d7 repend + 110 f0d8 00 .byte.b $00 + 109 f0d8 repend + 110 f0d9 00 .byte.b $00 + 109 f0d9 repend + 110 f0da 00 .byte.b $00 + 109 f0da repend + 110 f0db 00 .byte.b $00 + 109 f0db repend + 110 f0dc 00 .byte.b $00 + 109 f0dc repend + 110 f0dd 00 .byte.b $00 + 109 f0dd repend + 110 f0de 00 .byte.b $00 + 109 f0de repend + 110 f0df 00 .byte.b $00 + 109 f0df repend + 110 f0e0 00 .byte.b $00 + 109 f0e0 repend + 110 f0e1 00 .byte.b $00 + 109 f0e1 repend + 110 f0e2 00 .byte.b $00 + 109 f0e2 repend + 110 f0e3 00 .byte.b $00 + 109 f0e3 repend + 110 f0e4 00 .byte.b $00 + 109 f0e4 repend + 110 f0e5 00 .byte.b $00 + 109 f0e5 repend + 110 f0e6 00 .byte.b $00 + 109 f0e6 repend + 110 f0e7 00 .byte.b $00 + 109 f0e7 repend + 110 f0e8 00 .byte.b $00 + 109 f0e8 repend + 110 f0e9 00 .byte.b $00 + 109 f0e9 repend + 110 f0ea 00 .byte.b $00 + 109 f0ea repend + 110 f0eb 00 .byte.b $00 + 109 f0eb repend + 110 f0ec 00 .byte.b $00 + 109 f0ec repend + 110 f0ed 00 .byte.b $00 + 109 f0ed repend + 110 f0ee 00 .byte.b $00 + 109 f0ee repend + 110 f0ef 00 .byte.b $00 + 109 f0ef repend + 110 f0f0 00 .byte.b $00 + 109 f0f0 repend + 110 f0f1 00 .byte.b $00 + 109 f0f1 repend + 110 f0f2 00 .byte.b $00 + 109 f0f2 repend + 110 f0f3 00 .byte.b $00 + 109 f0f3 repend + 110 f0f4 00 .byte.b $00 + 109 f0f4 repend + 110 f0f5 00 .byte.b $00 + 109 f0f5 repend + 110 f0f6 00 .byte.b $00 + 109 f0f6 repend + 110 f0f7 00 .byte.b $00 + 109 f0f7 repend + 110 f0f8 00 .byte.b $00 + 109 f0f8 repend + 110 f0f9 00 .byte.b $00 + 109 f0f9 repend + 110 f0fa 00 .byte.b $00 + 109 f0fa repend + 110 f0fb 00 .byte.b $00 + 109 f0fb repend + 110 f0fc 00 .byte.b $00 + 109 f0fc repend + 110 f0fd 00 .byte.b $00 + 109 f0fd repend + 110 f0fe 00 .byte.b $00 + 109 f0fe repend + 110 f0ff 00 .byte.b $00 + 111 f100 repend + 112 f100 + 113 f100 Init_1 + 114 f100 8d f8 ff sta $FFF8 + 115 f103 Bank1_Sub + 116 f103 ; lda #$0F + 117 f103 ; sta COLUPF + 118 f103 ; inc PF_Color + 119 f103 18 clc + 120 f104 ad 80 10 lda PF_Color_Read + 121 f107 69 01 adc #1 + 122 f109 8d 00 10 sta PF_Color_Write + 123 f10c 60 rts + 124 f10d + 125 ffe3 org $FFE3 + 126 ffe3 rorg $FFE3 + 127 ffe3 20 03 f1 jsr Bank1_Sub + 128 ffe6 8e f8 ff stx $FFF8 + 129 ffe9 + 130 fff8 org $FFF8 + 131 fff8 ff ff .word.w $FFFF + 132 fffa 00 f1 .word.w Init_1 + 133 fffc 00 f1 .word.w Init_1 + 134 fffe 00 f1 .word.w Init_1 + 135 10000 diff --git a/test/roms/bankswitching/_code/test.sym b/test/roms/bankswitching/_code/test.sym new file mode 100644 index 000000000..262823b9c --- /dev/null +++ b/test/roms/bankswitching/_code/test.sym @@ -0,0 +1,121 @@ +--- Symbol List (sorted by symbol) +0.FREE_BYTES 0000 +1.CLEAR_STACK f109 (R ) +__DASM__TOTAL_FREE_MEMORY 0000 +AUDC0 0015 +AUDC1 0016 +AUDF0 0017 +AUDF1 0018 +AUDV0 0019 +AUDV1 001a +Bank1_Sub f103 (R ) +Call_1 ffe0 (R ) +COLUBK 0009 +COLUP0 0006 +COLUP1 0007 +COLUPF 0008 (R ) +Con_Color 0008 +Con_Select 0002 +Con_Start 0001 +CTRLPF 000a +CXBLPF 0036 +CXCLR 002c +CXM0FB 0034 +CXM0P 0030 +CXM1FB 0035 +CXM1P 0031 +CXP0FB 0032 +CXP1FB 0033 +CXPPMM 0037 +ENABL 001f +ENAM0 001d +ENAM1 001e +GRP0 001b +GRP1 001c +HMBL 0024 +HMCLR 002b +HMM0 0022 +HMM1 0023 +HMOVE 002a +HMP0 0020 +HMP1 0021 +Init_1 f100 (R ) +INPT0 0038 +INPT1 0039 +INPT2 003a +INPT3 003b +INPT4 003c +INPT5 003d +INTIM 0284 +J0_Down 0020 +J0_Left 0040 +J0_Right 0080 +J0_Up 0010 +J1_Down 0002 +J1_Left 0004 +J1_Right 0008 +J1_up 0001 +M_Double 0010 +M_Enable 0002 +M_Oct 0040 +M_Quad 0020 +M_Single 0000 +NUSIZ0 0004 +NUSIZ1 0005 +Over f13a (R ) +P0_Diff 0080 +P1_Diff 0040 +P_Double 0005 +P_Quad 0007 +P_Reflect 0008 +P_Single 0000 +P_ThreeClose 0003 +P_ThreeMedium 0006 +P_TwoClose 0001 +P_TwoFar 0004 +P_TwoMedium 0002 +PF0 000d +PF1 000e (R ) +PF2 000f +PF_Color_Read 1080 (R ) +PF_Color_Write 1000 (R ) +PF_Priority 0004 +PF_Reflect 0001 +PF_Score 0002 +Pic f12f (R ) +REFP0 000b +REFP1 000c +RESBL 0014 +RESM0 0012 +RESM1 0013 +RESMP0 0028 +RESMP1 0029 +RESP0 0010 +RESP1 0011 +RSYNC 0003 +Start_0 f100 (R ) +StartFrame f112 (R ) +SWACNT 0281 +SWBCNT 0283 +SWCHA 0280 +SWCHB 0282 +TIM1024T 0297 +TIM1T 0294 +TIM64T 0296 +TIM8T 0295 +VB_Disable 0000 +VB_DumpPots 0080 +VB_Enable 0002 +VB_LatchDisable 0000 +VB_LatchEnable 0040 +VBLANK 0001 (R ) +VDEL01 0026 +VDELBL 0027 +VDELP0 0025 +VDELP1 0026 +VERSION_MACRO 006a +Vert f124 (R ) +VS_Enable 0002 +VSYNC 0000 (R ) +WSYNC 0002 (R ) +--- End of Symbol List. diff --git a/test/roms/bankswitching/_code/vcs.h b/test/roms/bankswitching/_code/vcs.h new file mode 100644 index 000000000..c26d887bb --- /dev/null +++ b/test/roms/bankswitching/_code/vcs.h @@ -0,0 +1,157 @@ +; +; VCS system equates +; +; Vertical blank registers +; +VSYNC = $00 +VS_Enable = 2 +; +VBLANK = $01 +VB_Enable = 2 +VB_Disable = 0 +VB_LatchEnable = 64 +VB_LatchDisable = 0 +VB_DumpPots = 128 +; I don't know a good name to un-dump the pots, +; at least that makes sense. + +WSYNC = $02 +RSYNC = $03 ;for sadists +; +; Size registers for players and missiles +; +NUSIZ0 = $04 +NUSIZ1 = $05 +P_Single = 0 +P_TwoClose = 1 +P_TwoMedium = 2 +P_ThreeClose = 3 +P_TwoFar = 4 +P_Double = 5 +P_ThreeMedium = 6 +P_Quad = 7 + +M_Single = $00 +M_Double = $10 +M_Quad = $20 +M_Oct = $40 + +; +; Color registers +; +COLUP0 = $06 +COLUP1 = $07 +COLUPF = $08 +COLUBK = $09 + +; +; Playfield Control +; +CTRLPF = $0A +PF_Reflect = $01 +PF_Score = $02 +PF_Priority = $04 +; Use missile equates to set ball width. + +REFP0 = $0B +REFP1 = $0C +P_Reflect = $08 + +PF0 = $0D +PF1 = $0E +PF2 = $0F +RESP0 = $10 +RESP1 = $11 +RESM0 = $12 +RESM1 = $13 +RESBL = $14 +AUDC0 = $15 +AUDC1 = $16 +AUDF0 = $17 +AUDF1 = $18 +AUDV0 = $19 +AUDV1 = $1A ;duh + +; +; Players +; +GRP0 = $1B +GRP1 = $1C + +; +; Single-bit objects +; +ENAM0 = $1D +ENAM1 = $1E +ENABL = $1F +M_Enable = 2 + +HMP0 = $20 +HMP1 = $21 +HMM0 = $22 +HMM1 = $23 +HMBL = $24 + +; Miscellaneous +VDELP0 = $25 +VDEL01 = $26 +VDELP1 = $26 +VDELBL = $27 +RESMP0 = $28 +RESMP1 = $29 +HMOVE = $2A +HMCLR = $2B +CXCLR = $2C +CXM0P = $30 +CXM1P = $31 +CXP0FB = $32 +CXP1FB = $33 +CXM0FB = $34 +CXM1FB = $35 +CXBLPF = $36 +CXPPMM = $37 +INPT0 = $38 +INPT1 = $39 +INPT2 = $3A +INPT3 = $3B +INPT4 = $3C +INPT5 = $3D + +; +; Switch A equates. +; +; There are more elegant ways than using all eight of these. :-) +; +SWCHA = $0280 +J0_Right = $80 +J0_Left = $40 +J0_Down = $20 +J0_Up = $10 +J1_Right = $08 +J1_Left = $04 +J1_Down = $02 +J1_up = $01 +; +; Switch B equates +; +SWCHB = $0282 +P0_Diff = $80 +P1_Diff = $40 +Con_Color = $08 +Con_Select = $02 +Con_Start = $01 + +; +; Timer +; +SWCHA = $0280 +SWACNT = $0281 +SWCHB = $0282 +SWBCNT = $0283 +INTIM = $0284 +TIM1T = $0294 +TIM8T = $0295 +TIM64T = $0296 +TIM1024T = $0297 + + diff --git a/test/roms/bankswitching/_code/x07.asm b/test/roms/bankswitching/_code/x07.asm new file mode 100644 index 000000000..0be8bdb36 --- /dev/null +++ b/test/roms/bankswitching/_code/x07.asm @@ -0,0 +1,754 @@ +;;A Bankswitching demo for the x07 scheme. 16 4K banks (64K total) +;;By: Rick Skrbina 6/11/09 + + + processor 6502 + include "vcs.h" + include "macro.h" + + seg.u vars + org $80 + + + seg bank0 + org $0000 + rorg $F000 + +Bank0 + nop + nop + nop + + CLEAN_START + + +Start_Frame + + lda #2 + sta VBLANK + sta VSYNC + sta WSYNC + sta WSYNC + sta WSYNC + lsr + sta VSYNC + + ldy #37 +VerticalBlank + sta WSYNC + dey + bne VerticalBlank + + sty VBLANK + + lda #$0F + sta COLUBK + + ldy #12 +Picture0 + sta WSYNC + dey + bne Picture0 + + jsr Swch1 + + ldy #12 +Picture1 + sta WSYNC + dey + bne Picture1 + + jsr Swch2 + + ldy #12 +Picture2 + sta WSYNC + dey + bne Picture2 + + jsr Swch3 + + ldy #12 +Picture3 + sta WSYNC + dey + bne Picture3 + + jsr Swch4 + + ldy #12 +Picture4 + sta WSYNC + dey + bne Picture4 + + jsr Swch5 + + ldy #12 +Picture5 + sta WSYNC + dey + bne Picture5 + + jsr Swch6 + + ldy #12 +Picture6 + sta WSYNC + dey + bne Picture6 + + jsr Swch7 + + ldy #12 +Picture7 + sta WSYNC + dey + bne Picture7 + + jsr Swch8 + + ldy #12 +Picture8 + sta WSYNC + dey + bne Picture8 + + jsr Swch9 + + ldy #12 +Picture9 + sta WSYNC + dey + bne Picture9 + + jsr SwchA + + ldy #12 +PictureA + sta WSYNC + dey + bne PictureA + + jsr SwchB + + ldy #12 +PictureB + sta WSYNC + dey + bne PictureB + + jsr SwchC + + ldy #12 +PictureC + sta WSYNC + dey + bne PictureC + + jsr SwchD + + ldy #12 +PictureD + sta WSYNC + dey + bne PictureD + + jsr SwchE + +; ldy #12 +;PictureE +; sta WSYNC +; dey +; bne PictureE + +; ldy #12 +;PictureF +; sta WSYNC +; dey +; bne PictureF + + lda #2 + sta VBLANK + + ldy #30 +OverScan + sta WSYNC + dey + bne OverScan + + jmp Start_Frame + + org $0500 + rorg $F500 + +Swch1 + lda $081D + nop + nop + nop + nop + nop + nop + rts + + ;$F50A + +Swch2 + lda $082D + nop + nop + nop + nop + nop + nop + rts + + ;$F514 + +Swch3 + lda $083D + nop + nop + nop + nop + nop + nop + rts + + ;$F51E + +Swch4 + lda $084D + nop + nop + nop + nop + nop + nop + rts + + ;$F528 + +Swch5 + lda $085D + nop + nop + nop + nop + nop + nop + rts + + ;$F532 + +Swch6 + lda $086D + nop + nop + nop + nop + nop + nop + rts + + ;$F53C + +Swch7 + lda $087D + nop + nop + nop + nop + nop + nop + rts + + ;$F543 + +Swch8 + lda $088D + nop + nop + nop + nop + nop + nop + rts + + ;$F550 + +Swch9 + lda $089D + nop + nop + nop + nop + nop + nop + rts + + ;$F55A + +SwchA + lda $08AD + nop + nop + nop + nop + nop + nop + rts + + ;$F564 + +SwchB + lda $08BD + nop + nop + nop + nop + nop + nop + rts + + ;$F56E + +SwchC + lda $08CD + nop + nop + nop + nop + nop + nop + rts + + ;$F578 + +SwchD + lda $08DD + nop + nop + nop + nop + nop + nop + rts + + ;$F582 + +SwchE + lda $08ED + nop + nop + nop + nop + nop + nop + rts + + + org $0FFC + rorg $FFFC + .word Bank0 + .byte "00" + + seg bank1 + org $1000 + rorg $F000 + +Bank1 + nop $080D +Sub1 + lda #$1F + sta COLUBK +; jmp Sub1 + rts + + org $1500 + rorg $F500 + nop + nop + nop + jsr Sub1 + nop $080D + + org $1FFC + rorg $FFFC + .word Bank1 + .byte "01" + + seg bank2 + org $2000 + rorg $F000 + +Bank2 + nop $080D +Sub2 + lda #$2F + sta COLUBK + rts + + org $250A + rorg $F50A + nop + nop + nop + jsr Sub2 + lda $080D + + org $2FFC + rorg $FFFC + .word Bank2 + .byte "02" + + seg bank3 + org $3000 + rorg $F000 + +Bank3 + nop $080D + +Sub3 + lda #$3F + sta COLUBK + rts + + org $3514 + rorg $F514 + nop + nop + nop + jsr Sub3 + lda $080D + + org $3FFC + rorg $FFFC + .word Bank3 + .byte "03" + + seg bank4 + org $4000 + rorg $F000 + +Bank4 + nop $080D + +Sub4 + lda #$4F + sta COLUBK + rts + + org $451E + rorg $F51E + nop + nop + nop + jsr Sub4 + lda $080D + + org $4FFC + rorg $FFFC + .word Bank4 + .byte "04" + + seg bank5 + org $5000 + rorg $F000 + +Bank5 + nop $080D + +Sub5 + lda #$5F + sta COLUBK + rts + + org $5528 + rorg $F528 + nop + nop + nop + jsr Sub5 + lda $080D + + org $5FFC + rorg $FFFC + .word Bank5 + .byte "05" + + seg bank6 + org $6000 + rorg $F000 + +Bank6 + nop $080D + +Sub6 + lda #$6F + sta COLUBK + rts + + org $6532 + rorg $F532 + nop + nop + nop + jsr Sub6 + lda $080D + + org $6FFC + rorg $FFFC + .word Bank6 + .byte "06" + + seg bank7 + org $7000 + rorg $F000 + +Bank7 + nop $080D + +Sub7 + lda #$7F + sta COLUBK + rts + + org $753C + rorg $F53C + nop + nop + nop + jsr Sub7 + lda $080D + + org $7FFC + rorg $FFFC + .word Bank7 + .byte "07" + + seg bank8 + org $8000 + rorg $F000 + +Bank8 + nop $080D + +Sub8 + lda #$8F + sta COLUBK + rts + + org $8546 + rorg $F546 + nop + nop + nop + jsr Sub8 + lda $080D + + org $8FFC + rorg $FFFC + .word Bank8 + .byte "08" + + seg bank9 + org $9000 + rorg $F000 + +Bank9 + nop $080D + +Sub9 + lda #$9F + sta COLUBK + rts + + org $9550 + rorg $F550 + nop + nop + nop + jsr Sub9 + lda $080D + + org $9FFC + rorg $FFFC + .word Bank9 + .byte "09" + + seg bankA + org $A000 + rorg $F000 + +BankA + nop $080D + +SubA + lda #$AF + sta COLUBK + rts + + org $A55A + rorg $F55A + nop + nop + nop + jsr SubA + lda $080D + + org $AFFC + rorg $FFFC + .word BankA + .byte "0A" + + seg bankB + org $B000 + rorg $F000 + +BankB + nop $080D + +SubB + lda #$BF + sta COLUBK + rts + + org $B564 + rorg $F564 + nop + nop + nop + jsr SubB + lda $080D + + org $BFFC + rorg $FFFC + .word BankB + .byte "0B" + + seg bankC + org $C000 + rorg $F000 + +BankC + nop $080D + +SubC + lda #$CF + sta COLUBK + rts + + org $C56E + rorg $F56E + nop + nop + nop + jsr SubC + lda $080D + + org $CFFC + rorg $FFFC + .word BankC + .byte "0C" + + seg bankD + org $D000 + rorg $F000 + +BankD + nop $080D + +SubD + lda #$DF + sta COLUBK + rts + + org $D578 + rorg $F578 + nop + nop + nop + jsr SubD + lda $080D + + org $DFFC + rorg $FFFC + .word BankD + .byte "0D" + + seg bankE + org $E000 + rorg $F000 + +BankE + nop $080D + +SubE + + lda #$EF + sta COLUBK+$40 ;Switch to bank F + + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + nop + + ldy #12 +PictureF + sta WSYNC + dey + bne PictureF + + rts ;go back to bank 0 + + + org $E582 + rorg $F582 + nop + nop + nop + jsr SubE + lda $080D + + + org $EFFC + rorg $FFFC + .word BankE + .byte "0E" + + seg bankF + org $F000 + rorg $F000 + +BankF + nop $080D + +SubF + nop + nop + nop + nop + + ldy #12 +PictureE + sta WSYNC+$40 ;+$40 so no undesired BS + dey + bne PictureE + + lda #$FF + sta COLUBK ;switch to bank E + + + org $FFFC + rorg $FFFC + .word BankF + .byte "0F" diff --git a/test/roms/bankswitching/_code/x07.bin b/test/roms/bankswitching/_code/x07.bin new file mode 100644 index 0000000000000000000000000000000000000000..2bccd16181a18d30cf0f381730fa883624012cc8 GIT binary patch literal 65536 zcmeI$y=zlZ90uStT@p!kakXXCHXoIU)4@b-UfAA0JAuKYo3Cv(s;tv#G3< zmE+IttkgV~m6tpHS5vJ+S+!YP|D|499i#&(9ZqRBrQ<2hr*tW$#gy)+^dP0jDLqYT zDW#XIah=WC_4V92*jw`;K!Csy0_`J}?)szAK9SPplGvQFv3!>hAV7cs0RjXF5ZJLmsW&%Qo2j&pX4S@yFY<>32oRVMfzbWy)4lL5 zI3fG74FUuR5FkK+009D<355QCD)#@A`u}D`o+m({5CZ=u0d13jLY%fu5+Fc;009C7 ziYO5J|9tHKSM>iP9=|;kAh3aeNx%juo+3bi009C72oM;1fzba?$Nqm${~!Cav;hJH zc3Z$CV7EoR9{~ac2oNAZfWYVkLjOM#`~M^Te{_f7&IAbLUce+E_eW%b1PBlyK!5-N z0^10L{(m<1|7ZIDHd0AK!5-N0t5&U7(yWQ|MRi`ujv0n=(&Ud0RmCLB*5o@009C72oNAZApZiP z|6hpx|Goa7|HHCE0t9j|U=on~BeFmO1PBlyK!8AD1w#M782kSx{lBoE0UIYkU@rtr z0`@}HdlDc(fB*pk1PBZ-5c>bs*#E!i|HC7?k^lh$TL_p0Y=Pq?0t5&UAV7csfqfGQ z{eL0$|L^+$zL~ob0Rlx8FbOE?$=f#p0t5&UAV44w0-^t3i~awX{-1~Aum%DI3L;<< zP>_SRO#%c65FkK+K#l}L|Gysl|DWtu_;+;hXx6gwa;M+O(LybS009CMDG(jmV zOl2Z>XHx_S5FkK+009E|5eWVNM(F>s_=nQJ5K4b*Evx2deO5w%009C72oNAZfB*pk N1PJ`UKlPf zAWWc&1#)1f!h`>78w6T8e1ty!9|fZ!Fd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O YqaiS0A<*~pKd_4n1PSO)VE71v0L6O7SO5S3 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/_code/xab b/test/roms/bankswitching/_code/xab new file mode 100644 index 0000000000000000000000000000000000000000..c759b2af0fbba080d81da9e1c63d0d2780196a44 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Defender (Genesis).bin b/test/roms/controller/genesis/Defender (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..aeede0986fe8330b83ead529b8cc402ae8dfdce3 GIT binary patch literal 4096 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 jX(`;1dg<1y4b}D|((zc(L0jDRd literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Defender Arcade (Genesis).bin b/test/roms/controller/genesis/Defender Arcade (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..28206ce62273c5ae48886181fb70fc913b564427 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Double Dragon (PAL) (Genesis).zip b/test/roms/controller/genesis/Double Dragon (PAL) (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..a1a84179db063a3d9a796bcaad2938cd3b6cc770 GIT binary patch literal 93540 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Enduro (Genesis).zip b/test/roms/controller/genesis/Enduro (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..a9d16238a37e2db731c0554148234040cb4e1ea8 GIT binary patch literal 19080 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Gingerbread Man (Fred Quimby) (Genesis).zip b/test/roms/controller/genesis/Gingerbread Man (Fred Quimby) (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..4246d4f5053bb01f2ee2b6b559e90999d6cb2918 GIT binary patch literal 6074 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/H.E.R.O. (Genesis).bin b/test/roms/controller/genesis/H.E.R.O. (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..af39f64d12f1c6c2ff0a3c6fee5f01fc9f774f60 GIT binary patch literal 8192 zcmahu4R{k(wv)+!NZX+;G|@*!fqs>hr(rs#Z%loG; zw)@XL95psQBXivNEW-p-O@qxvm>P&08@x<4L=CZxz#x;!NRpJx6$*t?snW{iO0`-$ zCME3-VEv`{u>-t{-OW!C(%C(HKD$5CE9A2K3Uecwt}ND8*b-3)Y24pYfcqL9=)N2* z;!)5`Zq(^|{DDHDZW|(?#7b^kPYhD$*+As)yxwf1G~7wFiHo9FFL1ecvgDZwXB=f8(iad8->4N_+uxfdJ??g^C7`jFo9Y@fUPZ*f!{ zcW6)%z54hjBOy#f>Oz@d>)VWs-7)`L=m4u!ev7{Ke~4c9zmFKF|J~j`wcKw@Sm@E%97KEPrs zG8sM<0W-`(Ez~AQf~fLh3r7h9gi8G73r^%IVt-vXOC+de_OSyJPN;{HM@1 z|7n=y$C66GkBa`O2PiG+0`l+@gCciM244`I)-=i2k_MplkKPnxa!yWpfx!9h=>1770202_$+>%d7I*-0nq z3!s#~K>oWZ72aUEqalUsEGF4C9?_m+Pqn9UwcuTPZz-5ytV8F>cPJft#~AP;q=FSF zz|8E9y1KgF;8UkjFt`Rr3O1fb0eh}Q`UF;!{bZ23xha!CW{yIWy$Wf7)Zpr~C_DK4 zS!4`0pY00T(@-{N+@t}6qZIZ4N(BYd>?xcAP-x0voO(ZwiZ}(*UT|bPjE-!Np4~HB z-OIg%Oq(bIjYSHi0&3%ftbiZ?9 zBM9*5Fkat{q787m7-3E-6LFT);|iMMQ78Ai4^}s#cgctKJzHn1!92WI0|yZ*a<3oO zxY4j?5P-TQ4ND*`(r~3nx79?R1&L|gSfuo*VL_%KGv+wxIoEGHhqC)Gos?%B#w2{5_n!>vBlz(r~iSSQp6=`B(UCf1FCY5)Upq{c+rvTG--_Q<@WTO2OIO z@j>daSMDL$OZ>#{3ti{g*19^E(n*mXl5H)N^U6Vr^eP+|?C0ZgF9Ce}gfWf@j&Y7G z$9Q_`2~LS7u)Bl_k=I<)ha12R>Y&|PS19W_=o#{)@x|;VA(P!9m@!h`bMVhY{X2$w z=!+kl^`(?~q*RXw={eXr)c>cU9>+L)7NlRMFu_Y)@ShdFiN^BWF|IL^s)+rD{W? ztgxEW7G8_k1ZBmr4Bhm~*#W6vGrNyhfJV=Hp9ZlQZ&ku2W<2$8WFVYh@nwln1)7JAFt)q zhNT@#M|g_us2Emu^@VIMvQb{~#Ym*nrSU1an`ne1q_Z5K_}4vccG6D313yH>TKSBa zpY<314fzYzygIg*msc#?%iSk=#jZ9IeOKqIH}5U2gOAlLu%eva_X)dGP;fP9C#;mI z>oO+~seJGO$#3PC^gqO#28OyW_s```?+k@^@blPnd_DV)kQ#o6vjPcr=s9}NC$USg zB;%6bI6ei|AAj?5hxPQ%PhywB2UPgzL6^CVBbR+TSTh^4!Irt~%`$y+iavJ=R{yu% zZ-Z0ZFHB^&!@`w=pN{vHg0;r7) znZ&1pD%=^~#iz6Oh#=_M-2y(ocX7FBn4W!#{fu7)-2(QQm-K&Ls?|}CvmRjqUmF}g zb)-{JgME*5^4ZWrot_$d%xtH~rk|U4mMY*wdckAkrvxubjNlc(I0jmviw(v2baS9I zH5}kH`959|?g)3pItHoj_MI@!RX)rA-&97F>|@EMK(EWwj5*@Z~HPc{hT?!X|m6D)NPto{@)3Dm_v@b^R*-snHe z8_e3$%y^vbfK8}pJK*!Ca`$jG?z8MJ-e_8In$KdnieWVhfLDDHh@|<{9EDAK3HC$= zR}IEa0rP4li$HX+3-mu5$rWHfUoCwm{Eq*vNSR>rvlYV`ANTmO8h`e2k85-af|i3R zNpl0I-{#92P6d{+joH9525jKroWuZJggaQDpoqcx z!DL~h?JiAccSWA}>0>*%xkq;R6lh0yH+|`xNQi5!h0j+$`SsW4UwI8d#iwpq@oUL% zTgDmG)nI~%?d6Bc%F0ZP1O(xh0ZOGPpH@{ntFC??K^P^_XbhC%hlbvuxuc<=ppT)l z68}MMrqNKES~;kxpA~^TK22yPv#|?dkPAmHTTzzc}8NT zB?%P+1N-(i*OiyOSXWoBP~;MMvzv?$ufUS1=38H#=xrm28ExSc%@veI65qCEVBir- z0^*K3MYM%iS}K|=EGxrp#0(IR>z0)>2nq_RUO^FfOsQ_M5ZX!A@YAMYsbBTH?UiQu zRZ)DSR3X)g>tc#Z8uIpw6mLo>yQ3uW+eon0hE`gRf|c028NK35JiG~c*e7tMx()) zSF&c!x|Ibb7E6K2bWPN2ES4%=DiF%1-a%**DN~+#YT5W4%Bek)51<2_ z8pl6L1EVoWUk4E%#H2W`#DU*rIK55rc-MixO}%}uLUCjw2fh0a_Il$RKiK${2>Z(bQ-kB+M`phE zQv|U8zwTiYQ=!(nM4)lK_q>3>AiT4Gonl)vU_OSt`9AN|3mYE;j0$ zXQ@=p4Grrse{;iPiCwR%#qCPznWd@%QswQ%70-+30mPgfNwDFYkwdXq_{x=>H@BWX zee&$tD_6pyP&gdctK|5sCGIX9=DvL59>V(Q!Uglk3dF$10q->1En;}b?p?!4p;z7O zT>|lo>CgZAIY7vXU)4QDXu#!rdk5~y1I*a5S>v*xd}c0igu~~ro;Y#!{D(sw9YaGy zuV4|7=hH9nkno!>iE#jeC-}9Su8SwVaB8@T_6z(CI84+yDnYj1;L{=m9ERX(@s97s z3K4a6w+V83K)B#&3lGqYu+xSkSv7BfuqD$YhWGKQ;eC+ZYqU1x_YUxet%U-zABBjC zKzrHm;&nbP)CRnJX|>=X>U{TuR}7$C>`Q_o{1R0dvq@2r(xv8X`4IN#&|c)%dU}r9 z`?+3xoI!-L&y!<+>HCPBj9p>d;1*zJo35Y@lqiFIUQV}NGL>FASSvyVkjtJEbdh3L z*1-iLt@wuZR1Bvb>F{Y9vmmY{y}ZK?3I*Adk=OYL;p_i%h^WT6?lr5ayV;9{Erv$J z?I1ww%Z9KohIVoq^F<0`f8+z@gKWUis6ZW9fKU+GCghoqmqNn8PXrO;C1I3TU^|ZV z2r6$A4Cr&%+0T>%kWlP`m2A7jQTcXW6&p4WTUFsLqimsjT8U(8v2I zDVf!IiR1?4#zk(qGPw(|Ngl1iJE*%?Ho`cAUnCoYP(SeaBqh+{ejT6{e-Y6k_6pSHy>&hP zFN+BEZxWFs_^OE3_jicM$<09(=2)AA&^rAJ1#3Tbdx^j3(3jeS5u_9Mdme*Xr-{UNRS zmU{*9+!FM6=$HXkbYF!TK+3?aala42@P~dD45{EYy5AoxmD9UNu&FX|sLQAL-;b<; z!8+U@4pLux$*%MLjOaeeEq4z=S~>N^S>Vy28yw^A;R_-rUtT1`r|G&OC_D;YfpgXV z*D!mHdkB&$Wj`yT&!pH~!EJM&9HhX-z~d*w>S|Y@oe>W21$8xWulaLb+B{!xK z^#B9qs+5@50o#kf7UiFnw&E%l$NH(>wNkD@dX0`A{=vu=VF856Zhj2=Hm~NkpdPvo zGPv%`(R47m48nRtSI^-NA>F4v>RlUJ>l=h@J!EvfXYavg0~>Zj=DQJU_(~=u_69$? z0xBIwLvS6kl^a5Tgu9P+wzFb53$BIW8pQiK4ELIEGItj0G03a3Ac^+kV=2}9fzG9c ztD`Ml7Y@E5!Yx|>Zcm=Yg&Tyu23aI_F1~_$2A$#x&}sOja{ZZN5BOwZBBJ55yfSPA zu-MaJA8G`0`!SpWad0P~;MSp2UX`CUG?wzZQ7dwMmPf2O3U|BT-M-r`6x_$Rjyvu? zK1h9fLGo$s?P1l}=fPzi-+{gNyCIvpPG1y(DxFL{4LD(goDn+<;l4UZeFL7~hi;%a z`d@T~v!a`@GkXw+dRbpY!$D5YHK2=ZpnLoOyn)`})4dA62L=3Jx;@~YUqbf=jKQ_* z$<##p)Z9J?gLujUsg)s5Z&WL&qT2-0OGqaQ>^MQ;@Ni}5E#yUiYUqCF;NXeDgYV!k z-v19c;juEzEXIOsw4sKc3*{o_KbdD3W}>x$sWdDH#0-YXSUthIeC;oR-MTy*P){;U z`Fw_Hu6T%<#u%8Q`l|W!06l@3#8_HON=gc<<}*bMQ-Q3RM#i?-GOeU(#p0%Vx@p-8hACw#A9$K6E^VwWVwzugs&=J)J~N)C z$J3U2=84&P3!Z76o->u1`q-4bN?X=)x^)gy$xLMErr%6r=qD{S%oboFGyM@8)6`_A znUWPHzyDpWfq86f$wN#D%%^Dl>M|NQDi<{`dZC0d(@nD;W7b&Gsr31ICACauS>A%y z4Mi2{i!0MhYO9#CMYEq~)@~>(o>_9gdF5kF*#pxi&oN8@fqC~mRYfx!3Ld%pfhJgo zRi;&wODdQW+q}9tWy{twWovUDFqAN5&XST91#_6y3(TelXAx7rYO)Qqdic@m=f>q( z7Bl6Oe?N^$zxQ6oIXNf4WTGnxR@ZWTiHfMhk$OKcXS zb!`pQmxCWz4a-X(*t~hO%WA_=W3bvrCD~}&Xt6t;tw6=}<#ubaeYw+#2XMIU zMt}&vG)WwE2AU{wh@Ic0iJj1b<}r-6K@^{Wsff@N4-slnfFA|{5JV_(3tERl0MHDH zf(>3!JAeM#dRR0e8VX_2o#LCFSmlrq!gP=bT>&2gC7^sWEg?@6MOZ^DM}k9QD{$JN zEg?q4W1(Z956Hyg1&|0+5kjG82*!th++l1;{96>vb4~mpD)9hQG!%ug5~55E;t9b9 z>`^={$Vr3*n=KTDHeQrbLqZM20TrGf;MVP`K#W>~$R)u1Fq58&h&Ekxy^=txU* z3ycp72%QNzwqy%b@SpTR(@}@WVhrCuGUlRb%mDw56pP2q3=&<|DQM4~7tKOEp2bZFCJWRkjsy^g`(ZZeelp zR-#=)PA!{8kd=#wdKpPqX=)c%)yS8~msBm$ZH0gAR*_XzYe=%4qBUeWv`KPx38{0@ zE@CUWs%n*-Tm-0gf+m4Z=9Nhtq^6#v>8)hBu6^2KQrAwl*Bk3e9hpbgL(%SPhoYX) zkR3Xp$#w0IYwEYum$#FP=DROvH~1!XnXh9;ZK;|uXo zL8cs&k)3~U^}qec?^<5%-2Lvcb6<=9>R;HkGfGQMrY0Z!nxr?BxH0|e66I= z=qVE{_P@Msop=|SI<pXyASN;F)O+pscfZd+ zvlHi>IW;q%YZyK%ARywudi4tRl~7KgaIk*g)r{GzS0SVbuVB3jCJvTPj*d)RpIu#C z937b7nmF5^wAnka_Eo)wifG(pzo*wc*|F;nMlv>G|9HD*;1T6ZGuU2#%=w`39XFZ1 z55GuKt=`pU{z?5g(EZg2`owCAB^Ad|w7YhAovi3_>VfC)f`XQJ9%Q~>FK?E$RGmHD zA@1%TPg{ouE|*GI$(Kitf!C@=S;3KnVG}ySYg!u z^Ql%7{M5fZ?kuTwhr=Xm1pha_4t+ zG-CO4e?l#|vbMI85$*R_uzz0?2wgn7bm#DzIeH%Fc zXazQ^MzNe^rV%(ibjtX>Kd85#<9DBW<9gj6gEG3ZQgY5La_iL;fn`HAf1A9gC4abl z^pMuTVN~R=^y!_|?FDrCD{5OMrGrC91mr!F>O4RAO0co*@n#wF>Q>%hGEI-Zy5C4Y z!_V7U820)6*)om;0rgmHhSA**0l@YIpB!iy_p# z_{aWri>%UqFv$V`ZRpYd*3CuQgTJt&*J!59Xy)3ll6w!g_Z=GR2I)rnWDZKS^)jKu zCi{--8024{9+=d)d264#^GSZ3j189z&vVQOw>HlRs}-x6X^gU{{bHp^A!rxSUoF{u zNeftII@Hfx?`RY0IP{lX_T`w}6aQtafN5zQL$b|3>ANmnq5VO27HM{T|5>f>;-I6A zFG_!%>8ZUjcYZYm2R4HfKjU)ot)A zW*kvIvekXaBU>_*$Jo8Jb()|B7*%37etRFX45{ z{p9R=zq;x77_)!n+_H52^K^7Z)J#N?u%q;Qx8y81T=_Zq3UQCQM#|_g@l5mOp{za?2gi8Xfqb{G8y+ ze?Vu#iUk@M=T-Zqr>}Dl_N|&BJgb~P*IyhS&(oGk&2dj>rUn~)Z-JFt(eb!kqx-b` z5}lI(Au`fZ8M5@7Tz3RUI+Xn?p0^gYj3Cg=s%O#Zb;qk)oARUa44>~bgfht4nE^6Zfv*h8cc=cx*gr|Hq- zg5HUf(3hViIUGX;+YQ(+voZhD^y-#p`G=-eTT)0|c_W*mU!I}Ww{UfDx0K2lvP%wB zgm@{hgESG6Db!W-&Q zUcQSjxzC*ANS`jIQCphts$TZ;mbfRR7KZr|4&!tUaaksnD4yM4Vr-m}<(QUt?onAA z9%9Cb*rp3xmaWc*`R;8$tg_C($t`6_Y&oA?Cz7|#akrkGw;NUYXwhDQom)!v7rd2X zHT6zOuI54QQ?mt)QL&^%ZGg~nSrF9vcZ7^hjX6`%!;)`muG*3rOLk#jBDm+HX+mI- z`qI^g`^Q=b=mk{fW*BW~zlY7GJnn#VP5=5OE4-nrkvHY_!*ltI4BD_7T(8Skx_Vhe zLO{e8o0m&<3_X5a-O5w;c!A3p3EHU6*zrHzBo(H;I9?M^wyZ+0e9wl&<=2UqJmj(h zb{|6M1?QbPB|9~F7Di-zK$CV;$oQ2ZgrT5^7B?l2mI@){AmW*epF~U4!qG^TJ*JtX zXt{C=k-FTi=sGVDoh5|xg?Rs{q+{x5`HddI;la_Mv<1IN(uD*IbxnA-+2_S_>WG{x zeh00kwT4Y=lg>21PJZSVyIYsVB*X6GnHr|r7qeXsixjKA;IC_sN+HC|tgJYy&W7oU z@g?15-t%S@l)H!KwRh$Zu8?GCYqF04fp<~8Nj{4@Y`;XWXX9+G0YUx{Fpn@ zqB33y4`tZj2YR!jm+GSESkL&d6k1K7|0Q>UM3A}lXtL-tWAKXJ){1R2}-j_sBxmImt>4TcQa+uJ*k3ffU~D(*$py7>v60mKf<;C zd#Iz}Rx-xG-;g``e(*Ee2ZNJJ=dlYOjC7+}aT!)P3!%oLWjJRGcka{F6~Q?9ZCsl- zsTfL+7X4%J@5`+dlNFnLAqsMp+k468*kLm7BDVO~+?eZ7@` zE`iSc+QGw>h*e%Jaqscp_m>;3Z&L|2#nntU%J}LfyE5d#RFeNT+n9_V4$N*e99SBQ zyj`YHIooBtSCdRhw3c&jvq*OTl-c3*NV@97?X+ECcy8CaQMCOY9fw?fCdSa$ZEpgHO>VAc?%FSDq6twj!<1^8D_i>8|QgEE> z*RR;LxnC9h=K7)L_F?YSE-F9W*ZF3rf)wz&&J+HjF7Ll%_jqA6VX5D~T1INKRv309 z^Pe)fZP#o4BKkCHe{P!1_o0g2@SDg00XWX`dn=OX6N)75OZ^^SZ3^kdt-=|zj*i$& z{_C#{iEPxpXON;6Mx`3e{p62BR-=mXjZ;;d_ztgUnRSP2zZzeM!Vj_i*v2#4|K%w! z6+7=&nGsy6Dwrt3#9+;wRmglR6t7HK#8GNh@~T?1n)5&#Da&l4*kAa^=Y9f}V)_7~ zG^8Ez=PaLJ;McQFdJJ|&(Uw+W(M;@lKWVvhMiLMAbAn8{2ZZNo256basNvpx!QxVx zW6PTR&?R0Du{(Fp#!aY*2Qz7Pa<`S=e(h;r_l6 zS$!{ldP2Y_8e03!DZ*lp6;flZe@~TPuz%qt#qMIK@CnDo%xA)|}cWdwb7Q+m)RB$Fng8)>kQ9oDHcjINj0D(lEy zNPUsEB`%-RXhtdFQM}z&e>1FLAyt-=oshK_IyxbT03T+0Y6{om6*D)GQI z|FTn}6nd9O*SPGYh|jC^m#MhunH%d1W522rWck=w_Lpd7=ewYDnc<7Wo9>zs=%<$a zv!W?=J9uPPgxsPtjD1HoP8)~)tU`g#Zu#~RdqVslSP7L?31^%Pgh8rx5y&*uNy`1X z0t*+KQ^Gw~{_n?FAb+gJjR}Og*Ztn_YJO4F;oG1}bBuC&*IKrBR}pz0crG+@MKQfl zv2m+9(wMGssu)BrZl9-@N``hl&1tZ_WvVHBzYcmX&jpjV+ur zF`t6Tq9}P6QZVzF>dFZc{_xas(4ng3y4$WbsmPlbd0t(e=Y^-C-YxpZ8v748lNHui zEM{*)%TyGw1-8xiRa3llTZ)Fvu{+%?22!7LtgASmf^?n8!;z{wVhhXviB!_{D;}0r zPxeRJJl@JiPecmYG}*@O*XQonAC}Sa%l5pB zZ5t59iZzdaX3kW;X=nS^*3WkQCxcxSS^-I(!|sVSvduad4+vaTR?fg=89SU_w&iFr`-esr|4C3{ViHx$=aV};M_bQbo=zVoSEXAG_#pbYU&j|SIr8t z)Eqt6ETueCS>w7gO@e^9OL%~kMyzwCccWCyKU3LS;+}E|Lg$Iks5wpaU&5H7-@yg>EtEH|dW4l3)IZHcfNJ!RJt05dLQ4);Q zt1pqJ?{hHBS+9{z{OgH0(Yz<)WQ9Xf&{rBZF^BH=&+6mNtqXIcei-4+_RebP z$j-tYJzM$$*B#a74d0~)-liQd)}N(kcNsDpC-5zQ=E#PS5LJ&;js&BlZB!_N$-cIK z9N{us6nZmH@rF>qHF4>$UGUG+`yer}uh`S!7!518;rCGZLlJI6h)I9GKG9%ITdhQx z!);#giuMa!sP7L^*5N@{xYe>VKF~ZZ1ClnEl4S#V`w=?0_g^DAAIyS3bvUmKP zfgx_)mA!S}cd4aWIgeZ;Q8v2zh>|+djR&QqE%Q-lr<**Yx%GxGx5uiCGpI|-x{-m zsNI^2#8CbfGxBMk z%JR9#GV_OMTv?qTC+N#_G4Xg9=v$O{=C{9MM>Z>12n2;6Z^UFGj948JA{LcgXl_Mc zJ21{>rdB-+Dsw4dLu+;ZF)xoX#uSD!A#sG7gmrwR;8+*w(YP}izDXIsE7ixP9zF_- z(2e1?qxO;k{f_#x-(*m}0Z|l5U5jq2+h&)q?TSuy8y}{Bu^?JTU@J2ndhI5E-t6BOD7-J*#|FFy`}rsNKw~u~IYd=PvRsH)JKc#jawer*hhoSTJ^HOb++XOW{o;XG}Uv z+n)1o`AQxj2&81ArNkzV2bv+flP)eFRiu$wd~0TnARWxw`q9)`i60zo5R7QtRlXU* zpx_8KHX$2N*VXZia~JiaJjHlIAuQAOQJt8GO`r77F=$BXC#O@@5@BokiQd56d|oE(M~Re-Env{GyPzt_w=5R={giw-u5n2Xok{8Iz;Zh#BcS~5tL;#o zqz*$yX;YUWqDjZe4XPzSM_#xc=68-i?t=j*{Dt@65Azbj41-Hqf%q7cR&Y%n< zrk0zO{a0;#REi4TAyT6nrizHq95%TBG=JWR_7L(dH=n&OLOXnf=Dh4phV!hBb-sSh z)q?(@wdyMBGDh%g$x92{xX;-lGBF%QhzhNZk?34$_58hN@$NIQLR~Nro8L z--Uk?+TRQvbtGA$twS9A7$qc|?3YF0S13U~Mnl^>GOY_-Q;PS1r1W9eQG~E!@}YpfXe?pi}>0)4_V~ zv$h>$>719b3t5ovTyjP~r=Cykj|l81m7l&_Z~G0iO&Z5gW+)R|+)7c@5=-C8COO(S zPw!1qB&t?dXFiF2uTlHTHo*0R$}7Jo?(73QdJ1(~UOcfi@4Kt^d6w~9)g!bRcWQ2Y zD1IkLRfZjg7CVVJMVU!)5JK_M$~%L(iSEhoQDhE^Sbw>_sS}9ZaDGa6o(yMi+`JK# zl=)&gIwfKq#GIqR&t~&AQR!{ztw~`eLOL;R@e|oKy=QZ2Z!Y_nR+Ae_J1?KFzlJ1^ z2R{rOvtraBo5(a*Vsb~W@;6YkhuFUwE4#IKGFk5Fr5+g+eG6Veu8cwQv_L>D=|?N6 z)iEa%!Q)H|kYVg%g-=<^@PqPw$z{*^V7hhlFGe8sMXsoCve zvqjhEh7ns$nJvJvVVJW!4ftQ@ohj#=#<<5im_Q%DkQy&&wQs!=+U!yYV(hXT4@%#w z8e=R8*_RU^IuW7BC6JGo?r42Ic$R4t`CJ%_yc2?K@mE^L@?N+Us+Hh89v<77Rw*)~ zf4DJ0%dE&Snr=+pNZE8dCzj@sXhhEkcj~A%-bKsoGbW9eR% z3|~6IFdvBv>Yi9u>Gg|b&>$xuErQZ!HtbX8{g@4_8@{jnB$yE1`aX!vBApk<$z<-Q z3!D2gno#yyiC$lM|qKQO0QRv)k#7X|RHSQRQE1(yjO`Q#cH8lgH#41eUSx6kDC< z;MU8BzP=>=V%+hv(fXXFfAhH`d2v(`xmR*GyN!KyUy2hiLg&&&;2(p`3OhKeRacnrJ4y^-Hx3I^D0n<=$LTh zSC4hmxNF{iNM<`)Yff~ExO7>Y)J$LQaxz*xF3yp84@X^n{M=y`t&tgVlf3#ey7|#n zDz@LriXK4;nT#M2O`)?{-IbL*$|+~7*W)LNj-1bVE;EPS5E+>8RAe8#h^ZB3UUQG_ z{d-sI_G93b`1MB)7T0CTfTQcpA>QgC9;qai;X5P%89aG}RKLk#lg`g#avtHtDZu3k zqYj)YyeQeV#o|_9w_Cq7TSCmc^>f3@cP#K;$CB?9q?ooL3=`#9Bk4HXCOrLzJt;?4 zV)UHc`K0ACB}w%eEMvzIR)eD|CM9rF(DhVAl@k(%d{aRFFunQg!W|^obcI?68OO+p zh>LV+Y!qt}DEO$!mHb0T#}YYi4D?_h^PUuEd!gAbdVm3y-Bd_&CO5LCDAFgyil6p# zA{WhW>jB2r2sQAtg(h)pI+phKYZ!MF(_UEmhr*YbFae|HF{&{(U{0Xs7BKN-wHLNT zJ)*rUd~idMEu+`>E>^XVG)z`ZW!PgZ=53~xBJJ+u!ihA2V0zN|7yn$r-Ld;-IbPC- z`^fZCyl@Al9eRR3CxCF{rBj6}KB_yfvZjL;~8`Ix0Z?K~kImeQtaO(KI0c*G=e zl08`UTzfLQktC#_igBzcS@^p}KRIlO=23yfZ?e-rq`1~nKYX+VSrWY4lhYRpvNj(} zuy92Y)d> zOv+mggr!{O$?|sTl$nhse73}?r*sxl+rbNR$PWl3p&4lJc5C1weoW+|hRCPcnCu|sd@s*7X`LH#TvxQsn5&nG1_#Fl>P zy8csD4@{qSNvHg47lS4+Oh6@m(k6;-;wkkqkBmK&VF;#uF;ACHyWLoV)2Z3Mz*v~b zJ7MDAo`703rD+)d_=y)Cr@}>DR0bj4C$@Zhav3qs!YR_L@}Zz*BAPIx>NKi8h+Vi* zylxQju-jNn`nmltMp2?l&EcWoS6MMc3C8mcW=<`)QkwR zmQioN!(mT&F~!x{Vt%yVpG$WE`?CrzYjYtQ10NUcvoHo?$Tv}p z8iWR7RskL$DgW!Lr35<2|0`F2QFb-2ibIa6z&Ej!-d6vWUD)N*BAX~N0mluMl(Cc# zJj}WaVQhs zObl1>(||EJD^qvuKCVtWq%Qa`){QAPV4o^3uVqirccnYLZ?LLCsy1t(Uj@xU9 z6Ehj9YhoT-qvJS3P<3JjfdvkBOO@RBEW!(;+FKc;I<`8(ppktv;I_(}2pgdOjH0(F zDFr8^C(#2~JTl8G1%jY*&r2WjD2g{}*!1F^ZUN4tfcEXvADG`iU{LAVCaB zpUbAc3EXS_DUzrv2DI(muuN*PZj*n9aBVzK#XcJR1xX_>8VN>lmeta&4-?NgPz5Yt zk6kAL#SX!)x88ncJs@Adz?JUTQEhb4W#UX6s<6ERQ*Hp)#(nTi4A9VH%9Z4jT@Cv) z9eqdnt02!%Djx0$TaAO}OZrR%sy^d24Sb+gTiCaS?hJy;0{Ua-VnSxQwy+s_1U+jL zRs%|{@+}VvEoB}278+ODrm>Lp#X7CH<~ZGXpGaQ{95kssP+TX(Zc}?gpn=AfM#y)H zxSa?7JP)Yj<^-YEj(^HimLg$avSd+Xq&Wz@qb}Vl0LFwHKE(;fY0{1{0M4CSitZg@ zFTx9VURGa@5db4117qnX6M1h2u+_`4<++7f$(b5!{}h0C`ITvDT;>@ zL9Pl%5{Oa(Uh+VFGQJsv26rO!8eou6iy~Sk#_eVAD_m z?I5wQH{WLhWyA1kxWfKdr|T<-IBs5*fW!)d4E+t_1Y_m3WRxs2XZ&j|%w@2|$KLsz zBnX0vDCtxR`f-)|rn)A96=4-QAw&Mh?zqLL6}75 zv4XL4pX9K4NO4Gkos*XPDa`J_9b+IyWCx`bp$OPRVB$a!JI2QeDAjXO>JzunLmn2L zJp-%WFtGkBvGTCYv}}6veh7ed+s6Sv6wf_=AqWBdP?ul=ME8?7Yd6g7Gs{^PHIy!H zD-F2&$$5VaM`kgV%ukgRc>&i{8gQQQN8&7M*j<_Zg@C{R@Ty@~zYF6IrGlWAAe8_; zl@SwOplGUVsxHG1hvIaIkqL2LAhbAf#9CS)XbY=yK#-^&IZ2!|NJ~+QU?D5~4^z-= z2!zZ8q84}o0+;oobPzXDZp~O>fsL=n%H9hG#*&g}0`q7iWb-@jK^i4a^giGL%hA zE+B1=Q}ZZ-z}vcjn$*jZhvGqtjMr4~fiUB`NG@_i9t)|#HUlvv7lCtus9~d(FZ??c zuQJF>tqf4t-Q^6zf(DFPm(Mf8ir-O$x7~ea)Nj~%OYm-f_n!b$^{xAYo)YV3FzP>+ zh~)>Nn`JaMegm^)BQH|y#HD!F$L_ZW2+7|nnk%pJ;tjv|nB6N9qW z5TEste8I_VQKjD?`Sj&_JmXzij23yZaYUm005NQxy#5R5)8T8*aA>QMI zz>Lz98WI_HkK8qEXA?iLm*2%Jx1;s@2U@^;qLIyFIhssI30|e08l@(Na33^rJ`e$0 zku^=Gz%)R1Ia>K&C)vcJq8dra!;*|5rtFkBpA{Nvz>|EkccX3Z24tNn=^etcl zlKWkV^ouA>ofe)*vCuPt4K9W$xEluWRMHZe>=7rUGtE2DTZV-$Y+I z&1gT5VH?_M0;y$e0;E8S9-zA>K41xOR^9zD=53qEo_zcwOpo?h{Dli60KZsEGsNC} zEGB1?EUi{zjDvJq-b{}gjeuL%-GK_tM~)JP2)-BP#Hr&$b z&gg+{m>rONRtT@OQR9^RlkTj61V;%lBGKYRs4M{yQpH=s#Z?kdcNXjlaN-6Wa|D}Y z*HO~>a}0iaW^S7h7mIxg?k6{f@A!@8qgk#!jVK!97mL^q3Z+K#F|^T6KosS;D3*ga zTDX;i@8BVD-#-qcdKm7znV|^-p73y$%fV+BIM~MjsSsR^K@0fhct6B|=7Z+{S_$Y& z22DWzAOdN4C&3Cp6bu?P9}`Ew8P5Z5N`M7rJQFWe;ocB)MJ2r3Uj;i7C};oz{K7y- zC`i|boec&iR zyEF$R1XTf}&sNGc{*Mb{5IZXH1~5w*0uHn))RY<$w${>rK#4=2sM-k;gG>m5;NSp6 zBNmhq4;Yu!JQwg|dSJ%-#nN!!slv*^)5nP(je&BZt92 z3|!paWm1nSN#OMJ;3)-;%GRk8pv3)*f>W3QYXdOTRQ!C#0^PGZSlFNA&Z<6^5jf3> z(2G!TuEc?3Ug|XtF#rewfM(6cl({@X=!1%yIBxF*JAu1$!I(uTn{PfS0cgtTY;q?S z_y~gam!QEWMc{C=+UUi?Y+cA+6o&xdfk4s2gt7W~IgC@xH~0UU`01qNU$?m517@F%`mHf*8yefpfL7lX~Zf@HuzP*!;N!tBB*`> zE&$a{op@u$*u5%IPpYKY17Nm?uOf_@UIi!-5doXEj)Euy>Wv)p9 zwWvR~cfjVb$O6jvNL(6Ju=dk`9>@Fu6GAQxE7@fbj>Jg-^8Lj24N0*qA4R}MYARqm zzBq=Zxj7>#kS`_IFvBVcZD6GUP=*D4`wC#0uA>52Y+-`t3bL=Md{*PVKya}5^dMj7 zhTQyzU#)@8Hf0jgmT5+&I74mH(zwJInDi*d(lgTLk=_aPkSI#Igd}$S^yVoXAYN z<{vzoiD!Zn8X8fjRCm)zs9jVWkYK z-hbo1r%0K;x(uE30COx4-yRCMvEiy2V+`BNAmkg-l(xOZl(vNJ)e^=SyobHC!Z5vV z3E_!yJ`^o*ZZkZ9_gD5a`2F5|n z2ZFnY8>Z6*yc=@^a}aEeyPwtODF&dt($i%y+3j6?2Mn$oO#UwrXAP6}fbRheI$3LR zV*n1z9J1$PPuO?{0e%wEoQdZ`>qPFnHL5*(B4qb@`GCIeH#ud?t<6-NZ;lHekXNM^ zI&mohB!X;d{%Hs2-?eUJE*dJZRVv~h5fDia`5`(wL^R3E)kGjQ0;1he?!|}cv;&%h z&2a(sKsWM0Opgy?8URS)R1DB_-Eak%bdybLi0*sahXu%|$~RpxOQU7tv79{X{<5iv zDyDULiaER{_X8J!fKYxjz&Z&DI>2&qAOIqXB3EG9)S#emk5qt${Wo9ysLgRd>=BvO ziteHKq1yrZS}(ZC_W|_KNer7~>U`!Z@tEUSK0hf*?yL^TIz;Sx;IkZXBw#Dd{x19p zNGul`03Z6t=pHWL`77 zdZMw7bra$qD-eF=ELa+XGQON7pOHycjBf~W14$D8kOah>#}vrNpan{Rj7VvS-osN2 z$ldpQa!rVS4K{k6&JIW?vPdVW?8(O1NA*`vgg&s$((V8XiP-)$9oRyorvvVwRyb(? z;^O86pmt%m(*o%WV2&aNb*|JV0k9Jut2-+68C~=tPd~s2dvOj}cR(d(q6-Kx?~V-S zy{aT+CYBP2wLRv&c*QvE;Qp^)e26}Nh5E`0$W+h=#=p3&i1qoWZ5xkNe{ml#pfL5} zLz46}sjpoCT#Gsz&lOHXsuw<1+6TnT@5KVPN2FB&SxIeX2lR9#Wx@6frwd>wkkt*n z7j*Is`9?KwDT_)ZV^0l+9&slYOj%5*TT`nH@RHzu9>epO+abZE-j%MH+z_Q`l9oIR z1qLK~ei-IbQ`v-3J+pv$<7|0s@KniI>1jyk7VZvxa zQLnUB70M@LLHkwT2Vt}H%=`$wM;eE}2&XbR|)4B(Gu zP$x1#j^;ncO%6M20D%0zL777d#OVB3N@n2h=xtEuix6GKfcI@1(TgeJk1yvbb)Skfe(tvC$h*VsIAJmf%DcbXM#~! z0D(QV%D$}zB5^EbrD)!=giv)b092@_fLk=!m*4=lHsw_3|5Snb4Y*mWP(8BpMJ;jr zul{KtVD@0=&)~>R5`idjm|vQKi)cVFmSOH>92C^q zb-XEn{J*+5d|39;@1To>@PEgyFC1Zg*p^EAK z4ObHKGCUkmEMui|UZ5+D0dQ$7CL~cY4Fa7BtBXPKV=0k#PylXLV0TOp`vzP|y>Cen z#OW-b62w`1-J~peW)719B#Q74+>2b`u9+GvKM;cp;Nno!HOeyVO$v3i+tmNsvZnq3 znh8aP-Sz;thLltJ$R@nfFtg*Kv2z0{RKU%1=ttm$fr239Dq6sW^aQqlg%->Q8`Kl? zC8#37074H%)h(E}u4D;}o(nzG1jZ_FRh?9rf>fekA&C;K544) zSHFvs(W{u8Y{uz68>mj0i%LlbeQ?WwHpf)~Z&7ngBHW+AXYKyLQ|3Gx`HJtrAO3;o zYTpNR8%?Rxb6Fs_-H6vQ^NvuznQu$F(xW_Gtmi^%p`AxVf>1#`&F!g4K@8{iD1FwQ zru>D`NbzIp9N-R@hDGGX-q+?zc!f^&$N2Nbt&&tbg$(iJW&1Y2vXuyH(Tzpq54G)- zOB*il!=oCG=M@fd^(fE>BMh*0NM@F*`^N_I8G97hWsQ19@XCszl#%FvPy2ya6GBc2 zF>AOCAwl>IJW-NX->-wwI$l<{LtoUQ3SXkS4+}V!BEg<_9D>Vob~bDycJAFO_|s5q z=ZK*Uzx~h996UI2F00>TqEj|nVR??@qdR?P4_}DcAvy}7r$z^0eS^n^m&?N2H%Y3u zU@u3@s_GEey{g@|e?#{yQSmV&;V5t$uEu`MeI!=}K^7-TzYddL4MkkFiBRqjHIL;T=gM zN55upb0L^#DxKuV!FPD_Lqp-_b5rP3a!qUN>Kz96PzZgVT^7~3pB^>59~QJ@{HE% zq1tR;9^8IN7r|vnOm zEPX{t@5bylUWh8NeWqr&*aPpw9F+IS4eCV#I|cG>^Um16+LB$SWRq1~@62Y3+!sU9 zWr)d(`?(V8p$a+0Nv3l_`^=jUOJWC7oN9odjiXCp3azr`e=_c+&Zv?5(RNc+~@lbXtLV>TyYFm z#3s(nmf#+m7Sb)Y*0l-ly=ppNHZNK5#v&PFUcE zc%7?xZ={(G77+XN-!p@LPQYnEW_`%fB@WiMuMg|M7ljo)I3Ha!yv%j><`VKrd9r0} zm9yT++}^Phhel4>r#Yj9S)@EUB*-Fu=_K;~r)}pH%SqWcm4`%`hjNidn{R-|2C-r)>8B51MDhIYZW zWuq<>Lo?kZ#Y}(^gL|((>z_A&dQ_CmPx_7ZhxFb0l@Gt1EN07V&O_Kc?bsJjPTWMf zvOcvOc=bEp(#A?oRku=1HTMLq6Lap_zxa2l)(wK8q>^#!o_hw8d_I3&!N;AI5yS&g zlVsXY>`Mk~%Q^4v(A!_!Hu}c?B1$U1Hd$-C9`IkAC?->-<=^`73H;jh`Z!WbnUkdIx|0_O|ZV2`eg=5`l)FObw&9u&LKFQAUM)n1{c4y{l(R zFD+mXv0At3^4@W`d1IKpJyYz=^Q3okm%Jg2U;?$!+w*)g|%7@yRO%5>=Pk5(W@XX48@)LK$v2K_FW;b1GZv@Q5lNqQ=jZ-`gx zBu{9Lxm}=s=*O#(a$ciOk~AmLb(IJW4!*WKNep=}&IF!gLl5dWA`J3c+D*P zZg-tu>esyPbHmbP*N72rKl~80TRvRRmS(CLox{mnJTt_$>aNHvAuTtBy{b+3g4#fF z(u#fyhI8+w5i@70wD6#^>Qsn{EiuT9yPF7P#U1#2#*};ZZtuXnf--S|W}q&F>QY7w zc#zxtRv=+tELj~2V3gN^Yju!aC&qJ zVq!Vf%!FlgYwHNQo}q2iPMM}bNh5X-y`EfCy`PExMW66I-@SjM*>s^s1{QB0`*)`j=N3r4Iq)+81 zMhh1-ghQzJyecmPux6|>>$|huRaKdnhci+ z{dT_dPtub4C8_N$GK7DVCO2#wbMYaRQnD=O3$%~!09+asoA}0|3TsB{%ubT|G{9tsA#~ki|HDa(c|!E-epGLoOaXnhqM#ML z^8sJdNAT$NkvEo+9A^vNuT6>*3e*|6$E<$w=EtyJ%VIp>*yZi!bl820p?;{^1Y>)@1BbMub#eHoQ)Ttbxm7>8R7OYs9j##m!*b#IgoNa^}%-}K+pAjTx zYvo?OVmUKv{1hW1*k5oZGH!ACNk{EQ?0U1K6cjWnoK(FAQ0G*vhXQCzU02AIA3lljXGC=6u+>+yaPaLw(O`Q=PGG z;(o>5EkqoyAC$fs$CC-%pKijudYDtjESq6G!Jg+i$Gj8_z$VtDc4+kPgK*T>js2wKHu`TrscSj!c{>Mtu&-aJ@tv3%IY$ zMg1zN=nATAOiJp~_|i2;rm06@)4o|_yy^U!g0J7!c>j7O#fwcZMtOg2*Vk~}o?Axv z#Y|$~)60$g7O|tmjB@8fP~4=--&KqC4k6KGK28VTa;;i*ufl8#?|7RaR!N>Cv=2@) z(4#tgJRF+YMWhKyMNl#Ht`C;nS}v!-fF|mYPJqld;zMhl~4;)WI#798>a#AtA#EvLHO_ z3O*`u01csWBZ}f^KIh4iPA~~5TB$WIN#gGwy)4x>#n@RS#^2ylL+c9&>(>w`J; z`w4jYT)dR|zD$RmZ1fd0ef#~Oa`RKmlWg}p(NW5MpK82JC%hx3uIA>%T5)h=w8oSh ztu^OP(>|>Vi50HEA9;9IC${_1O_85XPZIGxyyQvV{5X*bZ5umZ;Mv^l_D8)bs0q;3 zQBG{K{WC(}u>4|8cQ{_FR>|9rSk$v2OrVfPOu=(AXfPksEUfbxk)+%}7HMfoY-gXh zM=d)oByvlLw4DldV$C}b4(XOAwqRd5j?f}{E9I>5qC9_vRGSmN9G?<%o0K}Tibd=O z71R&PG7OSp>^AiJERw^Hx*+fyttv0vm5c0x;tN@5P%&jY@7qs?k<=|?E0~UZjx8Wu zZpkVYRH)}a9$IM8%UX$1j)CQAM!nY0hWN>!>z-i*g8NEzH|7eNn78`>1j6bI-qac+ zbKgRg6a0$wSXuOS2XEK^c6+XiFwc3`Lum<#Gm`^ zhft=Cj>MBxf!h0c4wZc0H!(V&A5lrezvJuaP_3?d~cUC zT}fQeuUDQv(K~RFwXShwY)<^7*_ix8C375mbt!@qp?f?jQ_l}W8~xI#mbCu#fE=?Y zpj5e)*Qn3qUdY0!{yD;J{;-R6UpO=|BHr&EKC|TwO7aaqWA22jd^U-Ju z5MFdRcK*uQ1nf~KLyr%Bo7PKKq8a;_Q~$Xr!M9*KUs<4wt;qCw_#>xhK8A$v0-LxI8DRM%*>oN z%*>6$%*@QpeBAzf?R)ON``Tk!8jmzy8cSn+dY^Yrs4}|MCx9nK=P^~uCvTi${p))Q zZmnPz?j}_X=eR*M*0{X)kM|AG5sOXSy_N5x=as|EVDc|S2N9K?^KwhCL~o9!X7mi> z!utbF5Mr8*{5B)4ogj=TZ0~J|R?0t7ye zrVR*y@y6Hl@$`1|4C{K)9skLAIDWoeg;b45e;?Q)khQt;Ef%PH_;~106FVoPj4eC? z3irn|Q#rAqe)V56Y>H(H2fmNV4LZrZ%zvi8yxc7xPC9qgdb}JH>ovYSFGXG-?$?{+ z`=e7S5n#8yxL36MV9l2qQSBzNr!ugoj;)+NT5W?M&u*CK^Vh=&Fn*d-ulriNwg>m~ z`zZFcf0pEGn89x7W_PRTMtE`@PiB6mWtt&F)d*N0ZlXI+cKkx1%>~M<5Y3Bo;fDhk z<#*~uKS`MMttt*^&>o%|SwygUWe7MpPsX6kqTfHFlQHfvPxi;Z*VHBIN#2woT<12D z(M&e4D7u;>iSS&0DnahvKhN)fa^FQ(X>@DDeYUu}y81rfv|B{M7;NZT!{NG&yhA9) z1Qsw7xo~MW$FCfOn7_vVc*%0BZ+BWAAaYgxAta8Il?o=Yxl=) za3IX9h_6FwMI-kV1kwz4EnL}2*OBKCa8duTWzLz~5f7OjqZ4fvek5Qa96~wbc%2{Y z45qcrTrFyf6>z1!pA1K05^)O|zBavnilt?K(4~0-hP^|T{gc;gJ2~!8ICu9;H8l)e zwdT*KURoC{T`zbWMaoz(IyY0Y9P^m>HOG+d67ZySc3BYL+6oLx0k9P~&oX!oImrez zLNZ6Pm0#r&=q+RPI-T*K$?}90K@H~iH;lS?2a)1)isOlw#~8?dOfikJLDNRKjyJ$k`(xlInp{VRFG+_zGAF2ze5R;7(7`JIQel37vGTw ziM*b@p8Rpg@Z-jO_4exxXys!zSBIoKhHOl93Qc;kvd7r#v5r;9pCJ}K6`;u zzPftae#H0k@pf{aKS}UL-{$M=vngr#ajl-6z45S(?HtEKTaL9GmN4|a&d6ezD3$c` z9lQVNbvN&cZ)5)zX~H7xJI%T6!akUsH#V$1&V1vO`fcr=8#X!jDcR+xTjn&gQoghC z={MQv#|E~Xz_(=q)3SMAM!Nz0rRUYi(M=*GR-}T^j|3sz&1CkMQ8*);bVt{mzN!i(-czuISW^rP5IH*g}Q0?>Yp*6M` zRF`0r5QQzw1nvd+up~I8@25SP*l*!!e7(>wR-BLEx*0Q{XdSJL9)du|E_eByb@uoX zK7(N20&j;lWX43!lnyI9s`#rlMNm+miK}*hPx43LeX>jXLvoVlL5v-FWLg^w!v43J z`9_NjNT9Pv${A(Utq6LIA%?t>>O5%0Rs+oyX8X4*{=95vO4&KQ|_WT zr-{(y$oNwBvx)n3?u8+~+|v_E_(L^3K~te%60QtG?*w4Sk>9TDrZdOpNQ;?K6c1`;uU~)F_e9;kHqI6Xf4n zHRrwQ0{QCclafc2I7>weSPzQCb2+kLI@TR?sdb(ec<)aNkjnf(J1AcisKFnZ5yua~5e zl^3DNv-*I)6J>|`0{H>s6={%;a_S$ZBF)|;j-GlfD2GmEE2r&%SJ=|{Tfr$TTJcnH zwe(>fg9U|VfP|EJu`I;ds^Rx8>P(mAJ<5Y$X*`BzY>h56H+|_9`sw5-W{S}mU8;e= zv@fgAre}xCI-`t#6<@+(>5!M?tb#uJn)tXL3qwKD6Hh+U#>* zW56^6dpo*PpS1}GrfBOL^CN9Ub>o;eQSk!0e2Yj8aDrw&U;3}G2=D5i)-QEayxdz- zFdj}g9G#pYT zP^@r&V0AJ)wa^!sn;l;+1fWlSwkUTlKW1uw6;x}$*!Fw+Uhq&nBW%sHs6KoLehElW^c4_=`n+qRWNuy<>~Umn3(E~>irIVkH*W=oex&={2I%-jy4E< zp@yA@u988FGLLbI?76Y#9w*UZf(h|8?vUsZ+D$M-M4lYjI_J2Htc_ZobQ-sOZ#K_b z`y~#-k2B_(ALA(XbezQ?xozv8dX@)y5CCTiVT4I{b%#j+$JlG^Q%=b$5$a5@4kr^4 z1+jZ5a)B-(X3S?hulXLUkD*rRO2P9M_h*8GMI93rHv{&@i6!V}SuGQw=ZNxhgnvO5 zxYI~Z+S01jqqa;K8ox&-g!e8U8^dnQiGkdOpL*ZubS`Ighf1I6`LndiuZq>Y%(J9Q zUOkg)0Q^{A(f}$As>b?I`ne_f#wb2!ZLfbO2*yjwFi7Lr^+zuwX1kbcUKKYjNhP4N z{nL=W_By{pef3MF01pZaO;$9$oBc@}4v)lnW==i_ViJn$^?I{;)An|fpJFkuy@x8+>m?pO#G=mEDDhTrVrjw}VcNAKzY;Ur z@J9Gr6e{ck3hk<z%DBZ_D|}Dn8aLw`mcxxnu(@&{ z_6by^kA7NP4DwHZQd+lD-DIjzCK`(R?^Dvvox3IjvWRsaG|iQfr;_+rlG~;l(=TEQ zqHE-8NG<~C)Fk$CP9lm9g3E#zn$hdcA&P!JVaCl4HZOTH>pD zBGKTV8e_UT))PIeBwDBA-0iWrY1HcZ>l>wf`&hk<>g1M~yn+PY*Lj5KCrt8Yt$eh^ z+eLhOHCr#@D@ih%6fUd~mc2c{oc%s2XvQe_lN?sH+PRbiu*z1kSVk?u_dP$rABmUC z?fDi|^c|`>HZ-YTJs^9x^D)+8y$1{ZX*IZUcVJXL#a%YB`*p$PIXKvzmR9nZz0?14 zt_iWE*?8h0FIY#P+$gdQ8<&&{#21&DPWqQNxv~jPx3ZN>8+@kM{be;*mM_+Nr?-RW z?Zd~7wxEq6OD|k2(@jh9Cx3>KtRp~@aL*CV!_#-zhu44kdQ}o0G?q0`eV*vT``N@A zvOIw3G7D!d^IU)q(hNa&X*T|sTO!sv^y9`>nieK=px925+bBt(_t*!~AB^^f2LR=u zS@7O~$m_mZnzw|a%UVPDUFRX=IxJJS+$)_{ zCToL|05vvqj`ef^lI3(u^#|rU z>P5YWf| z8ah$DqRn5;$EX2MlGcmH`~34ul%3Vj2ylPeD0^hFB@QXg)1=^3P&v?Exy8cNp!lcF zSA{Qmqu0~dLVxy3dF3eP>0qa6KdUCkhGzm>VsB}RwwFh!OA#ehw^;Ksgom*m6 zZNc#UKgRZ?Ia?~fb)+TMeh7v**bc{RQh8z0FhUNShCflwVy?M08pdAK+0K7kr}@Nt zX(fSMn_0=EM_kLhUw~`wuI*o0EI@c4)~0yBIo*(`D9^SJmxH&Tsy7Dg$JZ-8eB$?8 ztG?$GmfxK`LRn?%C*D{)5`qm1Zw8}3kzW3Bu<`xi0xT@iz+IDMZvjp?nHDNdppzfn z8*8MDw!-Hwk|L{zj|3}iSm^9^-3xyj$*-_>G!HZFKz=KW_N+R~|G_!FLb&paLNC10 z!!mjz*4N~v@~N#BDp+O5YN0%Q80jiXBfD9sVCB50(Y~jGE~>OIlYa0h%j)P|q8&`( z8X^nxY(MG-$5&0DxURY%MyK2wAx-h?hl1fB+!w^n!aj})<-P!>6vAu!BTB^WarQRn z>6a$iR9wtLhSCKYYfyC~lExZ;eA+9HlH`{x$t$$j<8H`0`+L@f6{@n}AD1irm}!%o zs#R!2)d1|Rk`ALh>BIvzb$hS)o*E_X#02Q%3tFoC-eS@uNH$@C4xMi0ZXyAD)yU?$ zI+Z5|3w9!tx+RLDL9YAYCV6G}9$IES6EopYknX6JI`bU%T_S?_6?1xMd;%U(y%bK&Y}p z)XBSWQ{sIvT}z9O6rUJtnrb>Tvwie+H1qW60PmIOOsQ|A?2pT?r-=Eu9U@I7zAdc6k^Jwt%2#52^R|G^4`%vqJxkLOx8jW{FIqM|+`gkM!8WPo7zW z&tE=y#EyLv#H5i@c~K6LHH-x_LtGc}zct8M0>jSnYdOPMBZmeTER=+o9H2UrEs`kc z2^mIxuY=+#=3Suw0!RysHU5XmT@q-cLCwtrgbYiU#eW`|T|^|@XV?od1xK*kXAA^Q zI{GLN7>Zd@X#>}yuT%rk%#}?5qhy{-SNc*EJx{8fBwv-!7~w_vvX8m1Cd|733T~f? zxEe-8ZH`Vi9M;u7Ck_62g9?@A2mrm_7Ueb;M{jPF-B6iA43Wt?ebQy{7@w$ z_n@>vSUF@igH)ZWcW?o-PxxiV=Jetu52djjB?$+94WMyASRJ`+hDR{s6 zT1=4aEEW)@`nU;>Efz=TsSsc)U~-*FEVcCQVR&{DB2ctgA4SZMA6wXFQ{Yuwd$4KV zDC>tLZpHMiLhiw`V@!d=AHLt%RrN3RR0e84Twiah@2O@;MjNpA1df?~ZW@5Dpnk@L znUC7hLX3+SI=s0k^8f+whi6C2ugt0LN=s9xv&%nTr?lz*sD#`k{A@@((ktQd*mf4b zqVRhUeI@FQ$&y%B)u7`$Vs79%G5zJ)!g`V4=~ap%N8+7>zBYQ8Ro;0?y%o}MYkHX! zr4n!%)I1}1McLQjmZTnsW6VihfK%Wf=3-Ns+1w-xUneLRJ7gC!q!W!T1Xd7s7&b#1 z6=h5)G~^fr@LlU7Lg0Ee+=$qO{sSRa;r7p}O zNl;>(R%M)rkN=I!Ol>YUrzint7UlJory`ZxU}qehd4$G;O)ktEtD6Uoz zRkZNk>R({q)Z}Hi!jgaB;RL^~F2t*p#K6kJ-~_Zu8K6$H1lvH%{-3nwn}OXpBh)@a zUXzU81p1h3z9%i}PTG*tyFjdf3qb3N`8UaMAhJ3VAiu+20rJF^C|xyTinCEZvVrd@ zzeV3Iw|&G=%@W{`nj7LcnS>Xnz|)DrUg+ufWZ}+bbbuI05{UcEf+A!CEj=*pNn#=C zo=S;0&sy!J^P4#ViSxmQ3CI;IaBd_FGGo7})8foqQ-k}k>Egxm#?0FyD~Z0e76KHV zzZ^Z`080+sUt5GyZK_^kXoaRk=L((lTk`q#Dp@AZ^(-o0$0pwT@9lOIi7d14KNbpr z>raI#U6KKR3ET?WiLkM{KI9ffG`IfAVm*X*43WZ=5%_QK0Q~2#Nc#}(p00VDohO8f3-@_1J}Gt zAeLAEqg|Z&%_VXIaE{r(wDK<-l5|R|WxZg@J5w}gk9uI?fLeX#;46@m0U|KmdyDB_{P?~SE5HsVg8tvL;0sv| z5PQ-f?#eEw8OZi`dzr=ajpADvqk3ILK zuK}0Fh)F|%n1oK+UmY>GB#h%pUFgRm^VcK+(zkI{2>2rQoUx7LKjr`m!%;01Q1@b;U>c}kZY0~l&pGu1 z9x@q(U*%Kt-hazZ`OH!b8JtUH1F0q#a^Vjtps<_#pVI))IN($axF`QP2#C2!v;h^l zI`49uN6=Bwb(`e4C|a3PCt|3!?t`{Ie`z$H_;u>S%b;W+x4^;4?+m>YThpN>c_QX! z>yY|iCkCieG!zNh6S1aW*;uTY%2WwWE)D9ymU|oSX9)az=>I1L&V>V!Lub z>1^ogfD5T?DRpfebs}=RlqL6Cpb!~|-_3;=Jr@;|1C>b(fm(!d{rF6t4u^%p#z*SrT-PwD`smo6THvUKWIp2hiyqG09Dbwl+L69^J`5e zzEXq=S2og}L*}P1g@Y0&;vCDs?v(hRG~iP9L>zoGbuRMiu#y+(HsLl{qhAzwPfAdV zwaq;f1GJtf<_2b0Fex(vPA7PPvtzmfFO}R6I!5bKP^S`Y_!qnlc0uzo&JA{ALjQF< z>Vy&V872QDsKi4-KGNEXS%`-It0xX4_M!E3sVQ_O11$&+LnL|Vbwpjy;iDoU;Y5zl zQ<{B25te{7``bNKo&jBhPJX2w?|*vCV62`g9EhY3g4N}P@r(bbv-rygpvT+56yQnd z_0=nV3i?j^9w!1wN6u^FYk*G?(!x9(Bx}%^z~?b+{{;Sa@}|ALn4ebK?Y6# z>qfjxqIc=w7GKA;OJdB19l()@pp***xo8LIoG_W%|Es-gN9?}1s2Qb(Dvwv&os<~Z z55-i*7mw8sJgm7<+%+Xm4At4>VNk!lDaE9e&OatexiDdM`W0I?zeB-@2lrb<3~+R>nJSMkNmC8F$TEl9Eh`{N-6+8 z8jz-$)lqoTE^5xXs*M{#H=?_1LKDDLPA82DR{af>%DeokmQ!-HF)(ejK|8Xg@ZfJ8D+_$mzT3hL0ZW& z)?{3zyZ)<0yC)c2SE$BS;d2+oc0DuCo8Iwr@w@%oo5(}oYM^)Hs+{keSZn1wsjq`4 z*XPA!_v zh)}*?tsaR8{5jm7tC=TUgWzsg+TB~~}ZokX_>{vJ1YR0j?;_!gz z9?wU-{xFTaL;4*K@bNia>CXD26Sz8I_d^#Vgret5_k21xA1vmO0}?Oq77n2RwI}TJ zLrd<2^~~UV1?F7d_dR&}82jX?H}!sFZKycA{#B;_*X)kZtY3`pH5=eC8au{vJ%eCw z+Fa3$Uu_*;=!RK)+}yB{LKqFbpWq2$i?4+9kuzy{EzmAuAhWFfzw@LSvTyf32|bY$ zIvUfYK@;&8cS&~<%%%ZcA!n7?A_}KNC9Z{%z;p{`6}Fdhxnw#bzJBXRlA-+YD{=95 zS!#TOPGaK?$!mHRwkTXgz8g=ab-d@@E|RFfSbRjGzd53;-VTTBD>782-N7cIO1wZ# zza+>rX`J94$yG@89zxfk&*f0d6EajTw_^$kpF0}9x?nIZH1P%Zo4C!cAh@Tgt~p>| z7b0FPr_ZzM7ZE6p`Go}4<#Rk+RO#tGo6#CGdH^hndGD{DyFnbkiuY;*NVcmO>6f{w z7?MTb4~lpx1Qgxy8pAo;0~r`VzHhHuW>`CJY*7ewL!VW10U|sX4hN_e-NKC1ET~(d>#NSWihy6j10t*ZLLORB%G&pDnQpqoxj9*Knpg#$NmTwphxA$pU6JA8+nni|n`dZj-64CsX^;-3~=O9@w>Z6w9s}FXZzlx>Q_O^P`Z`Vb+F2WdUBiKQCI=0iv(7+<31sh zb;}V4Y3Ay_!@uJnY0tzJcx^LQG{26DA<(C`wzm>oMpswLCam6e$We0;=xZ(vA%(Ws zOJia1Cz(bQHyF+B%itAq%=& zHN$!>5$Gz28xg$t6b#W0Jj^pfCTyyRE;Ygz+IN(0ET=DH@t!%ah_0op2MaBYLJetN z#VsJDn7a0YShtp8hWZ;Q&Qh8iwVOuMBQ0zJ-;8wdhPY251^otoiS(b^E1A+NN~$X( zE_k&K7{###g#QkLuP-1#dYW&w6*hA-@ye@)$6N+MLbHpMe65gI;;{65>F?%;yORwyKFSE%N!wR;^ zPx$=g#F)#iP_t`j34PZfJ`h9UA#?$y1$BibN_D5^6Wfbg_qiLi8B~gLO=Ht~rUlij z+OWgM5N*dBZTo!^JtDW411in%&$G(&O*>w&#lK zanwpjXZpotFvsKVdYY5^q-ttIUje@Ko>rskZJ$w{8^ua!beiRqrD0AtFoi{STQ4?6 zJGH>DA?% zJZbz>G+LzzF*gny0k6t0S+>H4Z;KVPzm$A@KJH#GyA@83HR+-=&|us+$x_VHyw=%D z6MezQPKS6?4>%Rz-yA)5h7X=6==@8yo9)&obIOgY94y!S zb6*+GQgG|RlU)W_LP|+tDs{dOp)Rvel%0qpZFKv!GRh7y)~m5!@;+z2ra@>0R45Mv zWUto=)yOv1p?#J?7}gn&9KM^}-I{1Jt_3?!E5sVf-_@IFu4;-V#8zE8ZfK~RvoMYA zKxJEJWG+^qdaH%a;L1TXL0B)$&B7-NSkjhPF|Zz5mMaz(JGjOW;UfD?&kpX96|tTi z>^m=n=m=SQ(RV7RvvkPjh!L>;L-c$p%dO;Fu%7tQeKvk8R|M4MM6}m-(<6F zb>!tN-ai6+qpz$~G6#35whWVB`X$SF|6+IL!<)g*X7Ku#2GL4Hy@5p`Bbf5vnMEn zHU(DF)YME`?B{7R(s^1fC-5U-vKmiN2fT{d7IfNpFWNa5q8Z*Iuq$c(^<)hM0AU~C$iokgnKqR9I> z-zC5PI&-T35q0P;?&s(sYbp8?>;6m}$Mj~mz9K%GISv^JvY(vFsC{Rsb(>WG;(BS# zR#N1#-bOVPR9RN$rClgGnrT0GS;JX?o7>rBZ7kuRG7=p+`Q4s9bux$FbCl%AgQj&% z)QkBWF(>FJi}_;7{<1@6mlCDiRgOg6x8g)R`br#xoKmDvPzP6rSd8Le&qBR1X9n=8uys( zp^M1X<$}dwqSnU?#xlEm(wTi6^S2x^@WZ38>&E;+@m@sv!uT3;9Dr^u< zk&phARZxsC&fCqdU8mm7r{^dyEJWn5w6?^3w}^0vSA4DIe~1^xZ?{7cxU!Ze5CgYS zsv=hb_s!4qYw8#Lb~;##^9%E=A_}lB9U5-^t|+SOOZx=*)zFY@h}Y8*{C9lq6oocW zFR*JUk2XHBwHTKUdT}bRPu|k(vaOH5NR!_izD{dZyUa^fH7c74dNOA9ahe~9C(t+u zEQi!+Bacj=sOo=<>$DZgbTu*5*pq@(2>s|%=x{4>}Q_-DfLOt~xC zvcMzzuz`fIzMrUDW){l8?DmFe8+7Z1P*kDXKmQOtpW| zq7Z=VD*856H~^Asu+Vpcd|uh|O1a4pA;t`DV9V^+7oEyr;-=<_!tPn4g_!MHJ1C0d zb^?eM*(c>@QPC0i6^A(P1z^_t_rI(<(Zn|7zjl2xW?S1^^w)O*)J7!J9>yoVHc zfiD?5vWBC)IDBFwyAd}}#KR1C8C`hwN*V$C>}D3P_Eh2 zVdxteE6WS)AceRqThTF722b;EVqP;Qh;l#C+!A6TA+NsJ7*p-42xab2UZV>lFCpRW zfcVh(Kv-y8Vc11%5`}GJH~Wg=?`@jQSMd%$Gg#u#?Zfba&?xN4+558bQBF(C%)y+v zzgk%7?-dG9V{Txl9dSnhD*36DTE?HHe;+b+WU6u{rb)>|QX;v8hyMY$Mm2pR?f|Xu zp;_CdfNie^Z))hV;bwyGz3+9%g*WJ66OT&2Q>hwc>`C#N;%{KZT@DI>>PUCf%Y~i4*8RlHYoQ~zO z%!^;1PyuAEq?+uOdho=tu`uBZ(qp+s#6@ND*lSiX+&~0Q`iz6EAUj1GQY^JE5u&Gd zN8}3}X|TCzd7e9m&C>&^8@9$ zWTs}wn&`t#POQgKKEymUu3xjs=bhJj`e+z`j)l4 zun&ZdexQ6&z@k}fiF7D_I<-Sp2~ ziZP=FUTg>vy7}D;^7o=Kl@pbf3gO~D%$Fccc`^3T9?dA;rwP+mvBls5g<*kc10={I zo@1ici_9I~rS?SjGnrJ^gogMVX*h9<@1WYV^CBP@=+tY~Qa>Xhz(>7mHsZ{R9wB+4 z9)<$?zkkU$6s(}0r0Lk~At?Bg;fae=uviR(WJ?|rHzJY?xi>c-zq+fmTpjq^FhH9| z+8L6^M7*G}N+I!PN)-T>Sedxh?sv)LLqPsPx>{-2lPw&pdDLb?GYunuD{k@tmWIAY zl|q5g5N@wf1`KxbmaOD>g>(E`Ie(pDYCQNRyoo4VZGZ+8v#606fE?$nai8WC>D}zY*H3>iGJ_NVrTiEBA_==O`ixO1&B~U27ZW`uqWD2GtwPyNdiMK5EJZ zv!%|$<&x0B^#m}HY(xT?6Yv9u4=W%i9_6to>ydTq#cixwzHBMrPY*|UL1d76nEyB7 z!~7^k0M<(bSml~aR1sW{o$wnS^d>2&@#W!Q41t6Vw=c3j zv9%rNY!ORSj9cLwgu_GF7Uhi?E)6htDM>@tt2fO-N(L!bnFqFjq7F7oce2>Fn`bxR z&4i64dHfm(MUtgSj@zpm*5@=6)z*a*&gC5fUW_1mL4a3`TUyP>*gJm4wuR;mDnhgY~`;Fq!^AvuzFTW8T$(qv|AOQraGs7C&_l3Pn>q-J*ANoUA5JQ3H4rmH*1gL&sZHJy0EAEh$ox!WobM+X#K0l9lYZd}SC8DZxgX zP2wDb*E~#_pVti4G2V+7#8Kp}zY)LniH{qhlQ6Mz!%DNisxrJG+Q>mpx(Ve_+U)4A$wij zKf`LFICj6=i_i*A5bC$KA2qK96Dr2dH5fC?t-~bv_7^BM>LuDQCy*RWuztJgwYEMK6y7Ox84NT#Y;1&Kl_ zRFN*q{Fw6tyS<%!x7wf7_&DKK4TGh%Emk|G;-{-Vu~ls)+? zbacMgvlrc$uSMT;De!-^IbSe;eNWe{SJ_2E+feCNc00((Hd3ARHJPSCoZ- R{96hX_zVKRPkR1c`ag1gN+JLN literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Kung Fu Master (Genesis).zip b/test/roms/controller/genesis/Kung Fu Master (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..8b81d1ddb88067a9c27196483514208562a9d11b GIT binary patch literal 38887 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 ZSAd!qiG%!fbT#q|!1qV+`(TZR`X^@fF5v(G literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Montezuma's Revenge (PAL) (Genesis).zip b/test/roms/controller/genesis/Montezuma's Revenge (PAL) (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..e06228a722c698cfceb6f062dbbdfc3ec0f4a6a0 GIT binary patch literal 21924 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 Ojo+hO))8pNlm7?3S{)w% literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Moon Patrol Arcade (Genesis).bin b/test/roms/controller/genesis/Moon Patrol Arcade (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..43400e646c3522603f2eed1bd3d26d6ac0b334c7 GIT binary patch literal 8192 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 f+p6s^y#JSfq(M7q6WsXS%0(SrGoJi^wKWZn literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Mouse Trap (Genesis).bin b/test/roms/controller/genesis/Mouse Trap (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..6865fc938caf4bfff6e84b6625316b0a6dbcce69 GIT binary patch literal 4096 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 H7LES^@&1MZ literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Omega Race (Genesis).zip b/test/roms/controller/genesis/Omega Race (Genesis).zip new file mode 100644 index 0000000000000000000000000000000000000000..40a64f1d3c57fb2b450df5cc8f558d0cfd36e040 GIT binary patch literal 38328 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 CuOHR` literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Sea Hawk (Genesis).bin b/test/roms/controller/genesis/Sea Hawk (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..186d753fe1e7e69779dea350cb94e1cdf6332c8a GIT binary patch literal 4096 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 LUwqF+R6_m-$d8ar literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Solaris (Genesis).bin b/test/roms/controller/genesis/Solaris (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..e6a3318e31e258800b33bab3da2a76b008eefc30 GIT binary patch literal 16384 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�X~y_Q&i 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 F{%?qd#8v^S?&f#n4H`$<&%c+0@)n+|% z7Vo*Imte04*is&Q_|;7_{rZ%gCd=6^GyT??E{o3{Q*9dw(-t8F(@kbw)91#+;eYd% z_Q*UB6kqO!Ro}#fDYmUMvK)A7J`=jFm>{+C^&%$Jo~;0~x8ka)mFvof4EGG4 zF=o}x%g6{6E8#8?+(>Rbe)8tcm^a4)%^!q16s!$>32#RnNTai22T*^)X2Yy`lfINS z$eeeqB!51vKlFEnbc7 zUSUo7+6m7o1GSOjUi%J-T-2hV?T`SH?t$0O1nM1dnWRvqZ(zN28(3Ks_*3i~!6qf0 z@NJ+}*N959^m+*m=L89_n<2aBG>VjbDH(4Dxj1PMW&oUFQn!v_q1gycX_2f&l!e&V zgiLc3vYY0bWm3OE+s8KU7G=*A)QVJVz3xPFTv{tN=8tT`V17wyfg^&g-P?G*(J4*9=CD6T@Rl2LH$!=0B}dG8~a}!b|wDZKMN3)>T0aTqD&=Z==ZxcZpe?OC=mEqu#bW5HAN}%C0ZLFgis{DY4sCrayOcI# ziUrnIZ8;GZykl6@fz4He`h=>%S(NLg2Ogh`C1lnFSS7qqNZvnR0xfOiI?@3qw+#-w zst9F0x<;M+SOvV9CA-XHv+K4HUN-xn;S*4}NjbSR@9+7n%cOtMt3GW(6>3rK7<7fN91(%K)kZCP03@5DvOj zN^#67DAsk(j<$lT&e}4{v{PngCJ*KT$0c$~ITHe}W(w%7Y#|wAL`?rp8lKj2J{6qq z6Z_^hK_X&hgQ984z(zubRHZmQtJHOR1ncPLx8d4AxH6+hvr>9gNQXd`FG94d=6VQy zu!M%C_7!h|*D^+#qIWr3$bz7eRXwX8sM>G*90^Mz>eLdi*?xZaXLbKE+j@E6 zUd@BdoX&dr7%%hDY2Xq!Hv`BvIpXZ3hX$jI#Xwc~ZTgoHC=rNGV9?!x*7_^w{_t{* za$Hl*aEM4 zYZYx>1$ZoOp`LoIL5-X|DGqw6O}<`GC9UNqy&ed#T0BZHF%dSmHXM}o(~lS41-5>J*^rz zTZ*THG;~Tpolqa5453ZZWdDT|{c04N3Yl6z!qJCQSE#bN9J&F{!qdyxjfuY zNZC+mz|NLh78Tg{6dLzjXchCnm9_e zYjy`t#NbeZMI{td`REQJtD$W^YT}1sfmm*|c#%>ALM#qRa?{`J`Qz;DV?z%q#;NnW zWkUqW!Eww3#z;kgm>;&;iVg#!T*ATuF#br^g4rt>IudF+EbiQ+^*y^$?5&+2CLeAk zZ8-nTqI9AeGZoaznE84}DUw5av9XkXc`pIq=cb137iX)tB$62ZlSp0Oi}8!SbfV3Y zD>L+ge1m`6Zv;!O;j12T>z3!9QpD!8d^2l`$1d9Dy3^QjFCvpmj1Ar=&7BSLj@+lQ zI`_4H6MUS@j(ZBOH%=iY$y_7APj)GzvUI6#a{LcwO0XFmH(Yva9E)-t?KS1gcnj&A zk@wYUM7a4zT^h-PBJ&j*q6$KuB|qHXnf|(G7wk;}oRAmrI1(IND;Oq%{ZZ;Fk5t^x zIONmDzY^aDBA^J>W_>t_4VmBc-a1!;w-IC{1yaDVMns_5tHM6IB96I{*DzO67bwc} zf9vP2JS^uGnNXrSUplx($`Xh~Oqu616`mq|8=(d#!?mpEF`s4%elcyz@t@ejUdel& z4}e`5UxA}*XL#WoEMHbrTk91ITELlPs3r~%!gkFT&TCNVj8p-#Q$*6AY|MM?7L`~=L~_@E3;AkRbT+(U2O^kfM+D3-px>A-eg1151)16cS=FtKw~3o2CL z(;y3I!%9KcxaNVV-yEPosbMZDF_-JD_-?W=f5kjD;#O_$=c8tCGuj{2p`!o3$Xn`o z3OMd7#`_%kmd=)o{MeYo_l?wQIUs}(wblEbtSe`=mX@Nl%DQYxD^FW1V5gk4Fwvy$ z@L^&5jMlg{X1HF`*55tcA*O##Kb-3E7EzXl`Gh6U9u!?v>rX2irl2Ax=;up4N-It* z9c@ws%MstdvuY`8UXOA3C&HTtF&EL6!C91V5K%{Ye4UMau z)Rx&SE{A-}NN4p>yyv%`;IDYsjRHruB!x-q#F~Yk*v=`D3QV$)` zEQeO*%Ec$?1VRWx35pFBNK?SIc)+tD^32k{<1By;z=M1eAoeOAF*#TfO6!n1fqG zFV2KPgU)Fe7-?uaG7oBllzsRskB8wCnI6&`h+O-~^@hidw=z?B_pg_|UFfzjiDcIlaOSzQJ9Cs)^H*Cy0^0gPEEijIbo@icd?=bwckOm3OC zxI314IVl;n3Ps0{)yOEeFD6mYQb=9$-*alk!&{Z70IQHxF5itCM~iA}9u2VKsHNTN ze9oR7KIhg|sU~+m8O7x9g1_QObW+Stit~8yB`hqmu<-E8&1%xHu&|0+p#?}0pd<57 z{^Mf_R({-e>D(VV>Y zYWq7=sdbsGe#dW`uQHP@bu4ii@yxb2xKTI09wnT_r>TP@)HCecEU&Y9blR3!Nu0+g zo{#8&J|9m*QNxkS$U(^vvj_X1`;$DL?i;+*B6_|LBRRSf0#kkbb-9(^PUq+YEs zZu9eR&32-fd2gDg;569F&N9hrK> z;T%+9HTP7`WiHk7pX{7fc_0G0kV4Hi6y4NT?%bQ#+Yrb_T7y?9;)YUGJ+1g7ekd^x^=5s*MnmD_3so1Lrdw#H=4Z*!w3FI> zNm)=>q^*w>Icg?^BSouUy@@14#PIrW+TP^X?H{wQ9tj{ufVUjQ4AAi&hqi5~28_oc zp!3bX$W|eZ86OlwKrT(Xj6vV-qxvCtOp4yUC8PBJNbf~PUU`zBVT8ZViiKR;1bP<@ zy0jXrf!dt)LHa%BP63firb@U1AAvi9*YA-eMDD_2W{V+f7e3zo2B>1NEch>$K!BJ$ ztVwuovO-~${W)x&bu<0TAU|~FZo_z=N%O1y*(PZ(NlLqL{zhLvaN)8JtcoO)2ed>U zU(r8E;{%8N%4XzOZYb>nZ2?U6jg0o|WJ$Xq`9|E>@PkV?`U|Ex+?Vwb2i%WUbQjLL z4zI$V1$Q%i2mdc2#VL&r)7ks zf`uG1^8ifBS`O2fIDB&FELjc1pPMXIj6|fO8XVb}|BGcpX=<4pxV8Wdf(lB($P`UO zgxeDTiq^kgMSo98{EaBJAkI=xmX2k(++v#6sDDoei1sf*Vd&Ca5O1oL1InPi8tY#x zBTdp;_uGqq_k~lu43D<}=Mjv#aknQ#ET-jX=A-a{Y`A(iHH41ZMQ|C4oKv20DlP^>A<)_+NZ-Hr zmVI5I_byMIL1;@JEv9i^)?g?Gk-45J%8qoSD&^xfk zh&zN$;Le@ z5tf#9#*suRO;eKJ5ElV81Oa*}) zF<%(}*x_uOkr0JEb^u6Dq)%6=r-NrYC~(QFUzAYCO(^IGZ=%1w0?mJ(;vlrXO^>Vv z-dzEhKqlVHbANB)4Ry<3R$wIu>3&EA!)D3r{7lp7mf3M1j*zM$j=QA(#rlQ4Lauf> zpk6u_bhdiU9U-#3;6AI0tOnBSiW=(}L>Z;FhKuR5;m9(F)ZK0OTblCV@Qc;Qk>seY zLdfBNI8hL=;$W5=E&<fn9!(7a;0VsY=OBvp_*BnQVseRa zz#gBe#y|kTqX~CBitvB?VoJeR>^BJLh;YnpFWSDKDu0Wm^Fa9`G7Yvv`Sx9jm;-~` z1*mQAHByFwPyHhMkOF^<@>D7;+U?w_t2wV~P~p9^ijp6S6nwRH??ypfcRO+G*Fjo# zH*s%6ia};}PjHo_%^^ySaTTH6<2V0irzAY5vsog9I^F4QN?QR^SYQR!=^yt7f?1E(!^DAr8E$OO>Gkg4~`iNKGyE}Jk2gHI|SHh=yW`2J3yj90TuBi;#l=d9ylnAAcIgg z2_G9MiJZYxYUELLk4u7)KrPs-_Z_io;2uM)in_uC7gq@3ojf8U87ke#KQ0C$t7Y*Q z|DyHJmk|ED#$h=5AqORea(>4Imi5Q1I4B<6r%vAx0+VePLH*oN8Sv7M-T z`mi3XU?-_Ytbj)V_4-xy*d+bD32VsD7aGieBN-HGq5}#IdAa_)pMb8yR4B{-YhBe- zVkTK{0lnIcf#@%-_3b5Wo4U4h>^t`!@C8Tbc?W?<1^EBw zLLpZlE{;XdwrVUgkHui}(s|ojSzWZhdvTr? zWTO+(?IMx{$$)<#jR&mxz11&^D$dxwYHv|}26DIAN))PqN|n9psuV?*VgMb9e_~_=f-ujz)s>UYPGW6mbwgrYWx}FIh&HA zpVsb)CavM5uGHKb-)`QzX{ww_E0y&=hvv_E?%i4(PpZ*lB#(NkpHe$TEj1753$7sH z>ICRF@$d0pfCC%{Xj9&#uPi@b{{`JsSogu39vH_?oYvO0)z%%p7279&e#P?A?()*w z# z#(8Nru990PUN+IFxX2o{n{hOdNm>4Nuj!jAT(K%oJkt;RtrQ_5T|PqzI$mY*owTS# zaki#Pp`a^a*;A5-F_X2Vf|U@P?N*<@a9DH)KN@8?Wmvvz# zTnos%9oDU<+Ej$E>i=^97PjHN=9_Py3oJ|4Iz3BK;IHc)>G^*4beqTl`8{_lhp6=9fD8A)?GH#}ROJ;40~GCX}Iw`=vy;(2Rn{NDFW(y!xd_x4|3`>XV)Q-Kj` z`R}hX{+|Voq2pTltlwAo+iKnK@q<8~s)o9*@1dX-ZhhAuqludLL)q_pI8K`0&#kgF z`X1X&&_{u}`_#@%-9GOV{@V^;FSE(LHFCbn-@}`=T-|+&Zc1ua$CIX^uotyjZ@c3j z_iY}><#~4Uy4BmYi`!f1qd_oYb;DH0qsCr66%`eUB^YQJ^m!LF%l_8BUI!^JDq$~Z z!#7u^%a+1Iun+_3)MYlSI4|T(Zpp(;`~KiUFqm7t_WZNu3gw&z4fE3qWlm1z(xa1O zxrqrvebhbRo#i=*iGl*dhZ4aZ)idl&ZueI^xgpCZN-pH0H6|9>j3sj2cZ|EQ&6q8! zn-Y$YqR2u~6#ZdkFl*GvM+X%6ThauI5m62*XgpPv;|dD%BBFRA8=a>G^d++0Er0vp zUl4`=Co^$JM?~Rf1q9?s0rLOJOc*-bUiWOp;*2%0dD-{hD*SUXG}IJx#qE;3wN+UY zL=#B>mb9MHVjm5+ku+9j{xTO!1+8v-fVrux<`EMSGl9)&T>Ifo9eR+6!dc9hDf4n~aKJThh-)L$pdp}&6dDeY7xCp}s z=t^Yi(aQmJ&GK?;<=xfYHT|7^{kS-Ot%;QmFOq|5FAiLJvuXFVicl}&B6ZCq|u z`DdR1s^lBH@BzEIH#dJNyuS~xSDxLW*+4Gj8#QI*BFA4JZ)0j6PW(~_-?Ltlu6{nZ z@NaLL0J^=Nj}aFksh#gj?EJfP?N=Pq4VDC-JE!t}UYu>&x&V{9-oEaio1=f35b)QzIFcn{VJ)d8&3oDx%8o5xNG|}&PCOQ-A5FdD_#Ov zd85n*_&>c^-t69c{2#Wz{8SpVc=>gEXZ8GcO~*9#06MyPCrTqWq%ooGVb8CVU%T}F zUkCi3{O%`NMtOAroE`R&2X%V>-$h?$n31o~pOWtrg(~~Zi<0kBMO^8xdsqG6tMjO| zouxGTReEIq)YV+x->;^*JU96hx}&MvG0o}UO32UqYO9xzsGRqMe6P1tdjDMXB=WDLDNni-SG4P}k? z@FAH3{zHDFYnL`j=yGZfQ_T>@fqq@`8U$@7ps44$!Gm!V6;7Ql#Fbu%+9votC z)-FDg550?H@O3H2pqp%`aP;NL9I;KE>wlC?moUgRS;yeZE~zx}bvsCO!>;c~$SoLV zx8c{pw22KDvM5$wtM0f8!yO;| zjQEiE&-LhK<=VLEaV6z4@ny}fGH?E)1pc)V?oJJNyYRD0sipsFDqi9+3|p2%hyXU> zV75{YA*`j2bu3c}V#rwpL>y(DER|B8R;lxY@nWXpsAS0F}cc%ky6M46dBCb&j!6vF<_ro>l__&4`n$;J} zu>JS%eHWw2Mx&=gSDdMPr;QGN_p1UP`z>|L?K&mBS?Qc3y###e=oj)VRw0~4*S6ewAY=70Ic@Xf6V|e2? z))qitK&3?T{$=JNF9c;=Rap5qT;jwPP#8+KSVEnA3e;`k+ygpO0%j$f|*Op44hh*_0Wpv2s;AUsv_13nn$IfimJjA+RBO% z9A&Z+s{_gq2I1_({&)F0aSMXN2OZyGcJI*gbEZ$pk-y!80OS65<$8kkBD5}q8!WX9 zJE!y+Jo_(4kKXae9i*#!H1)2%U%S>1GP3m&;su87x8J)uyQoJ8Qz8?~Z`xtiv5GzC z(}(g)S4YFKf;{`HgoYXjD?$5v98j<$~+wzT8`TREe(`#2F1A7hKf2T(RD9Ie_u zm?<8Wo1W?F0r=NqNy?QnSYr?SE81-ajIvsGD>wmto~~tv3%M0kkVT|78!ZpPsCo4A zX4=EZBeGEmjf<<63j|=x$%v%+&2SG6Y|)brdeDQ)*UPFPHV<)pwN9Y!L$B$)`BqR9 zmXxoUTKLd%Y1R{nz7b+1N}1WV4N#t~%(hW8tUOH0%g}JGAlDZ5x0-V?Cu1MCOXm8t z0AFu!E>pmllYe2~%yhZZ{tBB%6KpR49B_<%j}6ha#j&|Fx_`qK+crLva7x8HJKE$7 zCh~5Y`(&efg_{c|*If~XBgmYX$5Mk?Hy7 z#12+8GtuQ77P*jOI8weo22pYq(e;SQzbw=&ehXYv48694g+QdCo@97R(abCDE@Zub z7@%!icSJ%Q=a6k><1EyaX77lL3R@%Lf*=#0xGw9S1g~XkLTXHTr|zIgv`V&U>{pyk z`lmgfV-T+m#x2#gTc(PJTVe&N#m>F!pUbp~PR|{6v0As6edu*F$GM55cDm~nhdO=h z(eV4|lDlx#fLLAsIhCha0S{CDIpT7aF*2`CUntnJ%v!P{ znj~b&VtHdCt+Q}_?nHJ~#r_|{HJ~fG+~u`Rq&~1q{LT2)_)$ii6465rEje_(fbyKw z>T}$u)ml|+NO9z2P}j^*F0W@=`9+cKS4(AxQbC1x#zQP?T6UN)&^9G08j~BI_&1#$E*nm#GCyVRTz#|1W zuCbTw3M3BSt->IyIR({5r_9lW^tDeI8+`jWvq=)^KO*A7YgWX*+^c|HAZqI-yg2eN zb=_Z>&1_E6T0?Q7)YuJ|vUB%2AYj!)tS09I# zz@dYyNoCZi(LiO0VzCsBq6Jp{)25j(-wL3UHGBSV=jg^=L9}ziLD-X-W@Aj4>TQpd z83ZiA^%AwR(=X;9w-a8#QR`3IdhyowFN$_ouwi21 z7-0yR<m;X!Sq2p0SBK3tMjzpSp_(+tn1F|PdipJ{q4yoQu_?|&Tktrr2!KWW+T zDeJ!^yz>X2sFIv~Qa;iK1(ISPSEqiV`bZ#P9Um+9huH&_L#-X=ofuG$<)%8ySMTqDYfZcck)cEiU*n1$QBGV)}SV_Or$ zdev@hoaVK~Y?jG?wu+e(jI-63=51!%Y-m9<9y<`kNpFB{A$J2{2AUqE^)3WSBw5vn zbQG>_nErJ`iM?|gN5*wFWjCg?SaM@F(uZqASNYfexiuleRhcx+>RC~K1wM!zYr`tH?CPN*SmEgZR%T;@u;$S8Y{C zKJ-(BJzoT^`-hbGra(=U>Wy*ECFCrZ6jCrm6;@QK5_9(zJ_Ss1%{~>c?P4aj4;3n$ z4iUt#won?!^~pt*s6+9Lg1j2pQYLkhP@`^EL|kWNAM%vF#_iTcr~i^dL;&A}=GK*5 zZ4%Sltp`Ku^KqH<@(BxzuF8Ex5%LgD7^~IITAkRbVP`ICAIUNt8IcE_A+|%uI3{qB zBo`WdC2Q8M6Oo|_8wqn+@q(X@ntQ~#Kb#JZf(aEAh>_A(1`vy+({E4IZpw)vDM;Fx znR($cX0i+Ft)gs2)c_-(qP+1pIEua}hd{h@R-V}GrsP(q0Qf%=1$9gDM~v)9EyQcZ z(@HCFyE|nhZ{-?!b+=0dR9nppwG^ks%oRO!PD?BB53%a0o1(n;MJJrIRLBXyDrMlJ*$WYw@jfJVVko@kf2-u_UWgc26J!_`3 z1WDgtR`U}NR4T{McBiBYx&fw1iy|DyX{Jsg`^lqkjuS+kyy=yFn?rH4> z86160RWz1W8pv7wC5R_Ex8&a2-9Zk2S%?yMfPC>LbbO=TIzGHD{L> z+_d|qv>0Tr=ex9s>vYKk2gDUAN#u=mgoYkVdo9LncX{!fa?OI+MC(gTxyR?(Y7y?G z^n?x{hb0i6wQ9v*P#i;3gCq+7Ve`7jT9!SMKXxsQL^SudReKA%SzXWH$ItF%S3hK3 zU0-9AT~7}&_NH8LHdAc5cXK?<(|qK|OAlF?LB)i*{7!*QiqKiO<}Aguff0>fc<+n2 z(%gp!;vGKXHkf7~e1p1XP6gw-YP=rlHL_3J*!d0LSO)=A@?6s~=Vdi}}9=sY{V>3**x<>r5-6~fm7k- z)vL|HCLP%v+nc;*HmJ~#!!}0$nj^}s-_$c|DhZ0vV=67&;t){h+66ZmH*i~P(TWdQ zbsMU%@XX@aY0aS~Dz#VswN-61dM8SgF=}kk?H0Qy-vQ?==r^3gkN;+4wc*GiWHN~cMgobgdVSSk)t*{(wWLU2sX>4H3O;gv1z*?j{CDhTF zmfG%k*UOe}YL_;`F|RD`Np>lholfLp@&Ymt?ohEsR*fG0KGTFXqj<#R=vvgbI$VZMf z!HcEiPw~!)`|I-kkrVCV^r=qgY)omt4sXa}vE-w9^GI+=T1W8-Xlx3i@l2ZyMq?f; zoFbw?3a7DqKO4g>oMNB*IzE-2y_I82zfP{!`BGYaSoM@-$p}ddt$IGq< z%Jp=OCF@=XB&j82cH9p)PVl#BU`g8kNAu{(`@##U z5vsQEvlXV|IS*G>(xtPyRIo)e+DzeIn52ldKVQc%v@t3wl#jcu^fcz1QQ4Xj^~M+9 zkdorGt&WK#R1jJDskO##{svIj93-s(Hpztc<4iN1sLmlLx4yefIG%i5fIG5a9qk5)vd_6zEP0_vy zFD`aFYDLg)r#VafNs!I;4oV70mdS<^&)0Y&1347U*(zS}o|A>6`LAa(8|lj_O+lcd z&1~T?^?vk<1Y8X@Z|xWIxD( z*fE#=TW6d=rpmpAc7he61r` z?53Tj%hO`BF{5hTY!gX~zc}qy2FE!xg=n3pOhHk9HE9e>e{fEXUm_X!Jx{VP$!`*U z_Zj29ycD=mz3sN0xld&bVMZ<8Rjha4%pxzB>zGH^#E3 zK_aK_NV&hi@&k9e#M#omxwrumxnTP8eK3#Z7|$SUziO1?<^YoVp%o)BRP-f z5$2D@NL*Bi|p_{24-v}KZ z=xKq4H+?kJBhBBP>oy9axYioh3E@^5ZKF>z5yWm9QSCi;8!Eu^(={}Vqm15-STcW4 z9^GYG?h}B#BA~vhmxxcn;LiF2;hvkF{ZE16Y%}LDnC9??CR*fmPciAt$5zsM=ko^6 zHd$j0EGuU1xwe2)Q+7$w+kqU_g~@p{B*0T&Pr|Ufe^CUAv)P%a(_6}p;g#Zchlu(6 z9u={%i?LUcwBzEJebE?Gtv?L8Y@(awrZ#>dy&IJisds!Dyk+j;P{XIIXppWF4Q}Ua zy~hh>)G4NIL9SqqGt!d?5il7ztu0bEb*IgHy{Ax);&%O+w~R!i0r)}ZWLI6iWO-9< zeI}XEtFIp6ree33xumr4dvW+Hbpndz&THn843c%O?Dmgsk?&Fh9_}S@X0$xP0vOA4 zT&n(WkBWZV5F+rFioQ7@>@)wP{$hxEkC(yleGiTK3#o*>#aVd*JUa7FR&0OQPTf_9 z(U3Nc=SCUQHL!>?q0zX@NZr-EEY^7dDM|Kb;4Qbip9gb|lOo8) z;g<5a$RrW!)Z^!lK)Er7I3swvty=q)gtOzIzS`lUMqAw_NA$kwlNC~O8?*!OZ%o8I z-8Oc68t58KH$84bNtnA>aG3v~*?uV$VS_BT>89hPiqu?j=8c;M--gRjUw@{LilG9f z(v^(FL5-HkK$8p(WlP^py6(~)?}x-#JY+j;T?@1_6>=?wO{T`6Vac?^%Bi?T{coU069cLZ4!~Sb5O&|>@g*Thw@mm7tlIO+UL+!qCq3s9v@NMvN zIZq*jamYD%G8zp(2VyPrWjYDhGP+3{j>x@)p31FWW|Z;0Xa6`zAKkrx&y@P;KUDA_ zp*`nQmEA>stl&7Z*XTsHW5;vTPP%LLu?*7~ZNBPnnQdSKt7X!*Wa+Kt4RS8g`-0?{ zK8-SvMM}0mv+}Hl=3I*qg~gGy8Ovw-gAX%%yvJXN@)`nJJgl86ay{oo;-U+Nu6CdT zdtX{5$IXPihloW(S^Fb-XI7Sd2<#7fb3kE#-&m9VoPN z2bqs8l;SPz6sdc{ZDUMVW}M@v(%>V}1ljY$xE4~g-h@7$qk!1v7@?_WOqH}_&UL~j z7jeOO+{%3aL#&H#t66?8Ot^t~8uzA}l)e7Ot!wH$+Ux5aVSv}W8R+DPK}W=~!d!99 zbC6h4MLpy1*@gGGz@NKPa{XC!r;>Jq;TUCDBeMeZ%3J|W^$|LU*tK8EXlqZyKhty7 zbXnZl4x(d@&-fD&b5lTkiT40GRw)u?G+U2kKKqBKsN70aI-rJ?7B?+t%LVJxY>MUy z{hvqQHn1pGKCHk!*H|eFp?>#3W&~#fCtgf}0Tc1D^ZqZ!_OA&(eLR99$8d;PGGSqB zc+{1Vs0!hM0YcNZl?X18SX4Vh4a*-Rb<5!qrHM!j;o$`Wvv508d;&8NWkNa>3sD>) z5qkvm))c#vZN}p5di{8GY6apr!ooI4ZFPKtQ6JIjCQs47goTZe+G7|*FW~zhj3ME> zL^8O(cm!liaWGqPe&|G0QT47UNW34aEt@W&jv1H2o)v1tA#sq$B~&;8HySiHUx;BegjOkS$=9lxk5I$$ABG)citOy8`6aDLU z5yL{8j{HwFThox_3&Nzd?M1tTYp_=dr3}9gZb3FeB1@>#;*}1r7mYCm`SZZ@5P=Y9 zg}WUM_FRje&8-%}|B!S#vy86x8&C>-+G6tJ~QQzz`Xp&rXmT{tJ~Y3V(N9|ZXDqJ($PGFY%Q@NNDumHb7g5 z2v^W^D@CPF@!gI3Poi6C3e4Ih1rZrk!<6W-oCwO4p5*|?t570yO&M`C^Fg^OrIfQC zPw~sK2oUaj;}{aWt*KDWu#a-3Rm?69u|Ec8TliMonBpq!q!-imgaJNh^{Q;<`iV*# z#S)`?{NPAZv8U^z!s@GVlNYbT*|nv#R=A)(lDt9O{Sqd*z3suDom@zez|&G2CGFoM z+FeF%^sG|W87LC-1%1WV+T_>tPp*>&{fGF&EZ*%XWZw`y;^R82^rc1*@>Kbs@Yz%j zwhBqY&{cEoKuCnR_IOuO@QROUb1-MK^YrNxUAgR2%an5kmkRS#Sf5d}hjUu0>J;PGhPY|jf78cC5O)=V zFqn~(+Z6@Bq_2(EQQPW85Poi;CRvJujcp2Z;}H60r}x>WI}<~AH-1kR|poScLBAF%-t6s7R}m6ccwf(V+eizvfKNP?=-tBz1Wz% z>tzSFWmyrjP0EKR5BPOt(4-jl@9y5-9O zmm7~{g=cGP%EM(_4nt%9)+ojY7uCJz<1>Rh(P&hFn^Z5J6Yo{2_DUt3ADJ%M_xa-YQYc{{ z#ObPDLg@#$0d2L-i|Bk`r}O;MWJP@`3I2si0f9*Yn}DLo)Y7hTCcY$Ku(gDu;$4c& zLW7a4%|}bqP9>@zzpL*Jk}?;>tL2`bQ*;aWLPYZ9br8|}UQm?cG#cwidP!{W9KU43 zsoZQiyzlC0c^*21>R7%+inpRoHjsA~AdZcv<`1!oiD>MCg|BjHj?&P1ohp~ZJ z9fF@9Tzd$5Lyb_g?r*=iC)|-4i5sgtiYx1Oq4sgA@Z@f5f1q@cngf%rrLU&B8)pLL zuH0m5RV{n_ zx2KVAoLGWpS!;q*OoIR>+XWb6gSUGci+9-!Em~e!aQ&uEDV|vtE4; zZhV>H2xi|7@5X;z-+j_ce}%|}Z$jnfYLCv-KQTGT6Ngn@sj+^7hoWcfJXg%`;UNwF zXE3ai$(b|UjG~9aXx5wWg{kVrV;l{AF(kzka(az62X4+= zb`(4wk0q=78CZ;G*`GT}W8NIH)YUUP;{oA{?*;QmJ7m6%Wnd8Vnv;Fz`94TEn=D%u zS58thB6JE^(xtPXj$z+BkHpdfQf~LfCK~f#FMV`1Yz6UTbcc~A$h-ww%R0j>D^L*5 z{5hV}L-mU!gsgp7uS&Daho5mF*KJm^xJ8wHspM;(0Hf# zQBtcHxK;NdU7D(u>l5W>tk=V=NMo|1a@%MN#;ChFhmYJU%^Tm{;A;uF8{JKS$vuw8 z=lied%tll)tkS+Sc#;aos^_?!7+^;}&h&#f$|;Or$NNII@RYhQ1^2 z+rz~NZsD4C6FTcX3$U{d+1RQ#OgwPE=#K1z2a>lhCAwPjngAD-?kiGsHl;32e-`m` zOKsd<9!ncGR^O{bgzpUvmBy^Ur8+-}jQr4$y|&XAZ8;Qndiu~g$c#bc5$MHmLPnk0 zuTN*=c75g(GNH_cL}rg*F2Db<(0=c{sXf>}`&Dqyj>SW7czHo3!6{2pm4iW~Ynaoi zkbjoYXPCG^C?VBfW#ArNVRnkbv<2h)DUnG$>`%QhP~?c6SdO;iHV&AP>=vwYRSs<8rl}BWJ~e z03BDBg*j{n&flAIl#dGEff~g*&=7PF&qce*!Zurld^oH3n67?43JALDP-@q9KbI;hu! z$H;Iw%pVmPwlN${t)n)Gsw0X|mHVtx<9ivTT+z%aivOh7L!~n{umZU#L%!GYM3AcZ z@U;>9@8N7OL9$oH2SR2B>MzNbg}Rn|gvllnI#z3VJr@X`#s8nnPKDClThl?rpnFk&^E5vBx3$! z@t*?m`}dW}XC2(S=^b|6u$dtfS>Ah^7$=0;L7&6nA%h^U2;|c=gLlI1d59Sd%Ha}L z-{wHLmQ~m$%y}=8di;&nU2`yok!z}&ohz(v*3G-+q|964;7-$_g+{@qD&GIL!yLh~ z;(OHBA1F&Fm8{C+lh)?Py10g2nM;rJuC>7y6(9CAarZR)E=Q_uzTzt-1oQEUtrF#~ z{EsVMRpoQTe|o$B+LH9|$SlbhLT3I!)JHwiyq~V0t%L?qi{*Mm2jl#@u^bxL32TG7 zbbvcUqPr1>LU;eocVCNjzg5}v#HQo;6~E#Nk>=ztyhE;_!)>isecVKr6a_P6`PA$P zqYLz@IU30%t<1$BHsg`K ztGDCvz9pEOlFYuyX=ajfJVm0=_*<_LG1z$#N?bU#Qa}5LwsOgVTT_ zJI#uRC%2-VdOSmd*xqasojT?cZ+{$w^G8KCCE7|b*hsiPy?2dRF|dgHLdQSogZC;6iV4{l2FmuC z*oE;lieV&gck?6Z2Y~zoN(r~zsA)#wHfjTP;A=Mt7R?_0AI=KH0~ot+7X_5Kdd!ek zq@=3?dJ($x>@H{T{%fM)$c*Bp+xwk%L4FiQhIWLLE_~P zD{o4P!lvlddma3wy0@1{Qyv5!VBx;5?D*#%wp&8!6L!f2H7}2aV5VC_w~CngjX?QZ zj{*cDZVSpER4l`+mf|vg)uU`W^PD=`ls{}CF9V~^*ncbSSjDd}($Rd-^i&k^rGngA z>jS?b2D)Ufz@lOxKP+JqsM!Meiv$eBi(sfsvqBK&NPw5kIV|6&1079%G&-N9qr%N>i4bFb6F(dVbKWxcg~s0o&Of0W>v@~h1Ku19JaTg&~wOuEB*^BnaMX( zMkk}H?UMxuoB)tn^jhI;bEx+3=iB$HsaRW)4>LI=I)4jdGj-SAHwQ!%iB|F6=#U=I zH_PWLxy7C1m(^c2ZrEFNo>SFXoyqh_4;^){(a+`}#}!e0-=!cnK6jE+-l&`=yN*Mn z=g1h>>~+^={i+^rP8!m#PJ^*-PIHk$(zW;e3o&NLv*Qm=*io*?!&pN5c&hWX%A|U| zZ;c%#3Xwl*HU^C97)-&?{SAlc1Jh6`PJz4noPf{yuhtg$)@7|cd$0UcQ__;1U8ts0 z6VQJ4gDy8(fx_%Id(F5kzM)zc%1}hKK=1Swc>eDzGQIG)|0Kb0O`65rF5g?;wrVRI zE36To)tNJ$QZX7eos_QJJV>*5Ow@{aiBftP?_YX69Jt$mG1^0){qx(J1t#)tur+;klmn# zaHj2D{wQQl9>*6Qs+Yo)fca%-sbp8t-aNR0WE5h8n}t_Z`Zz*n-B#{Sk!M!8x0kt{ z`64p$A{MYL=B2XO?E9B6>fYCl=8W-2YFp7Lx@$pa<}h28bVAt}()+u(jy5OZI8D1_ zkN~b0eWamaD)a_D2>|*C($zAK|&)DG_pX!Yc9KDV@cl za-%7-qr+AHb}5$HljlQjJEzy|yck8+%CHDS0HDd$DskaLdoU+YFfP9A;wB{hk~V_I zju#O*YAa{8EzR;SY|N^JyhZ=ux8Q*i%sW_tet7Ps(RN=;%i_Ud{lTh{^oL?wai(xX zVG5Q4T&e=486lzm^;i=Tj5y)cJFpv;l|U+YKV6W{Pr*+zwiR9ERF-oJDGRkN1}l4K zvGJA&(n5A;99%Z@`#f$&sS58BYl(|!m`{E?vqxp#ENDFF7d#>>$R||JZbX|;X)lG; z6Q{>Uqj<5*?Nk3}#1*Rw_`7(WpL)m&T#XkF){+)XT2*e0)u~ew-?jX1YM4h;FMN(* z=Z?&ej<%v?d+iqSSP8s8xCTRT!l@aj2Na~%KH*E6Nk zp5ZaVK#+K`A@?e$X;sUCLPFs^SrN09fzS;>iEF0ego?v9Ig)TE)Q~7~Unu?sXr-x^ zqhS^Y^OZ!ApNKfueTW_&m7Tp}k$>Rf@SJ<6LrJq*^hH2BUoAL7b>kBo<#XFMtDrm$ z>pO->M%Jjc1zX|A;Hjv(YXweY53nS)q%pxnLSTmcT4r*!;j&}w{G!2;Po}=h+imD9 zbFhhe)1>M2;U2o$j6WC41y?-RgY&vUpUytBF`HRcEv2Jztm!NBF#MNe)>7r!Pdav{ z=0v-*!TEBvPJ$(J;ZRRTX&*<&km972CSC6oIIWD2$Ykr)T<7d$p60E~9kr#bhtc+{ zhuotad94M!Gr606;f0odSK>X>teti=Cv&!m_5hl;8;%(@-W$^O9nb#zKPKKcfV&@_ z@KhaBb9e4n<@uZ-TL!18Ew;iXzUW514y+|gIcX{pGkB0&zAa=$$yp%ZA*h>e;}7uQ z=usLn|CCkUqrwqJ&|tLk;l+$&Fo;w}(uB~A2$uq}Alw1hIe5G=c9OHQ%U|O}A`5|5alt#2#>6gl|gk zg%i7N5ZS07J2pM*>S}wn_cJ)S7WCDzvPl%x;l#Qt#SW$8o@Lag+-kIpP5qk4zQi*6 zYKE<`54P0ClrXWp5;X8nd~x-9;`8zIxrs}9aes)L*nXH-be`AmQ4N3ND*g6wwf8%e zqEyEyb0(csrl*4F0V-4OB^+M%(w{+gpw6?8f7IX3V>n_#oA zzk-SHky7}r``*pTha+0BpYVL{pi8L>=b3UfgZGUxjmeDY{>(GIFR*R{_z|Bg1KkrOw0iX6jC!OB>M&A8y=aFl9^_=}&rP*Wo zn9_mpTU#kGAXJ>0MU!9on_fMa=r3*AKJ4N#TJGP**Q$0y73t(`FkdxvEvEkP;FguH z@i7i?x$YAm&|G)0Ry56OTn!k#N zgjH~{VPwo|gmWKQFp_5tMCIC%*R)##+s2Kpozf_l_rU}UCoF%&E=~-0N*(V+k$=ap z$d~ZZB&PPS7niMXpLB#@wWvH!_;iXVkwDNwpPY}>FATURq7E~?$wVX_Xr$yrwl>2w zjvR5JgV+$lY+6w^c;cPV&+1a5_f#%g8ea1Xb zm`lWVH{QCQRe&DY zBGd>5$C>;V-@n5W6!sr^1Z04v{o@MSH>pJ)G;*w_OX@>TPonN*2f4`DZrG*S5?>7X zQQcqauf+xn-Py9lhxeDYs>grs^~n?&;0%?HsX4}fu_coUPUg0497pNf^tEkd;UBXs zFknSHs|<_Dtf9%F^sI^9XTFlE-ge<-Z5sR$?MK5kpx`ViFC1^RzbM@B(XGk%Z;SNl z0<}W@HLS(^N-9h2RaOSC<(lwu-fvzQ>O4!|*RA-3z0(Pl+fvoQCbm80^u=tcSamic zScULCR&V=)0<^bxi?hS{HOP|{2`KcteZ0;|Qb1$dXC1niwK#Mc7z* zgW3kldNuM)m3hxyZO0f+_qe(?7%eLaOgY&KpPPs(xJfCBXWTtMir+ zVo|idt43z0s;F+!5tutzWSW{7{hZRrr{U0uB>3vrVY*E5XC4F`F^hef#8`f9LV`^^y>J4C)%q7eSg}5SA^3PHU$GN*L(HjlYrD)<^!^ zzLoAEX|;>|NZf7ug5SS_cA zT$mN8QtyImkk>EuE&@lpiA$^{IY{N@K%SvW`rs&LmBEHe+J2NUIlF+=xlA$JQW{p+;}Ui_=P1H9r6y*x{Iq00ZOvCl_B2sYwo1RFaC=F=K#roo|HlitH4T^w=k8ENpr4HPEgqFe1b z)Zs>|8CskSl6vbBC#lG#nIJXZQWEPK=T51eU5bKpr*_Z|HO{R-*7k|}Ae%Hf_#>ID z(q=X`&HgxQt-KbC%y74|FKWgm1NpAzS~Pg`42$$D26c^FNKY}%Qdgj z6g_={$E}kpKZ4;4FP)krpJ0uhh611@VW|*a%cDsT_x7~Ba`c0eCZd33YwT^);g=sL z3GGu!Eu$)+hznUG=M3A&#T6q%lu#@S`3)MzBXSF0B@o+rNIs$qg(8Ua;Bzl+^MItj zXrUgRi%{GLq$IY9xlnXF_2aP!JWHPDt9T6KBMse>!Lwo(H(qSMpJ8<6LRO|n`z9}n z_}V1DKbjef+8M>$Qei5Z#2;Pey~5M5`y<7CQ^RGG=~V&YcxY;J9gS*Ze5nB(MYNe7 zoBn<=SWKU(l7IjH*P(x9Gr!C+G#aW>>wow8h25oVVd151c{~s9bwQWu=+mm5Xd2F~ znw93yjgN^I;r)NerD8%uZi)tmJLfWbr{3DWXYAIMkh*5_5R*8v8Iz#V<5PGgOcaR?&{#$8vDb9m_GR?o-v?GxB`>a*~EMY5gb3-3%OxRGG3( z?xLCd(a>)CT#>&o_eOE$J9MI)9CpE)IqO@IOxh*) zZVl;<4<7HAS-+F!5M7Kd>N!`s!YLkZ;+M8o%J*@&LdY{-g{5w}G6Ks4(V~nnoIL;}xA}%WE3l|v++(D)ZmdF+AhJT-`?N>VDHAbg`T?nUwRRPRUT#@c?FM4!5O8 zXuUrd$wv_)J+^oGM7B}-ad$rL{wM+DI7a_=HY_B6ekq@WT8{W}C&_H0D5sP60u11_ zzXyxED6PyC8{Gj3ZNqRh##Tp2M*a%@C^=WHe$82DJ6xt(CVlkPv_diUzwvVo-3u!1 z6a8MZ{H~u!$R7AHiL+=u5E94WhOxep{j(D(nU1>`2x4){| zcd58>07oE9-H^X%r6*c7(S};70WW%~gv?^#rx(JQZ!$%N31^Pd3rD|hE|_`f9+t$; zD9H$-U2N+KpJ{(z90S-C64jao&!8>x4Es8(2Q>_|4}R-PY-fAUPP69V>DD zo;8C-YK|zjC_}$@x+_1tpZ#h&_l`n^LY%lKf@Yf&F5V-D`>^BSYxbMW$10rk`zyyR ztsdcpJ~sb9f3(<+;p*x`FvuHLA{;AMm(BW~vq$&ni>FaeTx2|c7xIW;<8rH5nZ{qC zKexy?fG^Ed>d}L&Of7)dAr<>5fh7o641E=|?Y!Mm9vLeab}`kRzkv zME&yNgND05BA7{X4Ij`pZBq)2A#VTTQyvCMjl@KpVmwrlUQTl|8YLVuXEZ)~;nG?U>+f7WG32Sd{%%X!dk1ulmG| zY)v1o^!?Jcn3@3nPX0E3kEkpAFTEo14~uu92X{{4GkU**1-VFf8(M$RI$%E@YPKBQ zq-qNRqnO;pg~BzNM{lF^YOc;5(IVFMFzGBzNk$hcR#jAPwQJa1{&0_% zRGcd^1e*h*)H33~K77*6!DC}m`R@U<^A-2pt9&hlM=L(9cP8^cYUy57B6O*F!Dn&$TV}lG;FKp9497SPN?GwkI>|z&-Mvd;RI^HIgmYqIV#SAYe zEeffZ2O-+whigC`G(qp&CeE$or)e`)<{whSELdC^@iE-WKxUh?>*~ug8 z8_mb#mBV(B`_l^{{8FnTwRU>xDly}+} z*_)()Q7ax2z9YBc+P#Uk;heBM@R`EJJh%fJIMU;7U}lsnosR93P<+WmZL--fE7RAx z(2_$P-8-p{@%V8&y{Mb2TE#Wl;Zg9#e8{AnN@OL=(8BHnC^$PfXq3c@p1qu8!DA%* zpq@p(oztnFN~H2Zepn~fxvtS65?Mf>QNa*h$bgSkKOek0T_<7Taonr?)}lQ`Ci6Ea zYC&!5DYr$k5ZgjgE%*b2eZF+vba-xsFaJXZM^Y;}YvL^vuMhht=B@NH2UDvH@<^v< ziTp1%@9^K>HbhNZKh#{1Ijio@*FIi|6Ulr9+mQ`=(WVHj*0Dv1yj4s$oypR=J;YBH zX5M9;JoamPXEdUIYNW@i|HN`QYl?>mP=Lx{dIkb{RUsjkRTLHk?k^d%ekP4N;G3+W1(rKh{>b z1MReXQR7=`DJh22qIm00dcR^p{Pb@KQPJyHXrzA*IHc(Hykh|tBFlH`5 zEr}^8P(r57^&UVQ#e2$TvO=v>v?XiK=DhKIO{w>O=_`dj8}Ib zUaCk73a~;`wlh^Y4G&0==X<2rgz}<%aQIx_?cvB9)SLy$WkL4)WhrsDSW{`*5uJCs z4K!0p!6f?mhky9BFw#lUzxg#g^iJ#wn=uwl+C4WNV!64u>E_U%f%S5!$t9G}WWIju+Z88;3 z`RO|B;fHv19#oO~Y{d>g&&)9Nb^-Boq@Mez!*JDbQ3R-MgO{?>j$ zH@vpkcMqQADp$LZR%yP!JbIlt9Du5uA3iSMjP%b+{GetvY|&jD%e7B$8|EB5e)NC! zs5~`$!P&ii+-GIEQl~ooEzoy-2@~hk_HdztJ1%6cq@OxlnkmEHJ|R-0I=K`{p=?oR z>$!ya)cup&?aV8!>HFb;dSR_(Wc_U3HqN#IR4oHcd#zYA{2afGSuj30xUvi$6(6Fr zf&uRcYvbp|u#>}h{s2x(2_Fzk(dC7V(dRN;_dH$pjIbGI)T?VOuH5tSOdu}p;>r1Z zNwrar`R%Or19{sRpnE`PC|-GaF=g(79Qd(Mmpk=*mknUUznx-I{q#w3x)Iy55W+>B z557x5^S*z}ioDpqK6>3>sAuCjqEdV?NV77wo|95SH%_Z(Gk4o_HV%%g9T^ubiL8yC z{>SsXyC2l-ayB#EI`GyJTuIO6v-!vUYAw`-Js8)J{6zoVcE6FaO>t@yQqJq%z`@%$ z3#~|XCxyaWljs23jTyF|mk*`)k2y#BjXt7uLT&iVu{W%v#f9ZmJYJuAm2GUOmpfkF zYm8*BzErEY&$owvo!|wAyu|&flntnHvTu=2uE(Ffb+yTn5_>ZybDM1Ap-o>5`*gGr zarc?w**-<^;j|j6wC+f3aD24e)`CFyrM8a1WXJ@`V*yyA<~9_ns|J0%%^0FV717NF zeZp25i7wBb(p*9%jYYF~3NPrCN%-bzf$N7s_gfowX;Qyzk5t~-h`qu4>gVg6 zEr6euytC8vr@mSyY_8bLktI#G%fpliIl4ktgPL#t`DE$j1i5F2FRk()JN?tTcHOi^ zhpPQrKbNbWn;)|a`e!*Pw7>J%8-cFU4DeR|3Jf=%EQ!*dr_`QM-y0OGo`Q6%?qf*w z21{HwyF91hu`ZfEgb3?IrRUZ(Uf`XadEP*^+Qn?LvJbkpuH?C)iS$Yv5$zVs%v{?x z$;P=~hxEC823c^2z-(7F{bBQp)b41>{6x*(%F*Qo)<35lqp5_NlvZ!tZ~h6!M&p#C zIX{>r!8X|3AElG2s68M`i|Pmv-zi8Dwy`WZwP5tHl9-n1H@IE(d!*v&ao!a~NT0og zQN{X9%o$vN2chXvi<;D|8&vbv5}U9%g$?`_(a8+O6CGPDVwn%li&>1_56Xy zkTF}3BPlTA<6!>zpOz(ce)1q!n6t)Ftx-!YR2>x0Ab(N5i8?TQPN#r~mKT~rP>es8 zYr`J92cj0lhS`Nz?1AcJSjme?T)lm6u|Wm zW2kd4+{O1c%m<=A% z6_epxuw?67=1&|32f%Gt0-f2f85tmHuqjpatkiG^bU85YhzN5E;C`vji-Ixdg$Zw2 z_|i`HD!#=bR(|&}hKT4jknywAMzu9{8`ai^Psq?N=I2QK6_vk5=SCFg`gSvd8-Lya z23B(c>TiC-zr4e@(pq zHUB>8@zcZEmCc~<>+*qWJ3Zp%>hDmegqe-$1$&m?8wNiK5wTYqeJs&3x2hmhRU+=p z=0(?0$fqkRi%whf>XB}9=3*pHER}L`oe*fOe4{gV1MJC4@4T6}Hy(B;f9h1#`avuO zB4-qG%{j3#a~oy5QT~uUJvAz}dK5$fJV%|6jh*j%66l+ZS$ozMD^zoC!@AuI>V73U zm5pmx6D=MYNtd{$hCT6_GI?tu9jH~p5kXZKjZza;=p4JEX$8FE?uG~u6hTVCU{-1p z?CB^-CxjmYQ2~=l!^g)>Ct<}P?-hLOXzgr1Se#iN)Q`+R91*T^OJW& zo^NtNR?4Ra@c>{4{$4>gY{>4O>ic{NjXj*8a^W|<)VA1E0w-~9%(pzraW5aOkB*S{ET(uSgfqi0CDI#sIpmOk zLeNymM~BishmuT20rv_B2(x998 zo^sVF-ONgeBsla^J(a+0x1jRhI7mJ)cwpwGJv8BC`~2&(3?F2X6%{bxCCFT)^? zQJxtp0zGjLGt4^iL@J?de55%m{7LQOU+AZJOd-hMHU575t!qx+2tk(q z$eu|9<$%aHA-D1AB-_` z25Op#gcR@_Ob@L<`Q*&#M`h_php>l{HW0~zUd7EUhb$NvgEOI@X2=pVOJ=Gs_;6WMpM(hYLn)6|DjkyHy0CQ#f7ckRxc z9I9YX8=kKReU?UHY)5fJ2vCqCih$c?80ZnS&|m_Tvx1)Q3%vsGby2CR_(QA{pjhuW zDCY>sHd(^RNk&~%e2#gG21dO)6b&BSse!yn(_;?@yiuS6(~mG1(14CoYP=<&EHeLC zND-hc5EC+1$Na`rb{SD<_J0x@n72A$r>mYCOEMNUfu{;o&|$jG2d%jM779It-ib&d zjvWZoRqzhqk+1k}N~-I3B8iKxLj zR~6TjFF6x7w)U}*J^_QNs3n60D0n27MVMic(FquVI*I2UwbtNw)cpunE_x_E3P7Ei zy;O>(*a8RuHbj~GJ1T$LcEh<;?FbII!g$LYGQwg9a)ro_qkwmv3`BR$Fe*5;(y`g(#A)}VR zUmYAu?IK)-oNK;Kg^A8A;9dDgP+V_h@+&Pj?yi)c{GZSlXnUxkZ3}h&S1{NYnHdIx zWk%ckJFq5Eg;Kqe#{j!qKA8P7xF)d*Y9}Mhz`4HBWd4M$pk#(_MvKi%olImthSjUU z5Ne%Zhsm60a0vcaDvngeHndLV?~;im9fE3bn7W~N&A%?}kElrmQVGgK@e00ZX=r)V z74vS;0LACAi?f1;G#4{hm1$z{PS-)~>GmKrJyA5RK@rPb!SSe_qCZ&;d6QiN2}cCN zn0ExYtvD>(^M$6B3L0S75*iBV!O~|Z+?WT-W5Ftw(n+cJKD_e*e$cpf|3JVQC51GJ zOWv@I9L}DCunhv5*HHc}h!vJP%q9*AFeJbjg;f3hu9RV@64UE!le}Pn{a2iWJ z#Q|us>&KtfUH>5;PbC0oyw_^8JfBGT!S6`=V@hpEoXl*qC4_&<&p;_Jad9*W3*eMS zrjc^&An1FT-Y7K2OgS)+AWAf`x)}+EbI zP1NtyEHGOCl`2uz6{V}jT3$e)+JUp0u7+CVqn+P02} zpbY;*tKONMdc54hXX%2C%BqZ#A(^YWfJB0=vRVy>^~?8SMyzicKhCGyZHT?EH4^SP zM$bFaW6_S7cH1t|U-&iB3Fr5hrM@o^&VS;vVOz4=c9)j#RusW~qMCAP zWqS5}5FKMP?fUu8=R=O=bJlx$%BK37gja9sF3fkpwMC)FfXqXheW0MOr=%!Uv8SUp+G(XV|5kSU0-hL=W6c33j(`mW2+m6}u3j+8v zYKdrMS@M|vQJur^q;Zj29^dPq9jREgk3)3V`|b1Iq?FNC$1MqljvHif*e@99``scAhJtO; zgt@Im1F8;BL65cVbP0$}a^gP+#3e-vNZ6FLJaJrSL!f988Bh-WR`Hk z;)B`D;1?LocoY;^q~TD!V7QN{oKX<@BP3yQnY-2qjpR6uIm*p(qIMia$4_51x1gYp%cDJG)Jbd>tHy3{J}C2#CsYu5JF{zux1502N-?2qW1f70SXj@OFwFuQPyz;R=>wpyZpD^DB|67_(<0u%Eu0NGCX zgAZrHH?T7bSTO*z2fe{=b#`r}Dav9>l|g92+PoQ17JEAS8n{U4*br?xOtCp#ON<_#=>`qM#*buX*s!4WZ-7X2dq1V^^J&D;&g zKTLc3vno1INOR!OuK~i@re;ZW<6ordY*+j=NrB zPc7@@EN7s_YE!LmEd)9aV(7w6wBAfr>>za*X-#NjxD6zcg18M(q1w@N<+=yf^D6W}Ti5Y55rlMu1lyc(=R-I>K_KQ9Lo}NwE8(bA!fAxhdyvx>~yg zy=@qj%&|()wi2MP)U4%AxzwYwmH=#Ad~|3@qJb39^>gnLTqG)@OW4GOLV78H7K!*@ z92X!G)i%jzox&Uoq~2qFM4utVF@ubNszg?x>&%@C0b3waPkRyxvQ8>~1Hq$>dWM8)5u zu2Bn#9d}@t5jukTbZX-8$;=Uk!5j!fdJ>e(dJl6_qRIpuS7lFQfU4hx10$F`Xcn-lI${rFtG!B3xQz}25B%Yb#F#Ew;zV$Pgv!wcFhR@ru@ugIt*$@yA)s`q#2yIl>u(Yv9}?@sx)j z<&s_}X`OJH;NsptCeO6RToTV8 z#j3rb3qJVzN=zZ(oU=&jztYfBSf4#q-FHO~w7&+iY^Ybheb%?jxHvgZsB(CSXF!&| z3P=EX-k{7S4Sb~2(ic@LRbUhR`&+-%ZrCce_gtjz>*}!icGH1ap;{_SIhVvGPSMYD zShTGX{?6wgQMJ#x<91nA<3{U;rxV{+HcX8JB0TPo&Pnb)c!TGFGaxwxD%Rj+V4Z9{ ztRyCKT}XVljMw8ywW%mn1ERhJhK55UC*XBCchS~YE{+Nz5S>T^b{Im1AE-p65fRVv z;X@b?psp{TKpb{#AuWDXQUTruR45rwB3aX+1q|LR3I(#TBZPkNT9%LlvH#@Y|1U(Q zVn+xBUTVNX5&VA$928MTwn6r?fuV^fG$pb{>$#i}M@~)qep5)Q2hKC~i?RPbYpFjRUb?m(R3Xm)hW|3b-OMHo#)Jc zQ~aOZ4do!f8U6?VAG;gM5cWUS=zsK)I3f$X5HiXxEf5jyzmRIT2mq8cQ2;;@SSVuq z4}pOq27sPd!FT9I|M!CabvA$o{RlaFB?Z^iKe0Y;bPmbX^Yh_kP8zZNth&p1nVy^=fh3hldsYC=Qae>1m#(i!TV444sjz zfN;nn#U4*doLVuP#`g-2&CFARl$Pvw2vJ_J87BSYUL zh}i!op_1Lt`0(cR)KQkJLcEr8t@`y! z4bm29YBZgU;%z;6-)Z~tu9;~ik%oo}p2mU-Ly?Fq5U7}CR~6&U%o}!KBWXK=sdco8 znM{5e^E#EB=DI_EfD@$`rX)4lIr$5@rOy^<`Pu>U+f&gWTCTW zd$Ux#vn54v|BNuD3r{(AdmMx|HFH{n163*Ju{cG;^3aQP|2q{iu84tzc%Z`JI#+{s zliptv<@Qd&#kH-Eme?bWXRpAz*9NPdlgBoF|BA2m*)UJaV}#!V(7n07987mhn4ma5 zi^EaV;0Cyjn3v~p3Oc5(kzET6B6hAp=!Uvk!l0vdjDa&OXh6^`WJ>qyW&)=>cH>vL z_hT<%*AJKh6n}X9Htn3)*f28wooj#odR+os(YJ0fKQ(HWj9vaQfIG~#Nq`cs_1*PF zI=qMxKoC|$Jxr$7o)DH@zRoYH!fQ`PRYLMUHeR!mRCc(mlN?D7uBLehU<1H(CmVC} z=I`$zNHL!|K-q=wM#-j&Cj-!%rF--AsF7=MWuWY0fQ(>3K>(E-jvysiE%NP8fL(&_ z5m52p`)oT)ykp>dIM9}OWKLq1_&&@t%_h7C5SSg(iVX3GT*B1hl3iPicnpF@k;Zk! zuiqtO1s8`fQ2zGUD9`Wp)kWkdc^{~LCV B!QB7= literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Star Voyager (Genesis).bin b/test/roms/controller/genesis/Star Voyager (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..743b0c69cfadafa4b5b3603c030f1937deeb15f8 GIT binary patch literal 4096 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 literal 0 HcmV?d00001 diff --git a/test/roms/controller/genesis/Yars' Revenge (Genesis).bin b/test/roms/controller/genesis/Yars' Revenge (Genesis).bin new file mode 100644 index 0000000000000000000000000000000000000000..8c72f32c498b38121bcd84c142ee2506f5ac744a GIT binary patch literal 4096 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 KD&M>%KK~0C9#iH3 literal 0 HcmV?d00001 diff --git a/profile/128.bin b/test/roms/profile/128.bin similarity index 100% rename from profile/128.bin rename to test/roms/profile/128.bin diff --git a/profile/README.md b/test/roms/profile/README.md similarity index 100% rename from profile/README.md rename to test/roms/profile/README.md diff --git a/profile/catharsis_theory.bin b/test/roms/profile/catharsis_theory.bin similarity index 100% rename from profile/catharsis_theory.bin rename to test/roms/profile/catharsis_theory.bin From 05901a2ad8049ec238b59531a957ffd9b9d3a489 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 10:53:14 +0200 Subject: [PATCH 02/69] add support for multi segment banking into CartEnhanced class refactor more cart classes --- src/common/bspf.hxx | 2 +- src/debugger/gui/CartE0Widget.cxx | 12 +- src/debugger/gui/DebuggerDialog.cxx | 2 +- src/emucore/CartBF.cxx | 133 +----------- src/emucore/CartBF.hxx | 96 +-------- src/emucore/CartBFSC.cxx | 194 +---------------- src/emucore/CartBFSC.hxx | 100 +-------- src/emucore/CartDF.cxx | 135 +----------- src/emucore/CartDF.hxx | 96 +-------- src/emucore/CartDFSC.cxx | 202 +----------------- src/emucore/CartDFSC.hxx | 100 +-------- src/emucore/CartE0.cxx | 128 ++--------- src/emucore/CartE0.hxx | 85 +------- src/emucore/CartEF.cxx | 135 +----------- src/emucore/CartEF.hxx | 96 +-------- src/emucore/CartEFSC.cxx | 202 +----------------- src/emucore/CartEFSC.hxx | 99 +-------- src/emucore/CartEnhanced.cxx | 80 +++---- src/emucore/CartEnhanced.hxx | 81 +++---- src/emucore/CartF0.hxx | 3 +- src/emucore/CartF4.hxx | 2 +- src/emucore/CartF4SC.cxx | 2 +- src/emucore/CartF6.hxx | 2 +- src/emucore/CartF6SC.cxx | 2 +- src/emucore/CartF8.hxx | 3 +- src/emucore/CartF8SC.cxx | 1 - src/emucore/CartF8SC.hxx | 3 - src/emucore/CartFC.hxx | 3 +- src/emucore/CartFE.cxx | 4 +- src/emucore/CartFE.hxx | 4 +- src/emucore/CartUA.cxx | 2 +- src/emucore/CartUA.hxx | 2 +- .../{BFSC => DFSC}/penult-demo-9-NTSC.bin | Bin .../E7/Bump 'n' Jump (1983) (M Network).bin | Bin 0 -> 8192 bytes .../EF/Zippy_V2_FINAL_NTSC.bas.bin | Bin 0 -> 65536 bytes 35 files changed, 183 insertions(+), 1828 deletions(-) rename test/roms/bankswitching/{BFSC => DFSC}/penult-demo-9-NTSC.bin (100%) create mode 100644 test/roms/bankswitching/E7/Bump 'n' Jump (1983) (M Network).bin create mode 100644 test/roms/bankswitching/EF/Zippy_V2_FINAL_NTSC.bas.bin diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index 06333b13c..7312783b3 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -84,7 +84,7 @@ using ByteArray = std::vector; using ShortArray = std::vector; using StringList = std::vector; using ByteBuffer = std::unique_ptr; // NOLINT -using WordBuffer = std::unique_ptr; // NOLINT +using DWordBuffer = std::unique_ptr; // NOLINT // We use KB a lot; let's make a literal for it constexpr uInt32 operator "" _KB(unsigned long long size) diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index de845b197..bdce56fdb 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -98,9 +98,9 @@ CartridgeE0Widget::CartridgeE0Widget( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeE0Widget::loadConfig() { - mySlice0->setSelectedIndex(myCart.myCurrentBank[0]); - mySlice1->setSelectedIndex(myCart.myCurrentBank[1]); - mySlice2->setSelectedIndex(myCart.myCurrentBank[2]); + mySlice0->setSelectedIndex(myCart.myCurrentSegOffset[0] >> myCart.myBankShift); + mySlice1->setSelectedIndex(myCart.myCurrentSegOffset[1] >> myCart.myBankShift); + mySlice2->setSelectedIndex(myCart.myCurrentSegOffset[2] >> myCart.myBankShift); CartDebugWidget::loadConfig(); } @@ -136,9 +136,9 @@ string CartridgeE0Widget::bankState() ostringstream& buf = buffer(); buf << "Slices: " << std::dec - << seg0[myCart.myCurrentBank[0]] << " / " - << seg1[myCart.myCurrentBank[1]] << " / " - << seg2[myCart.myCurrentBank[2]]; + << seg0[myCart.myCurrentSegOffset[0] >> myCart.myBankShift] << " / " + << seg1[myCart.myCurrentSegOffset[1] >> myCart.myBankShift] << " / " + << seg2[myCart.myCurrentSegOffset[2] >> myCart.myBankShift]; return buf.str(); } diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index 47e05da04..3143dbc10 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -617,7 +617,7 @@ void DebuggerDialog::addRomArea() // The 'cart-specific' information tab (optional) - tabID = myRomTab->addTab(" " + instance().console().cartridge().name() + " ", TabWidget::AUTO_WIDTH); + tabID = myRomTab->addTab(" " + instance().console().cartridge().name() + " ", TabWidget::AUTO_WIDTH); myCartInfo = instance().console().cartridge().infoWidget( myRomTab, *myLFont, *myNFont, 2, 2, tabWidth - 1, tabHeight - myRomTab->getTabHeight() - 2); diff --git a/src/emucore/CartBF.cxx b/src/emucore/CartBF.cxx index 91d13cbb7..0d1921c17 100644 --- a/src/emucore/CartBF.cxx +++ b/src/emucore/CartBF.cxx @@ -21,33 +21,12 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeBF::CartridgeBF(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBF::reset() -{ - initializeStartBank(1); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBF::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeBF::peek(uInt16 address) +bool CartridgeBF::checkSwitchBank(uInt16 address, uInt8) { // Due to the way addressing is set up, we will only get here if the // address is in the hotspot range ($1F80 - $1FFF) @@ -55,111 +34,9 @@ uInt8 CartridgeBF::peek(uInt16 address) // Switch banks if necessary if((address >= 0x0F80) && (address <= 0x0FBF)) + { bank(address - 0x0F80); - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBF::poke(uInt16 address, uInt8) -{ - // Due to the way addressing is set up, we will only get here if the - // address is in the hotspot range ($1F80 - $1FFF) - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0F80) && (address <= 0x0FBF)) - bank(address - 0x0F80); - + return true; + } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBF::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1F80 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1F80U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeBF::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeBF::bankCount() const -{ - return 64; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBF::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeBF::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBF::save(Serializer& out) const -{ - try - { - out.putInt(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeBF::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBF::load(Serializer& in) -{ - try - { - myBankOffset = in.getInt(); - } - catch(...) - { - cerr << "ERROR: CartridgeBF::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartBF.hxx b/src/emucore/CartBF.hxx index 158f43a45..08b54d731 100644 --- a/src/emucore/CartBF.hxx +++ b/src/emucore/CartBF.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartBFWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; There are 64 4K banks (total of 256K ROM). Accessing $1F80 - $1FBF switches to each bank. - @author Mike Saarna + @author Mike Saarna, Thomas Jentzsch */ -class CartridgeBF : public Cartridge +class CartridgeBF : public CartridgeEnhanced { friend class CartridgeBFWidget; @@ -51,71 +51,6 @@ class CartridgeBF : public Cartridge virtual ~CartridgeBF() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,29 +70,12 @@ class CartridgeBF : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 256K ROM image of the cartridge - std::array myImage; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; + uInt16 romHotspot() const override { return 0x1F80; } + + uInt16 getStartBank() const override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartBFSC.cxx b/src/emucore/CartBFSC.cxx index d0d33c79f..bd9793893 100644 --- a/src/emucore/CartBFSC.cxx +++ b/src/emucore/CartBFSC.cxx @@ -21,197 +21,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeBFSC::CartridgeBFSC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeBF(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(15); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeBFSC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0F80) && (address <= 0x0FBF)) - bank(address - 0x0F80); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBFSC::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0F80) && (address <= 0x0FBF)) - { - bank(address - 0x0F80); - return false; - } - - if (!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBFSC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1F80 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1F80U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeBFSC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeBFSC::bankCount() const -{ - return 64; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBFSC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeBFSC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBFSC::save(Serializer& out) const -{ - try - { - out.putInt(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeBFSC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeBFSC::load(Serializer& in) -{ - try - { - myBankOffset = in.getInt(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeBFSC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; } diff --git a/src/emucore/CartBFSC.hxx b/src/emucore/CartBFSC.hxx index b4cb72aad..35c4b84ca 100644 --- a/src/emucore/CartBFSC.hxx +++ b/src/emucore/CartBFSC.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartBF.hxx" #ifdef DEBUGGER_SUPPORT #include "CartBFSCWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; Accessing $1F80 - $1FBF switches to each bank. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class CartridgeBFSC : public Cartridge +class CartridgeBFSC : public CartridgeBF { friend class CartridgeBFSCWidget; @@ -50,72 +50,6 @@ class CartridgeBFSC : public Cartridge const Settings& settings); virtual ~CartridgeBFSC() = default; - public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,32 +69,12 @@ class CartridgeBFSC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + private: + uInt16 getStartBank() const override { return 15; } private: - // The 256K ROM image of the cartridge - std::array myImage; - - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartDF.cxx b/src/emucore/CartDF.cxx index b43bc0837..db9ab62d2 100644 --- a/src/emucore/CartDF.cxx +++ b/src/emucore/CartDF.cxx @@ -21,145 +21,20 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDF::CartridgeDF(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDF::reset() -{ - initializeStartBank(1); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDF::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDF::peek(uInt16 address) +bool CartridgeDF::checkSwitchBank(uInt16 address, uInt8) { address &= 0x0FFF; // Switch banks if necessary if((address >= 0x0FC0) && (address <= 0x0FDF)) + { bank(address - 0x0FC0); - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDF::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FC0) && (address <= 0x0FDF)) - bank(address - 0x0FC0); - + return true; + } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDF::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FC0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FC0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDF::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDF::bankCount() const -{ - return 32; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDF::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDF::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDF::save(Serializer& out) const -{ - try - { - out.putInt(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeDF::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDF::load(Serializer& in) -{ - try - { - myBankOffset = in.getInt(); - } - catch(...) - { - cerr << "ERROR: CartridgeDF::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartDF.hxx b/src/emucore/CartDF.hxx index 04804b957..5b2025285 100644 --- a/src/emucore/CartDF.hxx +++ b/src/emucore/CartDF.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartDFWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; There are 32 4K banks (total of 128K ROM). Accessing $1FC0 - $1FDF switches to each bank. - @author Mike Saarna + @author Mike Saarna, Thomas Jentzsch */ -class CartridgeDF : public Cartridge +class CartridgeDF : public CartridgeEnhanced { friend class CartridgeDFWidget; @@ -51,71 +51,6 @@ class CartridgeDF : public Cartridge virtual ~CartridgeDF() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,29 +70,12 @@ class CartridgeDF : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 128K ROM image of the cartridge - std::array myImage; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; + uInt16 romHotspot() const override { return 0x1FC0; } + + uInt16 getStartBank() const override { return 15; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartDFSC.cxx b/src/emucore/CartDFSC.cxx index 3661459fa..f759136a7 100644 --- a/src/emucore/CartDFSC.cxx +++ b/src/emucore/CartDFSC.cxx @@ -21,205 +21,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDFSC::CartridgeDFSC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeDF(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(15); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x007F]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - access.romPeekCounter = &myRomAccessCounter[0x80 + (addr & 0x007F)]; - access.romPokeCounter = &myRomAccessCounter[0x80 + (addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDFSC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FC0) && (address <= 0x0FDF)) - bank(address - 0x0FC0); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDFSC::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FC0) && (address <= 0x0FDF)) - { - bank(address - 0x0FC0); - return false; - } - - if(!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDFSC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FC0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1FC0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDFSC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDFSC::bankCount() const -{ - return 32; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDFSC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDFSC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDFSC::save(Serializer& out) const -{ - try - { - out.putInt(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeDFSC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDFSC::load(Serializer& in) -{ - try - { - myBankOffset = in.getInt(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeDFSC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; } diff --git a/src/emucore/CartDFSC.hxx b/src/emucore/CartDFSC.hxx index af35f476b..cf3661039 100644 --- a/src/emucore/CartDFSC.hxx +++ b/src/emucore/CartDFSC.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartDF.hxx" #ifdef DEBUGGER_SUPPORT #include "CartDFSCWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; Accessing $1FC0 - $1FDF switches to each bank. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class CartridgeDFSC : public Cartridge +class CartridgeDFSC : public CartridgeDF { friend class CartridgeDFSCWidget; @@ -51,71 +51,6 @@ class CartridgeDFSC : public Cartridge virtual ~CartridgeDFSC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,34 +70,11 @@ class CartridgeDFSC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 128K ROM image of the cartridge - std::array myImage; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; - - private: +private: // Following constructors and assignment operators not supported CartridgeDFSC() = delete; CartridgeDFSC(const CartridgeDFSC&) = delete; diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index 3788a95bc..e35917993 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -21,11 +21,9 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeE0::CartridgeE0(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); + myBankShift = BANK_SHIFT; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -44,7 +42,7 @@ void CartridgeE0::reset() bank(5, 1); bank(6, 2); } - myCurrentBank[3] = bankCount() - 1; // fixed + myCurrentSegOffset[3] = (bankCount() - 1) << myBankShift; // fixed myBankChanged = true; } @@ -52,7 +50,13 @@ void CartridgeE0::reset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeE0::install(System& system) { - mySystem = &system; + //// Allocate array for the current bank segments slices + //myCurrentSegOffset = make_unique(myBankSegs); + + //// Setup page access + //mySystem = &system; + + CartridgeEnhanced::install(system); System::PageAccess access(this, System::PageAccessType::READ); @@ -79,127 +83,23 @@ void CartridgeE0::install(System& system) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE0::getBank(uInt16 address) const +bool CartridgeE0::checkSwitchBank(uInt16 address, uInt8) { - return myCurrentBank[(address & 0xFFF) >> 10]; // 1K slices -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeE0::bankCount() const -{ - return 8; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeE0::peek(uInt16 address) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FE7)) - { - bank(address & 0x0007, 0); - } - else if((address >= 0x0FE8) && (address <= 0x0FEF)) - { - bank(address & 0x0007, 1); - } - else if((address >= 0x0FF0) && (address <= 0x0FF7)) - { - bank(address & 0x0007, 2); - } - - return myImage[(myCurrentBank[address >> 10] << 10) + (address & 0x03FF)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FE7)) { bank(address & 0x0007, 0); + return true; } else if((address >= 0x0FE8) && (address <= 0x0FEF)) { bank(address & 0x0007, 1); + return true; } else if((address >= 0x0FF0) && (address <= 0x0FF7)) { bank(address & 0x0007, 2); + return true; } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::bank(uInt16 bank, uInt16 slice) -{ - if(bankLocked()) return; - - // Remember the new slice - myCurrentBank[slice] = bank; - uInt16 sliceOffset = slice * (1 << 10); - uInt16 bankOffset = bank << 10; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1000 + sliceOffset; addr < 0x1000 + sliceOffset + 0x400; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[bankOffset + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[bankOffset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[bankOffset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[bankOffset + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - myImage[(myCurrentBank[address >> 10] << 10) + (address & 0x03FF)] = value; - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeE0::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::save(Serializer& out) const -{ - try - { - out.putShortArray(myCurrentBank.data(), myCurrentBank.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeE0::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeE0::load(Serializer& in) -{ - try - { - in.getShortArray(myCurrentBank.data(), myCurrentBank.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeE0::load" << endl; - return false; - } - - return true; -} diff --git a/src/emucore/CartE0.hxx b/src/emucore/CartE0.hxx index 35513be85..66dbbba6a 100644 --- a/src/emucore/CartE0.hxx +++ b/src/emucore/CartE0.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartE0Widget.hxx" #endif @@ -39,9 +39,9 @@ class System; only one actual bank, in which pieces of it can be swapped out in many different ways. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeE0 : public Cartridge +class CartridgeE0 : public CartridgeEnhanced { friend class CartridgeE0Widget; @@ -72,52 +72,6 @@ class CartridgeE0 : public Cartridge */ void install(System& system) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -137,37 +91,14 @@ class CartridgeE0 : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + private: + bool checkSwitchBank(uInt16 address, uInt8 = 0) override; - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + uInt16 romHotspot() const override { return 0x1FE0; } private: - /** - Install the specified slice for segment (bank) 0..2 - - @param slice The slice to map into the segment - */ - void bank(uInt16 bank, uInt16 slice); - - private: - // The 8K ROM image of the cartridge - std::array myImage; - - // Indicates the slice mapped into each of the four segments - std::array myCurrentBank; + // log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 10; // = 1K = 0x0400 private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEF.cxx b/src/emucore/CartEF.cxx index 16635200b..70cd8236b 100644 --- a/src/emucore/CartEF.cxx +++ b/src/emucore/CartEF.cxx @@ -21,145 +21,20 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeEF::CartridgeEF(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEF::reset() -{ - initializeStartBank(1); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEF::install(System& system) -{ - mySystem = &system; - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeEF::peek(uInt16 address) +bool CartridgeEF::checkSwitchBank(uInt16 address, uInt8) { address &= 0x0FFF; // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FEF)) + { bank(address - 0x0FE0); - - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::poke(uInt16 address, uInt8) -{ - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - + return true; + } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FE0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1000; addr < static_cast(0x1FE0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEF::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEF::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeEF::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeEF::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEF::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeEF::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartEF.hxx b/src/emucore/CartEF.hxx index 62a10975d..1461e954d 100644 --- a/src/emucore/CartEF.hxx +++ b/src/emucore/CartEF.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartEFWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; There are 16 4K banks (total of 64K ROM). Accessing $1FE0 - $1FEF switches to each bank. - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class CartridgeEF : public Cartridge +class CartridgeEF : public CartridgeEnhanced { friend class CartridgeEFWidget; @@ -51,71 +51,6 @@ class CartridgeEF : public Cartridge virtual ~CartridgeEF() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,29 +70,12 @@ class CartridgeEF : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 64K ROM image of the cartridge - std::array myImage; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + uInt16 romHotspot() const override { return 0x1FE0; } + + uInt16 getStartBank() const override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEFSC.cxx b/src/emucore/CartEFSC.cxx index 3502be7a0..c70cff194 100644 --- a/src/emucore/CartEFSC.cxx +++ b/src/emucore/CartEFSC.cxx @@ -21,205 +21,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeEFSC::CartridgeEFSC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEF(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(15); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x007F]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - access.romPeekCounter = &myRomAccessCounter[0x80 + (addr & 0x007F)]; - access.romPokeCounter = &myRomAccessCounter[0x80 + (addr & 0x007F) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeEFSC::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - bank(address - 0x0FE0); - - if(address < 0x0080) // Write port is at 0xF000 - 0xF07F (128 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - if((address >= 0x0FE0) && (address <= 0x0FEF)) - { - bank(address - 0x0FE0); - return false; - } - - if (!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FE0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1100; addr < static_cast(0x1FE0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEFSC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEFSC::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeEFSC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeEFSC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEFSC::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeEFSC::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + myRamSize = RAM_SIZE; } diff --git a/src/emucore/CartEFSC.hxx b/src/emucore/CartEFSC.hxx index 810b27b22..d204d1ef5 100644 --- a/src/emucore/CartEFSC.hxx +++ b/src/emucore/CartEFSC.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEF.hxx" #ifdef DEBUGGER_SUPPORT #include "CartEFSCWidget.hxx" #endif @@ -32,9 +32,9 @@ class System; Accessing $1FE0 - $1FEF switches to each bank. RAM read port is $1080 - $10FF, write port is $1000 - $107F. - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class CartridgeEFSC : public Cartridge +class CartridgeEFSC : public CartridgeEF { friend class CartridgeEFSCWidget; @@ -52,71 +52,6 @@ class CartridgeEFSC : public Cartridge virtual ~CartridgeEFSC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -136,32 +71,12 @@ class CartridgeEFSC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + private: + uInt16 getStartBank() const override { return 15; } private: - // The 64K ROM image of the cartridge - std::array myImage; - - // The 128 bytes of RAM - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index ff4113ad4..0f0472392 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -37,9 +37,14 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEnhanced::install(System& system) { + // calculate bank switching and RAM sizes and masks + myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 + myBankMask = myBankSize - 1; // e.g. = 0x0FFF + myBankSegs = 1 << (12 - myBankShift); // e.g. = 1 + myRamMask = myRamSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) + // Allocate array for the current bank segments slices - myCurrentBankOffset = make_unique(BANK_SEGS); - std::fill_n(myCurrentBankOffset.get(), BANK_SEGS, 0); + myCurrentSegOffset = make_unique(myBankSegs); // Allocate array for the RAM area myRAM = make_unique(myRamSize); @@ -93,24 +98,22 @@ void CartridgeEnhanced::reset() uInt8 CartridgeEnhanced::peek(uInt16 address) { uInt16 peekAddress = address; - address &= myBankMask; - checkSwitchBank(address); + checkSwitchBank(address & 0x0FFF); + address &= myBankMask; if(address < myRamSize) // Write port is at 0xF000 - 0xF07F (128 bytes) return peekRAM(myRAM[address], peekAddress); else - return myImage[myBankOffset + address]; - return myImage[myCurrentBankOffset[address >> BANK_SHIFT] + (address & BANK_MASK)]; + //return myImage[myBankOffset + address]; + return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { - address &= myBankMask; - // Switch banks if necessary - if (checkSwitchBank(address & myBankMask)) + if (checkSwitchBank(address & 0x0FFF)) return false; if(myRamSize) @@ -133,45 +136,34 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEnhanced::bank(uInt16 bank, uInt16 slice) +bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) { if(bankLocked()) return false; - // Remember what bank we're in - myBankOffset = bank << myBankShift; - + // Remember what bank is in which segment + uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; + uInt16 segmentOffset = segment << myBankShift; uInt16 romHotspot = this->romHotspot(); - uInt16 fromAddr = 0x1000 + myRamSize * 2; - uInt16 toAddr; + uInt16 hotSpotAddr; + uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; + uInt16 toAddr = (segmentOffset + 0x1000 + myBankSize) & ~System::PAGE_MASK; if(romHotspot) - { - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (romHotspot & ~System::PAGE_MASK); addr < 0x1000 + myBankSize; - addr += System::PAGE_SIZE) - { - uInt16 offset = myBankOffset + (addr & myBankMask); - access.romAccessBase = &myRomAccessBase[offset]; - access.romPeekCounter = &myRomAccessCounter[offset]; - access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - toAddr = romHotspot; - } + hotSpotAddr = segmentOffset + (romHotspot & ~System::PAGE_MASK); else - toAddr = 0x1000 + myBankSize; + hotSpotAddr = 0xFFFF; // none System::PageAccess access(this, System::PageAccessType::READ); // Setup the page access methods for the current bank - for(uInt16 addr = (fromAddr & ~System::PAGE_MASK); addr < (toAddr & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) + for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) { - uInt16 offset = myBankOffset + (addr & myBankMask); - if(myDirectPeek) + uInt32 offset = bankOffset + (addr & myBankMask); + + if(myDirectPeek && addr != hotSpotAddr) access.directPeekBase = &myImage[offset]; + else + access.directPeekBase = nullptr; access.romAccessBase = &myRomAccessBase[offset]; access.romPeekCounter = &myRomAccessCounter[offset]; access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; @@ -182,9 +174,9 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 slice) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEnhanced::getBank(uInt16) const +uInt16 CartridgeEnhanced::getBank(uInt16 address) const { - return myBankOffset >> myBankShift; + return myCurrentSegOffset[(address & 0xFFF) >> myBankShift] >> myBankShift; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -196,9 +188,7 @@ uInt16 CartridgeEnhanced::bankCount() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) { - address &= myBankMask; - - if(address < myRamSize * 2) + if((address & myBankMask) < myRamSize * 2) { // Normally, a write to the read port won't do anything // However, the patch command is special in that ignores such @@ -206,7 +196,7 @@ bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) myRAM[address & myRamMask] = value; } else - myImage[myBankOffset + address] = value; + myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)] = value; return myBankChanged = true; } @@ -223,7 +213,7 @@ bool CartridgeEnhanced::save(Serializer& out) const { try { - out.putShort(myBankOffset); + out.putIntArray(myCurrentSegOffset.get(), myBankSegs); if(myRamSize) out.putByteArray(myRAM.get(), myRamSize); @@ -242,7 +232,7 @@ bool CartridgeEnhanced::load(Serializer& in) { try { - myBankOffset = in.getShort(); + in.getIntArray(myCurrentSegOffset.get(), myBankSegs); if(myRamSize) in.getByteArray(myRAM.get(), myRamSize); } @@ -251,9 +241,5 @@ bool CartridgeEnhanced::load(Serializer& in) cerr << "ERROR: " << name() << "::load" << endl; return false; } - - // Remember what bank we were in - bank(myBankOffset >> myBankShift); - return true; } diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 22d253b6a..b8511ac29 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -63,7 +63,7 @@ class CartridgeEnhanced : public Cartridge @param bank The bank that should be installed in the system */ - bool bank(uInt16 bank, uInt16 slice); + bool bank(uInt16 bank, uInt16 segment); /** Install pages for the specified bank in the system. @@ -135,62 +135,71 @@ class CartridgeEnhanced : public Cartridge bool poke(uInt16 address, uInt8 value) override; protected: + // The '2 ^ N = bank segment size' exponent + uInt16 myBankShift{BANK_SHIFT}; // default 12 (-> one 4K segment) + + // The size of a bank's segment + uInt16 myBankSize{0}; + + // The mask for a bank segment + uInt16 myBankMask{0}; + + // The number of segments a bank is split into + uInt16 myBankSegs{0}; + + // The extra RAM size + uInt16 myRamSize{RAM_SIZE}; // default 0 + + // The mask for the extra RAM + uInt16 myRamMask{0}; // RAM_SIZE - 1, but doesn't matter when RAM_SIZE is 0 + // Pointer to a dynamically allocated ROM image of the cartridge ByteBuffer myImage{nullptr}; + // Contains the offset into the ROM image for each of the bank segments + DWordBuffer myCurrentSegOffset{nullptr}; + + // Indicates whether to use direct ROM peeks or not + bool myDirectPeek{true}; + // Pointer to a dynamically allocated RAM area of the cartridge ByteBuffer myRAM{nullptr}; - uInt16 myBankShift{BANK_SHIFT}; - - uInt16 myBankSize{BANK_SIZE}; - - uInt16 myBankMask{BANK_MASK}; - - uInt16 myRamSize{RAM_SIZE}; - - uInt16 myRamMask{RAM_MASK}; - - bool myDirectPeek{true}; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - - // Indicates the slice mapped into each of the bank segments - WordBuffer myCurrentBankOffset{nullptr}; - private: - // log(ROM bank size) / log(2) - static constexpr uInt16 BANK_SHIFT = 12; + // Calculated as: log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 12; // default = 4K - // bank size - static constexpr uInt16 BANK_SIZE = 1 << BANK_SHIFT; // 2 ^ 12 = 4K + // The size of extra RAM in ROM address space + static constexpr uInt16 RAM_SIZE = 0; // default = none - // bank mask - static constexpr uInt16 BANK_MASK = BANK_SIZE - 1; - - // bank segments - static constexpr uInt16 BANK_SEGS = 1; - - // RAM size - static constexpr uInt16 RAM_SIZE = 0; - - // RAM mask - static constexpr uInt16 RAM_MASK = 0; - - // Size of the ROM image + // The size of the ROM image size_t mySize{0}; protected: /** Check hotspots and switch bank if triggered. + + @param address The address to check + @param value The optional value used to determine the bank switched to + @return True if a bank switch happened. */ virtual bool checkSwitchBank(uInt16 address, uInt8 value = 0) = 0; private: + /** + Get the ROM's startup bank. + + @return The bank the ROM will start in + */ virtual uInt16 getStartBank() const { return 0; } + /** + Get the hotspot in ROM address space. + + @return The first hotspot address in ROM space or 0 + */ virtual uInt16 romHotspot() const { return 0; } + // TODO: handle cases where there the hotspots cover multiple pages private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF0.hxx b/src/emucore/CartF0.hxx index 07123bf34..fc8d62939 100644 --- a/src/emucore/CartF0.hxx +++ b/src/emucore/CartF0.hxx @@ -67,12 +67,11 @@ class CartridgeF0 : public CartridgeEnhanced } #endif - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0); uInt16 romHotspot() const override { return 0x1FF0; } - private: uInt16 getStartBank() const override { return 15; } private: diff --git a/src/emucore/CartF4.hxx b/src/emucore/CartF4.hxx index 3b4f0f141..afe81d0e0 100644 --- a/src/emucore/CartF4.hxx +++ b/src/emucore/CartF4.hxx @@ -66,7 +66,7 @@ class CartridgeF4 : public CartridgeEnhanced } #endif - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0); uInt16 romHotspot() const override { return 0x1FF4; } diff --git a/src/emucore/CartF4SC.cxx b/src/emucore/CartF4SC.cxx index 5364f2eb4..4fe6e13eb 100644 --- a/src/emucore/CartF4SC.cxx +++ b/src/emucore/CartF4SC.cxx @@ -23,5 +23,5 @@ CartridgeF4SC::CartridgeF4SC(const ByteBuffer& image, size_t size, : CartridgeF4(image, size, md5, settings) { myRamSize = RAM_SIZE; - myRamMask = RAM_MASK; + myRamMask = RAM_SIZE - 1; } diff --git a/src/emucore/CartF6.hxx b/src/emucore/CartF6.hxx index 275727786..2f183ad7b 100644 --- a/src/emucore/CartF6.hxx +++ b/src/emucore/CartF6.hxx @@ -66,7 +66,7 @@ class CartridgeF6 : public CartridgeEnhanced } #endif - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; uInt16 romHotspot() const override { return 0x1FF6; } diff --git a/src/emucore/CartF6SC.cxx b/src/emucore/CartF6SC.cxx index 034f02bce..15613a357 100644 --- a/src/emucore/CartF6SC.cxx +++ b/src/emucore/CartF6SC.cxx @@ -23,5 +23,5 @@ CartridgeF6SC::CartridgeF6SC(const ByteBuffer& image, size_t size, : CartridgeF6(image, size, md5, settings) { myRamSize = RAM_SIZE; - myRamMask = RAM_MASK; + myRamMask = RAM_SIZE - 1; } diff --git a/src/emucore/CartF8.hxx b/src/emucore/CartF8.hxx index 71e4d6e72..23863fa57 100644 --- a/src/emucore/CartF8.hxx +++ b/src/emucore/CartF8.hxx @@ -66,12 +66,11 @@ class CartridgeF8 : public CartridgeEnhanced } #endif - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; uInt16 romHotspot() const override { return 0x1FF8; } - private: uInt16 getStartBank() const override { return 1; } private: diff --git a/src/emucore/CartF8SC.cxx b/src/emucore/CartF8SC.cxx index e9dd5bd5c..98ce4357f 100644 --- a/src/emucore/CartF8SC.cxx +++ b/src/emucore/CartF8SC.cxx @@ -23,5 +23,4 @@ CartridgeF8SC::CartridgeF8SC(const ByteBuffer& image, size_t size, : CartridgeF8(image, size, md5, settings) { myRamSize = RAM_SIZE; - myRamMask = RAM_MASK; } diff --git a/src/emucore/CartF8SC.hxx b/src/emucore/CartF8SC.hxx index 9ec8209c4..25fe0dfe3 100644 --- a/src/emucore/CartF8SC.hxx +++ b/src/emucore/CartF8SC.hxx @@ -71,9 +71,6 @@ class CartridgeF8SC : public CartridgeF8 // RAM size static constexpr uInt16 RAM_SIZE = 0x80; - // RAM mask - static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; - private: // Following constructors and assignment operators not supported CartridgeF8SC() = delete; diff --git a/src/emucore/CartFC.hxx b/src/emucore/CartFC.hxx index c1987a189..b08f2085c 100644 --- a/src/emucore/CartFC.hxx +++ b/src/emucore/CartFC.hxx @@ -87,12 +87,11 @@ class CartridgeFC : public CartridgeEnhanced */ bool poke(uInt16 address, uInt8 value) override; - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; uInt16 romHotspot() const override { return 0x1FF8; } - private: // Target bank defined by writing to $1FF8/9 uInt16 myTargetBank{0}; diff --git a/src/emucore/CartFE.cxx b/src/emucore/CartFE.cxx index 1837c7b88..3a07730e0 100644 --- a/src/emucore/CartFE.cxx +++ b/src/emucore/CartFE.cxx @@ -37,7 +37,7 @@ void CartridgeFE::reset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFE::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // The hotspot $01FE is in a mirror of zero-page RAM // We need to claim access to it here, and deal with it in peek/poke below @@ -63,7 +63,7 @@ bool CartridgeFE::checkSwitchBank(uInt16 address, uInt8 value) uInt8 CartridgeFE::peek(uInt16 address) { uInt8 value = (address < 0x200) ? mySystem->m6532().peek(address) : - myImage[myBankOffset + (address & myBankMask)]; + myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)]; // Check if we hit hotspot checkSwitchBank(address, value); diff --git a/src/emucore/CartFE.hxx b/src/emucore/CartFE.hxx index 18361faf0..3132704cd 100644 --- a/src/emucore/CartFE.hxx +++ b/src/emucore/CartFE.hxx @@ -72,8 +72,8 @@ class System; particular *why* the address $01FE will be placed on the address bus after both the JSR and RTS opcodes. - @author Stephen Anthony; with ideas/research from Christian Speckner and - alex_79 and TomSon (of AtariAge) + @author Stephen Anthony, Thomas Jentzsch; with ideas/research from Christian + Speckner and alex_79 and TomSon (of AtariAge) */ class CartridgeFE : public CartridgeEnhanced { diff --git a/src/emucore/CartUA.cxx b/src/emucore/CartUA.cxx index 4fd5a5410..74ccc3773 100644 --- a/src/emucore/CartUA.cxx +++ b/src/emucore/CartUA.cxx @@ -30,7 +30,7 @@ CartridgeUA::CartridgeUA(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeUA::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // Get the page accessing methods for the hot spots since they overlap // areas within the TIA we'll need to forward requests to the TIA diff --git a/src/emucore/CartUA.hxx b/src/emucore/CartUA.hxx index 66fe82ec8..94dcb4a98 100644 --- a/src/emucore/CartUA.hxx +++ b/src/emucore/CartUA.hxx @@ -97,7 +97,7 @@ class CartridgeUA : public CartridgeEnhanced bool poke(uInt16 address, uInt8 value) override; - protected: + private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; private: diff --git a/test/roms/bankswitching/BFSC/penult-demo-9-NTSC.bin b/test/roms/bankswitching/DFSC/penult-demo-9-NTSC.bin similarity index 100% rename from test/roms/bankswitching/BFSC/penult-demo-9-NTSC.bin rename to test/roms/bankswitching/DFSC/penult-demo-9-NTSC.bin diff --git a/test/roms/bankswitching/E7/Bump 'n' Jump (1983) (M Network).bin b/test/roms/bankswitching/E7/Bump 'n' Jump (1983) (M Network).bin new file mode 100644 index 0000000000000000000000000000000000000000..71b4048f86b035c7030f0ae55c94cca49b90c0a3 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/EF/Zippy_V2_FINAL_NTSC.bas.bin b/test/roms/bankswitching/EF/Zippy_V2_FINAL_NTSC.bas.bin new file mode 100644 index 0000000000000000000000000000000000000000..3ca1a12aceffec9fb2bcb6a9cb6ab1491e3f4147 GIT binary patch literal 65536 zcmeEv31D1Rx&PeRXEI49lSwk!nrTU~l%<8XP_d=04|S~fJqwgYWC=ca0&Yd&iMX^; zZUsaPrA5GWA@m{_6(gGv#ckZ2;WYPknzW;V7 zx%Zs!eCIpg`ObIt&2kx=jUi)$tM>XGcE@Q~jj6o}CbeS7NOWcJ$O01HURhYW_#dZDB)Vc%FR734J_3&HAXVVv!tZ-Kx zGjHIm^{*7y;{nlrW5B9t+uB-ab{^$U2M~{D{pb=nG@BcbN)CJUS*6D;aZe4_Z(QVs zV?Qj5l*MiI10@KQ^GeK(^P4=nFJ?vIo{j&!ns=S$T#bqWZ|xsL&h^(RbRD zJWvYQL>10Bvl~Gtz;hg-%ti2pkldNZ945E$6?1cF6r6X_I}+)3ymA4p2ya-C$&sKw^NnkgzT$Y`efE3CLR%NxShVu&!IB zP_^ByMS>O-wB0rV%6^l0aTLZ2QeMkTu~4^eq!g%ZpNdlrtyJ5RRsp4pY*jJ)k}p-k zB>-*qBwaN~7#CA76hzRUit9h6E@+G^^-i&5+WG*@0618w9~C#dXYSODm6kto$;!kf z&Bk_08$s@oY(i~=HYBf(H}q{Ek#W4pI2Xq)KQc~p+xAwk39qI>MKchzHLJ~NEwpB| zt!oXK+h^`{8`~S&w@VIzjL0GwdIxV~W-ojo%mL96rDEM3o^;sU)S(SKcDLBwwhDGb zPwDQ;*tHSvOdOB?beXxN_!@jOGJ_S-{t~ zL;shu_8sPq4qw_2iR|d>f*DyHskEcL3x2Lf&gp~_cZ!Em8dkiwr>gDJzz;hO*oQ0XL0~^7P5poVNQ~r{n!_>v7=TJ3PtU+7WD> zfM9xzMwGu-qe}Rqu?JMnNm;+N=@!sG@ye~mZFfVoMn?tMr?|*qw4fg{0V*{O#-O*FRR#-Vbmv9fYR=s5_Kn zev_|#yMAFspHgV%V5qVcVm46W&2I|Znyvq!!p;@oFOafY^3p@Wf0GBd)*!Jx`tRYt z<3<=JSG3<^-qO+4%Cx>CWi{AwXGLz_VyD>E#`RVK^3v9hL@RUnU3xHKwHkN9*xx?T zq9N9+)=~x=te{jfucfRVHlZj8DflN+)}E9#BL{B#9B_PIma@k5*_h`O!h;-}zDo`i zb#pA7alqLI_gN|H2X?qjLbIbor z`>9$@3jvP+F7%@?2>k>MLO%(E(4Pc@(4Pu}(4Pr|(4Py#DEiGEbQPK>!yq(g!5}or zs?elIUxPleiZQ>tdEM@+)VepSQVrGF$5lM;*jb-C_p+U968f*3XJ{onyURtWP=CZ-}+cv0f+E4#)aqu|DTm@1~WE z^`n92K?5ydHqYFN%GIh)S$|0(et)P=t^0Fzs)3DLwr2IVgJ?_RO^mnM03HCwUSQO! zW^di5vx>i4|LKM+fFp%9sBcAO;$(#TYO>a}M}NIWN??zEU9F^W9rIjkCGuhJlTv`wO4q!6gHs;UsFiAR`J_Th> zv9W4R82M0mcs{SJv2K!z3H-g9S8S4qKYgl%vVk|{0@v8U`*VR$ z+rZ9T;0_z;0`Luo&lrGjfY16|;E6Ucl?yyq0og=J7q)yc*XcX9MIyO$1m11Ac=zVw z-ERl-TN_wR3H`pbb4r|taC#w)vu!vXfY-F;hVN#koh-L?g}nNBv@ zYf{#EDeH}#g2Gw?oLctUZIqRHC}=|OM(=qCI)@QttRCyTMkDHaj77Bdfc#Q4ux-Da zQ`T_G`khUl%~;?pL%(O?4C{urYtcM4^Wssv$g9zsll0K!KEVSf%n zeIV-5FF3K@y@10+1Nt>5qYXQNoY2IY^c|y9|Bq>AXGlZ$54j^?E>B#h8OyB$ZOhRO zz)%*3bv*jVrkh((+=tP-W!C~jYbaS<=`hq+_4i+-=b%{KeJ?^aUW9Ki(2#LF`mya|n3xgu*QbkS+X&xFS&LFufsGJR z2%_=hrP*Pl-J7zmNLgPSg~psfv_z|o_FpM$S;}g&(F$#99Kd720DfLeSvRN9mr z{HMKr*S22|6MFRR*Y?rmAxumdGi--zLnip14sG}xNX(rsgjxlM1J=hdj(63EEjQ#9 zfUd;YR`ZjTQC1(LyQEnTz}N z|2om^>Y?Q|_M zeBe*8s+a`BabhKjg>s=6eY}zG7}9j8+BqCG+TQV z=hT9`5g?Q|CNT999y=b57&B#@IG8L6yHcmIA+T4Ovd)k)#L-ohU^I zfObO4`h<r(g)j&rty~3{6b()<~6^Nnb>+8W~MnU zJ2oO6t4_qE6N;=tfe^ovtwcGv27Mny`s`tRm~6-(QOvH~j_g!qCjnuL02?83)^a@^ zk#wX8Q4W_ z{Ih(atU$$>06u0^fKyJrP{le6Ye0@qSx@AMS0`wMpkmSy^bOWFhF$xMMY6>zK$|5 z14p`K;hbJk*^m`YFLD^&hUC4~=tV0tdCF`l=X{X+(wV&j#!^JBI%WMSFKP$RBrZGH0Ggps&Jg;67Izfro0FaV#Q7e+=;;d*IaNcEm*)bgTW z3fobjJkNpp*d?tVnFT5LU>0#3^!WhWOssP8UN3Kqe- zWrRQlttC`eJ35|Cb6mYSWzDsntgm<`}9qb46k$Q(IoK82$qsJGD8?>$AII6GN4 z2ax*SsUh^9zi+*1T-Si^voZks9i&w-U5|G(Jqzz-dLbK3REMC^+fupoMtJ!ll;}qo zALHbdoxq_eT*r^$DhZESx!#teM!8Z=pb#y`=fV#g`iE`I=$N6;AHy{p`e#SEI-!3t z2j22+C5RTo1~Qs0KeT}>a)5|?)4#W@v|WB-yA&(Fnm*aG&USfjl*^Qsmu;7UQ7&bY z9Q%yxFn)2PwGT2TwU#8%37nb(#01HXraDN^J?u$-Z4T@ABb`K2`P7{bw#>DCE*R~z zn7Ce)qijwQv%$t(l!Mu_#0ECy0@v8U2W()BEVe7)yY$ZAeIVci_y6ZSKF91b`ZLXL zjDC&hTu!E^*c)|1nNMb)a*f7TPV0_$r=60;xo<7;cz%*?m+K5{F@zj zB(6epPdXC*>}SV<5Brl}6gWE%#7`g>D*SJc1qc330%tG6 zpIj|wPKZD@b5j=TlZ)))gq6M7%RzXUJ{-~#|Ypf5kod;q`)0E`0oYXE<(Tc?@72JqJaCINg5 zz{m6_PBR|^@Ui;l1tD`iKK)=&_PBVW8(C^HZWbqlmp3(Q6 zWWG7NB@D!S1iisXz#lz-kLMUR=j+;Qar%NRJ?q+Qar#jiU+fX_+v;8@gGz1 z)*`Le>VG=JT#K|?3niiA-2>n~`t~!-djPx#K&I-?0sOhX?+o+j0R9|6Dqbsqt$N`? zvlYNr0I7Hn0{EalVWIgTfDZyl#d`$6NA!~xnvVeZh$!CU06nhHUuZrK(BqsN-A4fsBMmJNVG0KY!l2EZVI3Fp`V7z9xE85;nD02&+s3@aP- z2hMUikJqJs0hjvuUGhu1)Gz8)Kjk_rusHCQz$XHpfM)+11HTKr5;z!`W&7XeQ@^N7 z{gwpmpKA$zF4u5C{oV|y-!p+{0$X!_0k6la<@~O5@fUOjz4ni0{MOsQrhxiI1NP4! zm7f#6eF61z?9Nwz@NCCu3&5))j<+2ZhxI1|>X%{5uc==~1dRdyp0a;k0rh(|pne*n zB$0yHD7fE3WWU4P;|<{F@qRDxef+)`sPn4d9IyI0qMzzjzeQg4OM2DMiP}MkpFdJ7 z#!qvp-#nN4IZ2_p)lbD+uRA9r0Ne0RK>gkhsGk#nlV;lj>gNc=5s)LWi~t>-vgzuv z&)6o{dzG~lloPbWiWAo-z3R8g`v`uUyo>GMCEm;MyF}zbSrq&2U!Yii5x@E+{Pr)9 zke|y|FYxK+Z?0GUB3|`Nc-1fBQon>t{pPyVZ?Q}LoOtTz=SNuxyWC6cU(&69%oqHv zv42TB=VeG;dah&qTczhn&C!fQX|hNRQX8#_OEmRsaH-!^m-;n$)z8sTM@m!u>gPzu zk>*8S^;7w!G4P~I{pKJS1d!?L@Lvq`9G3?=rMc?xUktPJSQ8DdV&cFumQ$hhHPEBo zg1T*T%36`vmE;i47Q<-YVs1gRu!IYrOc}^QQNJCfzw-B7o-C!CC?9qo1|PZR-SBU;V5#-nJeC>)P|IqiyTQU_IeH>r~r%CahmP&su0(8(@9* zJnKT+`UO}M=UZQ}t>1?AW9M5xw5@l*dd>M5QBiEHg!Px_Tg|rhPFVkZzGd3hU&16MM0ltmlMKQw zWYCs5G|T@6mi;!%tIrdb1Gy~w;I?Px&IyzV;YieDu+k2rS4O2R4o2B12bC&x1rrRn zAU|qkX7!vKq;Fao?7gY}S#1b%sL;K6Lf5Nb(Q4wNJlPccc( zAr?D?k)9&&&6AUQZcy6O(VRnkB-?RuU!CV3L9{|f#pp!L@TYjwpSi$QS6f|KQC3<~ zTzIe`;0ySDUXNQl=yH4g!Ej-5NoiTUG*%KTjhB@j^p<@Zk6Rd|t1|<92J>LBNWm zCD9TF7{udn6Lt((?V!d0TpUr@!huA6`vov~FjW)9O4Pv%pnc8e%P3AT%zPm%17>p= zkb$llc5FCq8B;mWy-Zi%W2WMo8gd{oklT zLG;#0aq`Wr2;D9Y+}kr)yL? zq7IEt+fNP@l>C6QFBb-G1@%5H%FCr)Dpw$O^tBgo;0?|FpZZ0@5WN`HJ zHV3i*_{J;rAIWm8B^@PDP!#V_P=)Rb296{&TvU6E?|Dxa@??aC{!x~izC==dK^Tlb|M7wn_oFBr%l7~8$v?k!Z4&z1ZVCKYydpL*3N8!Ll zZTZog1aD7anKYwUBecsAJa&N0$8vWGBpa2#2Pf+w4z3y-o1ceT>m)La@j8sMF)|Wk zWS>lo&DJA?X-e)nCsD!lKZM_>M5JR$jyygksq&nYDqsRFv;Ty{-$PW;ItXAcwQfFI z8v&y)n-pzei_7jtC+Neil*$vW)TiId-jzIkdQS>-_^`_*Y@4rOE?*tsiz`L*`TC$r z{BM}0)0p4>cGk*;HJj~FF53@F_IaX}g}`rB_L24y%ZWK{?|w9T^k1dvGyf|^r5t$j4AOjCc{B=i32T0#n+E&G{?Um z{sRC`$PFogWef(^ju%43R}-j+bR zSe15Pe$_`L2nt+=*rf#3z6Sm6|5W%}^6^>ivU$Lzb34DqjQ?2_%G@_~(l@0{rVYWW z>3FMXEqB;`IAtA`H>;lxqqK1Fr0fLdsOl5Z51~Bfl5);ak9OtkH}`$)|Y6X@;zcd zB-oSQBle?$J@q|euM_N^W%}+3JsdXsWZkHK**DET%v|+% zc+eZ0)AkE!;@iyJUa|hlvHHaNkYn|W^-;$f5bHX}iv4LI^^{``iM7qKhQ-?9SUt$s z)EKB97kC&>@Pz(i6qIEE+ifFp{Q`Yx6f_{vM@K<}0$rC2Rn_bmQe>+tfW4>#`c2%F+P~DnMmH)n$dnf{06pAtEJ^-^BKX zrZP05#}Wl98s>eq6%(thKzuv!W~Z!&^7dGa;h#Gr{yzJl?)wh-{J(D>l(ZlsmIs^g z>@Bsb=tM2dwPLca4Rg~Qu}p()eWqAbDbg{Bgm~WitMMwTB*f(@Q1p@k~_4r2y z^nv^TiyvQ{iAk9;+;X%&yGc8EP{XjTCvfm!VDQul14CcBci<~uy7x;{zWn*)zWkM; zFAsiYXmIe_V>|!E!-^fS2V7;FygORd~qWhS${<%>uBSqmPeM}2=fnN z{t*@gJTqKlZ8y~J{e#9W#&WDJb%GP@P~*x<8V?CD7>v za{-4M6(Ds_@{`Ljvdk^vL)OR9O2QV@nZ29PyuiY#O~%spP1qK!q3^C?do@hy5SdD| z%Prh_lGomh8E>!IYgE;DM)|D-b6))Wkn6Dh0rTH`M(%wa>HhC|?tL#n>s~;ZF5?BP zH7k^W*#CM3q3SO+wd4GRwq7*GTe|Obz2Qo`-_S5bxf(-b#L^*zl?H`tfl*(0jGmA_d|dAG#6E9}M7Qd)JD@yWgMjP7lQy@7@xxH^YmX zqCl`Q5({`^!Z=W1qfv`R@bPG|Fg|Ye(bNZkcks{8L9PYgK<&6VZx9VGA?P+{F<`n& zTH@TSy-?PcFNFZ3!vS;%y7c9@AU}3NfBQ{YE{j4a*jk;uZhogW9Pn?%r$4E}`Vgc#DHs)yWw)!m+Y+-fhzn1ZLS4 z=2q-JWTK*jY>vhFyiASQ0Xm!BYjW1wvo49Lr`nnz|fKl1uuT zJNa4K-Vf)2AcV~EMnnwQWg1Eb(Ix?qjm`WYmbEq>C3Dc-83&91rAPeD*b+ z@xcV_Q(>n_z1B810F7YZ==cdCKN^EaHf@z4*;2sHBS8F3&y8q1^mm-t^q7#NYhTkZ zB{)SMgN!WZM3DR}?dv!1>S!HKAi8(8y4&x9jeANQ?9uW>yX)$vb+#g6eon8w75fF3 za9cH7G6<>Dz_}A#D2^vfVP?4`KgRvp<(fkIS@ z(2vXd?@>i4Gfx%%HyVSo`<^?{oi&|gf^%Yi%*0@&^q;uVYW=OLboee1wZBhw>gLwdIau+ef@m{$cU9l zk$#n|h|ecd)+t=HZrzg;E9mKTG_&u!m1Kp>2xg$D2SL%pjo`InC0BIFJRXjOxlKV< z$~qA^t#S;j9m5(RuT=AAn2ur*oWR7sC*8Ew*VW?g~2a6NysOI?Z_!@gK5c4%rjJ{Ok@L0 zTK&=6`cPtEd6~P9E1^>xdwF9p(xw1?K4oEJ^MH_9s(3_M$dr-EXHOk0TOE zjx#s4y^ICsn^6F;`~J&p(NP2(Kt?SkHa9X?nVsBg)2T1K-Rz`3VU!4SNo-+kgzP#+ zfi{|*MkRMye-!xJ;EU1Q3j0;cr1--6xAiIO7@IFHz66$VjP}o{8aEmP7QtJ!%+-|Qg+#<`o)cV5E9rpUdEf^JX))$VuL#;0~x5&~l zwZd@P9cqOkfE-g%YYbC&*lP^8WY-v;cZXVIi0L0Rmz8e)kE)bC*ya={sE4U!P%YKI z{8WnDOh%PR=78wWHggbqlOA1XCofoyi1njb95i?$7SF3OP!xFkjJ~C!t)0+ePqO_d zs8RZ`4Fr0?J$xHc7;ltzr`OzwJiZw%P@1X`99G^pJ&VkHu<1c1G^~srl5r$t-tXB; z!Ob#IiQ=qk+8fn6$pgxkYgV%SBAK+tC1|j#vIYiK*1(|38W>R4fUA|58CZ#iA!qDa z?4fO}kH>LPC>791sEvS{mBNbZA z2Op)rNHt%74-;6_N)O7C`?rki&??b}OYsg27q(1WdLt6%hZu3jg7=T-T0Vn5BCxSl zKL=y60>ZNwo|ol1nYorn(9wJg9nB7OFyBH4Gl~x83pT;sHX=4Vh+gbhdciFLP1b&R zIv$?(+nzoOPy4~e8Su0pd~%0G%f&Y0RXK=DZNwkvBHm*oKAMC0dmHh^T*Q7Gk%t?+ zji7O~LQ4#YZzJe>Aij;DOAz$Pj{SSIec=B8>c>~#y>(qdYieC}YpS7j)H8YdDXG)X z`;SG}Tzk`PEkA$wNfai3YQ<1p+d-I~`jul^e!pY-{sWHbng<=zmmYFV4G%k}Gk)!u zW<27UCOztyqQ7xWp2r;1JsHza9(Q0DtaD7KJs~FjiC<}%$K#$b!R>Z?w1R?yFO0|2 zrFq=leXs1;v2zz)JX%*5-3qjc@^r!KaTgXH$ET3~cEio*^L?y1il-zNi%pw8eGi`a z5fhG`aKsV7-KU~4oe7`u5vJ@4et>k<;O$FgcnS;4%APM{dgCcStF~4{nlsVHA2DIV z5fhFWKmLer3GS%LG*6hIL?UXn?U-X2b40zIK9Pd15eYqgdOVKE#pBQ`TUGXnW))Ck zE{3Qc{p$~A|!J@k_5(UTMjw>@`qI1@t!A&a)1vp zv^$|+BAt2oW*%)G^9?;+#FtiETTG#1HA@kM>iM0=Q8)U4`#k(-JvTDNm3J6yDUDYF z`F>JWSy@#L)q3NNH@e^qtzaP@|Mi4_rX8AEJU&#rN*ri=?rmSYA+o9Foz9SSh8X&9hnif~2leCZ^)i ze|d03dLzlfn2!`W;Kz?`G;1 z7iS_T(t{dM5#|Yl*;mCz5NGE1`4A|%9r-YJ@=z!!`zVtUQnVwgpYX^?kB701Q*OSG z`Ft2=yqFrHNf_hlkS!E_rm*Fys`7|J*pg(ymQllt6fN}zEs7d1(v(Nh9WUCHQy`!| zf-^M-a-vu>T1CAgSK>R%i_4`?eAI70kW{5SDh&HgNz79MtgM8Yl_s9Od*67Yyu7R| z9*f1l?)D@SMAx)H(bN-8n0oAywpM9e1sa}ZKVhyNEgY^w?OPT7QXuH{?ca|jnS6mT z6++VsCm2$}f=%)15BMii zUL$$XU61+wg;9z-Mu`^M=GSN@c1_LOZ`ah2gf_3Ta#0)MGS&9ALZCX+6Y1Z)StpUa7JAKiS6)N-ER z!yF26k#Qh^^zH4jMJyhMt^!J$}H((l+ovr5G9d_m@m>{3s9C7qa1LSeFK zHbpua4=q6H*}i?dvk-cOZs@l?p5d8GrO$@qvuK|&y|xxYP9*jn0Hg-V5{qxpy841D z8!%OT6MepMDoYd<_4O4MRaX}k`Teo@a->a+Nmh2H=JCLSJ|`3G!B|Z5NVy@Jz@(2N zW;JIQXy`d>Wk``3)2Gj#K7&bD+9gZ3mFR0~N=pk-ffW@ZCEZ6HafHVsd{APNQ%g&c zfWw8=)sSp;b&Zo?vubLptMk(3v+F3noQGmUCfc#%Lr`c*7qw(u5`a?9WJi~aDYygq zje2j(7otYugaH-W2PJcNMi%#aF+FBq>VGeBXz;LV(b7KRg0|694fMg#1*!7Or zF~87rWRlCBd@>der5}QnnaM(z0=)nxC?GuHfhsXOy+Sf$`5qHCAGsO$P#A9}x;V%O|flws6+={`KE!Y;=96@jI@Ai;51q7B~LL zb+Bp3wYX`qYstYSu7lVq@eX9?*c%V#AYXLzO)hEblG}q#+r;O0Zfn;p}#7aY@fUUW=XyyTe9dD$_2 zYKxe7OrQ*{26$K?2cd&lXE{@hde47l)b%2irQzOPz2N``3nzws;UHTse1he^PBgjz z;t!QUyeJYWJVt)~1Nik1qV6DQlhu+Qi2?tYDxZ>;nI`LM7DH}iy=q&{9Yea9n01atj^gTupv zgWzkZxGWGrD>nP+kN?H-JH{9MVcXykHfcYfw{-ACJn+jiKDZHwXI* zp%sx}xmoT*ZCI`$upQjGG|{JtmJIa2IrwI@WT+(S?nb8r7)Z)8Z6=ETBmExFM6~DM=cM*evj)U%w$6|FKNkMH=>B`j{Y&{Bk5VmJb`|1Oi`f9|+8K z`95n10+B8j$Z?q@z6GHS_4-dftYzIf5WjcTHqc2AFz~ zibnAxp&~x!O)bJ)I1ow1$^vD81_B~Rpa&Egz*Hv>i5*mVB@A)<99g?u*Hl%xwDMac zNEJ`8tg9=L=;{K<6}%Lo;z!MiKO!B=1lp&sl@;|PIfwBe;rj<2P0<1$a`vjlzFJiD zT5P+g$J^`c^S=U4RASN(@@9n5bs~wc{x6-G=#Mmr&_xJ%&7}cdL~Xo06wM(YCc7k+ z539e6A`NGT!)OB3d+x-ZV%cLseaa zBFg3J?#{{|C7*^4KRlj;%<$H}t}gy3s+d~wMB-|scLJh+{q@)Jj+I5DY{?+;Bx!<^ zPCgm=8AY;`ja5}zLQBl6s*(~_@=|!mj%sQ3ZrirM8s%!)l(HCp$p4A>3GqZ6s3@qr z_U&`K6AAv`mOzml2)O)JJF0Mu0Fo|ob-XBsMpbafb_@)4y|n`cyYuLO*qDv~p-kFS zDyfhVkb|TP{8NM!pbz=WFZpb2|3ICGe?0KP)I^?EsR{qE_*B~7nf0wdu}OKr8x;qK ziY9XKh7bC*lP6D^vTK*u+tn5C>hgNg>q6H&I51EUDHs?S>Vl7w(lgLRN0RwVO0FnD z_i{YO!iz{t5%Eo)469c9I)@fK?(tKK3*otN%9P2I$HPBH5qey%k`iAcu?O>D9v7>y z{najfnVEr(ob7VGT7t*}=a$OK5ItwDGEb?~Zs z>{mMZTcWBrZ_dX5J(+?*57Pxb92PPR4&k|6(I{W|2kau1Yy^+}(4#zX9$^@XE-e96 z;71;Lq~GgyLl{bKw&#nG0P#5UL@f3ioDeV`+MP%L(F;do zd|^C*>Wq)C@0C~lJ_)a|m_Dy6>pJlE0jB;*_QTXI8D`iBdfT?0vu4klG9J&ADFbK` zL5qfvySu4bwm|sNzxkpQ`%&Mz zarO_%hwa4Pa7`_`;PUl)qhKl;<@x>)$rU9dnoFbT1Z!r4ZTZ#IG9!9>G|?|)e&l=f zffu4*48~uJp%9=DuPQ4pt_g+U<*1`-(058CDq=r9To4jsu;$w}wfu!bwco1IT-C@3 zSD?_zvZH_bC6&5NM~t_KGKCSZ`D%C#vW5o;rKpy{1{SI=UfG^N@erSZP^b_ixn(O> zfMzr*$y>!Vt_r`6gbPP}Gv#68B~ZL!<|&|IlrLO!;O)9lEo3lRG5||yq|>VV84E*^h9j$PmQ=NC_LaaeP#_4tFWd2V zQgfW0gHSZ|_P+AU2`5Yk-56E3Y%i5iY&44zFUTYC`6ARNAMioxisV-DrAAYa$18bM zR4^+g5~V1{3XeYe*eO#A!@K)240QbQ)22-;MNE+fWp0lTGYMYzQ^BB$OqL-%wMDWm zctvS~q!ZPehawKqc=gr&`=e2gj!>eK3FG6(m!a~}G~}Sc0X*m{48Whtc52}Jq>2g* z+W9y>$pJG^-V;P_LYir;x9~2**4}u$w6tq)JfPLM-P^abJeC~zYKdfVrmv=Tch}Tz z-yYU_dbBXUVP*o36~k>F8=$BIN~t&~Ndns2m_)*0TH)YOVO3QjxEmZo5|oueR%Ku~ z^XPS3v+;K|vb{lZLXWyNmuEX>414hPpfdX$!huN8N+2`HU1f|7`%>DSBFG#%AKW;u z_9YFa75GF5y$BImlEG_bC8&iM5v?rdij@ZZ@iU>?WGOd~W;@&e8=5|F|9|V_Te0k= z01G?a!@Q&^iN$C^Wydl#*oT$96RW_u*(IXS7>0+4iIcU4zl>9edzvn_+*nXs2uLY* zy>M}!HH`BWoBSqETbxFt95p;#h$HpC02H1gzqtr7~BTn9!d)x{Z)=cRBIhFWzdvdxtg zBLz0RShps}{VEyY<`GFj2ZR&0d8FlLoWp|?wy`Ip7u$L%FG&abdM1K2+xfhAxG1F@#n>v$gu1&tx( z6Kolgb-mmg%S$Gv>=hMqcFG?8hOE~0=x4o&AbPMUuh-m+BY_HF&Lkl7#3%OHe2Ti1 z0wRVu44r21a3_ zk)@4C|24_@o4zaza(Q;B)uSK4)uiCp4{Kr5xqKtQuMsl}16&Jj*J#r$D{7nLO;fE> z+g#aH3*;)qs1TfuQ|ZaXCCS>RkAvAB{f<}ZO6o}SOb#l6C8I1QU^kOsF<6dNq>jTb zPzbeLyp!YT8&)OA=Xfp5c*XUrqGgP*6MM@GY(|#{ZEbi12W=@U?h?~adDAMft#M_o zKqTD8GPUjET5KPnC`!^r9Ft{<7s90nnOyjvDeI^Cxv&nqNmQ0DXHJjIpN}S1u5UY+ z>py=3TF_(XXwbsC>Crh_6&(Q-9lkfQXx}0HAt^#^!YFFL&VpdHXQsR=Pw2T+1Xu*Q z&4G;0c+;AqM76ntS>T0zh^D*gY^;S9bO1FmdYRKH}ft=QOLtOSOenBY`yDE$+4XwFDxu|L>@eS z=4v_rW|Tbi*gonsS4k6_)Jl-;xWd<=c+x%=v018iQXDO!uq6icy())lCdPi%_qiET<5{X{y;MGH;}1?>Tr8%tcB|8G$5{p zej96EkCvUBfw$Or?znR2ty*q@>7?uIPz1I<-h)ulRN5ne%WbYuY2*YYArN( z`tS;5Z1lp0=H>XVkOTX;38zT*t_69*1@2kqc^J6=@{@0waz=*barVmK0QrHAS#sRR zK>KoYd53HGB1G((l=Ypw{WA)VT|J{(bqbF2A4b8keUi;N9M$pjoGMzM_Lj&FL3HKI z4$_6<@-(Gyrg(YsD3W9rEAO|#eblP@f9YJ;YQ49}-qQ;QEf$R+#Lk<6PES&we%|h~Xa=V0zbMkWs zY&oG?Y({HDnrlj8C7&uS0qD$E4CuvoU(GaL?XWGjx)GkAVJ$9iGP342xDz<&q$7ahd*f(pO4IvB?C zj!2y{d8;BA1*dm!U8I%{Rh~#KP`uR+GE8;;NC99GjNv-SS`kcszXuy|h2B4mGDeiK zW0+ykguM;Ifno!^$45JmQ#T@0;bs)vh+y39t>6oLB;Y{T>PXD(P4HC_DWL;iF}@OX z9miLkuNYq?d=>L0u33jDVTiuli$xM{i26$q^+AaGmj^+&0y{!D+Ty%mB@BBxA{2TA zOjIctQv;)gaLt&a2S;oa_`v=DgO95nG^{mdsQv%ZsgbFXtH)g}YZLiR#ZnlV#M~&% zmzG~zPBXvfRGm|`t|Y2zjZN4~#a;Z^-Hd#KO77CU{Hk9WP0T#!>d29E&q2F|b^nWO zPT+ej>c8ug8^@Wiqs}>qI>&|1+zE$+fLNM zf4~`aZM$$%e`A&YtC&@Zt~Xi*pwf+2vK*zF)W`L8V>eYdiXIIcS-Y{%=_ctuvdI%I z>1#~hP>Vmkm&e^zidWPa@DmU}B;|oAgeov(+@;Uvk#{h_i(Pwc0H6n06avomL<>iD zQuXzqr|C!It@(A*e-_cNU`y>!+T(xD>e^o{jlL|bKJz*h>G#u zk^?-Q*;LT(q{EfGz)Sd2A|?xanZCPl-j^|8?wsEgz*e;WWN*2-Q+g#uj)fyt<&Gr? z%Q&&9_#Mm>2AcmMhe|z%UJ@2XuYTtOhg$v4Xb!FKr7Y|k93?B94KrZw%3*C+E^E6` zPdLQPUD#|nlH48ndT|0dn?#{OP(|iR|w9MD+G}N zq2N?&YF#%PwB5)<`ZzriPhK@nweOOT)?$!^^)oK5pOr_|ss*J0&+5?sHJ)5nZfVDS zSBhpZF489i8S5SOy5*KXA);G{)DqW)Rv&r@oh0C;ZG%j(~ z3r0anCJE5l6;L>HH+8*zb8>eTrHBoQo6z&jTu8E+hdg2M3FpJ2oT75}uVrpBQr4I9 z&m+pv$q?>4BwCyFpicmE?7xive}M_!}rpZHE|5` z4z&#Vz6^Qc^L>zqD!rDntei419dxLHyeib1&CM+7c$or6ise= z!t3mO#(A8@Zv9gg$U(cUXRwddqu*JLNWfmj;`MNmao7Ydk2~m6$pHnTei?((1!Hx{ zE?6<@6dc=((y9^za$W6RIQXK%>~9-La}2OwPbOM4tIk-pmXsu(yM);tIZ_7vI*I?N zVoSlR@^UvicMn&fSmk0xSzeaiCY!4cC{2}TQT3$wXx zaQN&IVZhJKvBCg+K^`p?2I4;|o`_GFagq2yYgk5r0D2Rn5S<#gotFaw>VQV;jufIQ0XAqA>LtJB;0Ev5k2-8{p`YBEo}c7bf0k`ooOsE;nm+A0w`^)t&EFgGG z{R?O^qL6^GeMiEF|4@B{_4TyQb;0YZsV`|}Lo;9;d|JNGio!*yGE)TTH4a75h2aMJF z#Wm&tuW`U>`-w|d8yp33Bh0e*^F+3uf0*9RomAn4y($WDxe5aXv6j&B#bq>yGe4axiM}a{VdmCC7Vq^Q; z*i(O=y|F!jyX&!kUPf9uK!_$32MBexB$1ywTduT6U*(d%YjZ8jZ42%WR9CGxV>SAk zajA9YxKzV9KGyw@J^fruv!dS6veq&D+%Y`p7#_C`RyWG1aX3-yt~&Hry%DTx!#f`I z*5VK{FW=~8<6SCdz;OT>y5VJj`}qbOZ@_tI8G7r24;;Yp9z`c1@Pr2|2k0vyl&bxEip>HjQ`{%~QIBJgeg@hcLeA#|6fytuaQdVd@vjoyGz1sMa=O@~~fzoB$Ay z^?a_b4 z9h&fgDJCx_+0+^VPKWKqky*YznTYPibOD{*Xk<-5GGm@Jib*0Lu$G_} ziXt++Dj0)38m`3Kgvf+&<1Fn_jH!8zWz0@ke-kCsUUY?eQ6l&1+H@dtLLZ2L0x3C^ zE10Rc#THWOYt)m|+c}7|JjIjFQ6r6NN{oyKX3C%$xe*Yib0T44ipy*SYaU@O`IV0- z@$c2IpWY{T%gZS|dlh?Dq-}4j7nKd{^U+$s@tu1ySoi339u)|abtS4@1!e;e)5slH zBaOZRmj~feB-8rhTVl;v+Tk_of1Pe8_u3g|BT}>9yF2%4M1v_Ac zrLnSMC6=x0$8Bqa)L&Cji7NNbu zSKnSM3Em^{M^%-Zu>oeNICxbQZ}P~{t(?%OBE6OB8Y1Q7?X%k12-_+HOEOZni!!J$c{k`rfHC+mZFBQs0j|X=KVM zQZ|7d=$(K{vGmEAww`9x5~X%>m`%zbr>y7m%E3b@Eqd9Q|2(83j!;_Qs`_ti1xEmC>lU*;UYQ?Xl6GTqU;y*N>|PDn69t@}Ae5I>wR{+cCDLsG@kiyzLTA!jjw~E7 zMoqsQdTe=b_7UMLu7&h=nHZVls?T6>|FNfsxt{f_(B^5!5e`rnlMUKywU)xNrw}EoC z{WFJW>hr95#uOjbm+BK4Lwt80mZ`20KBHK9gVoi^d8g=Yvs(rgJE+ADnWNr1Bug$3 zeg`bEM?P9k(@!~^oT52C<@CRIjO+BbX17cQJ1`z9a~Z4w$CM70o2(R!!OHr>vXaX2 zi9rb`e6CkUC8GD9!pY`CF;qV1Pz+t16T{K6Sup2tvbi$HXUnyUAq-up_*Ec&xjpy~ zX8yqa|2dD(L5aU6WmV)=cSs60UwIo2+|m9Y-D>b*(7a{=P8#i#g~&lPn_pUBaW)m> zdYrhzfF4$tw`eBL9bF5nqJ%kcP|EEWI*2YoRP!_l67%1q5pjD-5G&<`qmDd|`v$BK zn(6`TZn+aCd8TiZ@)?1iK=fq%l@<(S_UYTI`icE0TA&wlsq}y1cH=e=11x&nz zY6d6<)0KMX84_#=Zw$%kYhevxpr!%i^?nS<^8!j<3U$eLs7vP=?c2@mXer`mI0_hk zczF~~frqPfhCRt+&Y}U*Qe86ZYIKafY_#I|^GdK-X)Ga&i*cJ)z*;PpdiT^y+)swv zQx{qdxIP0H6rYv+HvjY`r-S94CG0O_5Q0j#RxYL)r3=W1=rT8b(eC^L=PJ?X+fAl%ijLdU zTvYN3{#Tf{PWhh4~8Z&*7cN0`LQXK52p7!0*+MJS(?rIH1oxQ*{lQ zqr&aEl1^KQ<4wI#YFjKYFUBkawNvd8WANNo zgpFSM!)HPEO@wg43^`R0R^#5Zmm-Dk-JP;9{x?eZ8rX|N0m-70{W2DlgK_~adwD3p z5D~jj#MKg@^3#-6I#y{bT|9`h6PXK(G|f(Au}*Ym_G1WDCOYAJ3-UA0b!A9j%()jj_e9m;Gp8ekYV1{9oZGCzp|A$>ZvV)wPu!nDs-m|{SoTgwD`nM78Wh--6w@h# zA|oz9`9$8GjtCL(3-g4G^37OG5DW@poYlD3^`J9^j36 z?3wpsqr?OV2)A${m)R8=CV3;)q5C20^eqP-RuT zF`<#kycmyw8EX>EA+_|f#~hluGbvLZm~)ztKhUxS#Ta%?wl6U|rM^`+tzbb%>a+Is zHE0I&22VC5I_+UR@CIr~#Zg6+f@9grC^#x-14X8cLbWYzS_XlrkttR&xDyK33d}_H zEq4}h+mxb{7H;ph<1R*t{*lt{FYELo$JcSJ{dEvWIRp1H&7LQFg${k%D zl98Yz&J-Bww>)e2WpL9v+8mrt(a(c{D-*GISU>wbaL(-^&X(az2{`gAGuw+KDiUG_&V0HQV zSY3YGh1k0u!!f{G%o7Y_(i*GAD{(GBqz*5CgfBmCw8Cn6pcL~J6Brlj`-xl!Sfmyv ze>`C0*(QO}M=5;#bHWHj5EE~t0FmL!eVDidfiQ2a9V5UbGGj-}A;8@MHi0^r5J4|? z2L!li-$Rqvi-~ub5QewbAJ4|pA@D!L!J#MpbGm3Bxc`6Q;}<4-zDiw+T!XjlbUJd8 zUb!gw+#=)$EUq#K?LAHT^}JealDn&E{8jpMi*oAuH96)xrOuCxSa_1%$Fw>JbA&J8 zXBM91;K;tGw6pK&k7QQud-~s*&97Zyvng`E^$NZ5isbCCnuE9@MTCv}NV%;+?IC+F z5&7;l`s}afNM(fN{_gS)WaK^TtM5zR|5I#kci6OsP)2?gWn}WIpqDFbJXoirJ|(!_ zk2duw#$q4XO4X-W0ZY}V$g7pW4IcP`EvRh#M7&xQA9&y=f(1filTV#jEB5m)L;Hi` zHi*jzX;U9;qN0tr9>UGWN%{5sf&G+R`dAF$?E`B~G zPp^tQ_OUS_Z1mzsQ*IK6VilEQKOD%sS1XiHM3MvBw~m4GTm|JRxCS>!da)bMqdr{p zB|?I_)I!EZ&>DP7_zB4EkqSsR_$vVrpE?1Gki;fHqCm~4CqmOt6~tD&vBHxO=m8g6 zGCTxZiz={430`dP8eY}=2+xCPj*4IH`;Ffr!z;nPosg$|5FI7Y3Ia3HETb)e94ay^ z@rWB(suE#AX2cY?j06QJnom7}o2@5f%5#kP{r~hErJw)&^vmRIJN-m8xJpwCM$|R2 zNK~%bjQQ{ZyRt5`DuR|AwH5n23DlI0`CKv{kGqDxh#Qx7iY`^4i~~&x!HMW z-KSOznu3X4p^B#1Y?|Ox(XI!1h6E7m5A9H|Su7P*42S!nl#b!H2V4ML2SncWD>fDc0OFJH1`mhxM=JEk zB9$~*z_L^!(5*faPzBsrk_UYJ)CN52<5oaTeQ@d^R0l_w=!iz?}fG!KYJj+jMTzbCALU`vW>uu6o|h_5&a4Caj=9qpmV08A~wbdRcKV) z@Uh*3k%)?|cz7@Vlvr75ij>g4DHajnBXO?+X^5^0K#`zZeKZAxKk%ZJ_BVW)(iADt@Q| z$gT}UyS;#zeze`VZXW|18Go=Iyp z_H~(CJL=P12&s>6(hoG<&|Jqfq(oGJhN@LlxunXcri6J5!BVaETyU01nW`0{_> zeSqD4wk!EG!nhY<;eX%nC&2Ag`QL}{qNk_9-I|)b_h)k#;eX%nf0lIJ`-^Di|LL6# zu4Mmh9Q>HJ+!_3sc(Y!9b8^eg(jWJ8@WZHt+gQ^a`NJPqEZ4W({7>tS`!e0}KagFH zXRql9VmA0r9KPp&Umf&+CgWVVWWjkkR8^pj+8hNeDGZjd%PWV!ij%rUJo zXVdc4>>t5q(en4fCMK<3vX-NnxM+DW5<-#YW2+-lfe)KZ_^>C&Lxu6c#d*ymQD3-r3{_3TirkmU&3LjzHy| zwH%3M9XuaU%??^zyhXILP=mzm% z_)e$*4hBQ`fccO@aom)UF&DxVQvm^ml4tvgnyhTfjUj;M-!F8@Y3y4$a$&FlN5Qi?=%Fc`@z$&*oiRn!gJ-4CYnsB=+UeKhja;qK{ zaHWBb560pESM9Vac2JLlx7*?E;?*29khUqqMvId+^y3hW7d=JQ!i^Ne4Z6kAL^OiQ z0!R`QSkgq5!M+j(;MS0-+0ezf7CxX7^hQxQ;e#e4TffZofIV6QP49 z#$wnXL)AB!>MTMXbc-v-cUM!uD@jk?Qx%hDBYLQ`}} zvW0{YlhADs?3_dA(VUUuqHYY9(EI>Rpp3y1vISX^iGSA8!V-q3$P$L9f*8e-%tagA z!l*UzVO>ZDm6oIV!AwA|B@X|0Nr{szQrcj2i-JUBw@MNRAEYg73EX1f#X1Y-{zKOw ze_QwdU44Dv{{QO7SEKJQr{hA2iRO#)rXZjSe%OWxD{9~ zRIHW_8KLASpTHj`p8K(>x?i8w3UqZ8#wVWuo*d$4ZZUR%s#=czpfQZa$3s~5;$r{heEDYcDl-ba>M|GVp1m&1g5C;nof;fbGZs0D{B1 zrFMRId5k!rh&F?n${(zgDvT}#1O;mva?x2 zW;>COLAHZ8E@m*g>}H0|7uo2SHI8G@$(mL&eS3r$hZrGVRXI9`{k4w{`ip15MiTSwUq39)Q9D zH)A&(In{0*OxwT=A0#2U*$fTD>s+5eN1!TJOy3N%cskTz_L7-A7{^06A?{UQIox9bg4u)c10qWhaZo)V2@@KlKHzu_1PL>DDEbJ;Aw~WYLzWCIA=U#+ zM8}oMflM+=o+VuxC`SN2w6d5fLy)cl+4jG*nI(}p5NSCahhitS6f*nmDk$NSpkR0` z+UgyFX2H@wsXmb4{UuMAr%#kx&{sf1?M|iShgkAo02>37425wEe2~A!^8i&OLsJ63 z)V^4$i&}<|8XBZ14b=z$Cv?do$@hah1d12m2`-_n#6r_t2Ofvc!34vkU@^lH0|gDR zCX8tti)TGdco{H=3~lj0Ta*XEyYwuZhGpyX10W^dE>^_f2qjFNq@XDa5H#rgq%EGa z1LzNS%*5^%OeZK%v8kI$ZHzOAQ-ZbNm!^tYrvQz6NlqU^_#hPyM+z!4#P(!?*oQqxq1So4KX zG2&eL3DraYB|`ZLsohvwyOkU~Y4z&{UxbY{sJVGysdL{BamO~q5?@03lhKmE0!;TY z74cZ}X{zfCpq&A$-1{-=>%fpFKtKT)tG@~ z5d-53Ow`^N+1Rn51EiINNK*A;v?>06J3QR-4=F#zNoU(U=$e?O2hjE&`GRr!ZRrB< zaFC-1jXFb?cnCIH#DG?#r|v_qfd6gwg-E?EWM2qt!Vqvz@s%CG6zrLd6ag7#ISBQ4 zQ{8Bvs?AQa-YO3s=y~Y*p>sVB54H;21}lPXj<$*tPml6Lw+q zz~Z6;Z6!R9mpBh|4P@}gf+|=k#muG^H%LC{jkBD0#?XUy7RRx(pp}oPiIg&k(Nm9; z`8_kF$=5XG-~{L4}520Z@FsCelV@QSlkDptWU-+q$DJ69gN9L*E|4T_PlJDCSLA%VJq(2q* zKi(sij{&J_RLw@ zotazL@8Sx}W2C+klpeM_lztDN*DJ*OeE5gb=lrGPdFg-r_R@Z!tn^>*W_2@Kr7P3= z#8-DK9uBJRTS4vddiQwy`@Ia*Ob&{bridu_C!ha!@7#^^_E5LAHOXx)ak~#49^Rc& zi0QZ#*8wnfOK+T~LrizW2rJA(VF%AmuZrW`GVETHMOHHCpq1^!o$TU^ZrPrF4nD@v zwcwT0PT*#ze|O6j+2`N`2PUJcOfwdo4eHWn#jV7%OOUuRvlA@xb2rF(8y$f;$?A!q z{g%>DAMHwTauh#vBN8TmO7P(4Nm@mi=@+q^(r~au+T&`RhRC{A0e%hcGW?povEt=} z=GmvB>w)=v2awPOVM2>HIu~CWuzYB62H|#xSOY-lJ+vxBmk9PMmJ#=ZObr|hTK2i~ zk{yLAf&dfTqdDe46OAN*g8-}i+>W)#p8eG?(AjqEK@l)crvTO`l~j=yZ(yrabW!M$ znX!n#S`wCKI)lSd&ft|GP3_LaFC9YNhu|^5^9^~Z{~kL$X#b&460lJs^eoVHGDoH6nmSZmbEw7rE+BlsV7=i$~G{PqMR;I^US z>~mCc4_GUWBH4suV-t-8unaO zfg*78PNJS-Tk1h64Eu^<-eUZ|?JdIZQ{IXAeaUOZHsqD2SaH&k=;ojSDmDQyu;Q7+ zXgkwGAEF+Nf(gDGvxR1k_{0&ah=OENkb+>|VTpWlmP>Zofmy5ue|Q9M;9!$$P$Y;^ zfEv}{2(KO?B886;X{K|e?_2n3`*0+`z-u3&=s4e!!1jhjc4JUg^!`WbhRQNt zUGsFj|BX-)=J9)@;<=d&QbE2@wHvt7F1JU4_AZ_@Ls8kys6yB!^LGyytn`8+;@tyE zA^xvesmJ}Ru>ZCise>m@7%UMS{Dgm#Aa^vL;5i4e{}C&mIZpQ+7^e@zE*I4wHH63GG#=4g;SIbI)j*I@EK{m;9&o+ z!3*?mbS6#!Ow&8DiSSqUf#P6YiWfu&R#}xie_zpy2p&J1z1{kUuy|aH6QZV}jG8u| zAS(I#t2buaCyaN}|DFkR*V&(cz!~_z1Zk9qT^o5D zMURBVpT5q}XOfHUg-!H&gi%}=l-|MY|H)GO{;EC5eMCVz_WxLmBPL0gbXw|`_y+)b z9sU(e8*1fV{1VgZ#(x@Fl*ZLLqe9pBF_m@tmO>W{K8H^fnQVF@ALxI%Re3GEjl8E=%G*f|yc=aT&>kn4tX{$2Z4?{~Qm1QT9hh{~eRnc3O--KRdv13#4PPX9D z4EeI6EO#K4AI*?j6s7l#RDLu=D#jml(eFoLz|jn;NW#%;*gB#V_)DH4Easqgd@=@qf%p`*#mPK8!>ahpHe|z?2_JK4ug`5QjoqqK3)dCjvA=dQH4;B!8fWB!nR6 zLJx=<7z`R+BFbs-;7C9QEZIQ9U%ChJAZ;N4qlY0L@{-V~i-$-OMY4y1DZ>%+Pz-t) zIq89%1e#Suk&vH4Bmhz*L-7A2@(}KU#uEua1eyXK8E6=jK4RigByGV%Xe|WMDGSL= z;ep=OYZCZq#`91d577`KEtZFH{~wKe41fF?B>1C_^xrGuPd@*j-g#P5DZY1WRAA4K zNsq2udf|d&wd}wx>Q(Svmn)E=Sae)A-I(&nGw`GP%ZU&Yw5(!=s^_BpCL8y(Gy zB~$aSrG$^(7Nq!=LP_5;NlI$@37#)VN%E3?QdLu<)LbczY_5{t?(OYut9O40exa9= zDu3Ib2}5KXn!WGV3-Z!^73Wrqv%SdD+v|+!?G;B}rgieWxL!pNe{i{Xqg$}+Hy#x1 zNgEH7?+|5V{AvPYsrxwc?{C0?;1D(UzTz7Um%<@_( zUP_QucuR&+kylhVU|;%yv|L&tt&~?Cyn93TXc%?_0Yf#TvQFA4- zPbfhx^!7Hd!dTQxBR{FF`=pK{dYc;@rX3DoXCJx9(6R1%U1Pod1J?b7@uSihg5J2w zzPz!)zC!tLNhQUAOU~XzUhP?xd4+?q*L&z% z8Qd#_=>2e?t;%FZ+*f)N3!0Jv5;X!y349!QNf_vog*j&MTUAVqO06-Na~4L1-48f3 zTh!sE5 zI%$7_90b&k3K&t9|o{P0Co_-+yIu*vbK7CixYs>0ANFPBO%fUQ0oC|9YDzd)d*0s z6L>whS#rV;;>^6Gs4(W>4U(#Wd14e9!g=-zU#bc31eL)s-(V2(^lHI8dY0LY^?LMU zv(0Hjety0+d}On-MvlzLo>$Yl`s5d?T{Cahp>c4l=HK=C7QFShsq^pN`R1(!<5K7U zZntj%JrV!2*PluSif}2W)KtAb)f9N@0v-#)HP>R9i3;;)TF^G;EM+glm01GmLckNq zCrb*Zt$m@)T#K>t4+c3rRBNhrGP_KvMQ|5*u0Iu znqZd9a$~uUvas}1YX6@<-FDu#oc%BNsWtJiHl^3;G0(Ibo%Xf6yH79p<=nfr)4u<> zvFp_Q$n;WAjv*@{SIAuPsW7W7OP!ZT<5?h1)K3(x`FVN9wA|uWzbnp7Gonjy!*qOx z{@S(c85tQS_}NgPA1t{(xwzN{B#p@_Ba9e0j3q`g#grmMPHP(K@8KZU%bg)p<#&c> z13pzPxte9mZr<+qyW6*^1Gv*^?T$r@Dr=X))zo~SyyHwm6X1k|hsTXuu)yc*@3;Nf zQZ^gTX0ttOF_um~w7&O%c0_z!+>o2I8uq{md%QPqT26iawawOVpLdD~A1K|Nm-#d1*DdX~GPbYe{A0ro2!tmX~t< z-T3k2%f^q-5-KVyD?fC(ey-CvHtD~4(_*uQCAx>-Y6<(PP348eNOz{>9LfiiRdj0KNz2U^WoQL<`qKW|A*+0Me{f{Rs~x2mZ^qp9`=J`3u5siSNG~cf3~)t7=>|gz`ii^I zJcVIEDhy{};KF_w`Q>S^<)x*KzIpvRU9=Z+#wTZvxa7N2XoH7nk*62~WSt)HWE!H6 z=9!>_w6x(mV2FCv>RDor*{B|E%CwSsm(eCf&&x|2u3}*`@}*;ogtse{U#_B8|qtb|J8J4PgI&Isbpu9coA6mBK6k3m^P(Y5)KL literal 0 HcmV?d00001 From f2d14f77c480d44558430efa263f63fd362b4098 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 17:28:30 +0200 Subject: [PATCH 03/69] refactor Cart3F improve CartEnhanced for segmented types --- src/debugger/gui/Cart3FWidget.cxx | 2 +- src/emucore/Cart3F.cxx | 163 ++---------------------------- src/emucore/Cart3F.hxx | 88 ++-------------- src/emucore/CartE0.cxx | 37 ------- src/emucore/CartE0.hxx | 8 -- src/emucore/CartEnhanced.cxx | 15 +-- src/emucore/CartEnhanced.hxx | 6 +- 7 files changed, 28 insertions(+), 291 deletions(-) diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index 223e56cc0..ab5a48761 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -88,7 +88,7 @@ string Cartridge3FWidget::bankState() { ostringstream& buf = buffer(); - buf << "Bank = #" << std::dec << myCart.myCurrentBank << ", hotspot = $3F"; + buf << "Bank = #" << std::dec << (myCart.myCurrentSegOffset[0] >> myCart.myBankShift) << ", hotspot = $3F"; return buf.str(); } diff --git a/src/emucore/Cart3F.cxx b/src/emucore/Cart3F.cxx index 2989e88ff..7c3701c16 100644 --- a/src/emucore/Cart3F.cxx +++ b/src/emucore/Cart3F.cxx @@ -22,177 +22,32 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3F::Cartridge3F(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeEnhanced(image, size, md5, settings) { - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3F::reset() -{ - initializeStartBank(bankCount() - 1); - - bank(startBank()); + myBankShift = BANK_SHIFT; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3F::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); System::PageAccess access(this, System::PageAccessType::READWRITE); // The hotspot ($3F) is in TIA address space, so we claim it here for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); - - // Setup the second segment to always point to the last ROM slice - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1800; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[(mySize - 2048) + (addr & 0x07FF)]; - access.romAccessBase = &myRomAccessBase[(mySize - 2048) + (addr & 0x07FF)]; - access.romPeekCounter = &myRomAccessCounter[(mySize - 2048) + (addr & 0x07FF)]; - access.romPokeCounter = &myRomAccessCounter[(mySize - 2048) + (addr & 0x07FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3F::peek(uInt16 address) +bool Cartridge3F::checkSwitchBank(uInt16 address, uInt8 value) { - address &= 0x0FFF; - - if(address < 0x0800) - return myImage[(address & 0x07FF) + (myCurrentBank << 11)]; - else - return myImage[(address & 0x07FF) + mySize - 2048]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::poke(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - // Switch banks if necessary if(address <= 0x003F) - bank(value); - - // Handle TIA space that we claimed above - mySystem->tia().poke(address, value); - + { + // Make sure the bank they're asking for is reasonable + bank(value % bankCount(), 0); + return true; + } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::bank(uInt16 bank) -{ - if(bankLocked()) - return false; - - // Make sure the bank they're asking for is reasonable - if((uInt32(bank) << 11) < mySize) - { - myCurrentBank = bank; - } - else - { - // Oops, the bank they're asking for isn't valid so let's wrap it - // around to a valid bank number - myCurrentBank = bank % (mySize >> 11); - } - - uInt32 offset = myCurrentBank << 11; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x07FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x07FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x07FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x07FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3F::getBank(uInt16 address) const -{ - if (address & 0x800) - return uInt16((mySize >> 11) - 1); // 2K slices, fixed bank - else - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3F::bankCount() const -{ - return uInt16(mySize >> 11); // 2K slices -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; - else - myImage[(address & 0x07FF) + mySize - 2048] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge3F::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::save(Serializer& out) const -{ - try - { - out.putShort(myCurrentBank); - } - catch(...) - { - cerr << "ERROR: Cartridge3F::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3F::load(Serializer& in) -{ - try - { - myCurrentBank = in.getShort(); - } - catch(...) - { - cerr << "ERROR: Cartridge3F::load" << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/src/emucore/Cart3F.hxx b/src/emucore/Cart3F.hxx index cb75bcd88..53b71427a 100644 --- a/src/emucore/Cart3F.hxx +++ b/src/emucore/Cart3F.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart3FWidget.hxx" #endif @@ -38,7 +38,7 @@ class System; @author Bradford W. Mott */ -class Cartridge3F : public Cartridge +class Cartridge3F : public CartridgeEnhanced { friend class Cartridge3FWidget; @@ -56,11 +56,6 @@ class Cartridge3F : public Cartridge virtual ~Cartridge3F() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -69,57 +64,6 @@ class Cartridge3F : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; /** Get a descriptor for the device name (used in error checking). @@ -140,32 +84,12 @@ class Cartridge3F : public Cartridge } #endif - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + private: + bool checkSwitchBank(uInt16 address, uInt8 value) override; private: - // Pointer to a dynamically allocated ROM image of the cartridge - ByteBuffer myImage; - - // Size of the ROM image - size_t mySize{0}; - - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank{0}; + // log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 11; // = 2K = 0x0800 private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index e35917993..97752e447 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -42,46 +42,9 @@ void CartridgeE0::reset() bank(5, 1); bank(6, 2); } - myCurrentSegOffset[3] = (bankCount() - 1) << myBankShift; // fixed - myBankChanged = true; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0::install(System& system) -{ - //// Allocate array for the current bank segments slices - //myCurrentSegOffset = make_unique(myBankSegs); - - //// Setup page access - //mySystem = &system; - - CartridgeEnhanced::install(system); - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page acessing methods for the first part of the last segment - for(uInt16 addr = 0x1C00; addr < static_cast(0x1FE0U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[0x1C00 + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[0x1C00 + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[0x1C00 + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[0x1C00 + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing methods for the hot spots in the last segment - access.directPeekBase = nullptr; - access.romAccessBase = &myRomAccessBase[0x1FC0]; - access.romPeekCounter = &myRomAccessCounter[0x1FC0]; - access.romPokeCounter = &myRomAccessCounter[0x1FC0 + myAccessSize]; - access.type = System::PageAccessType::READ; - for(uInt16 addr = (0x1FE0 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeE0::checkSwitchBank(uInt16 address, uInt8) { diff --git a/src/emucore/CartE0.hxx b/src/emucore/CartE0.hxx index 66dbbba6a..08fc82806 100644 --- a/src/emucore/CartE0.hxx +++ b/src/emucore/CartE0.hxx @@ -64,14 +64,6 @@ class CartridgeE0 : public CartridgeEnhanced */ void reset() override; - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - /** Get a descriptor for the device name (used in error checking). diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 0f0472392..0ac9ffadd 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -79,8 +79,11 @@ void CartridgeEnhanced::install(System& system) mySystem->setPageAccess(addr, access); } - // Install pages for the startup bank - bank(startBank()); + // Install pages for the startup bank (TODO: currently only in first bank segment) + bank(startBank(), 0); + if(myBankSegs > 1) + // Setup the last bank segment to always point to the last ROM segment + bank(bankCount() - 1, myBankSegs - 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -99,13 +102,13 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) { uInt16 peekAddress = address; - checkSwitchBank(address & 0x0FFF); + if (romHotspot()) + checkSwitchBank(address & 0x0FFF); address &= myBankMask; if(address < myRamSize) // Write port is at 0xF000 - 0xF07F (128 bytes) return peekRAM(myRAM[address], peekAddress); else - //return myImage[myBankOffset + address]; return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; } @@ -113,7 +116,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { // Switch banks if necessary - if (checkSwitchBank(address & 0x0FFF)) + if (checkSwitchBank(address & 0x0FFF, value)) return false; if(myRamSize) @@ -149,7 +152,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt16 toAddr = (segmentOffset + 0x1000 + myBankSize) & ~System::PAGE_MASK; if(romHotspot) - hotSpotAddr = segmentOffset + (romHotspot & ~System::PAGE_MASK); + hotSpotAddr = (romHotspot & ~System::PAGE_MASK); else hotSpotAddr = 0xFFFF; // none diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index b8511ac29..4bd45fadd 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -165,6 +165,9 @@ class CartridgeEnhanced : public Cartridge // Pointer to a dynamically allocated RAM area of the cartridge ByteBuffer myRAM{nullptr}; + // The size of the ROM image + size_t mySize{0}; + private: // Calculated as: log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 12; // default = 4K @@ -172,9 +175,6 @@ class CartridgeEnhanced : public Cartridge // The size of extra RAM in ROM address space static constexpr uInt16 RAM_SIZE = 0; // default = none - // The size of the ROM image - size_t mySize{0}; - protected: /** Check hotspots and switch bank if triggered. From 81ac7cc56992e425863d42fbd633f492690b0208 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 4 Apr 2020 13:39:38 -0230 Subject: [PATCH 04/69] Fixed compilation in Linux. --- src/emucore/CartF0.hxx | 2 +- src/emucore/CartF4.hxx | 2 +- src/emucore/module.mk | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/emucore/CartF0.hxx b/src/emucore/CartF0.hxx index fc8d62939..e885cd934 100644 --- a/src/emucore/CartF0.hxx +++ b/src/emucore/CartF0.hxx @@ -68,7 +68,7 @@ class CartridgeF0 : public CartridgeEnhanced #endif private: - bool checkSwitchBank(uInt16 address, uInt8 value = 0); + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; uInt16 romHotspot() const override { return 0x1FF0; } diff --git a/src/emucore/CartF4.hxx b/src/emucore/CartF4.hxx index afe81d0e0..5b54af54d 100644 --- a/src/emucore/CartF4.hxx +++ b/src/emucore/CartF4.hxx @@ -67,7 +67,7 @@ class CartridgeF4 : public CartridgeEnhanced #endif private: - bool checkSwitchBank(uInt16 address, uInt8 value = 0); + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; uInt16 romHotspot() const override { return 0x1FF4; } diff --git a/src/emucore/module.mk b/src/emucore/module.mk index e02fcdc2d..bbdd5eaab 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -6,6 +6,7 @@ MODULE_OBJS := \ src/emucore/Booster.o \ src/emucore/Cart.o \ src/emucore/CartDetector.o \ + src/emucore/CartEnhanced.o \ src/emucore/Cart0840.o \ src/emucore/Cart2K.o \ src/emucore/Cart3E.o \ From 27556405d8f6db7c2a0a274748c32b895efb95fc Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 18:29:05 +0200 Subject: [PATCH 05/69] add get current segment from cart for debug widgets --- src/debugger/gui/Cart3FWidget.cxx | 7 ++++--- src/debugger/gui/CartE0Widget.cxx | 12 ++++++------ src/emucore/Cart3F.hxx | 2 +- src/emucore/CartEnhanced.cxx | 6 ++++++ src/emucore/CartEnhanced.hxx | 13 ++++++++++--- 5 files changed, 27 insertions(+), 13 deletions(-) diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index ab5a48761..86d43177b 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -26,9 +26,10 @@ Cartridge3FWidget::Cartridge3FWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { - size_t size = cart.mySize; - ostringstream info; + size_t size; + + cart.getImage(size); info << "Tigervision 3F cartridge, 2-256 2K banks\n" << "Startup bank = " << cart.startBank() << " or undetermined\n" << "First 2K bank selected by writing to $3F\n" @@ -88,7 +89,7 @@ string Cartridge3FWidget::bankState() { ostringstream& buf = buffer(); - buf << "Bank = #" << std::dec << (myCart.myCurrentSegOffset[0] >> myCart.myBankShift) << ", hotspot = $3F"; + buf << "Bank = #" << std::dec << myCart.getSegmentBank() << ", hotspot = $3F"; return buf.str(); } diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index bdce56fdb..861c99228 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -98,9 +98,9 @@ CartridgeE0Widget::CartridgeE0Widget( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeE0Widget::loadConfig() { - mySlice0->setSelectedIndex(myCart.myCurrentSegOffset[0] >> myCart.myBankShift); - mySlice1->setSelectedIndex(myCart.myCurrentSegOffset[1] >> myCart.myBankShift); - mySlice2->setSelectedIndex(myCart.myCurrentSegOffset[2] >> myCart.myBankShift); + mySlice0->setSelectedIndex(myCart.getSegmentBank(0)); + mySlice1->setSelectedIndex(myCart.getSegmentBank(1)); + mySlice2->setSelectedIndex(myCart.getSegmentBank(2)); CartDebugWidget::loadConfig(); } @@ -136,9 +136,9 @@ string CartridgeE0Widget::bankState() ostringstream& buf = buffer(); buf << "Slices: " << std::dec - << seg0[myCart.myCurrentSegOffset[0] >> myCart.myBankShift] << " / " - << seg1[myCart.myCurrentSegOffset[1] >> myCart.myBankShift] << " / " - << seg2[myCart.myCurrentSegOffset[2] >> myCart.myBankShift]; + << seg0[myCart.getSegmentBank(0)] << " / " + << seg1[myCart.getSegmentBank(1)] << " / " + << seg2[myCart.getSegmentBank(2)]; return buf.str(); } diff --git a/src/emucore/Cart3F.hxx b/src/emucore/Cart3F.hxx index 53b71427a..d9f3e9fa6 100644 --- a/src/emucore/Cart3F.hxx +++ b/src/emucore/Cart3F.hxx @@ -36,7 +36,7 @@ class System; $00 to $3F will change banks. Although, the Tigervision games only used 8K this bankswitching scheme supports up to 512K. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ class Cartridge3F : public CartridgeEnhanced { diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 0ac9ffadd..adcd8bc0e 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -182,6 +182,12 @@ uInt16 CartridgeEnhanced::getBank(uInt16 address) const return myCurrentSegOffset[(address & 0xFFF) >> myBankShift] >> myBankShift; } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 CartridgeEnhanced::getSegmentBank(uInt16 segment) const +{ + return myCurrentSegOffset[segment % myBankSegs] >> myBankShift; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt16 CartridgeEnhanced::bankCount() const { diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 4bd45fadd..703cd320f 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -79,6 +79,13 @@ class CartridgeEnhanced : public Cartridge */ uInt16 getBank(uInt16 address = 0) const override; + /** + Get the current bank for a bank segment. + + @param segment The segment to get the bank for + */ + uInt16 getSegmentBank(uInt16 segment = 0) const; + /** Query the number of banks supported by the cartridge. */ @@ -165,9 +172,6 @@ class CartridgeEnhanced : public Cartridge // Pointer to a dynamically allocated RAM area of the cartridge ByteBuffer myRAM{nullptr}; - // The size of the ROM image - size_t mySize{0}; - private: // Calculated as: log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 12; // default = 4K @@ -175,6 +179,9 @@ class CartridgeEnhanced : public Cartridge // The size of extra RAM in ROM address space static constexpr uInt16 RAM_SIZE = 0; // default = none + // The size of the ROM image + size_t mySize{0}; + protected: /** Check hotspots and switch bank if triggered. From ac4edcfc1e25c5739b47ea84a0fd1ac78123017b Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 23:04:41 +0200 Subject: [PATCH 06/69] refactor Cart0840 --- src/emucore/Cart0840.cxx | 158 ++++++----------------------------- src/emucore/Cart0840.hxx | 70 ++-------------- src/emucore/CartBF.hxx | 2 +- src/emucore/CartDF.hxx | 2 +- src/emucore/CartE0.hxx | 2 +- src/emucore/CartEF.hxx | 2 +- src/emucore/CartEnhanced.cxx | 8 +- src/emucore/CartEnhanced.hxx | 4 +- src/emucore/CartF0.hxx | 2 +- src/emucore/CartF4.hxx | 2 +- src/emucore/CartF6.hxx | 2 +- src/emucore/CartF8.hxx | 2 +- 12 files changed, 45 insertions(+), 211 deletions(-) diff --git a/src/emucore/Cart0840.cxx b/src/emucore/Cart0840.cxx index f10dbb7b2..e071f61a2 100644 --- a/src/emucore/Cart0840.cxx +++ b/src/emucore/Cart0840.cxx @@ -21,25 +21,14 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge0840::Cartridge0840(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge0840::reset() -{ - // Upon reset we switch to the startup bank - initializeStartBank(0); - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge0840::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // Get the page accessing methods for the hot spots since they overlap // areas within the TIA we'll need to forward requests to the TIA @@ -56,32 +45,34 @@ void Cartridge0840::install(System& system) System::PageAccess access(this, System::PageAccessType::READ); for(uInt16 addr = 0x0800; addr < 0x0FFF; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); +} - // Install pages for bank 0 - bank(startBank()); +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge0840::checkSwitchBank(uInt16 address, uInt8) +{ + // Switch banks if necessary + switch(address & 0x1840) + { + case 0x0800: + // Set the current bank to the lower 4k bank + bank(0); + return true; + + case 0x0840: + // Set the current bank to the upper 4k bank + bank(1); + return true; + + default: + break; + } + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 Cartridge0840::peek(uInt16 address) { - address &= 0x1840; - - // Switch banks if necessary - switch(address) - { - case 0x0800: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0840: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } + checkSwitchBank(address); // Because of the way we've set up accessing above, we can only // get here when the addresses are from 0x800 - 0xFFF @@ -92,24 +83,7 @@ uInt8 Cartridge0840::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge0840::poke(uInt16 address, uInt8 value) { - address &= 0x1840; - - // Switch banks if necessary - switch(address) - { - case 0x0800: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0840: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } + checkSwitchBank(address); // Because of the way accessing is set up, we will may get here by // doing a write to 0x800 - 0xFFF or cart; we ignore the cart write @@ -121,85 +95,3 @@ bool Cartridge0840::poke(uInt16 address, uInt8 value) return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge0840::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge0840::bankCount() const -{ - return 2; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0fff)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge0840::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - } - catch(...) - { - cerr << "ERROR: Cartridge0840::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge0840::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - } - catch(...) - { - cerr << "ERROR: Cartridge0840::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset); - - return true; -} diff --git a/src/emucore/Cart0840.hxx b/src/emucore/Cart0840.hxx index 87d372f59..af1977485 100644 --- a/src/emucore/Cart0840.hxx +++ b/src/emucore/Cart0840.hxx @@ -19,7 +19,7 @@ #define CARTRIDGE0840_HXX #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #include "System.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart0840Widget.hxx" @@ -30,9 +30,9 @@ are two 4K banks, which are switched by accessing $0800 (bank 0) and $0840 (bank 1). - @author Fred X. Quimby + @author Fred X. Quimby, Thomas Jentzsch */ -class Cartridge0840 : public Cartridge +class Cartridge0840 : public CartridgeEnhanced { friend class Cartridge0840Widget; @@ -50,11 +50,6 @@ class Cartridge0840 : public Cartridge virtual ~Cartridge0840() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -63,58 +58,6 @@ class Cartridge0840 : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -152,12 +95,11 @@ class Cartridge0840 : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - // The 8K ROM image of the cartridge - std::array myImage; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + uInt16 hotspot() const override { return 0x0840; } + private: // Previous Device's page access std::array myHotSpotPageAccess; diff --git a/src/emucore/CartBF.hxx b/src/emucore/CartBF.hxx index 08b54d731..23c51f760 100644 --- a/src/emucore/CartBF.hxx +++ b/src/emucore/CartBF.hxx @@ -73,7 +73,7 @@ class CartridgeBF : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1F80; } + uInt16 hotspot() const override { return 0x1F80; } uInt16 getStartBank() const override { return 1; } diff --git a/src/emucore/CartDF.hxx b/src/emucore/CartDF.hxx index 5b2025285..3c33e8bff 100644 --- a/src/emucore/CartDF.hxx +++ b/src/emucore/CartDF.hxx @@ -73,7 +73,7 @@ class CartridgeDF : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FC0; } + uInt16 hotspot() const override { return 0x1FC0; } uInt16 getStartBank() const override { return 15; } diff --git a/src/emucore/CartE0.hxx b/src/emucore/CartE0.hxx index 08fc82806..7c1fe18e3 100644 --- a/src/emucore/CartE0.hxx +++ b/src/emucore/CartE0.hxx @@ -86,7 +86,7 @@ class CartridgeE0 : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 = 0) override; - uInt16 romHotspot() const override { return 0x1FE0; } + uInt16 hotspot() const override { return 0x1FE0; } private: // log(ROM bank segment size) / log(2) diff --git a/src/emucore/CartEF.hxx b/src/emucore/CartEF.hxx index 1461e954d..ff71b9909 100644 --- a/src/emucore/CartEF.hxx +++ b/src/emucore/CartEF.hxx @@ -73,7 +73,7 @@ class CartridgeEF : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FE0; } + uInt16 hotspot() const override { return 0x1FE0; } uInt16 getStartBank() const override { return 1; } diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index adcd8bc0e..a29cdcb6f 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -102,7 +102,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) { uInt16 peekAddress = address; - if (romHotspot()) + if (hotspot()) checkSwitchBank(address & 0x0FFF); address &= myBankMask; @@ -146,13 +146,13 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) // Remember what bank is in which segment uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; uInt16 segmentOffset = segment << myBankShift; - uInt16 romHotspot = this->romHotspot(); + uInt16 hotspot = this->hotspot(); uInt16 hotSpotAddr; uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; uInt16 toAddr = (segmentOffset + 0x1000 + myBankSize) & ~System::PAGE_MASK; - if(romHotspot) - hotSpotAddr = (romHotspot & ~System::PAGE_MASK); + if(hotspot) + hotSpotAddr = (hotspot & ~System::PAGE_MASK); else hotSpotAddr = 0xFFFF; // none diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 703cd320f..a78b725e7 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -203,9 +203,9 @@ class CartridgeEnhanced : public Cartridge /** Get the hotspot in ROM address space. - @return The first hotspot address in ROM space or 0 + @return The first hotspot address (ususally in ROM) space or 0 */ - virtual uInt16 romHotspot() const { return 0; } + virtual uInt16 hotspot() const { return 0; } // TODO: handle cases where there the hotspots cover multiple pages private: diff --git a/src/emucore/CartF0.hxx b/src/emucore/CartF0.hxx index e885cd934..0d5837066 100644 --- a/src/emucore/CartF0.hxx +++ b/src/emucore/CartF0.hxx @@ -70,7 +70,7 @@ class CartridgeF0 : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FF0; } + uInt16 hotspot() const override { return 0x1FF0; } uInt16 getStartBank() const override { return 15; } diff --git a/src/emucore/CartF4.hxx b/src/emucore/CartF4.hxx index 5b54af54d..d44e96640 100644 --- a/src/emucore/CartF4.hxx +++ b/src/emucore/CartF4.hxx @@ -69,7 +69,7 @@ class CartridgeF4 : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FF4; } + uInt16 hotspot() const override { return 0x1FF4; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF6.hxx b/src/emucore/CartF6.hxx index 2f183ad7b..16faeebab 100644 --- a/src/emucore/CartF6.hxx +++ b/src/emucore/CartF6.hxx @@ -69,7 +69,7 @@ class CartridgeF6 : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FF6; } + uInt16 hotspot() const override { return 0x1FF6; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartF8.hxx b/src/emucore/CartF8.hxx index 23863fa57..29b308808 100644 --- a/src/emucore/CartF8.hxx +++ b/src/emucore/CartF8.hxx @@ -69,7 +69,7 @@ class CartridgeF8 : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FF8; } + uInt16 hotspot() const override { return 0x1FF8; } uInt16 getStartBank() const override { return 1; } From 78fa1a71d28f17ae61c3a381225326ab4ed95168 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 23:05:09 +0200 Subject: [PATCH 07/69] one missing file --- src/emucore/CartFC.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emucore/CartFC.hxx b/src/emucore/CartFC.hxx index b08f2085c..5858ae85a 100644 --- a/src/emucore/CartFC.hxx +++ b/src/emucore/CartFC.hxx @@ -90,7 +90,7 @@ class CartridgeFC : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 romHotspot() const override { return 0x1FF8; } + uInt16 hotspot() const override { return 0x1FF8; } // Target bank defined by writing to $1FF8/9 uInt16 myTargetBank{0}; From 8928faaa17aa9b50169cc6d054c7730102423a2f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 4 Apr 2020 23:05:54 +0200 Subject: [PATCH 08/69] update test ROMs --- .../bankswitching/0840/0840_EconoBanking.bin | Bin 0 -> 8192 bytes ...tgomery, Thomas Jentzsch, Nathan Strum).bin} | Bin .../AR/Dragonstomper (1982) (Starpath).bin | Bin 0 -> 25344 bytes ...ape from the Mindmaster (1982) (Arcadia).bin | Bin 0 -> 33792 bytes .../Official Frogger, The (1983) (Starpath).bin | Bin 0 -> 8448 bytes .../AR/Party Mix (1983) (Arcadia).bin | Bin 0 -> 25344 bytes .../AR/Phaser Patrol (1982) (Arcadia).bin | Bin 0 -> 8448 bytes .../CM/CompuMate (1983) (Spectravideo).bin | Bin 0 -> 16384 bytes ...Space Rocks (2012-11-29) (NTSC) (Encore).bin | Bin 0 -> 32768 bytes .../DPC/Pitfall! (1982) (Activision).bin | Bin 0 -> 4096 bytes ...James Bond 007 (1983) (Parker Bros) [b1].a26 | Bin 4096 -> 0 bytes .../Q-bert's Qubes (1983) (Parker Bros).a26 | Bin ...de Game (Parker Bros) (Prototype 122283).a26 | Bin .../Super Cobra (1982) (Parker Bros) [b1].a26 | Bin .../Bump 'N' Jump (1983) (Mattel) [b1].a26 | 0 test/roms/bankswitching/F0/F0_MegaBoy.bin | Bin 0 -> 65536 bytes .../roms/bankswitching/F0/MegaBoy (Dynacom).bin | Bin 0 -> 65536 bytes .../F6/Acid Drop (NTSC Conversion) (TJ).a26 | Bin 8192 -> 0 bytes .../H.E.R.O. (1984) (Activision) [o1].a26 | Bin .../Acid Drop (1992) (Salu) (PAL) [b1].a26 | Bin .../F8/H.E.R.O. (1984) (Activision) [a1].a26 | Bin 4096 -> 0 bytes .../F8SC/Defender II (1984) (Atari) [b1].a26 | Bin 16384 -> 0 bytes .../F8SC/Stargate (1984) (Atari) [o1].a26 | Bin 16384 -> 0 bytes ... Havoc (1983) (Amiga) (1110) (Prototype).bin | Bin 0 -> 16384 bytes ...Decathlon (1983) (Activision) (PAL) [b1].a26 | Bin ...obot Tank (1983) (Activision) (PAL) [b1].a26 | Bin test/roms/bankswitching/Sub2K/Harte32.bin | Bin 0 -> 32 bytes .../UA/Gingerbread Man SEGA-controller.ua.bin | Bin 0 -> 8192 bytes test/roms/bankswitching/X07/x07.bin | Bin 0 -> 65536 bytes 29 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/roms/bankswitching/0840/0840_EconoBanking.bin rename test/roms/bankswitching/0840/{Untitled.bin => Toyshop Trouble (0840) (2008) (John Payson, Zach Matley, Bob Montgomery, Thomas Jentzsch, Nathan Strum).bin} (100%) create mode 100644 test/roms/bankswitching/AR/Dragonstomper (1982) (Starpath).bin create mode 100644 test/roms/bankswitching/AR/Escape from the Mindmaster (1982) (Arcadia).bin create mode 100644 test/roms/bankswitching/AR/Official Frogger, The (1983) (Starpath).bin create mode 100644 test/roms/bankswitching/AR/Party Mix (1983) (Arcadia).bin create mode 100644 test/roms/bankswitching/AR/Phaser Patrol (1982) (Arcadia).bin create mode 100644 test/roms/bankswitching/CM/CompuMate (1983) (Spectravideo).bin create mode 100644 test/roms/bankswitching/DPC+/Space Rocks (2012-11-29) (NTSC) (Encore).bin create mode 100644 test/roms/bankswitching/DPC/Pitfall! (1982) (Activision).bin delete mode 100644 test/roms/bankswitching/E0/James Bond 007 (1983) (Parker Bros) [b1].a26 rename test/roms/bankswitching/E0/{ => bad}/Q-bert's Qubes (1983) (Parker Bros).a26 (100%) rename test/roms/bankswitching/E0/{ => bad}/Star Wars - The Arcade Game (Parker Bros) (Prototype 122283).a26 (100%) rename test/roms/bankswitching/E0/{ => bad}/Super Cobra (1982) (Parker Bros) [b1].a26 (100%) rename test/roms/bankswitching/E7/{ => bad}/Bump 'N' Jump (1983) (Mattel) [b1].a26 (100%) create mode 100644 test/roms/bankswitching/F0/F0_MegaBoy.bin create mode 100644 test/roms/bankswitching/F0/MegaBoy (Dynacom).bin delete mode 100644 test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 rename test/roms/bankswitching/{F8 => F6}/H.E.R.O. (1984) (Activision) [o1].a26 (100%) rename test/roms/bankswitching/F6/{ => bad}/Acid Drop (1992) (Salu) (PAL) [b1].a26 (100%) delete mode 100644 test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [a1].a26 delete mode 100644 test/roms/bankswitching/F8SC/Defender II (1984) (Atari) [b1].a26 delete mode 100644 test/roms/bankswitching/F8SC/Stargate (1984) (Atari) [o1].a26 create mode 100644 test/roms/bankswitching/FC/Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin rename test/roms/bankswitching/FE/{ => bad}/Decathlon (1983) (Activision) (PAL) [b1].a26 (100%) rename test/roms/bankswitching/FE/{ => bad}/Robot Tank (1983) (Activision) (PAL) [b1].a26 (100%) create mode 100644 test/roms/bankswitching/Sub2K/Harte32.bin create mode 100644 test/roms/bankswitching/UA/Gingerbread Man SEGA-controller.ua.bin create mode 100644 test/roms/bankswitching/X07/x07.bin diff --git a/test/roms/bankswitching/0840/0840_EconoBanking.bin b/test/roms/bankswitching/0840/0840_EconoBanking.bin new file mode 100644 index 0000000000000000000000000000000000000000..45dbbb187523162e91b0e0fa4d58741b76ddf296 GIT binary patch literal 8192 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 UPn(qT;_m4i`tNytU8C>+0OeP54FCWD literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/AR/Official Frogger, The (1983) (Starpath).bin b/test/roms/bankswitching/AR/Official Frogger, The (1983) (Starpath).bin new file mode 100644 index 0000000000000000000000000000000000000000..f074f94207b79c3748c34865101f3cc3438d4d42 GIT binary patch literal 8448 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 PcwY8lAIts|(v@@M literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/AR/Party Mix (1983) (Arcadia).bin b/test/roms/bankswitching/AR/Party Mix (1983) (Arcadia).bin new file mode 100644 index 0000000000000000000000000000000000000000..7a05916ac8b0b286970cb6a8b4f4c1c4393e36a9 GIT binary patch literal 25344 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 XZ~c>fPt>1$ZTCU`_h0Guf42DFTjj3v literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CM/CompuMate (1983) (Spectravideo).bin b/test/roms/bankswitching/CM/CompuMate (1983) (Spectravideo).bin new file mode 100644 index 0000000000000000000000000000000000000000..564751370394bf105dccb4c69e0b592bcf18c33b GIT binary patch literal 16384 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≶@7o6Z~TOgZDDa}+u)1nUA*RGXwHAK(n$J*1Vy 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

4^b3RckbCyPR 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/E0/James Bond 007 (1983) (Parker Bros) [b1].a26 b/test/roms/bankswitching/E0/James Bond 007 (1983) (Parker Bros) [b1].a26 deleted file mode 100644 index e6a845bb793d87565aaad6f86fd0a1107026bff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmZWse{fUBo!|HLBtKdH@vvoE1_KXpE*2q!!sQYr@en7)y_l*OhC(LSc3NF0_Ql-& zL9cDv$uOWW-Zz0{v;+N`lVIIH)1qhA+#bXXV|K)vd1a+}U$sJ{EKCP-AiF776w` zea2Ffz;`>G@8e)^O4&1fhrZq6+<}9zdk(kC6O5%u_a)m%u%QkISoyB;%!)Z95UJnh=bU1y~nIh9VGM>^+#^b<^qgL4X zQJb-n=CMH{uq@T#tTRr~CzX+wb3N0MnOOfv)5c<=I!|L&{yIZT?h}RtY9R@IC~A@` z&-a{*jKD!^O3|I#llU$f*Udm!H&NZXwUD$*7Hb`Dr6zgR1rm|8UVZnfM7S!HSkW@fy~Q+JOk!YI!zN*aeRX)EwWtsYNl zHhdZMTMs5$A1ENTl1TizC0Y^q+uUBb|7>o-BHx(wAWHlaPevl2P&=MdE|QDZ5Wc8f zf~}mvC#OKqZFI@-n{*|tT*j?o1gv?*PXdl+2?tWjn^Yig(gG4_F2TE+m*d^|w;-E_ z!Zy_xr*m*B54UPta6%LDrwZJlTv9G8ZA!c1SH_iq5>tM!{D-nfQI()}2mcNp(5dYu&h4`ytk}CAdrbG49j0;X|4kEArHZh<|YDB;Ganz$D&1_|PQ&Er2TklDUX~ zee|I)4@QbhcT>t=6cxai!NC+WMu1liC?O@R+ySu|ntnbB{ND7!;kV$@{rArSl{bn) zqC7Q0TCFv>)pK)#D9&Q{EQhBh8}Z{2Esgyi`zWj$=4lXV)kscqkThWqP;U-|k}y0z z+)mn!+!roUy&P+Kd4+}Q3g_w-PWWG~RW6$UTe3g9>>b-XTRhMwSzp>@^K9{yCJ*Qv z-s#)yS!piwoUAsNHEr}j@7cJf+Fat<+(g=(CSz^S71F8K)79|WIUMW&;}wOGaxkUz zz)IS47J$hc4&pcL;jGe=QVxR8@;KNsD~soPW^+939Ztb0CT;7Z`J_wFH_C^*XbDUM zg&hDi5!TiNBD%c5(9#Dt&;rJ@Z1D4pl;5r+Ze!-CnW}D0k*5eq(%|N*L9G_mRC;Gv3QY{}KmtTOrQu zbru_9k|fFSzTv%WrgKqiavys#pCn!qF&60E(ZXaT85!<2%<#`Ks6+rNa9z7@rWG)4 zPx^`9CFqub1;Fw$fTi`UH>XgOCo>x6$BxI21Dkws;x{7K)ISD4gn1~iD0a+M5$iWf z^&)D8$db-Q7T|XtSH`9I@F8+Y&(a6L2M*1Hsg$9T7T(7wAkO%1ay;2C7mWh87t<$z z2@kJ23=9PlmC7IxL0}?>@E=$V`Jm+^*d)**;2nsHM70X+-Y{aT2A3j--04gP z_vNORzi#T2ga$9HwSl%cZ`c Ixzr?6sJWMb=k*G2a$wFatjTkB`US0PI~#rBYj* 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F0/MegaBoy (Dynacom).bin b/test/roms/bankswitching/F0/MegaBoy (Dynacom).bin new file mode 100644 index 0000000000000000000000000000000000000000..5dcf295cfa57250b22f326665fcca19868fcab6b GIT binary patch literal 65536 zcmeFa3t&{$o%nz6yeFB=oy;RILNXW>u&vM5Mw0t#<8pAKjY$wOZ}ZZK3*G zV~Zpp7Xm5)imh#_O|wkO(1*~+w%ckAD1lIf(W_gYd5Uo z`QR03v0~@eRr%O(waNczcw8y&75H3*P_x%D%0`C=~UJyB{m%|QSKiqHT_gU zi7DMY(>yEXG~K4le4FX$a>SP%O17sgb5d%+jGG~|oQ9m;QXKDlx9DU4RDTi)UO#e| zlT3;J(#bJ3DW0O;E#2)Y?e4a1=@S%HLPYT|H3Me5R4t|5HQ#a9?T%FDuCF*!0W)S+ z5T(YfHkYK@O+W53(=dansJS%t_hu(qbl`WVxy(G6y4svi`wpbE?#!YU-3J#f@6!5~ zU$wmC2CZj#`bgi3o)rTJ)32B-Q<>(}ea$I7F_1AG$@%F?-)ndDXVS*^7C5Fk`<-b| zGBB+@U7E6*Q$};jLA360yyFlt-<`^sLDQfnzT~pBC*?Lv(k^L6{0l?f4&ubWHq@;x z3NAACEh_1DipR=BiT5Aso1gld#^23fXM6O_-zSc;!`)GysY9lfy4D<|8Hc*H)Ujr% zUci)MQw~$__DCFuso4$|(Wh(R-&+|(Ud)p_@_#{DJRwxy3yF^}nu|G?@hiTkWI8IWTPt5rtZtdvx~6vko@E454Lm-r>@O~ z+hx?`svyO*bRAD!mJ1K6a)J_`T-LACRdiVVw^mm$KGP!N*T+R9iX$6^_5`KQ$5RK3 zqd2osyn{r!&92gD>i4;5c9m6;IjBgjold92;lS23&E;}oyXCK>z>#|`(R5uWGWO|2 z&b(#bg1}o4_%DY5bMqwQ^#*)ZITLpKd;zcb&M!azSO3&9W(H;sEN>5l;w>|K#gK)v zG_9&iezs|{4L&EE|MG^uPJ!cV=JQ3P(KB*p>C&aIzPfbj9e3RE*MEJ+8B?ZAU5nYb z@A~VnpE9MXX#r;S>Ml%O-S}KcN5VVqSi1BhA8Bat`TYKplASxJVs`F);DJe)i!c5b z=DqK&tbFG?Z@&5F#~)v{YE@}!=)v6^1TYvIE$DD&__S1!$1`QseAx4!MQS8VfI zrfr5(tN+}=tT}*D&iY&)-!wjb?AWJ`Z_2yYJ5XfofvL)8$;z2rS}B%Zy)r(jVTv*h zlj5}B9i;uEubr^X3-z=g)7IXWdF7RV7L(C3nPKr8)kiZw`N_YD5kK1BHJkRgJ-FL8 zQ-<>}1~$s{wiDAfW97&520vEKLZfNM3_JeF@X)biL&GDywT)z}cjAlh`T5V^^F?_Z zVIo>1ncYv@W;gX4kRmWLa%>}Sc5Z*D|6jwn`TZ&V{~)G|-)Z*$9~^&~(UD;V@m$pf z{%ter>&M>3@h6TyH(1W+D>IDh`We&b%^ex;7#Wq!8Qwy^XxfY!l!P%l#nfhvjo|Lj zNLwFN@yAsra~$)V-z-_8PntAm&hg{p0}I}Idw1;IxpRkl?C9NC5Hd1Ct1;G~nBmse z#>U3h;gPwRk=HWPKd%X3ELBNO>*@+&)?3y+!y|L&O`lO;KBG;A4>0D$6lATO%2WC0 z##?a=`#m>yGMVu+C^u>|nbS?5FVP7lss1%JbLhN`H&;%3ehTD62YP4r+W(r>p^(}_ zpY>e1-+zOkz9rSw7hinC4VU+KbcD(eg~iODy~iaT>+`wxl&`qzs*is3AO2xQ`Kep@ zm*AUR`N+Xc+6l*$_}S^y_mP(~mgg=j0~6Ll*RL#0qgk5OD*V4Nh*~pIGMWDtIRN}y zF-!ll1@{db^~P-a7(;)`$azjZ&s`R_U)=D`hx$F~hUA^;()i(T_n(oD5OqP~i-Udh`{u)LJIn>91k^1Lqzv+K#BV%A31pz2D!1hPE3P0&!z*>h z$$7@JdF~vSXKK6DhWsWTf{j;Ai60P-ey>&7I%%@jJxS{PvPz&y0w?cDt2sH?oP&O#ai+pgXHL5`2nUU8x5JlKeSm%~P&u+I=Q~5d&v$#x8s)HuZKz<>~0%lNk z8Zm;YWzv`ynB$#r-`~mAu#my0Iwe$x;3DQbAW32HLzbOOcZon_(G^G=yj>%y%Mw=& zAyE6@f3gx^v5MK9l2z7=jT9gj~|AcD^+LCS3^K#4j1MU z7c%%+s7U_B6XdP;w;=Eq1pWs@;D09_mG4lY>kZv$wgGIbmX5 z(Bsgx%Z=66uCj^mx$r#`1Fozj zSomd+*XEQm$E<^ynVH?Yui1UgGarWw{q?VZedRUR?9S8$<_%>sBPVWN_Taa_{ptFV z5!bLaQ{){S*btr zu3HZ7Jb256<$f4JcyOd3e@y>pPSyWgKR);4pV;-}-aa@Tspp?t|G)a`{P`kLnm>QR zg5lvQQ<|Ga-qhSYWs0VK@r&wS1w_{f~y)Re1iQ+8$K1cQ`5dFpvN3E%kqHBEBMW=gK%@EPyhvq$*d z=bqEFhK9+LUwA>Xedr-gTeeJPh_!54aV`SGF~2`3e|dA|f4Oo`Uv4m7?(k;y|6f)< z$(5(KCoJrnm_q(vFKX&Z{QvGuCh=hUPZa^2f{PD6#>V_fOnja%m;GtWt9GrecO<`? zF5mmz^$&|S+xzdR0%iyTD$qu+~+56v)y>})bGW|+dz!eWZW=7%cLn*IWA?&qT)wd(BKfG=mlv5sg9^YixvZq5nM>v~3|Ql+T(r&Xz{l-hhQ zKh5S+md#~XzOE|OQ~A28_g(p13UXC-4drv)R|J7w`MPjLhbuKKe}&bbnI>-QOrUDLB*tC&vGF>1}dq z&F19D_R}+Yh`I!#&*s~jeIJ8p_I+$jsrP48$qJ(C-G;DR#+Z}*q*U6z_dd|WGA7jb zQX9|F8|w`mZdxnr_0T1>+#r2uHWxhj?$7chzv~& zVC)dvW)o03l+;|M@pye+&Ea=w&Qho53b?eqM@g|qS+Pg3*u&1lraRp1tvDT;=7KbK ziNN2@&*{)hTuxngX;4XSR7g-cA%?@@686JRLZ)ycByqXyB-uQQmblY?ZEaN)m9kn} zpMPFxsfaSqKMx_bX3d%xUwq+HpZe64DPFGtMkwUw=EaN4%U7;kwd&q`S73^Ffn`VH z_;In9ESWQB&z>9|R$jhmPe(_7pSinx-@eN)|KJBd_@NIa5{Z5LB(D`KzWGi2Df_(B zr;B~Y8MU>i-JsKsIA>7WGkdo1RkzOBvIV034x!vTI<{;nFPC~qy;rOV28C#KTyP<9 zchVVCrW8V@w^zoD&6)M~s>+_x&>+tfC#FtqZtm>dx>feSw`{rp{+{lv>1k@Z>87Pi zmn^Z%yW@@n2ZY93xNz32$&(Kp7{C85yhJLMQu}Eg9nbB7-w2hL(@h_lRK8`4l(cD+ zRPeRXu(%s$D)ARjx>wflwAN+tyhrjTJ+iw?5f&~k1y;WlE+ovL;DNtLR15|f+ZS8^u zD_8#PXQQJB4)pacSkQXwOw8=re}!pn9T*U33=BxahW0GPnC9Ze@_g~d4}Z9$!{=MJ zOvYEpC^Cn;fL?Nmx>Ed$>a$K8e7G`u~FLARMb~37Ti(Rw6+Qtl{3#h_s~OR`6)>| zdGelz7I#Ye%Px~PEM6?5(jJ$%#y6i0G4}9>6ZYVkH7hYZJa?|7ZEY1>jhd?!w+g!| zqbC>fbK}wRL=+ z(oeQd$|E+dJEmu{CFo%*fW+Cu8VufBS_O1VcA8G&f&<`L=Bz{;<@vvvaKP$3{UOuG0QF zgHYZjpZ~nT;R~O)wRG&+dhWS`=VkVYJ$?Gpr7Ktd>%Sg4B#;^$Jm;Jompys%jveE1 z)siJk*R8Xs)NhwAUA-E8o~-%nzn0XZQY7~8e?M`e4Cxi@Op8X&C6~PKeeZw2ErGcB zVsv#r^7!MTt8>*=_ue}=c#l*=%sqpHn>LxIX}@)B-CA1<3eUc+UOhhM)~(cLX=kSd z@7y^a8q)rSciwsD>Qz7b(V7qt*wGJY}48*Fj*;RXPqFO@pHrOV0(R=GiQAN z-*i(hkA(|wx{20(^rIg|T>1~}y{{0A^;ds&>#Z_!ZoT!HX9RO8p;Bn#L>c#&T_*Od zSwlnP+b{B|1q+^kUhKiahaa9i`OGt?Oqq|T-{U%Xi1iL4yuWSK|4_ibH> zb3SwhePx>~u6X%?^vm|`Vjp-}e3$LmrUD;+_+9Ukb;2I;7hLe^TR;t0Uw56@pZ@fj zv3C`O-F)-Hg*N_G?O*bZZ-};+nA%!FjL*ID4uu~#ZajF9p7RBRVjD&dzsd8q+onyM zcEg81+~3c0T3?^^RVH(~{J)Te6918xcW3wicegmiqrkxbr;GRh?afc<{+;MxZ)4|B zw9-v;k+}oCb=`ab4QVS zSMh&D-YQ1UM>m+Qtrz5u+(|wDe9bDR0yXo;=UuMV>r3EalhYO{FLQbAIrxx7bm_aHGM>eg`AH0 zCvebt$pf5_S!}&sCDKWhz9OH5Y&*a|e)@u-#LGw0=aRwVT$RnuQem?%S6y?9RMy;@ zLL^FUst_@@5P!4TXKpdKn!VtLe!=;t?!l*$+tZblWH6R>b0a-(yEY|O97SuW8bK}- zma|A}{UHff(IjvzO)v7^jmdR(K=QtRH$9oUcI`B0)eXA&%j7S~B{ZDeSat0t^WkLg z4VwATQ!Oaq#FM@0Kyu^eP3t{9o6Jp%HWH`tcPh?)JB}+|B6C{_tTxf2hs=jL478oJ z?&PL~^Oyvho2<%p!^wxMuH8uP4@vGztM+T_(l0+n$*%MiftppG+$bo=+-T>L7(SYO zxM!oeaS=&+dd=QN5B-HI&iujkKDX987z4%Y{bj=(xKisqL$ZQpF|1axyDT{kcUSzD zR}(9Tvn!+bbXLX{uO_}StQNK0%2>jhq4JcK@!sP&Pq8vSLLs2g*IgM&RjwArQqWv? zge(*KaT2_ET-HU8y(}53TvW^a;0T{u8xvEG$17h|D|PBP>)m_DFO#fw$;E6PIBXck z|M69vtd_D?R!Y5dYo(<9qMf$8v|y$DL+j*a!_4;g0oqHlvwd=Yw!iJ9**<~!#B6U# zZZbFLW-=q6c`ws>{KC39zXq&IZnoEeFBh%>Me%#{@t4a=tX7_6!8&{oFUoh^8j6nF zaBkPY%Zh$P7Ar4{Rg0h#HJLVpUUaiRxmNago-#M()`7_<>~-MWjVYpg8J(-rRaLb% zR*jDK_KwW+^o`CX)Kgn4E|14EI@)*LMRmcEQJf>ay`!U&78jxCop)YURUpu3`^}w; zze+n#V$2;6z|-ab*%(#{3-|xW9n&K8P2T_i4_yTS(k*7(51>vCPJ46s_B_YgJymUJ zXAgg?lh^SM3(fC{)zTd-3{xB3@%3_q`hzT4E>7vUn-8Uynj1Oly~y0e^7fV7@@8vO z+lR=>t%TfA6)(~;&mAHsY&7*?JUEzotU2`&o3~)0=}dKz{dZONJ!C(UdNzK@V()xk zVSIM3MY#i_yff88{LiZR*Af4<)U~IGKbnm%)jyB;(^dS7RQ!|j|5bD9>Vo(K#6O_o z??RO62B)K|AYtzAR-{hx&lAG4|3z+p|38} zIy!LM@__97w)AtU4=HVa>4o^SR_f8_)FwNZytqL}+%SG>z4i7M1m1$cTM&2)0&hX! zEeQOtfxv$S4WHvN{uEv3C11Vgo}d1dTPOOrZtduheP4T{S8JcC1&vTh^n~nP&c;UB zOU;_|LLs}<+%s1Pc@}o=nE!vV{fW0<|&D&iKf7cC}aEBkCmW3m0x5X>COrDX$*#2fH86YlDVinwzFEVeh^D6Na>ozs=XFg@b#)i2z2YfT zls3eqNf*}DaZ5qAo3oE<4(AxCI*3`kSnc(9bb2{U-#b&8-t4|V&*JvWe!AM@{~4-9 zZ1baBw4kYJ-uQZa#OK0K)T-i*whtF!?WT(f!s zz;1A;y?y@t=byJvpNIyJXvXZ}#6teef<3M;zBs=xe*XEQ^Hp9R0=yD)@VR(=U?3jf zxKZAU+x9>2{dD<%_t^e_{`~*gl`C1WXz7#B|HuDk>+c^Gvt!Ys9da_~ z4YMo=ES?huK?P1uz6EJfkTZQ{Qzo3jVK|LTed_GnP}=2eW4nsYq7l4*eCfmsc(RwK z6yzw*oc58p~=z;~Kt@m=$?i!+vOWiy2 z>ha^;l+wnLK1@75BO9E@MYv9<{c;wxeq7#~#+5#q4EMj(*XOdeBglC^!c>uMMQO5O znIi8$>haOZ)dL?&5UNkm5=SNtDo0aS1)htPB+ujX@6l} zxh@)Loi~HqZ{%92Oolt3m=c=Pm@!YTrxDO(WT5u~;C$lt-n{!1u58ZPPLwxY>uvS& z^k$UZIDnV&&9=6=*0F<`%(34y_G$h%jpq)HjNDeY<3J{}`}?D#uZ;|k9C}XEf{neT z?ae5=QR%kxUTjWoKa<_dbyxMZDyp=L7K#}DH)XZkbI11O+^i=T&eP?=!wZDH9*?WQ ze+H!&yoyuRM*vk|dWWSeiY5l(y^K<;vC8Kf-;R8yzyK+A_Oc^pzhSgxc6Umf>L0ZB zkb^2MZ)usfpo@#9q&P4mb8}=w8}5~=3|OtLt*FvAP3QI`@fc@%+k1P*c@(^${6F?4 zw+YD$Ig_1jXuil9ZVh5*oGBcMW4WHxj$)vym^~m==L;5>bcKxNEIfj|dM&10Q*CXNOug(gcmLD) z#HV=6ccJalTmohf7Ja45P}E(9;p=QZ*SB-3vCo*g(|2xjr(poz0gG9F%;H~WJ9AxS z&$tALGC}5zog>NnsVHJ`)O$7yBbGID%(KX$kV=7{06xR{@Y$_%Sr-(Fosr30cwuJx z^d>IB!pP}yi|Sl>VL`Gtbe`0H%{q3=E$_Z47IV|fv>v=2is-{?CFmy>oS=WncYmlk>P=Y zJP0dzD{@K|3XO~`!w{sy{cb$iFHnSl+c}V31Z8_{qvY{L|T%wS2k!kJU)`8g=$=o9*@Xrn+6bc5Q#I z?GvB7;2jeudK8q%YW4p;cI?>iYk#loXQyjrJL`6R;@<7g?f%J4-`ll&*Y|I>n{WN} z7u4^;-8+}5#*7ui>2}5t#SiqJ-u#zwmrJbx!@z)j8IgPnjlgkWV8EKo(kQ+3B6C0i z#!f8GH|mO95o6CR{1x64Pu>;Y1+NVZkIZ8zc)dISgLtQ~@5Mb<_#bf8W1t8H#VOd- zLJSBjB$=QF0Q^Vex_R?1yX>-SuEEOgwyHX0={z;!z)JN^=e4u|frrF=@{{K^)qC3q zEVfL`%F14O1*@v+JZqp`B^79$I8oFp$dk{0mMJn8Lz+EiY+t$S0m^R1ZLPBzBu+); z3=at0#mt`FSY;=m3&wg!(>Crpcr2UI3?Y%lFa*Z(2DWqDEfo?ZMW$M3+zlLc+O{$H`r#>g0QQX+aOw7Z~ej-zi`{UIrDCF zyf*sUsLcorgsjj@^)J^S3>~aLSfA&0)=`}N=jtW3YacjwV4%nkD#9KYj46p-XkHIa z#r{Gg8o@EcH1IkZ^-v>Yrj_Mrpg7&@y%*Nu^xdb+|8ve%Wm>rZ?=C9lr2T)w6Z@?{ zmFa)8_y50k_{~(@e_ch#nz5q|IaNpWzq(PWzxxMrwLdzKXyBEO>H1e6RvL}(L&Ywq z>wnQWUH|tE73lgOK9p!5jPE^^?C1|I_w~1|FX_K>xhH<>5Z-7Wt~wn5;vsbeAcz}1 zMIXlpT&4qM#|@(Q808p1D0>XRhXVep!-;?*e2_-lPM(WUaeV0rUlJfU zIR@~zs5X+i+m};qEWGlcIQAg`9QKt1%AqGF4;Ehja0Ytj>$u=wUHkC5`sI9NLKL9S zq3*S4o{9o=l_<`M`tt-JvI8xWj>PZen8V_3&yRQB{lvEPanWW*5xi!-b8o+V6rx{L z44sL04A}~XVHGAy;^z)YC=XkQPy%$c2US3g3g9w|F*WiF6ORs2&L6J>_z83XKe6|b zF79FY@y^Zt>5?w}i6<=A-A{CJ1;Z=7x^+E^MYA1DfTK%Caq=GY)t??J)&!)*=#m%e zkv}bU%4z{BeerIsOZ)LNmWzV?_n?H`fA=$8`o4ic`X$S)#zCRt;iC$M057q7NHjFN zt5Ce($t*yr+le~;+WyZif7`SfiGMtdO18Xame)?p$g3m!TBcqJd33pBTATUH?vf{d zV7ci9)bQ6P&N|$4=iNU@ruMGgONQ%GhZ#L9?a`AxWA6iP(P6o}DB=$vPSvBR(OTE>(*T2iCq&X4rRdk&jlUig*x2GPj*pcUVRicg@+vyd;D z{QJ`yp?5D^)!BCkS|tZ^amK=*8y|jh22YHSAWB4{a3UFiJUahRw5XhTMCY zb1HH)1jkC6)Lk-G@1hjB!yyuplOig`D$ax0sxt`n1-;Ii&2JsEkdIKMMI5)vLHdA?h#VT7{@P z2m>8;N1|@*s;Hsq8+8=~2RDoJV58-zDT{>45ge#1&yTY$~-DNg`P~i{j zVJ#GN$4KS&6SG2(i0$?ZQ%WI(>S4FbP4;1TIG|VHV@TneC(QkI#EeA!;fT9T4^jnE z816{Oi0BpWAhoLS2YrU-a!1@HhSQKj1BQeAZ4;P~b4gj^UE>b(aEHT414@hvs#)W9 zgmpswWqOv+H)2skMJB$3QiHlf4~P8$CpFO#DTIxjK)?YwYIHpaoU}4`z-NT@GCk}y z9D!IQM^Afo{I!tVPi;d6Q8fp7`KV>Ur;~p`-C~iiXN5bEOPckJhDC4;eEhT#AeHET zuh@35(;o&(PTez61ecDm8@E6v8>&ZWRw&HPZ<@m$u9cdE{a(X0(Wy(13Eb?MxGVfd z32F7P%O7?}jk1X@KRL$2fXo#O1+c@qcY@)jBMCL4Mwt2wOl;%P%Z!K-((QXV#Lwd{ zbL;eui!yYlfU!a@pwm17l4=pRHzqwBsL*j&k&j+R)ih5m8Vef=Y?{{{WYEMIG>jR) z5txvztsbbQShDm}Z#@PKJ%)^1f6zsIe=tJ*U5t>hQKm};1MuX!79e&QyOwO6dYFKK zzbc!fMi0vPEb|BHf4fDtT}IUzTNC8Ak+N8Xp&ZmD2i+T^3-t;=13DNhQzJ`K7?CI= zsxIsyPKcCIdNkyZ(EAl*`G(w)h{4P$8yl=4W=al}j1BT+gu8R&P}R1^L5!##s*_T} zj6B*!gLO)A(eJhi#GLe3*pPNP4SP`5P!q-hQ>(%V(7$#}cf@G`moSq*>tp*zs8v{x z_=9TXNTt+>3j4!l%qQj{ykbBat?6Ms=%d$V#47)*lO<&^l8a{2Up!X-V;X=|(Z2ulf9d^?xdEeTXq%&Peqe56XoTm;i0G#`&D)C* zq<8PUCh-$9iXa>fccsHFLAGo9yuCa4dI9lN92GaGSTQovh)#PS+Y25~U*GnpEbFQ5 zQkJ9^L)eo~+83Mb*s*KZ(W86!_BGBGRRpPw#E`N_M}kdr5A0HYl8Nmn`tjatsD3ZSZ=hsoSr ztN#-<{O1v(_h5Wy#DC1M||Ly-h2lp4=!3P9S<4b_Qfey}nd+-!z z1`>n+ahXB!Nd#y7b#l$$V_3kk{L5hK)-1>J(wg=-ufnmsrZ|@D%V;6Tq8MyiQheWn z5=)pp=C=uZM3^yk_S#VC6 z50Aq^dh^l?20rouPvOx_$q;GBKL`^g2Q;rc+FdGz4#9t(VW%dFbGfVApLSK<;9hqs zNe1z4NrtMnTxXyhdg76Bl8lL*mye!wUfx^_SIZRvG+3^!M2K-2m3&wBT<7_U30J4M zFG$tN=|6tLgF7BKtw+q`;S z8UQnYstAgiAI&lIpG#bLB=u~TnP)P@IPzSc>^Sokq#xT$)}=mo_wvL?8DxsjZ%N*l z_IG7clj-;cM-Z5Jd1)1=d^;kO>c+|ALpePu`+)54zA?s>?$c+5(Gl zRV1niHOAU_|M(`TKsm=RX%S|OOB)^}xFer-)A(?jAi*uEqs)+Z=I58uocz5=Xppmf z?iA98D+jaE2OKNo+4{xb!(|%d3e-aO7nVyx6h_9QVYtJ*9FHEU1A2v-cF_ z#Z&h&0X{GcjGc*Rj{;w3qVZT__ObZTv1BKcnMU~RMhrN)mBs!Xs-K3Wj;b3^L|C4D z#!BZRpHv;H%^o!flyLvi*B(kTwpWc=}+SB>toliWSF4>ko*3)_P+lj9qld9*1d1oTb zn=Ej1C)bLjP>jc6^VbpM4XHNf#CWCx#?8wE$otmz-@M!fP}UZMV`pce~Sw?9cr!yxr9-vxsXx>-Ql3a?ZUGb zsRROwC=cQ+bofi*n1T*N=Pe3j7j*h+5fg9^rPokxNX}T54eUz3yS&x>yuxNYJTEF14u5xdYr$$wM+i8WV8Of;T1RR32d?y3h$H7I3?qKHVSGqVfo9 z6d4OUeV2-?A{Gfc1Ag`iYv8H5BeT|NgoEzrMb5C!TM*_o64B~-R0esA$%di}IRvFI zbcJI`cwDZSvsBaWcl*7*s0NeghEaC8tBIinJbIqPQY@CAqvD5s+!Yh)?>#74aF83lC&ZO%cDSF4Xc6NJL6w z3?^43DE%LdkY|LqD4iM!@}Mp90CaT`1)gA}QYz|-R2pHI2A7VEBf1c2B6)r{>hlBM z?NMLY?bd1$A31$Qk>1c;h)ftS>!K1QZ_>w6XrK>Vb|NHK@g?+*v{O{w20a4ZnPx==BEBr5z=E2N<_~vpD<*egav^4&eHrGQ-nf`vn|VK7{$I!mF@^j; zTBYO6srdhRU7`N}fM%6)`AWrr!T=2J5ni|P z>h5yO>#MwO=GD{X;k9_ZXLDtzY_7B*xCBY+fq)3qL#z@kk7W+s%Np%)yB&V7!>Du^ zRSu(?h1RKu2zG+ej7n#?npMxGSGx?aD_l)VH>;5sLAb1O9zDnggh!8h+?Ad{wa4(X zWOLk zS6QaJkn18wEz_%6jDzmVU@U0(14h8b`or2Ndm@#x2!-@&)}WBz9rAlY?V%WmyE3d- zvtEZ|-f%1!(Pfp1=+zOo9&x)PKK`o_CP)0yNNIH>R2_+xu~x7$uqs6T?kKWcmSUqi z8ma>6Mg|`9-(_mk%{}bPP>dB1dtvE zy8H--{Bf{jBlM5MA9gutCi^mOA%q-;tJ*=s92D$;-f*zUIq5N>a-8H%XF$OCgHC_6 z+8KyBoYa6H-NRMk>?=48!hnrXFis;>EhG%|OQkbL_v+zNcEaQWZ;#9Eh`QYFkkBtK zf5gep=Q08SmDLdfM+h3BW?ZpI)D?@;*-i+GNVS_a+a0W^c31hM9{C87?uWAR)9(SE zWxR*wSLT7%^3Y}viywP(E)V-QLhJ~o<3Y5~FX|CegStZRK^V?7W&xP|bEx_x?ODHU}I^}{dfa|c2`cBc3l zKFBg30}k*p1_N#%`!d`CS}IhCk3JOQh#jmz2{0@%O5G)~Ky@i(Xent*k^1wwqDZMf z>Mjks`7!8de?WIJVoQ0JIhatcfY6xKLz>1f6mWZ>6M_*oCnEvKtN?w^i05Yn*{O&M zVHGffjC6x1J5ECB0C%?OqGh_Dv0uvmVnFs7tJ%Qg$xa3BDr4-H`2(f=0_+R9___H- zg+eQ1r?U*IDo9&`z%K|af{ZsI+k%u4WZ#FkJ_I%Kc|Vz{Fr`j1~YM1~r^+p*#cF5RYp}rB_!_OaJpNMB58lg=Q zV9hiR2%#ucBEM(^loAoPfjlF?hN)djhXH&&1n|ou%(DpnCfi#PgAr_ULBcS5l72x2PQeRIe2_skmP~)(kHxf`a>F*{M4pYtt=Op-qLFfs@qF@gO1mh?e^@Qm_uaAvSF9W68OXP@RoBt#iP*CzH0-Zoc2h3f|L$Np%`e4rv*@zV zEd#ci-FzPto$4~P*?AU5k9kZzbVfRRAPM1Wl&0v5yt%7zo~g{9zOev>o&ST>ie@v_)EI7`+De|Wu=rPt)<|i7k>BK~g!joJw$sSA*ok zE>z1At%sOfM=hi*D0)8-abs#ZU^YF%Y9aXE5UdX&fDJL_a6{_g76}V-5wXF(5s1F1 z#8HAULHCe|pn5MpGE5vX2P4Pv}6gr@dFfPk>Tj4YWEkT?n&u?Q>!@3wdhwH(kt z1S2CKTL?ylI&H}q#3Bonzz*UP$mrGB%weUL1DO~GBZyi~40J9i#TJj*Vlg2SA^B8W z815i;NIptoP=NbHEyu}h7Sf>v{{RSFw9modpi&{;#4RunsQv(ye@jB2nqFvJG8 zLZ_f*2P&s5TTmxM&j2|&=Jg!h@uF97j4BR0=OGI5%GJ`%YpC$;WK!E zZ3Ik#4YCF=LYWE%2EgHn6zm1*LeR1<2!;d&-~-meW~n0%NE^f_YB^v_xTy#@goO*r zo$(_`QjbO<$YY`oMjIKrUfe=w2BhV49# z(_id-BZbNqr2~mllt_c3s3zs4Lbd{#{RZAa36J@Qq7pPEwhnFTLk)|m11?0D4}X7^ zt})YqH>3sv0+>}%?-T5Uzo@5Gpp=FWYquV*@)H6GL-npIykWcg*jGnGG&^ha0wP*u?BHKz`5MA zJ7B9@fd@kqW8_7bQWiPus*$4a7i6&)g)fvg2^ChKcDVx+{W_8evMy0=AqN%~p@^kc zqCV(C!%*0va8OhvMMn?RP2Gf=V`W!fevnY|tiA@pMOapo$B$!>;LfYk=DEe&BNd5^ZOiGG~QYi%v_`BRS*tUTr zR3(-8+eCjnZR(Etg$qgu> z9jw5wvF=h9D7V9*x2+*T19+QSy0(M@iRMg4;T

RM;a>U`TV+h=n0%q`{!k&!R{xFk~sw)U-qWv;y^9h;Ra6 zt;r4M3d$S3S-OhWNuAZ)XE6BXjItPJ8RMi(Da*<@Aud1(Gj7p|rFH%)S|@TRJGwxO zoDl<{j_E@2mmXBA&mk}cV}s%hQOX3{!#6|dWfiqy2o0^o&Xd;VbTbiPpztXQp}KtptU^^zEEL|>c9%<^34*PsQ6 zFZ`BlkO}T$pONyUPbDAOrh;u|3On^$AnFl*MqrDgIJAOb1HS+oagp>aLI}Y=SYQCb z7!J{n))1PITZvM8jZiC;eFfdpzk+Fn+5r0rY7nZNHp1wl8BH!qff#R5la-1p0~JAS zfs7GB<&?s~lftkdHy~!fE#MIG5{mMyi1>g@8ST>5^p~)QkX|5y2ymv=O4-^OmS%W# z8&}Y1REkA4d?M_hf)XFLcx8iKJ*ii#7&7x-4;v;Hb5AKzleVY za=WpE?qxTN~B3Md=(Y1F&J z3}72RvF(z<8d?k350c0n_4b@Ga(o>?uOq^I1Hsj4fOf|af zsPr;W1s4fy6-H$&lQSF^S<7NrqrryZBjXAm&^CFhS#0OPnnS2?!ZN>Ty5Iyl(ypf{ zpoe8R5DMlLnn|4jK=8#f2H6BAfk&sdupJC{W)M?OB$&*15dnclq)Xtlr4*Uglp-|@ zA&^ij1wP0kNFZa0UI1fAeH;uO5su+T%USSS5RG!+f?E$Ls-Q*?fiU!74_V)Vn5<&5 zB8OQ8q`#d02;+oa!UvjCl`Aj@+hE%R84YN>adMhx=YFh=2arotg#PK*ei$~2YDmwi&F+( zwns#+1oaY=qaC)P$8m_TLGUC)SffXo9{5uhd{?a$0jp#{K>Nj*QJ0|yrKubV09MHFB(1_QhD`3PsnBZ#X)5DqzO!Cb2@dxN zV$PcFBA};3n{qRZ>PW**FX;ijS0wc#d!p$iZ=nW1kHS=`NuG zu$>@3MC=NaGb#|*Mub?SErRDoQU^uhCzW7xraHYwr2{ePUq-u83k`(4PADOewdBJH z=eUBqhWv@i%1%B?YDcbOn4#Eep#~083Zgq8uVi;Rdslcd(!iWZCg}{3-(``OW=rs# z$N>Vn$neTEgm{#K?21uj)2OUswYn1I1!%iqc>91sNS8W?CW41ptpO@^lY=Nqo@Xeu zq^TuQ6S*FgqN<`C`=OVOFj0Yz9KvA)`sD}^=#t(9XWOg4lI=mK%Hk@L?Wi31A*~{C zzy<=Duv#jZW%w%@pB%toWOC$%CQ=H$se4#uvao`KlzGiOg?d7vg7NH*(92M*AULQL z>W>TpktWz41{+C%jA7^mz@dyM2A*Jkk`Dxq&<0eEna+V3(n7%!DCiEENLAGM#(2n2fXLkV_!*D1m60=wi3km(DsRbMecuw z+74!Uuv(_d^J_+A{goU7spSXQoRptM0OlBzoz(Fy+JcP$WB=g zw73$oXbp6{49;*h{pR#>MMQ%J35Rgf#gIZEUnyLp8-H8S8BsYk2zh9P@kMwFO^Ezm z#I4AW5wJEWZxIA*Y_m&lIWLK>{ACw>oG1QBea3~MStvT<` zPyxK09pJ|sZ9K_B7GJ*&eGr{=o&ZlJ6!Iu4-B{$$e!I)gN9}D1Y{^ND2WcijlCene zrN1Z#Fxst?a%qS=VkcL16bsl#gfbcQ-2XY*P*T8qngj>OoX zt!7LMGhUiYLA3c({I$~J(FBJ?bDbG{&X2@uLO znvW}?{wVP!o3R}1G_cI7wV>_l1~nm(wvm*6scwMMcNdjFcdJP)^+z3Ntp0XC0ydu> zX^`{LBABHtzf5X@G)A;Vay=~Z)jlx(h5e=cBKF=0eIwD-fPhdH0g{wX{<3Le7p>b{ zF!*W>49Bth=n9?@ZR(k7j*s~_@WFewGG*jSt)#ckkh&rNRU1GoL*wSQJ-qFT*n(*r zfXW~BnbNVGB^TN?!gl## z@s*Sj_%Raf#u5i9_9TT1am$8WE&w!F+$3U%&?6Xu^36?W@)3WvwWvBw$S8I#X)yWOyD6lg z{>(dj3`zVbBo$L$HZNsNl50afe7WrZD1<9>#6I_5&teqT=@qG|f}v=hK#(@r@Ryiu z5zBHd>l|2wEoz8i5E({oWCA#8xq_!#0bZq1@*#K7hI7_m@J6m53*(E{P|n}a9FiRv zX^pI>2&QCNliBOC2NwP1Wi7~dq+f<7SX|JRy%LI!Sv|NHZF;E18ibRyjrpYZnCnIJ zi+t4FE1WNA&v8&4f)llY!k(m_Dl&1&AM|4{cbd`%kerbziME*V9|8zJD^+k(ltk99s3$GxUTS(fF%W;)4fWDWloOC$fbYrn8IU(@&yAP|e)Q=Ob$hBaEp; zOGPI9{?h2DiBo_ zmGNe4z%#FH{3AQdh5ZgCqA86CNkH-}y&?FAPT~N8_=ERE>w-Cq{(@SM?EIzQ*e++3 zWyhx|6S%|m_BNjCS~3)sOGD74%#|GO9p{f$7fqwT&YFh5Jzj{O9am_Ss{CQUygoH$ zrN2bmOP~*P9i<4`OdDmqp$%3~F1fiW<5Rh*nm~?Hh#_^h@rh_^Wc_8N641aZk)<2S zPAL$OsH|G~E0qeoU)P_eN*Ssn>31dnml>%bl_iQrqYcnX6K#Jwhw4ke*nrLwcQ%w| z9aKBU`FWkqN7qC*QEHQ~kK`ki9}G9M!p>h>5%o3Hi@?(^6@NC)vdg%pRHM|gs|h~l zkb}JmYHy{BekypL;~bE>Y<>$p1A#APaPC6d1xSU;%C6UHk66)Hl%mcUt z<;sfAn31t+lY3gEnvD#&MNts3)i}V7&?`zYOQN=bqWlh!_yB7$5W6BuK zvD8*{Qw2VvA7!7lvDF1cjl(4nkWr`lLQNFSq1H{i?Y1g_!kM5PIdhVQl2UfD-7LY> zjebFvqBMy#q`&N5DYY|AX&Ko(7(x#@F9gd&%|){q41^~iU^|Glr2|8LlCcMLvpr8slZ7+*`cJrM4f^*0uzNJY`jP=lw~i< z_9-T%`2-A698hp$0iYx$7-w85MK{EHlFH`zPy=L&$W)~cGBIuXQt^?(aY(Reu~M#5 z8nAJTt#~0?*^)}gGh4YQ3juW$O>|fzvf)KyRYUZ^++~rIMH8pX|CgSE|1UWW{y#DF zXLJAGLF+$$mj6^o^if;bmTEFPQlC`ENlkN+DTnQE=S$!v=ACl9zRSZA^@Elf=8Sg! zK>at4#KVV^2h+~@`wwSt6YMkn9M3Ny+TZnUOMg^y<^sR7`gWu*=d0MUarXiyvd8U_ zglzAQB-RY}yka@}Ug>#u(K9`}7Cqaud(p0*fknG}o?A4qZ(ssv81+TZbw_wcQ!g@XiJ$Hq=rVfgG}PP56dBM&c5%rs0Bf$ zq3#2mfk&d}5clG7_n_sXpm%kb6h{i;kv&u|xBji=^lEAT)V=9oz;$10ItH53fx^sR zxIJBxa+njT(*i!%y}2`&D5af&X_%U!p3cka499CF>BI&*)D>-iRC zuho-iNx5tfNB+P&FZO|V9OEwAQ`dgTl^+H-Lb%OW0BlW9c4~B2b!n?kaW~^}xoRMP zHzTiwhq{j+NxsgZ?oCJJgm&&w_d0d*|D60BH=4)J!OO|=<1IyN$y={)LEtS2yaj=` zAn+Ch{<0tdFZZSzF2QFH+BWiatblw&E9U{PE8lbwlX-3AL?$%j*s)*#k}g*wY4w5{PK}wN8GQyHagO- zKD(d|uMTGT4q?Hab#`Ix+?zKr(9+U!Ui>`U$F_@mCm;6K{RjVZ?*9v%g8wfq>iSdd z|J(e34@^b-hBfOptTrcXxYw-R(8aTRO}kmUXu`r;b3z{%Xm99Qb4U8uFi5%U__+VS zN2TH>zc);$A{8ZuZ#dIDi;vp7O_%vLb%oY{8vk!!xu==c<`VNu=1OzExd6svp}83D zOE*`UOOXSt==N~;`SV;v9>4rBH+gZTxA~=X7}`3RTszGPFYDO50G9Ae@c6>b9*BQ_ zDE_ZQyw&y{u-vebFAhSoFC)VP1uPHO+~1cz8~aOEMSmvkiQjNI@zNkSvIXODcvsxq zYA5y%7+w{UKAX5fVpPRjh>?qv{1WWx+wC`rYsYq^D~Mg9Qs-jY&uv3J3m*97u<7SI zJy*Xo9kTiAo@3okIN3z-PBZ+FQ9dd8ga@3D-DAF3>tRYRB~8&*0#EH~s8^DBa)P*-N*gf90&7kRq6f@zwy zP|0e#w1omn1y0-(7P?NGzh05MEYSYufZmb{m@#3m8J~*5Hg}BUru&wr-;;`(OV=#f zu-|$I%zMK$!<@fizs-7@3pVUu`|sBco0b3GGfX~ivwH86bPYKzvBJ25$U7YCeYChb z6=Fs>`c|Ybm3bgn2U`6D>EPbmlehN=(v>8+-74=-r>7vjarfPxxco4JpxaGH&+QK^ zJ7K=`z}HTg`+IKRx9E40IUrKK*g}3Ed*l2nv-y2h<)?Cxp`-woo{(IXt}HA;GMD+6 zD}eV^Ex_QtJxg9#X`L;Q=vngP9|{bx)vfmCf*=2I-2(!H2NVok0t2}r?@KhenzEL( z6hlEgqG=y-6j;drZBj6oGwP&TYOY+faKrwzd+)-;%p-u@WBzdOLgZcG3ZgBbZlpL~ zm;&TsaGhI!*>X?g{y^e(nbPga1tpkk+j~~t{lkHCEyv!K2vx=d%(AYa6O82isv8_6 zZj{8<5qhC4IlpngWBrt>8RIJD+kWA zoHT@Z^IQHxd?NW^iK=rzB5wnijK>NEAjq9xCIm zQ6-4_`rTh^+<%fF3bgMt?eruN7Q3TSNh5GK|kzGHt&h({^bM{sj8|# z2c#krW2a{9U8~Z{wMl1AojUdGspLxXhBFJ_wW-?qT88KqF|Np(G-*<8jaF0B(9kf6 zuc?t`P3qjuJlU%(JFat-MVcG(e(C1aT9cnx7?6 zrfO$vZ>Lz&HBhs&$-6<~(Za%a$yva1_SqVBC(g;inevK?nwm+I=nwvJi>o45KB20n zqAGUsduHm?^Uo)%sc$=bs?=`k)C(_sI~926h15pEaJ+5m)VEPViY4^zRPXHqAmA7S zHdR`M27t5*5yrh&l$QhZi?nxZ7i-!@?|Bc8 z_o)AiF1q+)e0i70JKw3^E|zFx?-!AB7)I{+@mDb?PP{nf`i`{&ldf9wbM5MrrtO>P zA=AS)Z}ERQ{;zeunAYdR;YcL%{Ny!jUi{Rjrf^$RM|1Py@|COZU9mzP2?K0%e7@Q3 z?YC~}xP!ahwv?~%TGId$sJ2PRFr_*>t4Z{<60etgxc%6qT8^5a*g@6FyG_ht-( z|9v+;j)z*)yz8FMWS;)}c}-2%z3(ByaLtJjoGWzn!CFMS@b15?IGi{HR zmroA!VdL=R%U6!Ym>FN*Ou5a=AIfv+(PkegAi_ zzWTe_-^=fm15c+kK0jZx<}$lnpvzT1BXi`16>U^6-vZSnyTWvO&w3(KwS}s~ zw&(Hv{U83j>$lF7Y~yjh-`dg@kMomv$!wfao~L0^LYp>2zJgmXpWxP=4u_LueDqv> z5tveXwLkK6zp6HTV8udDDpvvX=Kkr+xuxfAB03zs_y}1ld@2LaSLV3A1qmA!gI~>qNU--f$ zm(nfBgZzArp)*@@a&{v#GBEqRs@mv94ga*Uoe-k83vJ;8sNxQFfHZr>^|M}r|iyH2(pV2mI4b&^HN~P$vhDUz!i|O;mK6sqZ zN4W|cuG|G*{*!2%n72UoY)R-~Y91#R1Ix zpRRk~eao??xn(ZX3d6GGe#2@wqP6wBg|<%*cq?xvy%ErFkPqVcW%hs<=i7QozFn69s_+ z|6A5Qo6*{C`OH7Ih4}up=1_j$c{by+X0K0MGga)|+Fp?KPj!~nbIQfVI)m{VfMM`C zL8!gC{J#1?wlQsO)9Yrk#I?+pwdn9Z>yPRGTy6zV4k#2DjZ0AZ4*lq`HMr-+7hl{n zXbq1#M@PNGR%V8=c*`DoWzUwy#*95Prn3vl=fSe(|8MVlW812(_;sAc-c)SE2Bg&W zGk>&7{nAt&m8GP4E<+l88xnybO-eQ-kdP2YXd+V5yqg6n)nHIk($Wu8 zS7}}Sx=K(X{(VG()h`q^h;7R2itx)~`|fwnz3=(iaT}L?<=B4jyz}lo_uskao^$TA z&3_W!8o{rI$5`Jm>MZ^CXEX%~@O7-jPW+l~(D)QGuHk`WQoie6c%fg$TgE>zH`{2u z&?31C$J;GhH@){>diS9wHd@Da4Cw`lrG>MT2$x+KtAkpHM#N`*9kw8W8ouZ6^T&_R zpI<{t$HL>|xgxb6fBlYyS_4-#e|IsL#$+j$<%0(X)9Kuu7FkZY^h@=kRZM*jUQ=3` z2n@cm@PgS9EmOP%Dz#p#g=;Z!^|2z%4kXTw0Lzza@vVQaW?Y!Ddiq((Nu#m1Z%Nrd) zXB^{k^UXI~#YvcFZ<#-jD>8UR&y`)-zuu)~Ats0~lf?msrFR8(?f(7ypB=R_Fp&ob zVRWpm;RyihNf}Sv2j1QO^3;#hKLP^rWUJNiUBh%>=sP6m@gjiRPK6u|Kn4Dl28_II@CXHhH$#L1 z@q>J3Xeg71`KxdHK{!(r$)O!Ft5}lQNzDOiJK?D~V0D2SNYd~8M_`gi*M!_4?L-`4 zw8A#?I&0DIRloj!ricH3Q&%D1`2W-)Ml1xcvPM(UV>>(O!JQYBT8!j|5thI(Q%fbG z84V&pq$t zu@BFE`sK!dzP$34|K(Nhqx?&m%pJGf2DgIWTc%l8nO#EAu69?tEteVEq-5BXa+47L z0+C7Q!O`B5cgLY`T2GEOrXBt&m4FZaAMW*c+GVX{r`zS1R<+ot28eVZUM~ zx9fR+WqNwL62>}umETYMVQZPJtor$Yd@#=)rz^kb!xU{a4HcG;^z=I8dM9bGGgC zMdO<8FGb*BQdl(HIZmr>k*n*qDvYUUVGP^Q3S5&4#bNZJ=HVG2qISeCbOxP*z*KpQ z{*M@JgP?BsjnPah1zS9o$-ov%C28<6#UXDHyb`9o?|a*@x$f=us7G$6fJi~4HIPan zr2=0qvd@82{33<6Uzc}yGwi$Y9MZeaw1lRIb7M3OSrk)N?ZzQ2w@j;@$^t<(JCh(}ht4SQV}i3ra1}?(o5{G#mu}*5%7@#aKru=ZYOFs#Y1-fqG+M6{!`B<= zP$|i|Lcbg;#o!S7Nz&t|8~T!FK$@`iEyBD$}!b{L^SrR>U0043w*?#M7SQy)NQvh@ zYYIw`O7*-%$}-h&+t{ubP*hZP#wX$YaUI%anvBtj@6gIZFR1Yd{9s(!YCL8~ruP)FqRTKhs$dA`yE(R$*tXW9=NN)t7_R~6$-Xfcjm z^K_&sj;}6%@x>Qa_!n=y z@dhv(?v)K&XL%WiH}`yh&zp=bw_p>&0$N^v=fZ^x?=ZHkHc$L%W#zvoPAtFp;;&X# zR>%ztdX>>%`-iPU0dM+P!(8V?(u!rp^gt|vWb43Uj10$y6T>gnAZ66xE`(-|4KX)B z6E3BL?y7YLaJCA*@FB(692MY{Mn^|yu)(7oy(K|b4i6>_jgCSnbw^oy$DMOZopZ+V z%*nRnPwFKKvQYYgu+M znt}|TE5Q;KmICS`l^Vv80EMRDQe$dMS!p2Z)NDZ2V;7?3P#vIssSdWrh16&2jCk;e zs7a!A)L&<9XQl*k5W{2RP;Z)L?C1u{jts7dF2N{Cra>CMwxME0W|J2INN%1;WU(h9 zqdY*Se1s(9gza#ed;m^{A3sJ6I9BKBGFBK;vLRHfmZ=QZov^cML#_vedBSs#BzQb6 z?2oVxBsX|NSV{SB)ax@g#KiZ@Bq*%Zx<=k|oUgmpiQM`JUUqGhSk;3p5^=&+U0s|Xe-*ttf~ zjHojgrO36NM%^Ukgi%bgPU{b5nyK%OTkdq}rcow1Cx&#SIsLu65uE+Wx0sB zrH;Kx=oWmyq63&o9|!ovoX>%#Ca@g`8?La4TB^ALE64L2m#=QLmpZ7gsgYc6r0Df# zj<^X_C0XqRDcGQi1b8jdnIV~6Sj1f8++aq9W2VVCH=;$?BL@%Oh9!k)p`sK#Ib9bj zAyNi(KMp$ot@k=ibRu>_OiY+`+t40;6zkN+)wK`W>4wi#ZD;*$Y}CbQ*qm%#eCd-8 zbAUS`_Kh(l|IO2YdrqA?^dSBR@lJF|%AgA(luwW*ddpZ~8VT?oo z`_8=4K!kYP3Fkx*pX5*qn-%5?3yF24^>#_A#*A4UlCb;`X*e=BKc^Zn`yHrU?2;>b z7^c}OJl;@Hi|cBPI6x_4Df26pvu~@d_OBZRrKp?^Bzya=-368|Iuv&Ax;<;D&(x>% zZMc6T#9Vbu?N`*kR&(?D6z_tPhr~Gd#-ym{+?hzN%}`j*+gcck=X^ z>Y39gJ$>2l5f7a?SI@)7gpgVm1Qq{6OorDOeZK`vNaAHQy4!Q5+Q&iAe4Bap*%>-J z&gA68M7XYn$!fL#m&OAS9WGvcb7R9(}cK4D&F@}-KWM=Weqc-G0bKkAq+t9>M{RH(B|F46(8IItH5*q)O~ zL4i$cw_Qr|bEKNcl{y7a^JDrrNrBcfjjo^O&ue*^*EG6DTHi<%hu5kqx!S1%QMr?+ zW7;5WcX%dSn-*894j@BMw$VM5QO9dtRdL}##^n5>1=K*ZGd)65AS`zFx^d&`~pk>3_I=rg!?`)!@j;97S`wb=YIWv(Zm1e K{)(|D|NnnYU&l58 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 b/test/roms/bankswitching/F6/Acid Drop (NTSC Conversion) (TJ).a26 deleted file mode 100644 index 1c27745bcd92d6ae77f3be48de85b2f4be5e1a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [o1].a26 b/test/roms/bankswitching/F6/H.E.R.O. (1984) (Activision) [o1].a26 similarity index 100% rename from test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [o1].a26 rename to test/roms/bankswitching/F6/H.E.R.O. (1984) (Activision) [o1].a26 diff --git a/test/roms/bankswitching/F6/Acid Drop (1992) (Salu) (PAL) [b1].a26 b/test/roms/bankswitching/F6/bad/Acid Drop (1992) (Salu) (PAL) [b1].a26 similarity index 100% rename from test/roms/bankswitching/F6/Acid Drop (1992) (Salu) (PAL) [b1].a26 rename to test/roms/bankswitching/F6/bad/Acid Drop (1992) (Salu) (PAL) [b1].a26 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [a1].a26 b/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [a1].a26 deleted file mode 100644 index 323d938e3fc61617dd4d932403fcf8c04d80a981..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 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 G|Gxp`AWuX9 diff --git a/test/roms/bankswitching/F8SC/Stargate (1984) (Atari) [o1].a26 b/test/roms/bankswitching/F8SC/Stargate (1984) (Atari) [o1].a26 deleted file mode 100644 index 2d2b1d836d42fda6c346864183fc02869a17d644..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 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 P|G&+7?Ee3sbpQWf)&^+= diff --git a/test/roms/bankswitching/FC/Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin b/test/roms/bankswitching/FC/Power Play Arcade Video Game Album, The - Ghost Attack, Genesis, Havoc (1983) (Amiga) (1110) (Prototype).bin new file mode 100644 index 0000000000000000000000000000000000000000..8f40df7e77b1756027ed9d304c9ca6a49225d572 GIT binary patch literal 16384 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 Z8|e-l{m0M$E8+Zqbzfq)R`;#$`!BA$;nn~E literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/FE/Decathlon (1983) (Activision) (PAL) [b1].a26 b/test/roms/bankswitching/FE/bad/Decathlon (1983) (Activision) (PAL) [b1].a26 similarity index 100% rename from test/roms/bankswitching/FE/Decathlon (1983) (Activision) (PAL) [b1].a26 rename to test/roms/bankswitching/FE/bad/Decathlon (1983) (Activision) (PAL) [b1].a26 diff --git a/test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [b1].a26 b/test/roms/bankswitching/FE/bad/Robot Tank (1983) (Activision) (PAL) [b1].a26 similarity index 100% rename from test/roms/bankswitching/FE/Robot Tank (1983) (Activision) (PAL) [b1].a26 rename to test/roms/bankswitching/FE/bad/Robot Tank (1983) (Activision) (PAL) [b1].a26 diff --git a/test/roms/bankswitching/Sub2K/Harte32.bin b/test/roms/bankswitching/Sub2K/Harte32.bin new file mode 100644 index 0000000000000000000000000000000000000000..4c7dce8c0bc2f860e7e5bed84480195685b92826 GIT binary patch literal 32 ocmX@n%GAQw%HP8A;=-2?PrW>LUHHAyvX#rLm8q5C!p{>k00_|#iU0rr literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/UA/Gingerbread Man SEGA-controller.ua.bin b/test/roms/bankswitching/UA/Gingerbread Man SEGA-controller.ua.bin new file mode 100644 index 0000000000000000000000000000000000000000..aa869c4b9f8c8b761c5dc3fcf85588e49090ac49 GIT binary patch literal 8192 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

%#D+(yP$Z?-qro8z77&2#I8i@{_vNqTO2|H`YW zxmeI2PjkO^?$Q-d{SefXfir=?nFeo@i(t1DVeb(=EGlsC4^SoQk#cC+SnA%>5HHTA zOgfDkm3ay2nH9DbwxS|iia@blMmBFS7|m9cdY-(z{5ekztwNLt10WQ58cu;&lK5G^nQcS zWxts1bjp%#nbYPhvWd^=vrgNx`|`wR;eC0w+4}5*bLYy-WvBD`uAz=E-9;;YyW)uj zlNP_#(ew3UF<3Bl!86|+d-dx=F({dTo80@!N1r?=27j3GPld{w=g(bAtj!begRkM8 zpPARJojZn~-z{9Y;!5K3xwRY8(zA2{7|prXLX^Hz_QZ*;;nql7KM|20edOUs9u}|1#LT0T_z-b&Q+)(f$LqxG&mVUEzC`Ec!Uh5>zb{G7R=oH0b+GR}ox)(3oy(oY z_GMo0va1&*IhQG!IOF9j>+Q$s^s-c36Erx(j`$-r(-H9l!T^f81!SZ8Pgt7a0AjK)r(!vd!&_OEWX9-aR6kk zNdkxkDUoGfQC$4v;^JZqmM<4mm^|0)Y4#+H(sEm#O)j)QFD8#lD~0x%M73_zt9(qp zCneT+fO8L{KJXRiI9L;oGi({B*~I2%hI!(Hm#PN4?g&yGx=GB=bYBx+}wQW zQZr0Y3-&kjpCBDgpz$&Zjh7|l=ijHb(EqJ&Tai$5V3nlgC&uC_T4BTEv{_fU-9_o? z3yX>trl;rOH!Ev}qRh|B65}Gbdxd~s?*4TVS`W6Y^at(}V}TRv_leJ^*W&Sd+_iOe ub#EU)@d594FsoR4X2*`V>v2lEWQP%3b%_ct{#X4k+|U18|J%>l&-@RfqxJFt literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/X07/x07.bin b/test/roms/bankswitching/X07/x07.bin new file mode 100644 index 0000000000000000000000000000000000000000..2bccd16181a18d30cf0f381730fa883624012cc8 GIT binary patch literal 65536 zcmeI$y=zlZ90uStT@p!kakXXCHXoIU)4@b-UfAA0JAuKYo3Cv(s;tv#G3< zmE+IttkgV~m6tpHS5vJ+S+!YP|D|499i#&(9ZqRBrQ<2hr*tW$#gy)+^dP0jDLqYT zDW#XIah=WC_4V92*jw`;K!Csy0_`J}?)szAK9SPplGvQFv3!>hAV7cs0RjXF5ZJLmsW&%Qo2j&pX4S@yFY<>32oRVMfzbWy)4lL5 zI3fG74FUuR5FkK+009D<355QCD)#@A`u}D`o+m({5CZ=u0d13jLY%fu5+Fc;009C7 ziYO5J|9tHKSM>iP9=|;kAh3aeNx%juo+3bi009C72oM;1fzba?$Nqm${~!Cav;hJH zc3Z$CV7EoR9{~ac2oNAZfWYVkLjOM#`~M^Te{_f7&IAbLUce+E_eW%b1PBlyK!5-N z0^10L{(m<1|7ZIDHd0AK!5-N0t5&U7(yWQ|MRi`ujv0n=(&Ud0RmCLB*5o@009C72oNAZApZiP z|6hpx|Goa7|HHCE0t9j|U=on~BeFmO1PBlyK!8AD1w#M782kSx{lBoE0UIYkU@rtr z0`@}HdlDc(fB*pk1PBZ-5c>bs*#E!i|HC7?k^lh$TL_p0Y=Pq?0t5&UAV7csfqfGQ z{eL0$|L^+$zL~ob0Rlx8FbOE?$=f#p0t5&UAV44w0-^t3i~awX{-1~Aum%DI3L;<< zP>_SRO#%c65FkK+K#l}L|Gysl|DWtu_;+;hXx6gwa;M+O(LybS009CMDG(jmV zOl2Z>XHx_S5FkK+009E|5eWVNM(F>s_=nQJ5K4b*Evx2deO5w%009C72oNAZfB*pk N1PJ`UK Date: Mon, 6 Apr 2020 09:21:32 +0200 Subject: [PATCH 09/69] refactor CartMDM make sure the banks are updated when stepping back --- src/debugger/gui/CartMDMWidget.cxx | 5 +- src/emucore/CartEnhanced.cxx | 4 ++ src/emucore/CartMDM.cxx | 90 +++++++----------------------- src/emucore/CartMDM.hxx | 50 ++--------------- 4 files changed, 31 insertions(+), 118 deletions(-) diff --git a/src/debugger/gui/CartMDMWidget.cxx b/src/debugger/gui/CartMDMWidget.cxx index 7b0f799e4..2ba603168 100644 --- a/src/debugger/gui/CartMDMWidget.cxx +++ b/src/debugger/gui/CartMDMWidget.cxx @@ -27,9 +27,10 @@ CartridgeMDMWidget::CartridgeMDMWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { - size_t size = myCart.mySize; - ostringstream info; + size_t size; + + myCart.getImage(size); info << "Menu Driven Megacart, containing up to 128 4K banks\n" << "Startup bank = " << cart.startBank() << "\n" << "\nBanks are selected by reading from $800 - $BFF, where the lower " diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index a29cdcb6f..4cbf61eca 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -250,5 +250,9 @@ bool CartridgeEnhanced::load(Serializer& in) cerr << "ERROR: " << name() << "::load" << endl; return false; } + // Restore bank sewgments + for(uInt16 i = 0; i < myBankSegs; ++i) + bank(getSegmentBank(i), i); + return true; } diff --git a/src/emucore/CartMDM.cxx b/src/emucore/CartMDM.cxx index 4c69f7c7c..decb634ec 100644 --- a/src/emucore/CartMDM.cxx +++ b/src/emucore/CartMDM.cxx @@ -21,30 +21,14 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeMDM::CartridgeMDM(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeEnhanced(image, size, md5, settings) { - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeMDM::reset() -{ - initializeStartBank(0); - - // Upon reset we switch to the startup bank - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMDM::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // Get the page accessing methods for the hot spots since they overlap // areas within the TIA we'll need to forward requests to the TIA @@ -61,9 +45,18 @@ void CartridgeMDM::install(System& system) System::PageAccess access(this, System::PageAccessType::READWRITE); for(uInt16 addr = 0x0800; addr < 0x0BFF; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); +} - // Install pages for bank 0 - bank(startBank()); +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeMDM::checkSwitchBank(uInt16 address, uInt8) +{ + // Switch banks if necessary + if((address & 0x1C00) == 0x0800) + { + bank(address & 0x0FF); + return true; + } + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,8 +64,8 @@ uInt8 CartridgeMDM::peek(uInt16 address) { // Because of the way we've set up accessing above, we can only // get here when the addresses are from 0x800 - 0xBFF - if((address & 0x1C00) == 0x0800) - bank(address & 0x0FF); + + checkSwitchBank(address); int hotspot = ((address & 0x0F00) >> 8) - 8; return myHotSpotPageAccess[hotspot].device->peek(address); @@ -85,8 +78,7 @@ bool CartridgeMDM::poke(uInt16 address, uInt8 value) // about those below $1000 if(!(address & 0x1000)) { - if((address & 0x1C00) == 0x0800) - bank(address & 0x0FF); + checkSwitchBank(address); int hotspot = ((address & 0x0F00) >> 8) - 8; myHotSpotPageAccess[hotspot].device->poke(address, value); @@ -100,22 +92,7 @@ bool CartridgeMDM::bank(uInt16 bank) { if(bankLocked() || myBankingDisabled) return false; - // Remember what bank we're in - // Wrap around to a valid bank number if necessary - myBankOffset = (bank % bankCount()) << 12; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } + CartridgeEnhanced::bank(bank); // Accesses above bank 127 disable further bankswitching; we're only // concerned with the lower byte @@ -123,38 +100,12 @@ bool CartridgeMDM::bank(uInt16 bank) return myBankChanged = true; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeMDM::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeMDM::bankCount() const -{ - return uInt16(mySize >> 12); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMDM::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeMDM::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeMDM::save(Serializer& out) const { + CartridgeEnhanced::save(out); try { - out.putInt(myBankOffset); out.putBool(myBankingDisabled); } catch(...) @@ -169,9 +120,9 @@ bool CartridgeMDM::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeMDM::load(Serializer& in) { + CartridgeEnhanced::load(in); try { - myBankOffset = in.getInt(); myBankingDisabled = in.getBool(); } catch(...) @@ -180,8 +131,5 @@ bool CartridgeMDM::load(Serializer& in) return false; } - // Remember what bank we were in - bank(myBankOffset >> 12); - return true; } diff --git a/src/emucore/CartMDM.hxx b/src/emucore/CartMDM.hxx index 1c2a34cb6..6fd7435a3 100644 --- a/src/emucore/CartMDM.hxx +++ b/src/emucore/CartMDM.hxx @@ -19,7 +19,7 @@ #define CARTRIDGEMDM_HXX #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #include "System.hxx" #ifdef DEBUGGER_SUPPORT #include "CartMDMWidget.hxx" @@ -42,9 +42,9 @@ Therefore, there are 128 banks / 512K possible in total. - @author Stephen Anthony, based on 0840 scheme by Fred X. Quimby + @author Stephen Anthony, Thomas Jentzsch, based on 0840 scheme by Fred X. Quimby */ -class CartridgeMDM : public Cartridge +class CartridgeMDM : public CartridgeEnhanced { friend class CartridgeMDMWidget; @@ -62,11 +62,6 @@ class CartridgeMDM : public Cartridge virtual ~CartridgeMDM() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -82,35 +77,6 @@ class CartridgeMDM : public Cartridge */ bool bank(uInt16 bank) override; - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - /** Save the current state of this cart to the given Serializer. @@ -164,18 +130,12 @@ class CartridgeMDM : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - // Pointer to a dynamically allocated ROM image of the cartridge - ByteBuffer myImage; - - // Size of the ROM image - size_t mySize{0}; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; + private: // Previous Device's page access std::array myHotSpotPageAccess; - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; - // Indicates whether banking has been disabled due to a bankswitch // above bank 127 bool myBankingDisabled{false}; From 53387c4b13ef1f686b498af24deadf9e1f2c9084 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 6 Apr 2020 09:42:13 +0200 Subject: [PATCH 10/69] refactor CartSB --- src/debugger/gui/CartSBWidget.cxx | 5 +- src/emucore/CartSB.cxx | 132 +++++------------------------- src/emucore/CartSB.hxx | 73 ++--------------- 3 files changed, 30 insertions(+), 180 deletions(-) diff --git a/src/debugger/gui/CartSBWidget.cxx b/src/debugger/gui/CartSBWidget.cxx index a7bf7e5b2..78d352879 100644 --- a/src/debugger/gui/CartSBWidget.cxx +++ b/src/debugger/gui/CartSBWidget.cxx @@ -26,10 +26,11 @@ CartridgeSBWidget::CartridgeSBWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { - size_t size = myCart.mySize; - VariantList items; ostringstream info, bank; + size_t size; + + myCart.getImage(size); info << "SB SUPERbanking, 32 or 64 4K banks\n" << "Hotspots are from $800 to $" << Common::Base::HEX2 << (0x800 + myCart.bankCount() - 1) << ", including\n" diff --git a/src/emucore/CartSB.cxx b/src/emucore/CartSB.cxx index 44ff9381f..58dd94522 100644 --- a/src/emucore/CartSB.cxx +++ b/src/emucore/CartSB.cxx @@ -21,30 +21,14 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeSB::CartridgeSB(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeEnhanced(image, size, md5, settings) { - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeSB::reset() -{ - initializeStartBank(bankCount() - 1); - - // Upon reset we switch to the startup bank - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeSB::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // Get the page accessing methods for the hot spots since they overlap // areas within the TIA we'll need to forward requests to the TIA @@ -62,19 +46,27 @@ void CartridgeSB::install(System& system) // Set the page accessing methods for the hot spots for(uInt16 addr = 0x0800; addr < 0x0FFF; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); - - // Install pages for startup bank - bank(startBank()); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeSB::checkSwitchBank(uInt16 address, uInt8) +{ + // Switch banks if necessary + if((address & 0x1800) == 0x0800) + { + bank(address & startBank()); + return true; + } + return false; +} + + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeSB::peek(uInt16 address) { - address &= (0x17FF + (mySize >> 12)); + address &= (0x17FF + bankCount()); - // Switch banks if necessary - if ((address & 0x1800) == 0x0800) - bank(address & startBank()); + checkSwitchBank(address); if(!(address & 0x1000)) { @@ -90,11 +82,9 @@ uInt8 CartridgeSB::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeSB::poke(uInt16 address, uInt8 value) { - address &= (0x17FF + (mySize >> 12)); + address &= (0x17FF + bankCount()); - // Switch banks if necessary - if((address & 0x1800) == 0x0800) - bank(address & startBank()); + checkSwitchBank(address); if(!(address & 0x1000)) { @@ -105,87 +95,3 @@ bool CartridgeSB::poke(uInt16 address, uInt8 value) } return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeSB::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeSB::bankCount() const -{ - return uInt16(mySize >> 12); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::patch(uInt16 address, uInt8 value) -{ - myImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeSB::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::save(Serializer& out) const -{ - try - { - out.putInt(myBankOffset); - } - catch(...) - { - cerr << "ERROR: CartridgeSB::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeSB::load(Serializer& in) -{ - try - { - myBankOffset = in.getInt(); - } - catch(...) - { - cerr << "ERROR: CartridgeSB::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; -} diff --git a/src/emucore/CartSB.hxx b/src/emucore/CartSB.hxx index fe8f8b75d..3682dbb04 100644 --- a/src/emucore/CartSB.hxx +++ b/src/emucore/CartSB.hxx @@ -19,7 +19,7 @@ #define CARTRIDGESB_HXX #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #include "System.hxx" #ifdef DEBUGGER_SUPPORT #include "CartSBWidget.hxx" @@ -31,9 +31,9 @@ (32 banks) and $800 - $83F (64 banks). All mirrors up to $FFF are also used ($900, $A00, ...). - @author Fred X. Quimby + @author Fred X. Quimby, Thomas Jentzsch */ -class CartridgeSB : public Cartridge +class CartridgeSB : public CartridgeEnhanced { friend class CartridgeSBWidget; @@ -51,11 +51,6 @@ class CartridgeSB : public Cartridge virtual ~CartridgeSB() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -64,58 +59,6 @@ class CartridgeSB : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -153,13 +96,13 @@ class CartridgeSB : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - // The 128-256K ROM image and size of the cartridge - ByteBuffer myImage; - size_t mySize{0}; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - // Indicates the offset into the ROM image (aligns to current bank) - uInt32 myBankOffset{0}; + uInt16 hotspot() const override { return 0x0840; } + uInt16 getStartBank() const override { return bankCount() - 1; } + + private: // Previous Device's page access std::array myHotSpotPageAccess; From edd9cd0147abbc81eeb9ffd3c6826bb2fdacdf4f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 7 Apr 2020 08:24:06 +0200 Subject: [PATCH 11/69] refactor Cart2K and Cart4K(SC) --- src/debugger/gui/Cart2KWidget.cxx | 5 +- src/emucore/Cart2K.cxx | 68 +++------------ src/emucore/Cart2K.hxx | 68 +-------------- src/emucore/Cart4K.cxx | 45 +--------- src/emucore/Cart4K.hxx | 62 +------------- src/emucore/Cart4KSC.cxx | 134 +----------------------------- src/emucore/Cart4KSC.hxx | 76 ++--------------- src/emucore/CartEnhanced.cxx | 15 ++-- src/emucore/CartEnhanced.hxx | 6 +- 9 files changed, 44 insertions(+), 435 deletions(-) diff --git a/src/debugger/gui/Cart2KWidget.cxx b/src/debugger/gui/Cart2KWidget.cxx index e90ed67f2..745c52316 100644 --- a/src/debugger/gui/Cart2KWidget.cxx +++ b/src/debugger/gui/Cart2KWidget.cxx @@ -25,7 +25,10 @@ Cartridge2KWidget::Cartridge2KWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h) { // Eventually, we should query this from the debugger/disassembler - size_t size = cart.mySize; + size_t size; + + cart.getImage(size); + uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; start -= start % size; diff --git a/src/emucore/Cart2K.cxx b/src/emucore/Cart2K.cxx index ee9f2b334..24a328736 100644 --- a/src/emucore/Cart2K.cxx +++ b/src/emucore/Cart2K.cxx @@ -21,15 +21,19 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge2K::Cartridge2K(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { // Size can be a maximum of 2K - if(size > 2_KB) size = 2_KB; + if(size > 2_KB) + size = 2_KB; // Set image size to closest power-of-two for the given size - mySize = 1; + mySize = 1; myBankShift = 0; while(mySize < size) + { mySize <<= 1; + myBankShift++; + } // Initialize ROM with illegal 6502 opcode that causes a real 6502 to jam size_t bufSize = std::max(mySize, System::PAGE_SIZE); @@ -49,62 +53,12 @@ Cartridge2K::Cartridge2K(const ByteBuffer& image, size_t size, for(size_t i = 0; i < System::PAGE_SIZE; i += mySize) std::copy_n(image.get(), mySize, myImage.get() + i); mySize = System::PAGE_SIZE; + myBankShift = 6; } + // update access arrays, bank size and mask based on new size createRomAccessArrays(mySize); - // Set mask for accessing the image buffer - // This is guaranteed to work, as mySize is a power of two - myMask = static_cast(mySize) - 1; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge2K::reset() -{ - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge2K::install(System& system) -{ - mySystem = &system; - - // Map ROM image into the system - // Note that we don't need our own peek/poke methods, since the mapping - // takes care of the entire address space - System::PageAccess access(this, System::PageAccessType::READ); - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[addr & myMask]; - access.romAccessBase = &myRomAccessBase[addr & myMask]; - access.romPeekCounter = &myRomAccessCounter[addr & myMask]; - access.romPokeCounter = &myRomAccessCounter[(addr & myMask) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::patch(uInt16 address, uInt8 value) -{ - myImage[address & myMask] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge2K::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::save(Serializer&) const -{ - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::load(Serializer&) -{ - return true; + myBankSize = 1 << myBankShift; // e.g. = 2 ^ 11 = 2048 = 0x0800 + myBankMask = myBankSize - 1; // e.g. = 0x07FF } diff --git a/src/emucore/Cart2K.hxx b/src/emucore/Cart2K.hxx index 22f08fbf5..1ef2ee250 100644 --- a/src/emucore/Cart2K.hxx +++ b/src/emucore/Cart2K.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart2KWidget.hxx" #endif @@ -33,9 +33,9 @@ class System; data repeats in intervals based on the size of the ROM (which will always be a power of 2). - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class Cartridge2K : public Cartridge +class Cartridge2K : public CartridgeEnhanced { friend class Cartridge2KWidget; @@ -53,52 +53,6 @@ class Cartridge2K : public Cartridge virtual ~Cartridge2K() = default; public: - /** - Reset cartridge to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -118,22 +72,8 @@ class Cartridge2K : public Cartridge } #endif - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override { return myImage[address & myMask]; } - private: - // Pointer to a dynamically allocated ROM image of the cartridge - ByteBuffer myImage; - - // Size of the ROM image - size_t mySize{0}; - - // Mask to use for mirroring - uInt16 myMask{0}; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; }; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart4K.cxx b/src/emucore/Cart4K.cxx index 4f4aab979..d26ccfec0 100644 --- a/src/emucore/Cart4K.cxx +++ b/src/emucore/Cart4K.cxx @@ -21,48 +21,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge4K::Cartridge4K(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4K::reset() -{ - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4K::install(System& system) -{ - mySystem = &system; - - // Map ROM image into the system - // Note that we don't need our own peek/poke methods, since the mapping - // takes care of the entire address space - System::PageAccess access(this, System::PageAccessType::READ); - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[addr & 0x0FFF]; - access.romAccessBase = &myRomAccessBase[addr & 0x0FFF]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x0FFF]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::patch(uInt16 address, uInt8 value) -{ - myImage[address & 0x0FFF] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge4K::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); + cerr << "Cartridge4K" << endl; } diff --git a/src/emucore/Cart4K.hxx b/src/emucore/Cart4K.hxx index 2b42516f5..70819c5b2 100644 --- a/src/emucore/Cart4K.hxx +++ b/src/emucore/Cart4K.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart4KWidget.hxx" #endif @@ -30,9 +30,9 @@ class System; This is the standard Atari 4K cartridge. These cartridges are not bankswitched. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class Cartridge4K : public Cartridge +class Cartridge4K : public CartridgeEnhanced { friend class Cartridge4KWidget; @@ -50,52 +50,6 @@ class Cartridge4K : public Cartridge virtual ~Cartridge4K() = default; public: - /** - Reset cartridge to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override { return true; } - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override { return true; } - /** Get a descriptor for the device name (used in error checking). @@ -115,16 +69,8 @@ class Cartridge4K : public Cartridge } #endif - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override { return myImage[address & 0x0FFF]; } - private: - // The 4K ROM image for the cartridge - std::array myImage; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; }; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart4KSC.cxx b/src/emucore/Cart4KSC.cxx index 09e043c94..92d2e946e 100644 --- a/src/emucore/Cart4KSC.cxx +++ b/src/emucore/Cart4KSC.cxx @@ -21,137 +21,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge4KSC::Cartridge4KSC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : Cartridge4K(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4KSC::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - - myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4KSC::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x007F]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1080; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x007F]; - access.romAccessBase = &myRomAccessBase[0x80 + (addr & 0x007F)]; - mySystem->setPageAccess(addr, access); - } - - // Map ROM image into the system - for(uInt16 addr = 0x1100; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[addr & 0x0FFF]; - access.romAccessBase = &myRomAccessBase[addr & 0x0FFF]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge4KSC::peek(uInt16 address) -{ - // The only way we can get to this method is if we attempt to read from - // the write port (0xF000 - 0xF07F, 128 bytes), in which case an - // unwanted write is potentially triggered - return peekRAM(myRAM[address & 0x007F], address); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4KSC::poke(uInt16 address, uInt8 value) -{ - if (!(address & 0x080)) - { - pokeRAM(myRAM[address & 0x007F], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4KSC::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0100) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x007F] = value; - } - else - myImage[address & 0xFFF] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge4KSC::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4KSC::save(Serializer& out) const -{ - try - { - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: Cartridge4KSC::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4KSC::load(Serializer& in) -{ - try - { - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: Cartridge4KSC::load" << endl; - return false; - } - - return true; + myRamSize = RAM_SIZE; } diff --git a/src/emucore/Cart4KSC.hxx b/src/emucore/Cart4KSC.hxx index 4d596f47a..64dde3c39 100644 --- a/src/emucore/Cart4KSC.hxx +++ b/src/emucore/Cart4KSC.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "Cart4K.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart4KSCWidget.hxx" #endif @@ -29,9 +29,11 @@ class System; /** Cartridge class used for 4K games with 128 bytes of RAM. RAM read port is $1080 - $10FF, write port is $1000 - $107F. + + @author Stephen Anthony, Thomas Jentzsch */ -class Cartridge4KSC : public Cartridge +class Cartridge4KSC : public Cartridge4K { friend class Cartridge4KSCWidget; @@ -49,52 +51,6 @@ class Cartridge4KSC : public Cartridge virtual ~Cartridge4KSC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -114,29 +70,9 @@ class Cartridge4KSC : public Cartridge } #endif - public: - /** - Get the byte at the specified address. - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - private: - // The 4K ROM image of the cartridge - std::array myImage; - - // The 128 bytes of RAM - std::array myRAM; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 4cbf61eca..8efab740a 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -24,19 +24,19 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, : Cartridge(settings, md5), mySize(size) { - // Allocate array for the ROM image - myImage = make_unique(mySize); + // Allocate array for the ROM image (at least 64 bytzes) + myImage = make_unique(std::max(uInt16(mySize), System::PAGE_SIZE)); // Copy the ROM image into my buffer std::copy_n(image.get(), mySize, myImage.get()); - - // Copy the ROM image into my buffer - createRomAccessArrays(mySize); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEnhanced::install(System& system) { + // Copy the ROM image into my buffer + createRomAccessArrays(mySize); + // calculate bank switching and RAM sizes and masks myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 myBankMask = myBankSize - 1; // e.g. = 0x0FFF @@ -81,7 +81,7 @@ void CartridgeEnhanced::install(System& system) // Install pages for the startup bank (TODO: currently only in first bank segment) bank(startBank(), 0); - if(myBankSegs > 1) + if(mySize >= 4_KB && myBankSegs > 1) // Setup the last bank segment to always point to the last ROM segment bank(bankCount() - 1, myBankSegs - 1); } @@ -149,7 +149,8 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt16 hotspot = this->hotspot(); uInt16 hotSpotAddr; uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; - uInt16 toAddr = (segmentOffset + 0x1000 + myBankSize) & ~System::PAGE_MASK; + // for ROMs < 4_KB, the whole address space will be mapped. + uInt16 toAddr = (segmentOffset + 0x1000 + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; if(hotspot) hotSpotAddr = (hotspot & ~System::PAGE_MASK); diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index a78b725e7..6437c362e 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -172,6 +172,9 @@ class CartridgeEnhanced : public Cartridge // Pointer to a dynamically allocated RAM area of the cartridge ByteBuffer myRAM{nullptr}; + // The size of the ROM image + size_t mySize{0}; + private: // Calculated as: log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 12; // default = 4K @@ -179,9 +182,6 @@ class CartridgeEnhanced : public Cartridge // The size of extra RAM in ROM address space static constexpr uInt16 RAM_SIZE = 0; // default = none - // The size of the ROM image - size_t mySize{0}; - protected: /** Check hotspots and switch bank if triggered. From 97ff37392d9a98b41957773ee250db70e673e908 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 8 Apr 2020 22:02:01 +0200 Subject: [PATCH 12/69] fix carts >= 64K --- src/emucore/CartEnhanced.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 8efab740a..6752d3153 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -25,7 +25,7 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, mySize(size) { // Allocate array for the ROM image (at least 64 bytzes) - myImage = make_unique(std::max(uInt16(mySize), System::PAGE_SIZE)); + myImage = make_unique(std::max(uInt32(mySize), uInt32(System::PAGE_SIZE))); // Copy the ROM image into my buffer std::copy_n(image.get(), mySize, myImage.get()); @@ -251,7 +251,7 @@ bool CartridgeEnhanced::load(Serializer& in) cerr << "ERROR: " << name() << "::load" << endl; return false; } - // Restore bank sewgments + // Restore bank segments for(uInt16 i = 0; i < myBankSegs; ++i) bank(getSegmentBank(i), i); From 245adc721d4ecb76a2c985c8ec4dd4de4a7aa1bd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 9 Apr 2020 16:07:38 +0200 Subject: [PATCH 13/69] refactor CartX07 --- src/debugger/gui/CartX07Widget.cxx | 2 +- src/emucore/CartX07.cxx | 146 ++++++----------------------- src/emucore/CartX07.hxx | 69 +------------- 3 files changed, 33 insertions(+), 184 deletions(-) diff --git a/src/debugger/gui/CartX07Widget.cxx b/src/debugger/gui/CartX07Widget.cxx index 78fd70d3b..0c6bc5b95 100644 --- a/src/debugger/gui/CartX07Widget.cxx +++ b/src/debugger/gui/CartX07Widget.cxx @@ -103,7 +103,7 @@ string CartridgeX07Widget::bankState() { ostringstream& buf = buffer(); - buf << "Bank = " << std::dec << myCart.myCurrentBank; + buf << "Bank = " << std::dec << myCart.getBank(); return buf.str(); } diff --git a/src/emucore/CartX07.cxx b/src/emucore/CartX07.cxx index 96bf5e4ed..ac40b6ac6 100644 --- a/src/emucore/CartX07.cxx +++ b/src/emucore/CartX07.cxx @@ -23,25 +23,14 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeX07::CartridgeX07(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeX07::reset() -{ - // Upon reset we switch to the startup bank - initializeStartBank(0); - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeX07::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); // Set the page accessing methods for the hot spots // The hotspots use almost all addresses below 0x1000, so we simply grab them @@ -49,31 +38,42 @@ void CartridgeX07::install(System& system) System::PageAccess access(this, System::PageAccessType::READWRITE); for(uInt16 addr = 0x00; addr < 0x1000; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); +} - // Install pages for the startup bank - bank(startBank()); +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeX07::checkSwitchBank(uInt16 address, uInt8) +{ + // Switch banks if necessary + if((address & 0x180f) == 0x080d) + { + bank((address & 0xf0) >> 4); + return true; + } + else if((address & 0x1880) == 0) + { + if((getBank() & 0xe) == 0xe) + { + bank(((address & 0x40) >> 6) | 0xe); + return true; + } + } + + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeX07::peek(uInt16 address) { - uInt8 value = 0; - + uInt8 value = 0; // JTZ: is this correct? // Check for RAM or TIA mirroring uInt16 lowAddress = address & 0x3ff; + if(lowAddress & 0x80) value = mySystem->m6532().peek(address); else if(!(lowAddress & 0x200)) value = mySystem->tia().peek(address); - // Switch banks if necessary - if((address & 0x180f) == 0x080d) - bank((address & 0xf0) >> 4); - else if((address & 0x1880) == 0) - { - if((myCurrentBank & 0xe) == 0xe) - bank(((address & 0x40) >> 6) | (myCurrentBank & 0xe)); - } + checkSwitchBank(address); return value; } @@ -83,103 +83,13 @@ bool CartridgeX07::poke(uInt16 address, uInt8 value) { // Check for RAM or TIA mirroring uInt16 lowAddress = address & 0x3ff; + if(lowAddress & 0x80) mySystem->m6532().poke(address, value); else if(!(lowAddress & 0x200)) mySystem->tia().poke(address, value); - // Switch banks if necessary - if((address & 0x180f) == 0x080d) - bank((address & 0xf0) >> 4); - else if((address & 0x1880) == 0) - { - if((myCurrentBank & 0xe) == 0xe) - bank(((address & 0x40) >> 6) | (myCurrentBank & 0xe)); - } + checkSwitchBank(address); + return false; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myCurrentBank = (bank & 0x0f); - uInt32 offset = myCurrentBank << 12; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeX07::getBank(uInt16) const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeX07::bankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::patch(uInt16 address, uInt8 value) -{ - myImage[(myCurrentBank << 12) + (address & 0x0FFF)] = value; - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeX07::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::save(Serializer& out) const -{ - try - { - out.putShort(myCurrentBank); - } - catch(...) - { - cerr << "ERROR: CartridgeX07::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeX07::load(Serializer& in) -{ - try - { - myCurrentBank = in.getShort(); - } - catch(...) - { - cerr << "ERROR: CartridgeX07::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myCurrentBank); - - return true; -} diff --git a/src/emucore/CartX07.hxx b/src/emucore/CartX07.hxx index 0beff0e0b..3cde4efdf 100644 --- a/src/emucore/CartX07.hxx +++ b/src/emucore/CartX07.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartX07Widget.hxx" #endif @@ -40,9 +40,9 @@ class System; Note that the latter will hit on almost any TIA access. - @author Eckhard Stolberg + @author Eckhard Stolberg, Thomas Jentzsch */ -class CartridgeX07 : public Cartridge +class CartridgeX07 : public CartridgeEnhanced { friend class CartridgeX07Widget; @@ -60,11 +60,6 @@ class CartridgeX07 : public Cartridge virtual ~CartridgeX07() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -73,58 +68,6 @@ class CartridgeX07 : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -162,11 +105,7 @@ class CartridgeX07 : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - // The 64K ROM image of the cartridge - std::array myImage; - - // Indicates which bank is currently active - uInt16 myCurrentBank{0}; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; private: // Following constructors and assignment operators not supported From ecbe14708a6be649900fbb5bc2e59bc31eb66dcd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 9 Apr 2020 16:33:54 +0200 Subject: [PATCH 14/69] X07 MegaBoy test ROM --- .../X07/X07 Bankswitching Conversion.bin | Bin 0 -> 65536 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/roms/bankswitching/X07/X07 Bankswitching Conversion.bin diff --git a/test/roms/bankswitching/X07/X07 Bankswitching Conversion.bin b/test/roms/bankswitching/X07/X07 Bankswitching Conversion.bin new file mode 100644 index 0000000000000000000000000000000000000000..14732a9ff759d909e801619579400fedc5a79d0e GIT binary patch literal 65536 zcmeF44PabVmH6MA?@1=}Ci9W6rpc5P+M*(YV!+sTwL-x8E4aAshb!5?g5aOkR#*vI znzZz_X@RD#MNuopY$tY#O6$k!Do9#r+SJkx2#5l0pjcXj_ND1ZN<-%VJNM0GCewn| zWp{O#o6LRp-S2zuz2}~D?z#81KG~i5dZKA?;cXkfZaU2N4R@{Eu-u%mVWnBSVHMA> ztZ6rE7fo1LYfk99Z4Hsu+?M{e=}2kj1QWj&l}=Kbj@M78vOX!X>3ETH|4^yvCkskU z>E@Z{St+OKHeKdhOh=a^zU)x4J!P4bQUhk(44LILc;CB8AN!~JlSuH|k-MB^ zO7s^`j;TrU6zy*5Zck}QNi*VK9O`xuC;s)JZf#L; zk+E-4Nw-rxRvt>c|4`rj)ZaAzZvHykqi6m;ag-hIj`B<$GOg6r<{-^D)UBnCHB0pZ zrWBiUn0mKI;y6src4#>K;-i^*V(Xyk0FEsk=~r9&I?`9AO3aSre9I#cvCiq~y#MWo z`%BWEy~|RX;XzeSP{NbT`gOXB4vYWR>I%kZT15QDxQIk?WTViYpw#(z>R@pc zXEus=kSMp2x?8*qWxfTrO<4{FM|qa<3(tuIog`KAp&! zH_e+6coPEuRw%h*tug^GR%9N>VG5hvi zd+oJTrZhDzz^q=~g{i9>p9|?oc-w7Dmwx0U4Glh@-(OO)bLUjd&Ykz)KM8Z;h2O@! z_q~;s?|kQtH{STzW2;uJs;s>G?)2rCU;gorW2NuDyQ5?I@~$q+>cCi-cFe$l*p}7Q zBz4T$x81g4#kapbIJg8eG}PUF)>-GAbIwHbdDnUeii|xlRrxGgIg?8(#nP*n$0s#RQKn&1 zoc6new14!~6SjH2p7vwf+S@WOzx>Z)GFm1xEPkWjNtOxXNUXV}A3SB}?>4ljh7hetdjj!CPe*GazAOrPOxh3acb{Rn$Ua2!q z&NH6PbLY4`Q`@CBGXEJqMR_3;*(<(6%PzhV)5@=$@a8c)fg_g*@{19wZu&ecSyOd z>87JwN1otXZb=hTAS8q4B1J}XE-)+y;Q9%(1 zD(J1*ZW+KYbv6;!QH{j+hPvOvQvfQ^AD75<7ogut5+_#X^`|DAMHzC(qsH*}|wH#fmZ9oxCHw|C?FFZpoggo$-Q zk3-ioyL%tV=$SS#bLM>Zv!A`{s;g$=&a|F8ynQrd9sJF?N5A#0Z?#!gXrLEi$e5Yg z`nMl{dSv_dKmaNfE)4c~`SRrhIV$+S`k8OJ?K<7^fsYrduMz;e$|k<&{P#=@xU!O9 z;g>yLn^VdhvkqovW_ItsYWG!7e;h9K*T4St1K;`1r|U;X zT*KB(k!x61>)d~P;3vQO_3p}}Sw^P4R~tCDbp%<#aB=;FKPdM5W8RC~Ki2o_}ur|H>=#=Zi#X{`>_C zhKHw2X>JyIQ*-l_DVp}BFTL-5@B94cvA+04P205#&a$=^OXOWER&3a?VQ}z~M;`g= zS2eA!E*G|Im!{30EqRDpvSjvblG|qHp+lNBYu1%l!n%B`}KRVxZmEW z_u*mTBXf3BQ?9a2O`3Mb8E2n;_Vnq~FSy{0GhV-T<3nx9T`tez;ra6i2j^pk8O_f= z8xEhxwumGA+;f_?Wy|C-BQPzmuP+x93{v{!spsY-eB<-iG|4TSDY=HjXS{FE9^rSN zeOA*N8YWME{&~sv!3Q;M*)o+O*0N>Axd;r${QjW)<&Bm9<;p#Mxxsk3!yDEAe_8n? zSDxOUu&{4pZ2tdkivQP(ntBrdzdMsjJdplVMF6MZ;)9Q}F@F*hpXbYEf7LQgOBO z-pj`MlAeQ>1J-XD9Q8KY0oN^i|J$+m_T+=6U+D_C;=xDFD4cyL>}5-Q2m} zy;lOrvX^S?NWWiIA{{|)&_tzgCtz91XYNQOA5r`AB6Da^0eB{tm6ViR-MjAoJ&&8q zlD+1=l8wCqZaR9F-M{(q=KCLeyqPA$^ERVDaHu)8wmIcW4D9aqQSS11H(s*;?t2u6?7!o%_urL6PwWNGx&3#mtY_0A&mu2d>~|#I@@UUS_2O7` zM~-n+o6*TT%zC)nNSci5%{y9BgUzXFh4uMhy6d;8OL}?-w0QVYczEBVynlmtz2N;I z?~bweCsXq79D9FCrFY4@R5|g3N2HXFY$-K(#VO?}l}eSu*7~DePped_6!rd;Dpi$I zo6qH^*<8x9x$Mff1R8sCT>W;~+r4R~3~~00EWi$)Zwzo%%oHO0nUp>i$}#AlOPCL~?*)1qv3C)aB-Z zy$9DE{KXkh3}kF?UT%J3QSYLA7j4J4V0_BRY%c1f-xNXjH$~9>je?VcLmhBp{BM`u zCa2bHPL6CpJ)MWBOCb78zOC8!F^Fd0$HtU;e_EBSAgbPN2)kvBImu5-rR{s~1wAZd zLVYi_!Tf$!f5ypNlR)NBaga9`RKmn{n#&UJeq6=GS(J$<7t?i8P#_m{a;nl(1=$KV zQmaQFee_qqdhD^s9=FXU-y6F0-q;o2C_m@YzrA5u%Hwdl+^n`9kG^y9`!_D4`)1hfD zNMn}>{N4PV4!y+X)OD8zmE=Z+1eFtFI2w z&pUm(*k_zkTYK6KI_-#a2Bkf-XA56-^PDYPAlh#e%Dtmw%a-zTsfW~i#fo51h*rmW z=L2^qoiSxfAyj&MWz5)|S#PhZ>=_LW@;q^3>eS}u&d#k{W&eB2mizAO>CT#-rluQi zSh{q{61%+HZaZ*5XuO3BXU&>C`M`nk``^M#q*5uhpVraw>>l`yPI-WU)WMtm)nzy$Ls25Vdl;id)BPRMm4g>ECJH<&(He62R?AgB^O_O@vP^cU%lF{ zi`c7I-*7{IRNQdGnl+OrH#IRDFn8TW@8lSu6<__T;(u)BD70&r)KwG*#C-nqGFIOH zc4__8sZ*wOclY%4e1F}#pZ(wmKcLd#FMjdXTSb##!GfD_mRS4tsfcI_)Yj$z)!kiN zyI{e}l|TF0=;(n1eSHfSwB9@uGkf-5VOm=U1_T-d1JbaeJqt0Wxp=WWUwGleAMWVz z`Iaq{@!Hur)^z2N_Ddb_xo6!gue|cx-!54qv9@j%ySe%9U+ml0(Xn*twr!oAcigdW zACq9sefNpI=Dx3)vjl8ebNKN7{eHh;fLbtn_Z~k!Y0MlyUjB~r&-?u6KM$5#`Q;V# z)u$#;{*?6d`l`i(JIb2YR^g&@=GkW-e2^?Z zC21#5-t*w%PDy{sCDMk)i)B>W;}X~S=CdKj9{zB`9vrh~C5DIR&Xu&StzxTDbEV=| zVOM4J-8hK3~np`r0}H9r?RI;Ky5;RS)HZC-dmy8f11>;Z7$ zg`rS9K67Sn91aeCE!X_74G!*kL0a$&Jpa64=!S;o=1VW#w(Y|omYQ~Uj`jW6D9FQA z+COIy%Dd$ApBFfM@$@m^Rx#Ehu?;aeyOR6E}uED`gn@rQR-#WH#t*r%xXWv$@9v^e-R%)}f zvr~e1?i>#dY5&68Z@+!@svrGm&GQdE^w7fAR>2y!X>ApltQ54fPLR&{xnXy(y}r$v zGrs?CxFMIv!i6{7K*rjFG-ItUaas$R*rJA%p>3X zwl2guAG(abvdv|ey>vkOW&3uq54{IFZt#-McYeEZLJ{2XJ3As!jBs_9z00T`GP^Q4I_u&zKuTT0alQ~`fU&um<|L{w@+5dkp{QvG2hj}YS>NEY_A>1m%9q9@2^+#}4^~cvolO5B% z{m%6P6`uGZI`ZuGesc%`Kpg@Am+9+vNy43oKr*Jmfd!Nq7F)sO4n!X%-Q|QO_L3-G zJrtiUIsjh~WqZSRbWm(md_-x#3Za41JS2P$D*L*vvaj~iDQh936G!~vA-k4K`*lmU z-6h#y+sS&i@7tG?Hi*)IBP(qnb6eV=$`x&Y<EYxr^DcS*lZ^h3XEUHTCe9GNyO;oui`{c1IxkVmd zNp6+LU5QT(CHvBQar2+tlHMZ^JE$<*WIv}9JZqEv^pPvom3AP(iUZ%dhd8*xv6a+Z z4%P^OIbc&%2U~f-ZufFgD3Eej#)qZOD^F49U5E&qn0nOR~S; zX}R|*A0-gj!nm}C~@x*(=nV}+_>LwE`HK-tdHg6nTr$OlbSv( z!$MBS{1Z6n+~fgH$Sk(rsuJlWN?(>wLbe^?A3uFTP~xQ{>9>=?;#`%@%~D~rFIQc2 zi&WO!nnEN>ZK@D4wh(`_*=KGsx0=1+hJL~Mr|!WgliSmklw>fLb#o& zCi9_W?{%8_;FB#V;KY-?=|FPh=1uE8J)6u;i#8Ic@pmfDemjmUT_ST^39L5Jq6f`~ zI1IF%wC?1lg!7mLnwzZ3b;HSrs;=Hh?hi`tORM&4>(VbhNy)DC6oHymp4=!X$J}V= zk{CXke5hxmxp5ImdV0;?MGyXkD$e}D^**=OI~W7S>-{Ce9Jo^JJwvjBWihN)u{$g| z4R=TUrdJXxhqEiA_jFdq6|W?|I;jusQ7d)oIP2Ye$1jttb;-qS z9XM4PAi&cxD6E&GOgI;vAKe<-+c%C#j<<^18C+v0L?a9qO{R6rc zoo2{tuy=D}@(F5end0bQzTQ`LT}Zi^$>L=%5%0>UV%H{@#_zXdTIhCeZrpFDlji%E zkENZ-))MuxN+qLq;K#VPH+p} z3G&1O2IEcVn-KW3hd_ZmfJ1BZ=3yzXdGplcnroV>s+z93MxARDKM9tn{N|4KDKk1( zrK_rHZLAs{?d=_z=jj`rOQ@%|R$LyBXLPjhnhWZJBcnJ+dV5DlB`q#O&pr3ts;WSs z&-R-;7k`y@p2V0t9)PFI|Fbcy659L!|3~frk2|JC=o`HM{~x*v0Hj;YxF0~B9Gv#X z@a=hyvwN!A(9RzIRwu9H9TuA35v!#;SQw@@y5sBR2=xb9vRs_fZ#N%IEj2fC)O(S+ ziRJC9x#i8)rnV1}lUoV7p(v3K~AgWBe()&P%>_*IhsTDYs7aZ{6C_A^X1eMz7XBQwtiQ zkmw27yPS=UvX`1Q=Y~Rdskvva4)QGQ+%fMb=?%iA1 zc5!pQ9tNzy;IU9`imzV%qaXbUr2@4v&d&JAc6PN_-zDlK?F$!fA8Bnx87Z$IB(C=P z?Sn%@0@8tjXHjHx96EH!S^n(6fMs`!W$Wl@mNhVY_(_^2`@UJjp@^oYYjVdA?B_L2 zO?7qWtG(hWQa%)0>ov%*>hdnwq$ZV0=CB;93HyMc$0e zovX9~6kM}<0l;o>sJ(su{O6vtPoIbek7&m1;lx7z%z{0xFT60nFaC~qh|X7ec?j@I z%)w{l@qvMOeB(xWD{kBWy!X@P|J`Hz|8oBS9~J*UcI8SIEL!^H^Z)U`89M?Flli9} z1z58`xi7~VD-JvPV)l4--JjhFV;MIm8I(}R8C};#Mn^L{7cbtK86CZk!F}r%ZdUOc zMqTbE5T14QOv7F#`|P}7rVsRh5`I?3qz@C1&&USnaS^W5X}_EWtsj@Srg5cDCd2(N_4T=I z?Fe$7k1$naTTz;9Sf}2RyKw+7<6CWQbFE_sGnr$*XYAAbZyC=X8X38zZpVR4X7~3; zM_(No9y#=^rUe^&N!y!IcB9g5=e^jR+D%+OvLxz3uaFB?pXGx33=>1}fIT#?Ja*0GZL@TpiAx-2#keX6KIW%eh%k zE}W;!gNGLgdp#akf&UCjFL)KFs*eDw!1NAFR}@VQ!h0E|R%4aVHNGABOo0JX>g;7l z%zndY%k1uyHq}31?I8zMTHew!Z9x|oO-XTJM&{PsC7jh;$+sHjg!^5qO^)ucxr_g+fGu#@)&Nx#z6322qsU5{Y zRWTI?&Zm*3Ko|TENoBOno7ZM|y`409qzM1lLYNif|Ji>${?8XIF6jyx%UO5?dG%UM zxu)9MCYgHKXYT%|@rh6ImhVE_rMU#m9xVDwm!YV;48zyi{C3~Ysm4BI>Q3L=n>!5y z@D5na@?#eNGTWK!DtpEyK$HnGZ|odN-cLmli=*DNSs1abnPZ+s4uw<-`~>hB&WF!# zoy)qQQ0$CM=KS+B)2BCa2^L09k6Tpd{PPQvy{_}5_G{L$n{Imd1+kc$UZ(ZfjUQOB z@|zFZbG|mSXODG)*&HfOShX3-$J{5n%yfir`R6^Ynap#0o_+S&e-cB(+h@+cC3ECo z1~+V&e=F#)y?uCCcevaNM@m{P10Ef}a-CdZW@8q|&X5cCoSwiZN&0Fg10HOfA+V=E zF0adEPGoj70Y`=h3i2SV;H}6hRVXwvvJ69z4wK(D+UyS3WbYlvKk&>m8#8|;h9V@J zOom&|)~=O*sel$Nk53-huzMiW(INk;q+og1nt?%DS>Put|L{*|Th{XB@;_E1-D}j@ zyKT1DTbt^3?b@~d*|tx7?!326oaj+dBCFN^@7S?pzpwqhvY(l*mF=wC^@+Q;KfC)U zH+*l`?p@!%(Qdx=(_c`(2X^mVrW!L=45!-}Lli&IdwTO<#$7J80t^EK_GLu!DKrAd zfq?;QE=!~I(hJN11sFTAIA5c)(s~}H4`&p*QSPW_Qn6Z83 zt_LW)8Mm~~W{@})l`}jba2GRsc4L*DfG!y89ZlP~>)^3$Ml*y&7Q+x2%NywGlQ`GX z-m6*GPX%9rM|z3mYtBk%Bt@|qKMIT)t+TBsSKsD!xxBZneiB?b!|1hI8=J1*d$I8D z7w^3uTxj(c=ki+b1(ma%qwPQWN&9GlooUOQ(01?k9zN`P>@nA|qn;<8@PP6U3UKXQ zGeWyNn3%s1KfAsenKVxPBrP{bXjfg8wV~(_>bKmYA1tslncz8}Mc!bWQ47MZUT%YE zZN2%6U;5%L^XAOE#qsLstD`m}Fc7jrFV??Qe=u~g{$PEc*I7q#@}H}h)UJKt?E?cv zeoztixL{04>_YQea4Pl}8qo-j8K!~P$*6}K88fXcM+3#_UhBQE4yW%vUH+eQrYci= z|NoyA|L-m;=A`|9!V~+gKb7f!qxb*6e)x@4+<#3)$C|OD4LMau^uM}MslW3Fanu4i)J7A3l_5AB^ukl96wY8;t)HW#NJ& z03^&F0U(8~{qO6pmblLi#?L#Vib0P;6dYF_76nJ;pi$2Fj>BX6|DGcKe~LJlQwHi3 zKzxu!+fJT~P;q?m2wxH)H#r9Ix2QIfy4#miZ7jUB@WI`06&!O(MXr77!bd@O1iTd*dAhH83l8(ghoBBd=#QzR1BSow+-0}hG7*ZO5$%Hl29JD4xt3-Xb-A@8Wq506k}@S z=O-Q+qMSco2k;Z<0DfZc!(H6N@Z+7E`_m;|`s0sVt~(#^;tGbBdv)tt7K>&(m;gtY zj^gB9=&L_9RICX|i_s-7)FXdN>Xg+2RQlrGT9@|Yr!5x+`R_sryZ_FoyYzhnf%J=( zTaAN4#luGw3;|wZ_mF64c2}Wzzmr*jQnwRz`nCO^TmF`5GZO!J7?o^!%`C5-mXTLS z_O(pC67tA$$Fw%{m)#|g|G;w73#j3*O`LVO=k_~)kWB4eyO#{tr4BQCR@$Q{d&XYj zsl2XE{Gr3CdK5MKtJjw`?$_iMy^XHXmd5?nxtC1Km{LbeYINNBk^XqkVe=~szZ%~l z8aW@d;=54s33PcD@+Fghe@Y|t&Sk4Q`))(4-$cH$i%+IA;}@c+=E%kl+k* zKtVTFa8gFyE6LH2yAN|tMUIBxSV@z*OUCM5lp=RHL?UuhM5S28c@SHb24DMd2#&jQ zEt7JKmXN>r*VHj{Md}=LdAFx3x%}#10=*U2Y37P;X{*b#Vfojd(mFVYl)V#`CDr4P zLjFbdDy~q7`pdXhA?gmoKu6t?s2jT~YG`_S%pGv^AAzm*2cZj9pcc_XxSf8N&Xon> z3M1^U@atZ8nN1*6_``Zw3kBUVQn~%atk5H3yZyqHQV5}X*zIzYeb^li=oR=FQn=;` zbAKH%BT;`i;x5yJRDl$RI}$P?dWAbktt$LMpP{+j5qF8#Eolt+7p5^n6SkzFFiSMA)pzhGaVSm6$O>{&GVIwCHZ~%@P zT@L~$t;`+p8DYIl4|@$qAQs8d(_S5aE#&r7+mJz2%|Tv1Y8mk9_KWzj^CA!}$wjJ#Bhk=q)_e>PQr6cUdEs)8E>Jge13Ul+D=5U8=r6ys& z*KkdA>e6EZH#;Wo3cpc8T0QLYhuu-5Y@*9gjLXD^qrv3sG z+j#UcBVvSf`yLMQ^SI00I=$nf4BaVUtdI-nG*5t}TEy**NzVo-B`bP?Ylj8K0UBP48;=~BS} zJh`p~h#khRB^#$6CLrLi%I2uigEBtL{6YHPZjo)5QFX@F1i5XbEEZuX2X)Co_r~Z# zy~59c4#vvV$dVLBB+7`Y3wwwYB4v~w4f!MVe#Kb6A$KHVFmuYr25X3!k^?1UgFG4G z?%X(3wXJawBdUk$q?9ltk9N^uol;!%yKMq7C;b&Rq+L$K9+WlIgmJ*ssxSiduN~7J zaT>rS%;eAd*!~e}71ksEpc*++DK(99+X?V3Js?+(6RKs*&k#my;JjEpp* z)85DSg2&U>xBW@WdUCszC8@;__QVtR#U?v;?Amqo=-$13jdMj6K`J9Lr0mg=VAI?K zyOf_~V*80c{XD75yqpHd$jIDLm6qfo)Dfl+)dzdm=OUedL; zZpTogmUF8DsOsloGB?-i|3nS{xkWnuuQz&6m;dKRDwU1R|KFnMYEMzdr{w?J|9cMZ zFT9Np2%g550Dl7=ocs3RDb5Te2LIzSgW{72&iHHOn!m@efMfZ>VCv>9$MWKu_BgM? zvAn7{mh8)DA;+Q^Y+6!$-+~fLm_6oq2zywVF?HjDZf-y66z0S7*}L2+%)FrDySYmV z@`8%-mlC|I@KS<@h7#dJFoYKm#y>EmBoZaKVX*TOi7yQCS}c*ccrej?D1HHD6-XpV zn3qW8j$YnpbytyP;%2TXh-VHXmbh3xpdexi9QL`(NO!H2dN2Is7o>y_V7M zu*&1R4tINPuXx>20^)ZaQSyh!;2^zu=>-EH`GBYJXr^R{wBsLyiIM}F*BtFGl|qN$ zKhLmJ6UDjQ)$LEas;+adJC!7Z__icNRa>qzP!2uu@Hk1vM9#}cPdYDeu0;&N6#+C@ zuB}9faS4@tSN2@zI}{VHPH~@?s*}@y{Om*G<4Dhc2`Q7UQZ&R1s>7wei03O;CYyj$hIu%ovw8JVBHrNS?L3gmGNx-;_u-yjq&kwvImK#WDhvbCJ&~Y;j7~PLb7F?nRx6cOBc7KHS&Yf{1HABCZ+5 zBCf_`BI4S+Ru%f$aru-8}w)C!^&L4^F>CUINrH}S>{&?r(Po+z? zrH}P=9{o<@8^@&Td12m}2=gWj+}z2v;wTj3aoGGd#CSuhjX5!%sep0g@&NL_wf#3P zcL9{O#bEisa271X<_bRUvb@_{EN-D=JC(>~rv~!wOgk2KcBC!7Dg0tzCl@hHTpsVg zXnC~%W6OPw`#;w0PCPu^xc{PVLp>*U2YGgvE&Bas;P7YCj_#`$?W?+O(A?kRf=!2- zt3fVdRBA4y6hU`5=y1F6tVJq;fFjC+I13&AQaGld!_aw)!q^3!zFNct+(S7TNrbaB zvd|HZMSSEE6SbBa7=EuiT<3_va+59=MH&)x>XJ(>YIE)YcU1C_jF83z+_T_Ki8+-= z*oZE4!ifdkE~iiT2eqg?!Wu=!!cO1CBCCi+g3f@SeZm@eYVOFabsFKIJ9>dLtn(Ix zd5uK0Iv$ll-eR($=t2%b=?h)q7!n?rE9NZKwENtCuP>^>2ybf z9(Rxwf8+6cqSbi%X`c24kH3OA%?KYV-Qk4CFaSsZCY8)qdyE*32nx$ut-;{JUTPP6 z14xLp3ZxVw6Y<7GU&RH#OXGP2fzri3WL{JP$xp;B55xl+(i2f_`EH4VOKqvUTGEvU z{T`wO^fH?C-GEzkQi1_@H0ln|0v-UnHeg7@f?U#1^6P{Cpj5&TTMNJ(^OzNKt4f6Y z!YjK%{t$t#P{5B^BM1N;{wNP;DIh>-#Djt2q;kP5mm&f(Eg11hKe!@3 zLvrDP?5Qc@7uAJY9s-F-X^g?-iUg(qgAwwK@D`<0BS9XtMIL~zE~3B_j8sZRU6D#7 z?9$-Uk#R&9B26UE??!!oz`H%_3%lJ~E#f1mk0{a`nhTK$<7Hh`g5*v5IEoyIvGmqx zB{CxS(>#LF>XB%rNDy3=I)jUcPY(d{N*|(0Em(;-#He&thUtIbeYUVq*n|Il+%O=@ z8sSOb%hS6W3X(L0)(8>gsaI>k(eJ@#^k!%j+w=Zsyg~<>9q>y=QY}r);jYAh-lc>Vbd= z)I+QiERSUl-OC#7aJwCTufwQx7*!6VnuXS>hX{6p(TqxGxSCbZrB}NQuPaJ+W8QEq7|~^wiRjf4w;pl3BR>AC5hh3c(MV}^ zBvc)Vm9bW^GO#K{{q88TT$W;^IvTD9wO8ulO1-L*+WUjm?nt!}t1;LMKv+&1hwiAB z9TR>5Xda<^N|A~CxK6u_9|Vvd2Dmw$O=m#B_=8S=wAvYnIh@phAKk-M;p{6o4Z?tpP%us-R4pV7^h>2P zM)&IBQg*`R0&kDY?TEVE?vT(gE`P+y&*w4%0F~7d0!IiMp=MmMNYoXJ(%DW3ib%Da zHQODmsCHNRqaOJPk?x1G@zd`Co@Km;T?G|K6a+~89vA|9|I2XF$M!}ANw-g0a_|lh>t!L;)orrKnXA` zF-qMfu|RbxWN0aAN|E~WxuQs^Kk6()I*xaFBEWl zpc8@-HYXzi$gBW;&WPt{1lg&G3Skv6f{b*7Cp%6;=>T`O>7r%2pRr%c{$fD(7^~U9 zWOni_*HI__& z;E%<$lzlU?cx8-(6No2}6RT9QMOefWHbk*Uit`bMry9#(g3^6hfl`^VA*@J5END`{ z+k*vipmwl2RKY1@4lC-ziV;AjpbzL@85AInnrbKImMNx3D0a5P>3J7B=>eBt4_Cuc zM6qgWSQKKQ6p4%#iMZHG4qydKK_ysVPw;`4eR@3{khO!UDQuEEz;eSl0>voV>;YpcSg-k+dKYFb-4B2j?XCghA*D#G+si1_a|M81;nd zK(CLDPcH+d+Dqh!VxB-C?DB?L0I~36V3vwS{~56mjFn6FfCEtyg z2ZF9vjFn=m;2^`*B{4>{;-muXvjZenI3Ubyc9+Rir@Da{q<@+2^*fo#;vyNVnu7@q z3V?NUR+oXo1H^aZ0!ft#*M@~FR#sNc7O&qKl;#H|KbAq6%+xH%z;&|&Pye$ijTe*3 z2zz;@*34xP0}Es{5~8`h(q%HQ-Art!SYf6$aalTfWoeBvyKym?l_jr41}ievVTstY zCp7G@VRln4+yCxhIn6J{an z#`G6RhKa(o6BskE!%S!z$BZE!%Lg2v_zBwwIwf9!YD9otAOaS|1GMva&g7i_2EP8Dy8#r$Cu3$z{d09^s{H1K2QG3WwrS>4!V zXYoWQz#pwJ03B?qJFJ*gSX4c#_*AU0yV3_@#)`Tt{m=rHeo#jxd*4Ag=Kvfm%a#z1 z$ZTx29AKiF-J5s)|v8nFm01MjwY47D84KLjHqA6p1Ug*t7?7{nqAl)w(+63FP)*vw(2mIIj> z1|x`CP7HJ|D8&|!*y!D0rFH6Cb3^>_aUFttZs7 zsDvTp2JR5m6G9A<3Mr945ON#z1w@r#ZE&XncSCG!frC=Zv9UCGS*2n@Ak+}Vh$0$! z!UyS4F$kUnZR^!y(~N4cH!#Eow?e0&Wd|y!EL%_~L(d2TWv6Jq$&9o`cF+;bkBFiO zfER7WCIYw{JQ4AG(aVAG0^u`wfNca!feo?-FG86L1_r?4h!pGv=|a%5E(nGM1>ghL z!e*%>4oDlsCu%uhOSq{BID~}@%AN5eNK%hRA;@E*4n`Xpx?bEuX9lP-@V7;DwuH_W z&=FMOj#l{T=`t`08G|d(e5+KHh%KSRrq0!}%vTEYe!Bd>>~4s$`TuV!{@cod^{{LUh<%z$u*gIX3GHmB@oc?0x>nT*WC>=^JZZ zN_fma6qTSUv2|!uA8J@k9dIGKeE9pTbd8w?ydgCZ5WuX8dY@n){6#&j0;M#3SiALb zm7fp@0z5RQQnr$DgCbh2f~5r}6#=WQd*<;w96fs=+}`%kadY_3puc`2t_Ql67@kB8iv9Sg@d9ZDLQ(fZt5n?WEs#4Q7afX z;!9nSnXBeOkRo!a3%K!T6w*l9FOX0$i>RXs#86QyA-yPv!HUsYV0JJqD3!W}geIre zdDSte(mjK@B2SNBdQDbkX=xaBRVEaZ4!6%}ACn~or zj=V-xFIPaS=JJ8mB8R9NAr96=HI}FmiiV_x{%5?=TeKY;xMkam#_0rM*J!(Kz&N;_ z^dsX$=@#ZffyqsV9ByWC88gJ?E>n?R(sdf($M&M4DgEMb z*Xn|81RA2-tCz%RBl_A*W|rqVzXmNpeBrlbgG_K2`;3$)eJc6LHWh3$Q`o830#T3f zGXh%_#i11h8~6p#h>N6W5kd&|!2$ya#&C#sw1&`x+)9+%YlK>%>?`P&{uN9s)CSm3 zP=iqAv=K%Z&1iB_3dDGenyge*8K?+q3uKH4DyI|b77)umQp-{6+jL7*CX;sRKFFuaqM4C;S<2HMnIaMwA+{04ZvK z8=2S<$0gO5RY2LOPov%)W&qppA%F6r2kB0zCCX>CD<8oUj4^=&;w!r0X;0kflx4~&`jzK0D>=;F~}w`2|PNrh3#Ot zGlQ6NBEe+7iwFobB3%NXEv3k`rWC1R2!VuJDeyrSK>`^|^a2<|>f>POh;R%yTF!#s zf@qWj7urd&v3@#AFqd6*OsbcIg#xu$(n&kpX`AHREKT6 z(p^$6Fs~AsW{rJ_!d^k_ILI4WUz{@VvOOYlC8(E}9PO|TJ&r?!4T2{b!Wuow^uV98 z;Ja$22v{Wp3JM^K#LaI+Vge=TUE1gpI!cIj=8gjk*jyC{5)^0I))S zCutRiF=TRQO@&?~NK+X<^PTmgN^rPG5Su0kIAk3W)qgM{vrMfTv`gj-0ylw=tdcU4 z$;M$&QGBFa#B+p;Kn{*mB)#k~$~~KdA(p zGu7!eDjkSP|1#Q*T4*5TbwUY&tR){tIL8&-HRMlBR(A4HQaf@L!wkh%3pH?%QV`t% zc_q8k*}KAvkp|{OGD&BM{4R^MG+Tn_L=F(pMTS?VA;hB;WLJzLn?_|7tJRetFF@M` z!`lZ8Lb}vBG!Z<+Y7J1Sn;b+@@;pPKB~2}fn#lE_6jc@F*blvIgoz4#RTfu~Y)9q54`~&F12z!Igw;~PEW=;P_~ZZvBa zgf^gR%ybUSkQNG-SP>!mgr;S^g`NZv*jUI53KLQ=02v@F1hA65G@-{B53&^_hj#o< zKf4Ri7=}Yhk(kADSV-tEO)cO+z)MGZm|3#6BJp6gl_OA4NA#Uu8>2oYP!!P8F`4l2 zJwOB8&Ke;b84BwXAcun7>{YlpmEr`i&~`8*{et8Z;*-%U<2eZTh8%{R5f3u^d`1bm zskGn(z$vzjQaPr?6owZNDI0(gB9?6db*u>P0DOYPjk(O&Vjf{bz#*joR(ez>yv&?1 z)CKZF5VD#PiV^@H0$p;Dxr1~Px`hQw9kUVYn*L(*z%MhH?FpK}>aXM=Ld`-GGQ0B} z@t?ozboqZ#HWXv?|KC&mzrUz?f0+MI$%cPBd-zqw+xK08-08@!s&3qO-q*nw+fpOM zzf1P~i{qzGsosY+B0CP6UsHUo-k=#CWT&hLT3iWPv<5m}24}dMeslV`BBDWqghM## zVn`v7uN1D)jlV7EjHsL%ggi9D_#!-oCPe-&;#TCx2v{4Gw+MnYw%H}OoR>sb{;~@` z&J%y6KN44MQ>pC^c_S~C4-=Oc1}Zcp(jX~8{83CO&PFS%2HT4yj$%PULXf$uNnpdF zL4>+-l8+f6;1zW|b=FksEEFB_{Y-1T5v^q#lug0TKe99qAR@po3?aVgH-gj}RNbN# znt-o<%)bGGjrCD87!*Yn4P2K56}>oOS`~?viU?lvQI?;BE#3z2CFKq z0eG_g(4e;I#?`1n^x1PEms&Bv8cf0X!=%~%e08dzr4TF`cNgPM>? z+ek{kR5w8ByNgPoyVazY`lF6BR)4!60h>>cG|2gA5zJDSUnaFc8Y9{wxgM7IY9AQ? z!v0cz5qochzL98ZKtQO907*(Gf7vv#i`MNe7<{z`hT~X$bOq0dHuX$3$H)8|_~1QT znKE*vR?=H%NZpYCstq8Pp>cED9^Q6EY{9e*K;@76OzBw8k_&B_RK^UFo+?A>M+DQ- zJiS30B3cIOt)K*%r_6UdZIGnd$?bBsE`$IrQ(~- ziY=@$xT*Mt!f~n&YAcz1sDA_zZMF1cVY~dW_)5wM{1^##V~K+ldy>M1xMf2w7XX?o zZW1v>=n;%S`R1mx@)Jwy<7QJ6y14lP%gFKR^J(P7)mf zrlasN{HE|NT1*JqrB0H+QZbf61xXvGChP*&i$7zFhmAgL7&X)bhZrm<8WN0W2AnT$(3X7`!`Ydj- zW7@Xl!}iNb`G~*TT2vh-WE8uWG?@JC-4s$#f99P%h9rIzl8PxWo0l>s$+e*#zFhWy z6vCA`VxRl3XE6%v^orC}!B8|$AV?c*_)AQ-h-JB!bq*}T7B$2$hzz4PG69^lT*1?= z0I$+0`H(wk!#V3Ocq7-3h4DpeDCh5I4#^ITv_{rb1XHrC$?SF61B?FhvKC}J(l5gk zEH3EEUI|6VtRCEpHa*m04Z=y<#(YwH%=M!AMLufo70ws5=QyYi!HL>HVNX&|6`8o? z5Bjl}J5A{WNY2QVL|aVw4*`Uql`1$XN+R}%jF@;d$W!n`4z2p>8G1sEX#7&iS{Njie%6PLi;F;Gp{*j&K!hVMm(UeAnBp`W~ z-VpplCvkv4{K0#ob-^4)e?hHBcK*_DY?m|2vg1>f3Ebg&dmB%6Eg6c+r6Fii=1LCt zj`K&Wi>A?EXHCQ39xp`Cjw>`uRsOJFUZ0w>(qE$OCD4btj#30|rj0V*&<3j~m)zWx z@u}QYO&~`p#E?4M_(U`{vi>qs320!I$kL5urxXZCR93D0l}ZKPujx-yr3}@P^t+P( z%ZyZz$`Zw*(FSOxiMBtTL-nO!Y(Qs;I~&Tf4yqmF{JhTQqidp@D7DGgNAeNM4~Cmr zVdpQci254pMc`?dia#4?*=1Z)s!?j$)dU}N$idzOwYSnmKNURBaSljbHot|QfxwqC zICmlK0;ED^W!G!9N37^8N>S$_L>!HJuB<%Sa%Dwl%*a@^$vrJn%|-^?q9};iY8>E3 z=oO`yB~%$P6;;i~iYVr(VTh=TqdTzwl{8CHaY7MdRCMVFOrdT2+qQjV!#;l_=$|&m zf=(qDG3l-il5w2W*X455dd z7lP%X=Au~)@)eOLoAjb&BWn$iQFqEHHKHtyp@?fWg#-)9bU;Y~MFdf8%9bmlA&6JB zAvs&4RN$nZ>`>BQqE0~@fr-KqHeMtb%CZ+_`xKMXd;*3j4k);>08o+=j5Ds3q8nm8 zNo8|$p~ zeNr7KHO)n)9JareFM*esx6ASRE)Pf44_aoJGurtB_1`=a4-3yq=9=Aslvb{T!STor3vgPP|x#yWhPxtIv z^i0q0MZ0`@3)eRtrBvkUg~ndEvGt)zu!vyYA`-U z4!OIiSDopjEoEkq8XDaWGKud#EQh=~`@Y|z76h4wx({#$9*Leq+>6KEgO-be-ql@F z94UxL_E5dt`nQ(TtEKr<_ojmZ*L|_+7-&id3NwHH)^thAVNRq@3;1030?XI8K+b)e z6St)wN#1JJS6$~cZ|%Q$c}4OWvp@cRIo|%vnuC@j*9tguC;UHlB>56YPL}d5@o-9x3u|VT`4at8(_IEgr7i08f7EUT*F7Fn zCxHX19myr!l()1$Y5{HPu5(ub@f{{t_K8Eo;kO-nqHfT>s;^f|2e@R#x(y^-o@VZSs4~$?w}AW0aE8q2$X9i(B10 z`0z44ZoWj0@t=-e`&S}veeBM^>`URDe|+|`KX-Ocp5nH@Zx-J6m%XfS z+>L;bYw_2LQ*?P=?z+7@bJy+Rkn8r;nfp^*&$lRht)4_n%4K^v@(12|u@AiC7_rAIS+VU`KE)I%&Q|OGNBpAj{W*4Uw!w-zHs#Dk$-tt^sB!<#N?84f)H*a8| zrKRQE__?-^Z5Q`WKJ3l=5B}%e{}&j?|39qw|I(taKh^%f&HwknRJ3ncvu?v`bHawZ z&DsrJJiFJlo3)E3EUYyr^l^dqhMqOIrGE{Bl)H|P`~Q1XDsJ+7-E=BaQDXRpGtIO3 zsJ+{CnQu{7X#J=0|Mr!8nptfwF~4lCH0PTOU_2I@i{ZX>bCtOiIlzi;4|ktG$KB`g zOAm9C7gu_lUrvXit%J$6)12_Kj=c+D3BL@FFWl^b_~(b>|2o85ZQlXQ4IBBwASC-T zGCWYg@^H=lz3H>Dzid_XXVRYdb%zr#4ss(~Fdm0@#m%jDV()4hD zdyEevD7O4{`SVK$7cSqr)t2XkUNp;-%d^+TuYG>LRZAU%rpNSlm)x&s%nAP<%b56~ z%3@hHggLTdrQ^eLLtZhzA}9)VWfo58axZj|r>iTNrdbP>tfos_D4$Lgn z6}ig-?Qag~EvbMR6ZV?%sTgc?$2e}fZ)y5Hsi?Vh&5{lKt+&CvH%v3k`5X4ztf#qP z!~V7Ze$B91`R_f$p&1W`v_}Mfzfy2Xb|w)jyC9 z?!7g6YkweJNs?Qw^8R#s3ep>Q->r#D4*#e24 zB|rY5zyMp_YHu$1@ekMCFEF@Y!N4UjkQ?&8OoOW_Ye`En6vQK%_7O*ch5X+l1#>y0 zPO7Em$~6l&>`%M*E=p+s=<6%0t}Bxmv$>&=L{g%&aetXPKe6tpj3`HXB6nWuR%LRP<-|`gUvdEv1-bFA zgfll42HtD6f&QF{Lr0VIt+z>|vh|)X^)3V~gR5udz`2%_h7fOl%OC0qH5!vkHm_8Y zLApV10QDu8DAXz!VXl(?X`$SA=E~gs!*oSqnRI4qDn0V$mY(_J`#3fAI-NN~he@3! zlgo0M^elP&ht|ZC5-@hgq8F91cZpQfVm1_yZ)87OQ6R?R z8yO|>-yKuJvJrLNZ1&~Vg6n3BD1c0c@i|MT?KfrGuFm3*)z(A?bL3=vF-;n3O_G45 zAd)1ABq@j_R4{Q6QnA40znL)gouBI9K7l}KNr~U@^T~#fCSSL#pE#kWsqJ# z0~@golct_^rpDix|5;~B$Rr6TrZ#E(d!{_bEmk#ERTb!fR77Iz)Qr7rRa&_=>CCB9 zr=C5PTuI(=X5qUwReOh)A$moOE3zg{np9h()zmaJG)&@aYGhecI|*iBDhf!G>||%5 zxpC%MXPwo6-`SF*gikv2tf^EhZ&L;hkf;(t+(f75XGxT)+S%G$DVB5%)a-2XZjgAi zu<%`S7OK|yrQC}X3`}3gMZxOs)&_OsH&-`ikKd% zlxSn`7m#uoM(+6WS1>0|yfEe3jVoq1fl>7(1i8%+ z7omJkfSV8l+$A}_oHyp}boc+u#_|8pDE>cCRE1OV|M9;my#Mb{{S@Gu{mFf~J-Mjt z$t7PDPO2-)^@4wHJ4d-$hXzajtFe#`4qa;+16bP(?R{b#|k!hc4d#t>4a+nVrhbLdUaxBKo z`0{4TZC)PFM#_fZHx?)7DE89{u>Hhk8$Qk2%J;cj?GKNtaH8Z*E?(gisbR|}Kl_<~ z{^!r+e*f=tgf|_#XWd6Xx-R=0eNd7(jaLf%?wM!d*E{>Z?_PQ3ceB5j-YEy3PHB98 zzGls3cDX>8tA0l2$nz`Os9wGWs!4W*^PVHzRokBRM5Jm9RflcQZTQG( zQO`cmMg`j*D5z7W7oTVN@yvN!RZl(j)KY#`!vgcHA0#%t|+uP~#b#yeZ`Bgx=OZPPDb=p9c z%kh8Tw_st_-l_pa&@+2;8Jylz2dIVea&1N%-@SG?pozZt#fvVgsi`R`aq!)FX%7~k z^<`l9wzo^}y#S(Dx#aCNOt#sD4|>&*z8o{{y}f*2hA3@gUgB^XGcqUCs2}s@(=9Ks zzDq-Aw&djOMrLGS_PJHH(F+>>X=6JfL~j?`!Us^rJtFogO+CvoA0(>hmbrYmH22sR zqrPoqc2)lK!|fI|++9DTZPXg5S6r1!(Q6Hl{NfkW=Z$^vIG>Ml6*gSC3%>koe+4-A z4c`;$OTM;^-$Ct`TeO1(Hh#a*jvdo}QDDDT+LONjYuAbcnE5|l_rCk4V@J3AiXzjm$n>0P^akC|P&p6<;ys9n{*J^N-qxTW~$=%~7bc$|O1OL6-Pg2tR`0Lpa{ zVzS7k?CxFDr(ZPv`_nI&{)t_8lzP1mhwGn)jt&q1^!V?GpBz4X^poG-xUs!`X1kimjRz{;eAqw-(xg~9(;gGsx-k07xof6|SrcP~atg1H#LcV5W!ZCw*@*Q^!4oo)P z>-u?pp|JJS2fp&TOgvn&Y zZfoOnU94%t!%dix5wUY$)gDXpdXB=ji~Ce@jS!@OhYKbO0tNmzt$QY;wcYfYe{2i! z{cFvk{O)-s<@fv_(@L55qy}A6pc7L`pZEe%* zX0pV!%$Bw2@ILF0>Hl1A1y2qr6c~+5Q27r1=&&`o=YF$ zNKGXB*2Ju0Nn$582c&I|(nvXsk&@E3?oIuDNaiY(uN zfZt~=u(5{r}&7I}4zhu8;2Dj^ZetB$ctQ^KV zI+fqe^TXCMSy}b-0r_B_J5F1E&xa{ms~ajTAL;3N#`R86*B|~UD0iwxM_RKqU?v5< zlZW&@v(}+; zvz~Qva+nmkQZM!jd|pH?20Y2Ul^XnR5}!em{(g&TQs06s64K^DbBfwE-Cv5p!KARL zyK|gY+agyNsudVh(Zm=&LnClaDinv_hnk0HfQZ_DyU-eR3IbE*75YD7unK~@;WtJz zsT6GSR3-ykES03r#}J3SLGT7Jx<5BW!;nQWWtGpN1*`&w;pVG|NT5IbATxgj;y-?RXy1I* z#>^IY#D{|&;~biiblnLe0gv6p+l3HzAs0_~bruhX+sSN&Yir>rsgl?b$v0gXMSx4f z72<$W2WWM8`_~$_1AqJS<+o$3Bb0N+4rNs>8_-x$h)b$+$$-X6ct4MtIA=g(lR`|X z`ji2UVgAUd<%|K1_2MOAY7vGVgT}5gBP7@cM^));AgI+EuMxx7YG_a?$+<$i>==l_ z4z!b`?VfRHnmp076B2uLMnxZqH0Ck3{n5UCsIU;)fkBGJxwDc8wsYXGXW(swfKI|5 zRv3Oy&$9o+IuOwZ8i;;Chb1_Smt4vlK`AHXk+dlO{@#eR8bS(zCmIYn8h~^(;|?PZ z1I}gVDsl`~;}_OHJPT1C8=v5xMvJl{=0Ikkyrc$r*i*dMMO+PW^!(X8^e`+ql5X%|via1oLcV-umR!BpMwm6)vSI7Y z%;50G#_w-@gRz+gY$8}dGc)g8xNzYe#%9#=@juPZ{`>gxndhJX)$HsnxnV)4GP-;I zeydQxAN^bXT<1j6ie<&{KrDh}Yui+e49A8O!!Ok!W%R&p2#p*YVs3y2TuKMsRpT_^ zOa*-5LyDmZD!>^S930$-1s>(-B?+=}xHDmBv=lD*hwmi18} z1=K|<)sG_q3QfVK#?Y3sTtn2UUW2N~Dn!GfIzanU9c+yYsn66H@!$_plSFH&zs}ms zObOy3`iF+0-ZabD(G8Rx8C(%vf>Dx8gEV|?L&c2DCNBbz{CFaf#hQeS@&Fn25t57( zR>NuV0XP|c{1`FdSe?g8m|;lChES2c4ckBOWTm1hz`~R7?qPq0|cVWN& z(HXpnch8$IAKLroZ*l$|z6!ASmwOKGJ+z0v3h)Z==HG?gfqM>tHri?Z|3`=J``=#w zk988uUU)D|H1%IcP_K*n(z6>wUBbGb#iO>IO3}1btMSf5I67=4#5l)L93xG}xe+b8-m-oBt(a1X7Ai`?gVS}P z5+Y?l_v4`R-*S(`L?>b=#O~cD-72(49>F}dbanoNX1e~<728=jkA=Dz4U3bFi!XfA zVh(U4#J(|x6Mg;YH;F&5U#|;WqY_>P9pq@94i?Nrb5G}@JdBYD zVBMJ)8i){ocEULk#3$L8!eWKF!bD>2Z=4@cs_7E zZHB2g3Xjzk)Z&5~A`VcBn9BTe`OJB>(*AXWU?3`|1u<|i>NE8z zeH-o{2r*Y2Q~O!9xlvz!ZdMo0MDN2BWi!jt2@7&25YtjZ=jX@PpKP{}+uR(F7MB$8 zbjq%7n9-*(NI<5EX-tcSlZX!b0UiLMwjo9qI!#UG+~+|Q6>qE9H7>2;iHV8v{o~`9 zdnn?yWx%%lV7yiv2SC$MWUPOn)k?nxD<)Ij;(%RDLMBA+Ub=fH{!92twVdoN3H;!3 zV&}J@po;jJK7sL%;;wv-0bl#)XSMMO7;Nrgq`#Z;h+Z7AoSl|p7ZR6xum_nq_mubs zbH1OFpa>)`G1}FEtSL&!j#z8lW#AM?LvAeY5`T8WyQ%~dkzE)98HvzX3CI~VOe=KD zFP<)ABB{`+vFZuvu|$FtY!ig42`S@wp@!Q58~xfz!VMK*lb6PjlFTcD<|-UXwkcOD zVCLrsX)W<>+?i1ujlvYMtbErE8iCuEuH~|b7bo9IH7RNTBDzT>B)J_Nvd(#S1*y^K z={<~b&QZ5}ckSFc?|D%kLP`=2Fd4&tVE;AQ}Lp z8n&o|Xo0?t9kCdO1@ag{qrX6{4Kblbo4yZW?0}S`!sT+erW}@hn7ZN0bRvroo6an+ zG}QjvZ+{9~5v5@#pm?79gX_*MLT`sO*2ZWB*Q9EBFkFblIvcQqe*w&7aul~U4t7|w zsMnKDg%mIp?|f#BWe;KDL)Gfb;4$r}=htt4{QW%49ZYYq3f}!B2nDWLkyb33T5H|o z>^7f!>)YR^_4~J3QQGf5^gZ_hyKkcW5$l6#D^1=9H6y|y0E&PBi`w(&`^=|V6<;lC(2kL=taswn z>B{L-Cp>-G?Gc;KoU7+xV?szR3xbNb5R>6GMBi@#6Owot_3r9isrGRYG~V_-^UOXv zJI=_+?%mf=o)E#BT*b)tEl9qRvn1S zoj4WK2H|suXR@_va;543GPJXe?xBoDd=^v%7an9xPEJ`s4b&S>#)LtLviR|r&z)w= zhB8KA9yJh%iV@IGEkmP|qflATyQIRF1P%37j-yO(MTv=JbU~9bfM^;cEz4FHkqq!N zOK4|^0DwF(iDcpJ@Z4m2eGKixYacL7H&7(M022V+PU}D6x)02-Z*GT$^|}7JTmN6Q Q`2TC!|L69Ku_yokKR$u2hX4Qo literal 0 HcmV?d00001 From 24ade13e93a755a25f5c91ce1e83fa9d3f1670cb Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 11 Apr 2020 14:12:27 +0200 Subject: [PATCH 15/69] refactor CartFA(2).cxx --- src/emucore/CartFA.cxx | 228 +---------------------------- src/emucore/CartFA.hxx | 99 ++----------- src/emucore/CartFA2.cxx | 309 +++++----------------------------------- src/emucore/CartFA2.hxx | 89 ++---------- 4 files changed, 58 insertions(+), 667 deletions(-) diff --git a/src/emucore/CartFA.cxx b/src/emucore/CartFA.cxx index 5a4ecb6bd..3f1062f41 100644 --- a/src/emucore/CartFA.cxx +++ b/src/emucore/CartFA.cxx @@ -21,235 +21,19 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFA::CartridgeFA(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeEnhanced(image, size, md5, settings) { - // Copy the ROM image into my buffer - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(myImage.size()); + myRamSize = RAM_SIZE; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(2); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1100; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[addr & 0x00FF]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x00FF]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x00FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1100; addr < 0x1200; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x00FF]; - access.romAccessBase = &myRomAccessBase[0x100 + (addr & 0x00FF)]; - access.romPeekCounter = &myRomAccessCounter[0x100 + (addr & 0x00FF)]; - access.romPokeCounter = &myRomAccessCounter[0x100 + (addr & 0x00FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFA::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the middle 4k bank - bank(1); - break; - - case 0x0FFA: - // Set the current bank to the upper 4k bank - bank(2); - break; - - default: - break; - } - - if(address < 0x0100) // Write port is at 0xF000 - 0xF0FF (256 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::poke(uInt16 address, uInt8 value) +bool CartridgeFA::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary - switch(address & 0x0FFF) + if((address >= 0x0FF8) && (address <= 0x0FFA)) { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - return false; - - case 0x0FF9: - // Set the current bank to the middle 4k bank - bank(1); - return false; - - case 0x0FFA: - // Set the current bank to the upper 4k bank - bank(2); - return false; - - default: - break; - } - - if (!(address & 0x100)) - { - pokeRAM(myRAM[address & 0x00FF], address, value); + bank(address - 0x0FF8); return true; } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF8 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1200; addr < static_cast(0x1FF8U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA::bankCount() const -{ - return 3; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0200) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x00FF] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFA::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeFA::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeFA::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + return false; } diff --git a/src/emucore/CartFA.hxx b/src/emucore/CartFA.hxx index 9729a366f..920f2bdec 100644 --- a/src/emucore/CartFA.hxx +++ b/src/emucore/CartFA.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartFAWidget.hxx" #endif @@ -31,9 +31,9 @@ class System; banks, accessible by read/write at $1FF8 - $1FFA, and 256 bytes of RAM. RAM read port is $1100 - $11FF, write port is $1000 - $10FF. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeFA : public Cartridge +class CartridgeFA : public CartridgeEnhanced { friend class CartridgeFAWidget; @@ -51,71 +51,6 @@ class CartridgeFA : public Cartridge virtual ~CartridgeFA() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -135,32 +70,16 @@ class CartridgeFA : public Cartridge } #endif - public: - /** - Get the byte at the specified address. + private: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; + uInt16 hotspot() const override { return 0x1FF8; } - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + uInt16 getStartBank() const override { return 2; } private: - // The 12K ROM image of the cartridge - std::array myImage; - - // The 256 bytes of RAM on the cartridge - std::array myRAM; - - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x100; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index 1630f216e..0d892c9b3 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -15,308 +15,67 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "OSystem.hxx" -#include "Serializer.hxx" -#include "System.hxx" #include "TimerManager.hxx" #include "CartFA2.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFA2::CartridgeFA2(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5) + : CartridgeFA(image, size, md5, settings) { // 29/32K version of FA2 has valid data @ 1K - 29K const uInt8* img_ptr = image.get(); if(size >= 29_KB) + { img_ptr += 1_KB; - else if(size < mySize) - mySize = size; + mySize = 28_KB; + } + + // Allocate array for the ROM image + myImage = make_unique(mySize); // Copy the ROM image into my buffer - std::copy_n(img_ptr, mySize, myImage.begin()); - createRomAccessArrays(mySize); + std::copy_n(image.get(), mySize, myImage.get()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA2::reset() +bool CartridgeFA2::checkSwitchBank(uInt16 address, uInt8) { - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); - - // Upon reset we switch to the startup bank - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA2::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1100; addr += System::PAGE_SIZE) + // Switch banks if necessary + if((address >= 0x0FF5) && (address <= 0x0FFB)) { - access.romAccessBase = &myRomAccessBase[addr & 0x00FF]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x00FF]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x00FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); + bank(address - 0x0FF5); + return true; } - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = nullptr; - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1100; addr < 0x1200; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x00FF]; - access.romAccessBase = &myRomAccessBase[0x100 + (addr & 0x00FF)]; - access.romPeekCounter = &myRomAccessCounter[0x100 + (addr & 0x00FF)]; - access.romPokeCounter = &myRomAccessCounter[0x100 + (addr & 0x00FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank - bank(startBank()); + return false; } - + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeFA2::peek(uInt16 address) { - uInt16 peekAddress = address; - address &= 0x0FFF; - // Switch banks if necessary - switch(address) + if((address & 0x0FFF) == 0x0FF4) { - case 0x0FF4: - // Load/save RAM to/from Harmony cart flash - if(mySize == 28_KB && !bankLocked()) - return ramReadWrite(); - break; - - case 0x0FF5: - // Set the current bank to the first 4k bank - bank(0); - break; - - case 0x0FF6: - // Set the current bank to the second 4k bank - bank(1); - break; - - case 0x0FF7: - // Set the current bank to the third 4k bank - bank(2); - break; - - case 0x0FF8: - // Set the current bank to the fourth 4k bank - bank(3); - break; - - case 0x0FF9: - // Set the current bank to the fifth 4k bank - bank(4); - break; - - case 0x0FFA: - // Set the current bank to the sixth 4k bank - bank(5); - break; - - case 0x0FFB: - // Set the current bank to the seventh 4k bank - // This is only available on 28K ROMs - if(mySize == 28_KB) bank(6); - break; - - default: - break; + // Load/save RAM to/from Harmony cart flash + if(mySize == 28_KB && !bankLocked()) + return ramReadWrite(); } - if(address < 0x0100) // Write port is at 0xF000 - 0xF0FF (256 bytes) - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myBankOffset + address]; + return CartridgeEnhanced::peek(address); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeFA2::poke(uInt16 address, uInt8 value) { - // Switch banks if necessary - switch(address & 0x0FFF) + if((address & 0x0FFF) == 0x0FF4) { - case 0x0FF4: - // Load/save RAM to/from Harmony cart flash - if(mySize == 28_KB && !bankLocked()) - ramReadWrite(); - return false; - - case 0x0FF5: - // Set the current bank to the first 4k bank - bank(0); - return false; - - case 0x0FF6: - // Set the current bank to the second 4k bank - bank(1); - return false; - - case 0x0FF7: - // Set the current bank to the third 4k bank - bank(2); - return false; - - case 0x0FF8: - // Set the current bank to the fourth 4k bank - bank(3); - return false; - - case 0x0FF9: - // Set the current bank to the fifth 4k bank - bank(4); - return false; - - case 0x0FFA: - // Set the current bank to the sixth 4k bank - bank(5); - return false; - - case 0x0FFB: - // Set the current bank to the seventh 4k bank - // This is only available on 28K ROMs - if(mySize == 28_KB) bank(6); - return false; - - default: - break; - } - - if(!(address & 0x100)) - { - pokeRAM(myRAM[address & 0x00FF], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA2::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF4 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1200; addr < static_cast(0x1FF4U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA2::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeFA2::bankCount() const -{ - return uInt16(mySize / 4_KB); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA2::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0200) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & 0x00FF] = value; - } - else - myImage[myBankOffset + address] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeFA2::getImage(size_t& size) const -{ - size = mySize; - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA2::save(Serializer& out) const -{ - try - { - out.putShort(myBankOffset); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeFA2::save" << endl; + // Load/save RAM to/from Harmony cart flash + if(mySize == 28_KB && !bankLocked()) + ramReadWrite(); return false; } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeFA2::load(Serializer& in) -{ - try - { - myBankOffset = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeFA2::load" << endl; - return false; - } - - // Remember what bank we were in - bank(myBankOffset >> 12); - - return true; + return CartridgeEnhanced::poke(address, value); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -361,11 +120,11 @@ uInt8 CartridgeFA2::ramReadWrite() { try { - serializer.getByteArray(myRAM.data(), myRAM.size()); + serializer.getByteArray(myRAM.get(), myRamSize); } catch(...) { - myRAM.fill(0); + std::fill_n(myRAM.get(), myRamSize, 0); } myRamAccessTimeout += 500; // Add 0.5 ms delay for read } @@ -373,7 +132,7 @@ uInt8 CartridgeFA2::ramReadWrite() { try { - serializer.putByteArray(myRAM.data(), myRAM.size()); + serializer.putByteArray(myRAM.get(), myRamSize); } catch(...) { @@ -384,7 +143,7 @@ uInt8 CartridgeFA2::ramReadWrite() } } // Bit 6 is 1, busy - return myImage[myBankOffset + 0xFF4] | 0x40; + return myImage[myCurrentSegOffset[0] + 0xFF4] | 0x40; } else { @@ -395,11 +154,11 @@ uInt8 CartridgeFA2::ramReadWrite() myRAM[255] = 0; // Successful operation // Bit 6 is 0, ready/success - return myImage[myBankOffset + 0xFF4] & ~0x40; + return myImage[myCurrentSegOffset[0] + 0xFF4] & ~0x40; } else // Bit 6 is 1, busy - return myImage[myBankOffset + 0xFF4] | 0x40; + return myImage[myCurrentSegOffset[0] + 0xFF4] | 0x40; } } @@ -424,18 +183,18 @@ void CartridgeFA2::flash(uInt8 operation) { try { - serializer.getByteArray(myRAM.data(), myRAM.size()); + serializer.getByteArray(myRAM.get(), myRamSize); } catch(...) { - myRAM.fill(0); + std::fill_n(myRAM.get(), myRamSize, 0); } } else if(operation == 2) // write { try { - serializer.putByteArray(myRAM.data(), myRAM.size()); + serializer.putByteArray(myRAM.get(), myRamSize); } catch(...) { diff --git a/src/emucore/CartFA2.hxx b/src/emucore/CartFA2.hxx index ea19b0d43..8175f4cdc 100644 --- a/src/emucore/CartFA2.hxx +++ b/src/emucore/CartFA2.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartFA.hxx" #ifdef DEBUGGER_SUPPORT #include "CartFA2Widget.hxx" #endif @@ -43,9 +43,9 @@ class System; by the emulator. Also supported is a 32K variant. In any event, only data at 1K - 29K of the ROM is used. - @author Chris D. Walton + @author Chris D. Walton, Thomas Jentzsch */ -class CartridgeFA2 : public Cartridge +class CartridgeFA2 : public CartridgeFA { friend class CartridgeFA2Widget; @@ -63,71 +63,6 @@ class CartridgeFA2 : public Cartridge virtual ~CartridgeFA2() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -173,6 +108,12 @@ class CartridgeFA2 : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; + + uInt16 hotspot() const override { return 0x1FF4; } + + uInt16 getStartBank() const override { return 0; } + /** Either load or save internal RAM to Harmony flash (represented by a file in emulation). @@ -192,15 +133,6 @@ class CartridgeFA2 : public Cartridge void flash(uInt8 operation); private: - // The 24K/28K ROM image of the cartridge - std::array myImage; - - // Actual usable size of the ROM image - size_t mySize{28_KB}; - - // The 256 bytes of RAM on the cartridge - std::array myRAM; - // The time after which the first request of a load/save operation // will actually be completed // Due to flash RAM constraints, a read/write isn't instantaneous, @@ -211,9 +143,6 @@ class CartridgeFA2 : public Cartridge // of internal RAM to Harmony cart flash string myFlashFile; - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - private: // Following constructors and assignment operators not supported CartridgeFA2() = delete; From ae774f891f8dbf72ebe64df3f50116cedbffad20 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Apr 2020 09:02:28 +0200 Subject: [PATCH 16/69] remove superfluous code in Cart2K --- src/emucore/Cart2K.cxx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/emucore/Cart2K.cxx b/src/emucore/Cart2K.cxx index 24a328736..f4d4ef7bd 100644 --- a/src/emucore/Cart2K.cxx +++ b/src/emucore/Cart2K.cxx @@ -55,10 +55,4 @@ Cartridge2K::Cartridge2K(const ByteBuffer& image, size_t size, mySize = System::PAGE_SIZE; myBankShift = 6; } - - // update access arrays, bank size and mask based on new size - createRomAccessArrays(mySize); - - myBankSize = 1 << myBankShift; // e.g. = 2 ^ 11 = 2048 = 0x0800 - myBankMask = myBankSize - 1; // e.g. = 0x07FF } From 94cbae7a844c8d7c79b0555a7b78e284efaefd1c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Apr 2020 11:35:41 +0200 Subject: [PATCH 17/69] improve CartEnhanced to allow swapped RAM read/write ports refactor CartCV add more CV test ROMs --- src/emucore/CartCV.cxx | 160 +++--------------- src/emucore/CartCV.hxx | 82 ++------- src/emucore/CartEnhanced.cxx | 33 ++-- src/emucore/CartEnhanced.hxx | 20 ++- .../roms/bankswitching/CV/ColorGotcha2600.bin | Bin 0 -> 2048 bytes ... Character Set $f100 (1982) (CommaVid).a26 | Bin 0 -> 4096 bytes ...m 2 - Memo Pad $f100 (1982) (CommaVid).a26 | Bin 0 -> 4096 bytes ...arget Practice $f100 (1982) (CommaVid).a26 | Bin 0 -> 4096 bytes ...ur Own Display $f200 (1982) (CommaVid).a26 | Bin 0 -> 4096 bytes ...ogram 5 - Life $f15e (1982) (CommaVid).a26 | Bin 0 -> 4096 bytes .../CV/Video Life (CommaVid) [h1].a26 | Bin 4096 -> 0 bytes 11 files changed, 72 insertions(+), 223 deletions(-) create mode 100644 test/roms/bankswitching/CV/ColorGotcha2600.bin create mode 100644 test/roms/bankswitching/CV/Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26 create mode 100644 test/roms/bankswitching/CV/Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26 create mode 100644 test/roms/bankswitching/CV/Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26 create mode 100644 test/roms/bankswitching/CV/Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26 create mode 100644 test/roms/bankswitching/CV/Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26 delete mode 100644 test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 diff --git a/src/emucore/CartCV.cxx b/src/emucore/CartCV.cxx index 42c74a808..136e817c3 100644 --- a/src/emucore/CartCV.cxx +++ b/src/emucore/CartCV.cxx @@ -21,164 +21,42 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeCV::CartridgeCV(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeEnhanced(image, size, md5, settings) { - if(mySize == myImage.size()) - { - // Copy the ROM data into my buffer - std::copy_n(image.get(), myImage.size(), myImage.begin()); - } - else if(mySize == 4_KB) + myBankShift = BANK_SHIFT; + myRamSize = RAM_SIZE; + myRamWpHigh = RAM_HIGH_WP; + + + if(mySize == 4_KB) { // The game has something saved in the RAM // Useful for MagiCard program listings - // Copy the ROM data into my buffer - std::copy_n(image.get() + myImage.size(), myImage.size(), myImage.begin()); + // Allocate array for the ROM image + mySize = 2_KB; + myImage = make_unique(mySize); + // Copy the ROM image into my buffer + std::copy_n(image.get() + mySize, mySize, myImage.get()); + + + myInitialRAM = make_unique(1_KB); // Copy the RAM image into a buffer for use in reset() - std::copy_n(image.get(), myInitialRAM.size(), myInitialRAM.begin()); + std::copy_n(image.get(), 1_KB, myInitialRAM.get()); } - createRomAccessArrays(myImage.size() + myRAM.size()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeCV::reset() { - if(mySize == 4_KB) + if(myInitialRAM != nullptr) { // Copy the RAM image into my buffer - myRAM = myInitialRAM; + std::copy_n(myInitialRAM.get(), 1_KB, myRAM.get()); } else - initializeRAM(myRAM.data(), myRAM.size()); + initializeRAM(myRAM.get(), myRamSize); myBankChanged = true; } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCV::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1800; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[addr & 0x07FF]; - access.romAccessBase = &myRomAccessBase[addr & 0x07FF]; - access.romPeekCounter = &myRomAccessCounter[addr & 0x07FF]; - access.romPokeCounter = &myRomAccessCounter[(addr & 0x07FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.directPeekBase = nullptr; - access.romAccessBase = nullptr; - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1400; addr < 0x1800; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); - - // Set the page accessing method for the RAM reading pages - access.directPokeBase = nullptr; - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1000; addr < 0x1400; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x03FF]; - access.romAccessBase = &myRomAccessBase[2048 + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[2048 + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[2048 + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeCV::peek(uInt16 address) -{ - // The only way we can get to this method is if we attempt to read from - // the write port (0xF400 - 0xF7FF, 1024 bytes), in which case an - // unwanted write is potentially triggered - return peekRAM(myRAM[address & 0x03FF], address); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::poke(uInt16 address, uInt8 value) -{ - - if(address & 0x0400) - { - pokeRAM(myRAM[address & 0x03FF], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - // The following will work for both reads and writes - myRAM[address & 0x03FF] = value; - } - else - myImage[address & 0x07FF] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeCV::getImage(size_t& size) const -{ - size = myImage.size(); - return myImage.data(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::save(Serializer& out) const -{ - try - { - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeCV::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCV::load(Serializer& in) -{ - try - { - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeCV::load" << endl; - return false; - } - - return true; -} diff --git a/src/emucore/CartCV.hxx b/src/emucore/CartCV.hxx index 3b872ce9d..4e18040a6 100644 --- a/src/emucore/CartCV.hxx +++ b/src/emucore/CartCV.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartCVWidget.hxx" #endif @@ -33,9 +33,9 @@ class System; $F400-$F7FF write to RAM $F800-$FFFF ROM - @author Eckhard Stolberg + @author Eckhard Stolberg, Thomas Jentzsch */ -class CartridgeCV : public Cartridge +class CartridgeCV : public CartridgeEnhanced { friend class CartridgeCVWidget; @@ -58,47 +58,6 @@ class CartridgeCV : public Cartridge */ void reset() override; - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -118,35 +77,22 @@ class CartridgeCV : public Cartridge } #endif - public: - /** - Get the byte at the specified address + private: + bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; }; - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + protected: + // Initial RAM data from the cart (doesn't always exist) + ByteBuffer myInitialRAM{nullptr}; private: - // The 2k ROM image for the cartridge - std::array myImage; + // Calculated as: log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 11; // 2K - // Initial size of the cart data - size_t mySize{0}; + // RAM size + static constexpr uInt16 RAM_SIZE = 0x400; // 1K - // The 1024 bytes of RAM - std::array myRAM; - - // Initial RAM data from the cart (doesn't always exist) - std::array myInitialRAM; + // Write port for extra RAM is at high address + static constexpr bool RAM_HIGH_WP = true; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 6752d3153..c479ddd92 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -42,6 +42,8 @@ void CartridgeEnhanced::install(System& system) myBankMask = myBankSize - 1; // e.g. = 0x0FFF myBankSegs = 1 << (12 - myBankShift); // e.g. = 1 myRamMask = myRamSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) + myWriteOffset = myRamWpHigh ? myRamSize : 0; + myReadOffset = myRamWpHigh ? 0 : myRamSize; // Allocate array for the current bank segments slices myCurrentSegOffset = make_unique(myBankSegs); @@ -58,24 +60,24 @@ void CartridgeEnhanced::install(System& system) // Map access to this class, since we need to inspect all accesses to // check if RWP happens access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000; addr < 0x1000 + myRamSize; addr += System::PAGE_SIZE) + for(uInt16 addr = 0x1000 + myWriteOffset; addr < 0x1000 + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; - access.romAccessBase = &myRomAccessBase[offset]; - access.romPeekCounter = &myRomAccessCounter[offset]; - access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + access.romAccessBase = &myRomAccessBase[myWriteOffset + offset]; + access.romPeekCounter = &myRomAccessCounter[myWriteOffset + offset]; + access.romPokeCounter = &myRomAccessCounter[myWriteOffset + offset + myAccessSize]; mySystem->setPageAccess(addr, access); } // Set the page accessing method for the RAM reading pages access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1000 + myRamSize; addr < 0x1000 + myRamSize * 2; addr += System::PAGE_SIZE) + for(uInt16 addr = 0x1000 + myReadOffset; addr < 0x1000 + myReadOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; access.directPeekBase = &myRAM[offset]; - access.romAccessBase = &myRomAccessBase[myRamSize + offset]; - access.romPeekCounter = &myRomAccessCounter[myRamSize + offset]; - access.romPokeCounter = &myRomAccessCounter[myRamSize + offset + myAccessSize]; + access.romAccessBase = &myRomAccessBase[myReadOffset + offset]; + access.romPeekCounter = &myRomAccessCounter[myReadOffset + offset]; + access.romPokeCounter = &myRomAccessCounter[myReadOffset + offset + myAccessSize]; mySystem->setPageAccess(addr, access); } @@ -106,7 +108,9 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) checkSwitchBank(address & 0x0FFF); address &= myBankMask; - if(address < myRamSize) // Write port is at 0xF000 - 0xF07F (128 bytes) + // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) + if(address < myReadOffset + myRamSize && address >= myReadOffset) + // This is a read accees to a write port! return peekRAM(myRAM[address], peekAddress); else return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; @@ -115,15 +119,18 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { + uInt16 pokeAddress = address; + // Switch banks if necessary if (checkSwitchBank(address & 0x0FFF, value)) return false; + address &= myBankMask; if(myRamSize) { - if(!(address & myRamSize)) + if(bool(address & myRamSize) == myRamWpHigh) { - pokeRAM(myRAM[address & myRamMask], address, value); + pokeRAM(myRAM[address & myRamMask], pokeAddress, value); return true; } else @@ -131,8 +138,8 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) // Writing to the read port should be ignored, but trigger a break if option enabled uInt8 dummy; - pokeRAM(dummy, address, value); - myRamWriteAccess = address; + pokeRAM(dummy, pokeAddress, value); + myRamWriteAccess = pokeAddress; } } return false; diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 6437c362e..6c67b6eaf 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -40,7 +40,7 @@ class CartridgeEnhanced : public Cartridge @param settings A reference to the various settings (read-only) */ CartridgeEnhanced(const ByteBuffer& image, size_t size, const string& md5, - const Settings& settings); + const Settings& settings); virtual ~CartridgeEnhanced() = default; public: @@ -160,6 +160,21 @@ class CartridgeEnhanced : public Cartridge // The mask for the extra RAM uInt16 myRamMask{0}; // RAM_SIZE - 1, but doesn't matter when RAM_SIZE is 0 + // The offset into ROM space for writing to RAM + // - xxSC = 0x0000 + // - FA(2) = 0x0000 + // - CV = 0x0400 + uInt16 myWriteOffset{0}; + + // The offset into ROM space for reading from RAM + // - xxSC = 0x0080 + // - FA(2) = 0x0100 + // - CV = 0x0000 + uInt16 myReadOffset{0}; + + // Flag, true if write port is at high and read port is at low address + bool myRamWpHigh{RAM_HIGH_WP}; + // Pointer to a dynamically allocated ROM image of the cartridge ByteBuffer myImage{nullptr}; @@ -182,6 +197,9 @@ class CartridgeEnhanced : public Cartridge // The size of extra RAM in ROM address space static constexpr uInt16 RAM_SIZE = 0; // default = none + // Write port for extra RAM is at low address by default + static constexpr bool RAM_HIGH_WP = false; + protected: /** Check hotspots and switch bank if triggered. diff --git a/test/roms/bankswitching/CV/ColorGotcha2600.bin b/test/roms/bankswitching/CV/ColorGotcha2600.bin new file mode 100644 index 0000000000000000000000000000000000000000..318a2d41dbf669d758477bbc9a46ca8f19c7df76 GIT binary patch literal 2048 zcmds0O>7fa5PrLM{72$VN+^j)=|Yntm(T`;XoUC)RVYci2ZWjn?O{=ymPknDQaOhr zx$aKvm^e+zZg6rkRvzRL(Gpcw#Q}**B~8+UmkWYJC0`POFI@ye{vmN^<6R#>9DC`k zwKMb0&zt?`nd=1pv2gQ6uiJ+rKS+_-?DBMvUShQ{!p0!N4EUZA2%-LgeFEXtuz0G( z{J;b0(+g~Oe3D;{(plXlUdW4|6~%#q__QGUisHQ@`xrb}>Sag4&3*wF+PZIg^d)NZ`f8 zlLf>t%I(Jt7{L_;?-G@3m+QpW}dZgzFozwSWUruko z5#nci%K^jiBtS_K@#g~Kjuel$xr0i~m4IQ4Fs?n!8#OYm?RX{$`6e7eb*VQ!>B!QU z!9R~QSCoRs0kM$n{evD3e1c3!G$L|&s0Wdbm_`Haz-7KC(@|s7 z!f4;%d~X>p>OM9Bqco0ooW}KS%ng@teG_aQeq^U$jFsUhCc(ILx`^&2G%F#u6(TS$ zCy8=dgkqAzV$;C!j_R9drtVA`-u%X6c?RKIZ5T>Tds&;kKw2kIzV!D%ye_Za!;&{_=MMkc>k?Ssc-Kbf(E;W}ZTk_WL zWgcKOa(CpWn~tnRq_rZAtc-w4LxU1%cf$yWS2U@yM75RhfZ7MwQ)Gr2fm?r-K{a+R zmG#;v+S(TL4Qf}% z{fXO-^{Ox5P_mile zO*)Y`AMorB)Zr@pAVl>iI0Dj#pc3~IB;T(HN{n?uU5Y4Pq~wiC5A&T%DQv$))<(Sq z^Q~iNV)G%`hF!e#VQ4Y+qijNV#-wl8Vt8+zt1;byrMaY{|4IHY68Df{FI8dN{22JD z1}!Oa>({kmFL>t1LCED6F0RI^jDcs^o68|fDl(*1GZ(C76v1Y>jp#&a_< zi{g#qsyFPhmymRt31-Ka)|hl7K%lO&)u-s-1xewa9%bLs3(|r7Vnq^`UOau^b;v6z zRlqjRpFB^*^CIzBLb@t4G-MmEMC{EE4ZU1rl~h!ZU0BVtTXqraIJ<$zKCL>29kI{) z?=)ADjD12T(_4{@72&u{b#=5`Ct zj*wt~e}8bNDZ%bwLlA%XG$4w)I~eRYQ54fc2m?XV)^>cL?RagO>^OGji!TSh`ugnP Nxo^1gYedMK&%ZpZ@(KU| literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26 b/test/roms/bankswitching/CV/Magicard Sample Program 1 - Display of Character Set $f100 (1982) (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..6eafcbe511a3d16cc2d1740b63bfb71079f91999 GIT binary patch literal 4096 zcmeHK|8E-S8Gkv>7@xmz&gzv&*>ug))Ue8;YbQBfqZ&9OxL#~(SO)12W2(I2Dr+{W zk~e8h0sAHH+1Pvu5os6ga`Jf`YCK!2ySkdCY+5Qnop$Y3DU~*rc}d2slw1}&N^I=g zd!T6l!|FpkpZD{;ywB%(p7+(OLsh@rj|394Kmc4eSFI58eX3Yrm<83DSx{+Jx&>ff z&W#eyxlPt|hdRB*_TBk%cWkfvy$V0Z zBMYQ|HF02I01OZXz=Odj>G&Yc;DjMY({v2b>oodF1vdg}AcE5j!_c*Zwcgq~S39^? z>+Q4l)e1FhAD{sp!LA#xW5q)b++A6yE$|)0E$-G@tj5)9`C4z4AqE*H78A+~`D#AD z06=wNy=#4;+8df=twp?RZf=d|3+r<{&(O@P4%+?d6*uj;f)fD0?qOLw?X(Zlb|33- zIvq}*!}X%W<98hQI0jt~FY7qrbe!-xk9(cofYTeKT~61~uxHT89QQK5VV1VDbbzIU ztZ#T|*gibOBJiOoe!I^f@cDyU*x?tPtkcQTPS)dOPtdLa?FxDZ1D-)`)!>lV>$ZE{ zUN39+vfgHdVZUeC@AJ8wJ{RqCdHnW(-yZb)0{(!#8I|%-RKP+FpQKI(P6jQ(UJGTX z0#xww1SW4o4C){OJ7E_zi5!fHQ*c~T6HyFua7wBrBA5UaN}M9iA5MwSk{!r?hcqC2 z)Mk)W*A$%U?~7nO4zX3B5a@xOt5yYet@;&cLM}wlXf&@(LX-SiRRWdAkY+>AW~f+6 ztL+b*rB%6T(aS3$hh#XhAIWgy5hTNj&oyK?$gv-62_(eI^0s7cBn=W-OwcWJwns|s zHbTZFpkPvamisg&W0IPUmC1izj$zEhD#4--NQV;VvC#a?a?bKb|Gz2A^Dxc87(tjv zVlXB>K$U~}nM#Y&Lh7m<15<_7C+hRF=GULB!=#vIBvTTT6qx4mrP$-?3mM%cc~8LS zW>%iA!!&71KDC@dCzHu$%H*c)&|>>?Mr%le9!o9u3MfTh|JBSZljN4>ykqM@?(U}h zM8^8ijU-ZH5+$?&$N3fsq+*jx$;Z?CGdeUPH$uSbKa&TBj(z5@A5u(;Vlrul#3Wrw zrx;2`QZHd4Ngs-53hq^KUv3rDFgKqGSy~Gv%(hW7D2fdi+U4~UChNnDJ8Us3pL6EX zmV$f@twBo)s0ugQm6A@z!)=s1j8;oJ^GF=Vli1C(SEprMJbN_}a%<&MAJoGZQ=6^y ztPLAAp!f5T)COnJ+qs~MF&h@=#BpS&s2^>AI73!L{PR?;UYw3%UE1-Rj$qoBNC#l1 zK;5X9<*l0;c~daPGndZ5}?i_Jxn`7M1@LgOMDgT}F!if?7)|z6&0>R-*Y+6FTSdz_$X|1obTm2-fTyS!Y>(AbfIBy^A`Y7{{o0cBJn@ zqo9vJy86;?_U$rxKfYhm!&$AG(_1&si{~v=BDjGz^yLyk8mQNI*tK1`b3PJ}3fQFy z7-2u&6`|#B8;%+~0aF4HBhggjHo`Nl*+jKcH{m{&TB3MQx=xgC$7S)sXLkB`-`mmHm@3XNOdeeY z9@Q;@D~(H}m_wc?>gJJIn9MQaj77hQjpF(6k=yEAGBima?Cw5DPo}0r-`~|f{{_oE BV6OlG literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26 b/test/roms/bankswitching/CV/Magicard Sample Program 2 - Memo Pad $f100 (1982) (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..14bfe5df108035cb689f43fd1f597f1ba96a518e GIT binary patch literal 4096 zcmeHJ{c9WN9e;E_%d-4-$?8>M*|=nBYH1~?YX?r(P)j-o>3XqMOU>l;hiMdVa><$v z3f^E%CE3r#J-_KC3QoH)i657)r6%d0ZA>qf_@$y*$-|#Z)5Q{BEY>L>>At`W>~~k~`|I&FZr`1+ zcZYYX-|4_k2X;EJ(}DlT4%8PALZ9qK{W-%n`gH!6Z=+p*t>W)@BXs1EzoTDM5%ese z3pi^199?|0ig5vO^v~!g!!MxU0=}g4u`6ibL>14Q0UQ5;erb9Wy$$%X&YS*;=31(V zRuHP(T1AJ^r`z~l;G19FLrb^6K zR}lKm$syzkJ-Lm~14lo{XwRuC{$d%S*RG#Mj$-dNJ_Q`zNFn)ORqW{KKpo~RN~5kP z7`}^PNwYD^FiaFND-8TnBu$9!2$KxUvP^k@xvjh+l=m-}+YZ?dm9u5rA;cgiOk6iz zCvpdzq`Np%o=G>FZwa@Sqh+C7&Xn6qthtM2qfxOilPP5~GYFMtR+?94N^QYm&Xyya zr>2(E>Fml>I?Xcdt4_xK>SZ_MyiA%AdELWt4#wr^VjMos>2f(;K4<3(PLJPt%;W6p zbb2}GahLPB&vne}@&;VqUZ&I4+1=ymaE-}@;KlFo z`2#+GukNhV1UAk3Qx7X`-c->wv=kRjgs)ruGr^oN} zb-H|=jIYz+n`X%9^YtaQ%_`b6MFueG<$N;~KP-Fs<>P&P1u4cLsE za5HX^1RRw{@Sv=XMF=e55xG1TCPbvt(g%r86MoUXj5_XqF===paObYrx|q^w^*=0BZ5#>U;2?;KEDRJEl=7Zf2I@&?tIH&Hb*5tM6! zd@}1^MEBtetc8T>WYAid%@g+3yirx{q}ZUW95TySHT8MvQUK^ zRwZvx$WT4)4uQ37u=Memj}bS|Tp3kJ>CBa}pj$7O{;(3Vw$$76&)A86V`{P#lfBV)R!1@%3BsmvmIFnlm#D=7Da zP(bVI;|s$Q6ppAgM5T}VwT8$o((QzWD_^jt;aLD0DhXy$k~ zJqWudM0Z!*Qq0^J%PgcHq$YEvVvT(*sa9XfvckSmW)JO>W!4Epga&iyP(~Lj*krz^gEmKi`XRA@Q*IOw3T|hK;7r} z$TfIEujbVH&2!Q@D?Qe`3Jdyj-b@+k*EhN4Ev0EX%tu7x;t&pVpKeLmdbgg0#tz}Q zh@@~N-aZe*ev}%T$2b9qAr3zwH{w<)0ZB@65G5(155piJSZ=75JGTWp=1nz}ucK-$ z{q;&hF^Y|8qp~+&4nMxOWms$2z5PBZ<(`&LcW>$#=|4Spr0RbY_PNU z7Bd>sfOZ1bO(Ba$KR4h2m?BBI(KQkO34gPpbfBy?Yd`%hv literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26 b/test/roms/bankswitching/CV/Magicard Sample Program 3 - Target Practice $f100 (1982) (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..e650f2ce4d12fd77c28e8bc5b70a76d990fa107c GIT binary patch literal 4096 zcmeHK|8EoL8Gn6tjAKH4Faly=W7UBuj#Nx)ha+ZSZJM{r}0IrN8lsd;t$oO?NmHnY~b&FJ(-IP7=?t$KWxkJ5_id7pW6VQwyX(2E=Yj($Og&~H9V&WZ1@NIneJ`$F5qhlU-wTmW~d=5 zAyipdMElSuReT!w$`|+1^;@4I^aVm6W=7HP-+LeZF+EYmXEO**Uitu;ewzdQ9s2n( zgnoIv8#x2dRq=|S&v{&(Y;Ak$1gc~(HaNqzspwFNbYTZRg zT4|R?uMN{Q9Y%DChF1z29ik2dHMGm+qRZRL&E*nX-Zous-fiAp&Xmo&5sl~|F{_&; zvfFJMM`5Hql4{T|unW`SGFvXE%gsfXzSZRlhq?Snx|mLnAXFSFHI_z-&Hf(7oYgd5 zyf~doWl9%QDHrW}-9|fJzwDrGmo<8%nRPOZm9|@3X{(2^+3hyF$JX+S&FQrra@ty3 zY;MMO#BMv{u^)2V-9Ed!oo=zW9By;A+Fgg-E>9anTN&EN(Cv(;?Qom5?Jxu2fhb<9 z$LsTW+m*0wFWVWrouTcF)6N{BTYPj&yR+5jY*j|J9(KDOR=30LW~^?;U5n7>b+&mu zo)){Oh4!>Ky;h&s+V1uEygq9!D&?dopNVQaN*(nbZ8xt9DFZnoa*KGlMT>*m()W0qD3pnExovR@9rRx z(qLi|NqTtjx=FKy8z;RIHh>H0Nrk4R9&8XlD+;La6lhlUEZTyZG+X|}n$}3?O=@w1 zXF-PL_ks+|?*kc@f1xVFVwU-6i6b$Q7ncQdb<(ImNpPxh*0M3T)}j~Tx+f9B+9dmF zSR@2F8P1b4m%@bWQI=>_g@o<>X9@rC!1$2qt-UuX(@Qw+!ePDM*b&BI;UQ#>h6f6D zQXQ!(vMwCUOzx}<4;tUxRl!j{?h*`9LXdDgr5Ou96F-+w^^o^D&BcL<=PNi)8lumQ zCtzo~l8HQd&$4}V?RY{dNR=LpjW%;I#guwe;#d#4q&RO|n!vrj=01`zKXQXajE};E z7V)W6oq%HDp0VgN@hu4zSmdG~nY|~|NZYW%_|5H-L6Qsxr6CDHl~YODoQ_lrgkMnm zBZ-V-5KXOF2SR2V9PTNhf{I8awMU;x!lpLo$$s z16C!c5;cK($`OFkg38zt!I3C2fBH(FsNqjv>GwO7bg7Rj0h6KLlG|?~I&PU7gns6a+F^9ex*eS9J>5;#hhgss4+^A+(L(Q3W0A5qF2>Q^F7Nbf64rROv|f;&Ry zy!gNm38cOw)+w-O;_9t)AK%SNce3K5l9)C!$mst{FI|Aa&$+wdBy!ep2dS1Q@74JVqQ17h>-@`gi9oanj>T2@c zJozB9MNq>h3uJR*Y5pvK)dh5qdR1IE9E^lG;zBnLGM}vS*mSpE z1BLCzF%I#;P;Bown4KuuJ&ti45Q9!+P-wtSd>kgp$Dk?lA;k(1~Y9G}B!X z0mp`G^!{X8#%Ctst1Ef@jLNs#C3ne7l`eVD%HGuvRutAH^8+qd8jb>|>=4l9>LHRH s0?*Ehv11TNhg|%CNj*w*YSMvyx8#dae-FKF{rYWmPpr@XgH`4CA02+|&;S4c literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26 b/test/roms/bankswitching/CV/Magicard Sample Program 4 - Generating Your Own Display $f200 (1982) (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..25a2264d5a78802f7c48d3ce8ee3427f0e9914f1 GIT binary patch literal 4096 zcmeHK|8E;-8GrA5aUAE1uVrDbRM4$-U2LYxV?#>Es>SxXvTxVKi%qe+A26B%&Qw;A zCIuwc*^b|ab% zvsLjopyez-pZD{;_dL)0JnySl&#CI(^F^+J7=8y@Y?DHU|$Y4@M*-stsId4*~GrSKG0_@f;{MdlIHqphA`@5G)>0< zy-uT7mI(u(`XU6)FbrKgRO_j&^R+`OwVtEaqqSnqdKA!rj^L|?RlIcALAaM^YqR+d z<8A)-O034$YK2-)l`-}+Oe`i;W((CqVHSYu?0VPwY_%tpV67#hYkGPmpD(UY=kpBB zyy~FcuU>c4j_ZUG5UU=RwbM>}KW+E14yV)M^f_EFIy`>INspu7G z=?yr&LE7bX4Genvoy`D42L|nf11tg`^5VDq`~jaosJR_{!O1$E zEbU}HPWBY-3ec{gr$6B7*R1*nyk586>-KtCyO;GgJq-FigMOdS<@C8|pUdO72mJP+ z-xu%)>`kwfhoS-&YVb65I&eB@3HDehI~AaU*R-Yr;t+#I*a^F!N#tQn9D}2hnvCL* zhhtJL8NmghP~sSAet%4Smh3?CTcjSz<2Jpdy2jvG@6iaJCm_BA6eD_I=aN-{T}yri znve?7a~dru322f(sY+n^F%+{A&!%6tl2+UAc}uHu*`kvdMIMFW#a$7EbmbFm8f57a0z53>Yw zShITy%}gvzS>EXV7iD=KW*8VV8qGs77?U2L%)!jWa*NVJVpX1j>EhB8^_fZY>rd8U zO3W~lDTPZ4%;bsr*yEW?Su8=`6Nu@F#i#2qLz+@gEo9NjWOCUGxoJB**S?U|3eun_ z(sMlmT4G-J^Fb)uwqgalSvaKE@5R%(U%RRPQpWyF2rSv?j>+vZWYupKa&kvT8m}e zwo%qAij5H3<@GWy>%xpXY%wUG^5)@|qI?tCAd@1>!i{#NjLAf}jdF*PwS<|6ILM{& zwevT|WkNiEBN=jQ=~D02!xmGUt^BMFAJ*rlsv)TjPEcpJ1XYaLaE=#8ksPCbu>Jl7 zSqQ=oXZ>?qJO~JrrubhLa6Df&I5o=k=fab(( zMaE%@T$c_aMqRGUH`x(Y0x*kCYkvD$1Shv=A6Y4C{dN%l)N3Hk~;z}o~P#PB8LQ3sw2%j=cY!{sR>g9b+?!@4y6i< z`3JeFQgvBp+YGynXuI&j;&--Cy-Le1w#{nTUDnB1(H*9a*WHDL(l*b*6!Ir;gsETF z!)UU*Y8F!@o>zxB_tcOUFpU1}YbuKOzxeZ96=_S?aoeVZBTF=YCXP8z2EGxvDX2e} zfMCtNk#kn$2f{~})w`(T$x)oTx`RGC41$h(bm^tt+*=j$K6e0picD(RoZVWxC|0Xs(3i_bQcu0U!>;Vgoih=rXubSn{UO7=<_IZ3l@~l zl7b5=Pi}J&G|SuWlJ}YkqP!j`w~fV0rQAh+>EV@uY4-=ZHki44O9d5PSdvtjJ97aG z?2f1->Q;S3eP*Y3_njS$ji}-T!xYd};8EQYxZb!#N>fPlMBO|z2~$&yIAPJv;lo5B aeC&=ooeCxBL;Lm}q7&)y(06yW-+uwT-ATy+ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26 b/test/roms/bankswitching/CV/Magicard Sample Program 5 - Life $f15e (1982) (CommaVid).a26 new file mode 100644 index 0000000000000000000000000000000000000000..3cf4661191e0c0de8f783ebe1abdd34ffa941789 GIT binary patch literal 4096 zcmeHK|8EoL8Gn6tjN^p(U}Oyvo34y6aaJLB?Ih@mitP)s-6OcMOC9>dJXKkpij_^O z#3rrOHhE2Yi4(`hD6B&>r@YK(mCT_8a9Acb738xz?aJ1PN}HN7$h?S}V+r39C%5Nf zq5Tgl{_=d@&-32Q z;7L-zgJcp9X$$kc;{w`&6h&8xU1AO{jE<9h7gE4C;ca(F-mStUK1=eOFV&sZv{9)} zt{2tzOZXBOzAI6(iA*YIu1?aTWPou&Id!!_pOlQUnG~e0bZVwR4@oBNDalIXnMuOS zc8CNIL9&C)#=Er--_m`d`+WB~iLy0Idc{av$T_8fub>rO0BlP&J2+uz>m2% z?|!vU%9HG$RNzSko>bufs{-{UgwQ7&P)|{}fx9QYXhpzjs*OTgDP9>0Q~9;)F9GhpN2&`(V7qYnVz(D>@Vqj5_O z(JVsM+w<^y_~{CM3;5EP_t8J@e2&nU2wlwO(QiLIhklW~JhEREIwrO^(+#2lT z+KPsz(a{^3Om22Glku>gw;inO?aMCKaoJ!-hMR7Vv$IZn2W$6n4yV)M^f}sJak%}C zJ#I%wyTi*l_BkEyr#ImAcCqcw_Pw3%4yR|2*W>HtSUblCIJS%Pb?)u7ckbl? zd|<_I_xS@pf0t&q^JORJbaJedb33_xYVlxO0@+@?(`jE#JvYM1H_?Di!oO~VD zz>*wf;euU}bh05-&$vRcTGX|4$8an`%^bZlAREZhEAgO9OP86fhOCx)oAiQ>>M^EA z%0aOnTHAvQ0(8qZD#nu|Ap4m&7q1S|L6i(2y;s#*M$*O#vJETGzor2SvSv(V_=*6*K zO3Z;lAht!GZj@3GZ|aAM;zjQlBep+pN$gJLOQIoHcN8Z{Oe=FFu30K5=d`Ud3x+M> zEs?g8{4fX!WWFocY4CjE+MN@h%oUaY6y

F=K24BJIz3$HCey^7OywtMA}OVZ1_ zoGZlath%y&O8s~YC%~ROA7Xx04Z&n{xrHQXDx-GCTqE6@!w`JAcU18AKmX&gGH8pJ zDce1ff|W3TpjYSI6ZlTxx}g3-L_%Boy|l9=KN7B;ROg`L@go%T;ga|&HVOLJQ&X=m zr#~ps4`b^^J^V+4Yz{8W94E)EOuTCzHuMe2OdFYZm$)0t^6Jy!SVW*s_2Mx1=`z9A zxq1T>wigczh=e1<+b3YygVMbd7$*TS_=ydPjkuX4AxJU|qD&&%Fbo2m6?>bxD!Q(vr(RCVMxildls8EAFfwHf@>BU$WW_jBjeZQ6<6oZO)ZSQWO2P$5)0< zyFcLC@Z|4LWmSA^N>p+Bz%gB5`H*@@U8o*XpI_R(e11t|hg34?@nqpDaH}p6U0%6F uiX))eT5ahb!ifIn literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 b/test/roms/bankswitching/CV/Video Life (CommaVid) [h1].a26 deleted file mode 100644 index a38a8e7b127c389d7765e65848e46d29d1e94bb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHIeN+?K6`xE#NPv*|fq;SxDo6wjZT&!3ThF3vMYa+xwe_q@cWbM*du+9S?dh=z z9zJW>4eCF3L&;zaEKV1Q&tr=HS-qWCno*C4D1$PS?{v+P~d5 zU-#bkyZ63(=iU24p*MR>$&g6PCTq3gAAM|ye6)1xf+?$~ue-WyUdon;jOn_$)3jK^ zigZ^(_{_+3ZALRjM*wc`BnaeSV}oBT`o=JvmQyYhiAAwDgY& zk-KwmZOPiMm_1$@6(1HsCN7*kDMKY6Ta~IVSa)f4M$zA#p;_A0S@OszpipM)i=VGa zjoKZT{47J2HBGbp!!)gOw)=k3U2dP(>urXYZhw5Q(d$2Rb#wQXp{#^YfNfa|YWj6_pPl`(Wj@TPt<$ zK0p89g1CRrnjyZh@7}hrhI>8U&Y^AFj(^(u;I5nhx%s5q)8ywoHh1R;wRPCj%bk3@ z&IWIG-fx1i+ugXdtFe9PR83#_`+;LOO+BCg&T|+A(0t=qFWYarJKzuUgC{#yy19>f zc~86BO>a)eNN{cTdrv)OU)?;nm1((`_v}{R+Tmcw zushhlg=_z^n0E*HH9Ty-Yj5;eR_TI+?QeHAH5Kj%Z0)&xp5g|UUpjod`!55AI~#t# znB7<9hW@|jA1pY{5Ad9CE8E}M**(bfZrI!LJx^=U1O2B@2e?wt#81KP%FBxyQZ`>E zHfCqDha3NN=Ux5bgiFR>eo%0oG)XT1v(nvq89JKW6~|p3y0qbo>t=_gt@noeeRb34 zZx6lM)&E`e-(}#<&VbJhWwa?1_nBz3M#S!9^nd_K00%Pw&R{@Qnp1mG$AU>0F+YgE zNcj<^;}C`Mh@yB9?`jnR)jteS!h}HL|D(fTecgE=5grCO`&;A?A9aQa&L|eS&kVGR>sMYs@y}+N1yyATuTaDF`!8W)|$P#0%<- zI2>kB8h{93`^lFA#9~aQFz>=x5_9QTQskmo5_e&KQtZU#Cnx6wt=ELry1D}S7sv~gd|p=o;*{DHBVbH% zPRxq+J4IGqzZ17o{Z6qJd+L-}bx)mAEA`YVvtk3zFsp9BDYsGsPK6a4bcS1XgU$#m zHCQ0RC2}>fNWaU=U?)iIsL9X=hfwH}R`?u@r6K?>5aXz@QDQtWg1w-axdJ#w4kmyI z5J^;yFxkWxBa8}6^ce^?gl^iN+mf95h?xrtK@pRWG%%!LN7FvLI>0OwbVdMx z8G;2&Fbhlo5VjEUlV`-l0Ff3TEW-#*VWzmcLOjQOmtL4D&J{ne)8h(N^#ZlbWYmnb zjIgaH(-nXW$=)f4jjV)O1j=cEwyJ_QLaEP4>{pa@}g-y zOr!NJ>tPgvk4Mqykv%K4WNjP@EH)a2tkXyxm$uf z%d&pIpW`^5=UEEV{l|^;mS>8y9_Gbvk^&2@N1s|v7_c5eTcy^uV;GPM2{`UD4ueC0 za_t-jhY?S^z%Zx;)rmJ1(AigGWo6+h^}?LpaVWV#YOkOimB|iieMNP%rTL)xX2B~JN2LG}6yC9K zMhZ0t$-Wnmt^#DOijt76t?FT_gDxa?J)?T)BH`0Y7qenS(8UM=>Ak?BQPnamurU~k zks=Z&#iWEd{*1P0SSYEkV&|Z6b86AHv$@)yCEKDA%+)CnB2;i+3j~ge?ukH%QQ-vy zLPAOkrcBwnGk>Qr@~13boIhsF;{5!4Btv7dARDt7Nzo# z*Msx)IbgTt5mf=I%C^E7Csb+`sH0Dz<%&Q#6HfdlL@8~U(?(jHcG7m}LaUmuE~n}R z;7fIsicz=pB2kA#PZYqF%JDEYFo8M1vdWcz2FFqOJ~HnOlQ zz{+JMz7lh1gG5$hzEg96E(xFWSq^#eh0~e??6@PEFllMDCE6ZsgECOkd_djdw16_F z9qe=3z<#tqL3ZrFIvI5l%Zjp6E>@QpQx{Q)zVgNutT=bpbJXw@auCCWP;_(!J2(`( zVK3OrU>k}-v9}@lwYnW`1!$YKgrMR@0Sm>;NI^8(-}=6ddp7Qw5FUx5~h zFzj{ym0Xw;hR_$3XlGcM5NT^wKdrVRMZG7LNgK^AFGWT z8ObDw#Kfp4ek2o(A+%b#Dp8~s-7wr}x99Pw5queG#yn3{Uk73M!KxcLmh0z=WC}{JtkmmUb j+KezWObSziX|hpblmZzDqp)0TNNB(>x^ICmAYA_j6a{P9 From 4f8ae577794a3a80c6e1a31177850a3aab1d7104 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 12 Apr 2020 19:15:07 -0230 Subject: [PATCH 18/69] Fixed some warnings from clang. Just checking on the progress; looking good so far. --- src/emucore/Cart2K.hxx | 2 +- src/emucore/Cart4K.hxx | 2 +- src/emucore/CartCV.cxx | 2 -- src/emucore/CartCV.hxx | 2 +- src/emucore/CartDetector.cxx | 6 ++---- src/emucore/CartEnhanced.cxx | 3 +-- src/emucore/CartEnhanced.hxx | 1 - src/emucore/CartFA2.cxx | 3 +-- src/emucore/CartUA.hxx | 6 +++--- 9 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/emucore/Cart2K.hxx b/src/emucore/Cart2K.hxx index 1ef2ee250..0ed6fedef 100644 --- a/src/emucore/Cart2K.hxx +++ b/src/emucore/Cart2K.hxx @@ -73,7 +73,7 @@ class Cartridge2K : public CartridgeEnhanced #endif private: - bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; }; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart4K.hxx b/src/emucore/Cart4K.hxx index 70819c5b2..1a7c428f4 100644 --- a/src/emucore/Cart4K.hxx +++ b/src/emucore/Cart4K.hxx @@ -70,7 +70,7 @@ class Cartridge4K : public CartridgeEnhanced #endif private: - bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; }; + bool checkSwitchBank(uInt16 address, uInt8 value = 0) override { return false; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartCV.cxx b/src/emucore/CartCV.cxx index 136e817c3..8d7ac9d89 100644 --- a/src/emucore/CartCV.cxx +++ b/src/emucore/CartCV.cxx @@ -27,7 +27,6 @@ CartridgeCV::CartridgeCV(const ByteBuffer& image, size_t size, myRamSize = RAM_SIZE; myRamWpHigh = RAM_HIGH_WP; - if(mySize == 4_KB) { // The game has something saved in the RAM @@ -40,7 +39,6 @@ CartridgeCV::CartridgeCV(const ByteBuffer& image, size_t size, // Copy the ROM image into my buffer std::copy_n(image.get() + mySize, mySize, myImage.get()); - myInitialRAM = make_unique(1_KB); // Copy the RAM image into a buffer for use in reset() std::copy_n(image.get(), 1_KB, myInitialRAM.get()); diff --git a/src/emucore/CartCV.hxx b/src/emucore/CartCV.hxx index 4e18040a6..1b4773e5e 100644 --- a/src/emucore/CartCV.hxx +++ b/src/emucore/CartCV.hxx @@ -78,7 +78,7 @@ class CartridgeCV : public CartridgeEnhanced #endif private: - bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; }; + bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; } protected: // Initial RAM data from the cart (doesn't always exist) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index b6e6f150a..9fe79314f 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -951,14 +951,13 @@ bool CartDetector::isProbablyFC(const ByteBuffer& image, size_t size) { 0x8d, 0xf8, 0xff, 0x8d, 0xfc, 0xff }, // STA $FFF8, STA $FFFC Surf's Up (4K) { 0x8c, 0xf9, 0xff, 0xad, 0xfc, 0xff } // STY $FFF9, LDA $FFFC 3-D Havoc }; - for (uInt32 i = 0; i < 3; ++i) - if (searchForBytes(image.get(), size, signature[i], 6, 1)) + for(uInt32 i = 0; i < 3; ++i) + if(searchForBytes(image.get(), size, signature[i], 6, 1)) return true; return false; } - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyFE(const ByteBuffer& image, size_t size) { @@ -1032,7 +1031,6 @@ bool CartDetector::isProbablyWD(const ByteBuffer& image, size_t size) return searchForBytes(image.get(), size, signature[0], 3, 1); } - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyX07(const ByteBuffer& image, size_t size) { diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index c479ddd92..db2768ed0 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -110,7 +110,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) if(address < myReadOffset + myRamSize && address >= myReadOffset) - // This is a read accees to a write port! + // This is a read access to a write port! return peekRAM(myRAM[address], peekAddress); else return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; @@ -233,7 +233,6 @@ bool CartridgeEnhanced::save(Serializer& out) const out.putIntArray(myCurrentSegOffset.get(), myBankSegs); if(myRamSize) out.putByteArray(myRAM.get(), myRamSize); - } catch(...) { diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 6c67b6eaf..dd8bd4322 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -57,7 +57,6 @@ class CartridgeEnhanced : public Cartridge */ void reset() override; - /** Install pages for the specified bank in the system. diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index 0d892c9b3..1e4251988 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -49,11 +49,10 @@ bool CartridgeFA2::checkSwitchBank(uInt16 address, uInt8) } return false; } - + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeFA2::peek(uInt16 address) { - if((address & 0x0FFF) == 0x0FF4) { // Load/save RAM to/from Harmony cart flash diff --git a/src/emucore/CartUA.hxx b/src/emucore/CartUA.hxx index 94dcb4a98..97569dd76 100644 --- a/src/emucore/CartUA.hxx +++ b/src/emucore/CartUA.hxx @@ -59,13 +59,14 @@ class CartridgeUA : public CartridgeEnhanced */ void install(System& system) override; - /** Get a descriptor for the device name (used in error checking). @return The name of the object */ - string name() const override { return mySwappedHotspots ? "CartridgeUASW" : "CartridgeUA"; } + string name() const override { + return mySwappedHotspots ? "CartridgeUASW" : "CartridgeUA"; + } #ifdef DEBUGGER_SUPPORT /** @@ -96,7 +97,6 @@ class CartridgeUA : public CartridgeEnhanced */ bool poke(uInt16 address, uInt8 value) override; - private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; From 56cbc4dc6f7675a9dfd553171c661dc452ff4311 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 13 Apr 2020 18:05:44 +0200 Subject: [PATCH 19/69] intermediate commit for refactoring 3E (something got broken in disassembly before) --- src/emucore/Cart3E.cxx | 29 ++++++----- src/emucore/Cart3E.hxx | 6 +++ src/emucore/CartEnhanced.cxx | 99 +++++++++++++++++++++++++++--------- src/emucore/CartEnhanced.hxx | 16 ++++-- 4 files changed, 106 insertions(+), 44 deletions(-) diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index 0947d783e..f5f37febc 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -23,7 +23,8 @@ Cartridge3E::Cartridge3E(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) : Cartridge(settings, md5), - mySize(size) + mySize(size), + myRomBanks(256/*uInt16(size) >> 11*/) { // Allocate array for the ROM image myImage = make_unique(mySize); @@ -80,10 +81,10 @@ uInt8 Cartridge3E::peek(uInt16 address) if(address < 0x0040) // TIA access return mySystem->tia().peek(address); - else if(myCurrentBank >= 256) + else if(myCurrentBank >= myRomBanks) { // Reading from the write port triggers an unwanted write - return peekRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - 256) << 10)], peekAddress); + return peekRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)], peekAddress); } // Make compiler happy; should never get here @@ -103,15 +104,15 @@ bool Cartridge3E::poke(uInt16 address, uInt8 value) if(address == 0x003F) bank(value); else if(address == 0x003E) - bank(value + 256); + bank(value + myRomBanks); return mySystem->tia().poke(address, value); } - else if(myCurrentBank >= 256) + else if(myCurrentBank >= myRomBanks) { if(address & 0x0400) { - pokeRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - 256) << 10)], + pokeRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)], pokeAddress, value); return true; } @@ -133,7 +134,7 @@ bool Cartridge3E::bank(uInt16 bank) { if(bankLocked()) return false; - if(bank < 256) + if(bank < myRomBanks) { // Make sure the bank they're asking for is reasonable if((uInt32(bank) << 11) < mySize) @@ -164,9 +165,9 @@ bool Cartridge3E::bank(uInt16 bank) } else { - bank -= 256; - bank %= 32; - myCurrentBank = bank + 256; + bank -= myRomBanks; + bank %= myRamBanks; + myCurrentBank = bank + myRomBanks; uInt32 offset = bank << 10; @@ -204,7 +205,7 @@ bool Cartridge3E::bank(uInt16 bank) uInt16 Cartridge3E::getBank(uInt16 address) const { if (address & 0x800) - return 255; // 256 - 1 // 2K slices, fixed bank + return myRomBanks - 1; // 2K slices, fixed bank else return myCurrentBank; } @@ -217,7 +218,7 @@ uInt16 Cartridge3E::bankCount() const // If the RAM banks were simply appended to the number of actual // ROM banks, bank numbers would be ambiguous (ie, would bank 128 be // the last bank of ROM, or one of the banks of RAM?) - return 256 + 32; + return myRomBanks + myRamBanks; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -227,10 +228,10 @@ bool Cartridge3E::patch(uInt16 address, uInt8 value) if(address < 0x0800) { - if(myCurrentBank < 256) + if(myCurrentBank < myRomBanks) myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; else - myRAM[(address & 0x03FF) + ((myCurrentBank - 256) << 10)] = value; + myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)] = value; } else myImage[(address & 0x07FF) + mySize - 2048] = value; diff --git a/src/emucore/Cart3E.hxx b/src/emucore/Cart3E.hxx index 554560fd5..6b2ea0b88 100644 --- a/src/emucore/Cart3E.hxx +++ b/src/emucore/Cart3E.hxx @@ -190,6 +190,12 @@ class Cartridge3E : public Cartridge // Size of the ROM image size_t mySize{0}; + // Size of the ROM image + uInt16 myRomBanks{0}; + + // Size of the ROM image + uInt16 myRamBanks{32}; + // Indicates which bank is currently active for the first segment uInt16 myCurrentBank{0}; diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index db2768ed0..1a446a9a8 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -146,40 +146,89 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) +bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment, bool isRAM) { if(bankLocked()) return false; - // Remember what bank is in which segment - uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; uInt16 segmentOffset = segment << myBankShift; - uInt16 hotspot = this->hotspot(); - uInt16 hotSpotAddr; - uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; - // for ROMs < 4_KB, the whole address space will be mapped. - uInt16 toAddr = (segmentOffset + 0x1000 + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; - if(hotspot) - hotSpotAddr = (hotspot & ~System::PAGE_MASK); - else - hotSpotAddr = 0xFFFF; // none - - System::PageAccess access(this, System::PageAccessType::READ); - - // Setup the page access methods for the current bank - for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) + if(!isRAM) { - uInt32 offset = bankOffset + (addr & myBankMask); + // Setup ROM bank + // Remember what bank is in which segment + uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; - if(myDirectPeek && addr != hotSpotAddr) - access.directPeekBase = &myImage[offset]; + uInt16 hotspot = this->hotspot(); + uInt16 hotSpotAddr; + uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; + // for ROMs < 4_KB, the whole address space will be mapped. + uInt16 toAddr = (segmentOffset + 0x1000 + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; + + if(hotspot) + hotSpotAddr = (hotspot & ~System::PAGE_MASK); else - access.directPeekBase = nullptr; - access.romAccessBase = &myRomAccessBase[offset]; - access.romPeekCounter = &myRomAccessCounter[offset]; - access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; - mySystem->setPageAccess(addr, access); + hotSpotAddr = 0xFFFF; // none + + System::PageAccess access(this, System::PageAccessType::READ); + // Setup the page access methods for the current bank + for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) + { + uInt32 offset = bankOffset + (addr & myBankMask); + + if(myDirectPeek && addr != hotSpotAddr) + access.directPeekBase = &myImage[offset]; + else + access.directPeekBase = nullptr; + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } } + /*else + { + // Setup RAM bank + // TODO: define offsets on init + uInt16 myWriteBankOffset = myBankSize >> 1; + uInt16 myReadBankOffset = 0; + + // Remember what bank is in which segment + uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; + + // Set the page accessing method for the RAM writing pages + uInt16 fromAddr = (segmentOffset + myWriteBankOffset + 0x1000) & ~System::PAGE_MASK; + uInt16 toAddr = (segmentOffset + myWriteBankOffset + 0x1000 + myBankSize >> 1) & ~System::PAGE_MASK; + System::PageAccess access(this, System::PageAccessType::WRITE); + + for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) + { + uInt32 offset = bankOffset + (addr & myBankMask); + + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + + // Set the page accessing method for the RAM reading pages + fromAddr = (segmentOffset + myReadBankOffset + 0x1000) & ~System::PAGE_MASK; + toAddr = (segmentOffset + myReadBankOffset + 0x1000 + myBankSize >> 1) & ~System::PAGE_MASK; + + access.type = System::PageAccessType::READ; + for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) + { + uInt32 offset = bankOffset + (addr & myBankMask); + + + + uInt16 offset = addr & myRamMask; + access.directPeekBase = &myBankRAM[offset]; + access.romAccessBase = &myRomAccessBase[offset]; + access.romPeekCounter = &myRomAccessCounter[offset]; + access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + }*/ return myBankChanged = true; } diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index dd8bd4322..29046f0ea 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -60,28 +60,34 @@ class CartridgeEnhanced : public Cartridge /** Install pages for the specified bank in the system. - @param bank The bank that should be installed in the system + @param bank The bank that should be installed in the system + @param segment The segment the bank should be using + @param isRAM True if the bank is a RAM bank + + @return true, if bank has changed */ - bool bank(uInt16 bank, uInt16 segment); + bool bank(uInt16 bank, uInt16 segment, bool isRAM = false); /** Install pages for the specified bank in the system. - @param bank The bank that should be installed in the system + @param bank The bank that should be installed in the system + + @return true, if bank has changed */ bool bank(uInt16 bank) override { return this->bank(bank, 0); } /** Get the current bank. - @param address The address to use when querying the bank + @param address The address to use when querying the bank */ uInt16 getBank(uInt16 address = 0) const override; /** Get the current bank for a bank segment. - @param segment The segment to get the bank for + @param segment The segment to get the bank for */ uInt16 getSegmentBank(uInt16 segment = 0) const; From ca5b6a6fe77ffaea470e67e5a9b7729ff6f5963a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 13 Apr 2020 21:58:16 +0200 Subject: [PATCH 20/69] removed CV+ type (incl. doc update) --- Changes.txt | 4 +- docs/index.html | 23 ++- src/debugger/gui/CartCVPlusWidget.cxx | 157 ----------------- src/debugger/gui/CartCVPlusWidget.hxx | 73 -------- src/debugger/gui/module.mk | 3 +- src/emucore/Bankswitch.cxx | 3 - src/emucore/Bankswitch.hxx | 16 +- src/emucore/CartCVPlus.cxx | 235 -------------------------- src/emucore/CartCVPlus.hxx | 188 --------------------- src/emucore/CartDetector.cxx | 19 +-- src/emucore/CartDetector.hxx | 5 - src/emucore/module.mk | 3 +- src/windows/Stella.vcxproj | 8 - src/windows/Stella.vcxproj.filters | 12 -- 14 files changed, 31 insertions(+), 718 deletions(-) delete mode 100644 src/debugger/gui/CartCVPlusWidget.cxx delete mode 100644 src/debugger/gui/CartCVPlusWidget.hxx delete mode 100644 src/emucore/CartCVPlus.cxx delete mode 100644 src/emucore/CartCVPlus.hxx diff --git a/Changes.txt b/Changes.txt index 60fd29f4e..7a6b7bc3d 100644 --- a/Changes.txt +++ b/Changes.txt @@ -22,7 +22,7 @@ a game. This allows the user to save high scores for these games. For each game and variation, the top 10 scores can be saved. (TODO: Doc) - * Add option which lets default ROM path follow launcher navigation (TODO: Doc) + * Added option which lets default ROM path follow launcher navigation (TODO: Doc) * Added displaying last write address in the debugger. @@ -30,6 +30,8 @@ * Restored 'cfg' directory for Distella config files. + * Removed unused CV+ bank switching type. + -Have fun! diff --git a/docs/index.html b/docs/index.html index 68be48e0d..b0065878b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3756,7 +3756,9 @@ Ms Pac-Man (Stella extended codes):

Each block in a property file consists of a set of properties for a single game. Stella supports the properties described below:

-
+

+ +

@@ -3791,8 +3793,7 @@ Ms Pac-Man (Stella extended codes): - - + @@ -3875,11 +3876,15 @@ Ms Pac-Man (Stella extended codes):
CDF Chris, Darrell, Fred (includes CDFJ).CDF
CM ¹Spectravideo CompuMate .CM
CTY ²CDW - Chetiry .CTY
CV Commavid extra RAM .CV
CV+ Extended Commavid extra RAM.CVP
CV CommaVid extra RAM .CV
DASH Boulder Dash 2 .DAS, .DASH
DF CPUWIZ 128K .DF
DFSC CPUWIZ 128K + RAM.DFS, .DFSC
+
- +

+ +

+ @@ -3899,8 +3904,11 @@ Ms Pac-Man (Stella extended codes): right player. The value must be A or B.
Console.TelevisionType:
+
- +

+ +

@@ -3975,8 +3983,11 @@ Ms Pac-Man (Stella extended codes): how to use the X/Y axis (ie, 02 is paddle0/paddle2). -->
Controller.Left:
Controller.Right:
+
- +

+ +

diff --git a/src/debugger/gui/CartCVPlusWidget.cxx b/src/debugger/gui/CartCVPlusWidget.cxx deleted file mode 100644 index cab27d3e5..000000000 --- a/src/debugger/gui/CartCVPlusWidget.cxx +++ /dev/null @@ -1,157 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#include "Debugger.hxx" -#include "CartDebug.hxx" -#include "CartCVPlus.hxx" -#include "PopUpWidget.hxx" -#include "CartCVPlusWidget.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeCVPlusWidget::CartridgeCVPlusWidget( - GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, - int x, int y, int w, int h, CartridgeCVPlus& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) -{ - size_t size = cart.mySize; - - ostringstream info; - info << "LS_Dracon CV+ cartridge, 1K RAM, 2-256 2K ROM\n" - << "1024 bytes RAM @ $F000 - $F7FF\n" - << " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" - << "2048 bytes ROM @ $F800 - $FFFF, by writing to $3D\n" - << "Startup bank = " << cart.startBank() << "\n"; - - int xpos = 2, - ypos = addBaseInformation(size, "LS_Dracon / Stephen Anthony", - info.str()) + myLineHeight; - - VariantList items; - for(uInt16 i = 0; i < cart.bankCount(); ++i) - VarList::push_back(items, Variant(i).toString() + " ($3D)"); - - ostringstream label; - label << "Set bank ($F800 - $FFFF) "; - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("xxx ($3D)"), - myLineHeight, items, label.str(), - _font.getStringWidth(label.str()), kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlusWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlusWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeCVPlusWidget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Bank = " << std::dec << myCart.myCurrentBank << ", hotspot = $3D"; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlusWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeCVPlusWidget::internalRamSize() -{ - return 1024; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeCVPlusWidget::internalRamRPort(int start) -{ - return 0xF000 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeCVPlusWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F3FF used for Read Access\n" - << "$F400 - $F7FF used for Write Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeCVPlusWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeCVPlusWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlusWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeCVPlusWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeCVPlusWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF000, false); -} diff --git a/src/debugger/gui/CartCVPlusWidget.hxx b/src/debugger/gui/CartCVPlusWidget.hxx deleted file mode 100644 index b1401b07c..000000000 --- a/src/debugger/gui/CartCVPlusWidget.hxx +++ /dev/null @@ -1,73 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef CARTRIDGECVPlus_WIDGET_HXX -#define CARTRIDGECVPlus_WIDGET_HXX - -class CartridgeCVPlus; -class PopUpWidget; - -#include "CartDebugWidget.hxx" - -class CartridgeCVPlusWidget : public CartDebugWidget -{ - public: - CartridgeCVPlusWidget(GuiObject* boss, const GUI::Font& lfont, - const GUI::Font& nfont, - int x, int y, int w, int h, - CartridgeCVPlus& cart); - virtual ~CartridgeCVPlusWidget() = default; - - private: - CartridgeCVPlus& myCart; - PopUpWidget* myBank{nullptr}; - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; - - private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - void saveOldState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - - // Following constructors and assignment operators not supported - CartridgeCVPlusWidget() = delete; - CartridgeCVPlusWidget(const CartridgeCVPlusWidget&) = delete; - CartridgeCVPlusWidget(CartridgeCVPlusWidget&&) = delete; - CartridgeCVPlusWidget& operator=(const CartridgeCVPlusWidget&) = delete; - CartridgeCVPlusWidget& operator=(CartridgeCVPlusWidget&&) = delete; -}; - -#endif diff --git a/src/debugger/gui/module.mk b/src/debugger/gui/module.mk index d80408a60..522d31cf4 100644 --- a/src/debugger/gui/module.mk +++ b/src/debugger/gui/module.mk @@ -21,8 +21,7 @@ MODULE_OBJS := \ src/debugger/gui/CartCDFWidget.o \ src/debugger/gui/CartCDFInfoWidget.o \ src/debugger/gui/CartCMWidget.o \ - src/debugger/gui/CartCTYWidget.o \ - src/debugger/gui/CartCVPlusWidget.o \ + src/debugger/gui/CartCTYWidget.o \ src/debugger/gui/CartCVWidget.o \ src/debugger/gui/CartDASHWidget.o \ src/debugger/gui/CartDFSCWidget.o \ diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 231d6f73f..9726dc6aa 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -118,7 +118,6 @@ Bankswitch::BSList = {{ { "CM" , "CM (SpectraVideo CompuMate)" }, { "CTY" , "CTY (CDW - Chetiry)" }, { "CV" , "CV (Commavid extra RAM)" }, - { "CV+" , "CV+ (Extended Commavid)" }, { "DASH" , "DASH (Experimental)" }, { "DF" , "DF (CPUWIZ 128K)" }, { "DFSC" , "DFSC (CPUWIZ 128K + RAM)" }, @@ -197,7 +196,6 @@ Bankswitch::ExtensionMap Bankswitch::ourExtensions = { { "CM" , Bankswitch::Type::_CM }, { "CTY" , Bankswitch::Type::_CTY }, { "CV" , Bankswitch::Type::_CV }, - { "CVP" , Bankswitch::Type::_CVP }, { "DAS" , Bankswitch::Type::_DASH }, { "DASH" , Bankswitch::Type::_DASH }, { "DF" , Bankswitch::Type::_DF }, @@ -262,7 +260,6 @@ Bankswitch::NameToTypeMap Bankswitch::ourNameToTypes = { { "CM" , Bankswitch::Type::_CM }, { "CTY" , Bankswitch::Type::_CTY }, { "CV" , Bankswitch::Type::_CV }, - { "CV+" , Bankswitch::Type::_CVP }, { "DASH" , Bankswitch::Type::_DASH }, { "DF" , Bankswitch::Type::_DF }, { "DFSC" , Bankswitch::Type::_DFSC }, diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx index c57f81609..4ed7cc445 100644 --- a/src/emucore/Bankswitch.hxx +++ b/src/emucore/Bankswitch.hxx @@ -38,14 +38,14 @@ class Bankswitch public: // Currently supported bankswitch schemes enum class Type { - _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, - _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, - _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, - _CM, _CTY, _CV, _CVP, _DASH, _DF, _DFSC, - _DPC, _DPCP, _E0, _E7, _E78K, _EF, _EFSC, - _F0, _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, - _FA, _FA2, _FC, _FE, _MDM, _SB, _UA, - _UASW, _WD, _WDSW, _X07, + _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, + _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, + _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, + _CM, _CTY, _CV, _DASH, _DF, _DFSC, _DPC, + _DPCP, _E0, _E7, _E78K, _EF, _EFSC, _F0, + _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, _FA, + _FA2, _FC, _FE, _MDM, _SB, _UA, _UASW, + _WD, _WDSW, _X07, #ifdef CUSTOM_ARM _CUSTOM, #endif diff --git a/src/emucore/CartCVPlus.cxx b/src/emucore/CartCVPlus.cxx deleted file mode 100644 index a3258e53c..000000000 --- a/src/emucore/CartCVPlus.cxx +++ /dev/null @@ -1,235 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#include "System.hxx" -#include "TIA.hxx" -#include "CartCVPlus.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeCVPlus::CartridgeCVPlus(const ByteBuffer& image, size_t size, - const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) -{ - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize + myRAM.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlus::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); - - // We'll map the startup bank into the first segment upon reset - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVPlus::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READWRITE); - - // The hotspot ($3D) is in TIA address space, so we claim it here - for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.directPeekBase = access.directPokeBase = nullptr; - access.romAccessBase = nullptr; - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1400; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[mySize + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[mySize + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[mySize + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1000; addr < 0x1400; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[addr & 0x03FF]; - access.romAccessBase = &myRomAccessBase[mySize + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[mySize + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[mySize + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Install pages for the startup bank into the first segment - bank(startBank()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeCVPlus::peek(uInt16 address) -{ - if((address & 0x0FFF) < 0x0800) // Write port is at 0xF400 - 0xF7FF (1024 bytes) - return peekRAM(myRAM[address & 0x03FF], address); - else - return myImage[(address & 0x07FF) + (myCurrentBank << 11)]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCVPlus::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - if(address < 0x0040) - { - // Switch banks if necessary - if(address == 0x003D) - bank(value); - - // Handle TIA space that we claimed above - return mySystem->tia().poke(address, value); - } - else - { - if(address & 0x0400) - { - pokeRAM(myRAM[address & 0x03FF], pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCVPlus::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Make sure the bank they're asking for is reasonable - if((uInt32(bank) << 11) < mySize) - { - myCurrentBank = bank; - } - else - { - // Oops, the bank they're asking for isn't valid so let's wrap it - // around to a valid bank number - myCurrentBank = bank % (mySize >> 11); - } - - uInt32 offset = myCurrentBank << 11; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1800; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x07FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x07FF)]; - mySystem->setPageAccess(addr, access); - } - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCVPlus::getBank(uInt16) const -{ - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCVPlus::bankCount() const -{ - return uInt16(mySize >> 11); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCVPlus::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - // The following will work for both reads and writes - myRAM[address & 0x03FF] = value; - } - else - myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeCVPlus::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCVPlus::save(Serializer& out) const -{ - try - { - out.putShort(myCurrentBank); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeCVPlus::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeCVPlus::load(Serializer& in) -{ - try - { - myCurrentBank = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: CartridgeCVPlus::load" << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; -} diff --git a/src/emucore/CartCVPlus.hxx b/src/emucore/CartCVPlus.hxx deleted file mode 100644 index 63fcb62da..000000000 --- a/src/emucore/CartCVPlus.hxx +++ /dev/null @@ -1,188 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef CARTRIDGECVPlus_HXX -#define CARTRIDGECVPlus_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" -#ifdef DEBUGGER_SUPPORT - #include "CartCVPlusWidget.hxx" -#endif - -/** - Cartridge class based on both Commavid and 3F/3E schemes: - - Commavid (RAM): - $F000-$F3FF read from RAM - $F400-$F7FF write to RAM - - 3F/3E (ROM): - $F800-$FFFF ROM - - In this bankswitching scheme the 2600's 4K cartridge - address space is broken into two 2K segments. The lower 2K - is RAM, as decribed above (same as CV/Commavid scheme). - To map ROM, the desired bank number of the upper 2K segment is - selected by storing its value into $3D. - - @author Stephen Anthony, LS_Dracon -*/ - -class CartridgeCVPlus : public Cartridge -{ - friend class CartridgeCVPlusWidget; - - public: - /** - Create a new cartridge using the specified image and size - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeCVPlus(const ByteBuffer& image, size_t size, const string& md5, - const Settings& settings); - virtual ~CartridgeCVPlus() = default; - - public: - /** - Reset device to its power-on state - */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "CartridgeCV+"; } - - #ifdef DEBUGGER_SUPPORT - /** - Get debugger widget responsible for accessing the inner workings - of the cart. - */ - CartDebugWidget* debugWidget(GuiObject* boss, const GUI::Font& lfont, - const GUI::Font& nfont, int x, int y, int w, int h) override - { - return new CartridgeCVPlusWidget(boss, lfont, nfont, x, y, w, h, *this); - } - #endif - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - - private: - // Pointer to a dynamically allocated ROM image of the cartridge - ByteBuffer myImage; - - // The 1024 bytes of RAM - std::array myRAM; - - // Size of the ROM image - size_t mySize{0}; - - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank{0}; - - private: - // Following constructors and assignment operators not supported - CartridgeCVPlus() = delete; - CartridgeCVPlus(const CartridgeCVPlus&) = delete; - CartridgeCVPlus(CartridgeCVPlus&&) = delete; - CartridgeCVPlus& operator=(const CartridgeCVPlus&) = delete; - CartridgeCVPlus& operator=(CartridgeCVPlus&&) = delete; -}; - -#endif diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 9fe79314f..09e0def71 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -33,7 +33,6 @@ #include "CartCM.hxx" #include "CartCTY.hxx" #include "CartCV.hxx" -#include "CartCVPlus.hxx" #include "CartDASH.hxx" #include "CartDF.hxx" #include "CartDFSC.hxx" @@ -278,8 +277,6 @@ CartDetector::createFromImage(const ByteBuffer& image, size_t size, Bankswitch:: return make_unique(image, size, md5, settings); case Bankswitch::Type::_CV: return make_unique(image, size, md5, settings); - case Bankswitch::Type::_CVP: - return make_unique(image, size, md5, settings); case Bankswitch::Type::_DASH: return make_unique(image, size, md5, settings); case Bankswitch::Type::_DF: @@ -346,11 +343,7 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si // Guess type based on size Bankswitch::Type type = Bankswitch::Type::_AUTO; - if(isProbablyCVPlus(image, size)) - { - type = Bankswitch::Type::_CVP; - } - else if((size % 8448) == 0 || size == 6144) + if((size % 8448) == 0 || size == 6144) { type = Bankswitch::Type::_AR; } @@ -757,16 +750,6 @@ bool CartDetector::isProbablyCV(const ByteBuffer& image, size_t size) return searchForBytes(image.get(), size, signature[1], 3, 1); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyCVPlus(const ByteBuffer& image, size_t) -{ - // CV+ cart is identified key 'commavidplus' @ $04 in the ROM - // We inspect only this area to speed up the search - uInt8 cvp[12] = { 'c', 'o', 'm', 'm', 'a', 'v', 'i', 'd', - 'p', 'l', 'u', 's' }; - return searchForBytes(image.get()+4, 24, cvp, 12, 1); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyDASH(const ByteBuffer& image, size_t size) { diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index 5f6a60674..8f9d04ac9 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -175,11 +175,6 @@ class CartDetector */ static bool isProbablyCV(const ByteBuffer& image, size_t size); - /** - Returns true if the image is probably a CV+ bankswitching cartridge - */ - static bool isProbablyCVPlus(const ByteBuffer& image, size_t size); - /** Returns true if the image is probably a DASH bankswitching cartridge */ diff --git a/src/emucore/module.mk b/src/emucore/module.mk index bbdd5eaab..4b72d3b22 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -20,8 +20,7 @@ MODULE_OBJS := \ src/emucore/CartCDF.o \ src/emucore/CartCM.o \ src/emucore/CartCTY.o \ - src/emucore/CartCV.o \ - src/emucore/CartCVPlus.o \ + src/emucore/CartCV.o \ src/emucore/CartDASH.o \ src/emucore/CartDPC.o \ src/emucore/CartDPCPlus.o \ diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index fcd2b85fb..46fd9a877 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -585,9 +585,6 @@ true - - true - true @@ -724,7 +721,6 @@ - @@ -1596,9 +1592,6 @@ true - - true - true @@ -1747,7 +1740,6 @@ - diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index ef41cf662..8f9d893f8 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -759,12 +759,6 @@ Source Files\debugger - - Source Files\emucore - - - Source Files\debugger - Source Files\debugger @@ -1748,12 +1742,6 @@ Header Files\debugger - - Header Files\debugger - - - Header Files\emucore - Header Files\debugger From 00e67f1a51dcd94dc14ef81316c7dd3156d43ca5 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 15 Apr 2020 14:53:05 +0200 Subject: [PATCH 21/69] add RAM bank support to CartEnhanced refactor Cart3E differentiate between ROM and RAM banks (TODO: check debugger) --- src/debugger/CartDebug.cxx | 45 ++-- src/debugger/CartDebug.hxx | 4 +- src/debugger/DebuggerParser.cxx | 14 +- src/debugger/gui/Cart3EWidget.cxx | 24 +-- src/debugger/gui/Cart3FWidget.cxx | 2 +- src/debugger/gui/CartFA2Widget.cxx | 4 +- src/debugger/gui/CartFCWidget.cxx | 4 +- src/debugger/gui/CartMDMWidget.cxx | 2 +- src/debugger/gui/CartMNetworkWidget.cxx | 4 +- src/debugger/gui/CartSBWidget.cxx | 4 +- src/debugger/gui/RomWidget.cxx | 2 +- src/emucore/Cart.cxx | 14 +- src/emucore/Cart.hxx | 12 +- src/emucore/Cart3E.cxx | 263 +++--------------------- src/emucore/Cart3E.hxx | 108 ++-------- src/emucore/Cart3EPlus.cxx | 2 +- src/emucore/Cart3EPlus.hxx | 2 +- src/emucore/Cart3F.cxx | 2 +- src/emucore/CartAR.cxx | 2 +- src/emucore/CartAR.hxx | 2 +- src/emucore/CartBUS.cxx | 2 +- src/emucore/CartBUS.hxx | 2 +- src/emucore/CartCDF.cxx | 2 +- src/emucore/CartCDF.hxx | 2 +- src/emucore/CartCM.cxx | 2 +- src/emucore/CartCM.hxx | 2 +- src/emucore/CartCTY.cxx | 2 +- src/emucore/CartCTY.hxx | 2 +- src/emucore/CartDPC.cxx | 2 +- src/emucore/CartDPC.hxx | 2 +- src/emucore/CartDPCPlus.cxx | 2 +- src/emucore/CartDPCPlus.hxx | 2 +- src/emucore/CartEnhanced.cxx | 217 ++++++++++++------- src/emucore/CartEnhanced.hxx | 32 ++- src/emucore/CartFC.cxx | 6 +- src/emucore/CartMNetwork.cxx | 8 +- src/emucore/CartMNetwork.hxx | 2 +- src/emucore/CartSB.cxx | 4 +- src/emucore/CartSB.hxx | 2 +- src/emucore/CartWD.cxx | 2 +- src/emucore/CartWD.hxx | 2 +- src/gui/GameInfoDialog.cxx | 2 +- 42 files changed, 313 insertions(+), 504 deletions(-) diff --git a/src/debugger/CartDebug.cxx b/src/debugger/CartDebug.cxx index a52732cfe..ef6924187 100644 --- a/src/debugger/CartDebug.cxx +++ b/src/debugger/CartDebug.cxx @@ -72,12 +72,18 @@ CartDebug::CartDebug(Debugger& dbg, Console& console, const OSystem& osystem) // Create bank information for each potential bank, and an extra one for ZP RAM BankInfo info; - for(uInt32 i = 0; i < myConsole.cartridge().bankCount(); ++i) + for(uInt32 i = 0; i < myConsole.cartridge().romBankCount(); ++i) { info.size = myConsole.cartridge().bankSize(i); myBankInfo.push_back(info); } + for(uInt32 i = 0; i < myConsole.cartridge().ramBankCount(); ++i) + { + info.size = myConsole.cartridge().bankSize(i) >> 1; + myBankInfo.push_back(info); + } + info.size = 128; // ZP RAM myBankInfo.push_back(info); @@ -235,9 +241,10 @@ string CartDebug::toString() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDebug::disassemble(bool force) +bool CartDebug::disassemblePC(bool force) { uInt16 PC = myDebugger.cpuDebug().pc(); + // ROM/RAM bank or ZP-RAM? int bank = (PC & 0x1000) ? getBank(PC) : int(myBankInfo.size()) - 1; return disassemble(bank, PC, force); @@ -414,7 +421,7 @@ bool CartDebug::addDirective(Device::AccessType type, bank = (myDebugger.cpuDebug().pc() & 0x1000) ? getBank(myDebugger.cpuDebug().pc()) : int(myBankInfo.size())-1; - bank = std::min(bank, bankCount()); + bank = std::min(bank, romBankCount()); BankInfo& info = myBankInfo[bank]; DirectiveList& list = info.directiveList; @@ -546,9 +553,9 @@ int CartDebug::getPCBank() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartDebug::bankCount() const +int CartDebug::romBankCount() const { - return myConsole.cartridge().bankCount(); + return myConsole.cartridge().romBankCount(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -955,7 +962,7 @@ string CartDebug::loadConfigFile() myDebugger.rom().invalidate(); stringstream retVal; - if(myConsole.cartridge().bankCount() > 1) + if(myConsole.cartridge().romBankCount() > 1) retVal << DebuggerParser::red("config file for multi-bank ROM not fully supported\n"); retVal << "config file '" << node.getShortPath() << "' loaded OK"; return retVal.str(); @@ -990,14 +997,14 @@ string CartDebug::saveConfigFile() out << "// Stella.pro: \"" << name << "\"" << endl << "// MD5: " << md5 << endl << endl; - for(uInt32 b = 0; b < myConsole.cartridge().bankCount(); ++b) + for(uInt32 b = 0; b < myConsole.cartridge().romBankCount(); ++b) { out << "[" << b << "]" << endl; getBankDirectives(out, myBankInfo[b]); } stringstream retVal; - if(myConsole.cartridge().bankCount() > 1) + if(myConsole.cartridge().romBankCount() > 1) retVal << DebuggerParser::red("config file for multi-bank ROM not fully supported\n"); retVal << "config file '" << cfg.getShortPath() << "' saved OK"; return retVal.str(); @@ -1058,14 +1065,14 @@ string CartDebug::saveDisassembly() Disassembly disasm; disasm.list.reserve(2048); - uInt16 bankCount = myConsole.cartridge().bankCount(); + uInt16 romBankCount = myConsole.cartridge().romBankCount(); uInt16 oldBank = myConsole.cartridge().getBank(); // prepare for switching banks myConsole.cartridge().unlockBank(); uInt32 origin = 0; - for(int bank = 0; bank < bankCount; ++bank) + for(int bank = 0; bank < romBankCount; ++bank) { // TODO: not every CartDebugWidget does it like that, we need a method myConsole.cartridge().unlockBank(); @@ -1082,8 +1089,8 @@ string CartDebug::saveDisassembly() buf << "\n\n;***********************************************************\n" << "; Bank " << bank; - if (bankCount > 1) - buf << " / 0.." << bankCount - 1; + if (romBankCount > 1) + buf << " / 0.." << romBankCount - 1; buf << "\n;***********************************************************\n\n"; @@ -1097,7 +1104,7 @@ string CartDebug::saveDisassembly() buf << " SEG CODE\n"; - if(bankCount == 1) + if(romBankCount == 1) buf << " ORG $" << Base::HEX4 << info.offset << "\n\n"; else buf << " ORG $" << Base::HEX4 << origin << "\n" @@ -1327,7 +1334,7 @@ string CartDebug::saveDisassembly() out << buf.str(); stringstream retVal; - if(myConsole.cartridge().bankCount() > 1) + if(myConsole.cartridge().romBankCount() > 1) retVal << DebuggerParser::red("disassembly for multi-bank ROM not fully supported\n"); retVal << "saved " << node.getShortPath() << " OK"; return retVal.str(); @@ -1367,8 +1374,8 @@ string CartDebug::saveAccessFile() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string CartDebug::listConfig(int bank) { - uInt32 startbank = 0, endbank = bankCount(); - if(bank >= 0 && bank < bankCount()) + uInt32 startbank = 0, endbank = romBankCount(); + if(bank >= 0 && bank < romBankCount()) { startbank = bank; endbank = startbank + 1; @@ -1392,7 +1399,7 @@ string CartDebug::listConfig(int bank) getBankDirectives(buf, info); } - if(myConsole.cartridge().bankCount() > 1) + if(myConsole.cartridge().romBankCount() > 1) buf << DebuggerParser::red("config file for multi-bank ROM not fully supported") << endl; return buf.str(); @@ -1401,8 +1408,8 @@ string CartDebug::listConfig(int bank) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string CartDebug::clearConfig(int bank) { - uInt32 startbank = 0, endbank = bankCount(); - if(bank >= 0 && bank < bankCount()) + uInt32 startbank = 0, endbank = romBankCount(); + if(bank >= 0 && bank < romBankCount()) { startbank = bank; endbank = startbank + 1; diff --git a/src/debugger/CartDebug.hxx b/src/debugger/CartDebug.hxx index c2bd03cae..486eedd79 100644 --- a/src/debugger/CartDebug.hxx +++ b/src/debugger/CartDebug.hxx @@ -95,7 +95,7 @@ class CartDebug : public DebuggerSystem int lastWriteBaseAddress(); // TODO - bool disassemble(bool force = false); + bool disassemblePC(bool force = false); bool disassembleBank(int bank); // First, a call is made to disassemble(), which updates the disassembly @@ -159,7 +159,7 @@ class CartDebug : public DebuggerSystem /** Get the total number of banks supported by the cartridge. */ - int bankCount() const; + int romBankCount() const; /** Add a label and associated address. diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index 4f50be800..da3b0bc5f 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -763,7 +763,7 @@ void DebuggerParser::executeBreak() { uInt16 addr; uInt8 bank; - uInt32 bankCount = debugger.cartDebug().bankCount(); + uInt32 romBankCount = debugger.cartDebug().romBankCount(); if(argCount == 0) addr = debugger.cpuDebug().pc(); @@ -775,7 +775,7 @@ void DebuggerParser::executeBreak() else { bank = args[1]; - if(bank >= bankCount && bank != 0xff) + if(bank >= romBankCount && bank != 0xff) { commandResult << red("invalid bank"); return; @@ -791,12 +791,12 @@ void DebuggerParser::executeBreak() commandResult << "cleared"; commandResult << " breakpoint at $" << Base::HEX4 << addr << " + mirrors"; - if(bankCount > 1) + if(romBankCount > 1) commandResult << " in bank #" << std::dec << int(bank); } else { - for(int i = 0; i < debugger.cartDebug().bankCount(); ++i) + for(int i = 0; i < debugger.cartDebug().romBankCount(); ++i) { bool set = debugger.toggleBreakPoint(addr, i); @@ -809,7 +809,7 @@ void DebuggerParser::executeBreak() commandResult << "cleared"; commandResult << " breakpoint at $" << Base::HEX4 << addr << " + mirrors"; - if(bankCount > 1) + if(romBankCount > 1) commandResult << " in bank #" << std::dec << int(bank); } } @@ -1459,11 +1459,11 @@ void DebuggerParser::executeListbreaks() { stringstream buf; int count = 0; - uInt32 bankCount = debugger.cartDebug().bankCount(); + uInt32 romBankCount = debugger.cartDebug().romBankCount(); for(const auto& bp : debugger.breakPoints().getBreakpoints()) { - if(bankCount == 1) + if(romBankCount == 1) { buf << debugger.cartDebug().getLabel(bp.addr, true, 4) << " "; if(!(++count % 8)) buf << endl; diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index 3880f2026..e91b268ab 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -25,8 +25,8 @@ Cartridge3EWidget::Cartridge3EWidget( int x, int y, int w, int h, Cartridge3E& cart) : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart), - myNumRomBanks(uInt32(cart.mySize >> 11)), - myNumRamBanks(32) + myNumRomBanks(myCart.romBankCount()), + myNumRamBanks(myCart.ramBankCount()) { size_t size = cart.mySize; @@ -93,21 +93,21 @@ void Cartridge3EWidget::saveOldState() for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - myOldState.bank = myCart.myCurrentBank; + myOldState.bank = myCart.getBank(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EWidget::loadConfig() { - if(myCart.myCurrentBank < 256) + if(myCart.getBank() < myCart.romBankCount()) { - myROMBank->setSelectedIndex(myCart.myCurrentBank % myNumRomBanks, myOldState.bank != myCart.myCurrentBank); - myRAMBank->setSelectedMax(myOldState.bank >= 256); + myROMBank->setSelectedIndex(myCart.getBank() % myNumRomBanks, myOldState.bank != myCart.getBank()); + myRAMBank->setSelectedMax(myOldState.bank >= myCart.romBankCount()); } else { - myROMBank->setSelectedMax(myOldState.bank < 256); - myRAMBank->setSelectedIndex(myCart.myCurrentBank - 256, myOldState.bank != myCart.myCurrentBank); + myROMBank->setSelectedMax(myOldState.bank < myCart.romBankCount()); + myRAMBank->setSelectedIndex(myCart.getBank() - myCart.romBankCount(), myOldState.bank != myCart.getBank()); } CartDebugWidget::loadConfig(); @@ -128,7 +128,7 @@ void Cartridge3EWidget::handleCommand(CommandSender* sender, } else { - bank = 256; // default to first RAM bank + bank = myCart.romBankCount(); // default to first RAM bank myRAMBank->setSelectedIndex(0); } } @@ -137,7 +137,7 @@ void Cartridge3EWidget::handleCommand(CommandSender* sender, if(myRAMBank->getSelected() < int(myNumRamBanks)) { myROMBank->setSelectedMax(); - bank = myRAMBank->getSelected() + 256; + bank = myRAMBank->getSelected() + myCart.romBankCount(); } else { @@ -157,8 +157,8 @@ string Cartridge3EWidget::bankState() { ostringstream& buf = buffer(); - uInt16& bank = myCart.myCurrentBank; - if(bank < 256) + uInt16 bank = myCart.getBank(); + if(bank < myCart.romBankCount()) buf << "ROM bank #" << std::dec << bank % myNumRomBanks << ", RAM inactive"; else buf << "ROM inactive, RAM bank #" << std::dec << bank % myNumRomBanks; diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index 86d43177b..13cd851bd 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -44,7 +44,7 @@ Cartridge3FWidget::Cartridge3FWidget( ypos = addBaseInformation(size, "TigerVision", info.str()) + myLineHeight; VariantList items; - for(uInt16 i = 0; i < cart.bankCount(); ++i) + for(uInt16 i = 0; i < cart.romBankCount(); ++i) VarList::push_back(items, Variant(i).toString() + " ($3F)"); ostringstream label; diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index eb2bf4d07..9a24eb5a7 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -38,7 +38,7 @@ CartridgeFA2Widget::CartridgeFA2Widget( << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF5; i < cart.bankCount(); + for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF5; i < cart.romBankCount(); ++i, offset += 0x1000) { uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; @@ -58,7 +58,7 @@ CartridgeFA2Widget::CartridgeFA2Widget( VarList::push_back(items, "3 ($FFF8)"); VarList::push_back(items, "4 ($FFF9)"); VarList::push_back(items, "5 ($FFFA)"); - if(cart.bankCount() == 7) + if(cart.romBankCount() == 7) VarList::push_back(items, "6 ($FFFB)"); myBank = diff --git a/src/debugger/gui/CartFCWidget.cxx b/src/debugger/gui/CartFCWidget.cxx index ce1bf9403..a034b56e3 100644 --- a/src/debugger/gui/CartFCWidget.cxx +++ b/src/debugger/gui/CartFCWidget.cxx @@ -26,7 +26,7 @@ CartridgeFCWidget::CartridgeFCWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { - uInt16 size = cart.bankCount() * 4096; + uInt16 size = cart.romBankCount() * 4096; ostringstream info; info << "FC cartridge, up to eight 4K banks\n" @@ -42,7 +42,7 @@ CartridgeFCWidget::CartridgeFCWidget( ypos = addBaseInformation(size, "Amiga Corp.", info.str()) + myLineHeight; VariantList items; - for (uInt16 i = 0; i < cart.bankCount(); ++i) + for (uInt16 i = 0; i < cart.romBankCount(); ++i) VarList::push_back(items, Variant(i).toString() + " ($FFF8 = " + Variant(i & 0b11).toString() + "/$FFF9 = " + Variant(i >> 2).toString() +")"); diff --git a/src/debugger/gui/CartMDMWidget.cxx b/src/debugger/gui/CartMDMWidget.cxx index 2ba603168..48afbaf77 100644 --- a/src/debugger/gui/CartMDMWidget.cxx +++ b/src/debugger/gui/CartMDMWidget.cxx @@ -40,7 +40,7 @@ CartridgeMDMWidget::CartridgeMDMWidget( ypos = addBaseInformation(size, "Edwin Blink", info.str(), 15) + myLineHeight; VariantList items; - for(uInt32 i = 0x800; i < (0x800U + myCart.bankCount()); ++i) + for(uInt32 i = 0x800; i < (0x800U + myCart.romBankCount()); ++i) { info.str(""); info << std::dec << (i & 0xFF) << " ($" << Common::Base::HEX4 << i << ")"; diff --git a/src/debugger/gui/CartMNetworkWidget.cxx b/src/debugger/gui/CartMNetworkWidget.cxx index cdc1f9bce..37d382a7e 100644 --- a/src/debugger/gui/CartMNetworkWidget.cxx +++ b/src/debugger/gui/CartMNetworkWidget.cxx @@ -35,14 +35,14 @@ CartridgeMNetworkWidget::CartridgeMNetworkWidget( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMNetworkWidget::initialize(GuiObject* boss, CartridgeMNetwork& cart, ostringstream& info) { - uInt32 size = cart.bankCount() * cart.BANK_SIZE; + uInt32 size = cart.romBankCount() * cart.BANK_SIZE; int xpos = 2, ypos = addBaseInformation(size, "M-Network", info.str(), 15) + myLineHeight; VariantList items0, items1; - for(int i = 0; i < cart.bankCount(); ++i) + for(int i = 0; i < cart.romBankCount(); ++i) VarList::push_back(items0, getSpotLower(i)); for(int i = 0; i < 4; ++i) VarList::push_back(items1, getSpotUpper(i)); diff --git a/src/debugger/gui/CartSBWidget.cxx b/src/debugger/gui/CartSBWidget.cxx index 78d352879..7a82ba8e0 100644 --- a/src/debugger/gui/CartSBWidget.cxx +++ b/src/debugger/gui/CartSBWidget.cxx @@ -33,12 +33,12 @@ CartridgeSBWidget::CartridgeSBWidget( myCart.getImage(size); info << "SB SUPERbanking, 32 or 64 4K banks\n" << "Hotspots are from $800 to $" - << Common::Base::HEX2 << (0x800 + myCart.bankCount() - 1) << ", including\n" + << Common::Base::HEX2 << (0x800 + myCart.romBankCount() - 1) << ", including\n" << "mirrors ($900, $A00, $B00, ...)\n" << "Startup bank = " << std::dec << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < myCart.bankCount(); + for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < myCart.romBankCount(); ++i, offset += 0x1000, ++spot) { uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; diff --git a/src/debugger/gui/RomWidget.cxx b/src/debugger/gui/RomWidget.cxx index 18c8b0b78..e62fe0a17 100644 --- a/src/debugger/gui/RomWidget.cxx +++ b/src/debugger/gui/RomWidget.cxx @@ -68,7 +68,7 @@ void RomWidget::loadConfig() const CartState& oldstate = static_cast(cart.getOldState()); // Fill romlist the current bank of source or disassembly - myListIsDirty |= cart.disassemble(myListIsDirty); + myListIsDirty |= cart.disassemblePC(myListIsDirty); if(myListIsDirty) { myRomList->setList(cart.disassembly()); diff --git a/src/emucore/Cart.cxx b/src/emucore/Cart.cxx index f85850ba2..7639101ff 100644 --- a/src/emucore/Cart.cxx +++ b/src/emucore/Cart.cxx @@ -83,7 +83,7 @@ uInt16 Cartridge::bankSize(uInt16 bank) const getImage(size); - return std::min(uInt32(size) / bankCount(), 4_KB); // assuming that each bank has the same size + return std::min(uInt32(size) / romBankCount(), 4_KB); // assuming that each bank has the same size } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -145,13 +145,13 @@ string Cartridge::getAccessCounters() const ostringstream out; uInt32 offset = 0; - for(uInt16 bank = 0; bank < bankCount(); ++bank) + for(uInt16 bank = 0; bank < romBankCount(); ++bank) { uInt16 origin = bankOrigin(bank); uInt16 bankSize = this->bankSize(bank); out << "Bank " << Common::Base::toString(bank, Common::Base::Fmt::_10_8) << " / 0.." - << Common::Base::toString(bankCount() - 1, Common::Base::Fmt::_10_8) << " reads:\n"; + << Common::Base::toString(romBankCount() - 1, Common::Base::Fmt::_10_8) << " reads:\n"; for(uInt16 addr = 0; addr < bankSize; ++addr) { out << Common::Base::HEX4 << (addr | origin) << "," @@ -159,7 +159,7 @@ string Cartridge::getAccessCounters() const } out << "\n"; out << "Bank " << Common::Base::toString(bank, Common::Base::Fmt::_10_8) << " / 0.." - << Common::Base::toString(bankCount() - 1, Common::Base::Fmt::_10_8) << " writes:\n"; + << Common::Base::toString(romBankCount() - 1, Common::Base::Fmt::_10_8) << " writes:\n"; for(uInt16 addr = 0; addr < bankSize; ++addr) { out << Common::Base::HEX4 << (addr | origin) << "," @@ -230,11 +230,11 @@ uInt16 Cartridge::initializeStartBank(uInt16 defaultBank) int propsBank = myStartBankFromPropsFunc(); if(randomStartBank()) - return myStartBank = mySystem->randGenerator().next() % bankCount(); + return myStartBank = mySystem->randGenerator().next() % romBankCount(); else if(propsBank >= 0) - return myStartBank = BSPF::clamp(propsBank, 0, bankCount() - 1); + return myStartBank = BSPF::clamp(propsBank, 0, romBankCount() - 1); else - return myStartBank = BSPF::clamp(int(defaultBank), 0, bankCount() - 1); + return myStartBank = BSPF::clamp(int(defaultBank), 0, romBankCount() - 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Cart.hxx b/src/emucore/Cart.hxx index ce7d66a8b..a7488f551 100644 --- a/src/emucore/Cart.hxx +++ b/src/emucore/Cart.hxx @@ -180,7 +180,7 @@ class Cartridge : public Device virtual uInt16 getBank(uInt16 address = 0) const { return 0; } /** - Query the number of 'banks' supported by the cartridge. Note that + Query the number of ROM 'banks' supported by the cartridge. Note that this information is cart-specific, where each cart basically defines what a 'bank' is. @@ -192,7 +192,15 @@ class Cartridge : public Device RAM slices at multiple access points) is so complicated that the cart will report having only one 'virtual' bank. */ - virtual uInt16 bankCount() const { return 1; } + virtual uInt16 romBankCount() const { return 1; } + + + /** + Query the number of RAM 'banks' supported by the cartridge. Note that + this information is cart-specific, where each cart basically defines + what a 'bank' is. + */ + virtual uInt16 ramBankCount() const { return 0; } /** Get the size of a bank. diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index f1ccd2957..a927ddd2d 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -22,52 +22,42 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3E::Cartridge3E(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size), - myRomBanks(256/*uInt16(size) >> 11*/) + : CartridgeEnhanced(image, size, md5, settings) { - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize + myRAM.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3E::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); - - // We'll map the startup bank into the first segment upon reset - bank(startBank()); + myBankShift = BANK_SHIFT; + myRamSize = RAM_SIZE; + myRamBankCount = RAM_BANKS; + myRamWpHigh = RAM_HIGH_WP; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3E::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); System::PageAccess access(this, System::PageAccessType::READWRITE); // The hotspots ($3E and $3F) are in TIA address space, so we claim it here for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); +} - // Setup the second segment to always point to the last ROM slice - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1800; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[(mySize - 2048) + (addr & 0x07FF)]; - access.romAccessBase = &myRomAccessBase[(mySize - 2048) + (addr & 0x07FF)]; - access.romPeekCounter = &myRomAccessCounter[(mySize - 2048) + (addr & 0x07FF)]; - access.romPokeCounter = &myRomAccessCounter[(mySize - 2048) + (addr & 0x07FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge3E::checkSwitchBank(uInt16 address, uInt8 value) +{ + // Switch banks if necessary + if(address == 0x003F) { + // Switch ROM bank into segment 0 + bank(value); + return true; } - - // Install pages for the startup bank into the first segment - bank(startBank()); + else if(address == 0x003E) + { + // Switch RAM bank into segment 0 + bank(value + romBankCount()); + return true; + } + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -76,215 +66,8 @@ uInt8 Cartridge3E::peek(uInt16 address) uInt16 peekAddress = address; address &= 0x0FFF; - // Due to the way paging is set up, the only way to get here is a TIA read or - // attempting to read from the RAM write port - if(address < 0x0040) // TIA access return mySystem->tia().peek(address); - else if(myCurrentBank >= myRomBanks) - { - // Reading from the write port triggers an unwanted write - return peekRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)], peekAddress); - } - // Make compiler happy; should never get here - return myImage[(address & 0x07FF) + mySize - 2048]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::poke(uInt16 address, uInt8 value) -{ - uInt16 pokeAddress = address; - address &= 0x0FFF; - - // Switch banks if necessary. Armin (Kroko) says there are no mirrored - // hotspots. - if(address < 0x0040) - { - if(address == 0x003F) - bank(value); - else if(address == 0x003E) - bank(value + myRomBanks); - - return mySystem->tia().poke(address, value); - } - else if(myCurrentBank >= myRomBanks) - { - if(address & 0x0400) - { - pokeRAM(myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)], - pokeAddress, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - return false; - } - } - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - if(bank < myRomBanks) - { - // Make sure the bank they're asking for is reasonable - if((uInt32(bank) << 11) < mySize) - { - myCurrentBank = bank; - } - else - { - // Oops, the bank they're asking for isn't valid so let's wrap it - // around to a valid bank number - myCurrentBank = bank % (mySize >> 11); - } - - uInt32 offset = myCurrentBank << 11; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map ROM image into the system - for(uInt16 addr = 0x1000; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[offset + (addr & 0x07FF)]; - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x07FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x07FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x07FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - } - else - { - bank -= myRomBanks; - bank %= myRamBanks; - myCurrentBank = bank + myRomBanks; - - uInt32 offset = bank << 10; - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - // Map read-port RAM image into the system - // Writes are mapped to poke(), to check for write to the read port - for(uInt16 addr = 0x1000; addr < 0x1400; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myRAM[offset + (addr & 0x03FF)]; - access.romAccessBase = &myRomAccessBase[mySize + offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[mySize + offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[mySize + offset + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - access.directPeekBase = nullptr; - access.type = System::PageAccessType::WRITE; - - // Map write-port RAM image into the system - // Reads are mapped to peek(), to check for read from write port - for(uInt16 addr = 0x1400; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[mySize + offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[mySize + offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[mySize + offset + (addr & 0x03FF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3E::getBank(uInt16 address) const -{ - if (address & 0x800) - return myRomBanks - 1; // 2K slices, fixed bank - else - return myCurrentBank; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3E::bankCount() const -{ - // Because the RAM banks always start at 256 and above, we require the - // number of ROM banks to be 256 - // If the RAM banks were simply appended to the number of actual - // ROM banks, bank numbers would be ambiguous (ie, would bank 128 be - // the last bank of ROM, or one of the banks of RAM?) - return myRomBanks + myRamBanks; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3E::bankSize(uInt16 bank) const -{ - return 2_KB; // we cannot use bankCount() here, because it delivers wrong numbers -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - if(address < 0x0800) - { - if(myCurrentBank < myRomBanks) - myImage[(address & 0x07FF) + (myCurrentBank << 11)] = value; - else - myRAM[(address & 0x03FF) + ((myCurrentBank - myRomBanks) << 10)] = value; - } - else - myImage[(address & 0x07FF) + mySize - 2048] = value; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge3E::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::save(Serializer& out) const -{ - try - { - out.putShort(myCurrentBank); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: Cartridge3E::save" << endl; - return false; - } - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3E::load(Serializer& in) -{ - try - { - myCurrentBank = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch(...) - { - cerr << "ERROR: Cartridge3E::load" << endl; - return false; - } - - // Now, go to the current bank - bank(myCurrentBank); - - return true; + return CartridgeEnhanced::peek(peekAddress); } diff --git a/src/emucore/Cart3E.hxx b/src/emucore/Cart3E.hxx index d78cb3bb0..4871c67a6 100644 --- a/src/emucore/Cart3E.hxx +++ b/src/emucore/Cart3E.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "Cart3EWidget.hxx" #endif @@ -47,10 +47,8 @@ class System; by storing its value into $3F. To map RAM in the first 2K segment instead, store the RAM bank number into $3E. - This implementation of 3E bankswitching numbers the ROM banks 0 to - 255, and the RAM banks 256 to 287. This is done because the public - bankswitching interface requires us to use one bank number, not one - bank number plus the knowledge of whether it's RAM or ROM. + This implementation of 3E bankswitching numbers the RAM banks (up to 32) + after the ROM banks (up to 256). All 32K of potential RAM is available to a game using this class, even though real cartridges might not have the full 32K: We have no way to @@ -58,10 +56,10 @@ class System; may add a stella.pro property for this), but for now it shouldn't cause any problems. (Famous last words...) - @author B. Watson + @author B. Watson, Thomas Jentzsch */ -class Cartridge3E : public Cartridge +class Cartridge3E : public CartridgeEnhanced { friend class Cartridge3EWidget; @@ -79,10 +77,6 @@ class Cartridge3E : public Cartridge virtual ~Cartridge3E() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; /** Install cartridge in the specified system. Invoked by the system @@ -92,66 +86,6 @@ class Cartridge3E : public Cartridge */ void install(System& system) override; - /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system - */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 bankCount() const override; - - /** - Get the size of a bank. - - @param bank The bank to get the size for - @return The bank's size - */ - virtual uInt16 bankSize(uInt16 bank = 0) const; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -179,33 +113,21 @@ class Cartridge3E : public Cartridge */ uInt8 peek(uInt16 address) override; - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; + private: + bool checkSwitchBank(uInt16 address, uInt8 value) override; private: - // Pointer to a dynamically allocated ROM image of the cartridge - ByteBuffer myImage; + // log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 11; // = 2K = 0x0800 - // RAM contents. For now every ROM gets all 32K of potential RAM - std::array myRAM; + // The size of extra RAM in ROM address space + static constexpr uInt16 RAM_BANKS = 32; - // Size of the ROM image - size_t mySize{0}; + // RAM size + static constexpr uInt16 RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; - // Size of the ROM image - uInt16 myRomBanks{0}; - - // Size of the ROM image - uInt16 myRamBanks{32}; - - // Indicates which bank is currently active for the first segment - uInt16 myCurrentBank{0}; + // Write port for extra RAM is at high address + static constexpr bool RAM_HIGH_WP = true; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 27eb94986..1fe28a022 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -85,7 +85,7 @@ uInt16 Cartridge3EPlus::getBank(uInt16 address) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3EPlus::bankCount() const +uInt16 Cartridge3EPlus::romBankCount() const { return uInt16(mySize >> 10); // 1K slices } diff --git a/src/emucore/Cart3EPlus.hxx b/src/emucore/Cart3EPlus.hxx index 76919b9ae..70309d308 100644 --- a/src/emucore/Cart3EPlus.hxx +++ b/src/emucore/Cart3EPlus.hxx @@ -80,7 +80,7 @@ class Cartridge3EPlus: public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/Cart3F.cxx b/src/emucore/Cart3F.cxx index 7c3701c16..21b21b9c7 100644 --- a/src/emucore/Cart3F.cxx +++ b/src/emucore/Cart3F.cxx @@ -46,7 +46,7 @@ bool Cartridge3F::checkSwitchBank(uInt16 address, uInt8 value) if(address <= 0x003F) { // Make sure the bank they're asking for is reasonable - bank(value % bankCount(), 0); + bank(value % romBankCount(), 0); return true; } return false; diff --git a/src/emucore/CartAR.cxx b/src/emucore/CartAR.cxx index 5201a14df..2d8b204b6 100644 --- a/src/emucore/CartAR.cxx +++ b/src/emucore/CartAR.cxx @@ -406,7 +406,7 @@ uInt16 CartridgeAR::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeAR::bankCount() const +uInt16 CartridgeAR::romBankCount() const { return 32; } diff --git a/src/emucore/CartAR.hxx b/src/emucore/CartAR.hxx index 6fda35f38..0bc74a291 100644 --- a/src/emucore/CartAR.hxx +++ b/src/emucore/CartAR.hxx @@ -87,7 +87,7 @@ class CartridgeAR : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index 2c2cd803a..bd6d227c2 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -457,7 +457,7 @@ uInt16 CartridgeBUS::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeBUS::bankCount() const +uInt16 CartridgeBUS::romBankCount() const { return 7; } diff --git a/src/emucore/CartBUS.hxx b/src/emucore/CartBUS.hxx index d00e90133..5567f1196 100644 --- a/src/emucore/CartBUS.hxx +++ b/src/emucore/CartBUS.hxx @@ -98,7 +98,7 @@ class CartridgeBUS : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index b182634a3..2758a9825 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -430,7 +430,7 @@ uInt16 CartridgeCDF::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCDF::bankCount() const +uInt16 CartridgeCDF::romBankCount() const { return 7; } diff --git a/src/emucore/CartCDF.hxx b/src/emucore/CartCDF.hxx index 5e65bc4d4..7c5295f7a 100644 --- a/src/emucore/CartCDF.hxx +++ b/src/emucore/CartCDF.hxx @@ -104,7 +104,7 @@ class CartridgeCDF : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartCM.cxx b/src/emucore/CartCM.cxx index 5fa6dff3d..40ec603e5 100644 --- a/src/emucore/CartCM.cxx +++ b/src/emucore/CartCM.cxx @@ -163,7 +163,7 @@ uInt16 CartridgeCM::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCM::bankCount() const +uInt16 CartridgeCM::romBankCount() const { // We report 4 banks (of ROM), even though RAM can overlap the upper 2K // of cart address space at some times diff --git a/src/emucore/CartCM.hxx b/src/emucore/CartCM.hxx index 2c0cf54d2..bf8b2586e 100644 --- a/src/emucore/CartCM.hxx +++ b/src/emucore/CartCM.hxx @@ -155,7 +155,7 @@ class CartridgeCM : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartCTY.cxx b/src/emucore/CartCTY.cxx index 1536b64e0..822473081 100644 --- a/src/emucore/CartCTY.cxx +++ b/src/emucore/CartCTY.cxx @@ -255,7 +255,7 @@ uInt16 CartridgeCTY::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeCTY::bankCount() const +uInt16 CartridgeCTY::romBankCount() const { return 8; } diff --git a/src/emucore/CartCTY.hxx b/src/emucore/CartCTY.hxx index 5626013a1..fdd6c1e19 100644 --- a/src/emucore/CartCTY.hxx +++ b/src/emucore/CartCTY.hxx @@ -153,7 +153,7 @@ class CartridgeCTY : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index 808e658d4..c8a038c25 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -399,7 +399,7 @@ uInt16 CartridgeDPC::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPC::bankCount() const +uInt16 CartridgeDPC::romBankCount() const { return 2; } diff --git a/src/emucore/CartDPC.hxx b/src/emucore/CartDPC.hxx index 330a0086a..6c186bfdb 100644 --- a/src/emucore/CartDPC.hxx +++ b/src/emucore/CartDPC.hxx @@ -85,7 +85,7 @@ class CartridgeDPC : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index 0761eeb19..b71f5a8c0 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -619,7 +619,7 @@ uInt16 CartridgeDPCPlus::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPCPlus::bankCount() const +uInt16 CartridgeDPCPlus::romBankCount() const { return 6; } diff --git a/src/emucore/CartDPCPlus.hxx b/src/emucore/CartDPCPlus.hxx index 46b18af99..9617d6545 100644 --- a/src/emucore/CartDPCPlus.hxx +++ b/src/emucore/CartDPCPlus.hxx @@ -100,7 +100,7 @@ class CartridgeDPCPlus : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 1a446a9a8..b8c1cde13 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -34,16 +34,19 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEnhanced::install(System& system) { - // Copy the ROM image into my buffer - createRomAccessArrays(mySize); + // limit banked RAM size to the size of one RAM bank + uInt16 ramSize = myRamBankCount ? 1 << (myBankShift - 1) : myRamSize; // calculate bank switching and RAM sizes and masks myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 myBankMask = myBankSize - 1; // e.g. = 0x0FFF myBankSegs = 1 << (12 - myBankShift); // e.g. = 1 - myRamMask = myRamSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) - myWriteOffset = myRamWpHigh ? myRamSize : 0; - myReadOffset = myRamWpHigh ? 0 : myRamSize; + myRomOffset = myRamBankCount ? 0 : myRamSize * 2; + myRamMask = ramSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) + myWriteOffset = myRamWpHigh ? ramSize : 0; + myReadOffset = myRamWpHigh ? 0 : ramSize; + + createRomAccessArrays(mySize + (myRomOffset ? 0 : myRamSize)); // Allocate array for the current bank segments slices myCurrentSegOffset = make_unique(myBankSegs); @@ -51,41 +54,44 @@ void CartridgeEnhanced::install(System& system) // Allocate array for the RAM area myRAM = make_unique(myRamSize); - // Setup page access mySystem = &system; - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000 + myWriteOffset; addr < 0x1000 + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) + if(myRomOffset) { - uInt16 offset = addr & myRamMask; - access.romAccessBase = &myRomAccessBase[myWriteOffset + offset]; - access.romPeekCounter = &myRomAccessCounter[myWriteOffset + offset]; - access.romPokeCounter = &myRomAccessCounter[myWriteOffset + offset + myAccessSize]; - mySystem->setPageAccess(addr, access); - } + // Setup page access for extended RAM; banked RAM will be setup in bank() + System::PageAccess access(this, System::PageAccessType::READ); - // Set the page accessing method for the RAM reading pages - access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1000 + myReadOffset; addr < 0x1000 + myReadOffset + myRamSize; addr += System::PAGE_SIZE) - { - uInt16 offset = addr & myRamMask; - access.directPeekBase = &myRAM[offset]; - access.romAccessBase = &myRomAccessBase[myReadOffset + offset]; - access.romPeekCounter = &myRomAccessCounter[myReadOffset + offset]; - access.romPokeCounter = &myRomAccessCounter[myReadOffset + offset + myAccessSize]; - mySystem->setPageAccess(addr, access); + // Set the page accessing method for the RAM writing pages + // Map access to this class, since we need to inspect all accesses to + // check if RWP happens + access.type = System::PageAccessType::WRITE; + for(uInt16 addr = 0x1000 + myWriteOffset; addr < 0x1000 + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) + { + uInt16 offset = addr & myRamMask; + access.romAccessBase = &myRomAccessBase[myWriteOffset + offset]; + access.romPeekCounter = &myRomAccessCounter[myWriteOffset + offset]; + access.romPokeCounter = &myRomAccessCounter[myWriteOffset + offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } + + // Set the page accessing method for the RAM reading pages + access.type = System::PageAccessType::READ; + for(uInt16 addr = 0x1000 + myReadOffset; addr < 0x1000 + myReadOffset + myRamSize; addr += System::PAGE_SIZE) + { + uInt16 offset = addr & myRamMask; + access.directPeekBase = &myRAM[offset]; + access.romAccessBase = &myRomAccessBase[myReadOffset + offset]; + access.romPeekCounter = &myRomAccessCounter[myReadOffset + offset]; + access.romPokeCounter = &myRomAccessCounter[myReadOffset + offset + myAccessSize]; + mySystem->setPageAccess(addr, access); + } } // Install pages for the startup bank (TODO: currently only in first bank segment) bank(startBank(), 0); if(mySize >= 4_KB && myBankSegs > 1) // Setup the last bank segment to always point to the last ROM segment - bank(bankCount() - 1, myBankSegs - 1); + bank(romBankCount() - 1, myBankSegs - 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -106,63 +112,103 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) if (hotspot()) checkSwitchBank(address & 0x0FFF); - address &= myBankMask; - // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) - if(address < myReadOffset + myRamSize && address >= myReadOffset) + if(isRamBank(address)) + { + address &= myRamMask; + // This is a read access to a write port! - return peekRAM(myRAM[address], peekAddress); + // Reading from the write port triggers an unwanted write + // The RAM banks follow the ROM banks and are half the size of a ROM bank + return peekRAM(myRAM[((myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] - mySize) >> 1) + address], + peekAddress); + } else - return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; + { + address &= myBankMask; + + // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) + if(address < myReadOffset + myRamSize && address >= myReadOffset) + // This is a read access to a write port! + // Reading from the write port triggers an unwanted write + return peekRAM(myRAM[address], peekAddress); + else + return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { - uInt16 pokeAddress = address; - // Switch banks if necessary + // Note: (TODO?) + // The checkSwitchBank() call makes no difference between ROM and e.g TIA space + // Writing to e.g. 0xf0xx might triger a bankswitch, is (and was!) this a bug??? if (checkSwitchBank(address & 0x0FFF, value)) return false; - address &= myBankMask; if(myRamSize) { - if(bool(address & myRamSize) == myRamWpHigh) + uInt16 pokeAddress = address; + + if(isRamBank(address)) { - pokeRAM(myRAM[address & myRamMask], pokeAddress, value); - return true; + if(bool(address & (myBankSize >> 1)) == myRamWpHigh) + { + address &= myRamMask; + // The RAM banks follow the ROM banks and are half the size of a ROM bank + pokeRAM(myRAM[((myCurrentSegOffset[(pokeAddress & 0xFFF) >> myBankShift] - mySize) >> 1) + address], + pokeAddress, value); + return true; + } + else + { + // Writing to the read port should be ignored, but trigger a break if option enabled + uInt8 dummy; + + pokeRAM(dummy, pokeAddress, value); + myRamWriteAccess = pokeAddress; + } } else { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; + //address &= myBankMask; + if(bool(address & myRamSize) == myRamWpHigh) + { + pokeRAM(myRAM[address & myRamMask], pokeAddress, value); + return true; + } + else + { + // Writing to the read port should be ignored, but trigger a break if option enabled + uInt8 dummy; - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; + pokeRAM(dummy, pokeAddress, value); + myRamWriteAccess = pokeAddress; + } } } return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment, bool isRAM) +bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) { if(bankLocked()) return false; uInt16 segmentOffset = segment << myBankShift; - if(!isRAM) + if(!myRamBankCount || bank < romBankCount()) { // Setup ROM bank - // Remember what bank is in which segment - uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; - + uInt16 romBank = bank % romBankCount(); + // Remember what bank is in this segment + uInt32 bankOffset = myCurrentSegOffset[segment] = romBank << myBankShift; uInt16 hotspot = this->hotspot(); uInt16 hotSpotAddr; - uInt16 fromAddr = (segmentOffset + 0x1000 + myRamSize * 2) & ~System::PAGE_MASK; + uInt16 fromAddr = (0x1000 + segmentOffset + myRomOffset) & ~System::PAGE_MASK; // for ROMs < 4_KB, the whole address space will be mapped. - uInt16 toAddr = (segmentOffset + 0x1000 + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; + uInt16 toAddr = (0x1000 + segmentOffset + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; if(hotspot) hotSpotAddr = (hotspot & ~System::PAGE_MASK); @@ -185,24 +231,24 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment, bool isRAM) mySystem->setPageAccess(addr, access); } } - /*else + else { // Setup RAM bank - // TODO: define offsets on init - uInt16 myWriteBankOffset = myBankSize >> 1; - uInt16 myReadBankOffset = 0; + uInt16 ramBank = (bank - romBankCount()) % myRamBankCount; + // The RAM banks follow the ROM banks and are half the size of a ROM bank + uInt32 bankOffset = uInt32(mySize) + (ramBank << (myBankShift - 1)); - // Remember what bank is in which segment - uInt32 bankOffset = myCurrentSegOffset[segment] = bank << myBankShift; + // Remember what bank is in this segment + myCurrentSegOffset[segment] = bank << myBankShift; // Set the page accessing method for the RAM writing pages - uInt16 fromAddr = (segmentOffset + myWriteBankOffset + 0x1000) & ~System::PAGE_MASK; - uInt16 toAddr = (segmentOffset + myWriteBankOffset + 0x1000 + myBankSize >> 1) & ~System::PAGE_MASK; + uInt16 fromAddr = (0x1000 + segmentOffset + myWriteOffset) & ~System::PAGE_MASK; + uInt16 toAddr = (0x1000 + segmentOffset + myWriteOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; System::PageAccess access(this, System::PageAccessType::WRITE); for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) { - uInt32 offset = bankOffset + (addr & myBankMask); + uInt32 offset = bankOffset + (addr & myRamMask); access.romAccessBase = &myRomAccessBase[offset]; access.romPeekCounter = &myRomAccessCounter[offset]; @@ -211,25 +257,23 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment, bool isRAM) } // Set the page accessing method for the RAM reading pages - fromAddr = (segmentOffset + myReadBankOffset + 0x1000) & ~System::PAGE_MASK; - toAddr = (segmentOffset + myReadBankOffset + 0x1000 + myBankSize >> 1) & ~System::PAGE_MASK; - + fromAddr = (0x1000 + segmentOffset + myReadOffset) & ~System::PAGE_MASK; + toAddr = (0x1000 + segmentOffset + myReadOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; access.type = System::PageAccessType::READ; + for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) { - uInt32 offset = bankOffset + (addr & myBankMask); + uInt32 offset = bankOffset + (addr & myRamMask); - - - uInt16 offset = addr & myRamMask; - access.directPeekBase = &myBankRAM[offset]; + access.directPeekBase = &myRAM[offset - mySize]; access.romAccessBase = &myRomAccessBase[offset]; access.romPeekCounter = &myRomAccessCounter[offset]; access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; mySystem->setPageAccess(addr, access); } - }*/ + + } return myBankChanged = true; } @@ -246,23 +290,42 @@ uInt16 CartridgeEnhanced::getSegmentBank(uInt16 segment) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeEnhanced::bankCount() const +uInt16 CartridgeEnhanced::romBankCount() const { return uInt16(mySize >> myBankShift); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt16 CartridgeEnhanced::ramBankCount() const +{ + return myRamBankCount; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartridgeEnhanced::isRamBank(uInt16 address) const +{ + return myRamBankCount ? getBank(address) >= romBankCount() : false; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) { - if((address & myBankMask) < myRamSize * 2) + if(isRamBank(address)) { - // Normally, a write to the read port won't do anything - // However, the patch command is special in that ignores such - // cart restrictions - myRAM[address & myRamMask] = value; + myRAM[((myCurrentSegOffset[(address & 0xFFF) >> myBankShift] - mySize) >> 1) + (address & myRamMask)] = value; } else - myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)] = value; + { + if((address & myBankMask) < myRamSize * 2) + { + // Normally, a write to the read port won't do anything + // However, the patch command is special in that ignores such + // cart restrictions + myRAM[address & myRamMask] = value; + } + else + myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)] = value; + } return myBankChanged = true; } diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 29046f0ea..3b68101cc 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -62,11 +62,10 @@ class CartridgeEnhanced : public Cartridge @param bank The bank that should be installed in the system @param segment The segment the bank should be using - @param isRAM True if the bank is a RAM bank @return true, if bank has changed */ - bool bank(uInt16 bank, uInt16 segment, bool isRAM = false); + bool bank(uInt16 bank, uInt16 segment); /** Install pages for the specified bank in the system. @@ -94,7 +93,21 @@ class CartridgeEnhanced : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; + + /** + Query the number of RAM 'banks' supported by the cartridge. + */ + uInt16 ramBankCount() const override; + + /** + Check if the segment at that address contains a RAM bank + + @param address The address which defines the segment + + @return true, if the segment is currently mapped to a RAM bank + */ + bool isRamBank(uInt16 address) const; /** Patch the cartridge ROM. @@ -162,9 +175,19 @@ class CartridgeEnhanced : public Cartridge // The extra RAM size uInt16 myRamSize{RAM_SIZE}; // default 0 + // The number of RAM banks + uInt16 myRamBankCount{RAM_BANKS}; // default 0 + // The mask for the extra RAM uInt16 myRamMask{0}; // RAM_SIZE - 1, but doesn't matter when RAM_SIZE is 0 + // The offset into ROM space for reading from ROM + // This is zero for types without RAM and with banked RAM + // - xxSC = 0x0100 + // - FA(2) = 0x0200 + // - CV = 0x0800 + uInt16 myRomOffset{0}; + // The offset into ROM space for writing to RAM // - xxSC = 0x0000 // - FA(2) = 0x0000 @@ -202,6 +225,9 @@ class CartridgeEnhanced : public Cartridge // The size of extra RAM in ROM address space static constexpr uInt16 RAM_SIZE = 0; // default = none + // The size of extra RAM in ROM address space + static constexpr uInt16 RAM_BANKS = 0; + // Write port for extra RAM is at low address by default static constexpr bool RAM_HIGH_WP = false; diff --git a/src/emucore/CartFC.cxx b/src/emucore/CartFC.cxx index 741935c06..925718d50 100644 --- a/src/emucore/CartFC.cxx +++ b/src/emucore/CartFC.cxx @@ -61,14 +61,14 @@ bool CartridgeFC::poke(uInt16 address, uInt8 value) case 0x0FF9: // Set the high bits of target 4k bank - if (value << 2 < bankCount()) + if (value << 2 < romBankCount()) { myTargetBank += value << 2; - myTargetBank %= bankCount(); + myTargetBank %= romBankCount(); } else // special handling when both values are identical (e.g. 4/4 or 5/5) - myTargetBank = value % bankCount(); + myTargetBank = value % romBankCount(); break; default: diff --git a/src/emucore/CartMNetwork.cxx b/src/emucore/CartMNetwork.cxx index c5ff0cfab..984769b17 100644 --- a/src/emucore/CartMNetwork.cxx +++ b/src/emucore/CartMNetwork.cxx @@ -36,7 +36,7 @@ void CartridgeMNetwork::initialize(const ByteBuffer& image, size_t size) std::copy_n(image.get(), std::min(romSize(), size), myImage.get()); createRomAccessArrays(romSize() + myRAM.size()); - myRAMSlice = bankCount() - 1; + myRAMSlice = romBankCount() - 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -265,7 +265,7 @@ bool CartridgeMNetwork::patch(uInt16 address, uInt8 value) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const uInt8* CartridgeMNetwork::getImage(size_t& size) const { - size = bankCount() * BANK_SIZE; + size = romBankCount() * BANK_SIZE; return myImage.get(); } @@ -310,7 +310,7 @@ bool CartridgeMNetwork::load(Serializer& in) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeMNetwork::bankCount() const +uInt16 CartridgeMNetwork::romBankCount() const { return uInt16(mySize >> 11); } @@ -318,5 +318,5 @@ uInt16 CartridgeMNetwork::bankCount() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt16 CartridgeMNetwork::romSize() const { - return bankCount() * BANK_SIZE; + return romBankCount() * BANK_SIZE; } diff --git a/src/emucore/CartMNetwork.hxx b/src/emucore/CartMNetwork.hxx index ef06aae57..dd9443390 100644 --- a/src/emucore/CartMNetwork.hxx +++ b/src/emucore/CartMNetwork.hxx @@ -108,7 +108,7 @@ class CartridgeMNetwork : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/emucore/CartSB.cxx b/src/emucore/CartSB.cxx index 58dd94522..56973392c 100644 --- a/src/emucore/CartSB.cxx +++ b/src/emucore/CartSB.cxx @@ -64,7 +64,7 @@ bool CartridgeSB::checkSwitchBank(uInt16 address, uInt8) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeSB::peek(uInt16 address) { - address &= (0x17FF + bankCount()); + address &= (0x17FF + romBankCount()); checkSwitchBank(address); @@ -82,7 +82,7 @@ uInt8 CartridgeSB::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeSB::poke(uInt16 address, uInt8 value) { - address &= (0x17FF + bankCount()); + address &= (0x17FF + romBankCount()); checkSwitchBank(address); diff --git a/src/emucore/CartSB.hxx b/src/emucore/CartSB.hxx index 3682dbb04..1e8a363a9 100644 --- a/src/emucore/CartSB.hxx +++ b/src/emucore/CartSB.hxx @@ -100,7 +100,7 @@ class CartridgeSB : public CartridgeEnhanced uInt16 hotspot() const override { return 0x0840; } - uInt16 getStartBank() const override { return bankCount() - 1; } + uInt16 getStartBank() const override { return romBankCount() - 1; } private: // Previous Device's page access diff --git a/src/emucore/CartWD.cxx b/src/emucore/CartWD.cxx index c6373fa05..9a14be24a 100644 --- a/src/emucore/CartWD.cxx +++ b/src/emucore/CartWD.cxx @@ -250,7 +250,7 @@ uInt16 CartridgeWD::getBank(uInt16) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeWD::bankCount() const +uInt16 CartridgeWD::romBankCount() const { return 16; } diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 0e2aad45c..88c59e469 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -101,7 +101,7 @@ class CartridgeWD : public Cartridge /** Query the number of banks supported by the cartridge. */ - uInt16 bankCount() const override; + uInt16 romBankCount() const override; /** Patch the cartridge ROM. diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 49ec158b0..bd5d87402 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -445,7 +445,7 @@ void GameInfoDialog::loadEmulationProperties(const Properties& props) VarList::push_back(items, "Auto", "AUTO"); if(instance().hasConsole()) { - uInt16 numBanks = instance().console().cartridge().bankCount(); + uInt16 numBanks = instance().console().cartridge().romBankCount(); for(uInt16 i = 0; i < numBanks; ++i) VarList::push_back(items, i, i); From a823fad32c4fd002ff4a7fe662e442310d95f27a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 15 Apr 2020 20:59:06 +0200 Subject: [PATCH 22/69] refactored Cart3E+ --- src/debugger/gui/Cart3EPlusWidget.cxx | 196 ++++++-------- src/debugger/gui/CartDebugWidget.cxx | 2 +- src/emucore/Bankswitch.cxx | 2 +- src/emucore/Cart3E.cxx | 2 +- src/emucore/Cart3EPlus.cxx | 359 +++++--------------------- src/emucore/Cart3EPlus.hxx | 160 +++++------- src/emucore/CartEnhanced.cxx | 6 +- 7 files changed, 212 insertions(+), 515 deletions(-) diff --git a/src/debugger/gui/Cart3EPlusWidget.cxx b/src/debugger/gui/Cart3EPlusWidget.cxx index 74935f22b..a93cb8f98 100644 --- a/src/debugger/gui/Cart3EPlusWidget.cxx +++ b/src/debugger/gui/Cart3EPlusWidget.cxx @@ -30,8 +30,8 @@ Cartridge3EPlusWidget::Cartridge3EPlusWidget( size_t size = cart.mySize; ostringstream info; - info << "3EPlus cartridge - (64K ROM + RAM)\n" - << " 4-64K ROM (1K banks), 32K RAM (512b banks)\n" + info << "3EPlus cartridge - (4..64K ROM + RAM)\n" + << " 4..64K ROM (1K banks), ..32K RAM (512b banks)\n" << "Each 1K ROM selected by writing to $3F\n" "Each 512b RAM selected by writing to $3E\n" " Lower 512b of bank x (R)\n" @@ -39,83 +39,78 @@ Cartridge3EPlusWidget::Cartridge3EPlusWidget( << "Startup bank = 0/-1/-1/0 (ROM)\n"; // Eventually, we should query this from the debugger/disassembler - //uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; // Currently the cart starts at bank 0. If we change that, we have to change this too. uInt16 start = (cart.myImage[0x400-3] << 8) | cart.myImage[0x400 - 4]; - start -= start % 0x1000; - info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; + start &= 0xF000; + info << "Bank RORG = $" << Common::Base::HEX4 << start << "\n"; int xpos = 2, - ypos = addBaseInformation(size, "T. Jentzsch", info.str()) + - myLineHeight; + ypos = addBaseInformation(size, "Thomas Jentzsch", info.str()) + 8; VariantList bankno; - for(uInt32 i = 0; i < myCart.ROM_BANK_COUNT; ++i) + for(uInt32 i = 0; i < myCart.romBankCount(); ++i) VarList::push_back(bankno, i, i); VariantList banktype; VarList::push_back(banktype, "ROM", "ROM"); VarList::push_back(banktype, "RAM", "RAM"); - for(uInt32 i = 0; i < 4; ++i) + for(uInt32 seg = 0; seg < myCart.myBankSegs; ++seg) { - int xpos_s, ypos_s = ypos; + int xpos_s, ypos_s = ypos + 1; ostringstream label; - label << "Set segment " << i << " as "; + label << "Set segment " << seg << " as "; - new StaticTextWidget(boss, _font, xpos, ypos, _font.getStringWidth(label.str()), - myFontHeight, label.str(), TextAlign::Left); + new StaticTextWidget(boss, _font, xpos, ypos, label.str()); ypos += myLineHeight + 8; - xpos += 20; - myBankNumber[i] = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("Slot "), - myLineHeight, bankno, "Slot ", - 6*_font.getMaxCharWidth()); - addFocusWidget(myBankNumber[i]); + xpos += _font.getMaxCharWidth() * 2; + myBankNumber[seg] = + new PopUpWidget(boss, _font, xpos, ypos-2, 2 *_font.getMaxCharWidth(), + myLineHeight, bankno, "Bank "); + addFocusWidget(myBankNumber[seg]); - xpos += myBankNumber[i]->getWidth(); - myBankType[i] = - new PopUpWidget(boss, _font, xpos, ypos-2, 5*_font.getMaxCharWidth(), - myLineHeight, banktype, " of ", _font.getStringWidth(" of ")); - addFocusWidget(myBankType[i]); + xpos += myBankNumber[seg]->getWidth(); + myBankType[seg] = + new PopUpWidget(boss, _font, xpos, ypos-2, 3 *_font.getMaxCharWidth(), + myLineHeight, banktype, " of "); + addFocusWidget(myBankType[seg]); - xpos += myBankType[i]->getWidth() + 10; + xpos = myBankType[seg]->getRight() + _font.getMaxCharWidth(); - myBankCommit[i] = new ButtonWidget(boss, _font, xpos, ypos-4, + // add "Commit" button (why required?) + myBankCommit[seg] = new ButtonWidget(boss, _font, xpos, ypos-4, _font.getStringWidth(" Commit "), myButtonHeight, - "Commit", bankEnum[i]); - myBankCommit[i]->setTarget(this); - addFocusWidget(myBankCommit[i]); + "Commit", bankEnum[seg]); + myBankCommit[seg]->setTarget(this); + addFocusWidget(myBankCommit[seg]); - xpos_s = xpos + myBankCommit[i]->getWidth() + 20; + xpos_s = myBankCommit[seg]->getRight() + _font.getMaxCharWidth() * 2; StaticTextWidget* t; - int addr1 = start + (i*0x400), addr2 = addr1 + 0x1FF; + int addr1 = start + (seg * 0x400), addr2 = addr1 + 0x200; label.str(""); - label << Common::Base::HEX4 << addr1 << "-" << Common::Base::HEX4 << addr2; - t = new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, - _font.getStringWidth(label.str()), myFontHeight, label.str(), TextAlign::Left); + label << "$" << Common::Base::HEX4 << addr1 << "-$" << Common::Base::HEX4 << (addr1 + 0x1FF); + t = new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); - int xoffset = xpos_s+t->getWidth() + 10; - myBankState[2*i] = new EditTextWidget(boss, _font, xoffset, ypos_s, + int xoffset = t->getRight() + _font.getMaxCharWidth(); + myBankState[2*seg] = new EditTextWidget(boss, _font, xoffset, ypos_s, w - xoffset - 10, myLineHeight, ""); - myBankState[2*i]->setEditable(false, true); + myBankState[2*seg]->setEditable(false, true); ypos_s += myLineHeight + 4; label.str(""); - label << Common::Base::HEX4 << (addr2 + 1) << "-" << Common::Base::HEX4 << (addr2 + 1 + 0x1FF); - new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, - _font.getStringWidth(label.str()), myFontHeight, label.str(), TextAlign::Left); + label << "$" << Common::Base::HEX4 << addr2 << "-$" << Common::Base::HEX4 << (addr2 + 0x1FF); + new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); - myBankState[2*i+1] = new EditTextWidget(boss, _font, xoffset, ypos_s, + myBankState[2*seg+1] = new EditTextWidget(boss, _font, xoffset, ypos_s, w - xoffset - 10, myLineHeight, ""); - myBankState[2*i+1]->setEditable(false, true); + myBankState[2*seg+1]->setEditable(false, true); - xpos = 10; - ypos+= 2 * myLineHeight; + xpos = 2; + ypos += 2 * myLineHeight; } } @@ -163,15 +158,14 @@ void Cartridge3EPlusWidget::handleCommand(CommandSender* sender, myBankType[segment]->getSelected() < 0) return; - uInt8 bank = (segment << myCart.BANK_BITS) | - (myBankNumber[segment]->getSelected() & myCart.BIT_BANK_MASK); + uInt8 bank = myBankNumber[segment]->getSelected(); myCart.unlockBank(); if(myBankType[segment]->getSelectedTag() == "ROM") - myCart.bankROM(bank); + myCart.bank(bank, segment); else - myCart.bankRAM(bank); + myCart.bank(bank + myCart.romBankCount(), segment); myCart.lockBank(); invalidate(); @@ -183,26 +177,15 @@ string Cartridge3EPlusWidget::bankState() { ostringstream& buf = buffer(); - // In this scheme, consecutive 512b segments are either both ROM or both RAM; - // we only need to look at the lower segment to determine what the 1K bank is - for(int i = 0; i < 4; ++i) + for(int seg = 0; seg < myCart.myBankSegs; ++seg) { - uInt16 bank = myCart.bankInUse[i*2]; + int bank = myCart.getSegmentBank(seg); - if(bank == myCart.BANK_UNDEFINED) // never accessed - { - buf << " U!"; - } + if(bank >= myCart.romBankCount()) // was RAM mapped here? + buf << " RAM " << bank - myCart.romBankCount(); else - { - int bankno = bank & myCart.BIT_BANK_MASK; - - if(bank & myCart.BITMASK_ROMRAM) // was RAM mapped here? - buf << " RAM " << bankno; - else - buf << " ROM " << bankno; - } - if(i < 3) + buf << " ROM " << bank; + if(seg < myCart.myBankSegs - 1) buf << " /"; } @@ -212,68 +195,42 @@ string Cartridge3EPlusWidget::bankState() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlusWidget::updateUIState() { - // Set description for each 512b bank state (@ each index) + // Set description for each 1K bank state (@ each index) // Set contents for actual banks number and type (@ each even index) - for(int i = 0; i < 8; ++i) + for(int seg = 0; seg < myCart.myBankSegs; ++seg) { - uInt16 bank = myCart.bankInUse[i]; + uInt16 bank = myCart.getSegmentBank(seg); + ostringstream buf; - if(bank == myCart.BANK_UNDEFINED) // never accessed + if(bank >= myCart.romBankCount()) // was RAM mapped here? { - myBankState[i]->setText("Undefined"); - if(i % 2 == 0) - { - myBankNumber[i/2]->clearSelection(); - myBankType[i/2]->clearSelection(); - } + uInt16 ramBank = bank - myCart.romBankCount(); + + buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 + << (ramBank << myCart.myBankShift) << "(R)"; + myBankState[seg * 2]->setText(buf.str()); + + buf.str(""); + buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 + << ((ramBank << myCart.myBankShift) + myCart.myBankSize) << "(W)"; + myBankState[seg * 2 + 1]->setText(buf.str()); + + myBankNumber[seg]->setSelected(ramBank); + myBankType[seg]->setSelected("RAM"); } else { - ostringstream buf; - int bankno = bank & myCart.BIT_BANK_MASK; + buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 + << ((bank << myCart.myBankShift)); + myBankState[seg * 2]->setText(buf.str()); - if(bank & myCart.BITMASK_ROMRAM) // was RAM mapped here? - { - if(bank & myCart.BITMASK_LOWERUPPER) // upper is write port - { - buf << "RAM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER) << " (W)"; - myBankState[i]->setText(buf.str()); - } - else - { - buf << "RAM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER) << " (R)"; - myBankState[i]->setText(buf.str()); - } + buf.str(""); + buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 + << ((bank << myCart.myBankShift) + myCart.myBankSize); + myBankState[seg * 2 + 1]->setText(buf.str()); - if(i % 2 == 0) - { - myBankNumber[i/2]->setSelected(bankno); - myBankType[i/2]->setSelected("RAM"); - } - } - else - { - if(bank & myCart.BITMASK_LOWERUPPER) // upper is high 512b - { - buf << "ROM " << bankno << " @ $" << Common::Base::HEX4 - << ((bankno << myCart.RAM_BANK_TO_POWER) + myCart.RAM_BANK_SIZE); - myBankState[i]->setText(buf.str()); - } - else - { - buf << "ROM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER); - myBankState[i]->setText(buf.str()); - } - - if(i % 2 == 0) - { - myBankNumber[i/2]->setSelected(bankno); - myBankType[i/2]->setSelected("ROM"); - } - } + myBankNumber[seg]->setSelected(bank); + myBankType[seg]->setSelected("ROM"); } } } @@ -294,9 +251,10 @@ uInt32 Cartridge3EPlusWidget::internalRamRPort(int start) string Cartridge3EPlusWidget::internalRamDescription() { ostringstream desc; + desc << "Accessible 512b at a time via:\n" << " $f000/$f400/$f800/$fc00 for Read Access\n" - << " $f200/$f600/$fa00/$fe00 for Write Access (+$200)"; + << " $f200/$f600/$fa00/$fe00 for Write Access"; return desc.str(); } diff --git a/src/debugger/gui/CartDebugWidget.cxx b/src/debugger/gui/CartDebugWidget.cxx index 9e164f4a6..208eec5a7 100644 --- a/src/debugger/gui/CartDebugWidget.cxx +++ b/src/debugger/gui/CartDebugWidget.cxx @@ -42,7 +42,7 @@ int CartDebugWidget::addBaseInformation(size_t bytes, const string& manufacturer const string& desc, const uInt16 maxlines) { const int lwidth = _font.getStringWidth("Manufacturer "), - fwidth = _w - lwidth - 20; + fwidth = _w - lwidth - 12; EditTextWidget* w = nullptr; ostringstream buf; diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 9726dc6aa..84d0dd037 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -105,7 +105,7 @@ Bankswitch::BSList = {{ { "128IN1" , "128IN1 Multicart (256/512K)" }, { "2K" , "2K (32-2048 bytes Atari)" }, { "3E" , "3E (32K Tigervision)" }, - { "3E+" , "3E+ (TJ modified DASH)" }, + { "3E+" , "3E+ (TJ modified 3E)" }, { "3F" , "3F (512K Tigervision)" }, { "4A50" , "4A50 (64K 4A50 + RAM)" }, { "4K" , "4K (4K Atari)" }, diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index a927ddd2d..3e7454bda 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -35,7 +35,7 @@ void Cartridge3E::install(System& system) { CartridgeEnhanced::install(system); - System::PageAccess access(this, System::PageAccessType::READWRITE); + System::PageAccess access(this, System::PageAccessType::WRITE); // The hotspots ($3E and $3F) are in TIA address space, so we claim it here for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 1fe28a022..f6ac01679 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -22,339 +22,104 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3EPlus::Cartridge3EPlus(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) -{ - // Allocate array for the ROM image - myImage = make_unique(mySize); + : CartridgeEnhanced(image, size, md5, settings) - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize + myRAM.size()); +{ + myBankShift = BANK_SHIFT; + myRamSize = RAM_SIZE; + myRamBankCount = RAM_BANKS; + myRamWpHigh = RAM_HIGH_WP; + + //// Allocate array for the ROM image + //myImage = make_unique(mySize); + + //// Copy the ROM image into my buffer + //std::copy_n(image.get(), mySize, myImage.get()); + //createRomAccessArrays(mySize + myRAM.size()); } +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//void Cartridge3EPlus::reset() +//{ +// initializeRAM(myRAM.data(), myRAM.size()); +// +// // Remember startup bank (0 per spec, rather than last per 3E scheme). +// // Set this to go to 3rd 1K Bank. +// initializeStartBank(0); +// +// // Initialise bank values for all ROM/RAM access +// // This is used to reverse-lookup from address to bank location +// for(auto& b: bankInUse) +// b = BANK_UNDEFINED; // bank is undefined and inaccessible! +// +// initializeBankState(); +// +// // We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset +// bankROM((0 << BANK_BITS) | 0); +// bankROM((3 << BANK_BITS) | 0); +//} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlus::reset() { - initializeRAM(myRAM.data(), myRAM.size()); + CartridgeEnhanced::reset(); - // Remember startup bank (0 per spec, rather than last per 3E scheme). - // Set this to go to 3rd 1K Bank. - initializeStartBank(0); - - // Initialise bank values for all ROM/RAM access - // This is used to reverse-lookup from address to bank location - for(auto& b: bankInUse) - b = BANK_UNDEFINED; // bank is undefined and inaccessible! - - initializeBankState(); - - // We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset - bankROM((0 << BANK_BITS) | 0); - bankROM((3 << BANK_BITS) | 0); + bank(mySystem->randGenerator().next() % romBankCount(), 1); + bank(mySystem->randGenerator().next() % romBankCount(), 2); + bank(startBank(), 3); // Stella reads the PC vector always from here (TODO?) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlus::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); - System::PageAccess access(this, System::PageAccessType::READWRITE); + System::PageAccess access(this, System::PageAccessType::WRITE); // The hotspots are in TIA address space, so we claim it here for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); - - // Initialise bank values for all ROM/RAM access - // This is used to reverse-lookup from address to bank location - for(auto& b: bankInUse) - b = BANK_UNDEFINED; // bank is undefined and inaccessible! - - initializeBankState(); - - // Setup the last segment (of 4, each 1K) to point to the first ROM slice - // Actually we DO NOT want "always". It's just on bootup, and can be out switched later - bankROM((0 << BANK_BITS) | 0); - bankROM((3 << BANK_BITS) | 0); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3EPlus::getBank(uInt16 address) const +bool Cartridge3EPlus::checkSwitchBank(uInt16 address, uInt8 value) { - return bankInUse[(address & 0xFFF) >> 10]; // 1K slices -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 Cartridge3EPlus::romBankCount() const -{ - return uInt16(mySize >> 10); // 1K slices + // Switch banks if necessary + if(address == 0x003F) { + // Switch ROM bank into segment 0 + bank(value & 0b111111, value >> 6); + return true; + } + else if(address == 0x003E) + { + // Switch RAM bank into segment 0 + bank((value & 0b111111) + romBankCount(), value >> 6); + return true; + } + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 Cartridge3EPlus::peek(uInt16 address) { uInt16 peekAddress = address; - address &= 0x0FFF; // restrict to 4K address range + address &= 0x0FFF; - uInt8 value = 0; - uInt32 bank = (address >> (ROM_BANK_TO_POWER - 1)) & 7; // convert to 512 byte bank index (0-7) - uInt16 imageBank = bankInUse[bank]; // the ROM/RAM bank that's here + if(address < 0x0040) // TIA peek + return mySystem->tia().peek(address); - if(imageBank == BANK_UNDEFINED) // an uninitialised bank? - { - // accessing invalid bank, so return should be... random? - value = mySystem->randGenerator().next(); - - } - else if(imageBank & BITMASK_ROMRAM) // a RAM bank - { - Int32 ramBank = imageBank & BIT_BANK_MASK; // discard irrelevant bits - Int32 offset = ramBank << RAM_BANK_TO_POWER; // base bank address in RAM - offset += (address & BITMASK_RAM_BANK); // + byte offset in RAM bank - - return peekRAM(myRAM[offset], peekAddress); - } - - return value; + return CartridgeEnhanced::peek(peekAddress); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge3EPlus::poke(uInt16 address, uInt8 value) { - bool changed = false; + if(CartridgeEnhanced::poke(address, value)) + return true; - // Check for write to the bank switch address. RAM/ROM and bank # are encoded in 'value' - // There are NO mirrored hotspots. - - if(address == BANK_SWITCH_HOTSPOT_RAM) - changed = bankRAM(value); - else if(address == BANK_SWITCH_HOTSPOT_ROM) - changed = bankROM(value); - - if(!(address & 0x1000)) - { + if(address < 0x0040) // TIA poke // Handle TIA space that we claimed above - changed = changed || mySystem->tia().poke(address, value); - } - else - { - uInt32 bankNumber = (address >> RAM_BANK_TO_POWER) & 7; // now 512 byte bank # (ie: 0-7) - Int16 whichBankIsThere = bankInUse[bankNumber]; // ROM or RAM bank reference + return mySystem->tia().poke(address, value); - if(whichBankIsThere & BITMASK_ROMRAM) - { - if(address & RAM_BANK_SIZE) - { - uInt32 byteOffset = address & BITMASK_RAM_BANK; - uInt32 baseAddress = ((whichBankIsThere & BIT_BANK_MASK) << RAM_BANK_TO_POWER) + byteOffset; - pokeRAM(myRAM[baseAddress], address, value); - changed = true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - changed = false; - } - } - } - - return changed; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3EPlus::bankRAM(uInt8 bank) -{ - if(bankLocked()) // debugger can lock RAM - return false; - -//cerr << "bankRAM " << int(bank) << endl; - - // Each RAM bank uses two slots, separated by 0x200 in memory -- one read, one write. - bankRAMSlot(bank | BITMASK_ROMRAM | 0); - bankRAMSlot(bank | BITMASK_ROMRAM | BITMASK_LOWERUPPER); - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlus::bankRAMSlot(uInt16 bank) -{ - uInt16 bankNumber = (bank >> BANK_BITS) & 3; // which bank # we are switching TO (BITS D6,D7) to 512 byte block - uInt16 currentBank = bank & BIT_BANK_MASK; // Wrap around/restrict to valid range - bool upper = bank & BITMASK_LOWERUPPER; // is this the read or write port - - uInt32 startCurrentBank = currentBank << RAM_BANK_TO_POWER; // Effectively * 512 bytes -//cerr << "raw bank=" << std::dec << currentBank << endl -// << "startCurrentBank=$" << std::hex << startCurrentBank << endl; - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - if(upper) // We're mapping the write port - { - bankInUse[bankNumber * 2 + 1] = Int16(bank); - access.type = System::PageAccessType::WRITE; - } - else // We're mapping the read port - { - bankInUse[bankNumber * 2] = Int16(bank); - access.type = System::PageAccessType::READ; - } - - uInt16 start = 0x1000 + (bankNumber << (RAM_BANK_TO_POWER+1)) + (upper ? RAM_WRITE_OFFSET : 0); - uInt16 end = start + RAM_BANK_SIZE - 1; - -//cerr << "bank RAM: " << bankNumber << " -> " << (bankNumber * 2 + (upper ? 1 : 0)) << (upper ? " (W)" : " (R)") << endl -// << "start=" << std::hex << start << ", end=" << end << endl << endl; - for(uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - { - if(!upper) - access.directPeekBase = &myRAM[startCurrentBank + (addr & (RAM_BANK_SIZE - 1))]; - - access.romAccessBase = &myRomAccessBase[mySize + startCurrentBank + (addr & (RAM_BANK_SIZE - 1))]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3EPlus::bankROM(uInt8 bank) -{ - if(bankLocked()) // debugger can lock ROM - return false; - - // Map ROM bank image into the system into the correct slot - // Memory map is 1K slots at 0x1000, 0x1400, 0x1800, 0x1C00 - // Each ROM uses 2 consecutive 512 byte slots - bankROMSlot(bank | 0); - bankROMSlot(bank | BITMASK_LOWERUPPER); - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlus::bankROMSlot(uInt16 bank) -{ - uInt16 bankNumber = (bank >> BANK_BITS) & 3; // which bank # we are switching TO (BITS D6,D7) - uInt16 currentBank = bank & BIT_BANK_MASK; // Wrap around/restrict to valid range - bool upper = bank & BITMASK_LOWERUPPER; // is this the lower or upper 512b - - bankInUse[bankNumber * 2 + (upper ? 1 : 0)] = Int16(bank); // Record which bank switched in (as ROM) - - uInt32 startCurrentBank = currentBank << ROM_BANK_TO_POWER; // Effectively *1K - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - uInt16 start = 0x1000 + (bankNumber << ROM_BANK_TO_POWER) + (upper ? ROM_BANK_SIZE / 2 : 0); - uInt16 end = start + ROM_BANK_SIZE / 2 - 1; - - for(uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[startCurrentBank + (addr & (ROM_BANK_SIZE - 1))]; - access.romAccessBase = &myRomAccessBase[startCurrentBank + (addr & (ROM_BANK_SIZE - 1))]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlus::initializeBankState() -{ - // Switch in each 512b slot - for(uInt32 b = 0; b < 8; ++b) - { - if(bankInUse[b] == BANK_UNDEFINED) - { - // All accesses point to peek/poke above - System::PageAccess access(this, System::PageAccessType::READ); - uInt16 start = 0x1000 + (b << RAM_BANK_TO_POWER); - uInt16 end = start + RAM_BANK_SIZE - 1; - for(uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); - } - else if (bankInUse[b] & BITMASK_ROMRAM) - bankRAMSlot(bankInUse[b]); - else - bankROMSlot(bankInUse[b]); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3EPlus::patch(uInt16 address, uInt8 value) -{ -#if 0 - // Patch the cartridge ROM (for debugger) - - myBankChanged = true; - - uInt32 bankNumber = (address >> RAM_BANK_TO_POWER) & 7; // now 512 byte bank # (ie: 0-7) - uInt16 whichBankIsThere = bankInUse[bankNumber]; // ROM or RAM bank reference - - if (whichBankIsThere == BANK_UNDEFINED) { - - // We're trying to access undefined memory (no bank here yet). Fail! - myBankChanged = false; - - } else if (whichBankIsThere & BITMASK_ROMRAM) { // patching RAM (512 byte banks) - - uInt32 byteOffset = address & BITMASK_RAM_BANK; - uInt32 baseAddress = ((whichBankIsThere & BIT_BANK_MASK) << RAM_BANK_TO_POWER) + byteOffset; - myRAM[baseAddress] = value; // write to RAM - - // TODO: Stephen -- should we set 'myBankChanged' true when there's a RAM write? - - } else { // patching ROM (1K banks) - - uInt32 byteOffset = address & BITMASK_ROM_BANK; - uInt32 baseAddress = (whichBankIsThere << ROM_BANK_TO_POWER) + byteOffset; - myImage[baseAddress] = value; // write to the image - } - - return myBankChanged; -#else return false; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* Cartridge3EPlus::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3EPlus::save(Serializer& out) const -{ - try - { - out.putShortArray(bankInUse.data(), bankInUse.size()); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch (...) - { - cerr << "ERROR: Cartridge3EPlus::save" << endl; - return false; - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge3EPlus::load(Serializer& in) -{ - try - { - in.getShortArray(bankInUse.data(), bankInUse.size()); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch (...) - { - cerr << "ERROR: Cartridge3EPlus::load" << endl; - return false; - } - - initializeBankState(); - return true; } diff --git a/src/emucore/Cart3EPlus.hxx b/src/emucore/Cart3EPlus.hxx index 70309d308..1a2440e40 100644 --- a/src/emucore/Cart3EPlus.hxx +++ b/src/emucore/Cart3EPlus.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT class Cartridge3EPlusWidget; @@ -29,19 +29,67 @@ class Cartridge3EPlusWidget; #endif /** - Cartridge class from Thomas Jentzsch, mostly based on the 'DASH' scheme - with the following changes: + Cartridge class for new tiling engine "Boulder Dash" format games with RAM. + Kind of a combination of 3F and 3E, with better switchability. + B.Watson's Cart3E was used as a template for building this implementation. - RAM areas: - - read $x000, write $x200 - - read $x400, write $x600 - - read $x800, write $xa00 - - read $xc00, write $xe00 + The destination bank (0-3) is held in the top bits of the value written to + $3E (for RAM switching) or $3F (for ROM switching). The low 6 bits give + the actual bank number (0-63) corresponding to 512 byte blocks for RAM and + 1024 byte blocks for ROM. The maximum size is therefore 32K RAM and 64K ROM. - @author Thomas Jentzsch and Stephen Anthony + D7D6 indicate the bank number (0-3) + D5D4D3D2D1D0 indicate the actual # (0-63) from the image/ram + + ROM: + + Note: in descriptions $F000 is equivalent to $1000 -- that is, we only deal + with the low 13 bits of addressing. Stella code uses $1000, I'm used to $F000 + So, mask with top bits clear :) when reading this document. + + In this scheme, the 4K address space is broken into four 1K ROM/512b RAM segments + living at 0x1000, 0x1400, 0x1800, 0x1C00 (or, same thing, 0xF000... etc.), + + The last 1K ROM ($FC00-$FFFF) segment in the 6502 address space (ie: $1C00-$1FFF) + is initialised to point to the FIRST 1K of the ROM image, so the reset vectors + must be placed at the end of the first 1K in the ROM image. Note, this is + DIFFERENT to 3E which switches in the UPPER bank and this bank is fixed. This + allows variable sized ROM without having to detect size. First bank (0) in ROM is + the default fixed bank mapped to $FC00. + + The system requires the reset vectors to be valid on a reset, so either the + hardware first switches in the first bank, or the programmer must ensure + that the reset vector is present in ALL ROM banks which might be switched + into the last bank area. Currently the latter (programmer onus) is required, + but it would be nice for the cartridge hardware to auto-switch on reset. + + ROM switching (write of block+bank number to $3F) D7D6 upper 2 bits of bank # + indicates the destination segment (0-3, corresponding to $F000, $F400, $F800, + $FC00), and lower 6 bits indicate the 1K bank to switch in. Can handle 64 + x 1K ROM banks (64K total). + + D7 D6 D5D4D3D2D1D0 + 0 0 x x x x x x switch a 1K ROM bank xxxxxx to $F000 + 0 1 switch a 1K ROM bank xxxxxx to $F400 + 1 0 switch a 1K ROM bank xxxxxx to $F800 + 1 1 switch a 1K ROM bank xxxxxx to $FC00 + + RAM switching (write of segment+bank number to $3E) with D7D6 upper 2 bits of + bank # indicates the destination RAM segment (0-3, corresponding to $F000, + $F400, $F800, $FC00). + + Can handle 64 x 512 byte RAM banks (32K total) + + D7 D6 D5D4D3D2D1D0 + 0 0 x x x x x x switch a 512 byte RAM bank xxxxxx to $F000 with write @ $F200 + 0 1 switch a 512 byte RAM bank xxxxxx to $F400 with write @ $F600 + 1 0 switch a 512 byte RAM bank xxxxxx to $F800 with write @ $FA00 + 1 1 switch a 512 byte RAM bank xxxxxx to $FC00 with write @ $FE00 + + @author Thomas Jentzsch and Stephen Anthony */ -class Cartridge3EPlus: public Cartridge +class Cartridge3EPlus: public CartridgeEnhanced { friend class Cartridge3EPlusWidget; @@ -70,51 +118,6 @@ class Cartridge3EPlus: public Cartridge */ void install(System& system) override; - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 romBankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - /** Get a descriptor for the device name (used in error checking). @@ -152,47 +155,20 @@ class Cartridge3EPlus: public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - bool bankRAM(uInt8 bank); // switch a RAM bank - bool bankROM(uInt8 bank); // switch a ROM bank + bool checkSwitchBank(uInt16 address, uInt8 value) override; - void bankRAMSlot(uInt16 bank); // switch in a 512b RAM slot (lower or upper 1/2 bank) - void bankROMSlot(uInt16 bank); // switch in a 512b RAM slot (read or write port) + private: + // log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 10; // = 1K = 0x0400 - void initializeBankState(); // set all banks according to current bankInUse state + // The size of extra RAM in ROM address space + static constexpr uInt16 RAM_BANKS = 64; - // We have an array that indicates for each of the 8 512 byte areas of the address space, which ROM/RAM - // bank is used in that area. ROM switches 1K so occupies 2 successive entries for each switch. RAM occupies - // two as well, one 512 byte for read and one for write. The RAM locations are +0x800 apart, and the ROM - // are consecutive. This allows us to determine on a read/write exactly where the data is. + // RAM size + static constexpr uInt16 RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; - static constexpr uInt16 BANK_UNDEFINED = 0x8000; // bank is undefined and inaccessible - std::array bankInUse; // bank being used for ROM/RAM (eight 512 byte areas) - - static constexpr uInt16 BANK_SWITCH_HOTSPOT_RAM = 0x3E; // writes to this address cause bankswitching - static constexpr uInt16 BANK_SWITCH_HOTSPOT_ROM = 0x3F; // writes to this address cause bankswitching - - static constexpr uInt8 BANK_BITS = 6; // # bits for bank - static constexpr uInt8 BIT_BANK_MASK = (1 << BANK_BITS) - 1; // mask for those bits - static constexpr uInt16 BITMASK_LOWERUPPER = 0x100; // flags lower or upper section of bank (1==upper) - static constexpr uInt16 BITMASK_ROMRAM = 0x200; // flags ROM or RAM bank switching (1==RAM) - - static constexpr uInt16 MAXIMUM_BANK_COUNT = (1 << BANK_BITS); - static constexpr uInt16 RAM_BANK_TO_POWER = 9; // 2^n = 512 - static constexpr uInt16 RAM_BANK_SIZE = (1 << RAM_BANK_TO_POWER); - static constexpr uInt16 BITMASK_RAM_BANK = (RAM_BANK_SIZE - 1); - static constexpr uInt32 RAM_TOTAL_SIZE = MAXIMUM_BANK_COUNT * RAM_BANK_SIZE; - - static constexpr uInt16 ROM_BANK_TO_POWER = 10; // 2^n = 1024 - static constexpr uInt16 ROM_BANK_SIZE = (1 << ROM_BANK_TO_POWER); - static constexpr uInt16 BITMASK_ROM_BANK = (ROM_BANK_SIZE - 1); - - static constexpr uInt16 ROM_BANK_COUNT = 64; - - static constexpr uInt16 RAM_WRITE_OFFSET = 0x200; - - ByteBuffer myImage; // Pointer to a dynamically allocated ROM image of the cartridge - size_t mySize{0}; // Size of the ROM image - std::array myRAM; + // Write port for extra RAM is at high address + static constexpr bool RAM_HIGH_WP = true; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index b8c1cde13..01cf5cbcb 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -20,7 +20,7 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, - const string& md5, const Settings& settings) + const string& md5, const Settings& settings) : Cartridge(settings, md5), mySize(size) { @@ -270,9 +270,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) access.romPeekCounter = &myRomAccessCounter[offset]; access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; mySystem->setPageAccess(addr, access); - } - - + } } return myBankChanged = true; } From 9d12378cff5e2fca06d6bd3ecb985b7c1f49cb72 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 15 Apr 2020 21:15:44 +0200 Subject: [PATCH 23/69] removed DASH type (incl. doc update) --- Changes.txt | 2 +- docs/index.html | 3 +- src/debugger/gui/CartDASHWidget.cxx | 371 ---------------------------- src/debugger/gui/CartDASHWidget.hxx | 86 ------- src/debugger/gui/module.mk | 1 - src/emucore/Bankswitch.cxx | 4 - src/emucore/Bankswitch.hxx | 10 +- src/emucore/CartDASH.cxx | 355 -------------------------- src/emucore/CartDASH.hxx | 277 --------------------- src/emucore/CartDetector.cxx | 15 +- src/emucore/CartDetector.hxx | 5 - src/emucore/module.mk | 1 - src/windows/Stella.vcxproj | 8 - src/windows/Stella.vcxproj.filters | 12 - 14 files changed, 8 insertions(+), 1142 deletions(-) delete mode 100644 src/debugger/gui/CartDASHWidget.cxx delete mode 100644 src/debugger/gui/CartDASHWidget.hxx delete mode 100644 src/emucore/CartDASH.cxx delete mode 100644 src/emucore/CartDASH.hxx diff --git a/Changes.txt b/Changes.txt index 7a6b7bc3d..e7faac008 100644 --- a/Changes.txt +++ b/Changes.txt @@ -30,7 +30,7 @@ * Restored 'cfg' directory for Distella config files. - * Removed unused CV+ bank switching type. + * Removed unused CV+ and DASH bank switching types. -Have fun! diff --git a/docs/index.html b/docs/index.html index b0065878b..18aa916dc 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3781,7 +3781,7 @@ Ms Pac-Man (Stella extended codes): - + @@ -3794,7 +3794,6 @@ Ms Pac-Man (Stella extended codes): - diff --git a/src/debugger/gui/CartDASHWidget.cxx b/src/debugger/gui/CartDASHWidget.cxx deleted file mode 100644 index a3dfa1109..000000000 --- a/src/debugger/gui/CartDASHWidget.cxx +++ /dev/null @@ -1,371 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#include "CartDASH.hxx" -#include "EditTextWidget.hxx" -#include "PopUpWidget.hxx" -#include "CartDASHWidget.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDASHWidget::CartridgeDASHWidget( - GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, - int x, int y, int w, int h, CartridgeDASH& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) -{ - size_t size = cart.mySize; - - ostringstream info; - info << "DASH cartridge - (64K ROM + RAM)\n" - << " 4-64K ROM (1K banks), 32K RAM (512b banks)\n" - << "Each 1K ROM selected by writing to $3F\n" - "Each 512b RAM selected by writing to $3E\n" - " First 512B of bank x (R)\n" - " First 512B of bank x+4 (+$800) (W)\n" - << "Startup bank = 0/-1/-1/0 (ROM)\n"; - - // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - start -= start % 0x1000; - info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; - - int xpos = 2, - ypos = addBaseInformation(size, "A. Davie & T. Jentzsch", info.str()) + - myLineHeight; - - VariantList bankno; - for(uInt32 i = 0; i < myCart.ROM_BANK_COUNT; ++i) - VarList::push_back(bankno, i, i); - - VariantList banktype; - VarList::push_back(banktype, "ROM", "ROM"); - VarList::push_back(banktype, "RAM", "RAM"); - - for(uInt32 i = 0; i < 4; ++i) - { - int xpos_s, ypos_s = ypos; - - ostringstream label; - label << "Set segment " << i << " as: "; - - new StaticTextWidget(boss, _font, xpos, ypos, _font.getStringWidth(label.str()), - myFontHeight, label.str(), TextAlign::Left); - ypos += myLineHeight + 8; - - xpos += 20; - myBankNumber[i] = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("Slot "), - myLineHeight, bankno, "Slot ", - 6*_font.getMaxCharWidth()); - addFocusWidget(myBankNumber[i]); - - xpos += myBankNumber[i]->getWidth(); - myBankType[i] = - new PopUpWidget(boss, _font, xpos, ypos-2, 5*_font.getMaxCharWidth(), - myLineHeight, banktype, " of ", _font.getStringWidth(" of ")); - addFocusWidget(myBankType[i]); - - xpos += myBankType[i]->getWidth() + 10; - - myBankCommit[i] = new ButtonWidget(boss, _font, xpos, ypos-4, - _font.getStringWidth(" Commit "), myButtonHeight, - "Commit", bankEnum[i]); - myBankCommit[i]->setTarget(this); - addFocusWidget(myBankCommit[i]); - - xpos_s = xpos + myBankCommit[i]->getWidth() + 20; - - StaticTextWidget* t; - int addr1 = start + (i*0x400), addr2 = addr1 + 0x1FF; - - label.str(""); - label << Common::Base::HEX4 << addr1 << "-" << Common::Base::HEX4 << addr2; - t = new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, - _font.getStringWidth(label.str()), myFontHeight, label.str(), TextAlign::Left); - - int xoffset = xpos_s+t->getWidth() + 10; - myBankState[2*i] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*i]->setEditable(false, true); - ypos_s += myLineHeight + 4; - - label.str(""); - label << Common::Base::HEX4 << (addr2 + 1) << "-" << Common::Base::HEX4 << (addr2 + 1 + 0x1FF); - new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, - _font.getStringWidth(label.str()), myFontHeight, label.str(), TextAlign::Left); - - myBankState[2*i+1] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*i+1]->setEditable(false, true); - - xpos = 10; - ypos+= 2 * myLineHeight; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASHWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASHWidget::loadConfig() -{ - updateUIState(); - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASHWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - uInt16 segment = 0; - switch(cmd) - { - case kBank0Changed: - segment = 0; - break; - case kBank1Changed: - segment = 1; - break; - case kBank2Changed: - segment = 2; - break; - case kBank3Changed: - segment = 3; - break; - default: - break; - } - - // Ignore bank if either number or type hasn't been selected - if(myBankNumber[segment]->getSelected() < 0 || - myBankType[segment]->getSelected() < 0) - return; - - uInt8 bank = (segment << myCart.BANK_BITS) | - (myBankNumber[segment]->getSelected() & myCart.BIT_BANK_MASK); - - myCart.unlockBank(); - - if(myBankType[segment]->getSelectedTag() == "ROM") - myCart.bankROM(bank); - else - myCart.bankRAM(bank); - - myCart.lockBank(); - invalidate(); - updateUIState(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDASHWidget::bankState() -{ - ostringstream& buf = buffer(); - int lastROMBank = -1; - bool lastSlotRAM = false; - - for(int i = 0; i < 8; ++i) - { - uInt16 bank = myCart.bankInUse[i]; - - if(bank == myCart.BANK_UNDEFINED) // never accessed - { - buf << " U!"; - } - else - { - int bankno = bank & myCart.BIT_BANK_MASK; - - if(bank & myCart.BITMASK_ROMRAM) // was RAM mapped here? - { - // RAM will always need a '+' placed somewhere, since it always - // consists of 512B segments - bool inFirstSlot = (i % 2 == 0); - if(!(inFirstSlot || lastSlotRAM)) - { - lastSlotRAM = false; - buf << " +"; - } - - if(bank & myCart.BITMASK_LOWERUPPER) // upper is write port - buf << " RAM " << bankno << "W"; - else - buf << " RAM " << bankno << "R"; - - if(inFirstSlot) - { - buf << " +"; - lastSlotRAM = true; - } - } - else - { - // ROM can be contiguous, since 2 512B segments can form a single - // 1K bank; in this case we only show the info once - bool highBankSame = (i % 2 == 1) && (bankno == lastROMBank); - if(!highBankSame) - { - buf << " ROM " << bankno; - lastROMBank = bankno; - } - else - lastROMBank = -1; - - lastSlotRAM = false; - } - } - - if((i+1) % 2 == 0 && i < 7) - buf << " /"; - } - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASHWidget::updateUIState() -{ - // Set contents for actual banks number and type - for(int i = 0; i < 4; ++i) - { - uInt16 segment = myCart.segmentInUse[i]; - - if(segment == myCart.BANK_UNDEFINED) - { - myBankNumber[i]->clearSelection(); - myBankType[i]->clearSelection(); - } - else - { - int bankno = segment & myCart.BIT_BANK_MASK; - const string& banktype = (segment & myCart.BITMASK_ROMRAM) ? "RAM" : "ROM"; - - myBankNumber[i]->setSelected(bankno); - myBankType[i]->setSelected(banktype); - } - } - - // Set description for each 512b bank state - for(int i = 0; i < 8; ++i) - { - uInt16 bank = myCart.bankInUse[i]; - - if(bank == myCart.BANK_UNDEFINED) // never accessed - { - myBankState[i]->setText("Undefined"); - } - else - { - ostringstream buf; - int bankno = bank & myCart.BIT_BANK_MASK; - - if(bank & myCart.BITMASK_ROMRAM) // was RAM mapped here? - { - if(bank & myCart.BITMASK_LOWERUPPER) // upper is write port - { - buf << "RAM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER) << " (W)"; - myBankState[i]->setText(buf.str()); - } - else - { - buf << "RAM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER) << " (R)"; - myBankState[i]->setText(buf.str()); - } - } - else - { - if(bank & myCart.BITMASK_LOWERUPPER) // upper is high 512b - { - buf << "ROM " << bankno << " @ $" << Common::Base::HEX4 - << ((bankno << myCart.RAM_BANK_TO_POWER) + myCart.RAM_BANK_SIZE); - myBankState[i]->setText(buf.str()); - } - else - { - buf << "ROM " << bankno << " @ $" << Common::Base::HEX4 - << (bankno << myCart.RAM_BANK_TO_POWER); - myBankState[i]->setText(buf.str()); - } - } - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeDASHWidget::internalRamSize() -{ - return 32*1024; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeDASHWidget::internalRamRPort(int start) -{ - return 0x0000 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDASHWidget::internalRamDescription() -{ - ostringstream desc; - desc << "Accessible 512b at a time via:\n" - << " $F000/$F200/$F400/etc used for Read Access\n" - << " $F800/$FA00/$FC00/etc used for Write Access (+$800)"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeDASHWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeDASHWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASHWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDASHWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const std::array CartridgeDASHWidget::bankEnum = { - kBank0Changed, kBank1Changed, kBank2Changed, kBank3Changed -}; diff --git a/src/debugger/gui/CartDASHWidget.hxx b/src/debugger/gui/CartDASHWidget.hxx deleted file mode 100644 index e738c2292..000000000 --- a/src/debugger/gui/CartDASHWidget.hxx +++ /dev/null @@ -1,86 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef CARTRIDGEDASH_WIDGET_HXX -#define CARTRIDGEDASH_WIDGET_HXX - -class CartridgeDASH; -class ButtonWidget; -class EditTextWidget; -class PopUpWidget; - -#include "CartDebugWidget.hxx" - -class CartridgeDASHWidget : public CartDebugWidget -{ - public: - CartridgeDASHWidget(GuiObject* boss, const GUI::Font& lfont, - const GUI::Font& nfont, - int x, int y, int w, int h, - CartridgeDASH& cart); - virtual ~CartridgeDASHWidget() = default; - - private: - void updateUIState(); - - private: - CartridgeDASH& myCart; - - std::array myBankNumber{nullptr}; - std::array myBankType{nullptr}; - std::array myBankCommit{nullptr}; - std::array myBankState{nullptr}; - - struct CartState { - ByteArray internalram; - }; - CartState myOldState; - - enum BankID { - kBank0Changed = 'b0CH', - kBank1Changed = 'b1CH', - kBank2Changed = 'b2CH', - kBank3Changed = 'b3CH' - }; - static const std::array bankEnum; - - private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - // end of functions for Cartridge RAM tab - - // Following constructors and assignment operators not supported - CartridgeDASHWidget() = delete; - CartridgeDASHWidget(const CartridgeDASHWidget&) = delete; - CartridgeDASHWidget(CartridgeDASHWidget&&) = delete; - CartridgeDASHWidget& operator=(const CartridgeDASHWidget&) = delete; - CartridgeDASHWidget& operator=(CartridgeDASHWidget&&) = delete; -}; - -#endif diff --git a/src/debugger/gui/module.mk b/src/debugger/gui/module.mk index 522d31cf4..f4f94387f 100644 --- a/src/debugger/gui/module.mk +++ b/src/debugger/gui/module.mk @@ -23,7 +23,6 @@ MODULE_OBJS := \ src/debugger/gui/CartCMWidget.o \ src/debugger/gui/CartCTYWidget.o \ src/debugger/gui/CartCVWidget.o \ - src/debugger/gui/CartDASHWidget.o \ src/debugger/gui/CartDFSCWidget.o \ src/debugger/gui/CartDFWidget.o \ src/debugger/gui/CartDPCPlusWidget.o \ diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 84d0dd037..7ce52db58 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -118,7 +118,6 @@ Bankswitch::BSList = {{ { "CM" , "CM (SpectraVideo CompuMate)" }, { "CTY" , "CTY (CDW - Chetiry)" }, { "CV" , "CV (Commavid extra RAM)" }, - { "DASH" , "DASH (Experimental)" }, { "DF" , "DF (CPUWIZ 128K)" }, { "DFSC" , "DFSC (CPUWIZ 128K + RAM)" }, { "DPC" , "DPC (Pitfall II)" }, @@ -196,8 +195,6 @@ Bankswitch::ExtensionMap Bankswitch::ourExtensions = { { "CM" , Bankswitch::Type::_CM }, { "CTY" , Bankswitch::Type::_CTY }, { "CV" , Bankswitch::Type::_CV }, - { "DAS" , Bankswitch::Type::_DASH }, - { "DASH" , Bankswitch::Type::_DASH }, { "DF" , Bankswitch::Type::_DF }, { "DFS" , Bankswitch::Type::_DFSC }, { "DFSC" , Bankswitch::Type::_DFSC }, @@ -260,7 +257,6 @@ Bankswitch::NameToTypeMap Bankswitch::ourNameToTypes = { { "CM" , Bankswitch::Type::_CM }, { "CTY" , Bankswitch::Type::_CTY }, { "CV" , Bankswitch::Type::_CV }, - { "DASH" , Bankswitch::Type::_DASH }, { "DF" , Bankswitch::Type::_DF }, { "DFSC" , Bankswitch::Type::_DFSC }, { "DPC" , Bankswitch::Type::_DPC }, diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx index 4ed7cc445..9021a21ed 100644 --- a/src/emucore/Bankswitch.hxx +++ b/src/emucore/Bankswitch.hxx @@ -41,11 +41,11 @@ class Bankswitch _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, - _CM, _CTY, _CV, _DASH, _DF, _DFSC, _DPC, - _DPCP, _E0, _E7, _E78K, _EF, _EFSC, _F0, - _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, _FA, - _FA2, _FC, _FE, _MDM, _SB, _UA, _UASW, - _WD, _WDSW, _X07, + _CM, _CTY, _CV, _DF, _DFSC, _DPC, _DPCP, + _E0, _E7, _E78K, _EF, _EFSC, _F0, _F4, + _F4SC, _F6, _F6SC, _F8, _F8SC, _FA, _FA2, + _FC, _FE, _MDM, _SB, _UA, _UASW, _WD, + _WDSW, _X07, #ifdef CUSTOM_ARM _CUSTOM, #endif diff --git a/src/emucore/CartDASH.cxx b/src/emucore/CartDASH.cxx deleted file mode 100644 index 6e187d76a..000000000 --- a/src/emucore/CartDASH.cxx +++ /dev/null @@ -1,355 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#include "System.hxx" -#include "TIA.hxx" -#include "CartDASH.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartridgeDASH::CartridgeDASH(const ByteBuffer& image, size_t size, - const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) -{ - // Allocate array for the ROM image - myImage = make_unique(mySize); - - // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); - createRomAccessArrays(mySize + myRAM.size()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASH::reset() -{ - initializeRAM(myRAM.data(), myRAM.size()); - - // Remember startup bank (0 per spec, rather than last per 3E scheme). - // Set this to go to 3rd 1K Bank. - initializeStartBank(0); - - // Initialise bank values for all ROM/RAM access - // This is used to reverse-lookup from address to bank location - for(uInt32 b = 0; b < 8; ++b) - { - bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible! - segmentInUse[b/2] = BANK_UNDEFINED; - } - initializeBankState(); - - // We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset - bankROM((0 << BANK_BITS) | 0); - bankROM((3 << BANK_BITS) | 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASH::install(System& system) -{ - mySystem = &system; - - System::PageAccess access(this, System::PageAccessType::READWRITE); - - // The hotspots are in TIA address space, so we claim it here - for (uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); - - // Initialise bank values for all ROM/RAM access - // This is used to reverse-lookup from address to bank location - for (uInt32 b = 0; b < 8; ++b) - { - bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible! - segmentInUse[b/2] = BANK_UNDEFINED; - } - initializeBankState(); - - // Setup the last segment (of 4, each 1K) to point to the first ROM slice - // Actually we DO NOT want "always". It's just on bootup, and can be out switched later - bankROM((0 << BANK_BITS) | 0); - bankROM((3 << BANK_BITS) | 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDASH::peek(uInt16 address) -{ - uInt16 peekAddress = address; - address &= 0x0FFF; // restrict to 4K address range - - uInt8 value = 0; - uInt32 bank = (address >> (ROM_BANK_TO_POWER - 1)) & 7; // convert to 512 byte bank index (0-7) - uInt16 imageBank = bankInUse[bank]; // the ROM/RAM bank that's here - - if(imageBank == BANK_UNDEFINED) // an uninitialised bank? - { - // accessing invalid bank, so return should be... random? - value = mySystem->randGenerator().next(); - - } - else if(imageBank & BITMASK_ROMRAM) // a RAM bank - { - Int32 ramBank = imageBank & BIT_BANK_MASK; // discard irrelevant bits - Int32 offset = ramBank << RAM_BANK_TO_POWER; // base bank address in RAM - offset += (address & BITMASK_RAM_BANK); // + byte offset in RAM bank - - return peekRAM(myRAM[offset], peekAddress); - } - - return value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::poke(uInt16 address, uInt8 value) -{ - bool changed = false; - - // Check for write to the bank switch address. RAM/ROM and bank # are encoded in 'value' - // There are NO mirrored hotspots. - - if (address == BANK_SWITCH_HOTSPOT_RAM) - changed = bankRAM(value); - else if (address == BANK_SWITCH_HOTSPOT_ROM) - changed = bankROM(value); - - if(!(address & 0x1000)) - { - // Handle TIA space that we claimed above - changed = changed || mySystem->tia().poke(address, value); - } - else - { - uInt32 bankNumber = (address >> RAM_BANK_TO_POWER) & 7; // now 512 byte bank # (ie: 0-7) - Int16 whichBankIsThere = bankInUse[bankNumber]; // ROM or RAM bank reference - - if(whichBankIsThere & BITMASK_ROMRAM) - { - if(address & RAM_BANK_SIZE) - { - uInt32 byteOffset = address & BITMASK_RAM_BANK; - uInt32 baseAddress = ((whichBankIsThere & BIT_BANK_MASK) << RAM_BANK_TO_POWER) + byteOffset; - pokeRAM(myRAM[baseAddress], address, value); - changed = true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - changed = false; - } - } - } - - return changed; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::bankRAM(uInt8 bank) -{ - if (bankLocked()) // debugger can lock RAM - return false; - - // Each RAM bank uses two slots, separated by 0x800 in memory -- one read, one write. - bankRAMSlot(bank | BITMASK_ROMRAM | 0); - bankRAMSlot(bank | BITMASK_ROMRAM | BITMASK_LOWERUPPER); - - // Remember that this hotspot was accessed for RAM - segmentInUse[(bank >> BANK_BITS) & 3] = bank | BITMASK_ROMRAM; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASH::bankRAMSlot(uInt16 bank) -{ - uInt16 bankNumber = (bank >> BANK_BITS) & 3; // which bank # we are switching TO (BITS D6,D7) to 512 byte block - uInt16 currentBank = bank & BIT_BANK_MASK; // Wrap around/restrict to valid range - bool upper = bank & BITMASK_LOWERUPPER; // is this the read or write port - - uInt32 startCurrentBank = currentBank << RAM_BANK_TO_POWER; // Effectively * 512 bytes - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - if(upper) // We're mapping the write port - { - bankInUse[bankNumber + 4] = Int16(bank); - access.type = System::PageAccessType::WRITE; - } - else // We're mapping the read port - { - bankInUse[bankNumber] = Int16(bank); - access.type = System::PageAccessType::READ; - } - - uInt16 start = 0x1000 + (bankNumber << RAM_BANK_TO_POWER) + (upper ? RAM_WRITE_OFFSET : 0); - uInt16 end = start + RAM_BANK_SIZE - 1; - - for (uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - { - if(!upper) - access.directPeekBase = &myRAM[startCurrentBank + (addr & (RAM_BANK_SIZE - 1))]; - - access.romAccessBase = &myRomAccessBase[mySize + startCurrentBank + (addr & (RAM_BANK_SIZE - 1))]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::bankROM(uInt8 bank) -{ - if (bankLocked()) // debugger can lock ROM - return false; - - // Map ROM bank image into the system into the correct slot - // Memory map is 1K slots at 0x1000, 0x1400, 0x1800, 0x1C00 - // Each ROM uses 2 consecutive 512 byte slots - bankROMSlot(bank | 0); - bankROMSlot(bank | BITMASK_LOWERUPPER); - - // Remember that this hotspot was accessed for ROM - segmentInUse[(bank >> BANK_BITS) & 3] = bank; - - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASH::bankROMSlot(uInt16 bank) -{ - uInt16 bankNumber = (bank >> BANK_BITS) & 3; // which bank # we are switching TO (BITS D6,D7) - uInt16 currentBank = bank & BIT_BANK_MASK; // Wrap around/restrict to valid range - bool upper = bank & BITMASK_LOWERUPPER; // is this the lower or upper 512b - - bankInUse[bankNumber * 2 + (upper ? 1 : 0)] = Int16(bank); // Record which bank switched in (as ROM) - - uInt32 startCurrentBank = currentBank << ROM_BANK_TO_POWER; // Effectively *1K - - // Setup the page access methods for the current bank - System::PageAccess access(this, System::PageAccessType::READ); - - uInt16 start = 0x1000 + (bankNumber << ROM_BANK_TO_POWER) + (upper ? ROM_BANK_SIZE / 2 : 0); - uInt16 end = start + ROM_BANK_SIZE / 2 - 1; - - for (uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - { - access.directPeekBase = &myImage[startCurrentBank + (addr & (ROM_BANK_SIZE - 1))]; - access.romAccessBase = &myRomAccessBase[startCurrentBank + (addr & (ROM_BANK_SIZE - 1))]; - mySystem->setPageAccess(addr, access); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDASH::initializeBankState() -{ - // Switch in each 512b slot - for(uInt32 b = 0; b < 8; ++b) - { - if(bankInUse[b] == BANK_UNDEFINED) - { - // All accesses point to peek/poke above - System::PageAccess access(this, System::PageAccessType::READ); - uInt16 start = 0x1000 + (b << RAM_BANK_TO_POWER); - uInt16 end = start + RAM_BANK_SIZE - 1; - for (uInt16 addr = start; addr <= end; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); - } - else if (bankInUse[b] & BITMASK_ROMRAM) - bankRAMSlot(bankInUse[b]); - else - bankROMSlot(bankInUse[b]); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::patch(uInt16 address, uInt8 value) -{ -#if 0 - // Patch the cartridge ROM (for debugger) - - myBankChanged = true; - - uInt32 bankNumber = (address >> RAM_BANK_TO_POWER) & 7; // now 512 byte bank # (ie: 0-7) - Int16 whichBankIsThere = bankInUse[bankNumber]; // ROM or RAM bank reference - - if (whichBankIsThere == BANK_UNDEFINED) { - - // We're trying to access undefined memory (no bank here yet). Fail! - myBankChanged = false; - - } else if (whichBankIsThere & BITMASK_ROMRAM) { // patching RAM (512 byte banks) - - uInt32 byteOffset = address & BITMASK_RAM_BANK; - uInt32 baseAddress = ((whichBankIsThere & BIT_BANK_MASK) << RAM_BANK_TO_POWER) + byteOffset; - myRAM[baseAddress] = value; // write to RAM - - // TODO: Stephen -- should we set 'myBankChanged' true when there's a RAM write? - - } else { // patching ROM (1K banks) - - uInt32 byteOffset = address & BITMASK_ROM_BANK; - uInt32 baseAddress = (whichBankIsThere << ROM_BANK_TO_POWER) + byteOffset; - myImage[baseAddress] = value; // write to the image - } - - return myBankChanged; -#else - return false; -#endif -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDASH::getImage(size_t& size) const -{ - size = mySize; - return myImage.get(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::save(Serializer& out) const -{ - try - { - out.putShortArray(bankInUse.data(), bankInUse.size()); - out.putShortArray(segmentInUse.data(), segmentInUse.size()); - out.putByteArray(myRAM.data(), myRAM.size()); - } - catch (...) - { - cerr << "ERROR: CartridgeDASH::save" << endl; - return false; - } - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDASH::load(Serializer& in) -{ - try - { - in.getShortArray(bankInUse.data(), bankInUse.size()); - in.getShortArray(segmentInUse.data(), segmentInUse.size()); - in.getByteArray(myRAM.data(), myRAM.size()); - } - catch (...) - { - cerr << "ERROR: CartridgeDASH::load" << endl; - return false; - } - - initializeBankState(); - return true; -} diff --git a/src/emucore/CartDASH.hxx b/src/emucore/CartDASH.hxx deleted file mode 100644 index 8bd9fa523..000000000 --- a/src/emucore/CartDASH.hxx +++ /dev/null @@ -1,277 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef CARTRIDGEDASH_HXX -#define CARTRIDGEDASH_HXX - -class System; - -#include "bspf.hxx" -#include "Cart.hxx" - -#ifdef DEBUGGER_SUPPORT -class CartridgeDASHWidget; - #include "CartDASHWidget.hxx" -#endif - -/** - Cartridge class for new tiling engine "Boulder Dash" format games with RAM. - Kind of a combination of 3F and 3E, with better switchability. - B.Watson's Cart3E was used as a template for building this implementation. - - The destination bank (0-3) is held in the top bits of the value written to - $3E (for RAM switching) or $3F (for ROM switching). The low 6 bits give - the actual bank number (0-63) corresponding to 512 byte blocks for RAM and - 1024 byte blocks for ROM. The maximum size is therefore 32K RAM and 64K ROM. - - D7D6 indicate the bank number (0-3) - D5D4D3D2D1D0 indicate the actual # (0-63) from the image/ram - - ROM: - - Note: in descriptions $F000 is equivalent to $1000 -- that is, we only deal - with the low 13 bits of addressing. Stella code uses $1000, I'm used to $F000 - So, mask with top bits clear :) when reading this document. - - In this scheme, the 4K address space is broken into four 1K ROM segments. - living at 0x1000, 0x1400, 0x1800, 0x1C00 (or, same thing, 0xF000... etc.), - and four 512 byte RAM segments, living at 0x1000, 0x1200, 0x1400, 0x1600 - with write-mirrors +0x800 of these. The last 1K ROM ($FC00-$FFFF) segment - in the 6502 address space (ie: $1C00-$1FFF) is initialised to point to the - FIRST 1K of the ROM image, so the reset vectors must be placed at the - end of the first 1K in the ROM image. Note, this is DIFFERENT to 3E which - switches in the UPPER bank and this bank is fixed. This allows variable sized - ROM without having to detect size. First bank (0) in ROM is the default fixed - bank mapped to $FC00. - - The system requires the reset vectors to be valid on a reset, so either the - hardware first switches in the first bank, or the programmer must ensure - that the reset vector is present in ALL ROM banks which might be switched - into the last bank area. Currently the latter (programmer onus) is required, - but it would be nice for the cartridge hardware to auto-switch on reset. - - ROM switching (write of block+bank number to $3F) D7D6 upper 2 bits of bank # - indicates the destination segment (0-3, corresponding to $F000, $F400, $F800, - $FC00), and lower 6 bits indicate the 1K bank to switch in. Can handle 64 - x 1K ROM banks (64K total). - - D7 D6 D5D4D3D2D1D0 - 0 0 x x x x x x switch a 1K ROM bank xxxxx to $F000 - 0 1 switch a 1K ROM bank xxxxx to $F400 - 1 0 switch a 1K ROM bank xxxxx to $F800 - 1 1 switch a 1K ROM bank xxxxx to $FC00 - - RAM switching (write of segment+bank number to $3E) with D7D6 upper 2 bits of - bank # indicates the destination RAM segment (0-3, corresponding to $F000, - $F200, $F400, $F600). Note that this allows contiguous 2K of RAM to be - configured by setting 4 consecutive RAM segments each 512 bytes with - consecutive addresses. However, as the write address of RAM is +0x800, this - invalidates ROM access as described below. - - can handle 64 x 512 byte RAM banks (32K total) - - D7 D6 D5D4D3D2D1D0 - 0 0 x x x x x x switch a 512 byte RAM bank xxxxx to $F000 with write @ $F800 - 0 1 switch a 512 byte RAM bank xxxxx to $F200 with write @ $FA00 - 1 0 switch a 512 byte RAM bank xxxxx to $F400 with write @ $FC00 - 1 1 switch a 512 byte RAM bank xxxxx to $F600 with write @ $FE00 - - It is possible to switch multiple RAM banks and ROM banks together - - For example, - F000-F1FF RAM bank A (512 byte READ) - F200-F3FF high 512 bytes of ROM bank previously loaded at F000 - F400 ROM bank 0 (1K) - F800 RAM bank A (512 byte WRITE) - FA00-FBFF high 512 bytes of ROM bank previously loaded at F400 - FC00 ROM bank 1 - - This example shows 512 bytes of RAM, and 2 1K ROM banks and two 512 byte ROM - bank halves. - - Switching RAM blocks (D7D6 of $3E) partially invalidates ROM blocks, as below... - - RAM block Invalidates ROM block - 0 0 (lower half), 2 (lower half) - 1 0 (upper half), 2 (upper half) - 2 1 (lower half), 3 (upper half) - 3 1 (upper half), 3 (lower half) - - For example, RAM block 1 uses address $F200-$F3FF and $FA00-$FBFF - ROM block 0 uses address $F000-$F3FF, and ROM block 2 uses address $F800-$FBFF - Switching in RAM block 1 makes F200-F3FF ROM inaccessible, however F000-F1FF is - still readable. So, care must be paid. - - This crazy RAM layout is useful as it allows contiguous RAM to be switched in, - up to 2K in one sequentially accessible block. This means you CAN have 2K of - consecutive RAM (don't forget to copy your reset vectors!) - - @author Andrew Davie -*/ - -class CartridgeDASH: public Cartridge -{ - friend class CartridgeDASHWidget; - - public: - /** - Create a new cartridge using the specified image and size - - @param image Pointer to the ROM image - @param size The size of the ROM image - @param md5 The md5sum of the ROM image - @param settings A reference to the various settings (read-only) - */ - CartridgeDASH(const ByteBuffer& image, size_t size, const string& md5, - const Settings& settings); - virtual ~CartridgeDASH() = default; - - public: - /** Reset device to its power-on state */ - void reset() override; - - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - - /** - Save the current state of this cart to the given Serializer. - - @param out The Serializer object to use - @return False on any errors, else true - */ - bool save(Serializer& out) const override; - - /** - Load the current state of this cart from the given Serializer. - - @param in The Serializer object to use - @return False on any errors, else true - */ - bool load(Serializer& in) override; - - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "CartridgeDASH"; } - - #ifdef DEBUGGER_SUPPORT - /** - Get debugger widget responsible for accessing the inner workings - of the cart. - */ - CartDebugWidget* debugWidget(GuiObject* boss, const GUI::Font& lfont, - const GUI::Font& nfont, int x, int y, int w, int h) override - { - return new CartridgeDASHWidget(boss, lfont, nfont, x, y, w, h, *this); - } - #endif - - public: - /** - Get the byte at the specified address - - @return The byte at the specified address - */ - uInt8 peek(uInt16 address) override; - - /** - Change the byte at the specified address to the given value - - @param address The address where the value should be stored - @param value The value to be stored at the address - @return True if the poke changed the device address space, else false - */ - bool poke(uInt16 address, uInt8 value) override; - - private: - bool bankRAM(uInt8 bank); // switch a RAM bank - bool bankROM(uInt8 bank); // switch a ROM bank - - void bankRAMSlot(uInt16 bank); // switch in a 512b RAM slot (lower or upper 1/2 bank) - void bankROMSlot(uInt16 bank); // switch in a 512b RAM slot (read or write port) - - void initializeBankState(); // set all banks according to current bankInUse state - - // We have an array that indicates for each of the 8 512 byte areas of the address space, which ROM/RAM - // bank is used in that area. ROM switches 1K so occupies 2 successive entries for each switch. RAM occupies - // two as well, one 512 byte for read and one for write. The RAM locations are +0x800 apart, and the ROM - // are consecutive. This allows us to determine on a read/write exactly where the data is. - - static constexpr uInt16 BANK_UNDEFINED = 0x8000; // bank is undefined and inaccessible - std::array bankInUse; // bank being used for ROM/RAM (eight 512 byte areas) - std::array segmentInUse; // set by bank methods, to know which hotspot was accessed - - static constexpr uInt16 BANK_SWITCH_HOTSPOT_RAM = 0x3E; // writes to this address cause bankswitching - static constexpr uInt16 BANK_SWITCH_HOTSPOT_ROM = 0x3F; // writes to this address cause bankswitching - - static constexpr uInt8 BANK_BITS = 6; // # bits for bank - static constexpr uInt8 BIT_BANK_MASK = (1 << BANK_BITS) - 1; // mask for those bits - static constexpr uInt16 BITMASK_LOWERUPPER = 0x100; // flags lower or upper section of bank (1==upper) - static constexpr uInt16 BITMASK_ROMRAM = 0x200; // flags ROM or RAM bank switching (1==RAM) - - static constexpr uInt16 MAXIMUM_BANK_COUNT = (1 << BANK_BITS); - static constexpr uInt16 RAM_BANK_TO_POWER = 9; // 2^n = 512 - static constexpr uInt16 RAM_BANK_SIZE = (1 << RAM_BANK_TO_POWER); - static constexpr uInt16 BITMASK_RAM_BANK = (RAM_BANK_SIZE - 1); - static constexpr uInt32 RAM_TOTAL_SIZE = MAXIMUM_BANK_COUNT * RAM_BANK_SIZE; - - static constexpr uInt16 ROM_BANK_TO_POWER = 10; // 2^n = 1024 - static constexpr uInt16 ROM_BANK_SIZE = (1 << ROM_BANK_TO_POWER); - static constexpr uInt16 BITMASK_ROM_BANK = (ROM_BANK_SIZE - 1); - - static constexpr uInt16 ROM_BANK_COUNT = 64; - - static constexpr uInt16 RAM_WRITE_OFFSET = 0x800; - - ByteBuffer myImage; // Pointer to a dynamically allocated ROM image of the cartridge - size_t mySize{0}; // Size of the ROM image - std::array myRAM; - - private: - // Following constructors and assignment operators not supported - CartridgeDASH() = delete; - CartridgeDASH(const CartridgeDASH&) = delete; - CartridgeDASH(CartridgeDASH&&) = delete; - CartridgeDASH& operator=(const CartridgeDASH&) = delete; - CartridgeDASH& operator=(CartridgeDASH&&) = delete; -}; - -#endif diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 09e0def71..4d7a583eb 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -33,7 +33,6 @@ #include "CartCM.hxx" #include "CartCTY.hxx" #include "CartCV.hxx" -#include "CartDASH.hxx" #include "CartDF.hxx" #include "CartDFSC.hxx" #include "CartDPC.hxx" @@ -277,8 +276,6 @@ CartDetector::createFromImage(const ByteBuffer& image, size_t size, Bankswitch:: return make_unique(image, size, md5, settings); case Bankswitch::Type::_CV: return make_unique(image, size, md5, settings); - case Bankswitch::Type::_DASH: - return make_unique(image, size, md5, settings); case Bankswitch::Type::_DF: return make_unique(image, size, md5, settings); case Bankswitch::Type::_DFSC: @@ -522,9 +519,7 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si } // Variable sized ROM formats are independent of image size and come last - if(isProbablyDASH(image, size)) - type = Bankswitch::Type::_DASH; - else if(isProbably3EPlus(image, size)) + if(isProbably3EPlus(image, size)) type = Bankswitch::Type::_3EP; else if(isProbablyMDM(image, size)) type = Bankswitch::Type::_MDM; @@ -750,14 +745,6 @@ bool CartDetector::isProbablyCV(const ByteBuffer& image, size_t size) return searchForBytes(image.get(), size, signature[1], 3, 1); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyDASH(const ByteBuffer& image, size_t size) -{ - // DASH cart is identified key 'TJAD' in the ROM - uInt8 tjad[] = { 'T', 'J', 'A', 'D' }; - return searchForBytes(image.get(), size, tjad, 4, 1); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyDF(const ByteBuffer& image, size_t size, Bankswitch::Type& type) diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index 8f9d04ac9..63a98b053 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -175,11 +175,6 @@ class CartDetector */ static bool isProbablyCV(const ByteBuffer& image, size_t size); - /** - Returns true if the image is probably a DASH bankswitching cartridge - */ - static bool isProbablyDASH(const ByteBuffer& image, size_t size); - /** Returns true if the image is probably a DF/DFSC bankswitching cartridge */ diff --git a/src/emucore/module.mk b/src/emucore/module.mk index 4b72d3b22..9c81e28ec 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -21,7 +21,6 @@ MODULE_OBJS := \ src/emucore/CartCM.o \ src/emucore/CartCTY.o \ src/emucore/CartCV.o \ - src/emucore/CartDASH.o \ src/emucore/CartDPC.o \ src/emucore/CartDPCPlus.o \ src/emucore/CartE0.o \ diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 46fd9a877..b081dde0d 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -588,9 +588,6 @@ true - - true - true @@ -721,7 +718,6 @@ - @@ -1595,9 +1591,6 @@ true - - true - true @@ -1740,7 +1733,6 @@ - diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 8f9d893f8..f0c9b601d 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -723,9 +723,6 @@ Source Files\emucore - - Source Files\emucore - Source Files\debugger @@ -735,9 +732,6 @@ Source Files\debugger - - Source Files\debugger - Source Files\emucore @@ -1703,9 +1697,6 @@ Header Files\emucore - - Header Files\emucore - Header Files\debugger @@ -1715,9 +1706,6 @@ Header Files\debugger - - Header Files\debugger - Header Files\emucore From 646f2a1daa3001df8a5c6efd5d1e578e44d9eaa8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 16 Apr 2020 09:40:15 +0200 Subject: [PATCH 24/69] fix some Clang-Tidy warnings small bugfix for CartFA2 --- src/emucore/Cart3E.cxx | 2 +- src/emucore/Cart3EPlus.cxx | 2 +- src/emucore/CartBF.cxx | 2 +- src/emucore/CartDF.cxx | 2 +- src/emucore/CartEF.cxx | 2 +- src/emucore/CartEnhanced.cxx | 68 ++++++++++++++++++------------------ src/emucore/CartEnhanced.hxx | 10 ++++++ src/emucore/CartFA2.cxx | 6 ++-- src/emucore/CartFE.cxx | 2 +- src/emucore/CartSB.cxx | 3 +- 10 files changed, 54 insertions(+), 45 deletions(-) diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index 3e7454bda..642ac6ce1 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -64,7 +64,7 @@ bool Cartridge3E::checkSwitchBank(uInt16 address, uInt8 value) uInt8 Cartridge3E::peek(uInt16 address) { uInt16 peekAddress = address; - address &= 0x0FFF; + address &= ROM_MASK; if(address < 0x0040) // TIA access return mySystem->tia().peek(address); diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index f6ac01679..274e1f9db 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -103,7 +103,7 @@ bool Cartridge3EPlus::checkSwitchBank(uInt16 address, uInt8 value) uInt8 Cartridge3EPlus::peek(uInt16 address) { uInt16 peekAddress = address; - address &= 0x0FFF; + address &= ROM_MASK; if(address < 0x0040) // TIA peek return mySystem->tia().peek(address); diff --git a/src/emucore/CartBF.cxx b/src/emucore/CartBF.cxx index 0d1921c17..ce3c53198 100644 --- a/src/emucore/CartBF.cxx +++ b/src/emucore/CartBF.cxx @@ -30,7 +30,7 @@ bool CartridgeBF::checkSwitchBank(uInt16 address, uInt8) { // Due to the way addressing is set up, we will only get here if the // address is in the hotspot range ($1F80 - $1FFF) - address &= 0x0FFF; + address &= ROM_MASK; // Switch banks if necessary if((address >= 0x0F80) && (address <= 0x0FBF)) diff --git a/src/emucore/CartDF.cxx b/src/emucore/CartDF.cxx index db9ab62d2..0f4d9a1ca 100644 --- a/src/emucore/CartDF.cxx +++ b/src/emucore/CartDF.cxx @@ -28,7 +28,7 @@ CartridgeDF::CartridgeDF(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeDF::checkSwitchBank(uInt16 address, uInt8) { - address &= 0x0FFF; + address &= ROM_MASK; // Switch banks if necessary if((address >= 0x0FC0) && (address <= 0x0FDF)) diff --git a/src/emucore/CartEF.cxx b/src/emucore/CartEF.cxx index 70cd8236b..039f4aa5c 100644 --- a/src/emucore/CartEF.cxx +++ b/src/emucore/CartEF.cxx @@ -28,7 +28,7 @@ CartridgeEF::CartridgeEF(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEF::checkSwitchBank(uInt16 address, uInt8) { - address &= 0x0FFF; + address &= ROM_MASK; // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FEF)) diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 01cf5cbcb..5816181f2 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -35,18 +35,18 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, void CartridgeEnhanced::install(System& system) { // limit banked RAM size to the size of one RAM bank - uInt16 ramSize = myRamBankCount ? 1 << (myBankShift - 1) : myRamSize; + uInt16 ramSize = myRamBankCount > 0 ? 1 << (myBankShift - 1) : myRamSize; // calculate bank switching and RAM sizes and masks - myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 - myBankMask = myBankSize - 1; // e.g. = 0x0FFF - myBankSegs = 1 << (12 - myBankShift); // e.g. = 1 - myRomOffset = myRamBankCount ? 0 : myRamSize * 2; - myRamMask = ramSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) - myWriteOffset = myRamWpHigh ? ramSize : 0; - myReadOffset = myRamWpHigh ? 0 : ramSize; + myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 + myBankMask = myBankSize - 1; // e.g. = 0x0FFF + myBankSegs = 1 << (MAX_BANK_SHIFT - myBankShift); // e.g. = 1 + myRomOffset = myRamBankCount > 0 ? 0 : myRamSize * 2; + myRamMask = ramSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) + myWriteOffset = myRamWpHigh ? ramSize : 0; // e.g. = 0x0000 + myReadOffset = myRamWpHigh ? 0 : ramSize; // e.g. = 0x0080 - createRomAccessArrays(mySize + (myRomOffset ? 0 : myRamSize)); + createRomAccessArrays(mySize + (myRomOffset > 0 ? 0 : myRamSize)); // Allocate array for the current bank segments slices myCurrentSegOffset = make_unique(myBankSegs); @@ -56,7 +56,7 @@ void CartridgeEnhanced::install(System& system) mySystem = &system; - if(myRomOffset) + if(myRomOffset > 0) { // Setup page access for extended RAM; banked RAM will be setup in bank() System::PageAccess access(this, System::PageAccessType::READ); @@ -65,7 +65,7 @@ void CartridgeEnhanced::install(System& system) // Map access to this class, since we need to inspect all accesses to // check if RWP happens access.type = System::PageAccessType::WRITE; - for(uInt16 addr = 0x1000 + myWriteOffset; addr < 0x1000 + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) + for(uInt16 addr = ROM_OFFSET + myWriteOffset; addr < ROM_OFFSET + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; access.romAccessBase = &myRomAccessBase[myWriteOffset + offset]; @@ -76,7 +76,7 @@ void CartridgeEnhanced::install(System& system) // Set the page accessing method for the RAM reading pages access.type = System::PageAccessType::READ; - for(uInt16 addr = 0x1000 + myReadOffset; addr < 0x1000 + myReadOffset + myRamSize; addr += System::PAGE_SIZE) + for(uInt16 addr = ROM_OFFSET + myReadOffset; addr < ROM_OFFSET + myReadOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; access.directPeekBase = &myRAM[offset]; @@ -110,8 +110,8 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) { uInt16 peekAddress = address; - if (hotspot()) - checkSwitchBank(address & 0x0FFF); + if (hotspot() != 0) + checkSwitchBank(address & ROM_MASK); if(isRamBank(address)) { @@ -120,7 +120,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) // This is a read access to a write port! // Reading from the write port triggers an unwanted write // The RAM banks follow the ROM banks and are half the size of a ROM bank - return peekRAM(myRAM[((myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] - mySize) >> 1) + address], + return peekRAM(myRAM[((myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] - mySize) >> 1) + address], peekAddress); } else @@ -133,7 +133,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) // Reading from the write port triggers an unwanted write return peekRAM(myRAM[address], peekAddress); else - return myImage[myCurrentSegOffset[(peekAddress & 0xFFF) >> myBankShift] + address]; + return myImage[myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] + address]; } } @@ -144,10 +144,10 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) // Note: (TODO?) // The checkSwitchBank() call makes no difference between ROM and e.g TIA space // Writing to e.g. 0xf0xx might triger a bankswitch, is (and was!) this a bug??? - if (checkSwitchBank(address & 0x0FFF, value)) + if (checkSwitchBank(address & ROM_MASK, value)) return false; - if(myRamSize) + if(myRamSize > 0) { uInt16 pokeAddress = address; @@ -157,7 +157,7 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { address &= myRamMask; // The RAM banks follow the ROM banks and are half the size of a ROM bank - pokeRAM(myRAM[((myCurrentSegOffset[(pokeAddress & 0xFFF) >> myBankShift] - mySize) >> 1) + address], + pokeRAM(myRAM[((myCurrentSegOffset[(pokeAddress & ROM_MASK) >> myBankShift] - mySize) >> 1) + address], pokeAddress, value); return true; } @@ -198,7 +198,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt16 segmentOffset = segment << myBankShift; - if(!myRamBankCount || bank < romBankCount()) + if(myRamBankCount == 0 || bank < romBankCount()) { // Setup ROM bank uInt16 romBank = bank % romBankCount(); @@ -206,11 +206,11 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt32 bankOffset = myCurrentSegOffset[segment] = romBank << myBankShift; uInt16 hotspot = this->hotspot(); uInt16 hotSpotAddr; - uInt16 fromAddr = (0x1000 + segmentOffset + myRomOffset) & ~System::PAGE_MASK; + uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myRomOffset) & ~System::PAGE_MASK; // for ROMs < 4_KB, the whole address space will be mapped. - uInt16 toAddr = (0x1000 + segmentOffset + (mySize < 4_KB ? 0x1000 : myBankSize)) & ~System::PAGE_MASK; + uInt16 toAddr = (ROM_OFFSET + segmentOffset + (mySize < 4_KB ? 4_KB : myBankSize)) & ~System::PAGE_MASK; - if(hotspot) + if(hotspot != 0) hotSpotAddr = (hotspot & ~System::PAGE_MASK); else hotSpotAddr = 0xFFFF; // none @@ -242,8 +242,8 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) myCurrentSegOffset[segment] = bank << myBankShift; // Set the page accessing method for the RAM writing pages - uInt16 fromAddr = (0x1000 + segmentOffset + myWriteOffset) & ~System::PAGE_MASK; - uInt16 toAddr = (0x1000 + segmentOffset + myWriteOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; + uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myWriteOffset) & ~System::PAGE_MASK; + uInt16 toAddr = (ROM_OFFSET + segmentOffset + myWriteOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; System::PageAccess access(this, System::PageAccessType::WRITE); for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) @@ -257,8 +257,8 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) } // Set the page accessing method for the RAM reading pages - fromAddr = (0x1000 + segmentOffset + myReadOffset) & ~System::PAGE_MASK; - toAddr = (0x1000 + segmentOffset + myReadOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; + fromAddr = (ROM_OFFSET + segmentOffset + myReadOffset) & ~System::PAGE_MASK; + toAddr = (ROM_OFFSET + segmentOffset + myReadOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; access.type = System::PageAccessType::READ; for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) @@ -270,7 +270,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) access.romPeekCounter = &myRomAccessCounter[offset]; access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; mySystem->setPageAccess(addr, access); - } + } } return myBankChanged = true; } @@ -278,7 +278,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt16 CartridgeEnhanced::getBank(uInt16 address) const { - return myCurrentSegOffset[(address & 0xFFF) >> myBankShift] >> myBankShift; + return myCurrentSegOffset[(address & ROM_MASK) >> myBankShift] >> myBankShift; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -302,7 +302,7 @@ uInt16 CartridgeEnhanced::ramBankCount() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeEnhanced::isRamBank(uInt16 address) const { - return myRamBankCount ? getBank(address) >= romBankCount() : false; + return myRamBankCount > 0 ? getBank(address) >= romBankCount() : false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -310,7 +310,7 @@ bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) { if(isRamBank(address)) { - myRAM[((myCurrentSegOffset[(address & 0xFFF) >> myBankShift] - mySize) >> 1) + (address & myRamMask)] = value; + myRAM[((myCurrentSegOffset[(address & ROM_MASK) >> myBankShift] - mySize) >> 1) + (address & myRamMask)] = value; } else { @@ -322,7 +322,7 @@ bool CartridgeEnhanced::patch(uInt16 address, uInt8 value) myRAM[address & myRamMask] = value; } else - myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)] = value; + myImage[myCurrentSegOffset[(address & ROM_MASK) >> myBankShift] + (address & myBankMask)] = value; } return myBankChanged = true; @@ -341,7 +341,7 @@ bool CartridgeEnhanced::save(Serializer& out) const try { out.putIntArray(myCurrentSegOffset.get(), myBankSegs); - if(myRamSize) + if(myRamSize > 0) out.putByteArray(myRAM.get(), myRamSize); } catch(...) @@ -359,7 +359,7 @@ bool CartridgeEnhanced::load(Serializer& in) try { in.getIntArray(myCurrentSegOffset.get(), myBankSegs); - if(myRamSize) + if(myRamSize > 0) in.getByteArray(myRAM.get(), myRamSize); } catch(...) diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 3b68101cc..e66aeb9f5 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -218,6 +218,13 @@ class CartridgeEnhanced : public Cartridge // The size of the ROM image size_t mySize{0}; + protected: + // The offset into address space for accessing ROM + static constexpr uInt16 ROM_OFFSET = 0x1000; + + // The mask for ROM address space + static constexpr uInt16 ROM_MASK = 0x0FFF; + private: // Calculated as: log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 12; // default = 4K @@ -231,6 +238,9 @@ class CartridgeEnhanced : public Cartridge // Write port for extra RAM is at low address by default static constexpr bool RAM_HIGH_WP = false; + // The maximum shift (for a 4K bank size) + static constexpr uInt16 MAX_BANK_SHIFT = 12; ; // -> 4K + protected: /** Check hotspots and switch bank if triggered. diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index 1e4251988..6662e8171 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -35,7 +35,7 @@ CartridgeFA2::CartridgeFA2(const ByteBuffer& image, size_t size, myImage = make_unique(mySize); // Copy the ROM image into my buffer - std::copy_n(image.get(), mySize, myImage.get()); + std::copy_n(img_ptr, mySize, myImage.get()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -53,7 +53,7 @@ bool CartridgeFA2::checkSwitchBank(uInt16 address, uInt8) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeFA2::peek(uInt16 address) { - if((address & 0x0FFF) == 0x0FF4) + if((address & ROM_MASK) == 0x0FF4) { // Load/save RAM to/from Harmony cart flash if(mySize == 28_KB && !bankLocked()) @@ -66,7 +66,7 @@ uInt8 CartridgeFA2::peek(uInt16 address) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeFA2::poke(uInt16 address, uInt8 value) { - if((address & 0x0FFF) == 0x0FF4) + if((address & ROM_MASK) == 0x0FF4) { // Load/save RAM to/from Harmony cart flash if(mySize == 28_KB && !bankLocked()) diff --git a/src/emucore/CartFE.cxx b/src/emucore/CartFE.cxx index 3a07730e0..7c3debda3 100644 --- a/src/emucore/CartFE.cxx +++ b/src/emucore/CartFE.cxx @@ -63,7 +63,7 @@ bool CartridgeFE::checkSwitchBank(uInt16 address, uInt8 value) uInt8 CartridgeFE::peek(uInt16 address) { uInt8 value = (address < 0x200) ? mySystem->m6532().peek(address) : - myImage[myCurrentSegOffset[(address & 0xFFF) >> myBankShift] + (address & myBankMask)]; + myImage[myCurrentSegOffset[(address & myBankMask) >> myBankShift] + (address & myBankMask)]; // Check if we hit hotspot checkSwitchBank(address, value); diff --git a/src/emucore/CartSB.cxx b/src/emucore/CartSB.cxx index 56973392c..5caa01be7 100644 --- a/src/emucore/CartSB.cxx +++ b/src/emucore/CartSB.cxx @@ -54,13 +54,12 @@ bool CartridgeSB::checkSwitchBank(uInt16 address, uInt8) // Switch banks if necessary if((address & 0x1800) == 0x0800) { - bank(address & startBank()); + bank(address & (romBankCount() - 1)); return true; } return false; } - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeSB::peek(uInt16 address) { From edab66de50c246fa562c4a4504f8398f099dee8d Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 16 Apr 2020 10:33:37 -0230 Subject: [PATCH 25/69] Fix compile error for UNIX builds. --- src/debugger/gui/module.mk | 2 +- src/emucore/CartEnhanced.hxx | 2 +- src/emucore/module.mk | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/debugger/gui/module.mk b/src/debugger/gui/module.mk index f4f94387f..d1ffc81c0 100644 --- a/src/debugger/gui/module.mk +++ b/src/debugger/gui/module.mk @@ -21,7 +21,7 @@ MODULE_OBJS := \ src/debugger/gui/CartCDFWidget.o \ src/debugger/gui/CartCDFInfoWidget.o \ src/debugger/gui/CartCMWidget.o \ - src/debugger/gui/CartCTYWidget.o \ + src/debugger/gui/CartCTYWidget.o \ src/debugger/gui/CartCVWidget.o \ src/debugger/gui/CartDFSCWidget.o \ src/debugger/gui/CartDFWidget.o \ diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index e66aeb9f5..a45e4796e 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -239,7 +239,7 @@ class CartridgeEnhanced : public Cartridge static constexpr bool RAM_HIGH_WP = false; // The maximum shift (for a 4K bank size) - static constexpr uInt16 MAX_BANK_SHIFT = 12; ; // -> 4K + static constexpr uInt16 MAX_BANK_SHIFT = 12; // -> 4K protected: /** diff --git a/src/emucore/module.mk b/src/emucore/module.mk index 9c81e28ec..dc953b86e 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -20,7 +20,7 @@ MODULE_OBJS := \ src/emucore/CartCDF.o \ src/emucore/CartCM.o \ src/emucore/CartCTY.o \ - src/emucore/CartCV.o \ + src/emucore/CartCV.o \ src/emucore/CartDPC.o \ src/emucore/CartDPCPlus.o \ src/emucore/CartE0.o \ From 0851a445e52e0a8baa388c823f7efb3a913f91bc Mon Sep 17 00:00:00 2001 From: Thomas Jentzsch Date: Thu, 16 Apr 2020 18:54:29 +0200 Subject: [PATCH 26/69] small naming alignment between CartBUS and CartCDF --- src/debugger/gui/CartBUSWidget.cxx | 8 ++-- src/debugger/gui/CartCDFWidget.cxx | 8 ++-- src/emucore/CartBUS.cxx | 72 +++++++++++++++--------------- src/emucore/CartBUS.hxx | 4 +- src/emucore/CartCDF.cxx | 56 +++++++++++------------ src/emucore/CartCDF.hxx | 4 +- 6 files changed, 76 insertions(+), 76 deletions(-) diff --git a/src/debugger/gui/CartBUSWidget.cxx b/src/debugger/gui/CartBUSWidget.cxx index b9c25a77d..8f6a9b22b 100644 --- a/src/debugger/gui/CartBUSWidget.cxx +++ b/src/debugger/gui/CartBUSWidget.cxx @@ -238,7 +238,7 @@ void CartridgeBUSWidget::saveOldState() } for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myBUSRAM[i]); + myOldState.internalram.push_back(myCart.myRAM[i]); myOldState.samplepointer.push_back(myCart.getSample()); } @@ -438,18 +438,18 @@ const ByteArray& CartridgeBUSWidget::internalRamCurrent(int start, int count) { myRamCurrent.clear(); for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myBUSRAM[start + i]); + myRamCurrent.push_back(myCart.myRAM[start + i]); return myRamCurrent; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeBUSWidget::internalRamSetValue(int addr, uInt8 value) { - myCart.myBUSRAM[addr] = value; + myCart.myRAM[addr] = value; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeBUSWidget::internalRamGetValue(int addr) { - return myCart.myBUSRAM[addr]; + return myCart.myRAM[addr]; } diff --git a/src/debugger/gui/CartCDFWidget.cxx b/src/debugger/gui/CartCDFWidget.cxx index 60b68d5c4..8c4fdf2fc 100644 --- a/src/debugger/gui/CartCDFWidget.cxx +++ b/src/debugger/gui/CartCDFWidget.cxx @@ -232,7 +232,7 @@ void CartridgeCDFWidget::saveOldState() } for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myCDFRAM[i]); + myOldState.internalram.push_back(myCart.myRAM[i]); myOldState.samplepointer.push_back(myCart.getSample()); } @@ -437,20 +437,20 @@ const ByteArray& CartridgeCDFWidget::internalRamCurrent(int start, int count) { myRamCurrent.clear(); for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myCDFRAM[start + i]); + myRamCurrent.push_back(myCart.myRAM[start + i]); return myRamCurrent; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeCDFWidget::internalRamSetValue(int addr, uInt8 value) { - myCart.myCDFRAM[addr] = value; + myCart.myRAM[addr] = value; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeCDFWidget::internalRamGetValue(int addr) { - return myCart.myCDFRAM[addr]; + return myCart.myRAM[addr]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index bd6d227c2..e2eb9b74a 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -56,16 +56,16 @@ CartridgeBUS::CartridgeBUS(const ByteBuffer& image, size_t size, myProgramImage = myImage.data() + 4_KB; // Pointer to BUS driver in RAM - myBusDriverImage = myBUSRAM.data(); + myDriverImage = myRAM.data(); // Pointer to the display RAM - myDisplayImage = myBUSRAM.data() + DSRAM; + myDisplayImage = myRAM.data() + DSRAM; // Create Thumbulator ARM emulator bool devSettings = settings.getBool("dev.settings"); myThumbEmulator = make_unique( reinterpret_cast(myImage.data()), - reinterpret_cast(myBUSRAM.data()), + reinterpret_cast(myRAM.data()), static_cast(myImage.size()), devSettings ? settings.getBool("dev.thumb.trapfatal") : false, Thumbulator::ConfigureFor::BUS, this ); @@ -76,7 +76,7 @@ CartridgeBUS::CartridgeBUS(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeBUS::reset() { - initializeRAM(myBUSRAM.data() + 2_KB, 6_KB); + initializeRAM(myRAM.data() + 2_KB, 6_KB); // BUS always starts in bank 6 initializeStartBank(6); @@ -95,7 +95,7 @@ void CartridgeBUS::reset() void CartridgeBUS::setInitialState() { // Copy initial BUS driver to Harmony RAM - std::copy_n(myImage.begin(), 2_KB, myBusDriverImage); + std::copy_n(myImage.begin(), 2_KB, myDriverImage); myMusicWaveformSize.fill(27); @@ -254,7 +254,7 @@ uInt8 CartridgeBUS::peek(uInt16 address) if (sampleaddress < 0x8000) peekvalue = myImage[sampleaddress]; else if (sampleaddress >= 0x40000000 && sampleaddress < 0x40002000) // check for RAM - peekvalue = myBUSRAM[sampleaddress - 0x40000000]; + peekvalue = myRAM[sampleaddress - 0x40000000]; else peekvalue = 0; @@ -552,7 +552,7 @@ bool CartridgeBUS::save(Serializer& out) const out.putShort(myBankOffset); // Harmony RAM - out.putByteArray(myBUSRAM.data(), myBUSRAM.size()); + out.putByteArray(myRAM.data(), myRAM.size()); // Addresses for bus override logic out.putShort(myBusOverdriveAddress); @@ -593,7 +593,7 @@ bool CartridgeBUS::load(Serializer& in) myBankOffset = in.getShort(); // Harmony RAM - in.getByteArray(myBUSRAM.data(), myBUSRAM.size()); + in.getByteArray(myRAM.data(), myRAM.size()); // Addresses for bus override logic myBusOverdriveAddress = in.getShort(); @@ -633,40 +633,40 @@ uInt32 CartridgeBUS::getDatastreamPointer(uInt8 index) const { // index &= 0x0f; - return myBUSRAM[DSxPTR + index*4 + 0] + // low byte - (myBUSRAM[DSxPTR + index*4 + 1] << 8) + - (myBUSRAM[DSxPTR + index*4 + 2] << 16) + - (myBUSRAM[DSxPTR + index*4 + 3] << 24) ; // high byte + return myRAM[DSxPTR + index*4 + 0] + // low byte + (myRAM[DSxPTR + index*4 + 1] << 8) + + (myRAM[DSxPTR + index*4 + 2] << 16) + + (myRAM[DSxPTR + index*4 + 3] << 24) ; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeBUS::setDatastreamPointer(uInt8 index, uInt32 value) { // index &= 0x0f; - myBUSRAM[DSxPTR + index*4 + 0] = value & 0xff; // low byte - myBUSRAM[DSxPTR + index*4 + 1] = (value >> 8) & 0xff; - myBUSRAM[DSxPTR + index*4 + 2] = (value >> 16) & 0xff; - myBUSRAM[DSxPTR + index*4 + 3] = (value >> 24) & 0xff; // high byte + myRAM[DSxPTR + index*4 + 0] = value & 0xff; // low byte + myRAM[DSxPTR + index*4 + 1] = (value >> 8) & 0xff; + myRAM[DSxPTR + index*4 + 2] = (value >> 16) & 0xff; + myRAM[DSxPTR + index*4 + 3] = (value >> 24) & 0xff; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 CartridgeBUS::getDatastreamIncrement(uInt8 index) const { // index &= 0x0f; - return myBUSRAM[DSxINC + index*4 + 0] + // low byte - (myBUSRAM[DSxINC + index*4 + 1] << 8) + - (myBUSRAM[DSxINC + index*4 + 2] << 16) + - (myBUSRAM[DSxINC + index*4 + 3] << 24) ; // high byte + return myRAM[DSxINC + index*4 + 0] + // low byte + (myRAM[DSxINC + index*4 + 1] << 8) + + (myRAM[DSxINC + index*4 + 2] << 16) + + (myRAM[DSxINC + index*4 + 3] << 24) ; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 CartridgeBUS::getAddressMap(uInt8 index) const { // index &= 0x0f; - return myBUSRAM[DSMAPS + index*4 + 0] + // low byte - (myBUSRAM[DSMAPS + index*4 + 1] << 8) + - (myBUSRAM[DSMAPS + index*4 + 2] << 16) + - (myBUSRAM[DSMAPS + index*4 + 3] << 24) ; // high byte + return myRAM[DSMAPS + index*4 + 0] + // low byte + (myRAM[DSMAPS + index*4 + 1] << 8) + + (myRAM[DSMAPS + index*4 + 2] << 16) + + (myRAM[DSMAPS + index*4 + 3] << 24) ; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -686,10 +686,10 @@ uInt32 CartridgeBUS::getWaveform(uInt8 index) const uInt32 result; - result = myBUSRAM[WAVEFORM + index*4 + 0] + // low byte - (myBUSRAM[WAVEFORM + index*4 + 1] << 8) + - (myBUSRAM[WAVEFORM + index*4 + 2] << 16) + - (myBUSRAM[WAVEFORM + index*4 + 3] << 24); // high byte + result = myRAM[WAVEFORM + index*4 + 0] + // low byte + (myRAM[WAVEFORM + index*4 + 1] << 8) + + (myRAM[WAVEFORM + index*4 + 2] << 16) + + (myRAM[WAVEFORM + index*4 + 3] << 24); // high byte result -= 0x40000800; @@ -704,10 +704,10 @@ uInt32 CartridgeBUS::getSample() { uInt32 result; - result = myBUSRAM[WAVEFORM + 0] + // low byte - (myBUSRAM[WAVEFORM + 1] << 8) + - (myBUSRAM[WAVEFORM + 2] << 16) + - (myBUSRAM[WAVEFORM + 3] << 24); // high byte + result = myRAM[WAVEFORM + 0] + // low byte + (myRAM[WAVEFORM + 1] << 8) + + (myRAM[WAVEFORM + 2] << 16) + + (myRAM[WAVEFORM + 3] << 24); // high byte return result; } @@ -722,10 +722,10 @@ uInt32 CartridgeBUS::getWaveformSize(uInt8 index) const void CartridgeBUS::setAddressMap(uInt8 index, uInt32 value) { // index &= 0x0f; - myBUSRAM[DSMAPS + index*4 + 0] = value & 0xff; // low byte - myBUSRAM[DSMAPS + index*4 + 1] = (value >> 8) & 0xff; - myBUSRAM[DSMAPS + index*4 + 2] = (value >> 16) & 0xff; - myBUSRAM[DSMAPS + index*4 + 3] = (value >> 24) & 0xff; // high byte + myRAM[DSMAPS + index*4 + 0] = value & 0xff; // low byte + myRAM[DSMAPS + index*4 + 1] = (value >> 8) & 0xff; + myRAM[DSMAPS + index*4 + 2] = (value >> 16) & 0xff; + myRAM[DSMAPS + index*4 + 3] = (value >> 24) & 0xff; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartBUS.hxx b/src/emucore/CartBUS.hxx index 5567f1196..3ab40f7ec 100644 --- a/src/emucore/CartBUS.hxx +++ b/src/emucore/CartBUS.hxx @@ -220,13 +220,13 @@ class CartridgeBUS : public Cartridge uInt8* myDisplayImage{nullptr}; // Pointer to the 2K BUS driver image in RAM - uInt8* myBusDriverImage{nullptr}; + uInt8* myDriverImage{nullptr}; // The BUS 8k RAM image, used as: // $0000 - 2K BUS driver // $0800 - 4K Display Data // $1800 - 2K C Variable & Stack - std::array myBUSRAM; + std::array myRAM; // Pointer to the Thumb ARM emulator object unique_ptr myThumbEmulator; diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index 2758a9825..6f9a5f4f7 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -72,10 +72,10 @@ CartridgeCDF::CartridgeCDF(const ByteBuffer& image, size_t size, myProgramImage = myImage.data() + 4_KB; // Pointer to CDF driver in RAM - myBusDriverImage = myCDFRAM.data(); + myDriverImage = myRAM.data(); // Pointer to the display RAM - myDisplayImage = myCDFRAM.data() + DSRAM; + myDisplayImage = myRAM.data() + DSRAM; setupVersion(); @@ -83,7 +83,7 @@ CartridgeCDF::CartridgeCDF(const ByteBuffer& image, size_t size, bool devSettings = settings.getBool("dev.settings"); myThumbEmulator = make_unique( reinterpret_cast(myImage.data()), - reinterpret_cast(myCDFRAM.data()), + reinterpret_cast(myRAM.data()), static_cast(myImage.size()), devSettings ? settings.getBool("dev.thumb.trapfatal") : false, thumulatorConfiguration(myCDFSubtype), this); @@ -93,7 +93,7 @@ CartridgeCDF::CartridgeCDF(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeCDF::reset() { - initializeRAM(myCDFRAM.data()+2_KB, myCDFRAM.size()-2_KB); + initializeRAM(myRAM.data()+2_KB, myRAM.size()-2_KB); // CDF always starts in bank 6 initializeStartBank(6); @@ -111,7 +111,7 @@ void CartridgeCDF::reset() void CartridgeCDF::setInitialState() { // Copy initial CDF driver to Harmony RAM - std::copy_n(myImage.begin(), 2_KB, myBusDriverImage); + std::copy_n(myImage.begin(), 2_KB, myDriverImage); myMusicWaveformSize.fill(27); @@ -255,7 +255,7 @@ uInt8 CartridgeCDF::peek(uInt16 address) if (sampleaddress < 0x8000) peekvalue = myImage[sampleaddress]; else if (sampleaddress >= 0x40000000 && sampleaddress < 0x40002000) // check for RAM - peekvalue = myCDFRAM[sampleaddress - 0x40000000]; + peekvalue = myRAM[sampleaddress - 0x40000000]; else peekvalue = 0; @@ -508,7 +508,7 @@ bool CartridgeCDF::save(Serializer& out) const out.putShort(myJMPoperandAddress); // Harmony RAM - out.putByteArray(myCDFRAM.data(), myCDFRAM.size()); + out.putByteArray(myRAM.data(), myRAM.size()); // Audio info out.putIntArray(myMusicCounters.data(), myMusicCounters.size()); @@ -548,7 +548,7 @@ bool CartridgeCDF::load(Serializer& in) myJMPoperandAddress = in.getShort(); // Harmony RAM - in.getByteArray(myCDFRAM.data(), myCDFRAM.size()); + in.getByteArray(myRAM.data(), myRAM.size()); // Audio info in.getIntArray(myMusicCounters.data(), myMusicCounters.size()); @@ -577,10 +577,10 @@ uInt32 CartridgeCDF::getDatastreamPointer(uInt8 index) const { uInt16 address = myDatastreamBase + index * 4; - return myCDFRAM[address + 0] + // low byte - (myCDFRAM[address + 1] << 8) + - (myCDFRAM[address + 2] << 16) + - (myCDFRAM[address + 3] << 24) ; // high byte + return myRAM[address + 0] + // low byte + (myRAM[address + 1] << 8) + + (myRAM[address + 2] << 16) + + (myRAM[address + 3] << 24) ; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -588,10 +588,10 @@ void CartridgeCDF::setDatastreamPointer(uInt8 index, uInt32 value) { uInt16 address = myDatastreamBase + index * 4; - myCDFRAM[address + 0] = value & 0xff; // low byte - myCDFRAM[address + 1] = (value >> 8) & 0xff; - myCDFRAM[address + 2] = (value >> 16) & 0xff; - myCDFRAM[address + 3] = (value >> 24) & 0xff; // high byte + myRAM[address + 0] = value & 0xff; // low byte + myRAM[address + 1] = (value >> 8) & 0xff; + myRAM[address + 2] = (value >> 16) & 0xff; + myRAM[address + 3] = (value >> 24) & 0xff; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -599,10 +599,10 @@ uInt32 CartridgeCDF::getDatastreamIncrement(uInt8 index) const { uInt16 address = myDatastreamIncrementBase + index * 4; - return myCDFRAM[address + 0] + // low byte - (myCDFRAM[address + 1] << 8) + - (myCDFRAM[address + 2] << 16) + - (myCDFRAM[address + 3] << 24) ; // high byte + return myRAM[address + 0] + // low byte + (myRAM[address + 1] << 8) + + (myRAM[address + 2] << 16) + + (myRAM[address + 3] << 24) ; // high byte } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -610,10 +610,10 @@ uInt32 CartridgeCDF::getWaveform(uInt8 index) const { uInt16 address = myWaveformBase + index * 4; - uInt32 result = myCDFRAM[address + 0] + // low byte - (myCDFRAM[address + 1] << 8) + - (myCDFRAM[address + 2] << 16) + - (myCDFRAM[address + 3] << 24); // high byte + uInt32 result = myRAM[address + 0] + // low byte + (myRAM[address + 1] << 8) + + (myRAM[address + 2] << 16) + + (myRAM[address + 3] << 24); // high byte result -= (0x40000000 + DSRAM); @@ -628,10 +628,10 @@ uInt32 CartridgeCDF::getSample() { uInt16 address = myWaveformBase; - uInt32 result = myCDFRAM[address + 0] + // low byte - (myCDFRAM[address + 1] << 8) + - (myCDFRAM[address + 2] << 16) + - (myCDFRAM[address + 3] << 24); // high byte + uInt32 result = myRAM[address + 0] + // low byte + (myRAM[address + 1] << 8) + + (myRAM[address + 2] << 16) + + (myRAM[address + 3] << 24); // high byte return result; } diff --git a/src/emucore/CartCDF.hxx b/src/emucore/CartCDF.hxx index 7c5295f7a..14b1eda26 100644 --- a/src/emucore/CartCDF.hxx +++ b/src/emucore/CartCDF.hxx @@ -220,13 +220,13 @@ class CartridgeCDF : public Cartridge uInt8* myDisplayImage{nullptr}; // Pointer to the 2K CDF driver image in RAM - uInt8* myBusDriverImage{nullptr}; + uInt8* myDriverImage{nullptr}; // The CDF 8k RAM image, used as: // $0000 - 2K CDF driver // $0800 - 4K Display Data // $1800 - 2K C Variable & Stack - std::array myCDFRAM; + std::array myRAM; // Pointer to the Thumb ARM emulator object unique_ptr myThumbEmulator; From 0bf12045d893eb7c3873fd50597c59d090e2a61c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 17 Apr 2020 13:43:49 +0200 Subject: [PATCH 27/69] refactored CartWD fixed CartEnhanced for multi-segment ROMs with extra RAM improved CartEnhanced by enabling directPoke for extra RAM --- src/emucore/Cart3EPlus.cxx | 31 +---- src/emucore/CartEnhanced.cxx | 11 +- src/emucore/CartEnhanced.hxx | 2 +- src/emucore/CartWD.cxx | 221 ++++++----------------------------- src/emucore/CartWD.hxx | 86 +++----------- 5 files changed, 60 insertions(+), 291 deletions(-) diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 274e1f9db..5803f2136 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -29,44 +29,17 @@ Cartridge3EPlus::Cartridge3EPlus(const ByteBuffer& image, size_t size, myRamSize = RAM_SIZE; myRamBankCount = RAM_BANKS; myRamWpHigh = RAM_HIGH_WP; - - //// Allocate array for the ROM image - //myImage = make_unique(mySize); - - //// Copy the ROM image into my buffer - //std::copy_n(image.get(), mySize, myImage.get()); - //createRomAccessArrays(mySize + myRAM.size()); } -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//void Cartridge3EPlus::reset() -//{ -// initializeRAM(myRAM.data(), myRAM.size()); -// -// // Remember startup bank (0 per spec, rather than last per 3E scheme). -// // Set this to go to 3rd 1K Bank. -// initializeStartBank(0); -// -// // Initialise bank values for all ROM/RAM access -// // This is used to reverse-lookup from address to bank location -// for(auto& b: bankInUse) -// b = BANK_UNDEFINED; // bank is undefined and inaccessible! -// -// initializeBankState(); -// -// // We'll map the startup banks 0 and 3 from the image into the third 1K bank upon reset -// bankROM((0 << BANK_BITS) | 0); -// bankROM((3 << BANK_BITS) | 0); -//} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlus::reset() { CartridgeEnhanced::reset(); + // 1st segment in mapped to start bank in CartridgeEnhanced bank(mySystem->randGenerator().next() % romBankCount(), 1); bank(mySystem->randGenerator().next() % romBankCount(), 2); - bank(startBank(), 3); // Stella reads the PC vector always from here (TODO?) + bank(startBank(), 3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 5816181f2..d75c77ac8 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -68,6 +68,8 @@ void CartridgeEnhanced::install(System& system) for(uInt16 addr = ROM_OFFSET + myWriteOffset; addr < ROM_OFFSET + myWriteOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; + + access.directPokeBase = &myRAM[offset]; access.romAccessBase = &myRomAccessBase[myWriteOffset + offset]; access.romPeekCounter = &myRomAccessCounter[myWriteOffset + offset]; access.romPokeCounter = &myRomAccessCounter[myWriteOffset + offset + myAccessSize]; @@ -76,6 +78,7 @@ void CartridgeEnhanced::install(System& system) // Set the page accessing method for the RAM reading pages access.type = System::PageAccessType::READ; + access.directPokeBase = nullptr; for(uInt16 addr = ROM_OFFSET + myReadOffset; addr < ROM_OFFSET + myReadOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; @@ -125,7 +128,7 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) } else { - address &= myBankMask; + address &= ROM_MASK; // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) if(address < myReadOffset + myRamSize && address >= myReadOffset) @@ -133,7 +136,8 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) // Reading from the write port triggers an unwanted write return peekRAM(myRAM[address], peekAddress); else - return myImage[myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] + address]; + return myImage[myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] + + (peekAddress & myBankMask)]; } } @@ -206,7 +210,8 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt32 bankOffset = myCurrentSegOffset[segment] = romBank << myBankShift; uInt16 hotspot = this->hotspot(); uInt16 hotSpotAddr; - uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myRomOffset) & ~System::PAGE_MASK; + // Skip extra RAM; if existing it is only mapped into first segment + uInt16 fromAddr = (ROM_OFFSET + segmentOffset + (segment == 0 ? myRomOffset : 0)) & ~System::PAGE_MASK; // for ROMs < 4_KB, the whole address space will be mapped. uInt16 toAddr = (ROM_OFFSET + segmentOffset + (mySize < 4_KB ? 4_KB : myBankSize)) & ~System::PAGE_MASK; diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index a45e4796e..10dbfb0d6 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -65,7 +65,7 @@ class CartridgeEnhanced : public Cartridge @return true, if bank has changed */ - bool bank(uInt16 bank, uInt16 segment); + virtual bool bank(uInt16 bank, uInt16 segment); /** Install pages for the specified bank in the system. diff --git a/src/emucore/CartWD.cxx b/src/emucore/CartWD.cxx index 9a14be24a..ff72a2b38 100644 --- a/src/emucore/CartWD.cxx +++ b/src/emucore/CartWD.cxx @@ -23,70 +23,46 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeWD::CartridgeWD(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(std::min(8_KB + 3, size)) + : CartridgeEnhanced(image, size, md5, settings) { // Copy the ROM image into my buffer if (mySize == 8_KB + 3) { - // swap slices 2 & 3 - std::copy_n(image.get(), 1_KB * 2, myImage.begin()); - std::copy_n(image.get() + 1_KB * 3, 1_KB * 1, myImage.begin() + 1_KB * 2); - std::copy_n(image.get() + 1_KB * 2, 1_KB * 1, myImage.begin() + 1_KB * 3); - std::copy_n(image.get() + 1_KB * 4, 1_KB * 4, myImage.begin() + 1_KB * 4); + // swap slices 2 & 3 of bad dump and correct size + std::copy_n(image.get() + 1_KB * 3, 1_KB * 1, myImage.get() + 1_KB * 2); + std::copy_n(image.get() + 1_KB * 2, 1_KB * 1, myImage.get() + 1_KB * 3); + mySize = 8_KB; } - else - std::copy_n(image.get(), mySize, myImage.begin()); - createRomAccessArrays(8_KB); + myDirectPeek = false; + + myBankShift = BANK_SHIFT; + myRamSize = RAM_SIZE; + myRamWpHigh = RAM_HIGH_WP; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeWD::reset() { - initializeRAM(myRAM.data(), myRAM.size()); - initializeStartBank(0); + CartridgeEnhanced::reset(); myCyclesAtBankswitchInit = 0; myPendingBank = 0xF0; // one more than the allowable bank # - - // Setup segments to some default slices - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeWD::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); - // Set the page accessing method for the RAM reading pages - System::PageAccess read(this, System::PageAccessType::READ); - for(uInt16 addr = 0x1000; addr < 0x1040; addr += System::PAGE_SIZE) - { - read.directPeekBase = &myRAM[addr & 0x003F]; - read.romAccessBase = &myRomAccessBase[addr & 0x003F]; - read.romPeekCounter = &myRomAccessCounter[addr & 0x003F]; - read.romPokeCounter = &myRomAccessCounter[(addr & 0x003F) + 8_KB]; - mySystem->setPageAccess(addr, read); - } + System::PageAccess access(this, System::PageAccessType::READ); - // Set the page accessing method for the RAM writing pages - // Map access to this class, since we need to inspect all accesses to - // check if RWP happens - System::PageAccess write(this, System::PageAccessType::WRITE); - for(uInt16 addr = 0x1040; addr < 0x1080; addr += System::PAGE_SIZE) - { - write.romAccessBase = &myRomAccessBase[addr & 0x003F]; - write.romPeekCounter = &myRomAccessCounter[addr & 0x003F]; - write.romPokeCounter = &myRomAccessCounter[(addr & 0x003F) + 8_KB]; - mySystem->setPageAccess(addr, write); - } + // The hotspots are in TIA address space, so we claim it here + for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) + mySystem->setPageAccess(addr, access); // Mirror all access in TIA; by doing so we're taking responsibility // for that address space in peek and poke below. - mySystem->tia().installDelegate(system, *this); - - // Setup segments to some default slices - bank(startBank()); + //mySystem->tia().installDelegate(system, *this); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -113,134 +89,31 @@ uInt8 CartridgeWD::peek(uInt16 address) return mySystem->tia().peek(address); } else - { - uInt16 peekAddress = address; - address &= 0x0FFF; - - if(address < 0x0040) // RAM read port - return myRAM[address]; - else if(address < 0x0080) // RAM write port - // Reading from the write port @ $1040 - $107F triggers an unwanted write - return peekRAM(myRAM[address & 0x003F], peekAddress); - else if(address < 0x0400) - return myImage[myOffset[0] + (address & 0x03FF)]; - else if(address < 0x0800) - return myImage[myOffset[1] + (address & 0x03FF)]; - else if(address < 0x0C00) - return myImage[myOffset[2] + (address & 0x03FF)]; - else - return mySegment3[address & 0x03FF]; - } + return CartridgeEnhanced::peek(address); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeWD::poke(uInt16 address, uInt8 value) { - if(!(address & 0x1000)) // TIA addresses + if(address < 0x40) return mySystem->tia().poke(address, value); - else - { - if(address & 0x040) - { - pokeRAM(myRAM[address & 0x003F], address, value); - return true; - } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - pokeRAM(dummy, address, value); - myRamWriteAccess = address; - return false; - } - } + return CartridgeEnhanced::poke(address, value); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeWD::bank(uInt16 bank) +bool CartridgeWD::bank(uInt16 bank, uInt16) { - if(bankLocked() || bank > 15) return false; + if(bankLocked()) return false; - myCurrentBank = bank; + myCurrentBank = bank % romBankCount(); - segmentZero(ourBankOrg[bank & 0x7].zero); - segmentOne(ourBankOrg[bank & 0x7].one); - segmentTwo(ourBankOrg[bank & 0x7].two); - segmentThree(ourBankOrg[bank & 0x7].three); + CartridgeEnhanced::bank(ourBankOrg[myCurrentBank].zero, 0); + CartridgeEnhanced::bank(ourBankOrg[myCurrentBank].one, 1); + CartridgeEnhanced::bank(ourBankOrg[myCurrentBank].two, 2); + CartridgeEnhanced::bank(ourBankOrg[myCurrentBank].three, 3); - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWD::segmentZero(uInt8 slice) -{ - uInt16 offset = slice << 10; - System::PageAccess access(this, System::PageAccessType::READ); - - // Skip first 128 bytes; it is always RAM - for(uInt16 addr = 0x1080; addr < 0x1400; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + 8_KB]; - mySystem->setPageAccess(addr, access); - } - myOffset[0] = offset; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWD::segmentOne(uInt8 slice) -{ - uInt16 offset = slice << 10; - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1400; addr < 0x1800; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + 8_KB]; - mySystem->setPageAccess(addr, access); - } - myOffset[1] = offset; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWD::segmentTwo(uInt8 slice) -{ - uInt16 offset = slice << 10; - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1800; addr < 0x1C00; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + 8_KB]; - mySystem->setPageAccess(addr, access); - } - myOffset[2] = offset; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWD::segmentThree(uInt8 slice) -{ - uInt16 offset = slice << 10; - - // Make a copy of the address space pointed to by the slice - // Then overwrite one byte with 0 - std::copy_n(myImage.begin()+offset, mySegment3.size(), mySegment3.begin()); - mySegment3[0x3FC] = 0; - - System::PageAccess access(this, System::PageAccessType::READ); - - for(uInt16 addr = 0x1C00; addr < 0x2000; addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[offset + (addr & 0x03FF)]; - access.romPeekCounter = &myRomAccessCounter[offset + (addr & 0x03FF)]; - access.romPokeCounter = &myRomAccessCounter[offset + (addr & 0x03FF) + 8_KB]; - mySystem->setPageAccess(addr, access); - } - myOffset[3] = offset; + return true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -249,41 +122,13 @@ uInt16 CartridgeWD::getBank(uInt16) const return myCurrentBank; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeWD::romBankCount() const -{ - return 16; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeWD::patch(uInt16 address, uInt8 value) -{ - address &= 0x0FFF; - - uInt16 idx = address >> 10; - myImage[myOffset[idx] + (address & 0x03FF)] = value; - - // The upper segment is mirrored, so we need to patch its buffer too - if(idx == 3) - mySegment3[(address & 0x03FF)] = value; - - return true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeWD::getImage(size_t& size) const -{ - size = mySize; - return myImage.data(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeWD::save(Serializer& out) const { + CartridgeEnhanced::save(out); try { out.putShort(myCurrentBank); - out.putByteArray(myRAM.data(), myRAM.size()); out.putLong(myCyclesAtBankswitchInit); out.putShort(myPendingBank); } @@ -299,10 +144,10 @@ bool CartridgeWD::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeWD::load(Serializer& in) { + CartridgeEnhanced::load(in); try { myCurrentBank = in.getShort(); - in.getByteArray(myRAM.data(), myRAM.size()); myCyclesAtBankswitchInit = in.getLong(); myPendingBank = in.getShort(); @@ -319,9 +164,9 @@ bool CartridgeWD::load(Serializer& in) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const std::array CartridgeWD::ourBankOrg = {{ - // 0 1 2 3 4 5 6 7 - { 0, 0, 1, 3 }, // Bank 0, 8 2 1 - 1 - - - - - { 0, 1, 2, 3 }, // Bank 1, 9 1 1 1 1 - - - - + // 0 1 2 3 4 5 6 7 + { 0, 0, 1, 3 }, // Bank 0, 8 2 1 - 1 - - - - + { 0, 1, 2, 3 }, // Bank 1, 9 1 1 1 1 - - - - { 4, 5, 6, 7 }, // Bank 2, 10 - - - - 1 1 1 1 { 7, 4, 2, 3 }, // Bank 3, 11 - - 1 1 1 - - 1 { 0, 0, 6, 7 }, // Bank 4, 12 2 - - - - - 1 1 diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 88c59e469..9623cfa96 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "Cart.hxx" +#include "CartEnhanced.hxx" #ifdef DEBUGGER_SUPPORT #include "CartWDWidget.hxx" #endif @@ -45,15 +45,15 @@ class System; $0037, $003F: 6,0,5,1 - In the uppermost (third) segment, the byte at $3FC is overwritten by 0. + (Removed: In the uppermost (third) segment, the byte at $3FC is overwritten by 0.) The 64 bytes of RAM are accessible at $1000 - $103F (read port) and $1040 - $107F (write port). Because the RAM takes 128 bytes of address space, the range $1000 - $107F of segment 0 ROM will never be available. - @author Stephen Anthony + @author Stephen Anthony, Thomas Jentzsch */ -class CartridgeWD : public Cartridge +class CartridgeWD : public CartridgeEnhanced { friend class CartridgeWDWidget; @@ -89,7 +89,7 @@ class CartridgeWD : public Cartridge @param bank The bank that should be installed in the system */ - bool bank(uInt16 bank) override; + bool bank(uInt16 bank, uInt16 = 0) override; /** Get the current bank. @@ -98,28 +98,6 @@ class CartridgeWD : public Cartridge */ uInt16 getBank(uInt16 address = 0) const override; - /** - Query the number of banks supported by the cartridge. - */ - uInt16 romBankCount() const override; - - /** - Patch the cartridge ROM. - - @param address The ROM address to patch - @param value The value to place into the address - @return Success or failure of the patch operation - */ - bool patch(uInt16 address, uInt8 value) override; - - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - /** Save the current state of this cart to the given Serializer. @@ -173,51 +151,9 @@ class CartridgeWD : public Cartridge bool poke(uInt16 address, uInt8 value) override; private: - /** - Install the specified slice for segment zero. - - @param slice The slice to map into the segment - */ - void segmentZero(uInt8 slice); - - /** - Install the specified slice for segment one. - - @param slice The slice to map into the segment - */ - void segmentOne(uInt8 slice); - - /** - Install the specified slice for segment two. - - @param slice The slice to map into the segment - */ - void segmentTwo(uInt8 slice); - - /** - Install the specified slice for segment three. - Note that this method also takes care of setting one byte to 0. - - @param slice The slice to map into the segment - */ - void segmentThree(uInt8 slice); + bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; }; private: - // The 8K ROM image of the cartridge - std::array myImage; - - // Indicates the actual size of the ROM image (either 8K or 8K + 3) - size_t mySize{0}; - - // The 64 bytes RAM of the cartridge - std::array myRAM; - - // The 1K ROM mirror of segment 3 (sometimes contains extra 3 bytes) - std::array mySegment3; - - // Indicates the offset for each of the four segments - std::array myOffset; - // Indicates the cycle at which a bankswitch was initiated uInt64 myCyclesAtBankswitchInit{0}; @@ -233,6 +169,16 @@ class CartridgeWD : public Cartridge }; static const std::array ourBankOrg; + private: + // log(ROM bank segment size) / log(2) + static constexpr uInt16 BANK_SHIFT = 10; // = 1K = 0x0400 + + // RAM size + static constexpr uInt16 RAM_SIZE = 0x40; + + // Write port for extra RAM is at low address by default + static constexpr bool RAM_HIGH_WP = true; + private: // Following constructors and assignment operators not supported CartridgeWD() = delete; From 6836120a9a0d76e14733d25c73dfde4870e2efe4 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 17 Apr 2020 11:42:11 -0230 Subject: [PATCH 28/69] Fix clang compile warning. --- src/emucore/CartWD.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 9623cfa96..20596868e 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -151,7 +151,7 @@ class CartridgeWD : public CartridgeEnhanced bool poke(uInt16 address, uInt8 value) override; private: - bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; }; + bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; } private: // Indicates the cycle at which a bankswitch was initiated From b57c2d05c2f5632b16bba64f2bbf8dcf664a1145 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 17 Apr 2020 20:47:29 +0200 Subject: [PATCH 29/69] enable directPokeBase for RAM banks in CartridgeEnhanced --- src/emucore/CartEnhanced.cxx | 46 +++++++++++++++--------------------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index d75c77ac8..11eb0ca75 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -82,6 +82,7 @@ void CartridgeEnhanced::install(System& system) for(uInt16 addr = ROM_OFFSET + myReadOffset; addr < ROM_OFFSET + myReadOffset + myRamSize; addr += System::PAGE_SIZE) { uInt16 offset = addr & myRamMask; + access.directPeekBase = &myRAM[offset]; access.romAccessBase = &myRomAccessBase[myReadOffset + offset]; access.romPeekCounter = &myRomAccessCounter[myReadOffset + offset]; @@ -126,19 +127,18 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) return peekRAM(myRAM[((myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] - mySize) >> 1) + address], peekAddress); } - else - { - address &= ROM_MASK; + address &= ROM_MASK; - // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) - if(address < myReadOffset + myRamSize && address >= myReadOffset) - // This is a read access to a write port! - // Reading from the write port triggers an unwanted write - return peekRAM(myRAM[address], peekAddress); - else - return myImage[myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] - + (peekAddress & myBankMask)]; + // Write port is e.g. at 0xF000 - 0xF07F (128 bytes) + if(address < myReadOffset + myRamSize && address >= myReadOffset) + { + // This is a read access to a write port! + // Reading from the write port triggers an unwanted write + return peekRAM(myRAM[address], peekAddress); } + + return myImage[myCurrentSegOffset[(peekAddress & ROM_MASK) >> myBankShift] + + (peekAddress & myBankMask)]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -153,6 +153,7 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) if(myRamSize > 0) { + // Code should never get here (System::PageAccess::directPoke() handles this) uInt16 pokeAddress = address; if(isRamBank(address)) @@ -165,14 +166,6 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) pokeAddress, value); return true; } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - } } else { @@ -182,15 +175,12 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) pokeRAM(myRAM[address & myRamMask], pokeAddress, value); return true; } - else - { - // Writing to the read port should be ignored, but trigger a break if option enabled - uInt8 dummy; - - pokeRAM(dummy, pokeAddress, value); - myRamWriteAccess = pokeAddress; - } } + // Writing to the read port should be ignored, but trigger a break if option enabled + uInt8 dummy; + + pokeRAM(dummy, pokeAddress, value); + myRamWriteAccess = pokeAddress; } return false; } @@ -255,6 +245,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) { uInt32 offset = bankOffset + (addr & myRamMask); + access.directPokeBase = &myRAM[offset - mySize]; access.romAccessBase = &myRomAccessBase[offset]; access.romPeekCounter = &myRomAccessCounter[offset]; access.romPokeCounter = &myRomAccessCounter[offset + myAccessSize]; @@ -265,6 +256,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) fromAddr = (ROM_OFFSET + segmentOffset + myReadOffset) & ~System::PAGE_MASK; toAddr = (ROM_OFFSET + segmentOffset + myReadOffset + (myBankSize >> 1)) & ~System::PAGE_MASK; access.type = System::PageAccessType::READ; + access.directPokeBase = nullptr; for(uInt16 addr = fromAddr; addr < toAddr; addr += System::PAGE_SIZE) { From 7baa759ec9a0ca9a33c75c27335e2d8a13eecb0a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 18 Apr 2020 17:51:21 +0200 Subject: [PATCH 30/69] fix display of changed PopUpWidget in debugger allow using IDs with PopUpWidget's ContextMenu --- src/gui/ContextMenu.cxx | 10 +++++----- src/gui/ContextMenu.hxx | 4 ++++ src/gui/PopUpWidget.cxx | 10 +++++++++- src/gui/PopUpWidget.hxx | 2 ++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/gui/ContextMenu.cxx b/src/gui/ContextMenu.cxx index 11e09e475..cf142255f 100644 --- a/src/gui/ContextMenu.cxx +++ b/src/gui/ContextMenu.cxx @@ -181,7 +181,7 @@ bool ContextMenu::sendSelectionUp() return false; _selectedItem--; - sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, -1); + sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, _id); return true; } @@ -192,7 +192,7 @@ bool ContextMenu::sendSelectionDown() return false; _selectedItem++; - sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, -1); + sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, _id); return true; } @@ -203,7 +203,7 @@ bool ContextMenu::sendSelectionFirst() return false; _selectedItem = 0; - sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, -1); + sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, _id); return true; } @@ -214,7 +214,7 @@ bool ContextMenu::sendSelectionLast() return false; _selectedItem = int(_entries.size()) - 1; - sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, -1); + sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, _id); return true; } @@ -375,7 +375,7 @@ void ContextMenu::sendSelection() // Send any command associated with the selection _selectedItem = item; - sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, -1); + sendCommand(_cmd ? _cmd : ContextMenu::kItemSelectedCmd, _selectedItem, _id); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/ContextMenu.hxx b/src/gui/ContextMenu.hxx index 28d485f1a..40858f8b9 100644 --- a/src/gui/ContextMenu.hxx +++ b/src/gui/ContextMenu.hxx @@ -45,6 +45,9 @@ class ContextMenu : public Dialog, public CommandSender const VariantList& items, int cmd = 0, int width = 0); virtual ~ContextMenu() = default; + /** Set the parent widget's ID */ + void setID(uInt32 id) { _id = id; } + /** Add the given items to the widget. */ void addItems(const VariantList& items); @@ -121,6 +124,7 @@ class ContextMenu : public Dialog, public CommandSender ColorId _scrollUpColor{kColor}, _scrollDnColor{kColor}; int _cmd{0}; + int _id{-1}; uInt32 _xorig{0}, _yorig{0}; uInt32 _maxWidth{0}; diff --git a/src/gui/PopUpWidget.cxx b/src/gui/PopUpWidget.cxx index 6b530f6d1..9cc233060 100644 --- a/src/gui/PopUpWidget.cxx +++ b/src/gui/PopUpWidget.cxx @@ -50,6 +50,14 @@ PopUpWidget::PopUpWidget(GuiObject* boss, const GUI::Font& font, myMenu = make_unique(this, font, list, cmd, w); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void PopUpWidget::setID(uInt32 id) +{ + myMenu->setID(id); + + Widget::setID(id); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PopUpWidget::addItems(const VariantList& items) { @@ -219,5 +227,5 @@ void PopUpWidget::drawWidget(bool hilite) TextAlign align = (_font.getStringWidth(name) > w-6) ? TextAlign::Right : TextAlign::Left; s.drawString(_font, name, x+2, _y+myTextY, w-6, - !(isEnabled() && onTop) ? kColor : kTextColor, align); + !(isEnabled() && onTop) ? kColor : _changed ? kDbgChangedTextColor : kTextColor, align); } diff --git a/src/gui/PopUpWidget.hxx b/src/gui/PopUpWidget.hxx index f79e575f8..955263f5f 100644 --- a/src/gui/PopUpWidget.hxx +++ b/src/gui/PopUpWidget.hxx @@ -41,6 +41,8 @@ class PopUpWidget : public Widget, public CommandSender const string& label, int labelWidth = 0, int cmd = 0); virtual ~PopUpWidget() = default; + void setID(uInt32 id); + int getTop() const override { return _y + 1; } int getBottom() const override { return _y + 1 + getHeight(); } From c8d7937a464caee0e96395bea091ff30af3fa0bd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 18 Apr 2020 19:22:08 +0200 Subject: [PATCH 31/69] fixed description background color in CartRamWidget --- src/debugger/gui/CartRamWidget.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/debugger/gui/CartRamWidget.cxx b/src/debugger/gui/CartRamWidget.cxx index 1dfcfdaac..cfed3d3e5 100644 --- a/src/debugger/gui/CartRamWidget.cxx +++ b/src/debugger/gui/CartRamWidget.cxx @@ -65,13 +65,14 @@ CartRamWidget::CartRamWidget( StringParser bs(desc, (fwidth - kScrollBarWidth) / myFontWidth); const StringList& sl = bs.stringList(); uInt32 lines = uInt32(sl.size()); - if(lines < 3) lines = 3; + if(lines < 2) lines = 2; if(lines > maxlines) lines = maxlines; new StaticTextWidget(_boss, _font, xpos, ypos + 1, "Description "); myDesc = new StringListWidget(boss, nfont, xpos+lwidth, ypos - 1, fwidth, lines * myLineHeight, false); myDesc->setEditable(false); + myDesc->setEnabled(false); myDesc->setList(sl); addFocusWidget(myDesc); From 70cdfe6c13987e6bd831341f9a731194cc1cb7e2 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Apr 2020 10:23:27 +0200 Subject: [PATCH 32/69] refactored multiple CartXXWidget classes --- src/debugger/gui/Cart0840Widget.cxx | 75 +----- src/debugger/gui/Cart0840Widget.hxx | 15 +- src/debugger/gui/Cart2KWidget.cxx | 26 +- src/debugger/gui/Cart2KWidget.hxx | 11 +- src/debugger/gui/Cart3EWidget.cxx | 2 +- src/debugger/gui/Cart4KSCWidget.cxx | 91 +------ src/debugger/gui/Cart4KSCWidget.hxx | 29 +- src/debugger/gui/Cart4KWidget.cxx | 32 ++- src/debugger/gui/Cart4KWidget.hxx | 11 +- src/debugger/gui/CartCVWidget.cxx | 169 ++++++------ src/debugger/gui/CartCVWidget.hxx | 47 ++-- src/debugger/gui/CartDebugWidget.cxx | 2 +- src/debugger/gui/CartE0Widget.cxx | 145 +++------- src/debugger/gui/CartE0Widget.hxx | 24 +- src/debugger/gui/CartEnhancedWidget.cxx | 344 ++++++++++++++++++++++++ src/debugger/gui/CartEnhancedWidget.hxx | 108 ++++++++ src/debugger/gui/CartF0Widget.cxx | 82 +----- src/debugger/gui/CartF0Widget.hxx | 15 +- src/debugger/gui/CartF4SCWidget.cxx | 150 +---------- src/debugger/gui/CartF4SCWidget.hxx | 34 +-- src/debugger/gui/CartF4Widget.cxx | 81 +----- src/debugger/gui/CartF4Widget.hxx | 15 +- src/debugger/gui/CartF6SCWidget.cxx | 144 +--------- src/debugger/gui/CartF6SCWidget.hxx | 32 +-- src/debugger/gui/CartF6Widget.cxx | 75 +----- src/debugger/gui/CartF6Widget.hxx | 15 +- src/debugger/gui/CartF8SCWidget.cxx | 142 +--------- src/debugger/gui/CartF8SCWidget.hxx | 33 +-- src/debugger/gui/CartF8Widget.cxx | 73 +---- src/debugger/gui/CartF8Widget.hxx | 14 +- src/debugger/gui/CartUAWidget.cxx | 82 ++---- src/debugger/gui/CartUAWidget.hxx | 18 +- src/debugger/gui/module.mk | 1 + src/emucore/Cart4K.cxx | 1 - src/emucore/CartEnhanced.cxx | 2 +- src/emucore/CartEnhanced.hxx | 33 ++- src/emucore/CartUA.hxx | 2 + src/windows/Stella.vcxproj | 2 + src/windows/Stella.vcxproj.filters | 6 + 39 files changed, 844 insertions(+), 1339 deletions(-) create mode 100644 src/debugger/gui/CartEnhancedWidget.cxx create mode 100644 src/debugger/gui/CartEnhancedWidget.hxx diff --git a/src/debugger/gui/Cart0840Widget.cxx b/src/debugger/gui/Cart0840Widget.cxx index 6582701bc..c49c86d09 100644 --- a/src/debugger/gui/Cart0840Widget.cxx +++ b/src/debugger/gui/Cart0840Widget.cxx @@ -16,80 +16,25 @@ //============================================================================ #include "Cart0840.hxx" -#include "PopUpWidget.hxx" #include "Cart0840Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge0840Widget::Cartridge0840Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge0840& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 2 * 4096; + myHotspotDelta = 0x40; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge0840Widget::description() +{ ostringstream info; - info << "0840 ECONObanking, two 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < 2; - ++i, offset += 0x1000, spot += 0x40) - { - uInt16 start = uInt16((cart.myImage[offset+1] << 8) | cart.myImage[offset]); - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $" << spot << ")\n"; - } + info << "0840 ECONObanking, two 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Fred X. Quimby", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($800)"); - VarList::push_back(items, "1 ($840)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($800)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge0840Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge0840Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge0840Widget::bankState() -{ - ostringstream& buf = buffer(); - - static const std::array spot = { "$800", "$840" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/Cart0840Widget.hxx b/src/debugger/gui/Cart0840Widget.hxx index 239f28bf8..89e8706c6 100644 --- a/src/debugger/gui/Cart0840Widget.hxx +++ b/src/debugger/gui/Cart0840Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGE0840_WIDGET_HXX class Cartridge0840; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge0840Widget : public CartDebugWidget +class Cartridge0840Widget : public CartEnhancedWidget { public: Cartridge0840Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class Cartridge0840Widget : public CartDebugWidget virtual ~Cartridge0840Widget() = default; private: - Cartridge0840& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Fred X. Quimby"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported Cartridge0840Widget() = delete; Cartridge0840Widget(const Cartridge0840Widget&) = delete; diff --git a/src/debugger/gui/Cart2KWidget.cxx b/src/debugger/gui/Cart2KWidget.cxx index 745c52316..c97bc440f 100644 --- a/src/debugger/gui/Cart2KWidget.cxx +++ b/src/debugger/gui/Cart2KWidget.cxx @@ -22,18 +22,18 @@ Cartridge2KWidget::Cartridge2KWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge2K& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - // Eventually, we should query this from the debugger/disassembler - size_t size; - - cart.getImage(size); - - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - start -= start % size; - - ostringstream info; - info << "Standard 2K cartridge, non-bankswitched\n" - << "Accessible @ $" << Common::Base::HEX4 << start << " - " << "$" << (start + size - 1); - addBaseInformation(size, "Atari", info.str()); + initialize(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge2KWidget::description() +{ + ostringstream info; + + info << "Standard 2K cartridge, non-bankswitched\n"; + info << CartEnhancedWidget::description(); + + return info.str(); } diff --git a/src/debugger/gui/Cart2KWidget.hxx b/src/debugger/gui/Cart2KWidget.hxx index 0580078f7..e6e0fe9d2 100644 --- a/src/debugger/gui/Cart2KWidget.hxx +++ b/src/debugger/gui/Cart2KWidget.hxx @@ -20,9 +20,9 @@ class Cartridge2K; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge2KWidget : public CartDebugWidget +class Cartridge2KWidget : public CartEnhancedWidget { public: Cartridge2KWidget(GuiObject* boss, const GUI::Font& lfont, @@ -32,10 +32,11 @@ class Cartridge2KWidget : public CartDebugWidget virtual ~Cartridge2KWidget() = default; private: - // No implementation for non-bankswitched ROMs - void loadConfig() override { } - void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } + string manufacturer() override { return "Atari"; } + string description() override; + + private: // Following constructors and assignment operators not supported Cartridge2KWidget() = delete; Cartridge2KWidget(const Cartridge2KWidget&) = delete; diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index e91b268ab..287bdd112 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -161,7 +161,7 @@ string Cartridge3EWidget::bankState() if(bank < myCart.romBankCount()) buf << "ROM bank #" << std::dec << bank % myNumRomBanks << ", RAM inactive"; else - buf << "ROM inactive, RAM bank #" << std::dec << bank % myNumRomBanks; + buf << "ROM inactive, RAM bank #" << std::dec << bank % myNumRamBanks; return buf.str(); } diff --git a/src/debugger/gui/Cart4KSCWidget.cxx b/src/debugger/gui/Cart4KSCWidget.cxx index 8729c077f..105136dd5 100644 --- a/src/debugger/gui/Cart4KSCWidget.cxx +++ b/src/debugger/gui/Cart4KSCWidget.cxx @@ -15,8 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "Cart4KSC.hxx" #include "Cart4KSCWidget.hxx" @@ -24,87 +22,18 @@ Cartridge4KSCWidget::Cartridge4KSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge4KSC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[0xFFD] << 8) | cart.myImage[0xFFC]; - start -= start % 0x1000; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge4KSCWidget::description() +{ ostringstream info; - info << "4KSC cartridge, non-bankswitched\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Accessible @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF); - addBaseInformation(4096, "homebrew intermediate format", info.str()); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4KSCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge4KSCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge4KSCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge4KSCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge4KSCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge4KSCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge4KSCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge4KSCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge4KSCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + info << "4KSC cartridge, non-bankswitched\n"; + info << CartEnhancedWidget::description(); + + return info.str(); } diff --git a/src/debugger/gui/Cart4KSCWidget.hxx b/src/debugger/gui/Cart4KSCWidget.hxx index 6a6ee2d8c..832c2c127 100644 --- a/src/debugger/gui/Cart4KSCWidget.hxx +++ b/src/debugger/gui/Cart4KSCWidget.hxx @@ -20,9 +20,9 @@ class Cartridge4KSC; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge4KSCWidget : public CartDebugWidget +class Cartridge4KSCWidget : public CartEnhancedWidget { public: Cartridge4KSCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -32,30 +32,11 @@ class Cartridge4KSCWidget : public CartDebugWidget virtual ~Cartridge4KSCWidget() = default; private: - Cartridge4KSC& myCart; - struct CartState { - ByteArray internalram; - }; - CartState myOldState; + string manufacturer() override { return "homebrew intermediate format"; } + + string description() override; private: - // No implementation for non-bankswitched ROMs - void loadConfig() override { } - void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } - - void saveOldState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported Cartridge4KSCWidget() = delete; Cartridge4KSCWidget(const Cartridge4KSCWidget&) = delete; diff --git a/src/debugger/gui/Cart4KWidget.cxx b/src/debugger/gui/Cart4KWidget.cxx index ed4ef7218..14091bd15 100644 --- a/src/debugger/gui/Cart4KWidget.cxx +++ b/src/debugger/gui/Cart4KWidget.cxx @@ -22,15 +22,29 @@ Cartridge4KWidget::Cartridge4KWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge4K& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[0xFFD] << 8) | cart.myImage[0xFFC]; - start -= start % 0x1000; + initialize(); - ostringstream info; - info << "Standard 4K cartridge, non-bankswitched\n" - << "Accessible @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF); - addBaseInformation(4096, "Atari", info.str()); + //// Eventually, we should query this from the debugger/disassembler + //uInt16 start = (cart.myImage[0xFFD] << 8) | cart.myImage[0xFFC]; + //start -= start % 0x1000; + + //ostringstream info; + //info << "Standard 4K cartridge, non-bankswitched\n" + // << "Accessible @ $" << Common::Base::HEX4 << start << " - " + // << "$" << (start + 0xFFF); + //addBaseInformation(4096, "Atari", info.str()); } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge4KWidget::description() +{ + ostringstream info; + + info << "Standard 4K cartridge, non-bankswitched\n"; + info << CartEnhancedWidget::description(); + + return info.str(); +} + diff --git a/src/debugger/gui/Cart4KWidget.hxx b/src/debugger/gui/Cart4KWidget.hxx index 3ba39a3d9..886e2a060 100644 --- a/src/debugger/gui/Cart4KWidget.hxx +++ b/src/debugger/gui/Cart4KWidget.hxx @@ -20,9 +20,9 @@ class Cartridge4K; -#include "CartDebugWidget.hxx" +#include "CartEnhanced.hxx" -class Cartridge4KWidget : public CartDebugWidget +class Cartridge4KWidget : public CartEnhancedWidget { public: Cartridge4KWidget(GuiObject* boss, const GUI::Font& lfont, @@ -32,10 +32,11 @@ class Cartridge4KWidget : public CartDebugWidget virtual ~Cartridge4KWidget() = default; private: - // No implementation for non-bankswitched ROMs - void loadConfig() override { } - void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } + string manufacturer() override { return "Atari"; } + string description() override; + + private: // Following constructors and assignment operators not supported Cartridge4KWidget() = delete; Cartridge4KWidget(const Cartridge4KWidget&) = delete; diff --git a/src/debugger/gui/CartCVWidget.cxx b/src/debugger/gui/CartCVWidget.cxx index bae69cfba..167ff7122 100644 --- a/src/debugger/gui/CartCVWidget.cxx +++ b/src/debugger/gui/CartCVWidget.cxx @@ -24,88 +24,101 @@ CartridgeCVWidget::CartridgeCVWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeCV& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - // Eventually, we should query this from the debugger/disassembler - uInt16 size = 2048; - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - start -= start % size; + initialize(); + //// Eventually, we should query this from the debugger/disassembler + //uInt16 size = 2048; + //uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; + //start -= start % size; + + //ostringstream info; + //info << "CV 2K ROM + 1K RAM , non-bankswitched\n" + // << "1024 bytes RAM @ $F000 - $F7FF\n" + // << " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" + // << "ROM accessible @ $" << Common::Base::HEX4 << start << " - " + // << "$" << (start + size - 1); + + //addBaseInformation(cart.mySize, "CommaVid", info.str()); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeCVWidget::description() +{ ostringstream info; - info << "CV 2K ROM + 1K RAM , non-bankswitched\n" - << "1024 bytes RAM @ $F000 - $F7FF\n" - << " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" - << "ROM accessible @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + size - 1); - addBaseInformation(cart.mySize, "CommaVid", info.str()); + info << "CV 2K ROM + 1K RAM , non-bankswitched\n"; + info << CartEnhancedWidget::description(); + + return info.str(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVWidget::saveOldState() -{ - myOldState.internalram.clear(); - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeCVWidget::internalRamSize() -{ - return 1024; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeCVWidget::internalRamRPort(int start) -{ - return 0xF000 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeCVWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F3FF used for Read Access\n" - << "$F400 - $F7FF used for Write Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeCVWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeCVWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeCVWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeCVWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeCVWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF000, false); -} +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//void CartridgeCVWidget::saveOldState() +//{ +// myOldState.internalram.clear(); +// +// for(uInt32 i = 0; i < internalRamSize(); ++i) +// myOldState.internalram.push_back(myCart.myRAM[i]); +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//uInt32 CartridgeCVWidget::internalRamSize() +//{ +// return 1024; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//uInt32 CartridgeCVWidget::internalRamRPort(int start) +//{ +// return 0xF000 + start; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//string CartridgeCVWidget::internalRamDescription() +//{ +// ostringstream desc; +// desc << "$F000 - $F3FF used for Read Access\n" +// << "$F400 - $F7FF used for Write Access"; +// +// return desc.str(); +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//const ByteArray& CartridgeCVWidget::internalRamOld(int start, int count) +//{ +// myRamOld.clear(); +// for(int i = 0; i < count; i++) +// myRamOld.push_back(myOldState.internalram[start + i]); +// return myRamOld; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//const ByteArray& CartridgeCVWidget::internalRamCurrent(int start, int count) +//{ +// myRamCurrent.clear(); +// for(int i = 0; i < count; i++) +// myRamCurrent.push_back(myCart.myRAM[start + i]); +// return myRamCurrent; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//void CartridgeCVWidget::internalRamSetValue(int addr, uInt8 value) +//{ +// myCart.myRAM[addr] = value; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//uInt8 CartridgeCVWidget::internalRamGetValue(int addr) +//{ +// return myCart.myRAM[addr]; +//} +// +//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +//string CartridgeCVWidget::internalRamLabel(int addr) +//{ +// CartDebug& dbg = instance().debugger().cartDebug(); +// return dbg.getLabel(addr + 0xF000, false); +//} diff --git a/src/debugger/gui/CartCVWidget.hxx b/src/debugger/gui/CartCVWidget.hxx index f9d59812b..73452204c 100644 --- a/src/debugger/gui/CartCVWidget.hxx +++ b/src/debugger/gui/CartCVWidget.hxx @@ -20,9 +20,9 @@ class CartridgeCV; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeCVWidget : public CartDebugWidget +class CartridgeCVWidget : public CartEnhancedWidget { public: CartridgeCVWidget(GuiObject* boss, const GUI::Font& lfont, @@ -32,30 +32,35 @@ class CartridgeCVWidget : public CartDebugWidget virtual ~CartridgeCVWidget() = default; private: - CartridgeCV& myCart; - struct CartState { - ByteArray internalram; - }; - CartState myOldState; + //CartridgeCV& myCart; + //struct CartState { + // ByteArray internalram; + //}; + //CartState myOldState; private: - // No implementation for non-bankswitched ROMs - void loadConfig() override { } - void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } + string manufacturer() override { return "CommaVid"; } - void saveOldState() override; + string description() override; - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab + //// No implementation for non-bankswitched ROMs + //void loadConfig() override { } + //void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } + //void saveOldState() override; + + //// start of functions for Cartridge RAM tab + //uInt32 internalRamSize() override; + //uInt32 internalRamRPort(int start) override; + //string internalRamDescription() override; + //const ByteArray& internalRamOld(int start, int count) override; + //const ByteArray& internalRamCurrent(int start, int count) override; + //void internalRamSetValue(int addr, uInt8 value) override; + //uInt8 internalRamGetValue(int addr) override; + //string internalRamLabel(int addr) override; + //// end of functions for Cartridge RAM tab + + private: // Following constructors and assignment operators not supported CartridgeCVWidget() = delete; CartridgeCVWidget(const CartridgeCVWidget&) = delete; diff --git a/src/debugger/gui/CartDebugWidget.cxx b/src/debugger/gui/CartDebugWidget.cxx index 208eec5a7..25423ebd7 100644 --- a/src/debugger/gui/CartDebugWidget.cxx +++ b/src/debugger/gui/CartDebugWidget.cxx @@ -65,7 +65,7 @@ int CartDebugWidget::addBaseInformation(size_t bytes, const string& manufacturer w->setEditable(false); y += myLineHeight + 4; - StringParser bs(desc, (fwidth - kScrollBarWidth) / myFontWidth - 4); + StringParser bs(desc, (fwidth - kScrollBarWidth - 4) / myFontWidth); const StringList& sl = bs.stringList(); uInt32 lines = uInt32(sl.size()); if(lines < 3) lines = 3; diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index 861c99228..4588abcdc 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -16,129 +16,60 @@ //============================================================================ #include "CartE0.hxx" -#include "PopUpWidget.hxx" #include "CartE0Widget.hxx" -static constexpr std::array seg0 = { - "0 ($FFE0)", "1 ($FFE1)", "2 ($FFE2)", "3 ($FFE3)", - "4 ($FFE4)", "5 ($FFE5)", "6 ($FFE6)", "7 ($FFE7)" -}; -static constexpr std::array seg1 = { - "0 ($FFE8)", "1 ($FFE9)", "2 ($FFEA)", "3 ($FFEB)", - "4 ($FFEC)", "5 ($FFED)", "6 ($FFEE)", "7 ($FFEF)" -}; -static constexpr std::array seg2 = { - "0 ($FFF0)", "1 ($FFF1)", "2 ($FFF2)", "3 ($FFF3)", - "4 ($FFF4)", "5 ($FFF5)", "6 ($FFF6)", "7 ($FFF7)" -}; - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeE0Widget::CartridgeE0Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeE0& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 8 * 1024; + initialize(); +} - string info = - "E0 cartridge, eight 1K slices\n" - "Segment 0 accessible @ $F000 - $F3FF\n" - " Hotspots $FE0 to $FE7\n" - "Segment 1 accessible @ $F400 - $F7FF\n" - " Hotspots $FE8 to $FEF\n" - "Segment 2 accessible @ $F800 - $FBFF\n" - " Hotspots $FF0 to $FF7\n" - "Segment 3 accessible @ $FC00 - $FFFF\n" - " Always points to last 1K of ROM\n" - "Startup slices = 4 / 5 / 6 or undetermined\n"; +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeE0Widget::description() +{ + ostringstream info; -#if 0 - // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - start -= start % 0x1000; - info << "Bank RORG" << " = $" << HEX4 << start << "\n"; -#endif - int xpos = 2, - ypos = addBaseInformation(size, "Parker Brothers", info) + myLineHeight; + info << "E0 cartridge,\n eight 1K banks mapped into four segments\n"; + info << CartEnhancedWidget::description(); - VariantList items0, items1, items2; - for(int i = 0; i < 8; ++i) + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeE0Widget::romDescription() +{ + ostringstream info; + + for(int seg = 0; seg < 4; ++seg) { - VarList::push_back(items0, seg0[i]); - VarList::push_back(items1, seg1[i]); - VarList::push_back(items2, seg2[i]); + uInt16 segmentOffset = seg << 10; // myCart.myBankShift; + + info << "Segment #" << seg << " accessible @ $" + << Common::Base::HEX4 << (ADDR_BASE | segmentOffset) + << " - $" << (ADDR_BASE | segmentOffset + /*myCart.myBankSize - 1*/ 0x3FF) << ",\n"; + if (seg < 3) + info << " Hotspots " << hotspotStr(0, seg) << " - " << hotspotStr(7, seg) << "\n"; + else + info << " Always points to last 1K bank of ROM\n"; } + info << "Startup banks = 4 / 5 / 6 or undetermined"; - const int lwidth = _font.getStringWidth("Set slice for segment X "); - mySlice0 = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("7 ($FFF7)"), - myLineHeight, items0, "Set slice for segment 0 ", - lwidth, kSlice0Changed); - mySlice0->setTarget(this); - addFocusWidget(mySlice0); - ypos += mySlice0->getHeight() + 4; - - mySlice1 = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("7 ($FFF7)"), - myLineHeight, items1, "Set slice for segment 1 ", - lwidth, kSlice1Changed); - mySlice1->setTarget(this); - addFocusWidget(mySlice1); - ypos += mySlice1->getHeight() + 4; - - mySlice2 = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("7 ($FFF7)"), - myLineHeight, items2, "Set slice for segment 2 ", - lwidth, kSlice2Changed); - mySlice2->setTarget(this); - addFocusWidget(mySlice2); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0Widget::loadConfig() +string CartridgeE0Widget::hotspotStr(int bank, int segment) { - mySlice0->setSelectedIndex(myCart.getSegmentBank(0)); - mySlice1->setSelectedIndex(myCart.getSegmentBank(1)); - mySlice2->setSelectedIndex(myCart.getSegmentBank(2)); + ostringstream info; + uInt16 hotspot = myCart.hotspot(); - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeE0Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - myCart.unlockBank(); - - switch(cmd) - { - case kSlice0Changed: - myCart.bank(mySlice0->getSelected(), 0); - break; - case kSlice1Changed: - myCart.bank(mySlice1->getSelected(), 1); - break; - case kSlice2Changed: - myCart.bank(mySlice2->getSelected(), 2); - break; - default: - break; - } - - myCart.lockBank(); - invalidate(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeE0Widget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Slices: " << std::dec - << seg0[myCart.getSegmentBank(0)] << " / " - << seg1[myCart.getSegmentBank(1)] << " / " - << seg2[myCart.getSegmentBank(2)]; - - return buf.str(); + if(hotspot & 0x1000) + hotspot |= ADDR_BASE; + + info << "$" << Common::Base::HEX1 << (hotspot + bank + segment * 8); + + return info.str(); } diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index bdbe73182..fe3e9d374 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEE0_WIDGET_HXX class CartridgeE0; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeE0Widget : public CartDebugWidget +class CartridgeE0Widget : public CartEnhancedWidget { public: CartridgeE0Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,21 +32,16 @@ class CartridgeE0Widget : public CartDebugWidget virtual ~CartridgeE0Widget() = default; private: - CartridgeE0& myCart; - PopUpWidget *mySlice0{nullptr}, *mySlice1{nullptr}, *mySlice2{nullptr}; + string manufacturer() override { return "Parker Brothers"; } - enum { - kSlice0Changed = 's0CH', - kSlice1Changed = 's1CH', - kSlice2Changed = 's2CH' - }; + string description() override; + string romDescription() override; + + string hotspotStr(int bank, int segment) override; + + int bankSegs() override { return 3; } private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeE0Widget() = delete; CartridgeE0Widget(const CartridgeE0Widget&) = delete; diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx new file mode 100644 index 000000000..39732fc80 --- /dev/null +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -0,0 +1,344 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + + +#include "PopUpWidget.hxx" +#include "CartEnhanced.hxx" +#include "CartEnhancedWidget.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +CartEnhancedWidget::CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, + const GUI::Font& nfont, + int x, int y, int w, int h, + CartridgeEnhanced& cart) + : CartDebugWidget(boss, lfont, nfont, x, y, w, h), + myCart(cart) +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::initialize() +{ + int ypos = addBaseInformation(size(), manufacturer(), description(), descriptionLines()) + + myLineHeight; + + bankSelect(ypos); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +size_t CartEnhancedWidget::size() +{ + size_t size; + + myCart.getImage(size); + + return size; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::description() +{ + ostringstream info; + + if (myCart.myRamSize > 0) + info << ramDescription(); + info << romDescription(); + + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +int CartEnhancedWidget::descriptionLines() +{ + return 20; // should be enough for almost all types +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::ramDescription() +{ + ostringstream info; + + info << myCart.myRamSize << " bytes RAM @ " + << "$" << Common::Base::HEX4 << ADDR_BASE << " - " + << "$" << (ADDR_BASE | (myCart.myRamSize * 2 - 1)) << "\n" + << " $" << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) << " (R)" + << ", $" << (ADDR_BASE | myCart.myWriteOffset) + << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamSize - 1)) << " (W)\n"; + + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::romDescription() +{ + ostringstream info; + size_t size; + const uInt8* image = myCart.getImage(size); + + if(myCart.romBankCount() > 1) + { + info << "Startup bank = #" << myCart.startBank() << " or undetermined\n"; + for(int bank = 0, offset = 0xFFC; bank < myCart.romBankCount(); ++bank, offset += 0x1000) + { + uInt16 start = (image[offset + 1] << 8) | image[offset]; + start -= start % 0x1000; + + info << "Bank #" << bank << " @ $" + << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - $" << (start + 0xFFF) + << " (hotspot " << hotspotStr(bank) << ")\n"; + } + } + else + { + uInt16 start = (image[myCart.mySize - 3] << 8) | image[myCart.mySize - 4]; + start -= start % std::min(int(size), 0x1000); + + info << "ROM accessible @ $" + << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - " + << "$" << Common::Base::HEX4 << (start + myCart.mySize - 1); + } + + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::bankSelect(int& ypos) +{ + if(myCart.romBankCount() > 1) + { + int xpos = 2; + + myBankWidgets = make_unique(bankSegs()); + + for(int seg = 0; seg < bankSegs(); ++seg) + { + // fill bank and hotspot list + uInt16 hotspot = myCart.hotspot(); + VariantList items; + int pw = 0; + + for(int bank = 0; bank < myCart.romBankCount(); ++bank) + { + ostringstream buf; + + buf << std::setw(bank < 10 ? 2 : 1) << "#" << std::dec << bank; + if(hotspot >= 0x100 && myHotspotDelta > 0) + buf << " (" << hotspotStr(bank, seg) << ")"; + VarList::push_back(items, buf.str()); + pw = std::max(pw, _font.getStringWidth(buf.str())); + } + + // create widgets + ostringstream buf; + + buf << "Set bank"; + if(bankSegs() > 1) + buf << " for segment #" << seg << " "; + else + buf << " "; // align with info + + myBankWidgets[seg] = new PopUpWidget(_boss, _font, xpos, ypos - 2, + pw, myLineHeight, items, buf.str(), + 0, kBankChanged); + myBankWidgets[seg]->setTarget(this); + myBankWidgets[seg]->setID(seg); + addFocusWidget(myBankWidgets[seg]); + + ypos += myBankWidgets[seg]->getHeight() + 4; + } + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::bankState() +{ + if(myCart.romBankCount() > 1) + { + ostringstream& buf = buffer(); + uInt16 hotspot = myCart.hotspot(); + bool hasRamBanks = myCart.myRamBankCount > 0; + + if(bankSegs() > 1) + { + buf << "Segments: "; + + for(int seg = 0; seg < bankSegs(); ++seg) + { + int bank = myCart.getSegmentBank(seg); + bool isRamBank = (bank >= myCart.romBankCount()); + + + if(seg > 0) + buf << " / "; + + buf << "#" << std::dec << (bank - (isRamBank ? myCart.romBankCount() : 0)); + + if(isRamBank) // was RAM mapped here? + buf << " RAM"; + else if (hasRamBanks) + buf << " ROM"; + + if(hotspot >= 0x100) + buf << " (" << (bankSegs() < 3 ? "hotspot " : "") << hotspotStr(bank) << ")"; + } + } + else + { + buf << "Bank #" << std::dec << myCart.getBank(); + + if(hotspot >= 0x100) + buf << " (hotspot " << hotspotStr(myCart.getSegmentBank()) << ")"; + } + return buf.str(); + } + return "0 (non-bankswitched)"; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::hotspotStr(int bank, int segment) +{ + ostringstream info; + uInt16 hotspot = myCart.hotspot(); + + if(hotspot & 0x1000) + hotspot |= ADDR_BASE; + + info << "$" << Common::Base::HEX1 << (hotspot + bank * myHotspotDelta); + + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +int CartEnhancedWidget::bankSegs() +{ + return myCart.myBankSegs; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::saveOldState() +{ + myOldState.internalRam.clear(); + for(uInt32 i = 0; i < myCart.myRamSize; ++i) + myOldState.internalRam.push_back(myCart.myRAM[i]); + + myOldState.banks.clear(); + for(int seg = 0; seg < bankSegs(); ++seg) + myOldState.banks.push_back(myCart.getSegmentBank(seg)); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::loadConfig() +{ + if(myBankWidgets != nullptr) + { + for(int seg = 0; seg < bankSegs(); ++seg) + myBankWidgets[seg]->setSelectedIndex(myCart.getSegmentBank(seg), + myCart.getSegmentBank(seg) != myOldState.banks[seg]); + } + CartDebugWidget::loadConfig(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::handleCommand(CommandSender* sender, + int cmd, int data, int id) +{ + if(cmd == kBankChanged) + { + myCart.unlockBank(); + myCart.bank(myBankWidgets[id]->getSelected(), id); + myCart.lockBank(); + invalidate(); + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 CartEnhancedWidget::internalRamSize() +{ + return myCart.myRamSize; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 CartEnhancedWidget::internalRamRPort(int start) +{ + return ADDR_BASE + myCart.myReadOffset + start; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::internalRamDescription() +{ + ostringstream desc; + + // order RW by addresses + if(myCart.myReadOffset <= myCart.myWriteOffset) + { + desc << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) + << " used for Read Access\n"; + } + + desc + << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) + << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamSize - 1)) + << " used for Write Access"; + + if(myCart.myReadOffset > myCart.myWriteOffset) + { + desc << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) + << " used for Read Access"; + } + + return desc.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const ByteArray& CartEnhancedWidget::internalRamOld(int start, int count) +{ + myRamOld.clear(); + for(int i = 0; i < count; i++) + myRamOld.push_back(myOldState.internalRam[start + i]); + return myRamOld; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const ByteArray& CartEnhancedWidget::internalRamCurrent(int start, int count) +{ + myRamCurrent.clear(); + for(int i = 0; i < count; i++) + myRamCurrent.push_back(myCart.myRAM[start + i]); + return myRamCurrent; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartEnhancedWidget::internalRamSetValue(int addr, uInt8 value) +{ + myCart.myRAM[addr] = value; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt8 CartEnhancedWidget::internalRamGetValue(int addr) +{ + return myCart.myRAM[addr]; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartEnhancedWidget::internalRamLabel(int addr) +{ + CartDebug& dbg = instance().debugger().cartDebug(); + return dbg.getLabel(addr + ADDR_BASE + myCart.myReadOffset, false); +} diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx new file mode 100644 index 000000000..3bff6350a --- /dev/null +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -0,0 +1,108 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef CART_ENHANCED_WIDGET_HXX +#define CART_ENHANCED_WIDGET_HXX + +class CartridgeEnhanced; +class PopUpWidget; + +namespace GUI { + class Font; +} + +#include "CartDebugWidget.hxx" + +class CartEnhancedWidget : public CartDebugWidget +{ + public: + CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, + const GUI::Font& nfont, + int x, int y, int w, int h, + CartridgeEnhanced& cart); + virtual ~CartEnhancedWidget() = default; + + protected: + void initialize(); + + virtual size_t size(); + + virtual string manufacturer() = 0; + + virtual string description(); + + virtual int descriptionLines(); + + virtual string ramDescription(); + + virtual string romDescription(); + + virtual void bankSelect(int& ypos); + + virtual string hotspotStr(int bank, int segment = 0); + + virtual int bankSegs(); // { return myCart.myBankSegs; } + + void saveOldState() override; + void loadConfig() override; + + void handleCommand(CommandSender* sender, int cmd, int data, int id) override; + + string bankState() override; + + // start of functions for Cartridge RAM tab + uInt32 internalRamSize() override; + uInt32 internalRamRPort(int start) override; + string internalRamDescription() override; + const ByteArray& internalRamOld(int start, int count) override; + const ByteArray& internalRamCurrent(int start, int count) override; + void internalRamSetValue(int addr, uInt8 value) override; + uInt8 internalRamGetValue(int addr) override; + string internalRamLabel(int addr) override; + // end of functions for Cartridge RAM tab + + protected: + enum { kBankChanged = 'bkCH' }; + + struct CartState { + ByteArray internalRam; + ByteArray banks; + }; + CartState myOldState; + + CartridgeEnhanced& myCart; + + // Distance between two hotspots + int myHotspotDelta{1}; + + std::unique_ptr myBankWidgets{nullptr}; + + + // Display all addresses based on this + static constexpr uInt16 ADDR_BASE = 0xF000; + + private: + // Following constructors and assignment operators not supported + CartEnhancedWidget() = delete; + CartEnhancedWidget(const CartEnhancedWidget&) = delete; + CartEnhancedWidget(CartEnhancedWidget&&) = delete; + CartEnhancedWidget& operator=(const CartEnhancedWidget&) = delete; + CartEnhancedWidget& operator=(CartEnhancedWidget&&) = delete; +}; + +#endif + diff --git a/src/debugger/gui/CartF0Widget.cxx b/src/debugger/gui/CartF0Widget.cxx index c7564cefa..c4826249e 100644 --- a/src/debugger/gui/CartF0Widget.cxx +++ b/src/debugger/gui/CartF0Widget.cxx @@ -16,85 +16,28 @@ //============================================================================ #include "CartF0.hxx" -#include "PopUpWidget.hxx" #include "CartF0Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF0Widget::CartridgeF0Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF0& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 16 * 4096; + myHotspotDelta = 0; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF0Widget::description() +{ ostringstream info; - info << "64K Megaboy F0 cartridge, 16 4K banks\n" - << "Startup bank = #" << cart.startBank() << " or undetermined\n" - << "Bankswitch triggered by accessing $1FF0\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC; i < 16; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start - << " - " << "$" << (start + 0xFFF) << "\n"; - } + info << "Megaboy F0 cartridge, 16 4K banks\n" + << "Startup bank = #" << myCart.startBank() << " or undetermined\n" + << "Bankswitch triggered by accessing $" << Common::Base::HEX4 << 0xFFF0 << "\n"; - int xpos = 2, - ypos = addBaseInformation(size, "Dynacom Megaboy", - info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0"); - VarList::push_back(items, " 1"); - VarList::push_back(items, " 2"); - VarList::push_back(items, " 3"); - VarList::push_back(items, " 4"); - VarList::push_back(items, " 5"); - VarList::push_back(items, " 6"); - VarList::push_back(items, " 7"); - VarList::push_back(items, " 8"); - VarList::push_back(items, " 9"); - VarList::push_back(items, " 10"); - VarList::push_back(items, " 11"); - VarList::push_back(items, " 12"); - VarList::push_back(items, " 13"); - VarList::push_back(items, " 14"); - VarList::push_back(items, " 15"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth(" 15"), - myLineHeight, items, "Set bank #", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF0Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -102,7 +45,8 @@ string CartridgeF0Widget::bankState() { ostringstream& buf = buffer(); - buf << "Bank = #" << std::dec << myCart.getBank() << ", hotspot = $FFF0"; + buf << "Bank #" << std::dec << myCart.getBank() + << " (hotspot $" << Common::Base::HEX4 << 0xFFF0 << ")"; return buf.str(); } diff --git a/src/debugger/gui/CartF0Widget.hxx b/src/debugger/gui/CartF0Widget.hxx index 6225fff71..b7aa701bc 100644 --- a/src/debugger/gui/CartF0Widget.hxx +++ b/src/debugger/gui/CartF0Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF0_WIDGET_HXX class CartridgeF0; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF0Widget : public CartDebugWidget +class CartridgeF0Widget : public CartEnhancedWidget { public: CartridgeF0Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,13 @@ class CartridgeF0Widget : public CartDebugWidget virtual ~CartridgeF0Widget() = default; private: - CartridgeF0& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Dynacom Megaboy"; } - enum { kBankChanged = 'bkCH' }; - - private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; + string description() override; string bankState() override; +private: // Following constructors and assignment operators not supported CartridgeF0Widget() = delete; CartridgeF0Widget(const CartridgeF0Widget&) = delete; diff --git a/src/debugger/gui/CartF4SCWidget.cxx b/src/debugger/gui/CartF4SCWidget.cxx index 512edba55..b85251cbe 100644 --- a/src/debugger/gui/CartF4SCWidget.cxx +++ b/src/debugger/gui/CartF4SCWidget.cxx @@ -15,157 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartF4SC.hxx" -#include "PopUpWidget.hxx" #include "CartF4SCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF4SCWidget::CartridgeF4SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF4SC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 8 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF4SCWidget::description() +{ ostringstream info; - info << "Standard F4SC cartridge, eight 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF4; i < 8; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x100) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F4SC cartridge, eight 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str(), 15) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF4)"); - VarList::push_back(items, "1 ($FFF5)"); - VarList::push_back(items, "2 ($FFF6)"); - VarList::push_back(items, "3 ($FFF7)"); - VarList::push_back(items, "4 ($FFF8)"); - VarList::push_back(items, "5 ($FFF9)"); - VarList::push_back(items, "6 ($FFFA)"); - VarList::push_back(items, "7 ($FFFB)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF4SCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFF4", "$FFF5", "$FFF6", "$FFF7", "$FFF8", "$FFF9", "$FFFA", "$FFFB" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF4SCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF4SCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF4SCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF4SCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF4SCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4SCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF4SCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF4SCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartF4SCWidget.hxx b/src/debugger/gui/CartF4SCWidget.hxx index e2ec21f06..8c22c6d74 100644 --- a/src/debugger/gui/CartF4SCWidget.hxx +++ b/src/debugger/gui/CartF4SCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF4SC_WIDGET_HXX class CartridgeF4SC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF4SCWidget : public CartDebugWidget +class CartridgeF4SCWidget : public CartEnhancedWidget { public: CartridgeF4SCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,36 +32,11 @@ class CartridgeF4SCWidget : public CartDebugWidget virtual ~CartridgeF4SCWidget() = default; private: - CartridgeF4SC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Atari"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeF4SCWidget() = delete; CartridgeF4SCWidget(const CartridgeF4SCWidget&) = delete; diff --git a/src/debugger/gui/CartF4Widget.cxx b/src/debugger/gui/CartF4Widget.cxx index 3d5848cd0..ae884cfa9 100644 --- a/src/debugger/gui/CartF4Widget.cxx +++ b/src/debugger/gui/CartF4Widget.cxx @@ -16,87 +16,24 @@ //============================================================================ #include "CartF4.hxx" -#include "PopUpWidget.hxx" #include "CartF4Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF4Widget::CartridgeF4Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF4& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 8 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF4Widget::description() +{ ostringstream info; - info << "Standard F4 cartridge, eight 4K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF4; i < 8; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F4 cartridge, eight 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str(), 15) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF4)"); - VarList::push_back(items, "1 ($FFF5)"); - VarList::push_back(items, "2 ($FFF6)"); - VarList::push_back(items, "3 ($FFF7)"); - VarList::push_back(items, "4 ($FFF8)"); - VarList::push_back(items, "5 ($FFF9)"); - VarList::push_back(items, "6 ($FFFA)"); - VarList::push_back(items, "7 ($FFFB)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF4Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF4Widget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFF4", "$FFF5", "$FFF6", "$FFF7", "$FFF8", "$FFF9", "$FFFA", "$FFFB" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartF4Widget.hxx b/src/debugger/gui/CartF4Widget.hxx index 7487a1b4b..2201b246b 100644 --- a/src/debugger/gui/CartF4Widget.hxx +++ b/src/debugger/gui/CartF4Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF4_WIDGET_HXX class CartridgeF4; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF4Widget : public CartDebugWidget +class CartridgeF4Widget : public CartEnhancedWidget { public: CartridgeF4Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeF4Widget : public CartDebugWidget virtual ~CartridgeF4Widget() = default; private: - CartridgeF4& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Atari"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeF4Widget() = delete; CartridgeF4Widget(const CartridgeF4Widget&) = delete; diff --git a/src/debugger/gui/CartF6SCWidget.cxx b/src/debugger/gui/CartF6SCWidget.cxx index 863ff2948..bfa99b5c5 100644 --- a/src/debugger/gui/CartF6SCWidget.cxx +++ b/src/debugger/gui/CartF6SCWidget.cxx @@ -15,151 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartF6SC.hxx" -#include "PopUpWidget.hxx" #include "CartF6SCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF6SCWidget::CartridgeF6SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF6SC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 4 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF6SCWidget::description() +{ ostringstream info; - info << "Standard F6SC cartridge, four 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF6; i < 4; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x100) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F6SC cartridge, four 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF6)"); - VarList::push_back(items, "1 ($FFF7)"); - VarList::push_back(items, "2 ($FFF8)"); - VarList::push_back(items, "3 ($FFF9)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF6SCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$FFF6", "$FFF7", "$FFF8", "$FFF9" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF6SCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF6SCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF6SCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF6SCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF6SCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6SCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF6SCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF6SCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartF6SCWidget.hxx b/src/debugger/gui/CartF6SCWidget.hxx index deee0e836..6b0aab9f8 100644 --- a/src/debugger/gui/CartF6SCWidget.hxx +++ b/src/debugger/gui/CartF6SCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF6SC_WIDGET_HXX class CartridgeF6SC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF6SCWidget : public CartDebugWidget +class CartridgeF6SCWidget : public CartEnhancedWidget { public: CartridgeF6SCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,34 +32,11 @@ class CartridgeF6SCWidget : public CartDebugWidget virtual ~CartridgeF6SCWidget() = default; private: - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartridgeF6SC& myCart; - PopUpWidget* myBank{nullptr}; - CartState myOldState; + string manufacturer() override { return "Atari"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeF6SCWidget() = delete; CartridgeF6SCWidget(const CartridgeF6SCWidget&) = delete; diff --git a/src/debugger/gui/CartF6Widget.cxx b/src/debugger/gui/CartF6Widget.cxx index 114d20e18..692c40258 100644 --- a/src/debugger/gui/CartF6Widget.cxx +++ b/src/debugger/gui/CartF6Widget.cxx @@ -16,81 +16,24 @@ //============================================================================ #include "CartF6.hxx" -#include "PopUpWidget.hxx" #include "CartF6Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF6Widget::CartridgeF6Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF6& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 4 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF6Widget::description() +{ ostringstream info; - info << "Standard F6 cartridge, four 4K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF6; i < 4; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F6 cartridge, four 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF6)"); - VarList::push_back(items, "1 ($FFF7)"); - VarList::push_back(items, "2 ($FFF8)"); - VarList::push_back(items, "3 ($FFF9)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx) "), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF6Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF6Widget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$FFF6", "$FFF7", "$FFF8", "$FFF9" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartF6Widget.hxx b/src/debugger/gui/CartF6Widget.hxx index 392eb6a0c..e36933ac7 100644 --- a/src/debugger/gui/CartF6Widget.hxx +++ b/src/debugger/gui/CartF6Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF6_WIDGET_HXX class CartridgeF6; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF6Widget : public CartDebugWidget +class CartridgeF6Widget : public CartEnhancedWidget { public: CartridgeF6Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeF6Widget : public CartDebugWidget virtual ~CartridgeF6Widget() = default; private: - CartridgeF6& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Atari"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeF6Widget() = delete; CartridgeF6Widget(const CartridgeF6Widget&) = delete; diff --git a/src/debugger/gui/CartF8SCWidget.cxx b/src/debugger/gui/CartF8SCWidget.cxx index 1f432e224..78e1c70a9 100644 --- a/src/debugger/gui/CartF8SCWidget.cxx +++ b/src/debugger/gui/CartF8SCWidget.cxx @@ -15,149 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartF8SC.hxx" -#include "PopUpWidget.hxx" #include "CartF8SCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF8SCWidget::CartridgeF8SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF8SC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 8192; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF8SCWidget::description() +{ ostringstream info; - info << "Standard F8SC cartridge, two 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 2; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x100) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F8SC cartridge, two 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF8)"); - VarList::push_back(items, "1 ($FFF9)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF8SCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$FFF8", "$FFF9" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF8SCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeF8SCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF8SCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF8SCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeF8SCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8SCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeF8SCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF8SCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartF8SCWidget.hxx b/src/debugger/gui/CartF8SCWidget.hxx index 7bebef602..3332f9a4b 100644 --- a/src/debugger/gui/CartF8SCWidget.hxx +++ b/src/debugger/gui/CartF8SCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEF8SC_WIDGET_HXX class CartridgeF8SC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF8SCWidget : public CartDebugWidget +class CartridgeF8SCWidget : public CartEnhancedWidget { public: CartridgeF8SCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,11 @@ class CartridgeF8SCWidget : public CartDebugWidget virtual ~CartridgeF8SCWidget() = default; private: - CartridgeF8SC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Atari"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeF8SCWidget() = delete; CartridgeF8SCWidget(const CartridgeF8SCWidget&) = delete; diff --git a/src/debugger/gui/CartF8Widget.cxx b/src/debugger/gui/CartF8Widget.cxx index ca648b5f1..ed1481b2a 100644 --- a/src/debugger/gui/CartF8Widget.cxx +++ b/src/debugger/gui/CartF8Widget.cxx @@ -16,79 +16,24 @@ //============================================================================ #include "CartF8.hxx" -#include "PopUpWidget.hxx" #include "CartF8Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeF8Widget::CartridgeF8Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF8& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 2 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeF8Widget::description() +{ ostringstream info; - info << "Standard F8 cartridge, two 4K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 2; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "Standard F8 cartridge, two 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Atari", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF8)"); - VarList::push_back(items, "1 ($FFF9)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeF8Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeF8Widget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$FFF8", "$FFF9" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartF8Widget.hxx b/src/debugger/gui/CartF8Widget.hxx index 507ad464b..34856f2ee 100644 --- a/src/debugger/gui/CartF8Widget.hxx +++ b/src/debugger/gui/CartF8Widget.hxx @@ -21,9 +21,9 @@ class CartridgeF8; class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeF8Widget : public CartDebugWidget +class CartridgeF8Widget : public CartEnhancedWidget { public: CartridgeF8Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +33,11 @@ class CartridgeF8Widget : public CartDebugWidget virtual ~CartridgeF8Widget() = default; private: - CartridgeF8& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Atari"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeF8Widget() = delete; CartridgeF8Widget(const CartridgeF8Widget&) = delete; diff --git a/src/debugger/gui/CartUAWidget.cxx b/src/debugger/gui/CartUAWidget.cxx index 7417d8b44..f3865b998 100644 --- a/src/debugger/gui/CartUAWidget.cxx +++ b/src/debugger/gui/CartUAWidget.cxx @@ -16,89 +16,37 @@ //============================================================================ #include "CartUA.hxx" -#include "PopUpWidget.hxx" #include "CartUAWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeUAWidget::CartridgeUAWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeUA& cart, bool swapHotspots) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart), + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), mySwappedHotspots(swapHotspots) { - uInt16 size = 2 * 4096; + myHotspotDelta = 0x20; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeUAWidget::description() +{ ostringstream info; - info << "8K UA cartridge" << (mySwappedHotspots ? " (swapped banks)" : "") << ", two 4K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = mySwappedHotspots ? 0x240 : 0x220; i < 2; - ++i, offset += 0x1000, spot += mySwappedHotspots ? -0x20 : 0x20) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspots = $" << spot << ", $" << (spot | 0x80) << ")\n"; - } + info << "8K UA cartridge" << (mySwappedHotspots ? " (swapped banks)" : "") << ", two 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "UA Limited", info.str()) + myLineHeight; - - VariantList items; - if (swapHotspots) - { - VarList::push_back(items, "0 ($240, $2C0)"); - VarList::push_back(items, "1 ($220, $2A0)"); - } - else - { - VarList::push_back(items, "0 ($220, $2A0)"); - VarList::push_back(items, "1 ($240, $2C0)"); - } - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFx, $FFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeUAWidget::loadConfig() +string CartridgeUAWidget::hotspotStr(int bank, int) { - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); + ostringstream info; + uInt16 hotspot = myCart.hotspot() + (bank ^ (mySwappedHotspots ? 1 : 0)) * myHotspotDelta; - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); + info << "$" << Common::Base::HEX1 << hotspot << ", $" << (hotspot | 0x80); - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeUAWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeUAWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$220, $2A0", "$240, $2C0" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspots = " << spot[myCart.getBank() ^ (mySwappedHotspots ? 1U : 0U)]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartUAWidget.hxx b/src/debugger/gui/CartUAWidget.hxx index 346b1c1d2..bb61d25c9 100644 --- a/src/debugger/gui/CartUAWidget.hxx +++ b/src/debugger/gui/CartUAWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEUA_WIDGET_HXX class CartridgeUA; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeUAWidget : public CartDebugWidget +class CartridgeUAWidget : public CartEnhancedWidget { public: CartridgeUAWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,19 +32,16 @@ class CartridgeUAWidget : public CartDebugWidget virtual ~CartridgeUAWidget() = default; private: - CartridgeUA& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "UA Limited"; } - bool mySwappedHotspots; + string description() override; - enum { kBankChanged = 'bkCH' }; + string hotspotStr(int bank, int) override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; + const bool mySwappedHotspots; + private: // Following constructors and assignment operators not supported CartridgeUAWidget() = delete; CartridgeUAWidget(const CartridgeUAWidget&) = delete; diff --git a/src/debugger/gui/module.mk b/src/debugger/gui/module.mk index d1ffc81c0..8f19ce5fa 100644 --- a/src/debugger/gui/module.mk +++ b/src/debugger/gui/module.mk @@ -28,6 +28,7 @@ MODULE_OBJS := \ src/debugger/gui/CartDPCPlusWidget.o \ src/debugger/gui/CartDPCWidget.o \ src/debugger/gui/CartE0Widget.o \ + src/debugger/gui/CartEnhancedWidget.o \ src/debugger/gui/CartMNetworkWidget.o \ src/debugger/gui/CartE7Widget.o \ src/debugger/gui/CartE78KWidget.o \ diff --git a/src/emucore/Cart4K.cxx b/src/emucore/Cart4K.cxx index d26ccfec0..9e684afad 100644 --- a/src/emucore/Cart4K.cxx +++ b/src/emucore/Cart4K.cxx @@ -23,5 +23,4 @@ Cartridge4K::Cartridge4K(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) : CartridgeEnhanced(image, size, md5, settings) { - cerr << "Cartridge4K" << endl; } diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 11eb0ca75..05f954e3e 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -205,7 +205,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) // for ROMs < 4_KB, the whole address space will be mapped. uInt16 toAddr = (ROM_OFFSET + segmentOffset + (mySize < 4_KB ? 4_KB : myBankSize)) & ~System::PAGE_MASK; - if(hotspot != 0) + if(hotspot & 0x1000) hotSpotAddr = (hotspot & ~System::PAGE_MASK); else hotSpotAddr = 0xFFFF; // none diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index 10dbfb0d6..ecf8a0a58 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -22,6 +22,9 @@ class System; #include "bspf.hxx" #include "Cart.hxx" +#ifdef DEBUGGER_SUPPORT + #include "CartEnhancedWidget.hxx" +#endif /** Enhanced cartridge base class used for multiple cart types. @@ -30,6 +33,8 @@ class System; */ class CartridgeEnhanced : public Cartridge { + friend class CartEnhancedWidget; + public: /** Create a new cartridge using the specified image @@ -142,7 +147,6 @@ class CartridgeEnhanced : public Cartridge */ bool load(Serializer& in) override; - public: /** Get the byte at the specified address. @@ -159,19 +163,25 @@ class CartridgeEnhanced : public Cartridge */ bool poke(uInt16 address, uInt8 value) override; + /** + Get the hotspot in ROM address space. + + @return The first hotspot address (ususally in ROM) space or 0 + */ + virtual uInt16 hotspot() const { return 0; } + // TODO: handle cases where there the hotspots cover multiple pages + protected: // The '2 ^ N = bank segment size' exponent uInt16 myBankShift{BANK_SHIFT}; // default 12 (-> one 4K segment) // The size of a bank's segment - uInt16 myBankSize{0}; + uInt16 myBankSize{uInt16(4_KB)}; // The mask for a bank segment - uInt16 myBankMask{0}; - - // The number of segments a bank is split into - uInt16 myBankSegs{0}; + uInt16 myBankMask{ROM_MASK}; + protected: // The extra RAM size uInt16 myRamSize{RAM_SIZE}; // default 0 @@ -181,6 +191,9 @@ class CartridgeEnhanced : public Cartridge // The mask for the extra RAM uInt16 myRamMask{0}; // RAM_SIZE - 1, but doesn't matter when RAM_SIZE is 0 + // The number of segments a bank is split into (default 1) + uInt16 myBankSegs{1}; + // The offset into ROM space for reading from ROM // This is zero for types without RAM and with banked RAM // - xxSC = 0x0100 @@ -259,14 +272,6 @@ class CartridgeEnhanced : public Cartridge */ virtual uInt16 getStartBank() const { return 0; } - /** - Get the hotspot in ROM address space. - - @return The first hotspot address (ususally in ROM) space or 0 - */ - virtual uInt16 hotspot() const { return 0; } - // TODO: handle cases where there the hotspots cover multiple pages - private: // Following constructors and assignment operators not supported CartridgeEnhanced() = delete; diff --git a/src/emucore/CartUA.hxx b/src/emucore/CartUA.hxx index 97569dd76..77b83d10b 100644 --- a/src/emucore/CartUA.hxx +++ b/src/emucore/CartUA.hxx @@ -100,6 +100,8 @@ class CartridgeUA : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; + uInt16 hotspot() const override { return 0x0220; } + private: // Previous Device's page access std::array myHotSpotPageAccess; diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index b081dde0d..28b0efe29 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -618,6 +618,7 @@ true + true @@ -1621,6 +1622,7 @@ true + true diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index f0c9b601d..536cf54eb 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -996,6 +996,9 @@ Source Files\emucore + + Source Files\debugger + @@ -2045,6 +2048,9 @@ Header Files\emucore + + Header Files\debugger + From 9e466214bad31c752e5f852bea87f5db81b54a19 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Apr 2020 12:19:44 +0200 Subject: [PATCH 33/69] improve bankswitching masking in CartEnhanced --- src/emucore/Cart3F.hxx | 2 ++ src/emucore/CartE0.cxx | 2 ++ src/emucore/CartEnhanced.cxx | 7 ++++--- src/emucore/CartEnhanced.hxx | 3 +++ src/emucore/CartF0.cxx | 2 +- src/emucore/CartF4.cxx | 4 ++-- src/emucore/CartF6.cxx | 4 ++-- src/emucore/CartF8.cxx | 4 ++-- src/emucore/CartFA.cxx | 4 ++-- src/emucore/CartFA2.cxx | 4 ++-- src/emucore/CartFC.cxx | 2 +- 11 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/emucore/Cart3F.hxx b/src/emucore/Cart3F.hxx index d9f3e9fa6..7bdcbd99c 100644 --- a/src/emucore/Cart3F.hxx +++ b/src/emucore/Cart3F.hxx @@ -87,6 +87,8 @@ class Cartridge3F : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value) override; + uInt16 hotspot() const override { return 0x003F; } + private: // log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 11; // = 2K = 0x0800 diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index 97752e447..d9c37d7e4 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -48,6 +48,8 @@ void CartridgeE0::reset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeE0::checkSwitchBank(uInt16 address, uInt8) { + address &= ROM_MASK; + // Switch banks if necessary if((address >= 0x0FE0) && (address <= 0x0FE7)) { diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 05f954e3e..ea167b1d5 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -114,8 +114,9 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) { uInt16 peekAddress = address; - if (hotspot() != 0) - checkSwitchBank(address & ROM_MASK); + // hotspots in TIA range are reacting to pokes only + if (hotspot() >= 0x80) + checkSwitchBank(address & ADDR_MASK); if(isRamBank(address)) { @@ -148,7 +149,7 @@ bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) // Note: (TODO?) // The checkSwitchBank() call makes no difference between ROM and e.g TIA space // Writing to e.g. 0xf0xx might triger a bankswitch, is (and was!) this a bug??? - if (checkSwitchBank(address & ROM_MASK, value)) + if (checkSwitchBank(address & ADDR_MASK, value)) return false; if(myRamSize > 0) diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index ecf8a0a58..c3702d118 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -232,6 +232,9 @@ class CartridgeEnhanced : public Cartridge size_t mySize{0}; protected: + // The mask for 6507 address space + static constexpr uInt16 ADDR_MASK = 0x1FFF; + // The offset into address space for accessing ROM static constexpr uInt16 ROM_OFFSET = 0x1000; diff --git a/src/emucore/CartF0.cxx b/src/emucore/CartF0.cxx index 9f021a685..8747c57f3 100644 --- a/src/emucore/CartF0.cxx +++ b/src/emucore/CartF0.cxx @@ -28,7 +28,7 @@ CartridgeF0::CartridgeF0(const ByteBuffer& image, size_t size, bool CartridgeF0::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary - if(address == 0x0FF0) + if(address == 0x1FF0) { // Switch to next bank uInt8 nextBank = ((getBank()) + 1) & 0x0F; diff --git a/src/emucore/CartF4.cxx b/src/emucore/CartF4.cxx index 0cb689228..6a8cd6e00 100644 --- a/src/emucore/CartF4.cxx +++ b/src/emucore/CartF4.cxx @@ -29,9 +29,9 @@ bool CartridgeF4::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary // Note: addresses could be calculated from hotspot and bank count - if((address >= 0x0FF4) && (address <= 0x0FFB)) + if((address >= 0x1FF4) && (address <= 0x1FFB)) { - bank(address - 0x0FF4); + bank(address - 0x1FF4); return true; } return false; diff --git a/src/emucore/CartF6.cxx b/src/emucore/CartF6.cxx index 567424d7a..50e993e26 100644 --- a/src/emucore/CartF6.cxx +++ b/src/emucore/CartF6.cxx @@ -29,9 +29,9 @@ bool CartridgeF6::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary // Note: addresses could be calculated from hotspot and bank count - if((address >= 0x0FF6) && (address <= 0x0FF9)) + if((address >= 0x1FF6) && (address <= 0x1FF9)) { - bank(address - 0x0FF6); + bank(address - 0x1FF6); return true; } return false; diff --git a/src/emucore/CartF8.cxx b/src/emucore/CartF8.cxx index 79b4708c4..5d898091c 100644 --- a/src/emucore/CartF8.cxx +++ b/src/emucore/CartF8.cxx @@ -30,12 +30,12 @@ bool CartridgeF8::checkSwitchBank(uInt16 address, uInt8) // Switch banks if necessary switch(address) { - case 0x0FF8: + case 0x1FF8: // Set the current bank to the lower 4k bank bank(0); return true; - case 0x0FF9: + case 0x1FF9: // Set the current bank to the upper 4k bank bank(1); return true; diff --git a/src/emucore/CartFA.cxx b/src/emucore/CartFA.cxx index 3f1062f41..082e403f7 100644 --- a/src/emucore/CartFA.cxx +++ b/src/emucore/CartFA.cxx @@ -30,9 +30,9 @@ CartridgeFA::CartridgeFA(const ByteBuffer& image, size_t size, bool CartridgeFA::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary - if((address >= 0x0FF8) && (address <= 0x0FFA)) + if((address >= 0x1FF8) && (address <= 0x1FFA)) { - bank(address - 0x0FF8); + bank(address - 0x1FF8); return true; } return false; diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index 6662e8171..14c8f2156 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -42,9 +42,9 @@ CartridgeFA2::CartridgeFA2(const ByteBuffer& image, size_t size, bool CartridgeFA2::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary - if((address >= 0x0FF5) && (address <= 0x0FFB)) + if((address >= 0x1FF5) && (address <= 0x1FFB)) { - bank(address - 0x0FF5); + bank(address - 0x1FF5); return true; } return false; diff --git a/src/emucore/CartFC.cxx b/src/emucore/CartFC.cxx index 925718d50..c415ba1af 100644 --- a/src/emucore/CartFC.cxx +++ b/src/emucore/CartFC.cxx @@ -37,7 +37,7 @@ void CartridgeFC::reset() bool CartridgeFC::checkSwitchBank(uInt16 address, uInt8) { // Switch banks if necessary - if(address == 0x0FFC) + if(address == 0x1FFC) { // Trigger the bank switch bank(myTargetBank); From bfef7362c900f72b86809cb425c7f891a15883bf Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Apr 2020 18:59:07 +0200 Subject: [PATCH 34/69] refactored Cart3F, CartCV and CartBF(SC) widgets --- src/debugger/gui/Cart3FWidget.cxx | 79 ++------- src/debugger/gui/Cart3FWidget.hxx | 17 +- src/debugger/gui/CartBFSCWidget.cxx | 218 ++---------------------- src/debugger/gui/CartBFSCWidget.hxx | 33 +--- src/debugger/gui/CartBFWidget.cxx | 145 +--------------- src/debugger/gui/CartBFWidget.hxx | 15 +- src/debugger/gui/CartCVWidget.cxx | 85 +-------- src/debugger/gui/CartE0Widget.hxx | 1 + src/debugger/gui/CartEnhancedWidget.cxx | 17 +- src/debugger/gui/CartEnhancedWidget.hxx | 2 +- src/debugger/gui/CartF0Widget.hxx | 2 +- src/emucore/CartEnhanced.cxx | 3 - 12 files changed, 65 insertions(+), 552 deletions(-) diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index 13cd851bd..76f331502 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -16,80 +16,33 @@ //============================================================================ #include "Cart3F.hxx" -#include "PopUpWidget.hxx" #include "Cart3FWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3FWidget::Cartridge3FWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge3F& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) +{ + myHotspotDelta = 0; + initialize(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge3FWidget::description() { ostringstream info; size_t size; + const uInt8* image = myCart.getImage(size); - cart.getImage(size); - info << "Tigervision 3F cartridge, 2-256 2K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n" - << "First 2K bank selected by writing to $3F\n" - << "Last 2K always points to last 2K of ROM\n"; - + info << "Tigervision 3F cartridge, 2 - 256 2K banks\n" + << "First 2K bank selected by writing to " << hotspotStr() << "\n" + << "Last 2K always points to last 2K of ROM\n" + << "Startup bank = " << myCart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; + uInt16 start = (image[size-3] << 8) | image[size-4]; start -= start % 0x1000; - info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; + info << "Bank RORG $" << Common::Base::HEX4 << start << "\n"; - int xpos = 2, - ypos = addBaseInformation(size, "TigerVision", info.str()) + myLineHeight; - - VariantList items; - for(uInt16 i = 0; i < cart.romBankCount(); ++i) - VarList::push_back(items, Variant(i).toString() + " ($3F)"); - - ostringstream label; - label << "Set bank ($" << Common::Base::HEX4 << start << " - $" << - (start+0x7FF) << ") "; - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($3F) "), - myLineHeight, items, label.str(), - _font.getStringWidth(label.str()), kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3FWidget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(0), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3FWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge3FWidget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Bank = #" << std::dec << myCart.getSegmentBank() << ", hotspot = $3F"; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/Cart3FWidget.hxx b/src/debugger/gui/Cart3FWidget.hxx index 859184057..7e3ee65e9 100644 --- a/src/debugger/gui/Cart3FWidget.hxx +++ b/src/debugger/gui/Cart3FWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGE3F_WIDGET_HXX class Cartridge3F; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge3FWidget : public CartDebugWidget +class Cartridge3FWidget : public CartEnhancedWidget { public: Cartridge3FWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,13 @@ class Cartridge3FWidget : public CartDebugWidget virtual ~Cartridge3FWidget() = default; private: - Cartridge3F& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "TigerVision"; } - enum { kBankChanged = 'bkCH' }; + string description() override; + + int bankSegs() override { return 1; } private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported Cartridge3FWidget() = delete; Cartridge3FWidget(const Cartridge3FWidget&) = delete; diff --git a/src/debugger/gui/CartBFSCWidget.cxx b/src/debugger/gui/CartBFSCWidget.cxx index 819e72b39..00109d9e9 100644 --- a/src/debugger/gui/CartBFSCWidget.cxx +++ b/src/debugger/gui/CartBFSCWidget.cxx @@ -15,221 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartBFSC.hxx" -#include "PopUpWidget.hxx" #include "CartBFSCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeBFSCWidget::CartridgeBFSCWidget( - GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, - int x, int y, int w, int h, CartridgeBFSC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, + int x, int y, int w, int h, CartridgeBFSC& cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 64 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeBFSCWidget::description() +{ ostringstream info; - info << "256K BFSC + RAM, 64 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xF80; i < 64; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << (start + 0x100) - << " - " << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "256K BFSC + RAM, 64 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "CPUWIZ", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FF80)"); - VarList::push_back(items, " 1 ($FF81)"); - VarList::push_back(items, " 2 ($FF82)"); - VarList::push_back(items, " 3 ($FF83)"); - VarList::push_back(items, " 4 ($FF84)"); - VarList::push_back(items, " 5 ($FF85)"); - VarList::push_back(items, " 6 ($FF86)"); - VarList::push_back(items, " 7 ($FF87)"); - VarList::push_back(items, " 8 ($FF88)"); - VarList::push_back(items, " 9 ($FF89)"); - VarList::push_back(items, "10 ($FF8A)"); - VarList::push_back(items, "11 ($FF8B)"); - VarList::push_back(items, "12 ($FF8C)"); - VarList::push_back(items, "13 ($FF8D)"); - VarList::push_back(items, "14 ($FF8E)"); - VarList::push_back(items, "15 ($FF8F)"); - VarList::push_back(items, "16 ($FF90)"); - VarList::push_back(items, "17 ($FF91)"); - VarList::push_back(items, "18 ($FF92)"); - VarList::push_back(items, "19 ($FF93)"); - VarList::push_back(items, "20 ($FF94)"); - VarList::push_back(items, "21 ($FF95)"); - VarList::push_back(items, "22 ($FF96)"); - VarList::push_back(items, "23 ($FF97)"); - VarList::push_back(items, "24 ($FF98)"); - VarList::push_back(items, "25 ($FF99)"); - VarList::push_back(items, "26 ($FF9A)"); - VarList::push_back(items, "27 ($FF9B)"); - VarList::push_back(items, "28 ($FF9C)"); - VarList::push_back(items, "29 ($FF9D)"); - VarList::push_back(items, "30 ($FF9E)"); - VarList::push_back(items, "31 ($FF9F)"); - VarList::push_back(items, "32 ($FFA0)"); - VarList::push_back(items, "33 ($FFA1)"); - VarList::push_back(items, "34 ($FFA2)"); - VarList::push_back(items, "35 ($FFA3)"); - VarList::push_back(items, "36 ($FFA4)"); - VarList::push_back(items, "37 ($FFA5)"); - VarList::push_back(items, "38 ($FFA6)"); - VarList::push_back(items, "39 ($FFA7)"); - VarList::push_back(items, "40 ($FFA8)"); - VarList::push_back(items, "41 ($FFA9)"); - VarList::push_back(items, "42 ($FFAA)"); - VarList::push_back(items, "43 ($FFAB)"); - VarList::push_back(items, "44 ($FFAC)"); - VarList::push_back(items, "45 ($FFAD)"); - VarList::push_back(items, "46 ($FFAE)"); - VarList::push_back(items, "47 ($FFAF)"); - VarList::push_back(items, "48 ($FFB0)"); - VarList::push_back(items, "49 ($FFB1)"); - VarList::push_back(items, "50 ($FFB2)"); - VarList::push_back(items, "51 ($FFB3)"); - VarList::push_back(items, "52 ($FFB4)"); - VarList::push_back(items, "53 ($FFB5)"); - VarList::push_back(items, "54 ($FFB6)"); - VarList::push_back(items, "55 ($FFB7)"); - VarList::push_back(items, "56 ($FFB8)"); - VarList::push_back(items, "57 ($FFB9)"); - VarList::push_back(items, "58 ($FFBA)"); - VarList::push_back(items, "59 ($FFBB)"); - VarList::push_back(items, "60 ($FFBC)"); - VarList::push_back(items, "61 ($FFBD)"); - VarList::push_back(items, "62 ($FFBE)"); - VarList::push_back(items, "63 ($FFBF)"); - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("63 ($FFBF)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeBFSCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FF80", "$FF81", "$FF82", "$FF83", "$FF84", "$FF85", "$FF86", "$FF87", - "$FF88", "$FF89", "$FF8A", "$FF8B", "$FF8C", "$FF8D", "$FF8E", "$FF8F", - "$FF90", "$FF91", "$FF92", "$FF93", "$FF94", "$FF95", "$FF96", "$FF97", - "$FF98", "$FF99", "$FF9A", "$FF9B", "$FF9C", "$FF9D", "$FF9E", "$FF9F", - "$FFA0", "$FFA1", "$FFA2", "$FFA3", "$FFA4", "$FFA5", "$FFA6", "$FFA7", - "$FFA8", "$FFA9", "$FFAA", "$FFAB", "$FFAC", "$FFAD", "$FFAE", "$FFAF", - "$FFB0", "$FFB1", "$FFB2", "$FFB3", "$FFB4", "$FFB5", "$FFB6", "$FFB7", - "$FFB8", "$FFB9", "$FFBA", "$FFBB", "$FFBC", "$FFBD", "$FFBE", "$FFBF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeBFSCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeBFSCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeBFSCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeBFSCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeBFSCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFSCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeBFSCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeBFSCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartBFSCWidget.hxx b/src/debugger/gui/CartBFSCWidget.hxx index 3068672f0..5e394eae5 100644 --- a/src/debugger/gui/CartBFSCWidget.hxx +++ b/src/debugger/gui/CartBFSCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEBFSC_WIDGET_HXX class CartridgeBFSC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeBFSCWidget : public CartDebugWidget +class CartridgeBFSCWidget : public CartEnhancedWidget { public: CartridgeBFSCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,11 @@ class CartridgeBFSCWidget : public CartDebugWidget virtual ~CartridgeBFSCWidget() = default; private: - CartridgeBFSC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "CPUWIZ"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeBFSCWidget() = delete; CartridgeBFSCWidget(const CartridgeBFSCWidget&) = delete; diff --git a/src/debugger/gui/CartBFWidget.cxx b/src/debugger/gui/CartBFWidget.cxx index 96ddc5662..001f50658 100644 --- a/src/debugger/gui/CartBFWidget.cxx +++ b/src/debugger/gui/CartBFWidget.cxx @@ -16,151 +16,24 @@ //============================================================================ #include "CartBF.hxx" -#include "PopUpWidget.hxx" #include "CartBFWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeBFWidget::CartridgeBFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeBF& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 64 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeBFWidget::description() +{ ostringstream info; - info << "BF cartridge, 64 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xF80; i < 64; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "256K BF cartridge, 64 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "CPUWIZ", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FF80)"); - VarList::push_back(items, " 1 ($FF81)"); - VarList::push_back(items, " 2 ($FF82)"); - VarList::push_back(items, " 3 ($FF83)"); - VarList::push_back(items, " 4 ($FF84)"); - VarList::push_back(items, " 5 ($FF85)"); - VarList::push_back(items, " 6 ($FF86)"); - VarList::push_back(items, " 7 ($FF87)"); - VarList::push_back(items, " 8 ($FF88)"); - VarList::push_back(items, " 9 ($FF89)"); - VarList::push_back(items, "10 ($FF8A)"); - VarList::push_back(items, "11 ($FF8B)"); - VarList::push_back(items, "12 ($FF8C)"); - VarList::push_back(items, "13 ($FF8D)"); - VarList::push_back(items, "14 ($FF8E)"); - VarList::push_back(items, "15 ($FF8F)"); - VarList::push_back(items, "16 ($FF90)"); - VarList::push_back(items, "17 ($FF91)"); - VarList::push_back(items, "18 ($FF92)"); - VarList::push_back(items, "19 ($FF93)"); - VarList::push_back(items, "20 ($FF94)"); - VarList::push_back(items, "21 ($FF95)"); - VarList::push_back(items, "22 ($FF96)"); - VarList::push_back(items, "23 ($FF97)"); - VarList::push_back(items, "24 ($FF98)"); - VarList::push_back(items, "25 ($FF99)"); - VarList::push_back(items, "26 ($FF9A)"); - VarList::push_back(items, "27 ($FF9B)"); - VarList::push_back(items, "28 ($FF9C)"); - VarList::push_back(items, "29 ($FF9D)"); - VarList::push_back(items, "30 ($FF9E)"); - VarList::push_back(items, "31 ($FF9F)"); - VarList::push_back(items, "32 ($FFA0)"); - VarList::push_back(items, "33 ($FFA1)"); - VarList::push_back(items, "34 ($FFA2)"); - VarList::push_back(items, "35 ($FFA3)"); - VarList::push_back(items, "36 ($FFA4)"); - VarList::push_back(items, "37 ($FFA5)"); - VarList::push_back(items, "38 ($FFA6)"); - VarList::push_back(items, "39 ($FFA7)"); - VarList::push_back(items, "40 ($FFA8)"); - VarList::push_back(items, "41 ($FFA9)"); - VarList::push_back(items, "42 ($FFAA)"); - VarList::push_back(items, "43 ($FFAB)"); - VarList::push_back(items, "44 ($FFAC)"); - VarList::push_back(items, "45 ($FFAD)"); - VarList::push_back(items, "46 ($FFAE)"); - VarList::push_back(items, "47 ($FFAF)"); - VarList::push_back(items, "48 ($FFB0)"); - VarList::push_back(items, "49 ($FFB1)"); - VarList::push_back(items, "50 ($FFB2)"); - VarList::push_back(items, "51 ($FFB3)"); - VarList::push_back(items, "52 ($FFB4)"); - VarList::push_back(items, "53 ($FFB5)"); - VarList::push_back(items, "54 ($FFB6)"); - VarList::push_back(items, "55 ($FFB7)"); - VarList::push_back(items, "56 ($FFB8)"); - VarList::push_back(items, "57 ($FFB9)"); - VarList::push_back(items, "58 ($FFBA)"); - VarList::push_back(items, "59 ($FFBB)"); - VarList::push_back(items, "60 ($FFBC)"); - VarList::push_back(items, "61 ($FFBD)"); - VarList::push_back(items, "62 ($FFBE)"); - VarList::push_back(items, "63 ($FFBF)"); - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("64 ($FFBF)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFWidget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeBFWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeBFWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FF80", "$FF81", "$FF82", "$FF83", "$FF84", "$FF85", "$FF86", "$FF87", - "$FF88", "$FF89", "$FF8A", "$FF8B", "$FF8C", "$FF8D", "$FF8E", "$FF8F", - "$FF90", "$FF91", "$FF92", "$FF93", "$FF94", "$FF95", "$FF96", "$FF97", - "$FF98", "$FF99", "$FF9A", "$FF9B", "$FF9C", "$FF9D", "$FF9E", "$FF9F", - "$FFA0", "$FFA1", "$FFA2", "$FFA3", "$FFA4", "$FFA5", "$FFA6", "$FFA7", - "$FFA8", "$FFA9", "$FFAA", "$FFAB", "$FFAC", "$FFAD", "$FFAE", "$FFAF", - "$FFB0", "$FFB1", "$FFB2", "$FFB3", "$FFB4", "$FFB5", "$FFB6", "$FFB7", - "$FFB8", "$FFB9", "$FFBA", "$FFBB", "$FFBC", "$FFBD", "$FFBE", "$FFBF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartBFWidget.hxx b/src/debugger/gui/CartBFWidget.hxx index d084dbbc3..6c8d37257 100644 --- a/src/debugger/gui/CartBFWidget.hxx +++ b/src/debugger/gui/CartBFWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEBF_WIDGET_HXX class CartridgeBF; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeBFWidget : public CartDebugWidget +class CartridgeBFWidget : public CartEnhancedWidget { public: CartridgeBFWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeBFWidget : public CartDebugWidget virtual ~CartridgeBFWidget() = default; private: - CartridgeBF& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "CPUWIZ"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeBFWidget() = delete; CartridgeBFWidget(const CartridgeBFWidget&) = delete; diff --git a/src/debugger/gui/CartCVWidget.cxx b/src/debugger/gui/CartCVWidget.cxx index 167ff7122..1517cc843 100644 --- a/src/debugger/gui/CartCVWidget.cxx +++ b/src/debugger/gui/CartCVWidget.cxx @@ -27,20 +27,6 @@ CartridgeCVWidget::CartridgeCVWidget( : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); - - //// Eventually, we should query this from the debugger/disassembler - //uInt16 size = 2048; - //uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - //start -= start % size; - - //ostringstream info; - //info << "CV 2K ROM + 1K RAM , non-bankswitched\n" - // << "1024 bytes RAM @ $F000 - $F7FF\n" - // << " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" - // << "ROM accessible @ $" << Common::Base::HEX4 << start << " - " - // << "$" << (start + size - 1); - - //addBaseInformation(cart.mySize, "CommaVid", info.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -48,77 +34,8 @@ string CartridgeCVWidget::description() { ostringstream info; - info << "CV 2K ROM + 1K RAM , non-bankswitched\n"; + info << "CV 2K ROM + 1K RAM, non-bankswitched\n"; info << CartEnhancedWidget::description(); return info.str(); } - - -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//void CartridgeCVWidget::saveOldState() -//{ -// myOldState.internalram.clear(); -// -// for(uInt32 i = 0; i < internalRamSize(); ++i) -// myOldState.internalram.push_back(myCart.myRAM[i]); -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//uInt32 CartridgeCVWidget::internalRamSize() -//{ -// return 1024; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//uInt32 CartridgeCVWidget::internalRamRPort(int start) -//{ -// return 0xF000 + start; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//string CartridgeCVWidget::internalRamDescription() -//{ -// ostringstream desc; -// desc << "$F000 - $F3FF used for Read Access\n" -// << "$F400 - $F7FF used for Write Access"; -// -// return desc.str(); -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//const ByteArray& CartridgeCVWidget::internalRamOld(int start, int count) -//{ -// myRamOld.clear(); -// for(int i = 0; i < count; i++) -// myRamOld.push_back(myOldState.internalram[start + i]); -// return myRamOld; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//const ByteArray& CartridgeCVWidget::internalRamCurrent(int start, int count) -//{ -// myRamCurrent.clear(); -// for(int i = 0; i < count; i++) -// myRamCurrent.push_back(myCart.myRAM[start + i]); -// return myRamCurrent; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//void CartridgeCVWidget::internalRamSetValue(int addr, uInt8 value) -//{ -// myCart.myRAM[addr] = value; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//uInt8 CartridgeCVWidget::internalRamGetValue(int addr) -//{ -// return myCart.myRAM[addr]; -//} -// -//// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//string CartridgeCVWidget::internalRamLabel(int addr) -//{ -// CartDebug& dbg = instance().debugger().cartDebug(); -// return dbg.getLabel(addr + 0xF000, false); -//} diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index fe3e9d374..0bc5694ea 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -41,6 +41,7 @@ class CartridgeE0Widget : public CartEnhancedWidget string hotspotStr(int bank, int segment) override; int bankSegs() override { return 3; } + private: // Following constructors and assignment operators not supported CartridgeE0Widget() = delete; diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index 39732fc80..d38c5534c 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -92,25 +92,30 @@ string CartEnhancedWidget::romDescription() if(myCart.romBankCount() > 1) { - info << "Startup bank = #" << myCart.startBank() << " or undetermined\n"; for(int bank = 0, offset = 0xFFC; bank < myCart.romBankCount(); ++bank, offset += 0x1000) { uInt16 start = (image[offset + 1] << 8) | image[offset]; start -= start % 0x1000; - info << "Bank #" << bank << " @ $" + info << "Bank #" << std::dec << bank << " @ $" << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - $" << (start + 0xFFF) << " (hotspot " << hotspotStr(bank) << ")\n"; } + info << "Startup bank = #" << std::dec << myCart.startBank() << " or undetermined\n"; } else { uInt16 start = (image[myCart.mySize - 3] << 8) | image[myCart.mySize - 4]; - start -= start % std::min(int(size), 0x1000); + start -= start % std::min(int(size), 0x1000); + // special check for ROMs where the extra RAM is not included in the image (e.g. CV). + if((start & 0xFFF) < size) + { + start += myCart.myRomOffset; + } info << "ROM accessible @ $" - << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - " - << "$" << Common::Base::HEX4 << (start + myCart.mySize - 1); + << Common::Base::HEX4 << start << " - $" + << Common::Base::HEX4 << (start + myCart.mySize - 1); } return info.str(); @@ -201,7 +206,7 @@ string CartEnhancedWidget::bankState() { buf << "Bank #" << std::dec << myCart.getBank(); - if(hotspot >= 0x100) + //if(hotspot >= 0x100) buf << " (hotspot " << hotspotStr(myCart.getSegmentBank()) << ")"; } return buf.str(); diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index 3bff6350a..dccc9fde0 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -53,7 +53,7 @@ class CartEnhancedWidget : public CartDebugWidget virtual void bankSelect(int& ypos); - virtual string hotspotStr(int bank, int segment = 0); + virtual string hotspotStr(int bank = 0, int segment = 0); virtual int bankSegs(); // { return myCart.myBankSegs; } diff --git a/src/debugger/gui/CartF0Widget.hxx b/src/debugger/gui/CartF0Widget.hxx index b7aa701bc..9ba5aa3ab 100644 --- a/src/debugger/gui/CartF0Widget.hxx +++ b/src/debugger/gui/CartF0Widget.hxx @@ -38,7 +38,7 @@ class CartridgeF0Widget : public CartEnhancedWidget string bankState() override; -private: + private: // Following constructors and assignment operators not supported CartridgeF0Widget() = delete; CartridgeF0Widget(const CartridgeF0Widget&) = delete; diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index ea167b1d5..3e69a06f8 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -146,9 +146,6 @@ uInt8 CartridgeEnhanced::peek(uInt16 address) bool CartridgeEnhanced::poke(uInt16 address, uInt8 value) { // Switch banks if necessary - // Note: (TODO?) - // The checkSwitchBank() call makes no difference between ROM and e.g TIA space - // Writing to e.g. 0xf0xx might triger a bankswitch, is (and was!) this a bug??? if (checkSwitchBank(address & ADDR_MASK, value)) return false; From ddece5ed43376494c8ca3d3e5d0ba150ff15dcca Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Apr 2020 23:08:25 +0200 Subject: [PATCH 35/69] added 'Turbo" mode --- Changes.txt | 2 ++ docs/index.html | 51 ++++++++++++++++++++------------- src/common/FrameBufferSDL2.cxx | 3 +- src/common/PKeyboardHandler.cxx | 1 + src/emucore/Console.cxx | 22 +++++++++++++- src/emucore/Console.hxx | 5 ++++ src/emucore/Event.hxx | 1 + src/emucore/EventHandler.cxx | 6 ++++ src/emucore/EventHandler.hxx | 2 +- src/emucore/FrameBuffer.cxx | 5 +++- src/emucore/Settings.cxx | 2 ++ 11 files changed, 76 insertions(+), 24 deletions(-) diff --git a/Changes.txt b/Changes.txt index e7faac008..61989ecd9 100644 --- a/Changes.txt +++ b/Changes.txt @@ -22,6 +22,8 @@ a game. This allows the user to save high scores for these games. For each game and variation, the top 10 scores can be saved. (TODO: Doc) + * Added 'Turbo' mode, runs the game as fast as the computer allows. + * Added option which lets default ROM path follow launcher navigation (TODO: Doc) * Added displaying last write address in the debugger. diff --git a/docs/index.html b/docs/index.html index 18aa916dc..c7185ebe1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1626,6 +1626,12 @@ + + + + + + @@ -2004,6 +2010,11 @@ + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx index d7b9ecb17..bce5c2e7c 100644 --- a/src/common/FrameBufferSDL2.cxx +++ b/src/common/FrameBufferSDL2.cxx @@ -320,7 +320,8 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) } uInt32 renderFlags = SDL_RENDERER_ACCELERATED; - if(myOSystem.settings().getBool("vsync")) // V'synced blits option + if(myOSystem.settings().getBool("vsync") + && !myOSystem.settings().getBool("turbo")) // V'synced blits option renderFlags |= SDL_RENDERER_PRESENTVSYNC; const string& video = myOSystem.settings().getString("video"); // Render hint if(video != "") diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index 76d48dd1a..bc2c545ca 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -468,6 +468,7 @@ PhysicalKeyboardHandler::EventMappingArray PhysicalKeyboardHandler::DefaultCommo {Event::ToggleColorLoss, KBDK_L, KBDM_CTRL}, {Event::TogglePalette, KBDK_P, KBDM_CTRL}, {Event::ToggleInter, KBDK_I, KBDM_CTRL}, + {Event::ToggleTurbo, KBDK_T, KBDM_CTRL}, {Event::ToggleJitter, KBDK_J, MOD3}, {Event::ToggleFrameStats, KBDK_L, MOD3}, {Event::ToggleTimeMachine, KBDK_T, MOD3}, diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 518030966..fc5c1e9be 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -563,6 +563,24 @@ void Console::toggleInter() myOSystem.frameBuffer().showMessage(ss.str()); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Console::toggleTurbo() +{ + bool enabled = myOSystem.settings().getBool("turbo"); + + myOSystem.settings().setValue("turbo", !enabled); + + // update speed + initializeAudio(); + + // update VSync + myOSystem.createFrameBuffer(); + + ostringstream ss; + ss << "Turbo mode " << (!enabled ? "enabled" : "disabled"); + myOSystem.frameBuffer().showMessage(ss.str()); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::togglePhosphor() { @@ -657,7 +675,9 @@ void Console::initializeAudio() .updatePlaybackPeriod(myAudioSettings.fragmentSize()) .updateAudioQueueExtraFragments(myAudioSettings.bufferSize()) .updateAudioQueueHeadroom(myAudioSettings.headroom()) - .updateSpeedFactor(myOSystem.settings().getFloat("speed")); + .updateSpeedFactor(myOSystem.settings().getBool("turbo") + ? 20.0F + : myOSystem.settings().getFloat("speed")); createAudioQueue(); myTIA->setAudioQueue(myAudioQueue); diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index eb85025a6..33c3b117c 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -221,6 +221,11 @@ class Console : public Serializable, public ConsoleIO */ void toggleInter(); + /** + Toggle turbo mode on/off + */ + void toggleTurbo(); + /** Toggles phosphor effect. diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index b82bb7f50..c45fc1e0a 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -120,6 +120,7 @@ class Event ToggleFrameStats, ToggleSAPortOrder, ExitGame, // add new events from here to avoid that user remapped events get overwritten + ToggleTurbo, LastType }; diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 4433ed244..1a11c604b 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -539,6 +539,10 @@ void EventHandler::handleEvent(Event::Type event, Int32 value, bool repeated) if (pressed && !repeated) myOSystem.console().toggleInter(); return; + case Event::ToggleTurbo: + if (pressed && !repeated) myOSystem.console().toggleTurbo(); + return; + case Event::ToggleJitter: if (pressed && !repeated) myOSystem.console().toggleJitter(); return; @@ -1815,6 +1819,7 @@ EventHandler::EmulActionList EventHandler::ourEmulActionList = { { { Event::TogglePauseMode, "Toggle Pause mode", "" }, { Event::StartPauseMode, "Start Pause mode", "" }, { Event::Fry, "Fry cartridge", "" }, + { Event::ToggleTurbo, "Toggle Turbo mode", "" }, { Event::DebuggerMode, "Toggle Debugger mode", "" }, { Event::ConsoleSelect, "Select", "" }, @@ -2023,6 +2028,7 @@ EventHandler::MenuActionList EventHandler::ourMenuActionList = { { const Event::EventSet EventHandler::MiscEvents = { Event::Quit, Event::ReloadConsole, Event::Fry, Event::StartPauseMode, Event::TogglePauseMode, Event::OptionsMenuMode, Event::CmdMenuMode, Event::ExitMode, + Event::ToggleTurbo, Event::TakeSnapshot, Event::ToggleContSnapshots, Event::ToggleContSnapshotsFrame, // Event::MouseAxisXMove, Event::MouseAxisYMove, // Event::MouseButtonLeftValue, Event::MouseButtonRightValue, diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index 7fa56d17d..8148fa085 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -468,7 +468,7 @@ class EventHandler #else PNG_SIZE = 0, #endif - EMUL_ACTIONLIST_SIZE = 144 + PNG_SIZE + COMBO_SIZE, + EMUL_ACTIONLIST_SIZE = 145 + PNG_SIZE + COMBO_SIZE, MENU_ACTIONLIST_SIZE = 18 ; diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 68b6e8caa..3c64c5d8f 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -502,7 +502,10 @@ void FrameBuffer::drawFrameStats(float framesPerSecond) ss << std::fixed << std::setprecision(1) << framesPerSecond << "fps @ " - << std::fixed << std::setprecision(0) << 100 * myOSystem.settings().getFloat("speed") + << std::fixed << std::setprecision(0) << 100 * + (myOSystem.settings().getBool("turbo") + ? 20.0F + : myOSystem.settings().getFloat("speed")) << "% speed"; myStatsMsg.surface->drawString(f, ss.str(), xPos, yPos, diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index c3feece37..50e45cd06 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -157,6 +157,7 @@ Settings::Settings() setPermanent("threads", "false"); setTemporary("romloadcount", "0"); setTemporary("maxres", ""); + setTemporary("turbo", "0"); #ifdef DEBUGGER_SUPPORT // Debugger/disassembly options @@ -400,6 +401,7 @@ void Settings::usage() const << " z26|\n" << " user>\n" << " -speed Run emulation at the given speed\n" + << " -turbo <1|0> Enable 'Turbo' mode for maximum emulation speed\n" << " -uimessages <1|0> Show onscreen UI messages for different events\n" << endl #ifdef SOUND_SUPPORT From 8dd491ade9bf1e66c556d38d53e8414603631734 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Apr 2020 23:21:08 +0200 Subject: [PATCH 36/69] some cleanup in CartCVWidget --- src/debugger/gui/CartCVWidget.hxx | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/debugger/gui/CartCVWidget.hxx b/src/debugger/gui/CartCVWidget.hxx index 73452204c..dd8e971ab 100644 --- a/src/debugger/gui/CartCVWidget.hxx +++ b/src/debugger/gui/CartCVWidget.hxx @@ -31,35 +31,11 @@ class CartridgeCVWidget : public CartEnhancedWidget CartridgeCV& cart); virtual ~CartridgeCVWidget() = default; - private: - //CartridgeCV& myCart; - //struct CartState { - // ByteArray internalram; - //}; - //CartState myOldState; - private: string manufacturer() override { return "CommaVid"; } string description() override; - //// No implementation for non-bankswitched ROMs - //void loadConfig() override { } - //void handleCommand(CommandSender* sender, int cmd, int data, int id) override { } - - //void saveOldState() override; - - //// start of functions for Cartridge RAM tab - //uInt32 internalRamSize() override; - //uInt32 internalRamRPort(int start) override; - //string internalRamDescription() override; - //const ByteArray& internalRamOld(int start, int count) override; - //const ByteArray& internalRamCurrent(int start, int count) override; - //void internalRamSetValue(int addr, uInt8 value) override; - //uInt8 internalRamGetValue(int addr) override; - //string internalRamLabel(int addr) override; - //// end of functions for Cartridge RAM tab - private: // Following constructors and assignment operators not supported CartridgeCVWidget() = delete; From c113df86daa495ff48898653e06faa87825983c8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Apr 2020 10:44:48 +0200 Subject: [PATCH 37/69] add large test ROMs for 3F and 3E bank switching --- .../3E/256K RAM/badapple6-30-14.bin | Bin 0 -> 524288 bytes test/roms/bankswitching/3E/BadApple1_0.bin | Bin 0 -> 491520 bytes test/roms/bankswitching/3F/badapple6-25-14.bin | Bin 0 -> 524288 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/roms/bankswitching/3E/256K RAM/badapple6-30-14.bin create mode 100644 test/roms/bankswitching/3E/BadApple1_0.bin create mode 100644 test/roms/bankswitching/3F/badapple6-25-14.bin diff --git a/test/roms/bankswitching/3E/256K RAM/badapple6-30-14.bin b/test/roms/bankswitching/3E/256K RAM/badapple6-30-14.bin new file mode 100644 index 0000000000000000000000000000000000000000..f5b39e8690d344aec6018cf9264ad26349ab0ea9 GIT binary patch literal 524288 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 z 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

V!uYRsZ4CHz#6`A`q*W*an+U$5a|9F5 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≪XU}^mzXz26Jqq|CKOV6E-=jcWD8C1!{T_uR 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%0AnWdRy{cZn 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

&RD`=!tv>f>Ad;!Z|$Ji{HgT!F5e_Pta(_v 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%0AT=vjoH11%4yTRwO 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 z zAY&j z`Y?`PO9lBwtv3BlO15{wDqCN&@Cr8|$F&yPavi{lJglMsTb#@D`v5 zz#jng0Y8Ox)DQv30CvD+wMjoX4#PPNlFzP23XuHy12_7BPk+wuV^w2}Zs&8|*%gS- zt|s}QVXLrs{y@KVbz^On?O~1|Yv6eeAjS^93%dd$aLxH#(R^if!BD zKi7p_O!7Hgjy2jB_^sTC`AT2|AF(kX)q&iCYI8o9#V!DTF>p!1mfZKX4_{8e{7y~~ zz!+hGRRJ;jcIUHvaRkigx-X~9x6U`%wnKXc^9^+vz*?BqpUYtcvG=1IuzYa@YYz88 zJLdNT+Yj@%Mc^1lF_8+NWdqy5H*Uq6Ki7q@n(v?Q$9zx=HZ>0ZJz0SO&ktHY zXkqW?RM`K^#vqSGa*138+yt&@jbeqte-uQB1h@fEJkLc(+m=NaRsco_D}-eW zp=%&G`inO$VfCzO^%c|VtESc0OsnT$_3A}g+SRkx@b}gQ^@Xdi;N`1$ zc{cES{Q4SRoZCcR|JNt$eJk|FzkQY8EHBv+Ot%P5ln2P9-(Rm#%g z!jx=BpDQt;p8z!9s-=YP8Uxg%&L~?pL)Zn?N?FzwCt21X<^Ngy=O6w` U{ZR@~3Q!9Ck1Ig?f%e0H0YPbCF#rGn literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/3E/BadApple1_0.bin b/test/roms/bankswitching/3E/BadApple1_0.bin new file mode 100644 index 0000000000000000000000000000000000000000..65f0f90d50806e1c88c21166e95f36a6868b116c GIT binary patch literal 491520 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 lCUy`%>2WL`Q>P!!hvl4XPg=%+?Oz^^WNCEss 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%0D4G=#78T;n@O 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 z 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 N{Quzq^`F##{(n(N+FAer literal 0 HcmV?d00001 From 9981b256c7cfff71b66b43627a02996386d6deda Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Apr 2020 12:45:05 +0200 Subject: [PATCH 38/69] sort single file ZIP files correctly (fixes #612) --- src/emucore/FSNode.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/emucore/FSNode.cxx b/src/emucore/FSNode.cxx index 6965839ef..64af7212e 100644 --- a/src/emucore/FSNode.cxx +++ b/src/emucore/FSNode.cxx @@ -58,6 +58,20 @@ bool FilesystemNode::getChildren(FSList& fslist, ListMode mode, if (!_realNode->getChildren(tmp, mode)) return false; + #if defined(ZIP_SUPPORT) + // before sorting, replace single file ZIP archive names with contained file names + // because they are displayed using their contained file names + for (auto& i : tmp) + { + if (BSPF::endsWithIgnoreCase(i->getPath(), ".zip")) + { + FilesystemNodeZIP node(i->getPath()); + + i->setName(node.getName()); + } + } + #endif + std::sort(tmp.begin(), tmp.end(), [](const AbstractFSNodePtr& node1, const AbstractFSNodePtr& node2) { From abeac8877e950d47fa83e671516df34000cb846e Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Apr 2020 20:46:28 +0200 Subject: [PATCH 39/69] Improved 3E auto detection --- src/emucore/CartDetector.cxx | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 4d7a583eb..b40e75c49 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -620,11 +620,16 @@ bool CartDetector::isProbably0840(const ByteBuffer& image, size_t size) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbably3E(const ByteBuffer& image, size_t size) { - // 3E cart bankswitching is triggered by storing the bank number - // in address 3E using 'STA $3E', commonly followed by an - // immediate mode LDA - uInt8 signature[] = { 0x85, 0x3E, 0xA9, 0x00 }; // STA $3E; LDA #$00 - return searchForBytes(image.get(), size, signature, 4, 1); + // 3E cart RAM bankswitching is triggered by storing the bank number + // in address 3E using 'STA $3E', ROM bankswitching is triggered by + // storing the bank number in address 3F using 'STA $3F'. + // We expect the latter will be present at least 2 times, since there + // are at least two banks + + uInt8 signature1[] = { 0x85, 0x3E }; // STA $3E + uInt8 signature2[] = { 0x85, 0x3F }; // STA $3F + return searchForBytes(image.get(), size, signature1, 2, 1) + && searchForBytes(image.get(), size, signature2, 2, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From faaf83b4abec8be04f5662ab2f8a7b39f727b8a1 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Apr 2020 21:06:16 +0200 Subject: [PATCH 40/69] refactored CartDF(SC)Widget and CartEF(SC)Widget classes --- src/debugger/gui/CartDFSCWidget.cxx | 178 ++-------------------------- src/debugger/gui/CartDFSCWidget.hxx | 33 +----- src/debugger/gui/CartDFWidget.cxx | 109 ++--------------- src/debugger/gui/CartDFWidget.hxx | 15 +-- src/debugger/gui/CartEFSCWidget.cxx | 160 ++----------------------- src/debugger/gui/CartEFSCWidget.hxx | 33 +----- src/debugger/gui/CartEFWidget.cxx | 91 ++------------ src/debugger/gui/CartEFWidget.hxx | 15 +-- 8 files changed, 52 insertions(+), 582 deletions(-) diff --git a/src/debugger/gui/CartDFSCWidget.cxx b/src/debugger/gui/CartDFSCWidget.cxx index e03fbf1c6..0744ca182 100644 --- a/src/debugger/gui/CartDFSCWidget.cxx +++ b/src/debugger/gui/CartDFSCWidget.cxx @@ -15,185 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartDFSC.hxx" -#include "PopUpWidget.hxx" #include "CartDFSCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDFSCWidget::CartridgeDFSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeDFSC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 32 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeDFSCWidget::description() +{ ostringstream info; - info << "128K DFSC + RAM, 32 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFC0; i < 32; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << (start + 0x100) - << " - " << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "128K DFSC + RAM, 32 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "CPUWIZ", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FFC0)"); - VarList::push_back(items, " 1 ($FFC1)"); - VarList::push_back(items, " 2 ($FFC2)"); - VarList::push_back(items, " 3 ($FFC3)"); - VarList::push_back(items, " 4 ($FFC4)"); - VarList::push_back(items, " 5 ($FFC5)"); - VarList::push_back(items, " 6 ($FFC6)"); - VarList::push_back(items, " 7 ($FFC7)"); - VarList::push_back(items, " 8 ($FFC8)"); - VarList::push_back(items, " 9 ($FFC9)"); - VarList::push_back(items, "10 ($FFCA)"); - VarList::push_back(items, "11 ($FFCB)"); - VarList::push_back(items, "12 ($FFCC)"); - VarList::push_back(items, "13 ($FFCD)"); - VarList::push_back(items, "14 ($FFCE)"); - VarList::push_back(items, "15 ($FFCF)"); - VarList::push_back(items, "16 ($FFD0)"); - VarList::push_back(items, "17 ($FFD1)"); - VarList::push_back(items, "18 ($FFD2)"); - VarList::push_back(items, "19 ($FFD3)"); - VarList::push_back(items, "20 ($FFD4)"); - VarList::push_back(items, "21 ($FFD5)"); - VarList::push_back(items, "22 ($FFD6)"); - VarList::push_back(items, "23 ($FFD7)"); - VarList::push_back(items, "24 ($FFD8)"); - VarList::push_back(items, "25 ($FFD9)"); - VarList::push_back(items, "26 ($FFDA)"); - VarList::push_back(items, "27 ($FFDB)"); - VarList::push_back(items, "28 ($FFDC)"); - VarList::push_back(items, "29 ($FFDD)"); - VarList::push_back(items, "30 ($FFDE)"); - VarList::push_back(items, "31 ($FFDF)"); - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("31 ($FFE0)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDFSCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFC0", "$FFC1", "$FFC2", "$FFC3", "$FFC4", "$FFC5", "$FFC6", "$FFC7", - "$FFC8", "$FFC9", "$FFCA", "$FFCB", "$FFCC", "$FFCD", "$FFCE", "$FFCF", - "$FFD0", "$FFD1", "$FFD2", "$FFD3", "$FFD4", "$FFD5", "$FFD6", "$FFE7", - "$FFD8", "$FFD9", "$FFDA", "$FFDB", "$FFDC", "$FFDD", "$FFDE", "$FFDF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeDFSCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeDFSCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDFSCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeDFSCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeDFSCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFSCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeDFSCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDFSCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartDFSCWidget.hxx b/src/debugger/gui/CartDFSCWidget.hxx index 4d4a07feb..7aff641ee 100644 --- a/src/debugger/gui/CartDFSCWidget.hxx +++ b/src/debugger/gui/CartDFSCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEDFSC_WIDGET_HXX class CartridgeDFSC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeDFSCWidget : public CartDebugWidget +class CartridgeDFSCWidget : public CartEnhancedWidget { public: CartridgeDFSCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,11 @@ class CartridgeDFSCWidget : public CartDebugWidget virtual ~CartridgeDFSCWidget() = default; private: - CartridgeDFSC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "CPUWIZ"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeDFSCWidget() = delete; CartridgeDFSCWidget(const CartridgeDFSCWidget&) = delete; diff --git a/src/debugger/gui/CartDFWidget.cxx b/src/debugger/gui/CartDFWidget.cxx index c8fde5fff..cdb6d4f1b 100644 --- a/src/debugger/gui/CartDFWidget.cxx +++ b/src/debugger/gui/CartDFWidget.cxx @@ -16,115 +16,24 @@ //============================================================================ #include "CartDF.hxx" -#include "PopUpWidget.hxx" #include "CartDFWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDFWidget::CartridgeDFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeDF& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 32 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeDFWidget::description() +{ ostringstream info; - info << "EF 2 cartridge, 32 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFD0; i < 32; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "128K DF, 32 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "CPUWIZ", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FFC0)"); - VarList::push_back(items, " 1 ($FFC1)"); - VarList::push_back(items, " 2 ($FFC2)"); - VarList::push_back(items, " 3 ($FFC3)"); - VarList::push_back(items, " 4 ($FFC4)"); - VarList::push_back(items, " 5 ($FFC5)"); - VarList::push_back(items, " 6 ($FFC6)"); - VarList::push_back(items, " 7 ($FFC7)"); - VarList::push_back(items, " 8 ($FFC8)"); - VarList::push_back(items, " 9 ($FFC9)"); - VarList::push_back(items, "10 ($FFCA)"); - VarList::push_back(items, "11 ($FFCB)"); - VarList::push_back(items, "12 ($FFCC)"); - VarList::push_back(items, "13 ($FFCD)"); - VarList::push_back(items, "14 ($FFCE)"); - VarList::push_back(items, "15 ($FFCF)"); - VarList::push_back(items, "16 ($FFD0)"); - VarList::push_back(items, "17 ($FFD1)"); - VarList::push_back(items, "18 ($FFD2)"); - VarList::push_back(items, "19 ($FFD3)"); - VarList::push_back(items, "20 ($FFD4)"); - VarList::push_back(items, "21 ($FFD5)"); - VarList::push_back(items, "22 ($FFD6)"); - VarList::push_back(items, "23 ($FFD7)"); - VarList::push_back(items, "24 ($FFD8)"); - VarList::push_back(items, "25 ($FFD9)"); - VarList::push_back(items, "26 ($FFDA)"); - VarList::push_back(items, "27 ($FFDB)"); - VarList::push_back(items, "28 ($FFDC)"); - VarList::push_back(items, "29 ($FFDD)"); - VarList::push_back(items, "30 ($FFDE)"); - VarList::push_back(items, "31 ($FFDF)"); - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("31 ($FFDF)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFWidget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeDFWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeDFWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFC0", "$FFC1", "$FFC2", "$FFC3", "$FFC4", "$FFC5", "$FFC6", "$FFC7", - "$FFC8", "$FFC9", "$FFCA", "$FFCB", "$FFCC", "$FFCD", "$FFCE", "$FFCF", - "$FFD0", "$FFD1", "$FFD2", "$FFD3", "$FFD4", "$FFD5", "$FFD6", "$FFD7", - "$FFD8", "$FFD9", "$FFDA", "$FFDB", "$FFDC", "$FFDD", "$FFDE", "$FFDF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartDFWidget.hxx b/src/debugger/gui/CartDFWidget.hxx index 146763b75..d37176627 100644 --- a/src/debugger/gui/CartDFWidget.hxx +++ b/src/debugger/gui/CartDFWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEDF_WIDGET_HXX class CartridgeDF; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeDFWidget : public CartDebugWidget +class CartridgeDFWidget : public CartEnhancedWidget { public: CartridgeDFWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeDFWidget : public CartDebugWidget virtual ~CartridgeDFWidget() = default; private: - CartridgeDF& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "CPUWIZ"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeDFWidget() = delete; CartridgeDFWidget(const CartridgeDFWidget&) = delete; diff --git a/src/debugger/gui/CartEFSCWidget.cxx b/src/debugger/gui/CartEFSCWidget.cxx index a7bae36c7..8783ca09f 100644 --- a/src/debugger/gui/CartEFSCWidget.cxx +++ b/src/debugger/gui/CartEFSCWidget.cxx @@ -15,167 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartEFSC.hxx" -#include "PopUpWidget.hxx" #include "CartEFSCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeEFSCWidget::CartridgeEFSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeEFSC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 16 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeEFSCWidget::description() +{ ostringstream info; - info << "64K H. Runner EFSC + RAM, 16 4K banks\n" - << "128 bytes RAM @ $F000 - $F0FF\n" - << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFE0; i < 16; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << (start + 0x100) - << " - " << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "64K H. Runner EFSC + RAM, 16 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Paul Slocum / Homestar Runner", - info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FFE0)"); - VarList::push_back(items, " 1 ($FFE1)"); - VarList::push_back(items, " 2 ($FFE2)"); - VarList::push_back(items, " 3 ($FFE3)"); - VarList::push_back(items, " 4 ($FFE4)"); - VarList::push_back(items, " 5 ($FFE5)"); - VarList::push_back(items, " 6 ($FFE6)"); - VarList::push_back(items, " 7 ($FFE7)"); - VarList::push_back(items, " 8 ($FFE8)"); - VarList::push_back(items, " 9 ($FFE9)"); - VarList::push_back(items, "10 ($FFEA)"); - VarList::push_back(items, "11 ($FFEB)"); - VarList::push_back(items, "12 ($FFEC)"); - VarList::push_back(items, "13 ($FFED)"); - VarList::push_back(items, "14 ($FFEE)"); - VarList::push_back(items, "15 ($FFEF)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("15 ($FFE0)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSCWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSCWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeEFSCWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFE0", "$FFE1", "$FFE2", "$FFE3", "$FFE4", "$FFE5", "$FFE6", "$FFE7", - "$FFE8", "$FFE9", "$FFEA", "$FFEB", "$FFEC", "$FFED", "$FFEE", "$FFEF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeEFSCWidget::internalRamSize() -{ - return 128; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeEFSCWidget::internalRamRPort(int start) -{ - return 0xF080 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeEFSCWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F07F used for Write Access\n" - << "$F080 - $F0FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeEFSCWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeEFSCWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFSCWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeEFSCWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeEFSCWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF080, false); + return info.str(); } diff --git a/src/debugger/gui/CartEFSCWidget.hxx b/src/debugger/gui/CartEFSCWidget.hxx index b9e902f69..c5d6c4eeb 100644 --- a/src/debugger/gui/CartEFSCWidget.hxx +++ b/src/debugger/gui/CartEFSCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEEFSC_WIDGET_HXX class CartridgeEFSC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeEFSCWidget : public CartDebugWidget +class CartridgeEFSCWidget : public CartEnhancedWidget { public: CartridgeEFSCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,11 @@ class CartridgeEFSCWidget : public CartDebugWidget virtual ~CartridgeEFSCWidget() = default; private: - CartridgeEFSC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Paul Slocum / Homestar Runner"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeEFSCWidget() = delete; CartridgeEFSCWidget(const CartridgeEFSCWidget&) = delete; diff --git a/src/debugger/gui/CartEFWidget.cxx b/src/debugger/gui/CartEFWidget.cxx index 165c205bf..4fbc9a030 100644 --- a/src/debugger/gui/CartEFWidget.cxx +++ b/src/debugger/gui/CartEFWidget.cxx @@ -16,97 +16,24 @@ //============================================================================ #include "CartEF.hxx" -#include "PopUpWidget.hxx" #include "CartEFWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeEFWidget::CartridgeEFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeEF& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 16 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeEFWidget::description() +{ ostringstream info; - info << "64K H. Runner EF cartridge, 16 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFE0; i < 16; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "64K H. Runner EF cartridge, 16 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Paul Slocum / Homestar Runner", - info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0 ($FFE0)"); - VarList::push_back(items, " 1 ($FFE1)"); - VarList::push_back(items, " 2 ($FFE2)"); - VarList::push_back(items, " 3 ($FFE3)"); - VarList::push_back(items, " 4 ($FFE4)"); - VarList::push_back(items, " 5 ($FFE5)"); - VarList::push_back(items, " 6 ($FFE6)"); - VarList::push_back(items, " 7 ($FFE7)"); - VarList::push_back(items, " 8 ($FFE8)"); - VarList::push_back(items, " 9 ($FFE9)"); - VarList::push_back(items, "10 ($FFEA)"); - VarList::push_back(items, "11 ($FFEB)"); - VarList::push_back(items, "12 ($FFEC)"); - VarList::push_back(items, "13 ($FFED)"); - VarList::push_back(items, "14 ($FFEE)"); - VarList::push_back(items, "15 ($FFEF)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("15 ($FFE0)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFWidget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeEFWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeEFWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFE0", "$FFE1", "$FFE2", "$FFE3", "$FFE4", "$FFE5", "$FFE6", "$FFE7", - "$FFE8", "$FFE9", "$FFEA", "$FFEB", "$FFEC", "$FFED", "$FFEE", "$FFEF" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartEFWidget.hxx b/src/debugger/gui/CartEFWidget.hxx index 3f34fa6cb..7299b22d3 100644 --- a/src/debugger/gui/CartEFWidget.hxx +++ b/src/debugger/gui/CartEFWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEEF_WIDGET_HXX class CartridgeEF; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeEFWidget : public CartDebugWidget +class CartridgeEFWidget : public CartEnhancedWidget { public: CartridgeEFWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeEFWidget : public CartDebugWidget virtual ~CartridgeEFWidget() = default; private: - CartridgeEF& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Paul Slocum / Homestar Runner"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeEFWidget() = delete; CartridgeEFWidget(const CartridgeEFWidget&) = delete; From 2e2471db6872c41793fae7f8f89987f9da1770b8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 09:42:51 +0200 Subject: [PATCH 41/69] refactored CartWDWidget and CartX07Widget improved cart info formatting --- src/debugger/gui/CartE0Widget.cxx | 9 +- src/debugger/gui/CartE0Widget.hxx | 2 +- src/debugger/gui/CartEnhancedWidget.cxx | 49 +++++--- src/debugger/gui/CartEnhancedWidget.hxx | 2 +- src/debugger/gui/CartUAWidget.cxx | 4 +- src/debugger/gui/CartUAWidget.hxx | 2 +- src/debugger/gui/CartWDWidget.cxx | 156 ++++-------------------- src/debugger/gui/CartWDWidget.hxx | 35 ++---- src/debugger/gui/CartX07Widget.cxx | 86 ++----------- src/debugger/gui/CartX07Widget.hxx | 15 +-- src/emucore/CartWD.hxx | 2 + 11 files changed, 86 insertions(+), 276 deletions(-) diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index 4588abcdc..b2b6368dc 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -51,7 +51,7 @@ string CartridgeE0Widget::romDescription() << Common::Base::HEX4 << (ADDR_BASE | segmentOffset) << " - $" << (ADDR_BASE | segmentOffset + /*myCart.myBankSize - 1*/ 0x3FF) << ",\n"; if (seg < 3) - info << " Hotspots " << hotspotStr(0, seg) << " - " << hotspotStr(7, seg) << "\n"; + info << " Hotspots " << hotspotStr(0, seg, true) << " - " << hotspotStr(7, seg, true) << "\n"; else info << " Always points to last 1K bank of ROM\n"; } @@ -61,15 +61,14 @@ string CartridgeE0Widget::romDescription() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeE0Widget::hotspotStr(int bank, int segment) +string CartridgeE0Widget::hotspotStr(int bank, int segment, bool noBrackets) { ostringstream info; uInt16 hotspot = myCart.hotspot(); - if(hotspot & 0x1000) - hotspot |= ADDR_BASE; - + info << (noBrackets ? "" : "("); info << "$" << Common::Base::HEX1 << (hotspot + bank + segment * 8); + info << (noBrackets ? "" : ")"); return info.str(); } diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index 0bc5694ea..8d0dbb386 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -38,7 +38,7 @@ class CartridgeE0Widget : public CartEnhancedWidget string romDescription() override; - string hotspotStr(int bank, int segment) override; + string hotspotStr(int bank, int segment, bool noBrackets = false) override; int bankSegs() override { return 3; } diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index d38c5534c..f9e1e7772 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -96,18 +96,23 @@ string CartEnhancedWidget::romDescription() { uInt16 start = (image[offset + 1] << 8) | image[offset]; start -= start % 0x1000; + string hash = myCart.romBankCount() > 10 && bank < 10 ? " #" : "#"; - info << "Bank #" << std::dec << bank << " @ $" - << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - $" << (start + 0xFFF) - << " (hotspot " << hotspotStr(bank) << ")\n"; + info << "Bank " << hash << std::dec << bank << " @ $" + << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - $" << (start + 0xFFF); + if(myCart.hotspot() != 0) + info << " " << hotspotStr(bank, 0, true); + info << "\n"; } info << "Startup bank = #" << std::dec << myCart.startBank() << " or undetermined\n"; } else { uInt16 start = (image[myCart.mySize - 3] << 8) | image[myCart.mySize - 4]; + uInt16 end; start -= start % std::min(int(size), 0x1000); + end = start + uInt16(myCart.mySize) - 1; // special check for ROMs where the extra RAM is not included in the image (e.g. CV). if((start & 0xFFF) < size) { @@ -115,7 +120,7 @@ string CartEnhancedWidget::romDescription() } info << "ROM accessible @ $" << Common::Base::HEX4 << start << " - $" - << Common::Base::HEX4 << (start + myCart.mySize - 1); + << Common::Base::HEX4 << end; } return info.str(); @@ -133,7 +138,6 @@ void CartEnhancedWidget::bankSelect(int& ypos) for(int seg = 0; seg < bankSegs(); ++seg) { // fill bank and hotspot list - uInt16 hotspot = myCart.hotspot(); VariantList items; int pw = 0; @@ -142,8 +146,9 @@ void CartEnhancedWidget::bankSelect(int& ypos) ostringstream buf; buf << std::setw(bank < 10 ? 2 : 1) << "#" << std::dec << bank; - if(hotspot >= 0x100 && myHotspotDelta > 0) - buf << " (" << hotspotStr(bank, seg) << ")"; + //if(myCart.hotspot() >= 0x100 && myHotspotDelta > 0) + if(myCart.hotspot() != 0 && myHotspotDelta > 0) + buf << " " << hotspotStr(bank, seg); VarList::push_back(items, buf.str()); pw = std::max(pw, _font.getStringWidth(buf.str())); } @@ -198,16 +203,17 @@ string CartEnhancedWidget::bankState() else if (hasRamBanks) buf << " ROM"; - if(hotspot >= 0x100) - buf << " (" << (bankSegs() < 3 ? "hotspot " : "") << hotspotStr(bank) << ")"; + //if(hotspot >= 0x100) + if(hotspot != 0 && myHotspotDelta > 0) + buf << " " << hotspotStr(bank, 0, bankSegs() < 3); } } else { buf << "Bank #" << std::dec << myCart.getBank(); - //if(hotspot >= 0x100) - buf << " (hotspot " << hotspotStr(myCart.getSegmentBank()) << ")"; + if(hotspot != 0 && myHotspotDelta > 0) + buf << " " << hotspotStr(myCart.getBank(), 0, true); } return buf.str(); } @@ -215,7 +221,7 @@ string CartEnhancedWidget::bankState() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::hotspotStr(int bank, int segment) +string CartEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) { ostringstream info; uInt16 hotspot = myCart.hotspot(); @@ -223,7 +229,9 @@ string CartEnhancedWidget::hotspotStr(int bank, int segment) if(hotspot & 0x1000) hotspot |= ADDR_BASE; + info << "(" << (prefix ? "hotspot " : ""); info << "$" << Common::Base::HEX1 << (hotspot + bank * myHotspotDelta); + info << ")"; return info.str(); } @@ -242,8 +250,11 @@ void CartEnhancedWidget::saveOldState() myOldState.internalRam.push_back(myCart.myRAM[i]); myOldState.banks.clear(); - for(int seg = 0; seg < bankSegs(); ++seg) - myOldState.banks.push_back(myCart.getSegmentBank(seg)); + if (bankSegs() > 1) + for(int seg = 0; seg < bankSegs(); ++seg) + myOldState.banks.push_back(myCart.getSegmentBank(seg)); + else + myOldState.banks.push_back(myCart.getBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -251,9 +262,13 @@ void CartEnhancedWidget::loadConfig() { if(myBankWidgets != nullptr) { - for(int seg = 0; seg < bankSegs(); ++seg) - myBankWidgets[seg]->setSelectedIndex(myCart.getSegmentBank(seg), - myCart.getSegmentBank(seg) != myOldState.banks[seg]); + if (bankSegs() > 1) + for(int seg = 0; seg < bankSegs(); ++seg) + myBankWidgets[seg]->setSelectedIndex(myCart.getSegmentBank(seg), + myCart.getSegmentBank(seg) != myOldState.banks[seg]); + else + myBankWidgets[0]->setSelectedIndex(myCart.getBank(), + myCart.getBank() != myOldState.banks[0]); } CartDebugWidget::loadConfig(); } diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index dccc9fde0..a3b0e54cf 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -53,7 +53,7 @@ class CartEnhancedWidget : public CartDebugWidget virtual void bankSelect(int& ypos); - virtual string hotspotStr(int bank = 0, int segment = 0); + virtual string hotspotStr(int bank = 0, int segment = 0, bool prefix = false); virtual int bankSegs(); // { return myCart.myBankSegs; } diff --git a/src/debugger/gui/CartUAWidget.cxx b/src/debugger/gui/CartUAWidget.cxx index f3865b998..ffaef806b 100644 --- a/src/debugger/gui/CartUAWidget.cxx +++ b/src/debugger/gui/CartUAWidget.cxx @@ -41,12 +41,14 @@ string CartridgeUAWidget::description() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeUAWidget::hotspotStr(int bank, int) +string CartridgeUAWidget::hotspotStr(int bank, int, bool prefix) { ostringstream info; uInt16 hotspot = myCart.hotspot() + (bank ^ (mySwappedHotspots ? 1 : 0)) * myHotspotDelta; + info << "(" << (prefix ? "hotspot " : ""); info << "$" << Common::Base::HEX1 << hotspot << ", $" << (hotspot | 0x80); + info << ")"; return info.str(); } diff --git a/src/debugger/gui/CartUAWidget.hxx b/src/debugger/gui/CartUAWidget.hxx index bb61d25c9..8a49136a2 100644 --- a/src/debugger/gui/CartUAWidget.hxx +++ b/src/debugger/gui/CartUAWidget.hxx @@ -36,7 +36,7 @@ class CartridgeUAWidget : public CartEnhancedWidget string description() override; - string hotspotStr(int bank, int) override; + string hotspotStr(int bank, int seg, bool prefix = false) override; private: const bool mySwappedHotspots; diff --git a/src/debugger/gui/CartWDWidget.cxx b/src/debugger/gui/CartWDWidget.cxx index c89c3c8c8..16fe416ec 100644 --- a/src/debugger/gui/CartWDWidget.cxx +++ b/src/debugger/gui/CartWDWidget.cxx @@ -15,157 +15,45 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartWD.hxx" -#include "PopUpWidget.hxx" #include "CartWDWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeWDWidget::CartridgeWDWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeWD& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - string info = - "This scheme has eight 1K slices, which can be mapped into four 1K " - "segments in various combinations. Each 'bank' selects a predefined " - "segment arrangement (indicated in square brackets)\n" - "In the third (uppermost) segment the byte at $3FC is overwritten with 0.\n\n" - "64 bytes RAM @ $F000 - $F080\n" - " $F000 - $F03F (R), $F040 - $F07F (W)\n"; - - int xpos = 2, - ypos = addBaseInformation(myCart.mySize, "Wickstead Design", info, 12) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($30) [0,0,1,3]", 0); - VarList::push_back(items, "1 ($31) [0,1,2,3]", 1); - VarList::push_back(items, "2 ($32) [4,5,6,7]", 2); - VarList::push_back(items, "3 ($33) [7,4,2,3]", 3); - VarList::push_back(items, "4 ($34) [0,0,6,7]", 4); - VarList::push_back(items, "5 ($35) [0,1,7,6]", 5); - VarList::push_back(items, "6 ($36) [2,3,4,5]", 6); - VarList::push_back(items, "7 ($37) [6,0,5,1]", 7); - VarList::push_back(items, "8 ($38) [0,0,1,3]", 8); - VarList::push_back(items, "9 ($39) [0,1,2,3]", 9); - VarList::push_back(items, "10 ($3A) [4,5,6,7]", 10); - VarList::push_back(items, "11 ($3B) [7,4,2,3]", 11); - VarList::push_back(items, "12 ($3C) [0,0,6,7]", 12); - VarList::push_back(items, "13 ($3D) [0,1,7,6]", 13); - VarList::push_back(items, "14 ($3E) [2,3,4,5]", 14); - VarList::push_back(items, "15 ($3F) [6,0,5,1]", 15); - myBank = new PopUpWidget(boss, _font, xpos, ypos-2, - _font.getStringWidth("15 ($3F) [6,0,5,1]"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); + initialize(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWDWidget::saveOldState() +string CartridgeWDWidget::description() { - myOldState.internalram.clear(); + ostringstream info; - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); + info << "8K + RAM Wickstead Design cartridge, \n" + << " eight 1K banks, mapped into four segments\n" + << "Hotspots $" << Common::Base::HEX1 << myCart.hotspot() << " - $" << (myCart.hotspot() + 7) << ", " + << "each hotspot selects a [predefined bank mapping]\n"; + info << ramDescription(); - myOldState.bank = myCart.getBank(); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWDWidget::loadConfig() +string CartridgeWDWidget::hotspotStr(int bank, int segment, bool prefix) { - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); + ostringstream info; + CartridgeWD& cart = dynamic_cast(myCart); + CartridgeWD::BankOrg banks = cart.ourBankOrg[bank]; - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWDWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeWDWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array segments = { - "[0,0,1,3]", "[0,1,2,3]", "[4,5,6,7]", "[7,4,2,3]", - "[0,0,6,7]", "[0,1,7,6]", "[2,3,4,5]", "[6,0,5,1]" - }; - uInt16 bank = myCart.getBank(); - buf << "Bank = " << std::dec << bank << ", segments = " << segments[bank & 0x7]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeWDWidget::internalRamSize() -{ - return 64; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeWDWidget::internalRamRPort(int start) -{ - return 0xF000 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeWDWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F03F used for Read Access\n" - << "$F040 - $F07F used for Write Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeWDWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; ++i) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeWDWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; ++i) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeWDWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeWDWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeWDWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF000, false); + info << "(" << (prefix ? "hotspot " : "") + << "$" << Common::Base::HEX1 << (myCart.hotspot() + bank) << ") [" + << uInt16(banks.zero) << ", " + << uInt16(banks.one) << ", " + << uInt16(banks.two) << ", " + << uInt16(banks.three) << "]"; + + return info.str(); } diff --git a/src/debugger/gui/CartWDWidget.hxx b/src/debugger/gui/CartWDWidget.hxx index f52f4a2a9..9bab7af30 100644 --- a/src/debugger/gui/CartWDWidget.hxx +++ b/src/debugger/gui/CartWDWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEWD_WIDGET_HXX class CartridgeWD; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeWDWidget : public CartDebugWidget +class CartridgeWDWidget : public CartEnhancedWidget { public: CartridgeWDWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,15 @@ class CartridgeWDWidget : public CartDebugWidget virtual ~CartridgeWDWidget() = default; private: - CartridgeWD& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Wickstead Design"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; // Current banking layout - }; - CartState myOldState; + string description() override; - enum { kBankChanged = 'bkCH' }; + string hotspotStr(int bank, int seg = 0, bool prefix = false) override; + + int bankSegs() override { return 1; } private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeWDWidget() = delete; CartridgeWDWidget(const CartridgeWDWidget&) = delete; diff --git a/src/debugger/gui/CartX07Widget.cxx b/src/debugger/gui/CartX07Widget.cxx index 0c6bc5b95..4fb31a9ca 100644 --- a/src/debugger/gui/CartX07Widget.cxx +++ b/src/debugger/gui/CartX07Widget.cxx @@ -16,94 +16,26 @@ //============================================================================ #include "CartX07.hxx" -#include "PopUpWidget.hxx" #include "CartX07Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeX07Widget::CartridgeX07Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeX07& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt32 size = 16 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeX07Widget::description() +{ ostringstream info; + info << "64K X07 cartridge, 16 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n" << "Multiple hotspots, all below $1000\n" << "See documentation for further details\n"; + info << CartEnhancedWidget::description(); - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC; i < 16; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start - << " - " << "$" << (start + 0xFFF) << "\n"; - } - - int xpos = 2, - ypos = addBaseInformation(size, "AtariAge / John Payson / Fred Quimby", - info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, " 0"); - VarList::push_back(items, " 1"); - VarList::push_back(items, " 2"); - VarList::push_back(items, " 3"); - VarList::push_back(items, " 4"); - VarList::push_back(items, " 5"); - VarList::push_back(items, " 6"); - VarList::push_back(items, " 7"); - VarList::push_back(items, " 8"); - VarList::push_back(items, " 9"); - VarList::push_back(items, " 10"); - VarList::push_back(items, " 11"); - VarList::push_back(items, " 12"); - VarList::push_back(items, " 13"); - VarList::push_back(items, " 14"); - VarList::push_back(items, " 15"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth(" 15"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeX07Widget::loadConfig() -{ - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); - - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeX07Widget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeX07Widget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Bank = " << std::dec << myCart.getBank(); - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartX07Widget.hxx b/src/debugger/gui/CartX07Widget.hxx index 00782dca8..a096c5d0d 100644 --- a/src/debugger/gui/CartX07Widget.hxx +++ b/src/debugger/gui/CartX07Widget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEX07_WIDGET_HXX class CartridgeX07; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeX07Widget : public CartDebugWidget +class CartridgeX07Widget : public CartEnhancedWidget { public: CartridgeX07Widget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeX07Widget : public CartDebugWidget virtual ~CartridgeX07Widget() = default; private: - CartridgeX07& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "AtariAge / John Payson / Fred Quimby"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeX07Widget() = delete; CartridgeX07Widget(const CartridgeX07Widget&) = delete; diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 20596868e..1fd42ac71 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -153,6 +153,8 @@ class CartridgeWD : public CartridgeEnhanced private: bool checkSwitchBank(uInt16, uInt8 = 0) override { return false; } + uInt16 hotspot() const override { return 0x0030; } + private: // Indicates the cycle at which a bankswitch was initiated uInt64 myCyclesAtBankswitchInit{0}; From 20c6998e713f57bec3029ba8bbbb0d1c96bfc0fd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 12:15:28 +0200 Subject: [PATCH 42/69] refactored CartFA(2), CartFC and CartFE widget classes --- src/debugger/gui/CartEnhancedWidget.cxx | 13 +- src/debugger/gui/CartEnhancedWidget.hxx | 2 +- src/debugger/gui/CartFA2Widget.cxx | 160 +++--------------------- src/debugger/gui/CartFA2Widget.hxx | 34 ++--- src/debugger/gui/CartFAWidget.cxx | 143 ++------------------- src/debugger/gui/CartFAWidget.hxx | 33 +---- src/debugger/gui/CartFCWidget.cxx | 78 ++++-------- src/debugger/gui/CartFCWidget.hxx | 17 +-- src/debugger/gui/CartFEWidget.cxx | 66 +++------- src/debugger/gui/CartFEWidget.hxx | 18 +-- src/emucore/CartFA2.hxx | 2 +- src/emucore/CartFE.hxx | 2 + 12 files changed, 100 insertions(+), 468 deletions(-) diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index f9e1e7772..a2e22c094 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -31,12 +31,14 @@ CartEnhancedWidget::CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::initialize() +int CartEnhancedWidget::initialize() { int ypos = addBaseInformation(size(), manufacturer(), description(), descriptionLines()) + myLineHeight; bankSelect(ypos); + + return ypos; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -64,7 +66,7 @@ string CartEnhancedWidget::description() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - int CartEnhancedWidget::descriptionLines() { - return 20; // should be enough for almost all types + return 18; // should be enough for almost all types } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -101,7 +103,12 @@ string CartEnhancedWidget::romDescription() info << "Bank " << hash << std::dec << bank << " @ $" << Common::Base::HEX4 << (start + myCart.myRomOffset) << " - $" << (start + 0xFFF); if(myCart.hotspot() != 0) - info << " " << hotspotStr(bank, 0, true); + { + string hs = hotspotStr(bank, 0, true); + if(hs.length() > 22) + info << "\n "; + info << " " << hs; + } info << "\n"; } info << "Startup bank = #" << std::dec << myCart.startBank() << " or undetermined\n"; diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index a3b0e54cf..2cbd22ced 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -37,7 +37,7 @@ class CartEnhancedWidget : public CartDebugWidget virtual ~CartEnhancedWidget() = default; protected: - void initialize(); + int initialize(); virtual size_t size(); diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index 9a24eb5a7..40fab9d4d 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -15,65 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartFA2.hxx" -#include "PopUpWidget.hxx" #include "CartFA2Widget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFA2Widget::CartridgeFA2Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFA2& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - size_t size = cart.mySize; - - ostringstream info; - info << "Modified FA RAM+, six or seven 4K banks\n" - << "256 bytes RAM @ $F000 - $F1FF\n" - << " $F100 - $F1FF (R), $F000 - $F0FF (W)\n" - << "RAM can be loaded/saved to Harmony flash by accessing $FFF4\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF5; i < cart.romBankCount(); - ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x200) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } - int xpos = 2, - ypos = addBaseInformation(size, "Chris D. Walton (Star Castle 2600)", - info.str(), 15) + myLineHeight; + ypos = initialize(); - VariantList items; - VarList::push_back(items, "0 ($FFF5)"); - VarList::push_back(items, "1 ($FFF6)"); - VarList::push_back(items, "2 ($FFF7)"); - VarList::push_back(items, "3 ($FFF8)"); - VarList::push_back(items, "4 ($FFF9)"); - VarList::push_back(items, "5 ($FFFA)"); - if(cart.romBankCount() == 7) - VarList::push_back(items, "6 ($FFFB)"); - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); - ypos += myLineHeight + 20; + ypos += 12; const int bwidth = _font.getStringWidth("Erase") + 20; StaticTextWidget* t = new StaticTextWidget(boss, _font, xpos, ypos, - _font.getStringWidth("Harmony Flash "), - myFontHeight, "Harmony Flash ", TextAlign::Left); + _font.getStringWidth("Harmony flash memory "), + myFontHeight, "Harmony flash memory ", TextAlign::Left); xpos += t->getWidth() + 4; myFlashErase = @@ -98,123 +58,39 @@ CartridgeFA2Widget::CartridgeFA2Widget( } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA2Widget::saveOldState() +string CartridgeFA2Widget::description() { - myOldState.internalram.clear(); + ostringstream info; - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); + info << "Modified FA RAM+, six or seven 4K banks\n"; + info << "RAM+ can be loaded/saved to Harmony flash memory by accessing $" + << Common::Base::HEX4 << 0xFFF4 << "\n"; + info << CartEnhancedWidget::description(); - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA2Widget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFA2Widget::handleCommand(CommandSender* sender, int cmd, int data, int id) { + CartridgeFA2& cart = dynamic_cast(myCart); + switch(cmd) { - case kBankChanged: - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - break; - case kFlashErase: - myCart.flash(0); + cart.flash(0); break; case kFlashLoad: - myCart.flash(1); + cart.flash(1); break; case kFlashSave: - myCart.flash(2); + cart.flash(2); break; default: - break; + CartEnhancedWidget::handleCommand(sender, cmd, data, id); } } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFA2Widget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { - "$FFF5", "$FFF6", "$FFF7", "$FFF8", "$FFF9", "$FFFA", "$FFFB" - }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeFA2Widget::internalRamSize() -{ - return 256; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeFA2Widget::internalRamRPort(int start) -{ - return 0xF100 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFA2Widget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F0FF used for Write Access\n" - << "$F100 - $F1FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeFA2Widget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeFA2Widget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFA2Widget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFA2Widget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFA2Widget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF100, false); -} diff --git a/src/debugger/gui/CartFA2Widget.hxx b/src/debugger/gui/CartFA2Widget.hxx index 0b5fe3fb4..30b1ec81f 100644 --- a/src/debugger/gui/CartFA2Widget.hxx +++ b/src/debugger/gui/CartFA2Widget.hxx @@ -20,11 +20,10 @@ class CartridgeFA2; class ButtonWidget; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeFA2Widget : public CartDebugWidget +class CartridgeFA2Widget : public CartEnhancedWidget { public: CartridgeFA2Widget(GuiObject* boss, const GUI::Font& lfont, @@ -34,41 +33,22 @@ class CartridgeFA2Widget : public CartDebugWidget virtual ~CartridgeFA2Widget() = default; private: - CartridgeFA2& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Chris D. Walton (Star Castle 2600 Arcade)"; } + + string description() override; + ButtonWidget *myFlashErase{nullptr}, *myFlashLoad{nullptr}, *myFlashSave{nullptr}; - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - enum { - kBankChanged = 'bkCH', kFlashErase = 'flER', kFlashLoad = 'flLD', kFlashSave = 'flSV' }; private: - void saveOldState() override; - void loadConfig() override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - + private: // Following constructors and assignment operators not supported CartridgeFA2Widget() = delete; CartridgeFA2Widget(const CartridgeFA2Widget&) = delete; diff --git a/src/debugger/gui/CartFAWidget.cxx b/src/debugger/gui/CartFAWidget.cxx index e32a3eec0..b3fefff6d 100644 --- a/src/debugger/gui/CartFAWidget.cxx +++ b/src/debugger/gui/CartFAWidget.cxx @@ -15,150 +15,25 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "Debugger.hxx" -#include "CartDebug.hxx" #include "CartFA.hxx" -#include "PopUpWidget.hxx" #include "CartFAWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFAWidget::CartridgeFAWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFA& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = 3 * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeFAWidget::description() +{ ostringstream info; - info << "CBS RAM+ FA cartridge, three 4K banks\n" - << "256 bytes RAM @ $F000 - $F1FF\n" - << " $F100 - $F1FF (R), $F000 - $F0FF (W)\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 3; ++i, offset += 0x1000) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x200) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; - } + info << "CBS RAM+ FA cartridge, three 4K banks\n"; + info << CartEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "CBS", info.str()) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($FFF8)"); - VarList::push_back(items, "1 ($FFF9)"); - VarList::push_back(items, "2 ($FFFA)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFAWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - - myOldState.bank = myCart.getBank(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFAWidget::loadConfig() -{ - myBank->setSelectedIndex(myCart.getBank(), myCart.getBank() != myOldState.bank); - - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFAWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFAWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array spot = { "$FFF8", "$FFF9", "$FFFA" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; - - return buf.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeFAWidget::internalRamSize() -{ - return 256; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartridgeFAWidget::internalRamRPort(int start) -{ - return 0xF100 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFAWidget::internalRamDescription() -{ - ostringstream desc; - desc << "$F000 - $F0FF used for Write Access\n" - << "$F100 - $F1FF used for Read Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeFAWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartridgeFAWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFAWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartridgeFAWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFAWidget::internalRamLabel(int addr) -{ - CartDebug& dbg = instance().debugger().cartDebug(); - return dbg.getLabel(addr + 0xF100, false); + return info.str(); } diff --git a/src/debugger/gui/CartFAWidget.hxx b/src/debugger/gui/CartFAWidget.hxx index e4e1da416..b7fbb3308 100644 --- a/src/debugger/gui/CartFAWidget.hxx +++ b/src/debugger/gui/CartFAWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEFA_WIDGET_HXX class CartridgeFA; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeFAWidget : public CartDebugWidget +class CartridgeFAWidget : public CartEnhancedWidget { public: CartridgeFAWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,35 +32,11 @@ class CartridgeFAWidget : public CartDebugWidget virtual ~CartridgeFAWidget() = default; private: - CartridgeFA& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "CBS"; } - struct CartState { - ByteArray internalram; - uInt16 bank{0}; - }; - CartState myOldState; - - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - string internalRamLabel(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported CartridgeFAWidget() = delete; CartridgeFAWidget(const CartridgeFAWidget&) = delete; diff --git a/src/debugger/gui/CartFCWidget.cxx b/src/debugger/gui/CartFCWidget.cxx index a034b56e3..8210eed2e 100644 --- a/src/debugger/gui/CartFCWidget.cxx +++ b/src/debugger/gui/CartFCWidget.cxx @@ -16,80 +16,44 @@ //============================================================================ #include "CartFC.hxx" -#include "PopUpWidget.hxx" #include "CartFCWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFCWidget::CartridgeFCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFC& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - uInt16 size = cart.romBankCount() * 4096; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeFCWidget::description() +{ ostringstream info; - info << "FC cartridge, up to eight 4K banks\n" - << "Startup bank = " << cart.startBank() << " or undetermined\n"; + uInt16 hotspot = myCart.hotspot() | ADDR_BASE; - // Eventually, we should query this from the debugger/disassembler + info << "FC cartridge, up to eight 4K banks\n"; info << "Bank selected by hotspots\n" - << " $FFF8 (defines low 2 bits)\n" - << " $FFF9 (defines high bits)\n" - << " $FFFC (triggers bank switch)"; + << " $" << Common::Base::HEX4 << hotspot << " (defines low 2 bits)\n" + << " $" << Common::Base::HEX4 << (hotspot + 1) << " (defines high bits)\n" + << " $" << Common::Base::HEX4 << (hotspot + 4) << " (triggers bank switch)\n"; - int xpos = 2, - ypos = addBaseInformation(size, "Amiga Corp.", info.str()) + myLineHeight; + info << CartEnhancedWidget::description(); - VariantList items; - for (uInt16 i = 0; i < cart.romBankCount(); ++i) - VarList::push_back(items, Variant(i).toString() + - " ($FFF8 = " + Variant(i & 0b11).toString() + - "/$FFF9 = " + Variant(i >> 2).toString() +")"); - - myBank = new PopUpWidget(boss, _font, xpos, ypos - 2, - _font.getStringWidth("7 ($FFF8 = 3/$FFF9 = 1)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFCWidget::loadConfig() +string CartridgeFCWidget::hotspotStr(int bank, int, bool prefix) { - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); + ostringstream info; + uInt16 hotspot = myCart.hotspot() | ADDR_BASE; - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); + info << "(" << (prefix ? "hotspots " : ""); + info << "$" << Common::Base::HEX4 << hotspot << " = " << (bank & 0b11); + info << ", $" << Common::Base::HEX4 << (hotspot + 1) << " = " << (bank >> 2); + info << ")"; - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFCWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if (cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFCWidget::bankState() -{ - ostringstream& buf = buffer(); - uInt16 bank = myCart.getBank(); - - buf << "Bank = #" << std::dec << bank - << ", hotspots $FFF8 = " << (bank & 0b11) - << "/$FF99 = " << (bank >> 2); - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartFCWidget.hxx b/src/debugger/gui/CartFCWidget.hxx index 0e74246ed..f1bb4a50f 100644 --- a/src/debugger/gui/CartFCWidget.hxx +++ b/src/debugger/gui/CartFCWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEFC_WIDGET_HXX class CartridgeFC; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeFCWidget : public CartDebugWidget +class CartridgeFCWidget : public CartEnhancedWidget { public: CartridgeFCWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,13 @@ class CartridgeFCWidget : public CartDebugWidget virtual ~CartridgeFCWidget() = default; private: - CartridgeFC& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Amiga Corp."; } - enum { kBankChanged = 'bkCH' }; + string description() override; + + string hotspotStr(int bank, int seg = 0, bool prefix = false) override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeFCWidget() = delete; CartridgeFCWidget(const CartridgeFCWidget&) = delete; diff --git a/src/debugger/gui/CartFEWidget.cxx b/src/debugger/gui/CartFEWidget.cxx index afccb359f..dbe992a4f 100644 --- a/src/debugger/gui/CartFEWidget.cxx +++ b/src/debugger/gui/CartFEWidget.cxx @@ -16,72 +16,36 @@ //============================================================================ #include "CartFE.hxx" -#include "PopUpWidget.hxx" #include "CartFEWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeFEWidget::CartridgeFEWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFE& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - string info = - "FE cartridge, two 4K banks\n" - "Monitors access to hotspot $01FE, and uses " - "upper 3 bits of databus for bank number:\n" - "Bank 0 @ $F000 - $FFFF (DATA = 111, D5 = 1)\n" - "Bank 1 @ $D000 - $DFFF (DATA = 110, D5 = 0)\n"; - - int xpos = 2, - ypos = addBaseInformation(2 * 4096, "Activision", info) + myLineHeight; - - VariantList items; - VarList::push_back(items, "0 ($01FE, D5=1)"); - VarList::push_back(items, "1 ($01FE, D5=0)"); - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, - _font.getStringWidth("0 ($01FE, D5=1)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); + initialize(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFEWidget::loadConfig() +string CartridgeFEWidget::description() { - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); + ostringstream info; - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); + info << "FE cartridge, two 4K banks\n" + << "Monitors access to hotspot $01FE, and uses " + << "upper 3 bits of databus for bank number:\n"; + info << CartEnhancedWidget::description(); - CartDebugWidget::loadConfig(); + return info.str(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeFEWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) +string CartridgeFEWidget::hotspotStr(int bank, int, bool) { - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeFEWidget::bankState() -{ - ostringstream& buf = buffer(); - - static constexpr std::array range = { "$F000", "$D000" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", address range = " << range[myCart.getBank()]; - - return buf.str(); + ostringstream info; + + info << "(DATA = 11" << !bank << ", D5 = " << !bank << ")"; + + return info.str(); } diff --git a/src/debugger/gui/CartFEWidget.hxx b/src/debugger/gui/CartFEWidget.hxx index a9f37190c..05a320a71 100644 --- a/src/debugger/gui/CartFEWidget.hxx +++ b/src/debugger/gui/CartFEWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGEFE_WIDGET_HXX class CartridgeFE; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeFEWidget : public CartDebugWidget +class CartridgeFEWidget : public CartEnhancedWidget { public: CartridgeFEWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,18 +32,13 @@ class CartridgeFEWidget : public CartDebugWidget virtual ~CartridgeFEWidget() = default; private: - CartridgeFE& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Activision"; } - enum { kBankChanged = 'bkCH' }; + string description() override; + + string hotspotStr(int bank, int, bool) override; private: - // No implementation for non-bankswitched ROMs - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeFEWidget() = delete; CartridgeFEWidget(const CartridgeFEWidget&) = delete; diff --git a/src/emucore/CartFA2.hxx b/src/emucore/CartFA2.hxx index 8175f4cdc..16d33bf2b 100644 --- a/src/emucore/CartFA2.hxx +++ b/src/emucore/CartFA2.hxx @@ -110,7 +110,7 @@ class CartridgeFA2 : public CartridgeFA private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 hotspot() const override { return 0x1FF4; } + uInt16 hotspot() const override { return 0x1FF5; } uInt16 getStartBank() const override { return 0; } diff --git a/src/emucore/CartFE.hxx b/src/emucore/CartFE.hxx index 3132704cd..6c453d284 100644 --- a/src/emucore/CartFE.hxx +++ b/src/emucore/CartFE.hxx @@ -165,6 +165,8 @@ class CartridgeFE : public CartridgeEnhanced */ bool checkSwitchBank(uInt16 address, uInt8 value) override; + uInt16 hotspot() const override { return 0x01FE; } + private: // Whether previous address by peek/poke equals $01FE (hotspot) bool myLastAccessWasFE{false}; From 8e3e0479b1aaa2f0f18d5f55a13e5674ba59707a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 12:40:19 +0200 Subject: [PATCH 43/69] renamed CartridgeEnhancedWidget class --- src/debugger/gui/Cart0840Widget.cxx | 4 +-- src/debugger/gui/Cart0840Widget.hxx | 2 +- src/debugger/gui/Cart2KWidget.cxx | 4 +-- src/debugger/gui/Cart2KWidget.hxx | 2 +- src/debugger/gui/Cart3FWidget.cxx | 2 +- src/debugger/gui/Cart3FWidget.hxx | 2 +- src/debugger/gui/Cart4KSCWidget.cxx | 4 +-- src/debugger/gui/Cart4KSCWidget.hxx | 2 +- src/debugger/gui/Cart4KWidget.cxx | 4 +-- src/debugger/gui/Cart4KWidget.hxx | 2 +- src/debugger/gui/CartBFSCWidget.cxx | 4 +-- src/debugger/gui/CartBFSCWidget.hxx | 2 +- src/debugger/gui/CartBFWidget.cxx | 4 +-- src/debugger/gui/CartBFWidget.hxx | 2 +- src/debugger/gui/CartCVWidget.cxx | 4 +-- src/debugger/gui/CartCVWidget.hxx | 2 +- src/debugger/gui/CartDFSCWidget.cxx | 4 +-- src/debugger/gui/CartDFSCWidget.hxx | 2 +- src/debugger/gui/CartDFWidget.cxx | 4 +-- src/debugger/gui/CartDFWidget.hxx | 2 +- src/debugger/gui/CartE0Widget.cxx | 4 +-- src/debugger/gui/CartE0Widget.hxx | 2 +- src/debugger/gui/CartEFSCWidget.cxx | 4 +-- src/debugger/gui/CartEFSCWidget.hxx | 2 +- src/debugger/gui/CartEFWidget.cxx | 4 +-- src/debugger/gui/CartEFWidget.hxx | 2 +- src/debugger/gui/CartEnhancedWidget.cxx | 44 ++++++++++++------------- src/debugger/gui/CartEnhancedWidget.hxx | 22 ++++++------- src/debugger/gui/CartF0Widget.cxx | 2 +- src/debugger/gui/CartF0Widget.hxx | 2 +- src/debugger/gui/CartF4SCWidget.cxx | 4 +-- src/debugger/gui/CartF4SCWidget.hxx | 2 +- src/debugger/gui/CartF4Widget.cxx | 4 +-- src/debugger/gui/CartF4Widget.hxx | 2 +- src/debugger/gui/CartF6SCWidget.cxx | 4 +-- src/debugger/gui/CartF6SCWidget.hxx | 2 +- src/debugger/gui/CartF6Widget.cxx | 4 +-- src/debugger/gui/CartF6Widget.hxx | 2 +- src/debugger/gui/CartF8SCWidget.cxx | 4 +-- src/debugger/gui/CartF8SCWidget.hxx | 2 +- src/debugger/gui/CartF8Widget.cxx | 4 +-- src/debugger/gui/CartF8Widget.hxx | 2 +- src/debugger/gui/CartFA2Widget.cxx | 6 ++-- src/debugger/gui/CartFA2Widget.hxx | 2 +- src/debugger/gui/CartFAWidget.cxx | 4 +-- src/debugger/gui/CartFAWidget.hxx | 2 +- src/debugger/gui/CartFCWidget.cxx | 4 +-- src/debugger/gui/CartFCWidget.hxx | 2 +- src/debugger/gui/CartFEWidget.cxx | 4 +-- src/debugger/gui/CartFEWidget.hxx | 2 +- src/debugger/gui/CartUAWidget.cxx | 4 +-- src/debugger/gui/CartUAWidget.hxx | 2 +- src/debugger/gui/CartWDWidget.cxx | 2 +- src/debugger/gui/CartWDWidget.hxx | 2 +- src/debugger/gui/CartX07Widget.cxx | 4 +-- src/debugger/gui/CartX07Widget.hxx | 2 +- src/emucore/CartEnhanced.hxx | 2 +- 57 files changed, 113 insertions(+), 113 deletions(-) diff --git a/src/debugger/gui/Cart0840Widget.cxx b/src/debugger/gui/Cart0840Widget.cxx index c49c86d09..eb9275035 100644 --- a/src/debugger/gui/Cart0840Widget.cxx +++ b/src/debugger/gui/Cart0840Widget.cxx @@ -22,7 +22,7 @@ Cartridge0840Widget::Cartridge0840Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge0840& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { myHotspotDelta = 0x40; initialize(); @@ -34,7 +34,7 @@ string Cartridge0840Widget::description() ostringstream info; info << "0840 ECONObanking, two 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/Cart0840Widget.hxx b/src/debugger/gui/Cart0840Widget.hxx index 89e8706c6..00605b262 100644 --- a/src/debugger/gui/Cart0840Widget.hxx +++ b/src/debugger/gui/Cart0840Widget.hxx @@ -22,7 +22,7 @@ class Cartridge0840; #include "CartEnhancedWidget.hxx" -class Cartridge0840Widget : public CartEnhancedWidget +class Cartridge0840Widget : public CartridgeEnhancedWidget { public: Cartridge0840Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/Cart2KWidget.cxx b/src/debugger/gui/Cart2KWidget.cxx index c97bc440f..d87445ed3 100644 --- a/src/debugger/gui/Cart2KWidget.cxx +++ b/src/debugger/gui/Cart2KWidget.cxx @@ -22,7 +22,7 @@ Cartridge2KWidget::Cartridge2KWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge2K& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string Cartridge2KWidget::description() ostringstream info; info << "Standard 2K cartridge, non-bankswitched\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/Cart2KWidget.hxx b/src/debugger/gui/Cart2KWidget.hxx index e6e0fe9d2..123e3ddf5 100644 --- a/src/debugger/gui/Cart2KWidget.hxx +++ b/src/debugger/gui/Cart2KWidget.hxx @@ -22,7 +22,7 @@ class Cartridge2K; #include "CartEnhancedWidget.hxx" -class Cartridge2KWidget : public CartEnhancedWidget +class Cartridge2KWidget : public CartridgeEnhancedWidget { public: Cartridge2KWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index 76f331502..ff5b0d219 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -22,7 +22,7 @@ Cartridge3FWidget::Cartridge3FWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge3F& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { myHotspotDelta = 0; initialize(); diff --git a/src/debugger/gui/Cart3FWidget.hxx b/src/debugger/gui/Cart3FWidget.hxx index 7e3ee65e9..e5f97a392 100644 --- a/src/debugger/gui/Cart3FWidget.hxx +++ b/src/debugger/gui/Cart3FWidget.hxx @@ -22,7 +22,7 @@ class Cartridge3F; #include "CartEnhancedWidget.hxx" -class Cartridge3FWidget : public CartEnhancedWidget +class Cartridge3FWidget : public CartridgeEnhancedWidget { public: Cartridge3FWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/Cart4KSCWidget.cxx b/src/debugger/gui/Cart4KSCWidget.cxx index 105136dd5..b6bc05d51 100644 --- a/src/debugger/gui/Cart4KSCWidget.cxx +++ b/src/debugger/gui/Cart4KSCWidget.cxx @@ -22,7 +22,7 @@ Cartridge4KSCWidget::Cartridge4KSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge4KSC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string Cartridge4KSCWidget::description() ostringstream info; info << "4KSC cartridge, non-bankswitched\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/Cart4KSCWidget.hxx b/src/debugger/gui/Cart4KSCWidget.hxx index 832c2c127..624a5623a 100644 --- a/src/debugger/gui/Cart4KSCWidget.hxx +++ b/src/debugger/gui/Cart4KSCWidget.hxx @@ -22,7 +22,7 @@ class Cartridge4KSC; #include "CartEnhancedWidget.hxx" -class Cartridge4KSCWidget : public CartEnhancedWidget +class Cartridge4KSCWidget : public CartridgeEnhancedWidget { public: Cartridge4KSCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/Cart4KWidget.cxx b/src/debugger/gui/Cart4KWidget.cxx index 14091bd15..deca594fb 100644 --- a/src/debugger/gui/Cart4KWidget.cxx +++ b/src/debugger/gui/Cart4KWidget.cxx @@ -22,7 +22,7 @@ Cartridge4KWidget::Cartridge4KWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge4K& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); @@ -43,7 +43,7 @@ string Cartridge4KWidget::description() ostringstream info; info << "Standard 4K cartridge, non-bankswitched\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/Cart4KWidget.hxx b/src/debugger/gui/Cart4KWidget.hxx index 886e2a060..3fd18eb66 100644 --- a/src/debugger/gui/Cart4KWidget.hxx +++ b/src/debugger/gui/Cart4KWidget.hxx @@ -22,7 +22,7 @@ class Cartridge4K; #include "CartEnhanced.hxx" -class Cartridge4KWidget : public CartEnhancedWidget +class Cartridge4KWidget : public CartridgeEnhancedWidget { public: Cartridge4KWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartBFSCWidget.cxx b/src/debugger/gui/CartBFSCWidget.cxx index 00109d9e9..15f10ff62 100644 --- a/src/debugger/gui/CartBFSCWidget.cxx +++ b/src/debugger/gui/CartBFSCWidget.cxx @@ -22,7 +22,7 @@ CartridgeBFSCWidget::CartridgeBFSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeBFSC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeBFSCWidget::description() ostringstream info; info << "256K BFSC + RAM, 64 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartBFSCWidget.hxx b/src/debugger/gui/CartBFSCWidget.hxx index 5e394eae5..739f41388 100644 --- a/src/debugger/gui/CartBFSCWidget.hxx +++ b/src/debugger/gui/CartBFSCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeBFSC; #include "CartEnhancedWidget.hxx" -class CartridgeBFSCWidget : public CartEnhancedWidget +class CartridgeBFSCWidget : public CartridgeEnhancedWidget { public: CartridgeBFSCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartBFWidget.cxx b/src/debugger/gui/CartBFWidget.cxx index 001f50658..cbaabf076 100644 --- a/src/debugger/gui/CartBFWidget.cxx +++ b/src/debugger/gui/CartBFWidget.cxx @@ -22,7 +22,7 @@ CartridgeBFWidget::CartridgeBFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeBF& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeBFWidget::description() ostringstream info; info << "256K BF cartridge, 64 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartBFWidget.hxx b/src/debugger/gui/CartBFWidget.hxx index 6c8d37257..b67391c63 100644 --- a/src/debugger/gui/CartBFWidget.hxx +++ b/src/debugger/gui/CartBFWidget.hxx @@ -22,7 +22,7 @@ class CartridgeBF; #include "CartEnhancedWidget.hxx" -class CartridgeBFWidget : public CartEnhancedWidget +class CartridgeBFWidget : public CartridgeEnhancedWidget { public: CartridgeBFWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartCVWidget.cxx b/src/debugger/gui/CartCVWidget.cxx index 1517cc843..f76718375 100644 --- a/src/debugger/gui/CartCVWidget.cxx +++ b/src/debugger/gui/CartCVWidget.cxx @@ -24,7 +24,7 @@ CartridgeCVWidget::CartridgeCVWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeCV& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -35,7 +35,7 @@ string CartridgeCVWidget::description() ostringstream info; info << "CV 2K ROM + 1K RAM, non-bankswitched\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartCVWidget.hxx b/src/debugger/gui/CartCVWidget.hxx index dd8e971ab..63fc6f237 100644 --- a/src/debugger/gui/CartCVWidget.hxx +++ b/src/debugger/gui/CartCVWidget.hxx @@ -22,7 +22,7 @@ class CartridgeCV; #include "CartEnhancedWidget.hxx" -class CartridgeCVWidget : public CartEnhancedWidget +class CartridgeCVWidget : public CartridgeEnhancedWidget { public: CartridgeCVWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartDFSCWidget.cxx b/src/debugger/gui/CartDFSCWidget.cxx index 0744ca182..ed792acb4 100644 --- a/src/debugger/gui/CartDFSCWidget.cxx +++ b/src/debugger/gui/CartDFSCWidget.cxx @@ -22,7 +22,7 @@ CartridgeDFSCWidget::CartridgeDFSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeDFSC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeDFSCWidget::description() ostringstream info; info << "128K DFSC + RAM, 32 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartDFSCWidget.hxx b/src/debugger/gui/CartDFSCWidget.hxx index 7aff641ee..9e4481fa8 100644 --- a/src/debugger/gui/CartDFSCWidget.hxx +++ b/src/debugger/gui/CartDFSCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeDFSC; #include "CartEnhancedWidget.hxx" -class CartridgeDFSCWidget : public CartEnhancedWidget +class CartridgeDFSCWidget : public CartridgeEnhancedWidget { public: CartridgeDFSCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartDFWidget.cxx b/src/debugger/gui/CartDFWidget.cxx index cdb6d4f1b..653588e56 100644 --- a/src/debugger/gui/CartDFWidget.cxx +++ b/src/debugger/gui/CartDFWidget.cxx @@ -22,7 +22,7 @@ CartridgeDFWidget::CartridgeDFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeDF& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeDFWidget::description() ostringstream info; info << "128K DF, 32 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartDFWidget.hxx b/src/debugger/gui/CartDFWidget.hxx index d37176627..9b45552b9 100644 --- a/src/debugger/gui/CartDFWidget.hxx +++ b/src/debugger/gui/CartDFWidget.hxx @@ -22,7 +22,7 @@ class CartridgeDF; #include "CartEnhancedWidget.hxx" -class CartridgeDFWidget : public CartEnhancedWidget +class CartridgeDFWidget : public CartridgeEnhancedWidget { public: CartridgeDFWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartE0Widget.cxx b/src/debugger/gui/CartE0Widget.cxx index b2b6368dc..12205c463 100644 --- a/src/debugger/gui/CartE0Widget.cxx +++ b/src/debugger/gui/CartE0Widget.cxx @@ -22,7 +22,7 @@ CartridgeE0Widget::CartridgeE0Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeE0& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeE0Widget::description() ostringstream info; info << "E0 cartridge,\n eight 1K banks mapped into four segments\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index 8d0dbb386..a9d84b461 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -22,7 +22,7 @@ class CartridgeE0; #include "CartEnhancedWidget.hxx" -class CartridgeE0Widget : public CartEnhancedWidget +class CartridgeE0Widget : public CartridgeEnhancedWidget { public: CartridgeE0Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartEFSCWidget.cxx b/src/debugger/gui/CartEFSCWidget.cxx index 8783ca09f..d6f60ddba 100644 --- a/src/debugger/gui/CartEFSCWidget.cxx +++ b/src/debugger/gui/CartEFSCWidget.cxx @@ -22,7 +22,7 @@ CartridgeEFSCWidget::CartridgeEFSCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeEFSC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeEFSCWidget::description() ostringstream info; info << "64K H. Runner EFSC + RAM, 16 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartEFSCWidget.hxx b/src/debugger/gui/CartEFSCWidget.hxx index c5d6c4eeb..975f17f8a 100644 --- a/src/debugger/gui/CartEFSCWidget.hxx +++ b/src/debugger/gui/CartEFSCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeEFSC; #include "CartEnhancedWidget.hxx" -class CartridgeEFSCWidget : public CartEnhancedWidget +class CartridgeEFSCWidget : public CartridgeEnhancedWidget { public: CartridgeEFSCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartEFWidget.cxx b/src/debugger/gui/CartEFWidget.cxx index 4fbc9a030..c00d2c3f6 100644 --- a/src/debugger/gui/CartEFWidget.cxx +++ b/src/debugger/gui/CartEFWidget.cxx @@ -22,7 +22,7 @@ CartridgeEFWidget::CartridgeEFWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeEF& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeEFWidget::description() ostringstream info; info << "64K H. Runner EF cartridge, 16 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartEFWidget.hxx b/src/debugger/gui/CartEFWidget.hxx index 7299b22d3..7d173836a 100644 --- a/src/debugger/gui/CartEFWidget.hxx +++ b/src/debugger/gui/CartEFWidget.hxx @@ -22,7 +22,7 @@ class CartridgeEF; #include "CartEnhancedWidget.hxx" -class CartridgeEFWidget : public CartEnhancedWidget +class CartridgeEFWidget : public CartridgeEnhancedWidget { public: CartridgeEFWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index a2e22c094..d4c6b4cf0 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -21,7 +21,7 @@ #include "CartEnhancedWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CartEnhancedWidget::CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, +CartridgeEnhancedWidget::CartridgeEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeEnhanced& cart) @@ -31,7 +31,7 @@ CartEnhancedWidget::CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartEnhancedWidget::initialize() +int CartridgeEnhancedWidget::initialize() { int ypos = addBaseInformation(size(), manufacturer(), description(), descriptionLines()) + myLineHeight; @@ -42,7 +42,7 @@ int CartEnhancedWidget::initialize() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -size_t CartEnhancedWidget::size() +size_t CartridgeEnhancedWidget::size() { size_t size; @@ -52,7 +52,7 @@ size_t CartEnhancedWidget::size() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::description() +string CartridgeEnhancedWidget::description() { ostringstream info; @@ -64,13 +64,13 @@ string CartEnhancedWidget::description() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartEnhancedWidget::descriptionLines() +int CartridgeEnhancedWidget::descriptionLines() { return 18; // should be enough for almost all types } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::ramDescription() +string CartridgeEnhancedWidget::ramDescription() { ostringstream info; @@ -86,7 +86,7 @@ string CartEnhancedWidget::ramDescription() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::romDescription() +string CartridgeEnhancedWidget::romDescription() { ostringstream info; size_t size; @@ -134,7 +134,7 @@ string CartEnhancedWidget::romDescription() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::bankSelect(int& ypos) +void CartridgeEnhancedWidget::bankSelect(int& ypos) { if(myCart.romBankCount() > 1) { @@ -182,7 +182,7 @@ void CartEnhancedWidget::bankSelect(int& ypos) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::bankState() +string CartridgeEnhancedWidget::bankState() { if(myCart.romBankCount() > 1) { @@ -228,7 +228,7 @@ string CartEnhancedWidget::bankState() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) +string CartridgeEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) { ostringstream info; uInt16 hotspot = myCart.hotspot(); @@ -244,13 +244,13 @@ string CartEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartEnhancedWidget::bankSegs() +int CartridgeEnhancedWidget::bankSegs() { return myCart.myBankSegs; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::saveOldState() +void CartridgeEnhancedWidget::saveOldState() { myOldState.internalRam.clear(); for(uInt32 i = 0; i < myCart.myRamSize; ++i) @@ -265,7 +265,7 @@ void CartEnhancedWidget::saveOldState() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::loadConfig() +void CartridgeEnhancedWidget::loadConfig() { if(myBankWidgets != nullptr) { @@ -281,7 +281,7 @@ void CartEnhancedWidget::loadConfig() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::handleCommand(CommandSender* sender, +void CartridgeEnhancedWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { if(cmd == kBankChanged) @@ -294,19 +294,19 @@ void CartEnhancedWidget::handleCommand(CommandSender* sender, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartEnhancedWidget::internalRamSize() +uInt32 CartridgeEnhancedWidget::internalRamSize() { return myCart.myRamSize; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 CartEnhancedWidget::internalRamRPort(int start) +uInt32 CartridgeEnhancedWidget::internalRamRPort(int start) { return ADDR_BASE + myCart.myReadOffset + start; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::internalRamDescription() +string CartridgeEnhancedWidget::internalRamDescription() { ostringstream desc; @@ -334,7 +334,7 @@ string CartEnhancedWidget::internalRamDescription() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartEnhancedWidget::internalRamOld(int start, int count) +const ByteArray& CartridgeEnhancedWidget::internalRamOld(int start, int count) { myRamOld.clear(); for(int i = 0; i < count; i++) @@ -343,7 +343,7 @@ const ByteArray& CartEnhancedWidget::internalRamOld(int start, int count) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& CartEnhancedWidget::internalRamCurrent(int start, int count) +const ByteArray& CartridgeEnhancedWidget::internalRamCurrent(int start, int count) { myRamCurrent.clear(); for(int i = 0; i < count; i++) @@ -352,19 +352,19 @@ const ByteArray& CartEnhancedWidget::internalRamCurrent(int start, int count) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartEnhancedWidget::internalRamSetValue(int addr, uInt8 value) +void CartridgeEnhancedWidget::internalRamSetValue(int addr, uInt8 value) { myCart.myRAM[addr] = value; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 CartEnhancedWidget::internalRamGetValue(int addr) +uInt8 CartridgeEnhancedWidget::internalRamGetValue(int addr) { return myCart.myRAM[addr]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartEnhancedWidget::internalRamLabel(int addr) +string CartridgeEnhancedWidget::internalRamLabel(int addr) { CartDebug& dbg = instance().debugger().cartDebug(); return dbg.getLabel(addr + ADDR_BASE + myCart.myReadOffset, false); diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index 2cbd22ced..42ffce1c9 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -27,14 +27,14 @@ namespace GUI { #include "CartDebugWidget.hxx" -class CartEnhancedWidget : public CartDebugWidget +class CartridgeEnhancedWidget : public CartDebugWidget { public: - CartEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, - const GUI::Font& nfont, - int x, int y, int w, int h, - CartridgeEnhanced& cart); - virtual ~CartEnhancedWidget() = default; + CartridgeEnhancedWidget(GuiObject* boss, const GUI::Font& lfont, + const GUI::Font& nfont, + int x, int y, int w, int h, + CartridgeEnhanced& cart); + virtual ~CartridgeEnhancedWidget() = default; protected: int initialize(); @@ -97,11 +97,11 @@ class CartEnhancedWidget : public CartDebugWidget private: // Following constructors and assignment operators not supported - CartEnhancedWidget() = delete; - CartEnhancedWidget(const CartEnhancedWidget&) = delete; - CartEnhancedWidget(CartEnhancedWidget&&) = delete; - CartEnhancedWidget& operator=(const CartEnhancedWidget&) = delete; - CartEnhancedWidget& operator=(CartEnhancedWidget&&) = delete; + CartridgeEnhancedWidget() = delete; + CartridgeEnhancedWidget(const CartridgeEnhancedWidget&) = delete; + CartridgeEnhancedWidget(CartridgeEnhancedWidget&&) = delete; + CartridgeEnhancedWidget& operator=(const CartridgeEnhancedWidget&) = delete; + CartridgeEnhancedWidget& operator=(CartridgeEnhancedWidget&&) = delete; }; #endif diff --git a/src/debugger/gui/CartF0Widget.cxx b/src/debugger/gui/CartF0Widget.cxx index c4826249e..78b13f2d9 100644 --- a/src/debugger/gui/CartF0Widget.cxx +++ b/src/debugger/gui/CartF0Widget.cxx @@ -22,7 +22,7 @@ CartridgeF0Widget::CartridgeF0Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF0& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { myHotspotDelta = 0; initialize(); diff --git a/src/debugger/gui/CartF0Widget.hxx b/src/debugger/gui/CartF0Widget.hxx index 9ba5aa3ab..017d88e78 100644 --- a/src/debugger/gui/CartF0Widget.hxx +++ b/src/debugger/gui/CartF0Widget.hxx @@ -22,7 +22,7 @@ class CartridgeF0; #include "CartEnhancedWidget.hxx" -class CartridgeF0Widget : public CartEnhancedWidget +class CartridgeF0Widget : public CartridgeEnhancedWidget { public: CartridgeF0Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF4SCWidget.cxx b/src/debugger/gui/CartF4SCWidget.cxx index b85251cbe..8f75b6fce 100644 --- a/src/debugger/gui/CartF4SCWidget.cxx +++ b/src/debugger/gui/CartF4SCWidget.cxx @@ -22,7 +22,7 @@ CartridgeF4SCWidget::CartridgeF4SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF4SC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF4SCWidget::description() ostringstream info; info << "Standard F4SC cartridge, eight 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF4SCWidget.hxx b/src/debugger/gui/CartF4SCWidget.hxx index 8c22c6d74..c6570a9fa 100644 --- a/src/debugger/gui/CartF4SCWidget.hxx +++ b/src/debugger/gui/CartF4SCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeF4SC; #include "CartEnhancedWidget.hxx" -class CartridgeF4SCWidget : public CartEnhancedWidget +class CartridgeF4SCWidget : public CartridgeEnhancedWidget { public: CartridgeF4SCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF4Widget.cxx b/src/debugger/gui/CartF4Widget.cxx index ae884cfa9..5069f029d 100644 --- a/src/debugger/gui/CartF4Widget.cxx +++ b/src/debugger/gui/CartF4Widget.cxx @@ -22,7 +22,7 @@ CartridgeF4Widget::CartridgeF4Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF4& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF4Widget::description() ostringstream info; info << "Standard F4 cartridge, eight 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF4Widget.hxx b/src/debugger/gui/CartF4Widget.hxx index 2201b246b..d444a5956 100644 --- a/src/debugger/gui/CartF4Widget.hxx +++ b/src/debugger/gui/CartF4Widget.hxx @@ -22,7 +22,7 @@ class CartridgeF4; #include "CartEnhancedWidget.hxx" -class CartridgeF4Widget : public CartEnhancedWidget +class CartridgeF4Widget : public CartridgeEnhancedWidget { public: CartridgeF4Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF6SCWidget.cxx b/src/debugger/gui/CartF6SCWidget.cxx index bfa99b5c5..d2556799c 100644 --- a/src/debugger/gui/CartF6SCWidget.cxx +++ b/src/debugger/gui/CartF6SCWidget.cxx @@ -22,7 +22,7 @@ CartridgeF6SCWidget::CartridgeF6SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF6SC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF6SCWidget::description() ostringstream info; info << "Standard F6SC cartridge, four 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF6SCWidget.hxx b/src/debugger/gui/CartF6SCWidget.hxx index 6b0aab9f8..1ed6378a7 100644 --- a/src/debugger/gui/CartF6SCWidget.hxx +++ b/src/debugger/gui/CartF6SCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeF6SC; #include "CartEnhancedWidget.hxx" -class CartridgeF6SCWidget : public CartEnhancedWidget +class CartridgeF6SCWidget : public CartridgeEnhancedWidget { public: CartridgeF6SCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF6Widget.cxx b/src/debugger/gui/CartF6Widget.cxx index 692c40258..66bcbc6a7 100644 --- a/src/debugger/gui/CartF6Widget.cxx +++ b/src/debugger/gui/CartF6Widget.cxx @@ -22,7 +22,7 @@ CartridgeF6Widget::CartridgeF6Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF6& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF6Widget::description() ostringstream info; info << "Standard F6 cartridge, four 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF6Widget.hxx b/src/debugger/gui/CartF6Widget.hxx index e36933ac7..2d0eb3734 100644 --- a/src/debugger/gui/CartF6Widget.hxx +++ b/src/debugger/gui/CartF6Widget.hxx @@ -22,7 +22,7 @@ class CartridgeF6; #include "CartEnhancedWidget.hxx" -class CartridgeF6Widget : public CartEnhancedWidget +class CartridgeF6Widget : public CartridgeEnhancedWidget { public: CartridgeF6Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF8SCWidget.cxx b/src/debugger/gui/CartF8SCWidget.cxx index 78e1c70a9..baae2360a 100644 --- a/src/debugger/gui/CartF8SCWidget.cxx +++ b/src/debugger/gui/CartF8SCWidget.cxx @@ -22,7 +22,7 @@ CartridgeF8SCWidget::CartridgeF8SCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF8SC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF8SCWidget::description() ostringstream info; info << "Standard F8SC cartridge, two 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF8SCWidget.hxx b/src/debugger/gui/CartF8SCWidget.hxx index 3332f9a4b..3f6199783 100644 --- a/src/debugger/gui/CartF8SCWidget.hxx +++ b/src/debugger/gui/CartF8SCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeF8SC; #include "CartEnhancedWidget.hxx" -class CartridgeF8SCWidget : public CartEnhancedWidget +class CartridgeF8SCWidget : public CartridgeEnhancedWidget { public: CartridgeF8SCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartF8Widget.cxx b/src/debugger/gui/CartF8Widget.cxx index ed1481b2a..d3dd88c23 100644 --- a/src/debugger/gui/CartF8Widget.cxx +++ b/src/debugger/gui/CartF8Widget.cxx @@ -22,7 +22,7 @@ CartridgeF8Widget::CartridgeF8Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeF8& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeF8Widget::description() ostringstream info; info << "Standard F8 cartridge, two 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartF8Widget.hxx b/src/debugger/gui/CartF8Widget.hxx index 34856f2ee..a0577f250 100644 --- a/src/debugger/gui/CartF8Widget.hxx +++ b/src/debugger/gui/CartF8Widget.hxx @@ -23,7 +23,7 @@ class PopUpWidget; #include "CartEnhancedWidget.hxx" -class CartridgeF8Widget : public CartEnhancedWidget +class CartridgeF8Widget : public CartridgeEnhancedWidget { public: CartridgeF8Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index 40fab9d4d..1c2562628 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -22,7 +22,7 @@ CartridgeFA2Widget::CartridgeFA2Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFA2& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { int xpos = 2, ypos = initialize(); @@ -65,7 +65,7 @@ string CartridgeFA2Widget::description() info << "Modified FA RAM+, six or seven 4K banks\n"; info << "RAM+ can be loaded/saved to Harmony flash memory by accessing $" << Common::Base::HEX4 << 0xFFF4 << "\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } @@ -91,6 +91,6 @@ void CartridgeFA2Widget::handleCommand(CommandSender* sender, break; default: - CartEnhancedWidget::handleCommand(sender, cmd, data, id); + CartridgeEnhancedWidget::handleCommand(sender, cmd, data, id); } } diff --git a/src/debugger/gui/CartFA2Widget.hxx b/src/debugger/gui/CartFA2Widget.hxx index 30b1ec81f..98508644c 100644 --- a/src/debugger/gui/CartFA2Widget.hxx +++ b/src/debugger/gui/CartFA2Widget.hxx @@ -23,7 +23,7 @@ class ButtonWidget; #include "CartEnhancedWidget.hxx" -class CartridgeFA2Widget : public CartEnhancedWidget +class CartridgeFA2Widget : public CartridgeEnhancedWidget { public: CartridgeFA2Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartFAWidget.cxx b/src/debugger/gui/CartFAWidget.cxx index b3fefff6d..aea8a2061 100644 --- a/src/debugger/gui/CartFAWidget.cxx +++ b/src/debugger/gui/CartFAWidget.cxx @@ -22,7 +22,7 @@ CartridgeFAWidget::CartridgeFAWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFA& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -33,7 +33,7 @@ string CartridgeFAWidget::description() ostringstream info; info << "CBS RAM+ FA cartridge, three 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartFAWidget.hxx b/src/debugger/gui/CartFAWidget.hxx index b7fbb3308..2d7311a71 100644 --- a/src/debugger/gui/CartFAWidget.hxx +++ b/src/debugger/gui/CartFAWidget.hxx @@ -22,7 +22,7 @@ class CartridgeFA; #include "CartEnhancedWidget.hxx" -class CartridgeFAWidget : public CartEnhancedWidget +class CartridgeFAWidget : public CartridgeEnhancedWidget { public: CartridgeFAWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartFCWidget.cxx b/src/debugger/gui/CartFCWidget.cxx index 8210eed2e..d206ec694 100644 --- a/src/debugger/gui/CartFCWidget.cxx +++ b/src/debugger/gui/CartFCWidget.cxx @@ -22,7 +22,7 @@ CartridgeFCWidget::CartridgeFCWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFC& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -39,7 +39,7 @@ string CartridgeFCWidget::description() << " $" << Common::Base::HEX4 << (hotspot + 1) << " (defines high bits)\n" << " $" << Common::Base::HEX4 << (hotspot + 4) << " (triggers bank switch)\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartFCWidget.hxx b/src/debugger/gui/CartFCWidget.hxx index f1bb4a50f..f6d56af71 100644 --- a/src/debugger/gui/CartFCWidget.hxx +++ b/src/debugger/gui/CartFCWidget.hxx @@ -22,7 +22,7 @@ class CartridgeFC; #include "CartEnhancedWidget.hxx" -class CartridgeFCWidget : public CartEnhancedWidget +class CartridgeFCWidget : public CartridgeEnhancedWidget { public: CartridgeFCWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartFEWidget.cxx b/src/debugger/gui/CartFEWidget.cxx index dbe992a4f..ce7267e6e 100644 --- a/src/debugger/gui/CartFEWidget.cxx +++ b/src/debugger/gui/CartFEWidget.cxx @@ -22,7 +22,7 @@ CartridgeFEWidget::CartridgeFEWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFE& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -35,7 +35,7 @@ string CartridgeFEWidget::description() info << "FE cartridge, two 4K banks\n" << "Monitors access to hotspot $01FE, and uses " << "upper 3 bits of databus for bank number:\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartFEWidget.hxx b/src/debugger/gui/CartFEWidget.hxx index 05a320a71..468fcc144 100644 --- a/src/debugger/gui/CartFEWidget.hxx +++ b/src/debugger/gui/CartFEWidget.hxx @@ -22,7 +22,7 @@ class CartridgeFE; #include "CartEnhancedWidget.hxx" -class CartridgeFEWidget : public CartEnhancedWidget +class CartridgeFEWidget : public CartridgeEnhancedWidget { public: CartridgeFEWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartUAWidget.cxx b/src/debugger/gui/CartUAWidget.cxx index ffaef806b..f6ae16bc7 100644 --- a/src/debugger/gui/CartUAWidget.cxx +++ b/src/debugger/gui/CartUAWidget.cxx @@ -22,7 +22,7 @@ CartridgeUAWidget::CartridgeUAWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeUA& cart, bool swapHotspots) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), mySwappedHotspots(swapHotspots) { myHotspotDelta = 0x20; @@ -35,7 +35,7 @@ string CartridgeUAWidget::description() ostringstream info; info << "8K UA cartridge" << (mySwappedHotspots ? " (swapped banks)" : "") << ", two 4K banks\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartUAWidget.hxx b/src/debugger/gui/CartUAWidget.hxx index 8a49136a2..a610a1316 100644 --- a/src/debugger/gui/CartUAWidget.hxx +++ b/src/debugger/gui/CartUAWidget.hxx @@ -22,7 +22,7 @@ class CartridgeUA; #include "CartEnhancedWidget.hxx" -class CartridgeUAWidget : public CartEnhancedWidget +class CartridgeUAWidget : public CartridgeEnhancedWidget { public: CartridgeUAWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartWDWidget.cxx b/src/debugger/gui/CartWDWidget.cxx index 16fe416ec..94d7e8060 100644 --- a/src/debugger/gui/CartWDWidget.cxx +++ b/src/debugger/gui/CartWDWidget.cxx @@ -22,7 +22,7 @@ CartridgeWDWidget::CartridgeWDWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeWD& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } diff --git a/src/debugger/gui/CartWDWidget.hxx b/src/debugger/gui/CartWDWidget.hxx index 9bab7af30..746d62e63 100644 --- a/src/debugger/gui/CartWDWidget.hxx +++ b/src/debugger/gui/CartWDWidget.hxx @@ -22,7 +22,7 @@ class CartridgeWD; #include "CartEnhancedWidget.hxx" -class CartridgeWDWidget : public CartEnhancedWidget +class CartridgeWDWidget : public CartridgeEnhancedWidget { public: CartridgeWDWidget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/debugger/gui/CartX07Widget.cxx b/src/debugger/gui/CartX07Widget.cxx index 4fb31a9ca..2c4a167d4 100644 --- a/src/debugger/gui/CartX07Widget.cxx +++ b/src/debugger/gui/CartX07Widget.cxx @@ -22,7 +22,7 @@ CartridgeX07Widget::CartridgeX07Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeX07& cart) - : CartEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { initialize(); } @@ -35,7 +35,7 @@ string CartridgeX07Widget::description() info << "64K X07 cartridge, 16 4K banks\n" << "Multiple hotspots, all below $1000\n" << "See documentation for further details\n"; - info << CartEnhancedWidget::description(); + info << CartridgeEnhancedWidget::description(); return info.str(); } diff --git a/src/debugger/gui/CartX07Widget.hxx b/src/debugger/gui/CartX07Widget.hxx index a096c5d0d..58492e7e6 100644 --- a/src/debugger/gui/CartX07Widget.hxx +++ b/src/debugger/gui/CartX07Widget.hxx @@ -22,7 +22,7 @@ class CartridgeX07; #include "CartEnhancedWidget.hxx" -class CartridgeX07Widget : public CartEnhancedWidget +class CartridgeX07Widget : public CartridgeEnhancedWidget { public: CartridgeX07Widget(GuiObject* boss, const GUI::Font& lfont, diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index c3702d118..ad97409a9 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -33,7 +33,7 @@ class System; */ class CartridgeEnhanced : public Cartridge { - friend class CartEnhancedWidget; + friend class CartridgeEnhancedWidget; public: /** From 98d42cfd94c8bb7c9bcdca55eb8c9a2a43c86e7e Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 15:14:52 +0200 Subject: [PATCH 44/69] remove dynamic casting --- src/debugger/gui/CartFA2Widget.cxx | 11 +++++------ src/debugger/gui/CartFA2Widget.hxx | 9 ++++++--- src/debugger/gui/CartWDWidget.cxx | 6 +++--- src/debugger/gui/CartWDWidget.hxx | 3 +++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index 1c2562628..e7dcba933 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -22,7 +22,8 @@ CartridgeFA2Widget::CartridgeFA2Widget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeFA2& cart) - : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + myCartFA2(cart) { int xpos = 2, ypos = initialize(); @@ -74,20 +75,18 @@ string CartridgeFA2Widget::description() void CartridgeFA2Widget::handleCommand(CommandSender* sender, int cmd, int data, int id) { - CartridgeFA2& cart = dynamic_cast(myCart); - switch(cmd) { case kFlashErase: - cart.flash(0); + myCartFA2.flash(0); break; case kFlashLoad: - cart.flash(1); + myCartFA2.flash(1); break; case kFlashSave: - cart.flash(2); + myCartFA2.flash(2); break; default: diff --git a/src/debugger/gui/CartFA2Widget.hxx b/src/debugger/gui/CartFA2Widget.hxx index 98508644c..06865c495 100644 --- a/src/debugger/gui/CartFA2Widget.hxx +++ b/src/debugger/gui/CartFA2Widget.hxx @@ -33,9 +33,7 @@ class CartridgeFA2Widget : public CartridgeEnhancedWidget virtual ~CartridgeFA2Widget() = default; private: - string manufacturer() override { return "Chris D. Walton (Star Castle 2600 Arcade)"; } - - string description() override; + CartridgeFA2& myCartFA2; ButtonWidget *myFlashErase{nullptr}, *myFlashLoad{nullptr}, *myFlashSave{nullptr}; @@ -45,6 +43,11 @@ class CartridgeFA2Widget : public CartridgeEnhancedWidget kFlashSave = 'flSV' }; + private: + string manufacturer() override { return "Chris D. Walton (Star Castle 2600 Arcade)"; } + + string description() override; + private: void handleCommand(CommandSender* sender, int cmd, int data, int id) override; diff --git a/src/debugger/gui/CartWDWidget.cxx b/src/debugger/gui/CartWDWidget.cxx index 94d7e8060..268e81bf1 100644 --- a/src/debugger/gui/CartWDWidget.cxx +++ b/src/debugger/gui/CartWDWidget.cxx @@ -22,7 +22,8 @@ CartridgeWDWidget::CartridgeWDWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeWD& cart) - : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + myCartWD(cart) { initialize(); } @@ -45,8 +46,7 @@ string CartridgeWDWidget::description() string CartridgeWDWidget::hotspotStr(int bank, int segment, bool prefix) { ostringstream info; - CartridgeWD& cart = dynamic_cast(myCart); - CartridgeWD::BankOrg banks = cart.ourBankOrg[bank]; + CartridgeWD::BankOrg banks = myCartWD.ourBankOrg[bank]; info << "(" << (prefix ? "hotspot " : "") << "$" << Common::Base::HEX1 << (myCart.hotspot() + bank) << ") [" diff --git a/src/debugger/gui/CartWDWidget.hxx b/src/debugger/gui/CartWDWidget.hxx index 746d62e63..0201cffa5 100644 --- a/src/debugger/gui/CartWDWidget.hxx +++ b/src/debugger/gui/CartWDWidget.hxx @@ -31,6 +31,9 @@ class CartridgeWDWidget : public CartridgeEnhancedWidget CartridgeWD& cart); virtual ~CartridgeWDWidget() = default; +private: + CartridgeWD& myCartWD; + private: string manufacturer() override { return "Wickstead Design"; } From db51de1bde277141a7ab4ab888a4241fc7db6143 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 16:20:37 +0200 Subject: [PATCH 45/69] order KeyMap and JoyMap when saving --- src/common/JoyMap.cxx | 28 +++++++++++++++++++++++++++- src/common/KeyMap.cxx | 24 +++++++++++++++++++++--- 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/src/common/JoyMap.cxx b/src/common/JoyMap.cxx index 2a20b4a8b..266dd5e74 100644 --- a/src/common/JoyMap.cxx +++ b/src/common/JoyMap.cxx @@ -185,9 +185,35 @@ JoyMap::JoyMappingArray JoyMap::getEventMapping(const Event::Type event, const E // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string JoyMap::saveMapping(const EventMode mode) const { + using MapType = std::pair; + std::vector sortedMap(myMap.begin(), myMap.end()); + + std::sort(sortedMap.begin(), sortedMap.end(), + [](const MapType& a, const MapType& b) + { + // Event::Type first + if(a.second != b.second) + return a.second < b.second; + + if(a.first.button != b.first.button) + return a.first.button < b.first.button; + + if(a.first.axis != b.first.axis) + return a.first.axis < b.first.axis; + + if(a.first.adir != b.first.adir) + return a.first.adir < b.first.adir; + + if(a.first.hat != b.first.hat) + return a.first.hat < b.first.hat; + + return a.first.hdir < b.first.hdir; + } + ); + ostringstream buf; - for (auto item : myMap) + for (auto item : sortedMap) { if (item.first.mode == mode) { diff --git a/src/common/KeyMap.cxx b/src/common/KeyMap.cxx index eca0369ec..47b34dc9c 100644 --- a/src/common/KeyMap.cxx +++ b/src/common/KeyMap.cxx @@ -16,11 +16,12 @@ //============================================================================ #include "KeyMap.hxx" +#include // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KeyMap::add(const Event::Type event, const Mapping& mapping) { - myMap[convertMod(mapping)] = event; + myMap[convertMod(mapping)] = event; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -32,7 +33,7 @@ void KeyMap::add(const Event::Type event, const EventMode mode, const int key, c // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KeyMap::erase(const Mapping& mapping) { - myMap.erase(convertMod(mapping)); + myMap.erase(convertMod(mapping)); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -170,9 +171,26 @@ KeyMap::MappingArray KeyMap::getEventMapping(const Event::Type event, const Even // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string KeyMap::saveMapping(const EventMode mode) const { + using MapType = std::pair; + std::vector sortedMap(myMap.begin(), myMap.end()); + + std::sort(sortedMap.begin(), sortedMap.end(), + [](const MapType& a, const MapType& b) + { + // Event::Type first + if(a.second != b.second) + return a.second < b.second; + + if(a.first.key != b.first.key) + return a.first.key < b.first.key; + + return a.first.mod < b.first.mod; + } + ); + ostringstream buf; - for (auto item : myMap) + for (auto item : sortedMap) { if (item.first.mode == mode) { From e502be6048c169e374e06883b8a9fb884e08d2c8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Apr 2020 17:21:08 +0200 Subject: [PATCH 46/69] fix checking for existing mapping when applying default mappings (fixes #620) --- src/common/PJoystickHandler.cxx | 4 ++-- src/common/PKeyboardHandler.cxx | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/common/PJoystickHandler.cxx b/src/common/PJoystickHandler.cxx index e67793078..3b2452798 100644 --- a/src/common/PJoystickHandler.cxx +++ b/src/common/PJoystickHandler.cxx @@ -250,9 +250,9 @@ void PhysicalJoystickHandler::setDefaultAction(int stick, if(updateDefaults) { - // if there is no existing mapping for the event or + // if there is no existing mapping for the event and // the default mapping for the event is unused, set default key for event - if(j->joyMap.getEventMapping(map.event, mode).size() == 0 || + if(j->joyMap.getEventMapping(map.event, mode).size() == 0 && !j->joyMap.check(mode, map.button, map.axis, map.adir, map.hat, map.hdir)) { if (map.hat == JOY_CTRL_NONE) diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index bc2c545ca..b1a16eeef 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -80,11 +80,16 @@ void PhysicalKeyboardHandler::setDefaultKey(EventMapping map, Event::Type event, if (updateDefaults) { - // if there is no existing mapping for the event or + if (map.event == Event::ToggleSAPortOrder) + int i = 0; + + // if there is no existing mapping for the event and // the default mapping for the event is unused, set default key for event - if (myKeyMap.getEventMapping(map.event, mode).size() == 0 || + if (myKeyMap.getEventMapping(map.event, mode).size() == 0 && !myKeyMap.check(mode, map.key, map.mod)) { + if (map.event == Event::ConsoleReset) + int i = 0; addMapping(map.event, mode, map.key, StellaMod(map.mod)); } } From 4a6e14d306017398d4fa8c52b29caca20d6ba487 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Apr 2020 10:08:36 +0200 Subject: [PATCH 47/69] add 3EX bankswitching type (addresses #619) (TODO: debugger details) --- src/debugger/gui/Cart3EWidget.cxx | 2 +- src/debugger/gui/CartEnhancedWidget.cxx | 2 +- src/emucore/Bankswitch.cxx | 5 +- src/emucore/Bankswitch.hxx | 16 ++--- src/emucore/Cart3E.hxx | 6 +- src/emucore/Cart3EPlus.hxx | 2 +- src/emucore/Cart3EX.cxx | 27 ++++++++ src/emucore/Cart3EX.hxx | 87 +++++++++++++++++++++++++ src/emucore/Cart4KSC.hxx | 2 +- src/emucore/CartBFSC.hxx | 2 +- src/emucore/CartCV.hxx | 2 +- src/emucore/CartDFSC.hxx | 2 +- src/emucore/CartDetector.cxx | 33 ++++++++-- src/emucore/CartDetector.hxx | 5 ++ src/emucore/CartEFSC.hxx | 2 +- src/emucore/CartEnhanced.cxx | 4 +- src/emucore/CartEnhanced.hxx | 6 +- src/emucore/CartF4SC.hxx | 2 +- src/emucore/CartF6SC.hxx | 2 +- src/emucore/CartF8SC.hxx | 2 +- src/emucore/CartFA.hxx | 2 +- src/emucore/CartWD.hxx | 2 +- src/emucore/module.mk | 1 + src/windows/Stella.vcxproj | 2 + src/windows/Stella.vcxproj.filters | 6 ++ 25 files changed, 190 insertions(+), 34 deletions(-) create mode 100644 src/emucore/Cart3EX.cxx create mode 100644 src/emucore/Cart3EX.hxx diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index 287bdd112..b2ab3584c 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -169,7 +169,7 @@ string Cartridge3EWidget::bankState() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 Cartridge3EWidget::internalRamSize() { - return 32*1024; + return uInt32(myCart.myRamSize); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index d4c6b4cf0..35c5f9e25 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -296,7 +296,7 @@ void CartridgeEnhancedWidget::handleCommand(CommandSender* sender, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 CartridgeEnhancedWidget::internalRamSize() { - return myCart.myRamSize; + return uInt32(myCart.myRamSize); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 7ce52db58..1b907eea7 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -104,7 +104,8 @@ Bankswitch::BSList = {{ { "64IN1" , "64IN1 Multicart (128/256K)" }, { "128IN1" , "128IN1 Multicart (256/512K)" }, { "2K" , "2K (32-2048 bytes Atari)" }, - { "3E" , "3E (32K Tigervision)" }, + { "3E" , "3E (Tigervision, 32K RAM)" }, + { "3EX" , "3EX (Tigervision, 256K RAM)" }, { "3E+" , "3E+ (TJ modified 3E)" }, { "3F" , "3F (512K Tigervision)" }, { "4A50" , "4A50 (64K 4A50 + RAM)" }, @@ -178,6 +179,7 @@ Bankswitch::ExtensionMap Bankswitch::ourExtensions = { { "128N1" , Bankswitch::Type::_128IN1 }, { "2K" , Bankswitch::Type::_2K }, { "3E" , Bankswitch::Type::_3E }, + { "3EX" , Bankswitch::Type::_3EX }, { "3EP" , Bankswitch::Type::_3EP }, { "3E+" , Bankswitch::Type::_3EP }, { "3F" , Bankswitch::Type::_3F }, @@ -245,6 +247,7 @@ Bankswitch::NameToTypeMap Bankswitch::ourNameToTypes = { { "2K" , Bankswitch::Type::_2K }, { "3E" , Bankswitch::Type::_3E }, { "3E+" , Bankswitch::Type::_3EP }, + { "3EX" , Bankswitch::Type::_3EX }, { "3F" , Bankswitch::Type::_3F }, { "4A50" , Bankswitch::Type::_4A50 }, { "4K" , Bankswitch::Type::_4K }, diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx index 9021a21ed..0dd3871c7 100644 --- a/src/emucore/Bankswitch.hxx +++ b/src/emucore/Bankswitch.hxx @@ -38,14 +38,14 @@ class Bankswitch public: // Currently supported bankswitch schemes enum class Type { - _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, - _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, - _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, - _CM, _CTY, _CV, _DF, _DFSC, _DPC, _DPCP, - _E0, _E7, _E78K, _EF, _EFSC, _F0, _F4, - _F4SC, _F6, _F6SC, _F8, _F8SC, _FA, _FA2, - _FC, _FE, _MDM, _SB, _UA, _UASW, _WD, - _WDSW, _X07, + _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, + _64IN1, _128IN1, _2K, _3E, _3EX, _3EP, _3F, + _4A50, _4K, _4KSC, _AR, _BF, _BFSC, _BUS, + _CDF, _CM, _CTY, _CV, _DF, _DFSC, _DPC, + _DPCP, _E0, _E7, _E78K, _EF, _EFSC, _F0, + _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, _FA, + _FA2, _FC, _FE, _MDM, _SB, _UA, _UASW, + _WD, _WDSW, _X07, #ifdef CUSTOM_ARM _CUSTOM, #endif diff --git a/src/emucore/Cart3E.hxx b/src/emucore/Cart3E.hxx index 4871c67a6..613fa610c 100644 --- a/src/emucore/Cart3E.hxx +++ b/src/emucore/Cart3E.hxx @@ -116,15 +116,15 @@ class Cartridge3E : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value) override; - private: + protected: // log(ROM bank segment size) / log(2) static constexpr uInt16 BANK_SHIFT = 11; // = 2K = 0x0800 - // The size of extra RAM in ROM address space + // The number of RAM banks static constexpr uInt16 RAM_BANKS = 32; // RAM size - static constexpr uInt16 RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; + static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x8000; // Write port for extra RAM is at high address static constexpr bool RAM_HIGH_WP = true; diff --git a/src/emucore/Cart3EPlus.hxx b/src/emucore/Cart3EPlus.hxx index 1a2440e40..209ab89dc 100644 --- a/src/emucore/Cart3EPlus.hxx +++ b/src/emucore/Cart3EPlus.hxx @@ -165,7 +165,7 @@ class Cartridge3EPlus: public CartridgeEnhanced static constexpr uInt16 RAM_BANKS = 64; // RAM size - static constexpr uInt16 RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; + static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; // Write port for extra RAM is at high address static constexpr bool RAM_HIGH_WP = true; diff --git a/src/emucore/Cart3EX.cxx b/src/emucore/Cart3EX.cxx new file mode 100644 index 000000000..4f9c7ac45 --- /dev/null +++ b/src/emucore/Cart3EX.cxx @@ -0,0 +1,27 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#include "Cart3EX.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Cartridge3EX::Cartridge3EX(const ByteBuffer& image, size_t size, + const string& md5, const Settings& settings) + : Cartridge3E(image, size, md5, settings) +{ + myRamSize = RAM_SIZE; + myRamBankCount = RAM_BANKS; +} diff --git a/src/emucore/Cart3EX.hxx b/src/emucore/Cart3EX.hxx new file mode 100644 index 000000000..99181cffd --- /dev/null +++ b/src/emucore/Cart3EX.hxx @@ -0,0 +1,87 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2020 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef CARTRIDGE3EX_HXX +#define CARTRIDGE3EX_HXX + +class System; + +#include "Cart3E.hxx" +#ifdef DEBUGGER_SUPPORT +//#include "Cart3EXWidget.hxx" +#endif + +/** + This is an enhanced version of 3E which supports up to 256KB RAM. + + @author Thomas Jentzsch +*/ + +class Cartridge3EX : public Cartridge3E +{ + //friend class Cartridge3EXWidget; + +public: + /** + Create a new cartridge using the specified image and size + + @param image Pointer to the ROM image + @param size The size of the ROM image + @param md5 The md5sum of the ROM image + @param settings A reference to the various settings (read-only) + */ + Cartridge3EX(const ByteBuffer& image, size_t size, const string& md5, + const Settings& settings); + virtual ~Cartridge3EX() = default; + +public: + /** + Get a descriptor for the device name (used in error checking). + + @return The name of the object + */ + string name() const override { return "Cartridge3EX"; } + +#ifdef DEBUGGER_SUPPORT + ///** + // Get debugger widget responsible for accessing the inner workings + // of the cart. + //*/ + //CartDebugWidget* debugWidget(GuiObject* boss, const GUI::Font& lfont, + // const GUI::Font& nfont, int x, int y, int w, int h) override + //{ + // return new Cartridge3EXWidget(boss, lfont, nfont, x, y, w, h, *this); + //} +#endif + +private: + // The number of RAM banks + static constexpr uInt16 RAM_BANKS = 256; + + // RAM size + static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 256K = 0x40000; + +private: + // Following constructors and assignment operators not supported + Cartridge3EX() = delete; + Cartridge3EX(const Cartridge3EX&) = delete; + Cartridge3EX(Cartridge3EX&&) = delete; + Cartridge3EX& operator=(const Cartridge3EX&) = delete; + Cartridge3EX& operator=(Cartridge3EX&&) = delete; +}; + +#endif diff --git a/src/emucore/Cart4KSC.hxx b/src/emucore/Cart4KSC.hxx index 64dde3c39..3f28de9ce 100644 --- a/src/emucore/Cart4KSC.hxx +++ b/src/emucore/Cart4KSC.hxx @@ -72,7 +72,7 @@ class Cartridge4KSC : public Cartridge4K private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartBFSC.hxx b/src/emucore/CartBFSC.hxx index 35c4b84ca..9bb22aa0a 100644 --- a/src/emucore/CartBFSC.hxx +++ b/src/emucore/CartBFSC.hxx @@ -74,7 +74,7 @@ class CartridgeBFSC : public CartridgeBF private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr uInt32 RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartCV.hxx b/src/emucore/CartCV.hxx index 1b4773e5e..a5403b19f 100644 --- a/src/emucore/CartCV.hxx +++ b/src/emucore/CartCV.hxx @@ -89,7 +89,7 @@ class CartridgeCV : public CartridgeEnhanced static constexpr uInt16 BANK_SHIFT = 11; // 2K // RAM size - static constexpr uInt16 RAM_SIZE = 0x400; // 1K + static constexpr uInt32 RAM_SIZE = 0x400; // 1K // Write port for extra RAM is at high address static constexpr bool RAM_HIGH_WP = true; diff --git a/src/emucore/CartDFSC.hxx b/src/emucore/CartDFSC.hxx index cf3661039..637dde3da 100644 --- a/src/emucore/CartDFSC.hxx +++ b/src/emucore/CartDFSC.hxx @@ -72,7 +72,7 @@ class CartridgeDFSC : public CartridgeDF private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index b40e75c49..8544a72f0 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -20,6 +20,7 @@ #include "Cart0840.hxx" #include "Cart2K.hxx" #include "Cart3E.hxx" +#include "Cart3EX.hxx" #include "Cart3EPlus.hxx" #include "Cart3F.hxx" #include "Cart4A50.hxx" @@ -250,6 +251,8 @@ CartDetector::createFromImage(const ByteBuffer& image, size_t size, Bankswitch:: return make_unique(image, size, md5, settings); case Bankswitch::Type::_3E: return make_unique(image, size, md5, settings); + case Bankswitch::Type::_3EX: + return make_unique(image, size, md5, settings); case Bankswitch::Type::_3EP: return make_unique(image, size, md5, settings); case Bankswitch::Type::_3F: @@ -380,6 +383,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si type = Bankswitch::Type::_4K; else if(isProbablyE0(image, size)) type = Bankswitch::Type::_E0; + else if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) @@ -419,6 +424,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si type = Bankswitch::Type::_E7; else if (isProbablyFC(image, size)) type = Bankswitch::Type::_FC; + else if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; /* no known 16K 3F ROMS @@ -445,6 +452,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si type = Bankswitch::Type::_CTY; else if(isProbablySC(image, size)) type = Bankswitch::Type::_F4SC; + else if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) @@ -471,7 +480,9 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si } else if(size == 64_KB) { - if(isProbably3E(image, size)) + if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; + else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) type = Bankswitch::Type::_3F; @@ -486,7 +497,9 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si } else if(size == 128_KB) { - if(isProbably3E(image, size)) + if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; + else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbablyDF(image, size, type)) ; // type has been set directly in the function @@ -499,7 +512,9 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si } else if(size == 256_KB) { - if(isProbably3E(image, size)) + if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; + else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbablyBF(image, size, type)) ; // type has been set directly in the function @@ -510,7 +525,9 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si } else // what else can we do? { - if(isProbably3E(image, size)) + if(isProbably3EX(image, size)) + type = Bankswitch::Type::_3EX; + else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) type = Bankswitch::Type::_3F; @@ -632,6 +649,14 @@ bool CartDetector::isProbably3E(const ByteBuffer& image, size_t size) && searchForBytes(image.get(), size, signature2, 2, 2); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartDetector::isProbably3EX(const ByteBuffer& image, size_t size) +{ + // 3EX cart have at least 2 occurrences of the string "3EX" + uInt8 _3EX[] = { '3', 'E', 'X'}; + return searchForBytes(image.get(), size, _3EX, 3, 2); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbably3EPlus(const ByteBuffer& image, size_t size) { diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index 63a98b053..8dc734b42 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -130,6 +130,11 @@ class CartDetector */ static bool isProbably3E(const ByteBuffer& image, size_t size); + /** + Returns true if the image is probably a 3EX bankswitching cartridge + */ + static bool isProbably3EX(const ByteBuffer& image, size_t size); + /** Returns true if the image is probably a 3E+ bankswitching cartridge */ diff --git a/src/emucore/CartEFSC.hxx b/src/emucore/CartEFSC.hxx index d204d1ef5..f6c7e40ea 100644 --- a/src/emucore/CartEFSC.hxx +++ b/src/emucore/CartEFSC.hxx @@ -76,7 +76,7 @@ class CartridgeEFSC : public CartridgeEF private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 3e69a06f8..0bb6f54fb 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -35,13 +35,13 @@ CartridgeEnhanced::CartridgeEnhanced(const ByteBuffer& image, size_t size, void CartridgeEnhanced::install(System& system) { // limit banked RAM size to the size of one RAM bank - uInt16 ramSize = myRamBankCount > 0 ? 1 << (myBankShift - 1) : myRamSize; + uInt32 ramSize = myRamBankCount > 0 ? 1 << (myBankShift - 1) : uInt32(myRamSize); // calculate bank switching and RAM sizes and masks myBankSize = 1 << myBankShift; // e.g. = 2 ^ 12 = 4K = 0x1000 myBankMask = myBankSize - 1; // e.g. = 0x0FFF myBankSegs = 1 << (MAX_BANK_SHIFT - myBankShift); // e.g. = 1 - myRomOffset = myRamBankCount > 0 ? 0 : myRamSize * 2; + myRomOffset = myRamBankCount > 0 ? 0 : uInt32(myRamSize) * 2; myRamMask = ramSize - 1; // e.g. = 0xFFFF (doesn't matter for RAM size 0) myWriteOffset = myRamWpHigh ? ramSize : 0; // e.g. = 0x0000 myReadOffset = myRamWpHigh ? 0 : ramSize; // e.g. = 0x0080 diff --git a/src/emucore/CartEnhanced.hxx b/src/emucore/CartEnhanced.hxx index ad97409a9..743a4b50e 100644 --- a/src/emucore/CartEnhanced.hxx +++ b/src/emucore/CartEnhanced.hxx @@ -183,7 +183,7 @@ class CartridgeEnhanced : public Cartridge protected: // The extra RAM size - uInt16 myRamSize{RAM_SIZE}; // default 0 + size_t myRamSize{RAM_SIZE}; // default 0 // The number of RAM banks uInt16 myRamBankCount{RAM_BANKS}; // default 0 @@ -246,9 +246,9 @@ class CartridgeEnhanced : public Cartridge static constexpr uInt16 BANK_SHIFT = 12; // default = 4K // The size of extra RAM in ROM address space - static constexpr uInt16 RAM_SIZE = 0; // default = none + static constexpr size_t RAM_SIZE = 0; // default = none - // The size of extra RAM in ROM address space + // The number of RAM banks static constexpr uInt16 RAM_BANKS = 0; // Write port for extra RAM is at low address by default diff --git a/src/emucore/CartF4SC.hxx b/src/emucore/CartF4SC.hxx index 5f49a33a6..58b255e42 100644 --- a/src/emucore/CartF4SC.hxx +++ b/src/emucore/CartF4SC.hxx @@ -69,7 +69,7 @@ class CartridgeF4SC : public CartridgeF4 private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; // RAM mask static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; diff --git a/src/emucore/CartF6SC.hxx b/src/emucore/CartF6SC.hxx index a791a538d..c61c9715f 100644 --- a/src/emucore/CartF6SC.hxx +++ b/src/emucore/CartF6SC.hxx @@ -69,7 +69,7 @@ class CartridgeF6SC : public CartridgeF6 private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; // RAM mask static constexpr uInt16 RAM_MASK = RAM_SIZE - 1; diff --git a/src/emucore/CartF8SC.hxx b/src/emucore/CartF8SC.hxx index 25fe0dfe3..c5a005543 100644 --- a/src/emucore/CartF8SC.hxx +++ b/src/emucore/CartF8SC.hxx @@ -69,7 +69,7 @@ class CartridgeF8SC : public CartridgeF8 private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x80; + static constexpr size_t RAM_SIZE = 0x80; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartFA.hxx b/src/emucore/CartFA.hxx index 920f2bdec..a2f197b75 100644 --- a/src/emucore/CartFA.hxx +++ b/src/emucore/CartFA.hxx @@ -79,7 +79,7 @@ class CartridgeFA : public CartridgeEnhanced private: // RAM size - static constexpr uInt16 RAM_SIZE = 0x100; + static constexpr size_t RAM_SIZE = 0x100; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 1fd42ac71..6feb6be63 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -176,7 +176,7 @@ class CartridgeWD : public CartridgeEnhanced static constexpr uInt16 BANK_SHIFT = 10; // = 1K = 0x0400 // RAM size - static constexpr uInt16 RAM_SIZE = 0x40; + static constexpr size_t RAM_SIZE = 0x40; // Write port for extra RAM is at low address by default static constexpr bool RAM_HIGH_WP = true; diff --git a/src/emucore/module.mk b/src/emucore/module.mk index dc953b86e..e0dd4f96f 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -11,6 +11,7 @@ MODULE_OBJS := \ src/emucore/Cart2K.o \ src/emucore/Cart3E.o \ src/emucore/Cart3EPlus.o \ + src/emucore/Cart3EX.o \ src/emucore/Cart3F.o \ src/emucore/Cart4A50.o \ src/emucore/Cart4K.o \ diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 28b0efe29..1095f2c09 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -711,6 +711,7 @@ + @@ -1727,6 +1728,7 @@ + diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 536cf54eb..fb763da4c 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -999,6 +999,9 @@ Source Files\debugger + + Source Files\emucore + @@ -2051,6 +2054,9 @@ Header Files\debugger + + Header Files\emucore + From 579f73d1eaea9fa7762e3b144e8079883886545a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Apr 2020 12:50:26 +0200 Subject: [PATCH 48/69] 3EX now reads number of RAM banks - 1 from 0xfffa --- Changes.txt | 2 ++ docs/index.html | 7 ++++--- src/emucore/Cart3EX.cxx | 3 ++- src/emucore/Cart3EX.hxx | 3 --- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Changes.txt b/Changes.txt index 61989ecd9..20ed3e411 100644 --- a/Changes.txt +++ b/Changes.txt @@ -32,6 +32,8 @@ * Restored 'cfg' directory for Distella config files. + * Added 3EX bank switching type. + * Removed unused CV+ and DASH bank switching types. -Have fun! diff --git a/docs/index.html b/docs/index.html index c7185ebe1..6f9fb85a9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3790,8 +3790,9 @@ Ms Pac-Man (Stella extended codes): - - + + + @@ -3826,7 +3827,7 @@ Ms Pac-Man (Stella extended codes): - + diff --git a/src/emucore/Cart3EX.cxx b/src/emucore/Cart3EX.cxx index 4f9c7ac45..889935a07 100644 --- a/src/emucore/Cart3EX.cxx +++ b/src/emucore/Cart3EX.cxx @@ -23,5 +23,6 @@ Cartridge3EX::Cartridge3EX(const ByteBuffer& image, size_t size, : Cartridge3E(image, size, md5, settings) { myRamSize = RAM_SIZE; - myRamBankCount = RAM_BANKS; + // 0xFFFA contains RAM bank count - 1; + myRamBankCount = image[size - 6] + 1; } diff --git a/src/emucore/Cart3EX.hxx b/src/emucore/Cart3EX.hxx index 99181cffd..e7ba2ecfd 100644 --- a/src/emucore/Cart3EX.hxx +++ b/src/emucore/Cart3EX.hxx @@ -69,9 +69,6 @@ public: #endif private: - // The number of RAM banks - static constexpr uInt16 RAM_BANKS = 256; - // RAM size static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 256K = 0x40000; From a67ea71dcadaab40c295a1b786d3e59369d9c8b9 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Apr 2020 19:58:40 +0200 Subject: [PATCH 49/69] refactored Cart3EWidget (also supports 3EX) added RAM bank support to CartEnhancedWidget --- src/common/PKeyboardHandler.cxx | 5 - src/debugger/gui/Cart3EWidget.cxx | 225 ++++++++++-------------- src/debugger/gui/Cart3EWidget.hxx | 42 ++--- src/debugger/gui/CartEnhancedWidget.cxx | 75 +++++--- src/debugger/gui/CartEnhancedWidget.hxx | 2 + src/emucore/Cart3EX.cxx | 2 +- src/emucore/Cart3EX.hxx | 16 -- 7 files changed, 157 insertions(+), 210 deletions(-) diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index b1a16eeef..57a3bfd4b 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -80,16 +80,11 @@ void PhysicalKeyboardHandler::setDefaultKey(EventMapping map, Event::Type event, if (updateDefaults) { - if (map.event == Event::ToggleSAPortOrder) - int i = 0; - // if there is no existing mapping for the event and // the default mapping for the event is unused, set default key for event if (myKeyMap.getEventMapping(map.event, mode).size() == 0 && !myKeyMap.check(mode, map.key, map.mod)) { - if (map.event == Event::ConsoleReset) - int i = 0; addMapping(map.event, mode, map.key, StellaMod(map.mod)); } } diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index b2ab3584c..4683ea7d4 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -23,129 +23,134 @@ Cartridge3EWidget::Cartridge3EWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge3E& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart), - myNumRomBanks(myCart.romBankCount()), - myNumRamBanks(myCart.ramBankCount()) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - size_t size = cart.mySize; - - ostringstream info; - info << "3E cartridge - (3F + RAM)\n" - << " 2-256 2K ROM (currently " << myNumRomBanks << "), 32 1K RAM\n" - << "First 2K (ROM) selected by writing to $3F\n" - "First 2K (RAM) selected by writing to $3E\n" - " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" - "Last 2K always points to last 2K of ROM\n"; - if(cart.startBank() < myNumRomBanks) - info << "Startup bank = " << cart.startBank() << " (ROM)\n"; - else - info << "Startup bank = " << (cart.startBank()-myNumRomBanks) << " (RAM)\n"; - - // Eventually, we should query this from the debugger/disassembler - uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; - start -= start % 0x1000; - info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; - - int xpos = 2, - ypos = addBaseInformation(size, "TigerVision", info.str()) + myLineHeight; - - VariantList romitems; - for(uInt32 i = 0; i < myNumRomBanks; ++i) - VarList::push_back(romitems, i); - VarList::push_back(romitems, "Inactive", ""); - - VariantList ramitems; - for(uInt32 i = 0; i < myNumRamBanks; ++i) - VarList::push_back(ramitems, i); - VarList::push_back(ramitems, "Inactive", ""); - - ostringstream label; - label << "Set bank ($" << Common::Base::HEX4 << start << " - $" - << (start+0x7FF) << "): "; - - new StaticTextWidget(_boss, _font, xpos, ypos, _font.getStringWidth(label.str()), - myFontHeight, label.str(), TextAlign::Left); - ypos += myLineHeight + 8; - - xpos += 40; - myROMBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($3E) "), - myLineHeight, romitems, "ROM ($3F) ", - _font.getStringWidth("ROM ($3F) "), kROMBankChanged); - myROMBank->setTarget(this); - addFocusWidget(myROMBank); - - xpos += myROMBank->getWidth() + 20; - myRAMBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($3E) "), - myLineHeight, ramitems, "RAM ($3E) ", - _font.getStringWidth("RAM ($3E) "), kRAMBankChanged); - myRAMBank->setTarget(this); - addFocusWidget(myRAMBank); + initialize(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EWidget::saveOldState() +string Cartridge3EWidget::description() { - myOldState.internalram.clear(); + ostringstream info; + size_t size; + const uInt8* image = myCart.getImage(size); + uInt16 numRomBanks = myCart.romBankCount(); + uInt16 numRamBanks = myCart.ramBankCount(); - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); - myOldState.bank = myCart.getBank(); + info << "3E cartridge (3F + RAM),\n" + << " " << numRomBanks << " 2K ROM banks, " << numRamBanks << " 1K RAM banks\n" + << "First 2K (ROM) selected by writing to $3F\n" + "First 2K (RAM) selected by writing to $3E\n"; + info << CartridgeEnhancedWidget::ramDescription(); + info << "Last 2K always points to last 2K of ROM\n"; + + if(myCart.startBank() < numRomBanks) + info << "Startup bank = " << myCart.startBank() << " (ROM)\n"; + else + info << "Startup bank = " << (myCart.startBank() - numRomBanks) << " (RAM)\n"; + + // Eventually, we should query this from the debugger/disassembler + uInt16 start = (image[size-3] << 8) | image[size-4]; + start -= start % 0x1000; + info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; + + return info.str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Cartridge3EWidget::bankList(uInt16 bankCount, int seg, VariantList& items, int& width) +{ + CartridgeEnhancedWidget::bankList(bankCount, seg, items, width); + + VarList::push_back(items, "Inactive", ""); + width = _font.getStringWidth("Inactive"); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Cartridge3EWidget::bankSelect(int& ypos) +{ + int xpos = 2; + VariantList items; + int pw; + + myBankWidgets = make_unique(2); + + bankList(myCart.romBankCount(), 0, items, pw); + myBankWidgets[0] = + new PopUpWidget(_boss, _font, xpos, ypos - 2, pw, + myLineHeight, items, "Set bank ", + _font.getStringWidth("Set bank "), kBankChanged); + myBankWidgets[0]->setTarget(this); + myBankWidgets[0]->setID(0); + addFocusWidget(myBankWidgets[0]); + + StaticTextWidget* t = new StaticTextWidget(_boss, _font, myBankWidgets[0]->getRight(), ypos - 1, " (ROM)"); + + xpos = t->getRight() + 20; + items.clear(); + bankList(myCart.ramBankCount(), 0, items, pw); + myBankWidgets[1] = + new PopUpWidget(_boss, _font, xpos, ypos - 2, pw, + myLineHeight, items, "", 0, kRAMBankChanged); + myBankWidgets[1]->setTarget(this); + myBankWidgets[1]->setID(1); + addFocusWidget(myBankWidgets[1]); + + new StaticTextWidget(_boss, _font, myBankWidgets[1]->getRight(), ypos - 1, " (RAM)"); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EWidget::loadConfig() { + uInt16 oldBank = myOldState.banks[0]; + uInt16 bank = myCart.getBank(); + if(myCart.getBank() < myCart.romBankCount()) { - myROMBank->setSelectedIndex(myCart.getBank() % myNumRomBanks, myOldState.bank != myCart.getBank()); - myRAMBank->setSelectedMax(myOldState.bank >= myCart.romBankCount()); + myBankWidgets[0]->setSelectedIndex(bank, oldBank != bank); + myBankWidgets[1]->setSelectedMax(oldBank >= myCart.romBankCount()); } else { - myROMBank->setSelectedMax(myOldState.bank < myCart.romBankCount()); - myRAMBank->setSelectedIndex(myCart.getBank() - myCart.romBankCount(), myOldState.bank != myCart.getBank()); + myBankWidgets[0]->setSelectedMax(oldBank < myCart.romBankCount()); + myBankWidgets[1]->setSelectedIndex(bank - myCart.romBankCount(), oldBank != bank); } CartDebugWidget::loadConfig(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) +void Cartridge3EWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { uInt16 bank = 0; - if(cmd == kROMBankChanged) + if(cmd == kBankChanged) { - if(myROMBank->getSelected() < int(myNumRomBanks)) + if(myBankWidgets[0]->getSelected() < myCart.romBankCount()) { - bank = myROMBank->getSelected(); - myRAMBank->setSelectedMax(); + bank = myBankWidgets[0]->getSelected(); + myBankWidgets[1]->setSelectedMax(); } else { bank = myCart.romBankCount(); // default to first RAM bank - myRAMBank->setSelectedIndex(0); + myBankWidgets[1]->setSelectedIndex(0); } } else if(cmd == kRAMBankChanged) { - if(myRAMBank->getSelected() < int(myNumRamBanks)) + if(myBankWidgets[1]->getSelected() < myCart.ramBankCount()) { - myROMBank->setSelectedMax(); - bank = myRAMBank->getSelected() + myCart.romBankCount(); + myBankWidgets[0]->setSelectedMax(); + bank = myBankWidgets[1]->getSelected() + myCart.romBankCount(); } else { bank = 0; // default to first ROM bank - myROMBank->setSelectedIndex(0); + myBankWidgets[0]->setSelectedIndex(0); } } - myCart.unlockBank(); myCart.bank(bank); myCart.lockBank(); @@ -156,65 +161,13 @@ void Cartridge3EWidget::handleCommand(CommandSender* sender, string Cartridge3EWidget::bankState() { ostringstream& buf = buffer(); - uInt16 bank = myCart.getBank(); + if(bank < myCart.romBankCount()) - buf << "ROM bank #" << std::dec << bank % myNumRomBanks << ", RAM inactive"; + buf << "ROM bank #" << std::dec << bank % myCart.romBankCount() << ", RAM inactive"; else - buf << "ROM inactive, RAM bank #" << std::dec << bank % myNumRamBanks; + buf << "ROM inactive, RAM bank #" + << std::dec << (bank - myCart.romBankCount()) % myCart.ramBankCount(); return buf.str(); } - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EWidget::internalRamSize() -{ - return uInt32(myCart.myRamSize); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EWidget::internalRamRPort(int start) -{ - return 0x0000 + start; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge3EWidget::internalRamDescription() -{ - ostringstream desc; - desc << "Accessible 1K at a time via:\n" - << " $F000 - $F3FF used for Read Access\n" - << " $F400 - $F7FF used for Write Access"; - - return desc.str(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3EWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} diff --git a/src/debugger/gui/Cart3EWidget.hxx b/src/debugger/gui/Cart3EWidget.hxx index 623a8877e..e1d4f266b 100644 --- a/src/debugger/gui/Cart3EWidget.hxx +++ b/src/debugger/gui/Cart3EWidget.hxx @@ -19,11 +19,12 @@ #define CARTRIDGE3E_WIDGET_HXX class Cartridge3E; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge3EWidget : public CartDebugWidget +// Note: This class supports 3EX too + +class Cartridge3EWidget : public CartridgeEnhancedWidget { public: Cartridge3EWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,39 +34,28 @@ class Cartridge3EWidget : public CartDebugWidget virtual ~Cartridge3EWidget() = default; private: - Cartridge3E& myCart; - const uInt32 myNumRomBanks{0}; - const uInt32 myNumRamBanks{0}; - PopUpWidget *myROMBank{nullptr}, *myRAMBank{nullptr}; - - struct CartState { - ByteArray internalram; - uInt16 bank; - }; - CartState myOldState; - enum { - kROMBankChanged = 'rmCH', kRAMBankChanged = 'raCH' }; private: - void saveOldState() override; + string manufacturer() override { return "Andrew Davie & Thomas Jentzsch"; } + + string description() override; + + void bankList(uInt16 bankCount, int seg, VariantList& items, int& width) override; + + void bankSelect(int& ypos) override; + + int bankSegs() override { return 1; } + void loadConfig() override; + void handleCommand(CommandSender* sender, int cmd, int data, int id) override; string bankState() override; - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - // end of functions for Cartridge RAM tab - + private: // Following constructors and assignment operators not supported Cartridge3EWidget() = delete; Cartridge3EWidget(const Cartridge3EWidget&) = delete; diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index 35c5f9e25..a59e4f985 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -74,13 +74,15 @@ string CartridgeEnhancedWidget::ramDescription() { ostringstream info; - info << myCart.myRamSize << " bytes RAM @ " - << "$" << Common::Base::HEX4 << ADDR_BASE << " - " - << "$" << (ADDR_BASE | (myCart.myRamSize * 2 - 1)) << "\n" - << " $" << (ADDR_BASE | myCart.myReadOffset) - << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) << " (R)" + if(myCart.ramBankCount() == 0) + info << myCart.myRamSize << " bytes RAM @ " + << "$" << Common::Base::HEX4 << ADDR_BASE << " - " + << "$" << (ADDR_BASE | (myCart.myRamSize * 2 - 1)) << "\n"; + + info << " $" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) << " (R)" << ", $" << (ADDR_BASE | myCart.myWriteOffset) - << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamSize - 1)) << " (W)\n"; + << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamMask)) << " (W)\n"; return info.str(); } @@ -133,6 +135,23 @@ string CartridgeEnhancedWidget::romDescription() return info.str(); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartridgeEnhancedWidget::bankList(uInt16 bankCount, int seg, VariantList& items, int& width) +{ + width = 0; + + for(int bank = 0; bank < bankCount; ++bank) + { + ostringstream buf; + + buf << std::setw(bank < 10 ? 2 : 1) << "#" << std::dec << bank; + if(myCart.hotspot() != 0 && myHotspotDelta > 0) + buf << " " << hotspotStr(bank, seg); + VarList::push_back(items, buf.str()); + width = std::max(width, _font.getStringWidth(buf.str())); + } +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEnhancedWidget::bankSelect(int& ypos) { @@ -148,17 +167,7 @@ void CartridgeEnhancedWidget::bankSelect(int& ypos) VariantList items; int pw = 0; - for(int bank = 0; bank < myCart.romBankCount(); ++bank) - { - ostringstream buf; - - buf << std::setw(bank < 10 ? 2 : 1) << "#" << std::dec << bank; - //if(myCart.hotspot() >= 0x100 && myHotspotDelta > 0) - if(myCart.hotspot() != 0 && myHotspotDelta > 0) - buf << " " << hotspotStr(bank, seg); - VarList::push_back(items, buf.str()); - pw = std::max(pw, _font.getStringWidth(buf.str())); - } + bankList(myCart.romBankCount(), seg, items, pw); // create widgets ostringstream buf; @@ -282,7 +291,7 @@ void CartridgeEnhancedWidget::loadConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEnhancedWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) + int cmd, int data, int id) { if(cmd == kBankChanged) { @@ -302,31 +311,45 @@ uInt32 CartridgeEnhancedWidget::internalRamSize() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 CartridgeEnhancedWidget::internalRamRPort(int start) { - return ADDR_BASE + myCart.myReadOffset + start; + if(myCart.ramBankCount() == 0) + return ADDR_BASE + myCart.myReadOffset + start; + else + return start; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string CartridgeEnhancedWidget::internalRamDescription() { ostringstream desc; + string indent = ""; + + if(myCart.ramBankCount()) + { + desc << "Accessible "; + if (myCart.bankSize() >> 1 >= 1024) + desc << ((myCart.bankSize() >> 1) / 1024) << "K"; + else + desc << (myCart.bankSize() >> 1) << " bytes"; + desc << " at a time via:\n"; + indent = " "; + } // order RW by addresses if(myCart.myReadOffset <= myCart.myWriteOffset) { - desc << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) - << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) + desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) << " used for Read Access\n"; } - desc - << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) - << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamSize - 1)) + desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) + << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamMask)) << " used for Write Access"; if(myCart.myReadOffset > myCart.myWriteOffset) { - desc << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) - << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamSize - 1)) + desc << indent << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) + << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) << " used for Read Access"; } diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index 42ffce1c9..1f4ae6f30 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -51,6 +51,8 @@ class CartridgeEnhancedWidget : public CartDebugWidget virtual string romDescription(); + virtual void bankList(uInt16 bankCount, int seg, VariantList& items, int& width); + virtual void bankSelect(int& ypos); virtual string hotspotStr(int bank = 0, int segment = 0, bool prefix = false); diff --git a/src/emucore/Cart3EX.cxx b/src/emucore/Cart3EX.cxx index 889935a07..c71fdd242 100644 --- a/src/emucore/Cart3EX.cxx +++ b/src/emucore/Cart3EX.cxx @@ -22,7 +22,7 @@ Cartridge3EX::Cartridge3EX(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) : Cartridge3E(image, size, md5, settings) { - myRamSize = RAM_SIZE; // 0xFFFA contains RAM bank count - 1; myRamBankCount = image[size - 6] + 1; + myRamSize = (myBankSize >> 1) * myRamBankCount; } diff --git a/src/emucore/Cart3EX.hxx b/src/emucore/Cart3EX.hxx index e7ba2ecfd..7df53593e 100644 --- a/src/emucore/Cart3EX.hxx +++ b/src/emucore/Cart3EX.hxx @@ -21,9 +21,6 @@ class System; #include "Cart3E.hxx" -#ifdef DEBUGGER_SUPPORT -//#include "Cart3EXWidget.hxx" -#endif /** This is an enhanced version of 3E which supports up to 256KB RAM. @@ -33,7 +30,6 @@ class System; class Cartridge3EX : public Cartridge3E { - //friend class Cartridge3EXWidget; public: /** @@ -56,18 +52,6 @@ public: */ string name() const override { return "Cartridge3EX"; } -#ifdef DEBUGGER_SUPPORT - ///** - // Get debugger widget responsible for accessing the inner workings - // of the cart. - //*/ - //CartDebugWidget* debugWidget(GuiObject* boss, const GUI::Font& lfont, - // const GUI::Font& nfont, int x, int y, int w, int h) override - //{ - // return new Cartridge3EXWidget(boss, lfont, nfont, x, y, w, h, *this); - //} -#endif - private: // RAM size static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 256K = 0x40000; From 2ae4631748b95287e330d8c13e32ecebbaabfca0 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 23 Apr 2020 10:46:09 +0200 Subject: [PATCH 50/69] refactored CartMDM and CartSB widget classes --- src/debugger/gui/CartMDMWidget.cxx | 82 +++++++++++------------------- src/debugger/gui/CartMDMWidget.hxx | 21 +++++--- src/debugger/gui/CartSBWidget.cxx | 79 ++++------------------------ src/debugger/gui/CartSBWidget.hxx | 15 ++---- src/emucore/CartMDM.hxx | 2 + src/emucore/CartSB.hxx | 2 +- 6 files changed, 59 insertions(+), 142 deletions(-) diff --git a/src/debugger/gui/CartMDMWidget.cxx b/src/debugger/gui/CartMDMWidget.cxx index 48afbaf77..a3509cb34 100644 --- a/src/debugger/gui/CartMDMWidget.cxx +++ b/src/debugger/gui/CartMDMWidget.cxx @@ -17,45 +17,39 @@ #include "CartMDM.hxx" #include "PopUpWidget.hxx" -#include "Widget.hxx" #include "CartMDMWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeMDMWidget::CartridgeMDMWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeMDM& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + myCartMDM(cart) +{ + initialize(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string CartridgeMDMWidget::description() { ostringstream info; - size_t size; - myCart.getImage(size); - info << "Menu Driven Megacart, containing up to 128 4K banks\n" - << "Startup bank = " << cart.startBank() << "\n" - << "\nBanks are selected by reading from $800 - $BFF, where the lower " - "byte determines the 4K bank to use."; + info << "Menu Driven Megacart, " << myCart.romBankCount() << " 4K banks\n" + << "Banks are selected by reading from $800 - $" << Common::Base::HEX1 << 0xBFF + << ", where the lower byte determines the 4K bank to use.\n"; + info << CartridgeEnhancedWidget::description(); - int xpos = 2, - ypos = addBaseInformation(size, "Edwin Blink", info.str(), 15) + myLineHeight; + return info.str(); +} - VariantList items; - for(uInt32 i = 0x800; i < (0x800U + myCart.romBankCount()); ++i) - { - info.str(""); - info << std::dec << (i & 0xFF) << " ($" << Common::Base::HEX4 << i << ")"; - VarList::push_back(items, info.str()); - } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartridgeMDMWidget::bankSelect(int& ypos) +{ + CartridgeEnhancedWidget::bankSelect(ypos); + int xpos = myBankWidgets[0]->getRight() + 20; + ypos = myBankWidgets[0]->getTop(); - myBank = - new PopUpWidget(boss, _font, xpos, ypos, _font.getStringWidth("xxx ($0FFF)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); - - xpos += myBank->getWidth() + 30; - myBankDisabled = new CheckboxWidget(boss, _font, xpos, ypos + 1, + myBankDisabled = new CheckboxWidget(_boss, _font, xpos, ypos + 1, "Bankswitching is locked/disabled", kBankDisabled); myBankDisabled->setTarget(this); @@ -65,39 +59,21 @@ CartridgeMDMWidget::CartridgeMDMWidget( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMDMWidget::loadConfig() { - myBank->setSelectedIndex(myCart.getBank()); - myBank->setEnabled(!myCart.myBankingDisabled); - myBankDisabled->setState(myCart.myBankingDisabled); + myBankWidgets[0]->setEnabled(!myCartMDM.myBankingDisabled); + myBankDisabled->setState(myCartMDM.myBankingDisabled); - CartDebugWidget::loadConfig(); + CartridgeEnhancedWidget::loadConfig(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMDMWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { - if(cmd == kBankChanged) + if(cmd == kBankDisabled) { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } - else if(cmd == kBankDisabled) - { - myCart.myBankingDisabled = myBankDisabled->getState(); - myBank->setEnabled(!myCart.myBankingDisabled); + myCartMDM.myBankingDisabled = myBankDisabled->getState(); + myBankWidgets[0]->setEnabled(!myCartMDM.myBankingDisabled); } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeMDMWidget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << "$" << Common::Base::HEX4 - << (myCart.getBank()+0x800); - - return buf.str(); + else + CartridgeEnhancedWidget::handleCommand(sender, cmd, data, id); } diff --git a/src/debugger/gui/CartMDMWidget.hxx b/src/debugger/gui/CartMDMWidget.hxx index adf242b68..c7add24d7 100644 --- a/src/debugger/gui/CartMDMWidget.hxx +++ b/src/debugger/gui/CartMDMWidget.hxx @@ -20,11 +20,10 @@ class CartridgeMDM; class CheckboxWidget; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeMDMWidget : public CartDebugWidget +class CartridgeMDMWidget : public CartridgeEnhancedWidget { public: CartridgeMDMWidget(GuiObject* boss, const GUI::Font& lfont, @@ -34,18 +33,24 @@ class CartridgeMDMWidget : public CartDebugWidget virtual ~CartridgeMDMWidget() = default; private: - CartridgeMDM& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Edwin Blink"; } + + string description() override; + + void bankSelect(int& ypos) override; + + CartridgeMDM& myCartMDM; CheckboxWidget* myBankDisabled{nullptr}; - enum { kBankChanged = 'bkCH', kBankDisabled = 'bkDI' }; + enum { + kBankDisabled = 'bkDI' + }; private: void loadConfig() override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - string bankState() override; - + private: // Following constructors and assignment operators not supported CartridgeMDMWidget() = delete; CartridgeMDMWidget(const CartridgeMDMWidget&) = delete; diff --git a/src/debugger/gui/CartSBWidget.cxx b/src/debugger/gui/CartSBWidget.cxx index 7a82ba8e0..b564781bc 100644 --- a/src/debugger/gui/CartSBWidget.cxx +++ b/src/debugger/gui/CartSBWidget.cxx @@ -16,86 +16,27 @@ //============================================================================ #include "CartSB.hxx" -#include "PopUpWidget.hxx" #include "CartSBWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeSBWidget::CartridgeSBWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, CartridgeSB& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart) { - VariantList items; - ostringstream info, bank; - size_t size; - - myCart.getImage(size); - info << "SB SUPERbanking, 32 or 64 4K banks\n" - << "Hotspots are from $800 to $" - << Common::Base::HEX2 << (0x800 + myCart.romBankCount() - 1) << ", including\n" - << "mirrors ($900, $A00, $B00, ...)\n" - << "Startup bank = " << std::dec << cart.startBank() << "\n"; - - // Eventually, we should query this from the debugger/disassembler - for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < myCart.romBankCount(); - ++i, offset += 0x1000, ++spot) - { - uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; - start -= start % 0x1000; - info << "Bank " << std::dec << i << " @ $" << Common::Base::HEX4 << start << " - " - << "$" << (start + 0xFFF) << " (hotspot = $" << spot << ")\n"; - - bank << std::dec << std::setw(2) << std::setfill(' ') << i << " ($" - << Common::Base::HEX2 << spot << ")"; - VarList::push_back(items, bank.str()); - bank.str(""); - } - - int xpos = 2, - ypos = addBaseInformation(size, "Fred X. Quimby", info.str()) + myLineHeight; - - myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("XX ($800)"), - myLineHeight, items, "Set bank ", - 0, kBankChanged); - myBank->setTarget(this); - addFocusWidget(myBank); + initialize(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeSBWidget::loadConfig() +string CartridgeSBWidget::description() { - Debugger& dbg = instance().debugger(); - CartDebug& cart = dbg.cartDebug(); - const CartState& state = static_cast(cart.getState()); - const CartState& oldstate = static_cast(cart.getOldState()); + ostringstream info; - myBank->setSelectedIndex(myCart.getBank(), state.bank != oldstate.bank); + info << "SB SUPERbanking, " << myCart.romBankCount() << " 4K banks\n" + << "Hotspots are from $800 to $" + << Common::Base::HEX2 << (0x800 + myCart.romBankCount() - 1) << ", including\n" + << "mirrors ($900, $" << 0xA00 << ", $" << 0xB00 << ", ...)\n"; + info << CartridgeEnhancedWidget::description(); - CartDebugWidget::loadConfig(); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void CartridgeSBWidget::handleCommand(CommandSender* sender, - int cmd, int data, int id) -{ - if(cmd == kBankChanged) - { - myCart.unlockBank(); - myCart.bank(myBank->getSelected()); - myCart.lockBank(); - invalidate(); - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string CartridgeSBWidget::bankState() -{ - ostringstream& buf = buffer(); - - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = $" << Common::Base::HEX2 << (myCart.getBank() + 0x800); - - return buf.str(); + return info.str(); } diff --git a/src/debugger/gui/CartSBWidget.hxx b/src/debugger/gui/CartSBWidget.hxx index 5819dec02..91cc90ec1 100644 --- a/src/debugger/gui/CartSBWidget.hxx +++ b/src/debugger/gui/CartSBWidget.hxx @@ -19,11 +19,10 @@ #define CARTRIDGESB_WIDGET_HXX class CartridgeSB; -class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class CartridgeSBWidget : public CartDebugWidget +class CartridgeSBWidget : public CartridgeEnhancedWidget { public: CartridgeSBWidget(GuiObject* boss, const GUI::Font& lfont, @@ -33,17 +32,11 @@ class CartridgeSBWidget : public CartDebugWidget virtual ~CartridgeSBWidget() = default; private: - CartridgeSB& myCart; - PopUpWidget* myBank{nullptr}; + string manufacturer() override { return "Fred X. Quimby"; } - enum { kBankChanged = 'bkCH' }; + string description() override; private: - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - // Following constructors and assignment operators not supported CartridgeSBWidget() = delete; CartridgeSBWidget(const CartridgeSBWidget&) = delete; diff --git a/src/emucore/CartMDM.hxx b/src/emucore/CartMDM.hxx index 6fd7435a3..4b0786e42 100644 --- a/src/emucore/CartMDM.hxx +++ b/src/emucore/CartMDM.hxx @@ -100,6 +100,8 @@ class CartridgeMDM : public CartridgeEnhanced */ string name() const override { return "CartridgeMDM"; } + uInt16 hotspot() const override { return 0x0800; } + #ifdef DEBUGGER_SUPPORT /** Get debugger widget responsible for accessing the inner workings diff --git a/src/emucore/CartSB.hxx b/src/emucore/CartSB.hxx index 1e8a363a9..85c8e9ccb 100644 --- a/src/emucore/CartSB.hxx +++ b/src/emucore/CartSB.hxx @@ -98,7 +98,7 @@ class CartridgeSB : public CartridgeEnhanced private: bool checkSwitchBank(uInt16 address, uInt8 value = 0) override; - uInt16 hotspot() const override { return 0x0840; } + uInt16 hotspot() const override { return 0x0800; } uInt16 getStartBank() const override { return romBankCount() - 1; } From 42c7f45c425d26e10bb8f99d7517be718974017f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 23 Apr 2020 12:34:27 +0200 Subject: [PATCH 51/69] refactored Cart3EPlus widget --- src/debugger/gui/Cart3EPlusWidget.cxx | 210 +++++++++--------------- src/debugger/gui/Cart3EPlusWidget.hxx | 42 ++--- src/debugger/gui/Cart3EWidget.hxx | 2 +- src/debugger/gui/Cart3FWidget.hxx | 2 +- src/debugger/gui/CartE0Widget.hxx | 2 +- src/debugger/gui/CartEnhancedWidget.cxx | 8 +- src/debugger/gui/CartEnhancedWidget.hxx | 2 +- src/debugger/gui/CartWDWidget.hxx | 2 +- src/emucore/Cart3EPlus.cxx | 16 +- src/emucore/Cart3EPlus.hxx | 15 +- 10 files changed, 106 insertions(+), 195 deletions(-) diff --git a/src/debugger/gui/Cart3EPlusWidget.cxx b/src/debugger/gui/Cart3EPlusWidget.cxx index a93cb8f98..8e7cdf063 100644 --- a/src/debugger/gui/Cart3EPlusWidget.cxx +++ b/src/debugger/gui/Cart3EPlusWidget.cxx @@ -18,116 +18,124 @@ #include "Cart3EPlus.hxx" #include "EditTextWidget.hxx" #include "PopUpWidget.hxx" -#include "Cart3EPlusWidget.hxx" +#include "CartEnhancedWidget.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3EPlusWidget::Cartridge3EPlusWidget( GuiObject* boss, const GUI::Font& lfont, const GUI::Font& nfont, int x, int y, int w, int h, Cartridge3EPlus& cart) - : CartDebugWidget(boss, lfont, nfont, x, y, w, h), - myCart(cart) + : CartridgeEnhancedWidget(boss, lfont, nfont, x, y, w, h, cart), + myCart3EP(cart) { - size_t size = cart.mySize; + initialize(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Cartridge3EPlusWidget::description() +{ ostringstream info; - info << "3EPlus cartridge - (4..64K ROM + RAM)\n" - << " 4..64K ROM (1K banks), ..32K RAM (512b banks)\n" - << "Each 1K ROM selected by writing to $3F\n" - "Each 512b RAM selected by writing to $3E\n" - " Lower 512b of bank x (R)\n" - " Upper 512b of bank x (+$200) (W)\n" - << "Startup bank = 0/-1/-1/0 (ROM)\n"; + size_t size; + const uInt8* image = myCart.getImage(size); + uInt16 numRomBanks = myCart.romBankCount(); + uInt16 numRamBanks = myCart.ramBankCount(); + + info << "3E+ cartridge - (4..64K ROM + RAM)\n" + << " " << numRomBanks << " 1K ROM banks + " << numRamBanks << " 512b RAM banks\n" + << " mapped into four segments\n" + "ROM bank & segment selected by writing to $3F\n" + "RAM bank & segment selected by writing to $3E\n" + " Lower 512b of segment for read access\n" + " Upper 512b of segment for write access\n" + "Startup bank = 0/-1/-1/0 (ROM)\n"; // Eventually, we should query this from the debugger/disassembler - // Currently the cart starts at bank 0. If we change that, we have to change this too. - uInt16 start = (cart.myImage[0x400-3] << 8) | cart.myImage[0x400 - 4]; - start &= 0xF000; - info << "Bank RORG = $" << Common::Base::HEX4 << start << "\n"; + uInt16 start = (image[0x400 - 3] << 8) | image[0x400 - 4]; + start -= start % 0x1000; + info << "Bank RORG" << " = $" << Common::Base::HEX4 << start << "\n"; - int xpos = 2, - ypos = addBaseInformation(size, "Thomas Jentzsch", info.str()) + 8; - - VariantList bankno; - for(uInt32 i = 0; i < myCart.romBankCount(); ++i) - VarList::push_back(bankno, i, i); + return info.str(); +} +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Cartridge3EPlusWidget::bankSelect(int& ypos) +{ + size_t size; + const uInt8* image = myCart.getImage(size); VariantList banktype; + VarList::push_back(banktype, "ROM", "ROM"); VarList::push_back(banktype, "RAM", "RAM"); - for(uInt32 seg = 0; seg < myCart.myBankSegs; ++seg) - { - int xpos_s, ypos_s = ypos + 1; + myBankWidgets = make_unique(bankSegs()); + for(uInt32 seg = 0; seg < bankSegs(); ++seg) + { + int xpos = 2, xpos_s, ypos_s = ypos + 1, width; ostringstream label; + VariantList items; + label << "Set segment " << seg << " as "; - new StaticTextWidget(boss, _font, xpos, ypos, label.str()); + new StaticTextWidget(_boss, _font, xpos, ypos, label.str()); ypos += myLineHeight + 8; xpos += _font.getMaxCharWidth() * 2; - myBankNumber[seg] = - new PopUpWidget(boss, _font, xpos, ypos-2, 2 *_font.getMaxCharWidth(), - myLineHeight, bankno, "Bank "); - addFocusWidget(myBankNumber[seg]); - xpos += myBankNumber[seg]->getWidth(); + CartridgeEnhancedWidget::bankList(myCart.romBankCount(), seg, items, width); + myBankWidgets[seg] = + new PopUpWidget(_boss, _font, xpos, ypos - 2, width, + myLineHeight, items, "Bank "); + addFocusWidget(myBankWidgets[seg]); + + xpos += myBankWidgets[seg]->getWidth(); myBankType[seg] = - new PopUpWidget(boss, _font, xpos, ypos-2, 3 *_font.getMaxCharWidth(), + new PopUpWidget(_boss, _font, xpos, ypos - 2, 3 * _font.getMaxCharWidth(), myLineHeight, banktype, " of "); addFocusWidget(myBankType[seg]); xpos = myBankType[seg]->getRight() + _font.getMaxCharWidth(); // add "Commit" button (why required?) - myBankCommit[seg] = new ButtonWidget(boss, _font, xpos, ypos-4, - _font.getStringWidth(" Commit "), myButtonHeight, - "Commit", bankEnum[seg]); + myBankCommit[seg] = new ButtonWidget(_boss, _font, xpos, ypos - 4, + _font.getStringWidth(" Commit "), myButtonHeight, + "Commit", bankEnum[seg]); myBankCommit[seg]->setTarget(this); addFocusWidget(myBankCommit[seg]); xpos_s = myBankCommit[seg]->getRight() + _font.getMaxCharWidth() * 2; StaticTextWidget* t; + uInt16 start = (image[0x400 - 3] << 8) | image[0x400 - 4]; + start -= start % 0x1000; int addr1 = start + (seg * 0x400), addr2 = addr1 + 0x200; label.str(""); label << "$" << Common::Base::HEX4 << addr1 << "-$" << Common::Base::HEX4 << (addr1 + 0x1FF); - t = new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); + t = new StaticTextWidget(_boss, _font, xpos_s, ypos_s + 2, label.str()); int xoffset = t->getRight() + _font.getMaxCharWidth(); - myBankState[2*seg] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*seg]->setEditable(false, true); + myBankState[2 * seg] = new EditTextWidget(_boss, _font, xoffset, ypos_s, + _w - xoffset - 10, myLineHeight, ""); + myBankState[2 * seg]->setEditable(false, true); ypos_s += myLineHeight + 4; label.str(""); label << "$" << Common::Base::HEX4 << addr2 << "-$" << Common::Base::HEX4 << (addr2 + 0x1FF); - new StaticTextWidget(boss, _font, xpos_s, ypos_s+2, label.str()); + new StaticTextWidget(_boss, _font, xpos_s, ypos_s + 2, label.str()); - myBankState[2*seg+1] = new EditTextWidget(boss, _font, xoffset, ypos_s, - w - xoffset - 10, myLineHeight, ""); - myBankState[2*seg+1]->setEditable(false, true); + myBankState[2 * seg + 1] = new EditTextWidget(_boss, _font, xoffset, ypos_s, + _w - xoffset - 10, myLineHeight, ""); + myBankState[2 * seg + 1]->setEditable(false, true); - xpos = 2; ypos += 2 * myLineHeight; } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlusWidget::saveOldState() -{ - myOldState.internalram.clear(); - - for(uInt32 i = 0; i < internalRamSize(); ++i) - myOldState.internalram.push_back(myCart.myRAM[i]); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlusWidget::loadConfig() { + CartridgeEnhancedWidget::loadConfig(); updateUIState(); - CartDebugWidget::loadConfig(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -154,11 +162,11 @@ void Cartridge3EPlusWidget::handleCommand(CommandSender* sender, } // Ignore bank if either number or type hasn't been selected - if(myBankNumber[segment]->getSelected() < 0 || + if(myBankWidgets[segment]->getSelected() < 0 || myBankType[segment]->getSelected() < 0) return; - uInt8 bank = myBankNumber[segment]->getSelected(); + uInt8 bank = myBankWidgets[segment]->getSelected(); myCart.unlockBank(); @@ -172,123 +180,61 @@ void Cartridge3EPlusWidget::handleCommand(CommandSender* sender, updateUIState(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge3EPlusWidget::bankState() -{ - ostringstream& buf = buffer(); - - for(int seg = 0; seg < myCart.myBankSegs; ++seg) - { - int bank = myCart.getSegmentBank(seg); - - if(bank >= myCart.romBankCount()) // was RAM mapped here? - buf << " RAM " << bank - myCart.romBankCount(); - else - buf << " ROM " << bank; - if(seg < myCart.myBankSegs - 1) - buf << " /"; - } - - return buf.str(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3EPlusWidget::updateUIState() { - // Set description for each 1K bank state (@ each index) + // Set description for each 1K segment state (@ each index) // Set contents for actual banks number and type (@ each even index) - for(int seg = 0; seg < myCart.myBankSegs; ++seg) + for(int seg = 0; seg < myCart3EP.myBankSegs; ++seg) { uInt16 bank = myCart.getSegmentBank(seg); ostringstream buf; - if(bank >= myCart.romBankCount()) // was RAM mapped here? + if(bank >= myCart.romBankCount()) // was RAM mapped here? { uInt16 ramBank = bank - myCart.romBankCount(); - buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 - << (ramBank << myCart.myBankShift) << "(R)"; + buf << "RAM @ $" << Common::Base::HEX4 + << (ramBank << myCart3EP.myBankShift) << " (R)"; myBankState[seg * 2]->setText(buf.str()); buf.str(""); - buf << "RAM " << std::dec << ramBank << " @ $" << Common::Base::HEX4 - << ((ramBank << myCart.myBankShift) + myCart.myBankSize) << "(W)"; + buf << "RAM @ $" << Common::Base::HEX4 + << ((ramBank << myCart3EP.myBankShift) + myCart3EP.myBankSize) << " (W)"; myBankState[seg * 2 + 1]->setText(buf.str()); - myBankNumber[seg]->setSelected(ramBank); + myBankWidgets[seg]->setSelectedIndex(ramBank); myBankType[seg]->setSelected("RAM"); } else { - buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 - << ((bank << myCart.myBankShift)); + buf << "ROM @ $" << Common::Base::HEX4 + << ((bank << myCart3EP.myBankShift)); myBankState[seg * 2]->setText(buf.str()); buf.str(""); - buf << "ROM " << std::dec << bank << " @ $" << Common::Base::HEX4 - << ((bank << myCart.myBankShift) + myCart.myBankSize); + buf << "ROM @ $" << Common::Base::HEX4 + << ((bank << myCart3EP.myBankShift) + myCart3EP.myBankSize); myBankState[seg * 2 + 1]->setText(buf.str()); - myBankNumber[seg]->setSelected(bank); + myBankWidgets[seg]->setSelectedIndex(bank); myBankType[seg]->setSelected("ROM"); } } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EPlusWidget::internalRamSize() -{ - return 32*1024; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 Cartridge3EPlusWidget::internalRamRPort(int start) -{ - return 0x0000 + start; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string Cartridge3EPlusWidget::internalRamDescription() { ostringstream desc; desc << "Accessible 512b at a time via:\n" - << " $f000/$f400/$f800/$fc00 for Read Access\n" - << " $f200/$f600/$fa00/$fe00 for Write Access"; + << " $f000/$f400/$f800/$fc00 for read access\n" + << " $f200/$f600/$fa00/$fe00 for write access"; return desc.str(); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EPlusWidget::internalRamOld(int start, int count) -{ - myRamOld.clear(); - for(int i = 0; i < count; i++) - myRamOld.push_back(myOldState.internalram[start + i]); - return myRamOld; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const ByteArray& Cartridge3EPlusWidget::internalRamCurrent(int start, int count) -{ - myRamCurrent.clear(); - for(int i = 0; i < count; i++) - myRamCurrent.push_back(myCart.myRAM[start + i]); - return myRamCurrent; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlusWidget::internalRamSetValue(int addr, uInt8 value) -{ - myCart.myRAM[addr] = value; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt8 Cartridge3EPlusWidget::internalRamGetValue(int addr) -{ - return myCart.myRAM[addr]; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - const std::array Cartridge3EPlusWidget::bankEnum = { kBank0Changed, kBank1Changed, kBank2Changed, kBank3Changed diff --git a/src/debugger/gui/Cart3EPlusWidget.hxx b/src/debugger/gui/Cart3EPlusWidget.hxx index 723003376..7cde61042 100644 --- a/src/debugger/gui/Cart3EPlusWidget.hxx +++ b/src/debugger/gui/Cart3EPlusWidget.hxx @@ -23,9 +23,9 @@ class ButtonWidget; class EditTextWidget; class PopUpWidget; -#include "CartDebugWidget.hxx" +#include "CartEnhancedWidget.hxx" -class Cartridge3EPlusWidget : public CartDebugWidget +class Cartridge3EPlusWidget : public CartridgeEnhancedWidget { public: Cartridge3EPlusWidget(GuiObject* boss, const GUI::Font& lfont, @@ -35,21 +35,27 @@ class Cartridge3EPlusWidget : public CartDebugWidget virtual ~Cartridge3EPlusWidget() = default; private: + string manufacturer() override { return "Thomas Jentzsch"; } + + string description() override; + + void bankSelect(int& ypos) override; + + void handleCommand(CommandSender* sender, int cmd, int data, int id) override; + void updateUIState(); - private: - Cartridge3EPlus& myCart; + void loadConfig() override; + + string internalRamDescription() override; + + private: + Cartridge3EPlus& myCart3EP; - std::array myBankNumber{nullptr}; std::array myBankType{nullptr}; std::array myBankCommit{nullptr}; std::array myBankState{nullptr}; - struct CartState { - ByteArray internalram; - }; - CartState myOldState; - enum BankID { kBank0Changed = 'b0CH', kBank1Changed = 'b1CH', @@ -59,22 +65,6 @@ class Cartridge3EPlusWidget : public CartDebugWidget static const std::array bankEnum; private: - void saveOldState() override; - void loadConfig() override; - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - string bankState() override; - - // start of functions for Cartridge RAM tab - uInt32 internalRamSize() override; - uInt32 internalRamRPort(int start) override; - string internalRamDescription() override; - const ByteArray& internalRamOld(int start, int count) override; - const ByteArray& internalRamCurrent(int start, int count) override; - void internalRamSetValue(int addr, uInt8 value) override; - uInt8 internalRamGetValue(int addr) override; - // end of functions for Cartridge RAM tab - // Following constructors and assignment operators not supported Cartridge3EPlusWidget() = delete; Cartridge3EPlusWidget(const Cartridge3EPlusWidget&) = delete; diff --git a/src/debugger/gui/Cart3EWidget.hxx b/src/debugger/gui/Cart3EWidget.hxx index e1d4f266b..424d9a577 100644 --- a/src/debugger/gui/Cart3EWidget.hxx +++ b/src/debugger/gui/Cart3EWidget.hxx @@ -47,7 +47,7 @@ class Cartridge3EWidget : public CartridgeEnhancedWidget void bankSelect(int& ypos) override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } void loadConfig() override; diff --git a/src/debugger/gui/Cart3FWidget.hxx b/src/debugger/gui/Cart3FWidget.hxx index e5f97a392..ad24d8e56 100644 --- a/src/debugger/gui/Cart3FWidget.hxx +++ b/src/debugger/gui/Cart3FWidget.hxx @@ -36,7 +36,7 @@ class Cartridge3FWidget : public CartridgeEnhancedWidget string description() override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartE0Widget.hxx b/src/debugger/gui/CartE0Widget.hxx index a9d84b461..a50893e84 100644 --- a/src/debugger/gui/CartE0Widget.hxx +++ b/src/debugger/gui/CartE0Widget.hxx @@ -40,7 +40,7 @@ class CartridgeE0Widget : public CartridgeEnhancedWidget string hotspotStr(int bank, int segment, bool noBrackets = false) override; - int bankSegs() override { return 3; } + uInt16 bankSegs() override { return 3; } private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index a59e4f985..8001c1292 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -253,7 +253,7 @@ string CartridgeEnhancedWidget::hotspotStr(int bank, int segment, bool prefix) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -int CartridgeEnhancedWidget::bankSegs() +uInt16 CartridgeEnhancedWidget::bankSegs() { return myCart.myBankSegs; } @@ -339,18 +339,18 @@ string CartridgeEnhancedWidget::internalRamDescription() { desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for Read Access\n"; + << " used for read Access\n"; } desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamMask)) - << " used for Write Access"; + << " used for write Access"; if(myCart.myReadOffset > myCart.myWriteOffset) { desc << indent << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for Read Access"; + << " used for read Access"; } return desc.str(); diff --git a/src/debugger/gui/CartEnhancedWidget.hxx b/src/debugger/gui/CartEnhancedWidget.hxx index 1f4ae6f30..968a4bbf0 100644 --- a/src/debugger/gui/CartEnhancedWidget.hxx +++ b/src/debugger/gui/CartEnhancedWidget.hxx @@ -57,7 +57,7 @@ class CartridgeEnhancedWidget : public CartDebugWidget virtual string hotspotStr(int bank = 0, int segment = 0, bool prefix = false); - virtual int bankSegs(); // { return myCart.myBankSegs; } + virtual uInt16 bankSegs(); // { return myCart.myBankSegs; } void saveOldState() override; void loadConfig() override; diff --git a/src/debugger/gui/CartWDWidget.hxx b/src/debugger/gui/CartWDWidget.hxx index 0201cffa5..2ccdd7437 100644 --- a/src/debugger/gui/CartWDWidget.hxx +++ b/src/debugger/gui/CartWDWidget.hxx @@ -41,7 +41,7 @@ private: string hotspotStr(int bank, int seg = 0, bool prefix = false) override; - int bankSegs() override { return 1; } + uInt16 bankSegs() override { return 1; } private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 5803f2136..6c9fe7c2a 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -22,13 +22,11 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge3EPlus::Cartridge3EPlus(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : CartridgeEnhanced(image, size, md5, settings) - + : Cartridge3E(image, size, md5, settings) { myBankShift = BANK_SHIFT; myRamSize = RAM_SIZE; myRamBankCount = RAM_BANKS; - myRamWpHigh = RAM_HIGH_WP; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -42,18 +40,6 @@ void Cartridge3EPlus::reset() bank(startBank(), 3); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge3EPlus::install(System& system) -{ - CartridgeEnhanced::install(system); - - System::PageAccess access(this, System::PageAccessType::WRITE); - - // The hotspots are in TIA address space, so we claim it here - for(uInt16 addr = 0x00; addr < 0x40; addr += System::PAGE_SIZE) - mySystem->setPageAccess(addr, access); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Cartridge3EPlus::checkSwitchBank(uInt16 address, uInt8 value) { diff --git a/src/emucore/Cart3EPlus.hxx b/src/emucore/Cart3EPlus.hxx index 209ab89dc..c2ce64cd8 100644 --- a/src/emucore/Cart3EPlus.hxx +++ b/src/emucore/Cart3EPlus.hxx @@ -21,7 +21,7 @@ class System; #include "bspf.hxx" -#include "CartEnhanced.hxx" +#include "Cart3E.hxx" #ifdef DEBUGGER_SUPPORT class Cartridge3EPlusWidget; @@ -89,7 +89,7 @@ class Cartridge3EPlusWidget; @author Thomas Jentzsch and Stephen Anthony */ -class Cartridge3EPlus: public CartridgeEnhanced +class Cartridge3EPlus: public Cartridge3E { friend class Cartridge3EPlusWidget; @@ -110,14 +110,6 @@ class Cartridge3EPlus: public CartridgeEnhanced /** Reset device to its power-on state */ void reset() override; - /** - Install cartridge in the specified system. Invoked by the system - when the cartridge is attached to it. - - @param system The system the device should install itself in - */ - void install(System& system) override; - /** Get a descriptor for the device name (used in error checking). @@ -167,9 +159,6 @@ class Cartridge3EPlus: public CartridgeEnhanced // RAM size static constexpr size_t RAM_SIZE = RAM_BANKS << (BANK_SHIFT - 1); // = 32K = 0x4000; - // Write port for extra RAM is at high address - static constexpr bool RAM_HIGH_WP = true; - private: // Following constructors and assignment operators not supported Cartridge3EPlus() = delete; From 4699a28af8358eba0a6d28fd22c8e37dee10892d Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 24 Apr 2020 11:20:01 +0200 Subject: [PATCH 52/69] refactored CartDPC class replaced DPC ROM --- src/emucore/CartDPC.cxx | 151 ++++-------------- src/emucore/CartDPC.hxx | 57 ++----- .../DPC/Pitfall II (1984) (Activision).bin | Bin 0 -> 10495 bytes .../DPC/Pitfall! (1982) (Activision).bin | Bin 4096 -> 0 bytes 4 files changed, 37 insertions(+), 171 deletions(-) create mode 100644 test/roms/bankswitching/DPC/Pitfall II (1984) (Activision).bin delete mode 100644 test/roms/bankswitching/DPC/Pitfall! (1982) (Activision).bin diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index c8a038c25..481e385be 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -22,45 +22,36 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDPC::CartridgeDPC(const ByteBuffer& image, size_t size, const string& md5, const Settings& settings) - : Cartridge(settings, md5), - mySize(size) + : CartridgeF8(image, size, md5, settings) { - // Make a copy of the entire image - std::copy_n(image.get(), std::min(myImage.size(), size), myImage.begin()); - createRomAccessArrays(8_KB); - - // Pointer to the program ROM (8K @ 0 byte offset) - myProgramImage = myImage.data(); - - // Pointer to the display ROM (2K @ 8K offset) - myDisplayImage = myProgramImage + 8_KB; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeDPC::reset() { + CartridgeEnhanced::reset(); + myAudioCycles = 0; myFractionalClocks = 0.0; - - // Upon reset we switch to the startup bank - initializeStartBank(1); - bank(startBank()); - myDpcPitch = mySettings.getInt(AudioSettings::SETTING_DPC_PITCH); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeDPC::install(System& system) { - mySystem = &system; + CartridgeEnhanced::install(system); + + myRomOffset = 0x80; + + // Pointer to the display ROM (2K @ 8K offset) + myDisplayImage = myImage.get() + 8_KB; + + createRomAccessArrays(8_KB); // Set the page accessing method for the DPC reading & writing pages System::PageAccess access(this, System::PageAccessType::READWRITE); for(uInt16 addr = 0x1000; addr < 0x1080; addr += System::PAGE_SIZE) mySystem->setPageAccess(addr, access); - - // Install pages for the startup bank - bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -128,12 +119,15 @@ inline void CartridgeDPC::updateMusicModeDataFetchers() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 CartridgeDPC::peek(uInt16 address) { + uInt16 peekAddress = address; + address &= 0x0FFF; // In debugger/bank-locked mode, we ignore all hotspots and in general // anything that can change the internal state of the cart if(bankLocked()) - return myProgramImage[myBankOffset + address]; + return myImage[myCurrentSegOffset[0] + address]; + // Clock the random number generator. This should be done for every // cartridge access, however, we're only doing it for the DPC and @@ -232,30 +226,14 @@ uInt8 CartridgeDPC::peek(uInt16 address) return result; } else - { - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; - - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - return myProgramImage[myBankOffset + address]; - } + return CartridgeEnhanced::peek(peekAddress); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeDPC::poke(uInt16 address, uInt8 value) { + uInt16 pokeAddress = address; + address &= 0x0FFF; // Clock the random number generator. This should be done for every @@ -338,102 +316,31 @@ bool CartridgeDPC::poke(uInt16 address, uInt8 value) } } else - { - // Switch banks if necessary - switch(address) - { - case 0x0FF8: - // Set the current bank to the lower 4k bank - bank(0); - break; + CartridgeEnhanced::poke(pokeAddress, value); - case 0x0FF9: - // Set the current bank to the upper 4k bank - bank(1); - break; - - default: - break; - } - } return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeDPC::bank(uInt16 bank) -{ - if(bankLocked()) return false; - - // Remember what bank we're in - myBankOffset = bank << 12; - - System::PageAccess access(this, System::PageAccessType::READ); - - // Set the page accessing methods for the hot spots - for(uInt16 addr = (0x1FF8 & ~System::PAGE_MASK); addr < 0x2000; - addr += System::PAGE_SIZE) - { - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - - // Setup the page access methods for the current bank - for(uInt16 addr = 0x1080; addr < static_cast(0x1FF8U & ~System::PAGE_MASK); - addr += System::PAGE_SIZE) - { - access.directPeekBase = &myProgramImage[myBankOffset + (addr & 0x0FFF)]; - access.romAccessBase = &myRomAccessBase[myBankOffset + (addr & 0x0FFF)]; - access.romPeekCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF)]; - access.romPokeCounter = &myRomAccessCounter[myBankOffset + (addr & 0x0FFF) + myAccessSize]; - mySystem->setPageAccess(addr, access); - } - return myBankChanged = true; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPC::getBank(uInt16) const -{ - return myBankOffset >> 12; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt16 CartridgeDPC::romBankCount() const -{ - return 2; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeDPC::patch(uInt16 address, uInt8 value) { - address &= 0x0FFF; - // For now, we ignore attempts to patch the DPC address space - if(address >= 0x0080) + if((address & ADDR_MASK) >= ROM_OFFSET + myRomOffset) { - myProgramImage[myBankOffset + (address & 0x0FFF)] = value; - return myBankChanged = true; + return CartridgeEnhanced::patch(address, value); } else return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const uInt8* CartridgeDPC::getImage(size_t& size) const -{ - size = mySize; - return myImage.data(); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeDPC::save(Serializer& out) const { + if(!CartridgeEnhanced::save(out)) + return false; + try { - // Indicates which bank is currently active - out.putShort(myBankOffset); - // The top registers for the data fetchers out.putByteArray(myTops.data(), myTops.size()); @@ -468,11 +375,11 @@ bool CartridgeDPC::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartridgeDPC::load(Serializer& in) { + if(!CartridgeEnhanced::load(in)) + return false; + try { - // Indicates which bank is currently active - myBankOffset = in.getShort(); - // The top registers for the data fetchers in.getByteArray(myTops.data(), myTops.size()); @@ -501,9 +408,5 @@ bool CartridgeDPC::load(Serializer& in) cerr << "ERROR: CartridgeDPC::load" << endl; return false; } - - // Now, go to the current bank - bank(myBankOffset >> 12); - return true; } diff --git a/src/emucore/CartDPC.hxx b/src/emucore/CartDPC.hxx index 6c186bfdb..e0a1b866e 100644 --- a/src/emucore/CartDPC.hxx +++ b/src/emucore/CartDPC.hxx @@ -18,10 +18,7 @@ #ifndef CARTRIDGE_DPC_HXX #define CARTRIDGE_DPC_HXX -class System; - -#include "bspf.hxx" -#include "Cart.hxx" +#include "CartF8.hxx" #ifdef DEBUGGER_SUPPORT #include "CartDPCWidget.hxx" #endif @@ -35,9 +32,9 @@ class System; For complete details on the DPC chip see David P. Crane's United States Patent Number 4,644,495. - @author Bradford W. Mott + @author Bradford W. Mott, Thomas Jentzsch */ -class CartridgeDPC : public Cartridge +class CartridgeDPC : public CartridgeF8 { friend class CartridgeDPCWidget; @@ -55,11 +52,6 @@ class CartridgeDPC : public Cartridge virtual ~CartridgeDPC() = default; public: - /** - Reset device to its power-on state - */ - void reset() override; - /** Install cartridge in the specified system. Invoked by the system when the cartridge is attached to it. @@ -69,23 +61,9 @@ class CartridgeDPC : public Cartridge void install(System& system) override; /** - Install pages for the specified bank in the system. - - @param bank The bank that should be installed in the system + Reset device to its power-on state */ - bool bank(uInt16 bank) override; - - /** - Get the current bank. - - @param address The address to use when querying the bank - */ - uInt16 getBank(uInt16 address = 0) const override; - - /** - Query the number of banks supported by the cartridge. - */ - uInt16 romBankCount() const override; + void reset() override; /** Patch the cartridge ROM. @@ -96,14 +74,6 @@ class CartridgeDPC : public Cartridge */ bool patch(uInt16 address, uInt8 value) override; - /** - Access the internal ROM image for this cartridge. - - @param size Set to the size of the internal ROM image data - @return A pointer to the internal ROM image data - */ - const uInt8* getImage(size_t& size) const override; - /** Save the current state of this cart to the given Serializer. @@ -127,6 +97,11 @@ class CartridgeDPC : public Cartridge */ string name() const override { return "CartridgeDPC"; } + /** + Change the DPC audio pitch + + @param pitch The new pitch value + */ void setDpcPitch(double pitch) { myDpcPitch = pitch; } #ifdef DEBUGGER_SUPPORT @@ -171,15 +146,6 @@ class CartridgeDPC : public Cartridge void updateMusicModeDataFetchers(); private: - // The ROM image - std::array myImage; - - // (Actual) Size of the ROM image - size_t mySize{0}; - - // Pointer to the 8K program ROM image of the cartridge - uInt8* myProgramImage{nullptr}; - // Pointer to the 2K display ROM image of the cartridge uInt8* myDisplayImage{nullptr}; @@ -207,9 +173,6 @@ class CartridgeDPC : public Cartridge // Fractional DPC music OSC clocks unused during the last update double myFractionalClocks{0.0}; - // Indicates the offset into the ROM image (aligns to current bank) - uInt16 myBankOffset{0}; - // DPC pitch double myDpcPitch{0.0}; diff --git a/test/roms/bankswitching/DPC/Pitfall II (1984) (Activision).bin b/test/roms/bankswitching/DPC/Pitfall II (1984) (Activision).bin new file mode 100644 index 0000000000000000000000000000000000000000..9d0c0dd6e35969ec11b2747dbf99f76cff8878c9 GIT binary patch literal 10495 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 From d4025e86daffe30fc4965074006c8a5d2ebab279 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 24 Apr 2020 12:42:52 +0200 Subject: [PATCH 53/69] replaced "slice" with "bank" in many Cart(Widget) classes minor UI fixed for CartDPCWidget --- src/debugger/gui/CartDPCWidget.cxx | 72 ++++++++++++------------- src/debugger/gui/CartDPCWidget.hxx | 1 + src/debugger/gui/CartDebugWidget.cxx | 2 +- src/debugger/gui/CartDebugWidget.hxx | 3 +- src/debugger/gui/CartE78KWidget.cxx | 27 +++++----- src/debugger/gui/CartE7Widget.cxx | 17 +++--- src/debugger/gui/CartEnhancedWidget.cxx | 8 +-- src/debugger/gui/CartMNetworkWidget.cxx | 26 ++++----- src/debugger/gui/CartRamWidget.cxx | 2 +- src/debugger/gui/DebuggerDialog.cxx | 2 +- src/debugger/gui/RomWidget.cxx | 7 +-- src/emucore/Cart.hxx | 2 +- src/emucore/CartE0.cxx | 2 +- src/emucore/CartE0.hxx | 6 +-- src/emucore/CartEnhanced.cxx | 2 +- src/emucore/CartMNetwork.cxx | 44 +++++++-------- src/emucore/CartMNetwork.hxx | 14 +++-- src/emucore/CartWD.cxx | 2 +- src/emucore/CartWD.hxx | 4 +- 19 files changed, 120 insertions(+), 123 deletions(-) diff --git a/src/debugger/gui/CartDPCWidget.cxx b/src/debugger/gui/CartDPCWidget.cxx index c07ae8739..681b3692d 100644 --- a/src/debugger/gui/CartDPCWidget.cxx +++ b/src/debugger/gui/CartDPCWidget.cxx @@ -27,12 +27,13 @@ CartridgeDPCWidget::CartridgeDPCWidget( : CartDebugWidget(boss, lfont, nfont, x, y, w, h), myCart(cart) { + const int V_GAP = 4; size_t size = cart.mySize; - ostringstream info; + info << "DPC cartridge, two 4K banks + 2K display bank\n" - << "DPC registers accessible @ $F000 - $F07F\n" - << " $F000 - $F03F (R), $F040 - $F07F (W)\n" + << "DPC registers accessible @ $" << Common::Base::HEX4 << 0xF000 << " - $" << 0xF07F << "\n" + << " $" << 0xF000 << " - " << 0xF03F << " (R), $" << 0xF040 << " - $" << 0xF07F << " (W)\n" << "Startup bank = " << cart.startBank() << " or undetermined\n"; @@ -42,7 +43,7 @@ CartridgeDPCWidget::CartridgeDPCWidget( uInt16 start = (cart.myImage[offset+1] << 8) | cart.myImage[offset]; start -= start % 0x1000; info << "Bank " << i << " @ $" << Common::Base::HEX4 << (start + 0x80) << " - " - << "$" << (start + 0xFFF) << " (hotspot = $F" << (spot+i) << ")\n"; + << "$" << (start + 0xFFF) << " (hotspot = $" << (0xF000 + spot + i) << ")\n"; } int xpos = 2, @@ -50,26 +51,30 @@ CartridgeDPCWidget::CartridgeDPCWidget( myLineHeight; VariantList items; - VarList::push_back(items, "0 ($FFF8)"); - VarList::push_back(items, "1 ($FFF9)"); + for(int bank = 0; bank < 2; ++bank) + { + ostringstream buf; + + buf << "#" << std::dec << bank << " ($" << Common::Base::HEX4 << (0xFFF8 + bank) << ")"; + VarList::push_back(items, buf.str()); + } + myBank = - new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("0 ($FFFx)"), + new PopUpWidget(boss, _font, xpos, ypos-2, _font.getStringWidth("#0 ($FFFx)"), myLineHeight, items, "Set bank ", 0, kBankChanged); myBank->setTarget(this); addFocusWidget(myBank); - ypos += myLineHeight + 8; + ypos += myLineHeight + V_GAP * 3; // Data fetchers - int lwidth = _font.getStringWidth("Data Fetchers "); - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Data Fetchers ", TextAlign::Left); + int lwidth = _font.getStringWidth("Data fetchers "); + new StaticTextWidget(boss, _font, xpos, ypos, "Data fetchers "); // Top registers - lwidth = _font.getStringWidth("Counter Registers "); - xpos = 18; ypos += myLineHeight + 4; - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Top Registers ", TextAlign::Left); + lwidth = _font.getStringWidth("Counter registers "); + xpos = 2 + _font.getMaxCharWidth() * 2; ypos += myLineHeight + 4; + new StaticTextWidget(boss, _font, xpos, ypos, "Top registers "); xpos += lwidth; myTops = new DataGridWidget(boss, _nfont, xpos, ypos-2, 8, 1, 2, 8, Common::Base::Fmt::_16); @@ -77,9 +82,8 @@ CartridgeDPCWidget::CartridgeDPCWidget( myTops->setEditable(false); // Bottom registers - xpos = 10; ypos += myLineHeight + 4; - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Bottom Registers ", TextAlign::Left); + xpos = 2 + _font.getMaxCharWidth() * 2; ypos += myLineHeight + 4; + new StaticTextWidget(boss, _font, xpos, ypos, "Bottom registers "); xpos += lwidth; myBottoms = new DataGridWidget(boss, _nfont, xpos, ypos-2, 8, 1, 2, 8, Common::Base::Fmt::_16); @@ -87,9 +91,8 @@ CartridgeDPCWidget::CartridgeDPCWidget( myBottoms->setEditable(false); // Counter registers - xpos = 10; ypos += myLineHeight + 4; - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Counter Registers ", TextAlign::Left); + xpos = 2 + _font.getMaxCharWidth() * 2; ypos += myLineHeight + 4; + new StaticTextWidget(boss, _font, xpos, ypos, "Counter registers "); xpos += lwidth; myCounters = new DataGridWidget(boss, _nfont, xpos, ypos-2, 8, 1, 4, 16, Common::Base::Fmt::_16_4); @@ -97,9 +100,8 @@ CartridgeDPCWidget::CartridgeDPCWidget( myCounters->setEditable(false); // Flag registers - xpos = 10; ypos += myLineHeight + 4; - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Flag Registers ", TextAlign::Left); + xpos = 2 + _font.getMaxCharWidth() * 2; ypos += myLineHeight + 4; + new StaticTextWidget(boss, _font, xpos, ypos, "Flag registers "); xpos += lwidth; myFlags = new DataGridWidget(boss, _nfont, xpos, ypos-2, 8, 1, 2, 8, Common::Base::Fmt::_16); @@ -107,10 +109,9 @@ CartridgeDPCWidget::CartridgeDPCWidget( myFlags->setEditable(false); // Music mode - xpos = 2; ypos += myLineHeight + 12; + xpos = 2; ypos += myLineHeight + V_GAP * 3; lwidth = _font.getStringWidth("Music mode (DF5/DF6/DF7) "); - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Music mode (DF5/DF6/DF7) ", TextAlign::Left); + new StaticTextWidget(boss, _font, xpos, ypos, "Music mode (DF5/DF6/DF7) "); xpos += lwidth; myMusicMode = new DataGridWidget(boss, _nfont, xpos, ypos-2, 3, 1, 2, 8, Common::Base::Fmt::_16); @@ -118,9 +119,8 @@ CartridgeDPCWidget::CartridgeDPCWidget( myMusicMode->setEditable(false); // Current random number - xpos = 10; ypos += myLineHeight + 4; - new StaticTextWidget(boss, _font, xpos, ypos, lwidth, - myFontHeight, "Current random number ", TextAlign::Left); + xpos = 2; ypos += myLineHeight + V_GAP * 3; + new StaticTextWidget(boss, _font, xpos, ypos, "Current random number "); xpos += lwidth; myRandom = new DataGridWidget(boss, _nfont, xpos, ypos-2, 1, 1, 2, 8, Common::Base::Fmt::_16); @@ -229,9 +229,8 @@ string CartridgeDPCWidget::bankState() { ostringstream& buf = buffer(); - static constexpr std::array spot = { "$FFF8", "$FFF9" }; - buf << "Bank = " << std::dec << myCart.getBank() - << ", hotspot = " << spot[myCart.getBank()]; + buf << "Bank #" << std::dec << myCart.getBank() + << " (hotspot $" << Common::Base::HEX4 << (0xFFF8 + myCart.getBank()) << ")"; return buf.str(); } @@ -252,10 +251,9 @@ uInt32 CartridgeDPCWidget::internalRamRPort(int start) string CartridgeDPCWidget::internalRamDescription() { ostringstream desc; - desc << "$0000 - $07FF - 2K display data\n" - << " indirectly accessible to 6507\n" - << " via DPC+'s Data Fetcher\n" - << " registers\n"; + desc << "2K display data @ $0000 - $" << Common::Base::HEX4 << 0x07FF << "\n" + << " indirectly accessible to 6507 via DPC's\n" + << " data fetcher registers\n"; return desc.str(); } diff --git a/src/debugger/gui/CartDPCWidget.hxx b/src/debugger/gui/CartDPCWidget.hxx index ff57ddc1d..0a675a2c8 100644 --- a/src/debugger/gui/CartDPCWidget.hxx +++ b/src/debugger/gui/CartDPCWidget.hxx @@ -75,6 +75,7 @@ class CartridgeDPCWidget : public CartDebugWidget const ByteArray& internalRamCurrent(int start, int count) override; void internalRamSetValue(int addr, uInt8 value) override; uInt8 internalRamGetValue(int addr) override; + string tabLabel() override { return " DPC Display Data "; } // end of functions for Cartridge RAM tab // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartDebugWidget.cxx b/src/debugger/gui/CartDebugWidget.cxx index 25423ebd7..5d0bb5c98 100644 --- a/src/debugger/gui/CartDebugWidget.cxx +++ b/src/debugger/gui/CartDebugWidget.cxx @@ -49,7 +49,7 @@ int CartDebugWidget::addBaseInformation(size_t bytes, const string& manufacturer int x = 2, y = 8; // Add ROM size, manufacturer and bankswitch info - new StaticTextWidget(_boss, _font, x, y + 1, "ROM Size "); + new StaticTextWidget(_boss, _font, x, y + 1, "ROM size "); buf << bytes << " bytes"; if(bytes >= 1024) buf << " / " << (bytes/1024) << "KB"; diff --git a/src/debugger/gui/CartDebugWidget.hxx b/src/debugger/gui/CartDebugWidget.hxx index 7789cbb16..7bdcbf472 100644 --- a/src/debugger/gui/CartDebugWidget.hxx +++ b/src/debugger/gui/CartDebugWidget.hxx @@ -58,7 +58,7 @@ class CartDebugWidget : public Widget, public CommandSender virtual string bankState() { return "0 (non-bankswitched)"; } // To make the Cartridge RAM show up in the debugger, implement - // the following 8 functions for cartridges with internal RAM + // the following 9 functions for cartridges with internal RAM virtual uInt32 internalRamSize() { return 0; } virtual uInt32 internalRamRPort(int start) { return 0; } virtual string internalRamDescription() { return EmptyString; } @@ -67,6 +67,7 @@ class CartDebugWidget : public Widget, public CommandSender virtual void internalRamSetValue(int addr, uInt8 value) { } virtual uInt8 internalRamGetValue(int addr) { return 0; } virtual string internalRamLabel(int addr) { return "Not available/applicable"; } + virtual string tabLabel() { return " Cartridge RAM "; } protected: // Arrays used to hold current and previous internal RAM values diff --git a/src/debugger/gui/CartE78KWidget.cxx b/src/debugger/gui/CartE78KWidget.cxx index b14d24809..2ad1c012e 100644 --- a/src/debugger/gui/CartE78KWidget.cxx +++ b/src/debugger/gui/CartE78KWidget.cxx @@ -27,17 +27,18 @@ CartridgeE78KWidget::CartridgeE78KWidget( : CartridgeMNetworkWidget(boss, lfont, nfont, x, y, w, h, cart) { ostringstream info; - info << "E78K cartridge, 4 2K slices ROM + 2 1K RAM\n" - << "Lower 2K accessible @ $F000 - $F7FF\n" - << " Slice 0 - 2 of ROM (hotspots $FE4 to $FE6)\n" - << " Slice 7 (1K) of RAM (hotspot $FE7)\n" - << " $F400 - $F7FF (R), $F000 - $F3FF (W)\n" - << "256B RAM accessible @ $F800 - $F9FF\n" - << " Hotspots $FE8 - $FEB (256B of RAM slice 1)\n" - << " $F900 - $F9FF (R), $F800 - $F8FF (W)\n" - << "Upper 1.5K ROM accessible @ $FA00 - $FFFF\n" - << " Always points to last 1.5K of ROM\n" - << "Startup slices = 0 / 0 or undetermined\n"; + info << "E78K cartridge, four 2K banks ROM + 2K RAM,\n" + << " mapped into three segments\n" + << "Lower 2K accessible @ $F000 - $F7FF\n" + << " ROM banks 0 - 2 (hotspots $FFE4 to $FFE6)\n" + << " 1K RAM bank 3 (hotspot $FFE7)\n" + << " $F400 - $F7FF (R), $F000 - $F3FF (W)\n" + << "256B RAM accessible @ $F800 - $F9FF\n" + << " RAM banks 0 - 3 (hotspots $FFE8 - $FFEB)\n" + << " $F900 - $F9FF (R), $F800 - $F8FF (W)\n" + << "Upper 1.5K ROM accessible @ $FA00 - $FFFF\n" + << " Always points to last 1.5K of ROM\n" + << "Startup segments = 0 / 0 or undetermined\n"; #if 0 // Eventually, we should query this from the debugger/disassembler @@ -53,7 +54,7 @@ CartridgeE78KWidget::CartridgeE78KWidget( const char* CartridgeE78KWidget::getSpotLower(int idx) { static constexpr std::array spot_lower = { - "0 - ROM ($FFE4)", "1 - ROM ($FFE5)", "2 - ROM ($FFE6)", "3 - RAM ($FFE7)" + "#0 - ROM ($FFE4)", "#1 - ROM ($FFE5)", "#2 - ROM ($FFE6)", "#3 - RAM ($FFE7)" }; return spot_lower[idx]; @@ -63,7 +64,7 @@ const char* CartridgeE78KWidget::getSpotLower(int idx) const char* CartridgeE78KWidget::getSpotUpper(int idx) { static constexpr std::array spot_upper = { - "0 - RAM ($FFE8)", "1 - RAM ($FFE9)", "2 - RAM ($FFEA)", "3 - RAM ($FFEB)" + "#0 - RAM ($FFE8)", "#1 - RAM ($FFE9)", "#2 - RAM ($FFEA)", "#3 - RAM ($FFEB)" }; return spot_upper[idx]; diff --git a/src/debugger/gui/CartE7Widget.cxx b/src/debugger/gui/CartE7Widget.cxx index f4a5ea3dd..8546e84eb 100644 --- a/src/debugger/gui/CartE7Widget.cxx +++ b/src/debugger/gui/CartE7Widget.cxx @@ -26,17 +26,18 @@ CartridgeE7Widget::CartridgeE7Widget( : CartridgeMNetworkWidget(boss, lfont, nfont, x, y, w, h, cart) { ostringstream info; - info << "E7 cartridge, 8 2K slices ROM + 2 1K RAM\n" + info << "E7 cartridge, eight 2K banks ROM + 2K RAM,\n" + << " mapped into three segments\n" << "Lower 2K accessible @ $F000 - $F7FF\n" - << " Slice 0 - 6 of ROM (hotspots $FE0 to $FE6)\n" - << " Slice 7 (1K) of RAM (hotspot $FE7)\n" + << " ROM Banks 0 - 6 (hotspots $FFE0 to $FFE6)\n" + << " 1K RAM Bank 7 (hotspot $FFE7)\n" << " $F400 - $F7FF (R), $F000 - $F3FF (W)\n" << "256B RAM accessible @ $F800 - $F9FF\n" - << " Hotspots $FE8 - $FEB (256B of RAM slice 1)\n" + << " RAM banks 0 - 3 (hotspots $FFE8 - $FFEB)\n" << " $F900 - $F9FF (R), $F800 - $F8FF (W)\n" << "Upper 1.5K ROM accessible @ $FA00 - $FFFF\n" << " Always points to last 1.5K of ROM\n" - << "Startup slices = 0 / 0 or undetermined\n"; + << "Startup segments = 0 / 0 or undetermined\n"; #if 0 // Eventually, we should query this from the debugger/disassembler @@ -52,8 +53,8 @@ CartridgeE7Widget::CartridgeE7Widget( const char* CartridgeE7Widget::getSpotLower(int idx) { static constexpr std::array spot_lower = { - "0 - ROM ($FFE0)", "1 - ROM ($FFE1)", "2 - ROM ($FFE2)", "3 - ROM ($FFE3)", - "4 - ROM ($FFE4)", "5 - ROM ($FFE5)", "6 - ROM ($FFE6)", "7 - RAM ($FFE7)" + "#0 - ROM ($FFE0)", "#1 - ROM ($FFE1)", "#2 - ROM ($FFE2)", "#3 - ROM ($FFE3)", + "#4 - ROM ($FFE4)", "#5 - ROM ($FFE5)", "#6 - ROM ($FFE6)", "#7 - RAM ($FFE7)" }; return spot_lower[idx]; @@ -63,7 +64,7 @@ const char* CartridgeE7Widget::getSpotLower(int idx) const char* CartridgeE7Widget::getSpotUpper(int idx) { static constexpr std::array spot_upper = { - "0 - RAM ($FFE8)", "1 - RAM ($FFE9)", "2 - RAM ($FFEA)", "3 - RAM ($FFEB)" + "#0 - RAM ($FFE8)", "#1 - RAM ($FFE9)", "#2 - RAM ($FFEA)", "#3 - RAM ($FFEB)" }; return spot_upper[idx]; diff --git a/src/debugger/gui/CartEnhancedWidget.cxx b/src/debugger/gui/CartEnhancedWidget.cxx index 8001c1292..f864a21c0 100644 --- a/src/debugger/gui/CartEnhancedWidget.cxx +++ b/src/debugger/gui/CartEnhancedWidget.cxx @@ -233,7 +233,7 @@ string CartridgeEnhancedWidget::bankState() } return buf.str(); } - return "0 (non-bankswitched)"; + return "non-bankswitched"; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -339,18 +339,18 @@ string CartridgeEnhancedWidget::internalRamDescription() { desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for read Access\n"; + << " used for read access\n"; } desc << indent << "$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myWriteOffset) << " - $" << (ADDR_BASE | (myCart.myWriteOffset + myCart.myRamMask)) - << " used for write Access"; + << " used for write access"; if(myCart.myReadOffset > myCart.myWriteOffset) { desc << indent << "\n$" << Common::Base::HEX4 << (ADDR_BASE | myCart.myReadOffset) << " - $" << (ADDR_BASE | (myCart.myReadOffset + myCart.myRamMask)) - << " used for read Access"; + << " used for read access"; } return desc.str(); diff --git a/src/debugger/gui/CartMNetworkWidget.cxx b/src/debugger/gui/CartMNetworkWidget.cxx index 37d382a7e..e9cc68869 100644 --- a/src/debugger/gui/CartMNetworkWidget.cxx +++ b/src/debugger/gui/CartMNetworkWidget.cxx @@ -47,18 +47,18 @@ void CartridgeMNetworkWidget::initialize(GuiObject* boss, CartridgeMNetwork& car for(int i = 0; i < 4; ++i) VarList::push_back(items1, getSpotUpper(i)); - const int lwidth = _font.getStringWidth("Set slice for upper 256B "), - fwidth = _font.getStringWidth("3 - RAM ($FFEB)"); + const int lwidth = _font.getStringWidth("Set bank for upper 256B segment "), + fwidth = _font.getStringWidth("#3 - RAM ($FFEB)"); myLower2K = new PopUpWidget(boss, _font, xpos, ypos - 2, fwidth, myLineHeight, items0, - "Set slice for lower 2K ", lwidth, kLowerChanged); + "Set bank for lower 2K segment", lwidth, kLowerChanged); myLower2K->setTarget(this); addFocusWidget(myLower2K); ypos += myLower2K->getHeight() + 4; myUpper256B = new PopUpWidget(boss, _font, xpos, ypos - 2, fwidth, myLineHeight, items1, - "Set slice for upper 256B ", lwidth, kUpperChanged); + "Set bank for upper 256B segment ", lwidth, kUpperChanged); myUpper256B->setTarget(this); addFocusWidget(myUpper256B); } @@ -71,14 +71,14 @@ void CartridgeMNetworkWidget::saveOldState() for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - myOldState.lowerBank = myCart.myCurrentSlice[0]; + myOldState.lowerBank = myCart.myCurrentBank[0]; myOldState.upperBank = myCart.myCurrentRAM; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMNetworkWidget::loadConfig() { - myLower2K->setSelectedIndex(myCart.myCurrentSlice[0], myCart.myCurrentSlice[0] != myOldState.lowerBank); + myLower2K->setSelectedIndex(myCart.myCurrentBank[0], myCart.myCurrentBank[0] != myOldState.lowerBank); myUpper256B->setSelectedIndex(myCart.myCurrentRAM, myCart.myCurrentRAM != myOldState.upperBank); CartDebugWidget::loadConfig(); @@ -111,8 +111,8 @@ string CartridgeMNetworkWidget::bankState() { ostringstream& buf = buffer(); - buf << "Slices: " << std::dec - << getSpotLower(myCart.myCurrentSlice[0]) << " / " + buf << "Segments: " << std::dec + << getSpotLower(myCart.myCurrentBank[0]) << " / " << getSpotUpper(myCart.myCurrentRAM); return buf.str(); @@ -135,11 +135,11 @@ string CartridgeMNetworkWidget::internalRamDescription() { ostringstream desc; desc << "First 1K accessible via:\n" - << " $F000 - $F3FF used for Write Access\n" - << " $F400 - $F7FF used for Read Access\n" - << "256K of second 1K accessible via:\n" - << " $F800 - $F8FF used for Write Access\n" - << " $F900 - $F9FF used for Read Access"; + << " $F000 - $F3FF used for write access\n" + << " $F400 - $F7FF used for read access\n" + << "256 bytes of second 1K accessible via:\n" + << " $F800 - $F8FF used for write access\n" + << " $F900 - $F9FF used for read access"; return desc.str(); } diff --git a/src/debugger/gui/CartRamWidget.cxx b/src/debugger/gui/CartRamWidget.cxx index cfed3d3e5..10bfb5c23 100644 --- a/src/debugger/gui/CartRamWidget.cxx +++ b/src/debugger/gui/CartRamWidget.cxx @@ -47,7 +47,7 @@ CartRamWidget::CartRamWidget( int xpos = 2, ypos = 8; // Add RAM size - new StaticTextWidget(_boss, _font, xpos, ypos + 1, "RAM Size "); + new StaticTextWidget(_boss, _font, xpos, ypos + 1, "RAM size "); uInt32 ramsize = cartDebug.internalRamSize(); buf << ramsize << " bytes"; diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index 3143dbc10..ed98fa879 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -640,7 +640,7 @@ void DebuggerDialog::addRomArea() // The cartridge RAM tab if (myCartDebug->internalRamSize() > 0) { - tabID = myRomTab->addTab(" Cartridge RAM ", TabWidget::AUTO_WIDTH); + tabID = myRomTab->addTab(myCartDebug->tabLabel(), TabWidget::AUTO_WIDTH); myCartRam = new CartRamWidget(myRomTab, *myLFont, *myNFont, 2, 2, tabWidth - 1, tabHeight - myRomTab->getTabHeight() - 2, *myCartDebug); diff --git a/src/debugger/gui/RomWidget.cxx b/src/debugger/gui/RomWidget.cxx index e62fe0a17..3279ca5d9 100644 --- a/src/debugger/gui/RomWidget.cxx +++ b/src/debugger/gui/RomWidget.cxx @@ -41,12 +41,9 @@ RomWidget::RomWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n // Show current bank state xpos = x; ypos = y + 7; - t = new StaticTextWidget(boss, lfont, xpos, ypos, - lfont.getStringWidth("Bank"), - lfont.getFontHeight(), - "Bank", TextAlign::Left); + t = new StaticTextWidget(boss, lfont, xpos, ypos, "Info "); - xpos += t->getWidth() + 5; + xpos += t->getRight(); myBank = new EditTextWidget(boss, nfont, xpos, ypos-2, _w - 2 - xpos, nfont.getLineHeight()); myBank->setEditable(false); diff --git a/src/emucore/Cart.hxx b/src/emucore/Cart.hxx index a7488f551..6fbf1a68d 100644 --- a/src/emucore/Cart.hxx +++ b/src/emucore/Cart.hxx @@ -189,7 +189,7 @@ class Cartridge : public Device cases where ROMs have 2K blocks in some preset area, the bankCount is the number of such blocks. Finally, in some esoteric schemes, the number of ways that the addressing can change (multiple ROM and - RAM slices at multiple access points) is so complicated that the + RAM segments at multiple access points) is so complicated that the cart will report having only one 'virtual' bank. */ virtual uInt16 romBankCount() const { return 1; } diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index d9c37d7e4..07afae5a2 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -29,7 +29,7 @@ CartridgeE0::CartridgeE0(const ByteBuffer& image, size_t size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeE0::reset() { - // Setup segments to some default slices + // Setup segments to some default banks if(randomStartBank()) { bank(mySystem->randGenerator().next() % 8, 0); diff --git a/src/emucore/CartE0.hxx b/src/emucore/CartE0.hxx index 7c1fe18e3..84c9ae667 100644 --- a/src/emucore/CartE0.hxx +++ b/src/emucore/CartE0.hxx @@ -29,10 +29,10 @@ class System; /** This is the cartridge class for Parker Brothers' 8K games. In this bankswitching scheme the 2600's 4K cartridge address space - is broken into four 1K segments. The desired 1K slice of the + is broken into four 1K segments. The desired 1K bank of the ROM is selected by accessing $1FE0 to $1FE7 for the first 1K. - $1FE8 to $1FEF selects the slice for the second 1K, and $1FF0 to - $1FF7 selects the slice for the third 1K. The last 1K segment + $1FE8 to $1FEF selects the bank for the second 1K, and $1FF0 to + $1FF7 selects the bank for the third 1K. The last 1K segment always points to the last 1K of the ROM image. Because of the complexity of this scheme, the cart reports having diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index 0bb6f54fb..d5ccf6591 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -48,7 +48,7 @@ void CartridgeEnhanced::install(System& system) createRomAccessArrays(mySize + (myRomOffset > 0 ? 0 : myRamSize)); - // Allocate array for the current bank segments slices + // Allocate array for the segment's current bank offset myCurrentSegOffset = make_unique(myBankSegs); // Allocate array for the RAM area diff --git a/src/emucore/CartMNetwork.cxx b/src/emucore/CartMNetwork.cxx index 984769b17..c6542b2b8 100644 --- a/src/emucore/CartMNetwork.cxx +++ b/src/emucore/CartMNetwork.cxx @@ -36,7 +36,7 @@ void CartridgeMNetwork::initialize(const ByteBuffer& image, size_t size) std::copy_n(image.get(), std::min(romSize(), size), myImage.get()); createRomAccessArrays(romSize() + myRAM.size()); - myRAMSlice = romBankCount() - 1; + myRAMBank = romBankCount() - 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -96,10 +96,10 @@ void CartridgeMNetwork::install(System& system) /*setAccess(0x1FE0 & ~System::PAGE_MASK, System::PAGE_SIZE, 0, nullptr, 0x1fc0, System::PA_NONE, 0x1fc0);*/ - // Setup the second segment to always point to the last ROM slice + // Setup the second segment to always point to the last ROM bank setAccess(0x1A00, 0x1FE0U & (~System::PAGE_MASK - 0x1A00), - myRAMSlice * BANK_SIZE, myImage.get(), myRAMSlice * BANK_SIZE, System::PageAccessType::READ, BANK_SIZE - 1); - myCurrentSlice[1] = myRAMSlice; + myRAMBank * BANK_SIZE, myImage.get(), myRAMBank * BANK_SIZE, System::PageAccessType::READ, BANK_SIZE - 1); + myCurrentBank[1] = myRAMBank; // Install some default banks for the RAM and first segment bankRAM(0); @@ -115,7 +115,7 @@ uInt8 CartridgeMNetwork::peek(uInt16 address) // Switch banks if necessary checkSwitchBank(address); - if((myCurrentSlice[0] == myRAMSlice) && (address < BANK_SIZE / 2)) + if((myCurrentBank[0] == myRAMBank) && (address < BANK_SIZE / 2)) { // Reading from the 1K write port @ $1000 triggers an unwanted write return peekRAM(myRAM[address & (BANK_SIZE / 2 - 1)], peekAddress); @@ -126,7 +126,7 @@ uInt8 CartridgeMNetwork::peek(uInt16 address) return peekRAM(myRAM[0x0400 + (myCurrentRAM << 8) + (address & 0x00FF)], peekAddress); } else - return myImage[(myCurrentSlice[address >> 11] << 11) + (address & (BANK_SIZE - 1))]; + return myImage[(myCurrentBank[address >> 11] << 11) + (address & (BANK_SIZE - 1))]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -139,9 +139,9 @@ bool CartridgeMNetwork::poke(uInt16 address, uInt8 value) checkSwitchBank(address); // All RAM writes are mapped here - if((myCurrentSlice[0] == myRAMSlice) && (address < BANK_SIZE / 2)) + if((myCurrentBank[0] == myRAMBank) && (address < BANK_SIZE / 2)) { - // RAM slices + // RAM banks if(!(address & 0x0400)) { pokeRAM(myRAM[address & (BANK_SIZE / 2 - 1)], pokeAddress, value); @@ -189,7 +189,7 @@ void CartridgeMNetwork::bankRAM(uInt16 bank) // Remember what bank we're in myCurrentRAM = bank; - uInt16 offset = bank << 8; // * RAM_SLICE_SIZE (256) + uInt16 offset = bank << 8; // * RAM_BANK_SIZE (256) // Setup the page access methods for the current bank // Set the page accessing method for the 256 bytes of RAM reading pages @@ -201,26 +201,26 @@ void CartridgeMNetwork::bankRAM(uInt16 bank) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartridgeMNetwork::bank(uInt16 slice) +bool CartridgeMNetwork::bank(uInt16 bank) { if(bankLocked()) return false; // Remember what bank we're in - myCurrentSlice[0] = slice; + myCurrentBank[0] = bank; // Setup the page access methods for the current bank - if(slice != myRAMSlice) + if(bank != myRAMBank) { - uInt16 offset = slice << 11; // * BANK_SIZE (2048) + uInt16 offset = bank << 11; // * BANK_SIZE (2048) // Map ROM image into first segment setAccess(0x1000, BANK_SIZE, offset, myImage.get(), offset, System::PageAccessType::READ); } else { - // Set the page accessing method for the 1K slice of RAM writing pages + // Set the page accessing method for the 1K bank of RAM writing pages setAccess(0x1000, BANK_SIZE / 2, 0, myRAM.data(), romSize(), System::PageAccessType::WRITE); - // Set the page accessing method for the 1K slice of RAM reading pages + // Set the page accessing method for the 1K bank of RAM reading pages setAccess(0x1000 + BANK_SIZE / 2, BANK_SIZE / 2, 0, myRAM.data(), romSize(), System::PageAccessType::READ); } return myBankChanged = true; @@ -229,7 +229,7 @@ bool CartridgeMNetwork::bank(uInt16 slice) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt16 CartridgeMNetwork::getBank(uInt16 address) const { - return myCurrentSlice[(address & 0xFFF) >> 11]; // 2K slices + return myCurrentBank[(address & 0xFFF) >> 11]; // 2K segments } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -239,7 +239,7 @@ bool CartridgeMNetwork::patch(uInt16 address, uInt8 value) if(address < 0x0800) { - if(myCurrentSlice[0] == myRAMSlice) + if(myCurrentBank[0] == myRAMBank) { // Normally, a write to the read port won't do anything // However, the patch command is special in that ignores such @@ -247,7 +247,7 @@ bool CartridgeMNetwork::patch(uInt16 address, uInt8 value) myRAM[address & 0x03FF] = value; } else - myImage[(myCurrentSlice[0] << 11) + (address & (BANK_SIZE-1))] = value; + myImage[(myCurrentBank[0] << 11) + (address & (BANK_SIZE-1))] = value; } else if(address < 0x0900) { @@ -257,7 +257,7 @@ bool CartridgeMNetwork::patch(uInt16 address, uInt8 value) myRAM[0x0400 + (myCurrentRAM << 8) + (address & 0x00FF)] = value; } else - myImage[(myCurrentSlice[address >> 11] << 11) + (address & (BANK_SIZE-1))] = value; + myImage[(myCurrentBank[address >> 11] << 11) + (address & (BANK_SIZE-1))] = value; return myBankChanged = true; } @@ -274,7 +274,7 @@ bool CartridgeMNetwork::save(Serializer& out) const { try { - out.putShortArray(myCurrentSlice.data(), myCurrentSlice.size()); + out.putShortArray(myCurrentBank.data(), myCurrentBank.size()); out.putShort(myCurrentRAM); out.putByteArray(myRAM.data(), myRAM.size()); } @@ -292,7 +292,7 @@ bool CartridgeMNetwork::load(Serializer& in) { try { - in.getShortArray(myCurrentSlice.data(), myCurrentSlice.size()); + in.getShortArray(myCurrentBank.data(), myCurrentBank.size()); myCurrentRAM = in.getShort(); in.getByteArray(myRAM.data(), myRAM.size()); } @@ -304,7 +304,7 @@ bool CartridgeMNetwork::load(Serializer& in) // Set up the previously used banks for the RAM and segment bankRAM(myCurrentRAM); - bank(myCurrentSlice[0]); + bank(myCurrentBank[0]); return true; } diff --git a/src/emucore/CartMNetwork.hxx b/src/emucore/CartMNetwork.hxx index dd9443390..95cd24b56 100644 --- a/src/emucore/CartMNetwork.hxx +++ b/src/emucore/CartMNetwork.hxx @@ -51,7 +51,7 @@ here by accessing 1FE8 to 1FEB. This cart reports having 8 banks; 1 for each of the possible 7 - slices in the lower 2K area, and the last for RAM in the lower + bank in the lower 2K area, and the last for RAM in the lower 2K area." There are 8K, 12K and 16K variations, with or without RAM. @@ -179,7 +179,7 @@ class CartridgeMNetwork : public Cartridge private: // Size of RAM in the cart static constexpr uInt32 RAM_SIZE = 0x800; // 1K + 4 * 256B = 2K - // Number of slices with 4K address space + // Number of segment within the 4K address space static constexpr uInt32 NUM_SEGMENTS = 2; /** @@ -198,8 +198,6 @@ class CartridgeMNetwork : public Cartridge private: // Pointer to a dynamically allocated ROM image of the cartridge ByteBuffer myImage; - // The 16K ROM image of the cartridge (works for E78K too) - //uInt8 myImage[BANK_SIZE * 8]; // Size of the ROM image size_t mySize{0}; @@ -207,14 +205,14 @@ class CartridgeMNetwork : public Cartridge // The 2K of RAM std::array myRAM; - // Indicates which slice is in the segment - std::array myCurrentSlice; + // Indicates which bank is in the segment + std::array myCurrentBank; // Indicates which 256 byte bank of RAM is being used uInt16 myCurrentRAM{0}; - // The number of the RAM slice (== bankCount() - 1) - uInt32 myRAMSlice{0}; + // The number of the RAM bank (== bankCount() - 1) + uInt32 myRAMBank{0}; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/CartWD.cxx b/src/emucore/CartWD.cxx index ff72a2b38..11ebc653e 100644 --- a/src/emucore/CartWD.cxx +++ b/src/emucore/CartWD.cxx @@ -28,7 +28,7 @@ CartridgeWD::CartridgeWD(const ByteBuffer& image, size_t size, // Copy the ROM image into my buffer if (mySize == 8_KB + 3) { - // swap slices 2 & 3 of bad dump and correct size + // swap banks 2 & 3 of bad dump and correct size std::copy_n(image.get() + 1_KB * 3, 1_KB * 1, myImage.get() + 1_KB * 2); std::copy_n(image.get() + 1_KB * 2, 1_KB * 1, myImage.get() + 1_KB * 3); mySize = 8_KB; diff --git a/src/emucore/CartWD.hxx b/src/emucore/CartWD.hxx index 6feb6be63..398571a52 100644 --- a/src/emucore/CartWD.hxx +++ b/src/emucore/CartWD.hxx @@ -30,8 +30,8 @@ class System; This is the cartridge class for a "Wickstead Design" prototype cart. The ROM has 64 bytes of RAM. In this bankswitching scheme the 2600's 4K cartridge address space - is broken into four 1K segments. The desired arrangement of 1K slices - is selected by accessing $30 - $3F of TIA address space. The slices + is broken into four 1K segments. The desired arrangement of 1K banks + is selected by accessing $30 - $3F of TIA address space. The banks are mapped into all 4 segments at once as follows: $0030, $0038: 0,0,1,3 From bbf3fb7a2830b470ac714d6a147e0dbd8af06600 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 28 Apr 2020 09:34:30 +0200 Subject: [PATCH 54/69] replace broken test ROM --- .../E7/Bump 'N' Jump (1983) (Mattel).a26 | 65 ------------------ ...p (1988) (Telegames) (7045 A015) (PAL).bin | Bin 0 -> 8192 bytes 2 files changed, 65 deletions(-) delete mode 100644 test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 create mode 100644 test/roms/bankswitching/E7/Bump 'n' Jump (1988) (Telegames) (7045 A015) (PAL).bin diff --git a/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 b/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 deleted file mode 100644 index 865cfba29..000000000 --- a/test/roms/bankswitching/E7/Bump 'N' Jump (1983) (Mattel).a26 +++ /dev/null @@ -1,65 +0,0 @@ -ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿff~fff~~ff|ff~~f```f~|fffff|~``~``~```|``~~ffn`f~~~~``````BZZ~ffBbfn~vfF~fffff~``~fff~ff|fff~~f~`f~~ ±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…………©`…Ñ…Ó…Õ…×…Ù…Û©ý…Ò…Ô…Ö…Ø…Ú…Ü……*`¢……*¹Œð•ÑÈèèàÐô……*¹Œð•ÑÈèèà Ðô……*©ðLñ`…*¢þêê……*Lò…°……*†Â©Äΰð±Ê…¦¦Ñ©•€ˆÄÏ°±Ì…©¦¦Ó•€¦Â…,……*©Äΰ±Ê…ˆÄÏ°±Ì…©Äΰ±Ê„¨¥ã…+ð-%É……*„¨¥ê…±Å…±Ç…©¤ÂˆÄÏ°±Ì…ÀðOÆã©Lò¥ä%é……*„¨¥ë…±å…±ç…©¤ÂˆÄÏ°±Ì…Àð ©Æä……*Äΰ±Êð…ˆÄÏ°±Ì…ðnLVñ¦áÐ`L -óL%ó…µ³ªµ‡…Îðò†Ñµ™…ʈÄÏ𠩈Р±Ì…ˆ±Ì…Ä……*©…µ€)Éz¥Ä…µ“…µ€… )é8éÐü………*µ«…©……Ä…,L•ñµ³ªµ‡…Ïð‰†Ó©Äΰ±Êˆ……*…µ€)ÉCµ™…Ì¥µ“…µ€…!)ééÐü………*µ«…Äΰ±Ê…ˆ…,Lžñéü…¥Ä…µ“…µ€… L|ò8éÐü…µ™…̵“…µ€…!LÉò……*©Äΰ±Ê…ˆÄÏ°±Ì…ÊÐæ`ˆÐL$òÄÏ°±Ì…Ð…ÏLVñ……*ÊÐù`……*¥Ãê¥ê…êêê êˆÐü……©…%…&©À… ©Ð…!©……*………… … ©€…… ©………+……*¢ :ó  ñ……* ¾ð¥ñ¢Ù Öô……*©,……¢ :ó ¾ð©…Ê…Ë…Ì¥ñÐ ©…Ê……*Lúóø¥ËeñæÊ……*eñæÊeñæÊeñæÊeñæÊ…ËØ……*¢ :ó  ñ……*©€…… ¾ð……*¥Ê¢Ñ Öô……*¥Ë¢Õ Öô……*¥Ì¢Ù Öô……*¢`©ÅÑІÑÅÓІÓÅÕІՅ…*©,…… ¾ð  ñ……*¢ - :ó©€…… ¾ð¥ði…ÃJJJJª¥Ã)É -0¥Ãi…Ãø¥Ã}ñôآم…* Öô……*©,……¢ :ó ¾ð¥ð)ª¼¶ð½ºð…… ñ¢ :ó……* ¾ð¢ :ó`……*…ÃJJJJ¨¹i÷•¥Ã)¨¹i÷•`$06BHT`frx… „ „©À… ©Ð…!ê êˆÐü……©…%…&¢©……*…………… … ©Š ©………+……*©… …±Ûª±Ñ……*…±Ó…±×…ıՅ„ñ٤Ą…††¤ÃˆÖ……*©…%…&……©D…… ¢……*¹Mý……¥âj°8íh÷ûê¥â††ˆàLÅõ8íh÷û¥âê¥â††ˆË……*©……¥î)ª½i÷…Ñ¥íJJJJª½i÷…Ó¥í)ª½i÷…Õ……*©… …©… ©…!©……ê……©…©…©¶…… ……*©… …©ý…Ø…Ú¢`¥ó¢R†×¢`¥î)ð¥¿)ð¢Y†Ù©…!……*±Ñ…±Ó…±×ª­h÷ê±Õ…©,…†±Ù……+©¶…ˆÖ……*©…………Ä¢þµ³ªµ³…×¥ÎÉÿЩ)…Ù -…ÕI¨……*µ™™Ê–јJ¨µ‡™Îµ“™µ«™µ€™Â¦×˜¤ÕÅÙÐÕ……*¥Â)¨¥Â¥Â… ˆÐý………*¥Ã)¨¥Ã¥Ã…!ˆÐý…„ ……*¤ãȘ%ɨ±Å…±Ç…©…%…,©…&©¡åᨅ+……*©… …¥òÉðð É0ÉÐLBó……*©… ¥ê…¥áÉðÄÏ°±Ì…¥áÉð -Éð LòL–ñL‡ñLVñLÜñ`#*18?ððð`ýFýýýý`ý¥øÆø……¢ ½y÷•ÑÊø`©Š……©ý…Ò…Ô…Ö…Ø…Ú…Ü¥Ý¢Ñ Úô¥Þ¢Õ Úô¥ß¢ÙLÚôCopyright 1983 Mattel Dave Akers Jeff Ratcliff Pat Dulong €€€BBBG€€€JNEEEŠ -€€€BBBG€€Š - - -JNNRT€‚„„@@OO€€€BBBC€‚„„@@OO„„BBBC€‚€€ - - - -–BBG€€@@SRER € - - -Š–VNSEEERTE€„„€@@SRER€€@@SE € €€Š - - - - - - - -VASEŽ„ŠŠŠVAGCIIICBBGCHCCIICC@€ - - - -–NNSEER€ ŠVASRERRTRŠ -Š–NNSRR €@@GCIIIIC€€€BBS€„€BBGCHCCIICC@€@@SE€€@@SE€€@@SREEETEŠ - - -Š - -–NNC€@@G€€„„@@SRERRTRUR@BG€€@@S€ €BBS€€‚‚‚BBG‚@@G€Š - - -€–VNSEEEETEUE€€€BBG€ € € €BBGÀ@G€‚‚‚‚B@SEE€€ - - -€€@@SEEERTRR€BBGHHCC IIICQC€„„„––D@SRERRTRUREERRTR€ €€B@SEER€ü@üü@üü@üJüJü„ü@üËünüÿ„¾ü@üJüEüÿ„Jünüÿ„Jü|ü„¿ü4üü0üü0üü0ü¶ü4ü¿ü¿ü„Jü|üÿ„JüXüÿ„ËüJü„ËüEüÿ„Ëü|üÿ„ËüXüÿ„¿ü üLtôLêô¥òÉðÐ#­‚)Щ…ò…Ý…Þ…ß…ï…ñ©…à©…âL¯ôLŽþÉL×ô¥«)ðÉððmÉ°ð É€ðºÉPð¹¥€Ð+ ¥ì - -e‡8é¥ȹêɄТL#ô¢ —þ©ð…«©@…¹L^ô¥ ¥ 0­î𢠗þ©€…«©x…¹¥8é…L^ô¥«É ÐLêô©@…“`¥¹ðHƹ©íîLŽþ¥¹Ð%¥i…©P…«©…¹ø­í8é í­îéîØLbôƹ©……«©…ŸLbô…“LbôÆâ¥â©ð…ò©…‡©…â…ê…ë…óLŽþLøô©î© í©P…©"…‡©…«©@…“LŽþ¥¹Ð…«LbôƹLbô¥ð)ª½µö…ý½ö…Ĥïðˆ±Ã0ˆÐù„ï±Ã)…ó - - -¨¢¹ó•ÅÈèàÐõ¹ó¦ðÐJi²LFõ¥ð)yóª½Åö…ê©-…ì…ã…ä ©¢™«–‡™ŸˆÐõLÍô¥ò0LÉÐLö¥«Éðð? ¥îР¥íÉP¥¿)Ð+¥íÉu0ÈLžõÉð¥íÉ20È„Â¥á8åÂ0…áL´õi…áL¿õ¥ì…ã©0…äLðþæì ¹«)É_ ¹‡8陇ÈÀÐé¥ìÉ0ðL´õ©…ã…ì¥ê…ëæï¥ïÉ`Ð;©…ï…óæð¥ðÉcЩ…ð©ÿ…ò©…ô…ö©…÷…õL´õ©…ò¢øµÝuÊ•ÝÊ÷Ø©…ñ¥ð)ª½µö…ѽ½ö…Ò¤ï±Ñ)…ó - - -i…Ó©ió…Ô ¹Å™å±Ó™Åˆò ±ÓÉ„Ð…êLŠö¦ðÐJi²Lˆö¥ð)qÓª½Åö…êø©eß…ß©eÞ…Þ©eÝ…ÝÅà0¥ài…à¥âÉðæâØL´õ`À €à@ ðððñññòòDà*ุ4©…Ä¢þµ³ªµ³¨Éÿð+¹‡ð&µ‡Éð 8ù‡É °µ8ù…ÃIÿiÉ0˜ªLÖö¥Äð¢L—þ`µ«0í¹«0è©`Õ«ðÙ«ð©PÕ«ðÙ«ðLR÷©°™«L÷©À™«L÷©°•«L÷©À•«L÷µ«àðÉ ð¹«ÀðÉ ðLÄ÷©…Ä© •«™«„µ¥)¨¹ô÷•¹¤Â†Â¹¥)ª½ô÷™¹¦Â©ú™Ÿ©•Ÿ¥Ã0µ¥) P•¥¹¥)  Lé÷µ¥)  •¥¹¥) PLé÷¥Ã0µ¥) (•¥¹¥) ØLé÷µ¥) Ø•¥¹¥) (™¥˜ªµ³¨L÷-¥òÉððÉТ††`Æõð ¥òÐLcòÆ÷ð,`¦ô¥òð0½òLFð½IòLFð­‚)Щ…Lcò½"ñ _ðLð¦ö¥ò0½1òL[ð½Vò Æð`ÉÿÐ(¢¥òð†††ò†ô†öÉÿÐæò©<…õ…÷`†ô©…õhhL#ð…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJÉ¢ð -¤òð¢ Т†ª½ñ…õæô`ÉÿТ††`…Ã)ª½ñ¨)…˜0©Ð© …¥ÃJJJJɢ𢠆ª½ñ…÷æö` :8b †‡ˆ‹Œ›4ðD9ðI5ðEx4ðD9ðI5ðE|4ðD9ðI5ðEDH7ðGBGDGbðBvHCwDFxEGt9ðID7ðGEH6ðFGCA@‚ðR#xS&dðT(w+)$'X'v*%(&4ðD8ðH7ðGyHEDHDEy4ðð$9ð ð)HDu4ðð$9ð ð)DEy4ðð$9ð ð)(&s4ðð$9ð ð)HDu4ðð$9ð ð)+)u4ðð$9ð ð)$'v3ðð#7ðð'##bðBCHGCFDHFGEDGDyrFH3ðCGDvHE7ðGDIÿ4à”à”à444ਤ¨4à”à”à´àð¤ÿ7à—à—à777ধ¦7à—à—à·àð§ÿÇ7¦§¨Ç¤¨¦§¨×ÿÄ4¨¤¥Ä©¥¨¤¥Ôÿ¥öЩ…À©…©…¦î½{ò…`Æ÷Ðæö¦ö½°òÉÿЩ……ö`½vó…÷¦ö½°ò…½ó¨)…˜JJJJ…` -  - - - ÿÿÿ ÿÿÿÿO@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@O@ÿ‰ŠŠ‰…ƒÿ…‰‰…ÿÅÅÅEEEEÅÿMÿ‡‰ŠŒ‹Š‰ˆ‡†…ƒ‚ÿ…‡‰ŠŒ‹Š‰ˆ‡†…„ƒ‚ÿ - - -ÿÿÿÿÿ -ÿ -ÿ¥ó)…ó)@ð¥¿)Ð¥ÀÉ𢠗þ¥ó €…ó¢¥êÉ„ð¥ëɄТÿ†Ó¥³Ð`¢þ µ³™×ȪÀÐõ¥ðð nö „¹תµ¥)…ÄàÐLõ¥òLˆõµ«ð -Éð7LæõL6öµ‡ÉÐL"õµ¹Ð"¥îЩ•¥L€ô¥ÄÉРµ‡8几û”Ÿ©ÿ•¹Ö¹µ€Ð (µÉT°ÉG°L›ôÉ` Ø”¥¥Ó¥Â)ðLˆõ©p•«Lõµ«Éð—¥ïÉ^Lˆõ¤ÂÀ0 ¹Õ¨¹‡8õ‡É°¹ŸÉìð©ú•Ÿ©•¹Lõ¤ÂÀ%¹Ù¨µ‡8ù‡É°¥îЩР¹ŸÉð©•Ÿ©•¹µ¥Ä•¥¤ÂÈÀðL)ô`Še¿)ÐQ¤×¹‡É–°H¥êÉ„ðB©àð µEÁ)i…Ĩ¹£ö•“¥îÐ àð#©•‡©Lkõ©­•‡©P•©ð•Ÿ©ÿ•¹ Ø¥¿0 (”¥Lõ©•¥•Ÿµ¹Ð©•‡©•¥•Ÿ©•«LõÖ¹©•¥•Ÿµ‡0ãÉ0ßLõàðµ€ÐQ©ÿ…ø©øeÞ…Þ©eÝ…Ý¥ñÉ™ði…ñ؆â —þ¦Ã©ð•«©@•¹LõÉðð”Épð­É ðºÉ°ðÜÉÀðºÉ`ð5ÉðLõµ¹ðÖ¹Lõ (¹¥0 Ø˜•¥L’õµ¹ð Ö¹©•¥•ŸLõ©•«LõL›õ¥¾ðƾLõ©ô…˜¤Ü©`™«¥Œ8陇¥’™©™¥©™“…°©…Œ©ü…¤Lõ¥°Éð.¥ŒÉ‚Ð(¤Ü¹‡ÉЩ™«©#™¹©…°©…˜©…¾©…¤¢L—þ`ü²š€ô!ñáÑÁ±¡‘rbRB2"òâÒ²¢’scSC3#óãÓó£“tdTD4$ôäÔÄ´¤”ueUE5%õåÕŵ¥•vfVF6&öæÖƶ¦–wgWG7'÷ç×Ç·§—xhXH8(øèØȸ¨˜yiYI9) ùšššššššš ¹«)pÉ_° ¹‡8åᙇÈÀðL1÷©ú…Ë…Í ¹«Éðй¹JJJª½µþ™“¢¹¹É轺÷L‰÷¹¥) -ª¥¿9´÷Ðè½¼÷8ù‡™™ˆÀ­«É…Э¹ÉZÉ0¥‡i…‡©¬8凅™`ÀÔèü8L`t$$$ˆˆÔÔ „±¢ÿ–³¢þˆµ³†Âª¹‡Õ‡ô–³¦Â”³¢þˆé ¢þȵ³ªÐú„Î`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿºîª:¨ºþº¸ºîª¸*ºþº:ACg=æÚ¦<~Z~<‚Âæ¼g[e<~Z~<Û<ÿ$ç4ÿ$ç~B~ÿ<ç$÷<ç$~B~~ÃÃÃÃÃ~½ÿ¥’’¾¾þþ¦¦¦¦$$<ÿ¥îÐ¥íÉ!ø¥í8é…í¥îé…îØ`¥Ái)…Á¢ à0µŸ -8j8j8j -LeÿJJ)þLeÿµŸIÿieÁJJJJJIÿiL„ÿeÁJJJJJu‡ÝÅÿà àð©L§ÿ½ÅÿL§ÿݹÿÐi•‡Êž¢´¹—ö•€Êö` T®®®®® !"#gýgýgý \ No newline at end of file diff --git a/test/roms/bankswitching/E7/Bump 'n' Jump (1988) (Telegames) (7045 A015) (PAL).bin b/test/roms/bankswitching/E7/Bump 'n' Jump (1988) (Telegames) (7045 A015) (PAL).bin new file mode 100644 index 0000000000000000000000000000000000000000..20cfc1551cc224f718a08204397ad77209ec2c72 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 From 7463f3cf32ded0d9e266da5921e8c58f36202dcf Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 30 Apr 2020 23:45:14 +0200 Subject: [PATCH 55/69] fix disassembly for segmented bankswitching types --- src/debugger/CartDebug.cxx | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/debugger/CartDebug.cxx b/src/debugger/CartDebug.cxx index ef6924187..5192f84e8 100644 --- a/src/debugger/CartDebug.cxx +++ b/src/debugger/CartDebug.cxx @@ -71,18 +71,19 @@ CartDebug::CartDebug(Debugger& dbg, Console& console, const OSystem& osystem) } // Create bank information for each potential bank, and an extra one for ZP RAM + // ROM sizes greater than 4096 indicate multi-bank ROMs, but we handle only + // 4K pieces at a time + // ROM sizes less than 4K use the actual value + size_t romSize = 0; + myConsole.cartridge().getImage(romSize); + BankInfo info; + info.size = std::min(romSize, 4_KB); for(uInt32 i = 0; i < myConsole.cartridge().romBankCount(); ++i) - { - info.size = myConsole.cartridge().bankSize(i); myBankInfo.push_back(info); - } for(uInt32 i = 0; i < myConsole.cartridge().ramBankCount(); ++i) - { - info.size = myConsole.cartridge().bankSize(i) >> 1; myBankInfo.push_back(info); - } info.size = 128; // ZP RAM myBankInfo.push_back(info); From da3d7f1108afed6e36ca5db86cda8c83b290df5f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 1 May 2020 20:49:45 +0200 Subject: [PATCH 56/69] fix #613 (debugger focus) --- src/debugger/Debugger.cxx | 1 + src/debugger/gui/DebuggerDialog.cxx | 16 ++++++++++------ src/debugger/gui/DebuggerDialog.hxx | 4 +++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index cfb16a1e5..a96f208ec 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -688,6 +688,7 @@ void Debugger::setStartState() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Debugger::setQuitState() { + myDialog->saveConfig(); saveOldState(); // Bus must be unlocked for normal operation when leaving debugger mode diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index ac3c8d6c9..fd15820c4 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -71,12 +71,11 @@ DebuggerDialog::DebuggerDialog(OSystem& osystem, DialogContainer& parent, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DebuggerDialog::loadConfig() { - // set initial focus to myPrompt - if (myFirstLoad) - { - setFocus(myPrompt); - myFirstLoad = false; - } + if(myFocusedWidget == nullptr) + // Set initial focus to prompt tab + myFocusedWidget = myPrompt; + // Restore focus + setFocus(myFocusedWidget); myTab->loadConfig(); myTiaInfo->loadConfig(); @@ -89,6 +88,11 @@ void DebuggerDialog::loadConfig() myMessageBox->setText(""); } +void DebuggerDialog::saveConfig() +{ + myFocusedWidget = _focusedWidget; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod, bool repeated) { diff --git a/src/debugger/gui/DebuggerDialog.hxx b/src/debugger/gui/DebuggerDialog.hxx index b1b42211a..2fa007214 100644 --- a/src/debugger/gui/DebuggerDialog.hxx +++ b/src/debugger/gui/DebuggerDialog.hxx @@ -71,6 +71,7 @@ class DebuggerDialog : public Dialog ButtonWidget& unwindButton() const { return *myUnwindButton; } void showFatalMessage(const string& msg); + void saveConfig(); private: void center() override { positionAt(0); } @@ -136,7 +137,8 @@ class DebuggerDialog : public Dialog unique_ptr myLFont; // used for labels unique_ptr myNFont; // used for normal text - bool myFirstLoad{true}; + Widget* myFocusedWidget{nullptr}; + private: // Following constructors and assignment operators not supported From 129b5be7ff731531ee3c1f6a126de0c1cc60a991 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 2 May 2020 09:20:22 +0200 Subject: [PATCH 57/69] added some more MDM test ROMs and their properties --- src/emucore/DefProps.hxx | 5 ++++- src/emucore/stella.pro | 20 ++++++++++++++++++ .../MDM/208in1_MDMC_test_PAL-127games.bin | Bin 0 -> 524288 bytes .../MDM/POP_MDMC_test_PAL_63gamees.bin | Bin 0 -> 262144 bytes test/roms/bankswitching/MDM/arqsaida2.bin | Bin 0 -> 131072 bytes 5 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 test/roms/bankswitching/MDM/208in1_MDMC_test_PAL-127games.bin create mode 100644 test/roms/bankswitching/MDM/POP_MDMC_test_PAL_63gamees.bin create mode 100644 test/roms/bankswitching/MDM/arqsaida2.bin diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index d5bb3533e..354f68d30 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -static constexpr uInt32 DEF_PROPS_SIZE = 3510; +static constexpr uInt32 DEF_PROPS_SIZE = 3513; static const BSPF::array2D DefProps = {{ { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1032,6 +1032,7 @@ static const BSPF::array2D DefProps = {{ { "4904a2550759b9b4570e886374f9d092", "Parker Brothers, Charlie Heath", "931506", "Reactor (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "490e3cc59d82f85fae817cdf767ea7a0", "", "", "Berzerk (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "490eed07d4691b27f473953fbea6541a", "Activision, Steve Cartwright, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "49366f41aa7a54baf263426e99ce4312", "", "", "POP-MDM-Test (PAL) (63 games)", "", "", "", "", "MDM", "", "", "", "", "JOYSTICK", "JOYSTICK", "", "", "", "", "", "", "", "" }, { "493daaf9fb1ba450eba6b8ed53ffb37d", "", "", "3-D Corridor Demo (27-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "493de059b32f84ab29cde6213964aeee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "493e90602a4434b117c91c95e73828d1", "Telegames", "", "Lock 'n' Chase (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1366,6 +1367,7 @@ static const BSPF::array2D DefProps = {{ { "61719a8bdafbd8dab3ca9ce7b171b9e2", "", "", "Enduro (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "61728c6cfb052e62a9ed088c5bf407ba", "", "", "Sprite Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "619de46281eb2e0adbb98255732483b4", "", "", "Time Warp (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61baadddc2c8f6e5faa57d4d0f285462", "", "", "208-in-1 MDM-Test (PAL) (127 games)", "", "", "", "", "MDM", "", "", "", "", "JOYSTICK", "JOYSTICK", "", "", "", "", "", "", "", "" }, { "61dbe94f110f30ca4ec524ae5ce2d026", "CCE", "C-820", "Space Invaders (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "61e0f5e1cc207e98704d0758c68df317", "Star Game", "007", "Tennis (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "61ef8c2fc43be9a04fe13fdb79ff2bd9", "", "", "Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2326,6 +2328,7 @@ static const BSPF::array2D DefProps = {{ { "a89a3e0547d6887279c34aba4b17a560", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype)", "", "Prototype", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a8a703e073183a89c94d4d99b9661b7f", "Franklin Cruz", "", "Spice Invaders (Franklin Cruz) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a8b3ea6836b99bea77c8f603cf1ea187", "CCE", "C-861", "Boxing (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8c447efbec3a2b5d08b05a09999bd92", "", "", "MegaCart Menu", "", "", "", "", "", "", "", "", "", "JOYSTICK", "JOYSTICK", "", "", "", "", "", "", "", "" }, { "a8c48b4e0bf35fe97cc84fdd2c507f78", "Puzzy - Bit Corporation", "PG201", "Seamonster (1982) (Puzzy)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a8d0a4a77cd71ac601bd71df5a060e4c", "", "", "Space Shuttle (1983) (Activision) [t2] (Fuel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a8d4a9500b18b0a067a1f272f869e094", "", "", "Red And White Checkerboard Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 4a8ba020e..ef12c4369 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -6131,6 +6131,13 @@ "Cart.Name" "Pitfall II (1983) (Activision) [a]" "" +"Cart.MD5" "49366f41aa7a54baf263426e99ce4312" +"Cart.Name" "POP-MDM-Test (PAL) (63 games)" +"Cart.Type" "MDM" +"Controller.Left" "JOYSTICK" +"Controller.Right" "JOYSTICK" +"" + "Cart.MD5" "493daaf9fb1ba450eba6b8ed53ffb37d" "Cart.Name" "3-D Corridor Demo (27-03-2003) (MP)" "" @@ -8158,6 +8165,13 @@ "Cart.Name" "Time Warp (Unknown)" "" +"Cart.MD5" "61baadddc2c8f6e5faa57d4d0f285462" +"Cart.Name" "208-in-1 MDM-Test (PAL) (127 games)" +"Cart.Type" "MDM" +"Controller.Left" "JOYSTICK" +"Controller.Right" "JOYSTICK" +"" + "Cart.MD5" "61dbe94f110f30ca4ec524ae5ce2d026" "Cart.Manufacturer" "CCE" "Cart.ModelNo" "C-820" @@ -13974,6 +13988,12 @@ "Cart.Name" "Boxing (1983) (CCE)" "" +"Cart.MD5" "a8c447efbec3a2b5d08b05a09999bd92" +"Cart.Name" "MegaCart Menu" +"Controller.Left" "JOYSTICK" +"Controller.Right" "JOYSTICK" +"" + "Cart.MD5" "a8c48b4e0bf35fe97cc84fdd2c507f78" "Cart.Manufacturer" "Puzzy - Bit Corporation" "Cart.ModelNo" "PG201" diff --git a/test/roms/bankswitching/MDM/208in1_MDMC_test_PAL-127games.bin b/test/roms/bankswitching/MDM/208in1_MDMC_test_PAL-127games.bin new file mode 100644 index 0000000000000000000000000000000000000000..61f758068caac101a211d352aec3c6aa942f0baa GIT binary patch literal 524288 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

*_ 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
V=O{xP-4loz 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

HifnWJI&ag05qYch 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 xgk`5!?k^WWrEcZE(W}|ZIp%TM{Lc-u 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 Y?zeBtnMVxk@*MA3tmzR9wBY~ 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 z%0D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%0D44%V9$*0OL_yyD-wB+?of!q7wzy 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

X zNK>p41|fwGDPmI$IckG4<^CM0ZkT1LrO>h*v8^eFS+QI}sty#MQqn@kaVtVHkV&iT zvfwwyxozPU4ki^m4y6eVs0~H780j^aS2bGC9 zQcHuanUFw++~xj#T|zAG5m$rmo3+T@&*|qZC(CK)cqVcy_1PA(()s}OT;dL%tZ*$u zOKG-CXzBa9$SS)O8k+`Gg;sjvaJ9N5B(*B4LPfj`J<2W902#A{y{7}K)M9Qmd#VRg z@~`*M&b*u39h%RN!S^r-ceq;WWZ(ue^ZGEv+k*<}J6{7BugTGDXd?H8BV>yadcG?{ z^92=GrMeZ39uJ*;CbZXE#WNyyCmq{T3Xc}RCSB7v8l4kdce_TT+zg>q7`RQ zaS?NfuPTx*LX4mpJOmTW(xuRQ%9t7MjN+`~obZlA<9^ZB0Q#d2%%=ekjq{rVgWCOy z=+$f--_Ctw7(^Qb8sov_2iIwTzb?{XT+?iq;sb`Ez%5l<20vHW)({K_sRtb}H@ymi zVO=daKpH}WA+QidfpA!31-i`Oz}RpwdPo+iBipS~hs3fGFm~8Wd+yn-#{xsFGUNL# z?1m1{bZ(c3r zwd;)iTI{jjz392GfQE=Eq)7wN_CdX@I|bj#y)+vw^cldzQ`RCn2YOPFMYar?6nO#x ztuP?aUx;5U#CW$ug6WA0&nG7m%9>K)^)z#Kc_^L)@kBYCSq z5f=uJ(6LaWHIDUlKAg&nwT z)OtO{0brY0ZI_CTh0atY2Wn{P#z{;dkK!M6_Yy=1+)gew7NK@QBG0vzg4 z`tVwr|7v8;TC&zU8+DqA#qIIbSV5Bt@H@OAydk)O&fN{9h^}>9o34Kr879u%Hq2c; z)~CT@hC_fCP>0t?|AOm->**9OB1PPKI&Nij!nGOV$uLa%XhJm^>`-kz=95HhpMgrw zp%NRP;N6S(wv9m7LtelYh?6X>D%=cF5*XWE=CHXN)V?Fk!_A{P!jE>p4(1TLdMnII zL>JwYTwyLDge+ZCZ9Z=7Aaf2md6JE`72y4RY+ z;cvxR62qMaazKNxjODWe3y)Zqe{&bGd0J9}ueuKBqayIxwSr=E1t}!U!C&_r;kkUE zE+7SfwBl>zV~cTy0}_lL7d^HGdCpbIdt~s&x|Z)?0#ZyE)^gtWU4(pBO4pwybmh4* z_qmIyvdRU#G*e0zl={v_$U+B|`g0l>%**Z%fDe0|T(MPP0^0WCk*cyCo2RRi!=&MTSdos`5#2zCwhHJb$+CIRV)JTe38kw;Nx) zc57zF(sqy)-jwTH1MKuSQPePcJz&0Al<6fGXn#9!O5hRG@(mO#Evtfh@n3-G0f$mo zo_~K2DF}anmH)-A*Sh|r>)o#TU6w8~DvK=DXU9PsiaYJnQvIB65KTDGnlIa>ZTk1l zFvVwZu>oSinv{YZjV_7141p*^`9XMVLos|Tce(N`c5E5R4}W9gE@-A+&}c?q9DM=b zV?GIk=OL}K-WnsQriHn%aVaRB!k|T}7W#wI>sWLpz#74=w!zYo`i>#$7^M(f&&z+?+y)%xr^uzbl1bS>D?W_je0ZU|bTi>WGd#ROmt z7s5Bq?ZDg3klSsy$E>?O0zllT*X=QHk9gDl4`cQP{>wmTUxI)3)~k~S#p?9(!NXJT zy6>TkU(a~v#oRZji6R-2(sMI%C7gg6TMwx-6 zxw&sh>8rP3K=m&G7XMd_q|nBwR6wTybXPL67@172!A~X|ZTQt=PdsaSjfvHdVj{TG z?fdoSN^w-U>J{&L$4-m={p-&fOYhBmS&^yk^Vc||Lf0kv&36%H;dEjne-Q4Kxcw(0QR)!()H?pn-aAHP1UqO z#xUtADe3zl40ZG!cc;-vBSef!G(q~We$|&)n$+iiGy9*|fcW?s0~+6(=Js&atsXa{ z!FFo^wg1Dw+aup}r{|uI`1esnWYkdie9@Yj`Q#rKt@tRW|Hx>FY1VW*X1yfzODj+k zSAO|ZDY+&vGd9>*j>T;yfOLk58IYLr%L$XFKl$Vfue|a)^A?lxK}xQ**x`V(NGf_3 zDtr3H#Kp&gkXJh>Vemj;ME(Ahl(|g$#6HW2KFf?g%iKQ88-12{`z-VNEYakzNArR5 zK_)#KG$CrCU%I!fe^d5aMw`;3Im0Jv8I2Y&6tl`OgC;}d2lG@4L*J9r^Ctt{`gE>@ zkx4T%l}psiva%j~!t__`r^h>JY#4!IZtDN3E&+E^JNS6Iam}kDJ;6@LSnQ_a@feB$ z?JDpiXhL=f2k0i3NjI4PX4C+8HR(EXb#Z^oJtWe=x#nb~qR&Sq$gKaghDy*jJ zm7BS0eYS~IbBFLe#C?V5S6mgIRgPcxoh_JUkn0^GjnR{b9E*4(N|jSh0`Stfr+Xk3 zid=KH8)U|}aXs$HvE@;im&&zb#G^qA!00w-H((Slpb(NkA+8Uo!5)!ET5(>8#bt;( z0PYaPZgCfrAIVi*(4Geea;wd3Tj#E`Rk-VI9=F66sMdWCq}B!ZBjjR0ZiVzNauH~n zO97QtYOdqjLw4&gL2Gz794yaO4O{~0D)?9(yklGb*r=S0U)SNO<@>h)l8#$G~w&Wr3qal=D-QUB*1&P zu)|h26tRXu7iKapMZe?f_+iePHn&3LALOoNGq}F{9?$P<@IitCj!=dFrq5u>bWTEsdE zrP(Tw*lw!`&EnHf2D|}&LQBAHvQ_v4-BUj$pCTea9t3;v(HXo=d_oJNh17i9NnEzx zh*+)L#Qo^36Qqi(A%_2D@N4dC+#HU=-2WPNqnuMQn1lliI!r4GCXW;YubZwF#*Izf z*TRb!M(W@Tw`=(2n2c&y?D4Tg@_FoonfL}uA`P?!LKn2*0miq*N99vQ{Nl3}jq;KxY&aqts7KS2&ek2!-@V+I~o94muP3?6dTT>L=V zb3$s6$E1n?X*2{ij*(%`QZOMFxTp`B%e>p8fxxj1;krX$Vuc(8nejKR92e@sxc*Hm z#!YR)#|dZQyRwBFuagcSM+VvvA@g=`T=#v{=<-wFVz!`}khg49E2bMePa zFdXfdGAs?iY_$0UUHbQaWQu=eYOD%(G2Y0{+3e0JKFbu>Vo?`k`F>v+vbC6%79*AKIaiH;JJNE}E|qC$!h92!~;T$d8Kp#c1i#zD~HTchp=)#!YWIUrSNhzYeetIeL7arlzJxS4yeb>lL8Ac&D9(g z22atNBtp@Z`W|7RAufD6d>Z}IgPrY>HoBv6=<70nQjgx%{MJR=#n5|Jx%)l56}+?s zORKo-a!uK4(&RetFX|!N^w|T+c2~2rI{?kpXl$+UOT%5T%bnmbKUwQMBS=ry0%Ovj zL)1L7jRQ_8k8C$?X>->TaEL=z=}|`LUsipx;$#K7s*b0l^C%$B%iI|O)6;v=A;EQw z63Qm)`4&r8ncvf`=ptQQ3oi|~^&K-LXg%#qRDo{6SnnX;g}ac6S?7PJ3+ovW^xlsJ zWv{K4fbGHEZypqmXiIgP`T zs-PGVu<>>H*&dSUAJYRGwy(-NoJab1l==%gD1lU6XEkCT z?B78WorhpM3|kU5MCjf`I3M4N+oD0Uw4Ih&K=^5lRRM zECX_^LOCH?Vl`!4q;15lhXT?Ry6D&-QWq6qo5*!FG*t85WF+)10pY=Qxj-Nlqs|mY zwa{LpK?Bk3u`Wt3fPXQvjyn&(lcmVuIA}dz?7Az8=+>+KoNxB&1o!5^2yKJW1`ICeEdS7z!zPTNCLG zRTB2>cTdH)gQ^RZ8lW-=9wb|Q6-;Tg?C&z$N?crB zm!J&r9%-~+cGL&YVBJ0swW!ge#hauNPB(54d3vg)%Cyy(`f+YKvX8kDjefilKN-5Q z=#n(r*HBOomQz%_0sV}TiSgJs46!ZZo(Nm@8A|TwJmag6d>CPf)K?cN^93RpuZg~@ z2xtR+eB{GK##a;h1i^jRO=onJ*O1Z)iX#|u2gJ)KJmVl8Q#|3=9~CRkg>`f`gt>}Q zzEL|y?Hsjhlz-IjQF}05MSo+GFgX4`vvd7|{_}%i2pB?%8xd?zsg+d7+Ee7BjO!D#r7p}E+^|W2Pa9}y;dc-Vmc~C?F zgaLL%-}5Kk5(Mi{;9hmo{C92!%j4twB_{T|rBp|&LJ>!)J76S|C{Y1W7u0c!fjjS3 zLu13_Mac>3>O>a^Zt6tp3!d+FeK$y=X6HUSQH0$dbhK1*Z5X;VfGU8kN$hpS&xI zWVt#93T@$awP0BR=x>;dX0w^PdyOGSmobZFOtk1*e+Z`CK*{lG-^k^C34ZQfJbQL} zdU^!E*|YnqBwTB}-qhUE+ScCD+11?>VJI|?@1u>6i|wb0fr=G{sAGlZr`G8y?TL=k zng9<4;*;3eez!zIMSiYW>L=>*W%fmp63h`MUL7xuXLzXkrSDn>Vkf{GeT=%*@k|Ku zxgGN@sEOkG|bTgOx|c;fvz!?K9M z9H;KQI^d1Q=@~-mOo&#_mK0Eo{VlqM)c(7Bz#sWwkL{2j$CnfS z%pTiW|5G>v`G4DE6WkHoC)K*s>^l^6)s5p8&;vwA4_OyV5ftnQZ1lKqu;Uc*k-w*h zto2JHWW8S*Asci9KCOobqF~Wlj|F5M+3@L=9^xQgHlaDiW{|P7aZV-q#7VZ3ZEl02 z5U|(k)Hbr3y|Wn{^*1rz?0o|JXcz7cRzvVJl|(3k?msEA!1imLa19l6sO+j#H7pnh%SJ1&1T%w zan%mXFb+cCIZNs!tmk)8`~{>avadEr?Wt1!LDYxVO4*!Js8i3m{N|VPDlT8c|H;l4;RZ?vn0yE%`X@l8 z+E7OP4B2R?#DE@p6q0^o5{wkC#4S6Vg(2k!j9ltCxHk(X^^DYbf}Yg zXb}K6z6Td-tE>4boISKulus};=;SA0U`7Wc#ReEOqs{uc=FtoFa~IOe99{R&x*;Br!1T$W9`l11-z1G9$vG>Eaf|m7X>>1xT4HFQe;qxi^{xC@UVg=>n_Om ztROzJ$>jbwhzso@JE=unsiF|2K& z$q{cEVo5;9QOw)|V#8(TMiZw0Xq$enE!qSV3QiIGYlK5)7b$b7bOIUHA93wzMLXnl z-7x{qU+|hW*1Oi`_3pB*1qRFn`!26HYUkD)bQ+z^nA<|1gIhJmy{)bd+`6>xhMv?O zUPBkt46+{K=v@{aAv3<-;@Zgno?91U`9C|C9&AMUbjG=ibN5-Zfv z!j9;QR>&@d*U}M#Dk;&Pgx3$Hb^sF(k04<=w=7h*p`$KL3|&suxC@Q$D9!dS5j zg=c7m9uzB?MJsu;3%~ytx^P6a3(<4v!cSUhUy5BA{Am{kX&3riP}Q|R>B2nJ_c+}$ z`?_%Yf9XP06J01wqSYKJR`Y&Z&0D+h$}L@}j8+IehYCH?hHu>4g}UJFUC0J$7Xtb4 zG3PYI(Q%pCt}z%jMoBwrBnNhEyo=*DMTe*`*2xKqX&)Ep+8t`@IV?h3;{9aQ$3o0A zpV&TOn*o&rQ)^t(j$Ixn1E(?A(VNc%7bkwFO{qP?FWnO4B-a$^I>^V-tbXy|Wp!Q5 zDg#+P-0sFEYCy9Gm080%K2UE<2@D)_W(XeK(bKAPV8paQhQ=kaEL*NO4!G+ys( z+89)+v8U1@j4iF&?+{X=nGE=uOrGz}4F#heN<9_WMru7hUY`PK%2kxcFFhe5XOd zdOO3L!kbKV3Hj1PH*gD5^p^7k$}!$j&M1^~PhUCOoD`0Wmhy`(zl z*H79qz#-7qsL&cmUD#n68FrvWXtkdTJw}s?f3C3Ew-**|(!;bUG)dVhmMj)_Ym){z zbTgSUt0~?KO~A4gVFMXD+LkugMmG$#OKM2~ z1tb-@08BDuJDdD9*efZv+h5lM#Igj)ZY9Oon>dRu7BvZhrU&akYQhNZxLiTkq4Qv2 z!)wE9O&GdpA6f_tW^Hh-NgOWWby%9kPa0f@6{eb31UdFpCoIz72I>s=Il~)F?n1Jd z6p*D5uC|P<#2&eXEFvF*bZ0qPC03ob0SZ`)fYdjmS=_QvHE%$?1Z*cn+aX8|I@D`B2V1Xz7e)|a)1P_#6mI*O2%;A*X#t5x<3{pC zL;0|K%}?{_^DQV?9*x9j0(+!p0#Ita^{#n8tcjxy+NEpyyK z@h^-5&wmhv^!ota?_*wg0U-VhF94M>EIDxq=oK_^$-{?1#=-rA=jXo1A|Bgz{f!Lf zGUVG_W-d>jyl*lis&r*8Q=P8B5+MY3_#qB`=7Xz9wA1(qy^M=!DmW+FD#$2PtAVGH zsnr=TWTY9!P)xzf1#i48ACz)Gqf1H2$dIS#bO5-ejI>|kT@SzdZb6Zx|HylP_ow$i z>`}%K?iqdego*Ng0}~^6jemH`e~zBQNaN-IDn&@N+x~BU;&bB$1s6LE6+g!wrK<4U zIJo9vChTQ%I@r1ho7Boyciupp1M8OnF`itdFaq;BhJCJ$GlQD8mhz2L%5@D6ta;> zD;Mz~gRcbVFyN-uReY>-b#OIc3dkoGRAM&e>w)nvDPIZEi3TYEzm43+P(QwsBVrB2 zvbRCp@@m`@7jjyn#2a*CZPdsg`ohjc07!ehw1?U1eC*U^1+|P_U z(va{*=SI*{0K3dz051sQF zDYOrul?(K|M4z>>|?19zTr|-4!Zz094jz8 zZIDhsn)W|UHw^L?ihay=q7VD+vF5?9-ME8&HBfy+2fgf~veIQ;W-EiyoW9U|u;KYM0~t zb45^!$AqSX;6sXS1Gn6Et$7$%tSA!tA+w=m7uiXxB3qbjh zoqT+F7q_c&HBW^~>`22?4CaggD%VgU*OCJBLT+J5@1e9w3xgkl>>uOIS;Q+5A3nw<%^STNXRMPl#^cA2 zzpyS=%emw&9L7ncEg(gn<|T%7uklK*;1a4{cZLlGil(88WhF+ zU7Ske8G_EagDcf|h6A0k8wagow~4F=ls*eb)rHVy29oJnmi11I_FxfDFQkWIpKuln z!@1(LD;ZV=&~E4;C?`SCZV+Yo$u1gUJF2WBt9eP4Z%%}iIV(8P{$T|A{CrV67a^ZI zcSP;m!7d^Wtb4gUMLsT{C6MT9A`6jKo1KXcD0G&@yxJj2^X6SzZOcP>tAQb`VI`ed zX5VNo1L?8SBVQb&EL&W=uo-;sNcV&GPheaOR+3VDuV9+d#hv#hc#kIdLlFpd`7 zz>^}kU5KJB_0_kMO}?7eGSK?V-9-+D5X&~2xKvZ-dn-abJ`y42zV#9Ex$pf5`Pj1E zQh{LlnPPyRf`V7D+jIFKjgXZ>N^l2Uek;jGvb#m zi_Ow3?uTDy%;WtsGh-ITz^-|`-;&sP2vF^}WXXRYK7-AZj(JzF%o|gnWa+!W6R61J zt7`Hp0(@RgmB%n8b_l%#>pPx+ah4ir(V`|zpKCIuE5U-BK20fd;6lc$$bdU`4_wX7y?jgjyaRJ{wY~1#c>zW>A}u%aUYdShPiro9 z&+9e0<@5fWZpc6r9Js;RN%lkHtau5VtW~LGvPsFw^d*bBWHK$}nNgz>eQ)|-xUd(p z(d6%Dj{t7ZRck19~$QCIN_Y+I6oLW{qxm6Z59T5%j&ojM6|3TT}DC1RZY zYiXPUQ~Eul2e9cWGbgZb&LezV_0Se|TgBZ85vVfO^w+t$5`VNGvgBx|1Oo;OlIA@A`7adB?u?-qi3Fj8%LAL-ERAgcA zinjj7ZfL?})YzG#tTORft@h8Shw2aMI9f{&)fh}`{B%gtv8BaPI=(6}+{&B8Wdq{u zqGIx>OP4l}3bwo4CfShDPXnQ#&;|IXOZO%P|f9j&cK!V$71qO;};^HGp?Msn2-<2eEFob<6ex!nGP5lrg4K!C9X zD2?SnYDl@&xJtUQNHsKw3l)eZEc6%`kE67dtS-=F=gLwHsq^Pyg)T8S(UYGagNUGu`d^rxEEDs#^}Cy)_ye zOLcjeFa!#)I(>jE(Gj4=T!aZ2?X|vVQf|Mtnpe~G0C9B_=0_rb`%jhz>0{G#yILN+ zW2C8$F;6$l>uH*MUw=amlWSD(Z;kx<^`6&eFzMrR&yE=OtG|4Yw2*B$ank#dbrA8- zUMrn2L%}<|~1N{OFBONg@ zZQk#v9Y75RO&pu~%%gWeALpZElhlLYBU7e#{eH;9cMqaAAtMi7jBbi^lc2DaaROZveci!U4- z|4+lMC3^j#lXVSxy|tvS;n2y|FTJ)-TWI-fEXXkEZ#ko7<}zQQ9@dhIFP&Q$rs7L$ z3ErC;mTrq|1sA6fMhv!ilz`TL6|O?vI6uL`C=ZJNIERpvQR z1lUWb63;890^IJPW?ZvYTJ1`ASfsgkzIfG1lRqk;|>e)3N77gefAr_Cs*!x4;7=-GT z*I*C-27A-D6qNg(eX7$5-RI^Q=hrEI-N=*&b;E()+~u~Alca{*nJU8>-VYWqf3VW6 zVE1$qDdgCbab{3FafeU?QME}oz;7v{nFJN*Px0qSGz8>cDF<o zc4m2Eod-C7mR0JkD&o~*nyXwD+Tc84j)5{czaWK9-x1^&c8EZ)Mhn=@?dD(D8OI>A z7E+60N`0rhiN$xJo0z>}di?vLn=J5M>n3@160E;DB+jlVw@in6F)7tQAJq(*M^tr# zpl)s{(R%G5r_vVaPFGdyJ`V3hmulTDY+eV6F~^y;B49njE$S(9UpGf7w6F{j){gzj zw~b+sbQEbcWn4AYB*cZFJyLh2${Yh=JQfRaZ|4Kix`ZxaI7U^QN0~>n-X6Nui77&Y3)yVCkp8KPo79fLZK!JNY1+oeFJj~VHL0stitH9@t zEXiGVhJB`!>V=_&h%lmiBpn^QaFR~LcpD7rhjW4=c+U8Cqw9h{Il{}Ujel%}GQ((3 zPK2H~KNBIM3}uo~Z@FN!Qq}@sirx3yp8%8}>~znyzf+Gl_Z9Aa4`o>=xpvh_4G+~R zg$KC3{Jq>B#eQCA*^8RBQ3XsfEIG<22EDo=?uUuDje{~FiAU;wp6ucFUt!4p8nK%8 z8R!iOJFmmc;6WJhcH@X&%6)~(eq}t?25gTa%QG~5h&z-jft-9PffPG52!h_&a0h>e z+XXSv;uvK=>hUq%wxu`-v|7Fj??U2`1d#0Cn&^}{+hg8gXyCk{M)!fYVOp86A6rw78f3+XqO|j*&|pX zM1ghEyis;hnx*We!BDegDL{xY91e{DW)K8Cuds`z&9SY~`F-vGwXU1$U6kI@l7`}ReJ$!#XmeEcd9>$FEQR(-TwWU=xQ+pLG$?kUlt0VuECUElC!}hsALak46OgUg zM{YLdXilauliR^hL%*m~4hnatd}+{dJNfZAxqiu~!j=kQY#6J&5~~)P3;TnVhvFbR zu#=CQdXOA+$D<~QzSH6`f%0sjF4tx)p z@z*WJT`dZvkM?X0>T_O5=KKzMmbG8K^RW2`a1zfzC=YOC04h5J5K_nm5G%kZ(e!zO7Mk5<#_KKc#Sj9N8A#m-2Amzjok*A` zsF0iRd)|stlS9LV0x;w%xdWkE{s#o`m(f!0a3$ot8$&JVz&&Vms0`H}DGtxl#ZaNC z3T!s0AmuNRY0%LT8s6d7pWp3w2!Zg5fT6RO(i*WA~} z?WXVDHEtea>wy*chPS@9@O~ zwEqktR?veZr$4$2s0!pC+<~m}$U$1A9if4O5{fW)@E21K=@QXTNBGMC{EoW!J5Ji` z+2T%j0@)GX#UH~SQ^#W+K}tG1FS#d^BknJuS$3JjZvPw+`OiX9{`V;X-R6{|x_;u? z3EFj(hl!7_gJuCmFlc{k^&paLI`&n%kiPwk-tIQ1Mk7_8){ayvs3J`?f&Lj1@d3z!NX@!XNV(($=@evExO zqNoKgvf3%^pkYdUo36lF0?!wG3xkNP{WsiZiANFJZK+{)2ZuJ25DARRu!E% zWko_<0CMUVqgr>kJ9*YUt<3%&?d1E=nbm0LJLD2wqLLP)w6pHNk}7;REUKW)3#DD! zIp;8-;7aUP@m*Co1XxF)Op~C;WR=_d0po;r>F_dNuBtMJc^RT%LAlQ^#Yd3=(TMNT zPS+V;rc;1Loc{qe9Hbk7eORNJo)ET$q24(o;j-;=l#*zWKqnNbP6-+`Ickhvme&Y$ z?y-V2T+LNOUVveGNNtcAl^vjQPZQbEs!Lrvkl?kPw-7Nyh~ug;uVu!EJ3u3^hC?b0 zo`$p!ET!{?pA@yqpm!5ZkzmcHI|ivPqltOlVqmruI%!ZW3|bDUJJui;4r~+qX-C?n z114mJDf7%y+fw6iJ04idU!~hZ5qvMz2LnZ-|Jxl9k%4JfLaX^&fv$`6R&#vLqhd8R zV$G7LRimS$6)tR7(z@BP?v%8PHngI&9TkONKa^*;*~QrkH$OO9q+N&;i@XtpvkU%A zmTD(7ToODN|+K+L4)4O1}uH7Ugd#s!h>@Odb~^3rr+L<*gj; zCe>Vs9zH~S$b^&KghKF^b=qa-gKkS%DFzkx8qnVD$9lHUT}uvtg_8$9`72OCr$Kb<90=k56Lj^E8p}yY#QhfPaj~6) z^|6yK3Y6CXn=weD(;C}$W%?AK0W%Y!nHRh6;6*q5k_>Q+ zz?+H1^)i0Z>+rlhs!f-gmAwYM0DZz4+uA5LBM`{@Ilq^F-z5kTjd;TZ^74Mp51Hle zK6|xAdZR@Qb9Q%bPh(@x%9TAEHuPG0z=E)=qJn0L0`sDgBVY@tvwJ*k6}z^!wDg>P z>7_|Pi%~ zvFb5nUj3U?Iy&~%SAlVXIX|1GTk-hB?SDJ}$5FYH-ak+2;ib}Fz37=`VE*un(dk1U z`ei)O$V?It$FYCP&yPR_7$wiwYR~oW{~t0&qD~Q6Vz63Q zV{+VSXT*8`-;U^+%#=)sXf@|Ee`jU_5T7~Y3FG6vqFUi`4fV|h{j4(YrxkyBeKkoPM9E(^cC5cDx)sPFn#Oi zU*1ghEDSUTxo)Nc0f$glb_@IusD3S34PTn9ifGRszew_ll$_!EPyg%H-YQZP<|1kF^;7yhJ z{`g6nq-k230~81a=>ZD1h0*A^)EN|X*e6%3gUWcvndk^Z=Q<9fuovKWy- z%jPlW#HO;O&>#VVWoc+C%3&#+GL%9?TR;wUU-SFCCoSMObMJlr&-|X}f6|_F-uJxw z{@nv{kyMMQ30&zhl}Q1q2Mo5#KyweVQ4xduK%@sm;^kyTKo#L;Lx#?sv**1-@&9tz^Td>KkYSEwA&xPQS;M zX<5DhJuqndp&cR7zZ?Pc*oz3o(+Fq;Eg$Q5(4dJ>GlNPddSG~&#F@f3VKA6}L}cW1 zXY{L1rKyJM?E!`!F^b9OJS!Au{t<6VpjtoA0Da(dkjeW2-SBI$G>A1Gs?t4!8Sk05B4{fkho;QNY%LMqJWC76+Df5IbUV1?_GqF96OZ2i;IWEp7I5Dv%!l)8E`g z)u8_kju`pYn>TZ3-T?Oa1Z8T0B5E$0Dt=ccvO*-n1Ik7A1kVPEiG3j5I#|yO0E?+73-Y} zyN&qfI_sa;K?Vup7>hVQ_%)jf{NC5DZ`?)ptPOkMs--fDG-(6 zBLEGDx^rxRuQ1aeLs64Gv521_90cY-g%#sq_@E~SK7)k=y*>xR2ZUhgK9Dqm;d1(h zq4`|1=?#hMhld^4<=o%f$a3`D0BCDSsa8p2gb%s8Hu9klxF}+Az&e`ORR*2%Z*Bkz|zEqZpqHxnu5Nv+3t> zq;3&^2TaHoiG?ZK1XK$lAl*+N7JTcMnt)OFhQ!^~fqQQN8kZ(Sw#Zf(a>!=lB%eZ# z!G+~nhow3mOLmOBfX70mENs?pK_Zu1FsrtRf0pxkfaVF5iV_K94xFakBZAkEJ&1UP zZHDX^vP~$Zk5a6ey8-qi`#G(i>ztv(V;OHzV!dg_yXn_0o=I>bb$r#zY2g+=jS>uo zodyFk4W2@iB%w*v)>9^^U!e{1pSK!B@P;PHeZEs312mmXVO#A^vMp06#iP_9c<1aS z-cSk*Z_}Npofd&^Idr>80fvWWjH>A5a!FIETQ1TBya}hJI5b3Z@U*F=1;Y%3Dq2*I zHZ4jjY|E@qA=^w`tLIxJOsftj%1@JgMA#f!Bi<9vffa^N=LE>72EjRJ4{@S@_Q<;& zMy`-U`AY()J(FnV!NLG*0?2o>qzrDB7tp1^7=nR;AzM99kxiyCZGej7(c)V@4@R8; zW5GeUm6}GNUp4I8o=NDhNo2g|OIoCykV;CEBQV%-{{#Rf3q};88*E=YpkZiljA@he zStF+;&!7p>K}2f`(fVOzhe_M!d7mb`BeNb(VG|mkC!1gsVN9E_Ka?WH%*3V*QD;+D z8{)=FW>o4--w45|6Z|ss3&tEq1@asz1^o!W8BOxTGSOoI?Xdm`6>S|fm)jp`?jU7> zwhpqdx9NoanCWRk0K7cA%JPstwBxVAQ7PiE~dvPTHi140CLVh`?nz_;jgLheM5 zyWZh!^MM^n;rR4)U3H8R%tZ(ypp2o9!RCR3qr!|Q4vSz$RCG^8mnz$4@Hr?K;WPtFgYCx$m%xkqp&6PU7;|Fb(KFfb_M2@97?MlkPEi)5}{Ec0nxh`2;(uumZb>Sy)Qcb;1Yq z6>TfC1JD-~4_p4K(Dy zEULLz6}G!i6}G!qbhMA^*sBQ}`+0&&(NC+0RmOd!8lX@!ljc36R6=>aCd+Jw$>G`a z=HU)|-?(>ncEifvDzh|JeThV>PfAK701+{<|u*k3my+cee)m`Bj?O#MoHF{xj^8sx@ogew$(rAkPbe zvLa^T_G(5->@$CWmp`|5QhNprGmc&iGf6gs&}-Fz!ZEleOrX-~hJb7p0cH{UAgFQU zUViyy!~*jSJ}sQ^i(mZWr}W}L{>G2%b^dhtV+$sBO;e>_5Glv@zv|3q*{|{~k z0}^0VA~jV`?2a1~DJ(=j3=@y*_rIs2>ro#t?({+faxKQa^2#d@ zJ{a{;YFPjXXq%L2%kO=5_1(Y!_~E}4O?NPY!)l{Xj_v6gVXTIg_~?@X8x$@kOPiLIlrr&m`dAqj$+Ga10M=T>w)tke4v^%a zl;2H^euF&p9p5Ok(d}zuq!o42W+Zj>TnOeHui;qpflR{ba zih^}2pcBM03lr%+_ucI2+DOm$;h@!`$}||pj-57bTK-aC8&D&;?;?=}nQUaDJ|^l$ z9>|-SK&?FBdMJZl4}mvl!h#7s;Hb%D=3X52&_nq2*l%BZDEXcrd}8{L8@Sl%+>kM(Dj1o5> z-Po4Ks2B!@I>1!2u28#foswmgELH`KF$fRfqHHI6x=<(-`b4M|NWg7if4%%nNT3=9 zaHH<{gv9;>b@96B3-#%rsKq(hX3yKE5UR+80C0(M#J#NGShn*4D@B^PPwz`z^B8XddVN|@b_&x zbI`%<-@+0mAx-88mPiS zM(w#z)*e`Z)7=`Jm~Vg$uA0F1A9#a@3P&g%KjQ}I_|@EfJ-v=ta-$FGhY>#l86iTP zfZAM5prHa}9z-GT3~XwZY=cmRNWuxIeW${*T@nxx%PS_pF!>ttYkR%Sx-ZQ z>jF3-Qo|Q6<=eN(sqJwU7)yc$exTRsMn5c=EA|U70@5SbwaC8#2dy6^I^$NNIRpyT zp(&_0&8az;mfP=j6&mmHC)^+;ScpuRAp{@=_9Ug+FM9J4604_ii z5$Pyi6&Bp!8YZ1Y-OO-|poZrpXmybuxE=KA9|U~?MXW--Pekkeq-?5AkLp+6Dk&}H zBL6p?=rhzw-#~Iv)U7D$mfoTwPd$qJ8H(%vC&d+@lLxsxk6fOM<|0Q}D?arPS*(Y0 zWI1rYJyUMqkx233X#2ueAcWuZio%P89HOxfqv1^V+(boh)f0LOq^)widbyX;$(2s3 zN#GM1ey2yd6g1#n(PL7jSZh<-;y70i`j)EG!Re5L(42fiL>J}|=*2;%IR634p!{UX z@=-CT8(1mcYXxN%uW?pOOCNly4E{)^4?H zoQqAHMr4}DvtQ?4QmylHf^=?1lYOZ45PT%kT$itI zCe5zK3W!8N0KwX5dZDSQPTa}o%}#48fGI23xqbhAoGjw?1BZx1M;>nySyxj9%!$QfnfbV#PqH@Qn--Ka3c$y3Q+iCFHn~28MKiCG z|HS&Cc&z~_rjOf&W{UJIqUiu|8YEaADQ^;$!5Y)~Cdw-+A3NZAut|(}t%O-M6jfne z382*qP7}h}+IvfoPA$I(z)AUmi6Y#}cCnw|N1cJFlk$Lj)6n=;&L)B>Tg( ziQ`mcz4#NzvE+CpV4-MDVk9mEHKn0g$w1B8(LhSF-l;)_!3fpaVY<`|nU`E{dS_}b z>*WS@nwB@a)`5PxPFRu6mansa=KW6YJymLg@tCkaE*G)Yw7K%L)nu)(qCN%;sOx7a z#2C|<<^~}K#Y+>8q6AP)5G|%O5TzK6Qly|1!%zz3qz1YRX`Db~JuWY|gG@_WqdUR} zOlYLNHuRMDg8gi&f*sXYF(i0GSe~6wp6}(dwdMKtWMC;jZm03+=t@du=4(@9VM{}q zrImZ$w5=tTVef+}hothg_HJkuI-K^Tt=;n*ush9?(*&8g3PU+Zs4A)`NRL(Lkg8xK zt3#izue3Fq(wosZbx^ZfH`D$ql0%_sqI3sD$`2y0S^6F5x~WcOfj9t876R5&dbr=y zKhx&6TbW`sNlrz9_?>hWS*4qS9l4+O;*wU+D|k|Fkl2Da7L{QO;tb zs!%O@d1Fld+o&gmh=fJr&-zM^ov)%S*4|&B5)H%()roBS`)Vs`?yV4Q4l#~Yp*E@n zg&H*yfFaG+gKyQ2j_FU)n~;os5A8!I#L9M|37qHsP)j}JH%6d%;U+W}ilm`UFuDzI zF?hqKTSVt4ZBFq$R6+U`B^Q zf*r<5mXW36m}qLhm!|;M0xUdI3>vrYR^-$w_Gq+6=x|D;AwV&wa|ja+A88M3L7zSn zQhU{YYdf*Y4WcVX3LZjMh}o%1c5pNTqPIxD3@M~XFn0%wW55*TWOVj%bvpZl_#afK z0|Q}xUS3%TRuRUUZ)-urz))>PnF}5+Yrc5RwF0gcaILVe5YM|-Ah6o2i7p6A=8I8@|v$qD$U>+vQw^{E82asNoC8(6H5=D_9+;OHU&ZStJf~1B4bV>5%RsjeNH}IIg^%nE!#0d{GZ@s@@4YTI$x88d5 z4g9_K)?eOu^WClZfA^8M{_^L)y!MwrzxE;Z+w~T+#<_WC@|a}f7-RCz%|AE(eCpF{ z3fFD;_#?-4NM?(rSC<+?#dL~caC*Zd37sOOzFJaq zjY+-@L*qM%wQ2*V0$skXjtypiLg$RggBwgghk_AoPRNq>jUEoQ` zH@4v{^eB?j(r0|9ROgYz@IAcx!%YF_Jr%fLlJ5@~>HCB9Ud@O}9uA7t=ry04k2_Ca zA$?6B(W~#fWVcJQkL6h~NGEBNMp2gzzrGO4SS9r`+wEpXrR%Q)=z~iO_G|`#?&lPs z#j^^}nHlfq|1AIA3`Wc3JOLQ^g$a~pI+eaI#A_-u*N{{A!V85^XaHZqAVZ3&Om3<= zt2CXRJkrXr112wjBI)J(rpu*}GwQt+vC({K)=AS@hWW$mU0smi?#sq-N7{2?eeuyp zA6-~5n>hf(k$d*+SvWMAihD2o_Hv{UTHp<-Pb`dFrZ9Sl7pZXvVEGE&_slDvS2WMO zeAPYE3#R8!$3|2B6YkhgzF%>V81wxHz~F-HkQ)tS1;uT80mB;SQ?maLF1fr^x&ev= zDZyR7?yO1QIR9UHidQhGOR2BXdQwFTd&|uc{?q90-GT`M{^&*As>H-tBRGWbQq=`BoU- z$?YkMp3GLQFvpB|ZFScD-nS`$P4OlFYqNR~>A48{@+ILqA%X;<77NLh4gOg(1=4-2 z8}oWm_jlcP9ihj661KwNpA{2I?_U#f)K>bJ(|e!6zg(PlF2l@pEj9R83+6tSoN&g& z<6>pt&-BhVI*oMKD1wlmV*{9DuzM~ci=hxIA8ct$$trNyTOgI31icl5=w1smVGQ{u z8U=!YC#hWEDQB#_T*~JDn#^D+D5hiA%Y4Qd85`3jb;!Tm{FQ5+#oKo6uk5~c0bRD4 z;>><<=lK(|-#^}ivj0EcH}l8k_`UbdkeG;PV`3hJ63IMh&13ST^8ZdvAcb|HwuSZ8;SMa5V&>R633Mxmtd6az_7C(u>V z)7`@;furrQykMHdJjmSl6NVW}V@AH@Kd`)Qd3Bz}@@tF5^0XqtPzD&v0+Va8=Gq2B zgXdtN<$nF^7hihmr5AsVIBKZcWPoopLhGe7E-;pL*k}m>%e%cnTZ1p30$P>E*q{xr zsLEZ4z6fh>3%`(50$V#I0|&=iN$I3yOcoLbHU&JXSp%<_VYQXC6qmH&h@|W_w>P}x zCg8LtSAHLy=Cb9nr;TY=8-hf`{8xHo|seLo9k zgGmmyqwl^dwCOX#^XDl%N`JkUI6>?`p(h~pzB7Y$tFe+8&wmXld zkfS!ZRO%PBv9-Pr5E#mmAS)>>mf=`E;!_2(i$V96ko0(70V4p43h=0<_(Z}%OWa7` zSu)CZp0LYDGrm2f|8foE+eZd0k7ay8Xzf+`z5>{(AQ^HzYs#$zNCq5bJ~3SbyP3m$ zRq}H<>}Q>o-|q6Am!BheS=bS=mEe;|$zyLso8>O+28h1Lgz7b7x#ulnWAC$WTgOs@EPnk zGTg$UG>SDvC?X^OhZr8k?a-e8IW**5dehGIjI8|^1(x$>YiYsJ>roU%g0KWco)73G z@C=j{{f?CNQAG9hW;kPQOJQ6|54FjPVpw;aOQWVO~7JY|xwUFwbZlV#B#m!vw>JuGLPp&+hmT z1{kb%ITK~@k_<;10XbW2n>cMU@p4JYbWQOmK|PC-{(}IdQflZnDEp|W-WHyj=^Y)k zvLnMeG`u#s2-{PlJ*I%gUIpk_Kb-wQy6DO)H0li7^3Z zTas$YQo6mq1mn9-y^YKtEoYAjwaJy^eqeyn_qw2et8lWn4 zFq%RZ{tl@CNX<(QgXcJNZg`7DSqHtNj4hlRW|i)+tyWWuWZjp+GEmPx4<$>^k+#c$ z#zCh2kZ-2=<&UB5Ha+d`wDb&joiq`F?yt1fi7MMr>HffHgGfDPdEEe^FJ}TwPr&Hx zAkQCQQlg$JrzEzSb8N+xwtC@O@EU+iSRPnv7&%~I>cFHiNdv8;Q-ATq2!0J%~=eYGKVNEn<*@|!}@!%FIc+Ay{uYk?@z(i;=t6wY(Hoq zRw)?;RrNY^aGQG*8u;|V-EGncCjh8SV)JdUwK=w1F{GNk8tZmzsnvJdv}CY*aUDW( z*M@p0qZ3FHdXFN`X3{458EYI#)}w%|Va{5kCiFIBHP;4A zaIFhz?V8XOxYr4VEX&m=+vAZqMd}uE{f4;dZ{B= zT18z|a)8qF^!~Pyl*eH~GUeYOSFxLHamER|tM*9on6bcc0C-;&a4Llo z43{GRpV&E{lg~Yjom%3__iYqMyKMd!+44p9AzW8-daT4EhTgG}XMhz@@~2n1OfMNy z^Vz|^jdBkyWDRe+LTAt@jANt2Rmtv=HPVelkh>@VUmQS)IU7QwyjrpWNyPxMW0|3V zCRC+IQR*t=>`9)OvPpKB+bt`!YdxAWKZ=5t;X#;@E%LulljlOo>U_s%ej8h~>Ju0| zMh*$O><>sWx-SMjhQ(nfw);=iPW7j-+NtJKgj}5t&~FT%1TDE*p+V9*wOHyKfMdBr z--B1MPYo5WN-z`~yy{f&P+$S*KFK!7I)qnJSv;7Wj>?8Jj_*Awj_UYGBw`)qRV^^iv3J*qR9W!Gjm-u!# zN>=TlMtr>JZ?8EzoYX}iFqwsqqE4V~7RmFq$j>LMZDxA%o0Mgq<^OnOH4VSZ%;} zg_N117V9pt87M)>mfmV6kbXeqd_1)%*N5|?ya=e2!R;+gz(J9)>P*y% zn5Qnvn6hZ5u*j>7vrNe)i_Grz!dk<7D_BhMb?>caNr9OU@8?Snf6W*1{C*sJxAG@S z_$B<|6PqJ&S@@442afSOy_a`Zh>{)T6i#rV3i}9x zA-U7Mzq~u*@zx<>e)+CrC3TU*gfA|wihSewrf%mlT7>I-KELHC-%Mjv9}rM?e*a;S ze&P8|C@S&s{t^!#-h~PuJ5fOsKDB%Yu!n7C>-V?I#LVJBo+h^DDHKnyB*Lhl=QajIA9`@`Y5w8<@@;lM3B}lxY zgfHazed3y13GmXcFHl}2Ubls0VJ@^wR4MfT;My9ITENv z@DpWxJ&pH067bU|w(y=^`)Laurs=IZ9=7ls(G}jvfg^ma*R_+c5bBX2hDQDg(c46u z|Kxsg7e>z39hQBEt-jh)*I_=gLqgM(U*m6<2qnDbz}LKW8%my!|KNT^sV+yYX$O21 zL6@)IFYG%08DFr&!XFlVwYAfBYKK-2}F&eHFaq-LmPRgt!=nWM4IHHk!av zByb|%E9~Mw<-I$WlvGssT%{QGXf2vR<%ynco2aXTw|UX-TQMWV{rus5$4?xO9CM(J zkica=zZA7a0=ylQ#^B{e6y|Lxe9m9x@L zrp;POkG20_uC%{)bhNw*^Nw$KbanjI$Uv(GLRzV?hXdhx**coQqALp$pq57 zNGtYIt#4zQpX-q;J&q#S$nD)Pchb$#u@WXw^66gAGPXVvFhiRPD2eJo zXBQ~|cB+tkgu4Sw5aWcCBp#Ilq5=#ONP?(b7u@wyQea4gXsTge8#GrXZSQVU;Eb~+ z*kWztf$0d#%`ZoYt7N4*n;K;7i*gRxO0v=ko&Gh##gHX~TufI^Swb%1M1EI(k#H$m z2dW&#Ra2JWRh1M_>pe$}P?kU|hZE;;=~|w!JTIEIC*ssNyx7I5lR}dq*~XGKTP>6* zQZH{DO~5~^humeY@fAt^iu_MU3~z3P1w>`NxtNZH!>*bi2lg<<@B|xr!Cu6r^&V!s zi%R+Y^M<8iZ|CH$^&O%aAd$fMF7h>1p!m;{`}$ULNhGzmpJZgukCH1Y4m9-;HCQ(pCz{Na^sV#^T*qX^b}wy-BfVUhHgCJg`9?eYA<`NC7rL%d1dqo&TCV z(xW^Kd7_LKiK?}v69cC^os2OUXH{2NRYF*T)rotG{OMgqsHZ#{fN}v|frUlrZs5>H zT2qlW%|=TuVQP|bb+&k$JV=0Mg0Kb2fDM8buDz!h%)czanI~|K12x4$Y^whlHBtTE;&q0v#H{C5qP5RZnrAUiF+Qw`X>A2=gimn}4KZGbhJ+IAG4-k<>m_J9yX618C%Ve`*TE*K z+T*I}Tg-wN*&{SdOxRxD5D(|fB}!mkYzjUBFwD?k1N2f_2h;iiSc$P35cUeWO4?y@ zY$!$m-cet6CO8iUgB8L6LUS@Z263-IZQqrd#E`C%<6o87;8i3ggFHxu8kLWM$Z>3u z?~D%Z730@OmdaDxbvaz+=V7tiA!MJ>gR+S=a^45U396 z?}JKfp_Jsak>ICb*!UEFF`_nD&8h$oSHl%6#&F;E$U6W}g-dRWmgI=BVJAhJIQa-r zF|^}&eF4v;I$2eEtIKIcKLEVRlG_B(ev$hNq_s7ImE2k(VRjLxjE2&1vpPX%m61yz z=&OQ@*t^0O3XBp9aTeigg>@H1eLn?aX%YLlbrEV1V`^y?>SS`fyVd;#hV%Gz{fr2; zXsJd+LO~}PJQK1ulu?1S1Nc`IQw9;?8*T&53m^27Zt6AR8YS|w*Pzj0AQXNE%J+Dc z;Q*)WLhsaxCxd$dGRi@sDMDuoF+lanKy0%EJy}Q#$Zq3S*B?+15GkHROp>#y-aH4 zit=1EWIA*k@~rg=tF&GfYO=MN%^Q1<1geO`1+9@0hnMCiVh=;noH0Hxbd^vK7VEs$ zt_!X4YJ6wnSjU-4_M+QoOa<=2CubqoEeK`@r0Io?GfXRb)QF9+Zg);T#q1!ya)zFq z%g0F4!onvVSAWk3J)P7zV@l5y&`Kh&1a&przW_k5Cf%T}VUbeJz&WsXAHVp>11s~Af+)B0OTMRxB^U-L4bybAYPcg zAALOtqEosq?*DYU_e#p(UQ|_XOMu)$T^u?=*sb0#YQmqA3&2!--DP?Ts#mB~H>_pq z$iD9in`y}j>b)*OD{w_!l6mhD9nUd+Nr2HR%I2bW1H!)m4bW20kk4!i(o}d zYuy*B6Ya|21-Kw(1lOyWIn<>R6VU1>A^bHM--GbciaObCLx`Yo8HSLD;?Q-<^@Try zG0sBf1ME+tldjRu5-^suMVOXD+~Ml}7*Pz6qH=#LgVeYQ8uJuduejj7%@IwF>kCn- zsj;gJ?>*B=E~AcgQ5i}uyTV8{$xauz6cMtS>LOYtYZz0kN9lB;_Do%Mr`Ya{@$7Vb zj-`>V4Ry9UY#F=j=z6HM?S~BQ1(;6?nn?$G*|AdSNY@+QJc1FbY*~rKW$j5ADwV z<)x<|zi(uJ#f=L`_mzC|;p;Cy^Thq51}JaV9NWLmx$=$Q|LPY%9X&9n@#66V+duv2 zudmFS{6K1ws_D{+gQc!jZ_ask%7bGDshex7%6)?4Z*!lU`q0?HnwId%;12idxBl?_ zw1@8=65D$D)S)jvTl4n3+0!%A4BEE3(-k|53f{^7^^8Z-hsL$np9%Rrh423Hg_%Fg zNY-^UoUPndycTKYXGb0wO0ND1wL#1Ko$R6D~Oa;VXz6qXwWsWVQ=vvIAZ74%ZJq zBBNeibqv5gddVW>GUO-2esbyGe*gUiX7i-pn*4(+a>ut(y+I%^Wl!}R3Y1cowZ?#j%VnUP7AT9{@|pFVZ!b66q}q!}PI>VA5bfpileX_fv-H?Wg*sUoEeHbLtkuO4B2WAv+dF z5~vTykwjiVvCzVDly7J0myR!20jJw6e1QYN7iRri2XesWBpLKjs?h-bf8CV+Pgg6d z0I<>)_H;V?al<3fOmc|(qLI@^8n{eqLli8{gtAMHu-zpidG(dH1Z;t^oKu)bM&hO$s?w!7;9$40U|J@;X-8^FG#@M%lk9YUP-&_lEk` z^&JfbO;ga;tDw?+<0$ln%|ZWcy%MKt>il|n(>I&R5n|F8z!s=MS5%6ty>^ix_w}XTX z_EZpT@WOH3h_yYlcBvP~ooFyL;4Tj%jdJYrRg-)w>k$cEPpBx|{4V*sFv+p@?^~ zP{XZ@fH+F92E+Y8X6+tP6Qo)qb|dBm`Z0!n+=Y)r@UeEcs0!}J=UqZI{iwu8bA*Gs ze#)RY+!jY6JTT(uh4XQGhZcB|cu#*BUe!f;?_Jl?FLEE1WsgPM%Z&GZ=pty4^tO4l zW6neI?ZPp&q?Y?r1U}qv>D|OMatj)HJ+}=?#AyoDR9#eUqBX_bHxYZE6aMJ9a(*i~ z&hSSsg_Dl+@Lw$BYfB&J-LsEY*z2-pBTEk^DnO^8LJ>O|E z_IS2Oc}MxCY6ep6^?)aS(PX_s8u)}&gRq2zePLE%J{cBqM3M#=2l~PxHeC<(*Pk{4 zew3OVL(Mz`RYWCqrgxf38bXp?>lnlpHktm^G#v}MU+RX2ExNwRuS2S#UNKx}4mX&g z#~D?7AC-K8@TP>Orqp|4@i%16hbvxN{Kbd#@%*%x7Qgn}mqy-w_sF}aJ^$JYyf5Ck z_ro=dUwVGpGt-`bY0cv2r;VI;_oU~i-92O!zW?^gdq#{(Y1_Oz#q?@3K>8vumH?K^ ztWWZGWhYIaQ$&j9%_)YEL=wpj=R|+N9gT-EZE2Cwb^p#4w8HwY zijO=gEq$0Ntrf2^rh8lIBq8JebrIG4Ak%MJP4_h;;4m7LHcm+q(fo@jdBI$?#k}T{ zV%jir>cePoxruf}e%L&`s-zgGUVNqjf7}Go=D%0oD1NYsIQn5z@cuWO2%3P8=}Y`y z6g8Mjf378RC(&hIF8WVecqJ_njhrbI*C&zUOrZ#mA~06=`qMTDE-{%~Jb$Mw-_L!MLrkKhvs98TuZ(+rAjgu#3Z%~W#j-faU2x(lX8%4eFv(_>{qBA zyk;|5BAkO9fmT=&r!5SCa=L`xnbVkjrbCU`@D!e>k)4y_e%a(y;Km7U!g;#Q4YYoT z6%!2n@xXA0S+!?77uUqOTDh#oe}aASWFZxfZQ^2@DgKG`HbQt#8!h0R*3eAxt_IHC zB%G(f>-lu4$iJ+eeCJ=@PR{vPv=b}cdPCq}3jxgiQ=29PDuUU^b9Z$*c>6u3ciWhJ z!<=PBeoMPN`Lo)qe~#Va9F`8H!`{0LaPWk)0E*Je4@syV#N8ndf26qNYdR3D`6N_w z3In4GL+v=8M_s+zpI|K~AA|rb^T-lslBGT#%dak7!X`%@wDD)e0@|9h)VzNEy7h;5 zuUosTa_z2=zo77;k)uYXrKZvqo?iN-K_B^cj=6i*vwxf$JQ;3D<^~Kl7?OvxR6kZy zl7Uh5fAcM->S^}r{)$1*4r0dK|12{gwLg|qq8RabX*?XFHh1R zdi@Z0NE@%?EO0;3pLzYz>r)TG*mW)qe}Df^xZK>_*R{HY(`j%I?EeX~?Xzva&?e|| z;U4g-XPNo;-+#YStBa%VNiSD1!d2RTSHaftNJs$?{VEl_Fm3I?cywW_IP4h(l`sjc zhVC`sj+M6wM*1eC6x-ymH@PVhC-^T1`0Sx6So-gG*u6JkhUHp|T}UuK52Rd3@@5Ga zVF)8ed>l^WNFl&xQiYP9F1qJHOTF+_whG!t4jZz6PPQX&oetX}IwxTIyo0uz&ZrFs z0NY-N@`uAvNFj9~opd7>rf+FjRrs)oW1KPw^_wi<`Owoi^E@R&b2LF{nx#7Y6(Z3f zUwOL5oG%i-3T1j@DmBeHp?6gAPB{!s#JK7DUOfZAB8wV28A}Eevr>9HMuo^!v z^r56Qm@_?V&Cmj=7p2gAFFP;v4B+uBAWlB3sDMSmd7&bEoBOaR+0LU?f`>e#ObSSg zgN6LwwA7|!f61C}>>CERp8v1luUi@Xk1zlA{%cUy{<|mLcZ3Aj8AJo_ydo!i{zm^7 zEO8QAQkQg>)YY_2SS6qSA5m=Ozl^&A9JDi7$(mq3)xG)6b-_5Cz$Xn>jxoZJ6GM7 zomN{7R1g>irEQp7zrskHBrM^Ej0GP%H>pVa9ni`Qc}yT!p&0v{-fI{Yg(1YezC&v@N&jQY@uStUj4>1f)epcOnUl%yLV{kHDg4rBfoH=$0WoSO1KEH@86VCt9%lY%#$1IVC z;=v|>Fv)vWLCnYSVeW-C_s_8hAS^T|xt95t&~Vy5Z+I-F9%G%cK0BHkwbKhrGuyM; zLke%Be^R?$DOmBHZX=cKcj1e|#UkV{x5=ZzUO;gQY^Yzd_whHdqphN?Sgz0u;VS>)6? zzOJlfJIvGPMSo^ya^AV(yxoz=_va$cdjm|5!-7LObe?+R+UAszGGQME#y(*`?)!1* zHicRZ9?{7-zOJjw){1TBM&SSj3l37Spd4TU*uWCRS~EgWOvWu;DL6g>oHXOKY|Rhp z?Xlr}%HrHicd!}r4RiA4gDA=>GXR@u4;LBoj4EW&PEMK8%AnVn_#1ech99^g&x8j!lzl_v_ zSYcsM#aYUg$pm94^Q*=JsFx{XluR{_o76?dcl2=<& z1iPlAK&mTksHBmM@lbC!xYsNn=-qB`!jW<82~!2s0a70EVOEW8_?EB1_eL{=83OBY z_cw3|Rg`1AKXAn(X*w|8rxG?pcw0;2G^?QZUKd;{oJv=S&z7tu-C#dZg4uu!v-iV! zVqOlFj6Dy>lpk?-j1xGzT4#&q>+weRo70QDk zOF&aDAj7>UZNnP&9_hAe5IlB8G^qWIbrp~=kaduOQ;5E>~ySyAtPN zsz-Y@d%oyKB&&SHuEYVV6RiuagQn|LMWJk~sG&g|Ajj|T)zJ9TJv0S;L-t5P*O#%x zf{>X+6*lA@^ow7ct~Huc8cq8eU7hd^I^@#oqC!PG0fU49W=7wxz^bEiem%ailZvvwA^9GUH<4C(S;1&Bq)$>Zf8 zgGUP+>;!2r#x(J!X=D$zj_H<23Ju79-c!mHe?f-p@8aD=u%w7v*+ zIN0esReU=fZJ{8ow@VI8P;bBsfwmr6gR=gCs}azsVNfjEA2dB0KyE4Eh}^3RGMo1n zlX0edZ_+~2CeZ(|^l}?tlt$fII2tb4b!S58hrgR9HwhQmUtxZYMF6dE)ExpvA9N;) zjiXUqyPTzB8cIS1BQijRhT#nSE|Wx|4rKT%_%%Q$Wuj0|^f1`KH&=Ez}X0i<2+q?l|(CkXG^r{DRmyp5kJYA>fXar{-jAg zz*y2sbOt7Z>4S7RwOE1TqJ;}&MN&JBfKyYuaHqUKa?oKA1)>`A8E-7l)W=hUid_XW zVoA4$)XAgI7KbfiQN6Yj%InD@8po!sv{`L7+Zfx}=n5FcL2;A2GO&saCwks!)ge<@ z0k@|3H_MQJvHy6ap#ef@Xcz~W9)wP6Gj3ReUx+}PE!6~u%4>t&>=Et_40iBHjKy+_ z^$E}zQ3z|Ww!?hW-q1UeDm2&okZVh7IXeK%ymoAp+v?TjTkON7ab6wxgnD|Yem+gv zVvvWn1ll7}*H7%q;1ZZqzek$LN4PgSrA()KPhxjoLG6~1&aSRx zZyLwuzo+U+trbV8fkfjK{=H1$myG`uQ+OH!;D+s#=N+qFXGisroixy96w%)sdIJbvDZyETCCl^z2%GTFP_{Rdc{kvf)v3V9!$1s##pEh z^^<$?RG!@H+Z+0mr1HkvgIsZ!xQ}N-fAwlZf3Yho#`8-5s4n96kLe;szEkNvMV@ys zQ?fS{7BJcO6>elqueN|;z5V1~+ioE&-hedD%?K3h6^mhEw{bG4cU0NLgbF{n+KS6m zb|XOSXp{cQJC=(4#Z;n%i@fcgcN}|tr;1PoNH|k0VsRHAvF?Wccz1Q_4gbD~VNNT7 zy$zhs6i7#zjitsj{LPDGQMQ7rv61sh_FWC>y-A^1J6o@GTm{ur>#;jP195!dD|J-dvf`MtiWq2;35^WJzN zP_$oztYQL4AY+<_DeRImoU z;45|bd>=UMzO7&hxazp(t8j#TqT{IVvZJn&z2KQhwz@m(gaf2h+$Ag8w<$e`2wkA? zvoT?d*gsr8rks?6+8-N+rP0i}2R$#!(_@oGiS~}gSvn{s@sVIqOaytj+^CJSkaFh* zaZrV%v>n9BY^GNaRUU&ulO5zN2(K}zq?z7yAy-lXwKF=r+SY7a1EXyUvYJ|{i}My$ zSii$z>|5*EJZlgvBDt7_vCv~Y*fa!k-#C^{$)(coS?LspUou zA{v}pE3y;zh_7O{&2wEaX5d)Xiuoq~XC0P?Ft1vDnexr}v*U=LYER6ZdjShdfLsxO z=JH1CRQ9F!KHzO{Ml#0+=3X9KH@ALlgIziIiVz4H?MWahd-VvC820ibW_p#NYd#==HAPKJj69bxUJuV;LpkGmb{zjZmyt*>VFp#2{gh#(M9BFK=eUQ_}0S$m@l3xHIT;;P=!7EV`@Bt^?34vy+dv z?(<9o?^pngE_=*@qqPpt!nE#Ng3jTUF<231*MXY+Bz9}8D@5l3p~@~C;*fJJ49dOtP67q z-o^;gg0Ux%HMXFqn4Bfw!sx=o z)1LpsTZ{kj7N51St7~BvpZ3gxuC4{oq^X`^V1ghi>7IuS55f8zv<@t2>v}s)2BZF; z-Vzh3vVW>M{s-A8lzSFD_UI(nEl&Rpe)mzMMpGLKx4tpV$WQhzxJ!A5 zhn2kd*v?66l}g*yCC*o+F#Wn?COv2z!wq89w83u&#VHM=AQ6_4^`;?>RFQ^8sbb`` zAh|u?VgW53s`4m>U!~G8xlioh*iC;&kC(=uUt6!QnqIv$EcixF- zG{BBQ*C4%mf-7@#i;Hu67O)%#r4G@n=eBp`me*}RTFe9T#bmy^V8N_e3;Nvf1T#gS z-{oi^c-{6>C}UJ=i}v4+e|rL^Q(s_i;g4_3e0}B(xWywK+0L!fPM-|<~!)n~h`W1Rqiak$r-s-?W-v12DQsl69N z6=tebjE054zgPy9R(jH6o}{Am|33SFbz*1bTHyAfm1q1-?r0-7?tL5ox|5U<4OyliVVaprFA$Za23IzOO$aQ z{O@0pudCxkwX4eHlt4p__atW4RvD)j!O82ZRWSKI4@oiSU>nPQrrX;DoMNWb)2P~q!cnz#NkIW%2KIP=(h;!L~#Xc&6_RPxFS# zbns9o&hy{fL)n{;qui9QIR#X2WJW_^?zI5~ptb{VO!s^{J$xwDniVG;!rArLruatg zgPVd?8pt*FP!se12*lq=x<$R1Eaon@n6BKEX*EAKfQ#KpNf^%rbf`y~?in~8Cn6v@ zwCH(!vYJz^^W(TD8#za#N$df4ogPrJzRlExV=mZbb4V_>xkXsYtnh_nhI@>Jm@oNsm=ksBBU`%%43JisOPd5!M%8fXT#euk7T zQJF=UPgBNOQtxAxag$(uZ2%BRr=h(}BP@>NpaFSt9GhxnQ^{h_rx-=`%JO4g`YBEv z=+t5ql^?TXPi@IpFBX+?da{^|H>WN({#3B(aL{gQqW2Q{{!9~#>NRmwnuXKU_p=sy z&zA3ZwU|yebJ|A1CZ!6;LbJpX!jaH_;Cu;}2J+sI$xH9Wwz_Qn5mxLqqHO8y-{0BJ##VRz|T6>dM z5{?7G^-?1xawxB<^bIOM;bt zMw2*+NNjHsqfM*sNMaORauUPwB6kJ?#vlT+g){ZEk#-7thbBKcntb-HCrlge$ZQ8(a>2dy1xe&ZlR$dCm7F9kp-E&TiN0#BFuCtYA^|Qr2@PJN1rsV@ zXAA63@{AnluBfY)?BJ4eohegE%J3Omh3kw^8`9V{fC@N8Q-O}0g^9Gcy~^NOFn`EK zx4bIP_rWuy!t~o_ZfCQHb#4)d(HG8n1czet_5*jh`Snb5yC7iE<%^am`=Aw z$L|NB-+2efE>?nK7H&|hQ;k~z$n$z>Xt8NrtFIt5)vgcC^2Yn}5m-HM9)g>Bg%9;T zvo9j40W27=gBYr4qEna7>r|_8B&-AEzOw-)X@s12dSD_K?7^07teL{1Pz=VyqSHL% zKZm2e_;`Mtx9}X}G0ROLd>3M+ej!eZuU1KetJTtg$~s&=Azg9^KJa}xc9^5?YS|qN zcSV`fzPnkUxHn+Fi{7&*>Oy$S1p+9uE2BoAx31iO*e zV4kD~O`nnzg=3Wx}b4LM$|#(uo9+)tCg?#IYrAz;z^x@(u;f(8O z*{|&ool+H{I9XDE;i%!AgAsC6IFZ?YFk*VWT{xQAULkuJ-of((wvRY$A95N;Lx1%C zF*L(IH}sNsHt5N-gcDfGpA4z&GX-nh{%GYXlbUy+;MeWF_H z)j&<=X;Br&!g@y;6jCighV{=-)f`n3;v{RJ5-_ANszUwk&9FCf6vOpf4{Opkfz>m; zgE+b8I>;*U=HYz}eP6=O=^&rdHwX7-2XWE2)n*JwJs1XeVEDpLrkPir@kb=sy9WoI z>1Q4E45EK$XAdT~(zC`a>3R<(`yyr!XLcqaHY*OPtd8+Edo0ww15~P5*=_$G^sN|B zyM*to-|4(@(7mYh>WzcVTz!w}{!Z?Ek7;BlXQyk7sk(!{RCk;F(HuisZz4VUaIu}R zJH?Qo846daJE;@QH4O9`$OXGIm;mn`cLdu3w_tYas{~0ERenGnJ8n7T1d99u#;?ax zC@|3!i(sP}9tuzv&D@SQ(@?4{6go!S5po5%7+msuJ+NX?-|JLCV6X2rh-*ZB8-?6k zzBe#o8z8&&J+#i=Bu(ZhE*T=@AT&8+p+1Vrp!SNj*<>IZLjx2yAdu=@byTe|s7X}8 z@HGJ5*U9CQ8^tA!ML^&88APjtehLQIXyB7&=vz%xX6F9~T>Jm$zy9-=KOZ+NzVphr zU+w;U-GWztW1292c*4JcgdT&=dtA`R|1SdIOEk!1{~`dReC)BFp2r@$6Cl176bk<* zEQGdoTniU2fC0Pz@j{G9Bp^g06JEH3XZ;7!RGgMou|M#-)4>f$n#ZI~R^91$`+bS_ z0YmAy2WDGGsj_bS_PxpFjYK~GoN7X(CIkNA;uR(Jc^}qSR2;klHd5D>yu6b7iVy3- z57266U@tzBFye_>bKibDfBnS%0|yP6`0~rIyfSudT1H0N*s-s?^76|>DHEsr>~dCA z%$q)a_RiDV7>!D;h*N4OPj;U?Is08)vrnFMPoC^qLh3Qf8a&X=W1f*M+Zd#F2Kz49 zMZ5i7ulVtIq4)bJ#Ls%^N8j^0I@^tHPjqIz^7b+&DQ&{!=^3*opV)!x#N=5S(jiTtTs-UzyyQk z<(DqjTwwaJ3Ja-ii?=fk3(e*U8qL%R6Q*hs67ZzvD@+*U3#Mu`km^`S!!IzujQ%qi zAeutm6XgG?n#b^I!gIf!``X_Y+E%RIcuVu7WfDgXUMeO*Vg(|7iU_^Y3)m?|TGrbP zv!#peW_$jFnLaBLr%&60P_yL0@kfkA-~w<-5Ky?2{tsT_PG>y$|4rVm4?2WJqBgvU z!1gxu7pjCWuu>Var*PLh>H@7%Y0&Q-ltffy;<{KVk>b_uTA>L_+^$={1BMk)F?Z7SDx*aC=`6cq(D5u467)>SBc3{+(TceA5TXofGh1;jCHjrEc>Y^}qw ztg2I33J3{?x&L0u@2!Z~4(;9DX$$Qg{eRng6ZodeykGoePt(wbvIQtKLRku^(QzqS zp)$Y#b4I~!6djEV4CS5I7hgvQ=jDYIazd@84NIT}gb@0~o)$0#q7=F{w0;=Uz*+^OH1Lxlf%IQ z4rN1ML5rPJnTC;BQgNkYN=0+$l-y}0<@+7-@?h-%F95C%wS-|Ch(VfwUt;-}lPK%H z#&g=2&s|DW#vPH|ms3|7;{83mnu;A#UBOcAvUN%~YTTY7roa*cPS-Hi(=7HUm)SX2 z%XgRJ@Gt{F-W#2b{$Ab?Jc`4qmkeiPDJ*MZ0IHzay#!zm2a+aWM`L+Q<=78?{mvZm zIe#z5j>5X_X{|Ux0hgI$i{gC;*$0Y`1j54lz-iBE^R%B9*5@j%#K~em5=!>>q6Gvt zb~h*h7@8eTo+f>7rBp%WhpfdXJ*R0WT=w^B zM6D_108N&nv87}Ko#H*dwUEBsiDKV(GYtv=Li9n93%E+`Ra&d@rckv?Jp-M^ox%`y z`ZW+MSSa>hxKzHo1nnj?C`)Oeh&yQvV1yz@Gou;Ztiu<4n$cZp>fF z#7LWfCf|#F<|-|SutR!(2VA(6EKnl=dXsA)+vow_jzn9$O>e9HDf0rkVk(V5dTESp z0g5u9B@!YlIzc-9eJRLVQ9Rovt_kq2f#rv>tA7LY+v28f=J4W6AaEtuOz%f*mnz0~ zeL7m=ed3xLQImlcQ@Xg63Y>P6D-tPJ`Jk?!e)tt~e?M}-=n2$=H}_dkF41F15ZvlP zy-VXzP;PZV^(#s`a1ud5J}vAh_frsl#hebLIllvG=5*Xj6WHo+XgoIqR5*?sn6m>M zvcJ;we5Px$gsQX2ZZ&eWKLU#(Gz;ZXn7)mKS}0ntQ^dyjC7F0Rp4XRRfU8XbNt=j4GYrIJmFAE4u;;_Ynx}pu#$0Z~H^5@EFjg7da zk954|kMml{;@U&2@md zJl919Les=jmvYo_TaM6PD++4Qb)e-Fz}9LO)VKiqYyn$~Cm>EYC)eKN_?3`E{Nktv zu)y=rLH#pTVd@8l^X__aOdtTcq`OH~@Hr&=ZG`xP&j~8inuw6(?rSP&r?RkDl25@R z{u$TE{;tJSZ+^h%!a8YYt)1Y&4&}O1fFOS%;;HB5>}Sp7<1Cq5iIqFT?Q$!)kI%P? zYCCvoxHivub6hO0@DbUS-eB_fDE?T`@N(Bs_WtI;$6!jem89vX>IE%8Zadwd2=|bs z;J5Y4xux!}3)7(ZMZ}s)cBa=Y_4W?z5DZ>D*_moHK-S!>r4D%r!pQ8q+3B6ryqerB zxg*J&ge@c&!qUXJ+~A{F;pLpq^MmT)ST@=#7wapUo`;iF+v5 zt*v;n%aD+^$n$;evjUa2_`O>_rB*H^pmnB*;27s4Sz6BT`#QbhSwZgndXDj}ufYmy zY?$u+ng@x8;Rrw7t)r}P&vAbCo@VFQAdb0{gbb}@d(iDQWW|?a!z;cH;gBVU1amK` z^G-tEBtW2KhcQdV-LP+WC6hK!tC)IFgaC|MxmWAbLc%h*b40nzP|7Os z7=BFx!mr845YRcQxJ{6|#^>1DJiF{oL8VteylE8vfp9blYJajLt`Ooglx~&KkNBh^ z8A;DdDZ%9)!WTb{lmcA?nRWL5q(kf(=xCpwJFv3tx!A~+rDRE* z(WT{#w!ZcO(#G~v=?i=&0K{}t_r?(`cir70p~(jZvJL%-B(INa;jUBUoEAJt7;Qj| zXOjRJip>}hpK!a`5h7*851cmNAiiLiS3N6_%X5gK_pmyc9QEju_n=Iq3HWPFTP&HE zT`JH8;i_#TS(&EfR(kf>a{?cUMo+~-p@%&eGncn|<7RPAM4JxF&B> zsHs-#+2b8k8wYuXky$y0R8byis*MAfih&%Gb}C4bD;JGmk;6TmPppIZ2i)Py5Sl&; z;mATu$~@&cuxu+^e7{P^U3d8xio{gfMf4S~5*M!u@XWcpLavUog{1Y%fXQVb5`oVMw>MR4k)Br|3>#~pxuT6ekLtNcunoWbw zuM@RX2*jFl8|T=Fsk+lvq}s@BWM6KrEbnxBB%)fkib|g9U>#u@Eh1DatjdSmf~=G! z6(4t~R&pyVuZE4Ynz(WcX{5VBqi#5eA}pw{8R9eU!jg9pOWu#5SNoJSa-Y@PD=o;& zX}XPP_~uDnI(kE4`G57KjvE*~#Q()TOgeev_0F(iV}}iUr`yTY$LS7hwO4Ms-9v_q zD*b54P5195y=`l5x|h#*X~v8h`ILP*@$(~}msB{cZ-wRzp02a@%`{v7*mtCEdV$&J z;f`a=k;R3%6A)cgkRzLWsK zEi0`AVQ(B%92^T8*eN2#OXFF-X~rAbkKVI#^OJ8b`Q3J3G??uusP=kG0)O3fT2r_p+?32JFsa!I)xE*ZS-Q|j2Ze;G^*wHXcmazkId%;5? z0m+N#`zAy{32l8T;}$@-Vhl!LFsztp*ln1&g0g0BTE6ICo_=JghIhR6>{w$r+jciU zcg*Ypk4~*W76=J!w?DT9L6_p~5555**|Glr82mUzum!D73Y9ox5v0AP0r@x3SJ3ISqcJ@`7tbhOhk(fe6N(X>I zCdX_xmN1zMFGN0D^2w4VOFEWNYorXni;)ZnJb<=C8c%v6Z)BLFwj7EYXPB`Ot7MuV z-!GX9B4(3hL5b*NemoF$rbn_Ri@}sBB?rOM5){QGf7Apr1&BbvdCW?KL<@=>S(GwZ z4QnQo5?Qn;h0;{yilElPdX4qb!X4u-@Xtc_=_yM04>L;tKXugXQ4=#Wr%oU9Ak_dG zedf-c+ij)eEc)nYgNb6|&BxZpwUYcv*u{W8%oXFXz$as;68fdC#DSsmVC`LyCu6o( zl8acNe&jym&v3f|w%o~Wr_6JUg=+_-TLA77U{g$xDC}{_wm?uegE23?l`4%&Ltlx( zn&8qx@1{Rq{T;E2DU+^a$5!|%ckXrWT~!I{9=Fc-_0ChyQ>$p5u3HL{|2R0i`~FYm z|J$qWwe>=?sXojPf(G9%5TAX~y{d(n{d8LCD8Zq5?Uo z5t2dyoOqSklK{OftyFX(BN|RGkl2u2YpERw{7?-!9W)5PAQ@&oIW-pqUXS23{a7=S zFjBXggr>^45ZNKk6Lc$_U(wxD8m9)W2^u#P*g|BC)~HQqj0~xni&eSb zwc;%XsGquqzP#*LiGQfD0+d(2tF#ha02eD;zynwrxyoH4-l|4igEV-*LK&o{Ar;GnV9AK~G8l@aw&(h-1GlyIjNBVWbgXR9o!SgAP)umLz7!ayl^98 zU!=#YtG0-0KCWtupeZT;G#D?Y6>ssYAqxBVVR00n=?USOV}(=zd=*^jZNM$4j<>2V za2Eu<6!93pXc%1l_+d4IDNrl+;{gGvHMy^%uhdnwpj-Sm(~_`A(+kvMNLob&d+ZwR z;$-JJX(%YT9dz_-(a}XFKZWX_Z9YQk#59b-IpiErk!o^os$X~p_7n^&3?I;Xd^p#Q zzJhq59l|dWaXbd=!=wf{-UBvV>C;CA8ifu~Hp&ya|D33YCO)HZ%_S=|IxgGlJR#qa zxo#7_&dgQOfm*sY{lfE8r#cw*z8eH?Xg+XGRD?r#2ST4P^Vmphs z;!v0i3qS%ZpCwawrZQO0OR2oQkr-2nZx$uOt`(u>+R+FQ5b~bh7sDgK?@Iq zBi{3)r~_gi4h6axcfCUIee@HdKUta88;q^LtJ>~;j?Yx>2efTHcMv&{oCampcE?2i zGo-wqE|WA{D^?9SrEsi3!(Cdb_Jhg(sa9^kp)cyb9X0<5_1PvZt2MO$(87K(moR9?)CPA?8zJM7h=v=><5dFn;#U0 zmmd{JPjSmYVpCDj>Fj65=^x+goqZ0P)pHwn)YT)$*55Y3cHA%~a6C|L9$s8+ z9wH1b|BmYq#e^q7X!#;2U?DV@>j&2~t~&Hx=(|95bk!Kzf?FbYCQT;1;5o%BY89fo zRw-gbrE4MvK*)a1e%{_@Z@1SSv~Q7CX1Wqaw}&0KuYTRDB1hFP&{gt2uHIC4mChyM z_k^+!#_?z9^kjRsa3O@y?TT(arePO^$-IfqV`O{UbE>{pgTW`WpCYH+%DI>tI(u|> z{s$eE{L2_OTnJ$bVCL09looN1*y+wiw;54S&baOahEnbtW~)a}^>8ue^<12*2=`=j z2Y@r!z_2Ny{*K>bYClQNxtUR3WqrNSR@u9YyH?q!i=(W~&>)HW-N4Xn1|bOe0~!>7 z5~q(kD1=9q7S~nkyZlP1BLR)rRZktixfV+R{}9)N+v_xp1iC&nrfCGVd%7zEAjbEu zPWv_6b>pZ~>5IzFPUtRcoI5uSECRPhxnXNAMao=LWsff8ujE=hA=C==$!>Y&^PO18 z+alcM%4a*dM$qo<4wH-ZreGN24C?6-gNn4Y>)aY_y!0dS7oHF_p+Rgbww$7i)Fw_V zYGmr`L4d3jLR46buThi>$>2e4tglrFS49ZQbxpTjwEbwiL{8x|u2E_>sPw%I*+0dN z6*4fq6knu9a`BHaN{cVyO?h8JjiHO7A48Wym%)#3_zo9Uom&PlsfskAq)1mu`vJ6b zEz!~*gc2wvxk}3)PeY(EwFiXMgLw#UoHYP6y#d9j!Zpa1#3_nGV*#E6$1Hc*)`%TW zM-L%$u}~ap15{U4zL&dHv59fZkXbRpg*zY~f_A)W-xlaOX{DKx1GrZ1#JE->SF^Ev z7pDYp^kT(o<{&(Z8_V~U&}guHN-Y`}aJLd>b|5gbv?!pBL{X?`abu3TCt6WQ;pI|3 zO18aK%Cg1Hkex`6v~Y3Jd@-Dq!TFz)L>?=?_%BegDA+$X~ zIB`I^;ut(yq9!Fb%rUUXN+LqC711^%bM}*WG zpqu9k>7WgUaV`L6%7_{;^;WiYmbg`vcoh8#eD*=1gVIF0N@J5v9oumu9TbWh5|#8I z1jR^V)tB6tf*vcPTKK_ps#fJVNx*0=-V3Ul)L^EVgcILE;?2@v&)Z+E2rXg)qq1)3fI z)$WO&4#g1{>B^AWh%-f`!xQRr&Up?ytybCyhGE%KAvz#sC-|w{mIJ6P0Dd=*);VTH zJ;Z6B3FAVe<<8PIGaZ-p+WH2aw<8O4FqgKK3I%MP)mTkym5mxYLXUv16h8l#6%$>1)c!m-2XMI1&wmjzYPCQ#56 zt!8k(+mT~%OB0`cL!`ywC!<*TXiDjXJ7fB)0qr_{^%o z#Qm%G_v(3!zC>TFFJbPQF!Gl}Cf)Ul^p4u4H#2zN@JYrE%$ilp3kLM-4Gw+gl?j;> z@O$*lH(!4B$<40KZ@y`H^~on4E0?@!d2#|XVfric7Q0??!JIz9g}<14$-GymPXJMT z#_XC%WyS?EK^C9TH&LsashcdH@%)RkU%GelE2DHzP}G0vW@a<2R{XXK2i{)kgV`zq;E8^Ac%e>3w-zWXEoEyckL?Qb<4W>mbFx} zI&VdIL9)u!j6$VS$Tc#JLak84s)Q9%7#UdAu*v~Uidjb|4|(;~SBE4sN_{de^oy8r z3dJ~!Wf8Lwrb4lhk*gE>4qv2Z02q|q2weE;tK*nOFDuk~qnQ~82X*5$9-jcDaNDCD z^y%;AjA7S*hBBGf$oCYUwCe@+;uT%#3wE#Ay&%17#p2893qWUb`A^B?7LH5)6ZBhB zg_}9gE*Pd($a@YLS8VZTj=l@bC=d4;d3QLnFugalWl~y?&NGWTB3B{-CbB=m1YTt# z=OWCjv%B_(_IJ(hd?!*Ad8hLw37GW~Q|pq7Wc6E=3CSvYt-F7J4^Ok=3RXS0$VPJ?X&bBAD7Vranzr(?J&R0&^{9!N2J@tSE>G;{?* zS0dCK3$6S~=qiLd5xOfD`l%F(Wc8-bCUD$p$zG_1{{l?P`?y3uBg%3@7f2Pn0`S^T zY3Xl|08|k{w)Y#~C65PBdM>inZ>Doc+7uZqFZl;1^xcan2djr&iUH3FNz4iQcrSev~6|N#)3*B@1OmrVV#k8;~D&`yqWUx6StMLF=QP~Gx4#;kb3dad3x%?xT zJ4?&A+Zu|&egP$UfLawdP?bnGrI%YcImku3b@fsHw4eFh!AU9>EU20mn~xfViqOo2 zOuhr-|9`(O zAczMJh)iAiJ$T+>-d(cf+{%?_8Np<-FeX1^p6V<1O*J!tv^xTKqy?Caf0v#p4#j9p zUpP54BO&3jjB$@8Bqzh9)K2tS@K{2^g3Qc?8IL{o*n&)ON*O^7rJhXP8Au}|V}g7f zQlflO(lhBdPycS#zrOXK+%hMW1OlT#;rYgqBS%v7N;=@I=`eSJHhLG#IrHbwp98b7 zwY9a7A!pMvf$@g40o|kqL2VpfJN&FA-P>C6=%Z7o&Y1Dsb1%P~mG#CO@4SrB#j?CcI@~hhDkNz5BaCg#GjEVN}Wk& zrWP?#ptzL*G~bUOQ=3^^iyyQ$1KtnK&FO~ut@91(Oma>}I3p*SN!YicYs0<-M)Si< zk(YkJcK61JMI+w8-k9ENe6Muuj>&N;amlDif-+G_LDU*K{$SD#RRI%wBmTOd`Iup) zQTeUQvgON`fbi+jt|B`F7?E&;f0Qc$ESJYUaSJ=b0IW+-QbpUDI9= z)3{}UQiBpwxJv_NFcn-`U<*v>i9`xYLbzgS2aJNFv5aAr#UH~@rJQip*8%hZKmsaB z(>~+!Q}d^r$SE;7I9N2YS6lc;U0rNh3;(OA@f*pAexN`wK+94$5KyXc`Jpr9Oi(3G zb!dZq1e*UD?l^5#T)saJ%EjFPQB?9zy1KX$8xJ@{Nvw05@s+`0L>g56@H^;C89H({ zd!>c%$*yccxfXHxYnE^sKKstOYs+I>@x@r&(NbFsZZDHfM zpACgl?s#n2WTG9ds6i@s1-rT{H6K`ODRt>iE)NOx-KWXr}D(HkYd0Gk3Ws zr`$72dc&Sx?g6+T?E%H%|d@i5X;xczBaM|2jFsA02N06;zufSGX%D^SzGDdI32{e5ud_5ubqP*lZQ9(iSYA*g z>O*;01eAzR7r#f$eMuf*;v3^+Sn8yt$(1-cCaVl1@YkdifWS$pSR&T!zG%`eOlO8o z41+@FYL=YKV;>HK(FYzVLnoU58EWa`@@X050?y09-*|h6jj+A zo%mWV4no8sj()*Ay}i&CapWMV{4DIpVFCc8@LL3G9W#Qz0(lR$X<$>BF0^B?NIOQN zV`Q+WSHY^g4uBFd8Jov-x_R_E01lx9Y#^Zn!SN0iHjz^YY|UWHYr)#t$|iJTVcUr6 zhB;7v0&uzsCCWpZ#1+(GVp5CPi|-m1LU#eU8|yAnL+7grLlcWc8uuMnKw3pDX^Ac` z)bk#8MkhZOFS0GT0`M8Se98d3r6b_$U@!4>aD;e#8tq006*!pQ9DmEtdYpPNQ$9XQqOzuxaZMGS0^xu zU7ca2Lf#c_hf3$pjy8=-p-mi+cHj7($s-gLmGI_D~Luu1gor( zJ=(=5vSJscbZiUG78?(gZ{zy0OJT80lgqXG0%*LRCmXKrE7$2Gvf(O&T&bQXS8F1&p}@!v1v}wT zt%1?L1b)5W#hbLx>rL9{VEz{Fr{hf8C$%Q+3^0vNSL3HN;XJ4VTtz2isCG}6q~kO2 zSKnKy&QRCQ_g2Y{_vbfib8b66;v&p!ADuA~?!i_O4Y_}h_9|GvCjZZP%)meP? zqsx2#5cXX40l{#&i#y>?s>pA5uFIjE-dh2br{UFMcRbjRoz{ve5$9(JYLdM5VYjNH zI^z6}Mvlq#vCF^&z(;VLf}Efp9`L_YTnl)h#NMP;NFZy|WSB=^(lePsPOg?vqQ#1X zVS4*?>1;JVXlJ6LqxOW0Yl`w1AFjGlM@|l$IXSi(kUE@j$Ma!l9wq2NwE(@KfOBxO zNUT&4EEv-f2HNWyP+t#6S-+`V6y_3&Yp8lbTn(wBL8@@j!JRD6FD=h2At!HgRMi-& zAteweLkYJ)^$jN2R8(?+yTiWBzP#REU|&hLb0!oF_ee0lmr6n&!Nnz~WbR3TMtsdt z=J%*K2=_@HNUR301?k2%9Ln;2JLq}b_lYD*AsR`#B9o1eZ0Hh|6z<{bhvK15<#{M% zJ_J%b=#6obkQUaG!!RP+Ideinj^Q{bKVTb;Yq|cQ!Mzp*Ru+0rgRfp`UlnKN)_4ws zn_g{qg126tb_VW4;JjDcSI1?-{Tb94jv-sqpi<7=d9!A;oGRZst_KtpC-^?#5`9*w z%yy~FpGnpBRnelyY8|VlR0DMMARvTq6&=N<#lNlS-1zRIA2>)G*syXfMp=xeK6)C5 z__#r~!BIe!z~6z9lzN{*1DcdP(}!)~gl`g6N1Is9wVl_YGXb3N5JFGK3^?H-yt5y* zV*F%;olW3`j~@0HBVma)g&y^3CMYO9^gk9QhAl~xR~3p$P}C^1i$MtD39ZF2Rd8zy zv91kv_i~;Fl?B%6R zhVWl;XOP8N@d2!m3EeRUAjaKN3{fK`j9upx_X8rHcgtOJ(}QiMiq>c<=fy;Lscw4V zvo=u`XakOw911$H1(56H+gV@E+CJ;6SzmMC;$or)0A5q-ipSA;gX8Xl2Dv*v#{hB~ z)p=}Tuifxm-FcZ_KNFgpea*onG=tXJ>|$13#`!o|wAYaLDJyAVQ0+|&y^mwfm-wK0 z?Bz~ju&1UHVmJ=b1S;A)jI(M=D;*K;YjP;P?gV#;E+m!LJA$C+G3}=0F*PPrd$*@t z_)qF7lRVuDG$Llm?|mPG+%R35E<%#;6H``e@St~KmfSR})%l4qCF*mZBd#Il^FVjw zqaVaHVFX|8+`;!l$AIu5tCc$`eNc7Mfh~W~hAu&cl+jlk4;l)92BsAAhro)kI(5zT z_-LP^4~2$pkW03X1Isg7C%YLtRH_3+HZ54=4CGs|Ehuo)QIvcN<{n+~)e2C@DOhuJ zZt>Nz?}wq5?KD+5cUa2bn59F(xv$8nIGOMojj>&dK?UypMGUzxfyS5^i=mFiz~Qbt z4W(eBF`ftu!^vq%vfiCW@9r2{Ze1~*Iyk~J7@{b2tXM$AfzbJMtO(lT)BdL*Wl(Y> zLxWUWoV7F!GMd!(ST-^LgI-Nm)E^1r+A#yyBBfx)TQ2k=hs}`Rq2La)SDFF3pcC0V zl^n)ERA<3gcqBHv&G(V7Xm>t<&QnO`#a!r!#_t~uI_ZteiUn!-7AXjA9#1>KYxESM zk)zG6mweRdCU{|%J_z258c<`MGFjRH9;g9Q`K0OJ+5m~I0sr(#oSjaYpegPVIE`>- zz`3T4t!n`(LJcI=N}p+9eE@-KIPqx;oR7gdIQr>>a1Ms^0qIjx2Rek2-lU+>t8v*( z&$OBKuBWJ>a;3ru)CuFHxupu#(Oht>!_F-2j>(>@N53&7n%-_Vs7(LXF7~ot#SEj) zW{AW2#-M;F+ouJq&OMkCYd~`|l{o35lY&L(FV~w3*bZrf(*@@^hz2g8RC<(3$*&jG z{2#EEWjJ>PE(l6~r*j8(gjQU6zJvla9fmO^&_Ez+5jNRx1RW;uH-42ve)JniUVlrR zsuAQ<=aou{xVl%@zprbP~K6PP^#EwsW`(p zYv@tNBIO)yq>qr>HZ+pQQfPc@n{%5Ke7dRz3m_v>eX<}_mz-EYsFxzW?i8Tyf9dz3 zwS&0@|{45 z`+m$~oIg6We37%>+35VS`I~AB2Jcm_)k3aPnRMS+_?^%q&8+&^xq~)pX{lNC8s-_6 z1YTFl82=9~mD#el4CZ+TVA(DX#oZ$(W7htCjMiW=G#h0zatfB#z zlZ*?)E-0D7Zw~IIU?$=-2g77u+qfi=89($*Im4`+H_t!MV9+G*^fJuTkrZ8qrMMf6 z`g46N#8fY(LaxK%WX^rK=^<1$(WE`MDP@4Pxv3FY)DPgJ`uNK;>Z@W1sKW1Q=dsTM1ZzjogIj6eM;WB$BafAlNM6f?qPp#Nm_##D30lK*(~UtWDa z`c}pF>^EqrBgZ;_-kdRGX3u_V=FF#N&mJ@8Z*ens^CD*|hvRwTp&`1i&W;wyRQnrT z&Pl`4fBoVcV{UsMXJo2APya3M=f@4QF=Hl9oIn4!za2B?x4)e~f8xY3V;(ojk-o$g zojT^er(Sr?mbYr>mCqKPney9LX3w5Daq{Ge6KBtUCBEO#yC445m@)Hr?wmY%=g#?K z#xRn^H_EAP=$X_@l51aDT6&YsJH`keGh*K00+${}qULI{fRu~ju3@0Yp3e#n|N7N? z%qfwalMDVdQ~_H2NXEj9g+`2;g{fa;XGbnXC?_{MrlzI_-O|~1?UmtU^sSL==j_U4 zV{1&$?m!wxZDLfcG+Kifut_XzSYyQ5jH#3XiS~Wd@(b1!i3bBU!W(| zYKjX`C(C5XY9<3PR)r{HTv;s^EBr0#R%^P2$w*A}`x6s0nDOINKn1^u{>DqMo4o5_ zZO6lGlpaPGuTMxc-^0B1$2XstG5v9-yTU&+A#HH@NXYbi?Ww1pg4BSK!$(E`h76f9 zeAF|~KKsNIU{rYKsb^OlsjjX*`rUUogAM&-_3B@w@8k`SWFRr4}84ioCFA&kK^lvar0choY0H&kH9{O8zHV78bZ*QlG!> zk6|x|3S5OG5Kl#)$s0B-9QWAU8#b(dJ%8MWXJ)@R`SlI-$mC}pTRnT++xagpw7)*?vB?WpzxetyZ`<={@5{+q`P|6+b8>2q zLrUU<53A?2U4>i74L9Xs)OJ>Kh%?`Rv_(h;a{8(V4{Tdxd_JvO_KvT^LOujXp| zO#HDepxr%j?6K$T`Q$ZQ9VD6|J14h3KlkL$j#l5K5f+S}V(3%D{BbJul#{SO_p@@yfc3_}S{*B9!bRA-FL5k80P>O+((TfrGA_cxBCq)DCfCk@6 ztU(oaIT>dq6i^aG1hr{=JNve1>POEoUxAx|o;a;R8HlPgxi2B1=xg31+!vG!Ngz)C zl0Odj6z&iXVuuA&P=Q!x_|AdvE^O}(*oSjp0ZR8ZIG7Jb3v5PVNR1eub`9Gdaxk6k zAm4~X0^g*8%oCaRhqSz%9mZC&B1;yuIFzB~@La(@e3dL$tq?~CRtclh5!fK(R(MT; zr!4SFvb**WyCd*CY4M=-hL60cZY9r9wN-cIIOB*KwTnfi6C97~M zFmS8*3=mxE+9aYl7&1x3;2$J-1|tP+8`jzeK(AaoA{f%7!DH`HV!Zh1PYpl}pU z(@Q}SXtys$LsIeRquEcJP%I@FXjNp5I3TF>_6^EJJ&;aHehhZ~R1`az%YhBb?F9{S zf|yUDD$KJlBZaV%byDhNEtf0h&`A|La7&TX60k;S&{?$A>79CXw1f7bgWQmV9#|

xti49`kqVyBV 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 C7;>xt literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/MDM/arqsaida2.bin b/test/roms/bankswitching/MDM/arqsaida2.bin new file mode 100644 index 0000000000000000000000000000000000000000..560cad6b0b130e1fd1009caa0c62b96d3eda9715 GIT binary patch literal 131072 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

94W8wIn1fajE6@JW0yozm$(^h`iQ1D?@uaoy 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

&ZwXdQaISCZvSjGM{lr9|6_PQ?R4;aA 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 Date: Sat, 2 May 2020 16:46:37 +0200 Subject: [PATCH 58/69] Make windows positioning independent for launcher, emulator and debugger (resolves #615) --- docs/index.html | 30 ++++++++++++++ src/common/FrameBufferSDL2.cxx | 72 ++++++++++++++++------------------ src/common/FrameBufferSDL2.hxx | 22 ++++++++--- src/debugger/Debugger.cxx | 3 +- src/emucore/Console.cxx | 4 +- src/emucore/FrameBuffer.cxx | 58 ++++++++++++++++++++++++++- src/emucore/FrameBuffer.hxx | 42 ++++++++++++++++---- src/emucore/OSystem.cxx | 3 +- src/emucore/Settings.cxx | 14 +++++-- src/gui/Launcher.cxx | 3 +- 10 files changed, 190 insertions(+), 61 deletions(-) diff --git a/docs/index.html b/docs/index.html index c845b487f..dc6246702 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1999,6 +1999,16 @@

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

+ + + + + + + + + + + + + + + + + + + + @@ -2522,6 +2542,16 @@ + + + + + + + + + + diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx index bce5c2e7c..4d013a35d 100644 --- a/src/common/FrameBufferSDL2.cxx +++ b/src/common/FrameBufferSDL2.cxx @@ -48,8 +48,6 @@ FrameBufferSDL2::FrameBufferSDL2(OSystem& osystem) // since the structure may be needed before any FBSurface's have // been created myPixelFormat = SDL_AllocFormat(SDL_PIXELFORMAT_ARGB8888); - - myWindowedPos = myOSystem.settings().getPoint("windowedpos"); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -183,27 +181,34 @@ void FrameBufferSDL2::queryHardware(vector& fullscreenRes, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Int32 FrameBufferSDL2::getCurrentDisplayIndex() +bool FrameBufferSDL2::isCurrentWindowPositioned() const +{ + ASSERT_MAIN_THREAD; + + return !myCenter + && myWindow && !(SDL_GetWindowFlags(myWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Common::Point FrameBufferSDL2::getCurrentWindowPos() const +{ + ASSERT_MAIN_THREAD; + + Common::Point pos; + + SDL_GetWindowPosition(myWindow, &pos.x, &pos.y); + + return pos; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Int32 FrameBufferSDL2::getCurrentDisplayIndex() const { ASSERT_MAIN_THREAD; return SDL_GetWindowDisplayIndex(myWindow); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void FrameBufferSDL2::updateWindowedPos() -{ - ASSERT_MAIN_THREAD; - - // only save if the window is not centered and not in full screen mode - if (!myCenter && myWindow && !(SDL_GetWindowFlags(myWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP)) - { - // save current windowed position - SDL_GetWindowPosition(myWindow, &myWindowedPos.x, &myWindowedPos.y); - myOSystem.settings().setValue("windowedpos", myWindowedPos); - } -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) { @@ -213,24 +218,13 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) if(SDL_WasInit(SDL_INIT_VIDEO) == 0) return false; - Int32 displayIndex = mode.fsIndex; - if (displayIndex == -1) - { - // windowed mode - if (myWindow) - { - // Show it on same screen as the previous window - displayIndex = SDL_GetWindowDisplayIndex(myWindow); - } - if (displayIndex < 0) - { - // fallback to the last used screen if still existing - displayIndex = std::min(myNumDisplays, myOSystem.settings().getInt("display")); - } - } + // TODO: On multiple displays, switching from centered mode, does not respect + // current window's display (which many not be centered anymore) - // save and get last windowed window's position - updateWindowedPos(); + // Get windowed window's last display + Int32 displayIndex = std::min(myNumDisplays, myOSystem.settings().getInt(getDisplayKey())); + // Get windowed window's last position + myWindowedPos = myOSystem.settings().getPoint(getPositionKey()); // Always recreate renderer (some systems need this) if(myRenderer) @@ -249,7 +243,7 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) posX = myWindowedPos.x; posY = myWindowedPos.y; - // make sure the window is at least partially visibile + // Make sure the window is at least partially visibile int x0 = 0, y0 = 0, x1 = 0, y1 = 0; for (int display = SDL_GetNumVideoDisplays() - 1; display >= 0; display--) @@ -276,13 +270,15 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) // toggling fullscreen windowed mode // So we have a special case for macOS #ifndef BSPF_MACOS - // Don't re-create the window if its size hasn't changed, as it's not - // necessary, and causes flashing in fullscreen mode + // Don't re-create the window if its display and size hasn't changed, + // as it's not necessary, and causes flashing in fullscreen mode if(myWindow) { + int d = SDL_GetWindowDisplayIndex(myWindow); int w, h; + SDL_GetWindowSize(myWindow, &w, &h); - if(uInt32(w) != mode.screen.w || uInt32(h) != mode.screen.h) + if(d != displayIndex || uInt32(w) != mode.screen.w || uInt32(h) != mode.screen.h) { SDL_DestroyWindow(myWindow); myWindow = nullptr; diff --git a/src/common/FrameBufferSDL2.hxx b/src/common/FrameBufferSDL2.hxx index 857891685..d2825037c 100644 --- a/src/common/FrameBufferSDL2.hxx +++ b/src/common/FrameBufferSDL2.hxx @@ -95,6 +95,21 @@ class FrameBufferSDL2 : public FrameBuffer */ void readPixels(uInt8* buffer, uInt32 pitch, const Common::Rect& rect) const override; + /** + This method is called to query if the current window is not centered + or fullscreen. + + @return True, if the current window is positioned + */ + bool isCurrentWindowPositioned() const override; + + /** + This method is called to query the video hardware for position of + the current window + + @return The position of the currently displayed window + */ + Common::Point getCurrentWindowPos() const override; /** This method is called to query the video hardware for the index of the display the current window is displayed on @@ -102,12 +117,7 @@ class FrameBufferSDL2 : public FrameBuffer @return the current display index or a negative value if no window is displayed */ - Int32 getCurrentDisplayIndex() override; - - /** - This method is called to preserve the last current windowed position. - */ - void updateWindowedPos() override; + Int32 getCurrentDisplayIndex() const override; /** Clear the frame buffer. diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index a96f208ec..6f5078228 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -115,7 +115,8 @@ void Debugger::initialize() FBInitStatus Debugger::initializeVideo() { string title = string("Stella ") + STELLA_VERSION + ": Debugger mode"; - return myOSystem.frameBuffer().createDisplay(title, myWidth, myHeight); + return myOSystem.frameBuffer().createDisplay(title, FrameBuffer::BufferType::Debugger, + myWidth, myHeight); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index fc5c1e9be..3fe69b147 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -574,7 +574,7 @@ void Console::toggleTurbo() initializeAudio(); // update VSync - myOSystem.createFrameBuffer(); + initializeVideo(); ostringstream ss; ss << "Turbo mode " << (!enabled ? "enabled" : "disabled"); @@ -651,7 +651,7 @@ FBInitStatus Console::initializeVideo(bool full) bool devSettings = myOSystem.settings().getBool("dev.settings"); const string& title = string("Stella ") + STELLA_VERSION + ": \"" + myProperties.get(PropType::Cart_Name) + "\""; - fbstatus = myOSystem.frameBuffer().createDisplay(title, + fbstatus = myOSystem.frameBuffer().createDisplay(title, FrameBuffer::BufferType::Emulator, TIAConstants::viewableWidth, TIAConstants::viewableHeight, false); if(fbstatus != FBInitStatus::Success) return fbstatus; diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index eb35cfe5c..250a895cf 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -203,10 +203,14 @@ FontDesc FrameBuffer::getFontDesc(const string& name) const #endif // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FBInitStatus FrameBuffer::createDisplay(const string& title, +FBInitStatus FrameBuffer::createDisplay(const string& title, BufferType type, uInt32 width, uInt32 height, bool honourHiDPI) { + // always save, maybe only the mode of the window has changed + saveCurrentWindowPosition(); + myBufferType = type; + ++myInitializedCount; myScreenTitle = title; @@ -789,6 +793,58 @@ void FrameBuffer::stateChanged(EventHandlerState state) update(true); // force full update } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string FrameBuffer::getDisplayKey() +{ + // save current window's display and position + switch(myBufferType) + { + case BufferType::Launcher: + return "launcherdisplay"; + + case BufferType::Emulator: + return "display"; + + #ifdef DEBUGGER_SUPPORT + case BufferType::Debugger: + return "dbg.display"; + #endif + + default: + return ""; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string FrameBuffer::getPositionKey() +{ + // save current window's display and position + switch(myBufferType) + { + case BufferType::Launcher: + return "launcherpos"; + + case BufferType::Emulator: + return "windowedpos"; + + #ifdef DEBUGGER_SUPPORT + case BufferType::Debugger: + return "dbg.pos"; + #endif + + default: + return ""; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void FrameBuffer::saveCurrentWindowPosition() +{ + myOSystem.settings().setValue(getDisplayKey(), getCurrentDisplayIndex()); + if(isCurrentWindowPositioned()) + myOSystem.settings().setValue(getPositionKey(), getCurrentWindowPos()); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBuffer::setFullscreen(bool enable) { diff --git a/src/emucore/FrameBuffer.hxx b/src/emucore/FrameBuffer.hxx index 35c656cf0..a73b01ffb 100644 --- a/src/emucore/FrameBuffer.hxx +++ b/src/emucore/FrameBuffer.hxx @@ -81,6 +81,13 @@ class FrameBuffer } }; + enum class BufferType { + None, + Launcher, + Emulator, + Debugger + }; + enum class ScalingInterpolation { none, sharp, @@ -115,7 +122,8 @@ class FrameBuffer @return Status of initialization (see FBInitStatus 'enum') */ - FBInitStatus createDisplay(const string& title, uInt32 width, uInt32 height, + FBInitStatus createDisplay(const string& title, BufferType type, + uInt32 width, uInt32 height, bool honourHiDPI = true); /** @@ -299,6 +307,13 @@ class FrameBuffer bool hidpiEnabled() const { return myHiDPIEnabled; } uInt32 hidpiScaleFactor() const { return myHiDPIEnabled ? 2 : 1; } + /** + These methods are used to load/save position and display of the current window. + */ + string getPositionKey(); + string getDisplayKey(); + void saveCurrentWindowPosition(); + #ifdef GUI_SUPPORT /** Get the font object(s) of the framebuffer @@ -371,6 +386,21 @@ class FrameBuffer */ virtual void readPixels(uInt8* buffer, uInt32 pitch, const Common::Rect& rect) const = 0; + /** + This method is called to query if the current window is not centered or fullscreen. + + @return True, if the current window is positioned + */ + virtual bool isCurrentWindowPositioned() const = 0; + + /** + This method is called to query the video hardware for position of + the current window + + @return The position of the currently displayed window + */ + virtual Common::Point getCurrentWindowPos() const = 0; + /** This method is called to query the video hardware for the index of the display the current window is displayed on @@ -378,12 +408,7 @@ class FrameBuffer @return the current display index or a negative value if no window is displayed */ - virtual Int32 getCurrentDisplayIndex() = 0; - - /** - This method is called to preserve the last current windowed position. - */ - virtual void updateWindowedPos() = 0; + virtual Int32 getCurrentDisplayIndex() const = 0; /** Clear the framebuffer. @@ -554,6 +579,9 @@ class FrameBuffer // Title of the main window/screen string myScreenTitle; + // Type of the frame buffer + BufferType myBufferType{BufferType::None}; + // Number of displays int myNumDisplays{1}; diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index bbaa72aa5..ccf6838cb 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -239,8 +239,7 @@ void OSystem::saveConfig() if(myFrameBuffer) { // Save the last windowed position and display on system shutdown - myFrameBuffer->updateWindowedPos(); - settings().setValue("display", myFrameBuffer->getCurrentDisplayIndex()); + myFrameBuffer->saveCurrentWindowPosition(); Logger::debug("Saving TV effects options ..."); myFrameBuffer->tiaSurface().ntsc().saveConfig(settings()); diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 599c8badf..b0e5cd7a6 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -126,6 +126,8 @@ Settings::Settings() // ROM browser options setPermanent("exitlauncher", "false"); setPermanent("followlauncher", "false"); + setPermanent("launcherpos", Common::Point(50, 50)); + setPermanent("launcherdisplay", 0); setPermanent("launcherres", Common::Size(900, 600)); setPermanent("launcherfont", "medium"); setPermanent("launcherroms", "true"); @@ -137,6 +139,8 @@ Settings::Settings() setPermanent("dbg.res", Common::Size(DebuggerDialog::kMediumFontMinW, DebuggerDialog::kMediumFontMinH)); + setPermanent("dbg.pos", Common::Point(50, 50)); + setPermanent("dbg.display", 0); #endif setPermanent("uipalette", "standard"); setPermanent("hidpi", "false"); @@ -396,8 +400,8 @@ void Settings::usage() const << " -vsync <1|0> Enable 'synchronize to vertical blank interrupt'\n" << " -fullscreen <1|0> Enable fullscreen mode\n" << " -center <1|0> Centers game window in windowed modes\n" - << " -windowedpos Sets the window position in windowed modes\n" - << " -display Sets the display for Stella\n" + << " -windowedpos Sets the window position in windowed emulator mode\n" + << " -display Sets the display for Stella's emulator\n" << " -palette \n" @@ -493,8 +497,10 @@ void Settings::usage() const << " -rominfo Display detailed information for the given ROM\n" << " -listrominfo Display contents of stella.pro, one line per ROM\n" << " entry\n" - << endl + << endl << " -exitlauncher <1|0> On exiting a ROM, go back to the ROM launcher\n" + << " -launcherpos Sets the window position in windowed EOM launcher mode\n" + << " -launcherdisplay Sets the display for the ROM launcher\n" << " -launcherres The resolution to use in ROM launcher mode\n" << " -launcherfont Relocate calls out of address range in\n" << " disassembler\n" << endl + << " -dbg.pos Sets the window position in windowed debugger mode\n" + << " -dbg.display Sets the display for the debugger\n" << " -dbg.res The resolution to use in debugger mode\n" << " -dbg.fontsize \n" diff --git a/src/gui/Launcher.cxx b/src/gui/Launcher.cxx index 379d9841e..315a14f41 100644 --- a/src/gui/Launcher.cxx +++ b/src/gui/Launcher.cxx @@ -59,7 +59,8 @@ Launcher::~Launcher() FBInitStatus Launcher::initializeVideo() { string title = string("Stella ") + STELLA_VERSION; - return myOSystem.frameBuffer().createDisplay(title, myWidth, myHeight); + return myOSystem.frameBuffer().createDisplay(title, FrameBuffer::BufferType::Launcher, + myWidth, myHeight); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 9e28e97a79c333d710010e72769a1aed0775349c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 2 May 2020 16:47:54 +0200 Subject: [PATCH 59/69] Changelog update for "Make windows positioning independent for launcher, emulator and debugger" --- Changes.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Changes.txt b/Changes.txt index c3c0304e1..19905a413 100644 --- a/Changes.txt +++ b/Changes.txt @@ -26,6 +26,8 @@ * Added selectable dialog fonts + * Added separate positioning of launcher, emulator and debugger + * Added option which lets default ROM path follow launcher navigation * Added displaying last write address in the debugger. From 1c8a52aaafaf52f6ccc5c06e4e38fea22febe07b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 2 May 2020 14:39:23 -0230 Subject: [PATCH 60/69] libretro: Fix #625. --- src/libretro/FrameBufferLIBRETRO.hxx | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/libretro/FrameBufferLIBRETRO.hxx b/src/libretro/FrameBufferLIBRETRO.hxx index 6b2035397..4ac6dbb30 100644 --- a/src/libretro/FrameBufferLIBRETRO.hxx +++ b/src/libretro/FrameBufferLIBRETRO.hxx @@ -115,6 +115,21 @@ class FrameBufferLIBRETRO : public FrameBuffer vector& windowedRes, VariantList& renderers) override; + /** + This method is called to query if the current window is not centered or fullscreen. + + @return True, if the current window is positioned + */ + bool isCurrentWindowPositioned() const override { return true; } + + /** + This method is called to query the video hardware for position of + the current window + + @return The position of the currently displayed window + */ + Common::Point getCurrentWindowPos() const override { return Common::Point{}; } + /** This method is called to query the video hardware for the index of the display the current window is displayed on @@ -122,12 +137,7 @@ class FrameBufferLIBRETRO : public FrameBuffer @return the current display index or a negative value if no window is displayed */ - Int32 getCurrentDisplayIndex() override { return 0; } - - /** - This method is called to preserve the last current windowed position. - */ - void updateWindowedPos() override { } + Int32 getCurrentDisplayIndex() const override { return 0; } /** This method is called to change to the given video mode. From 5da15430661e49221022174e14e00d5582af0fa1 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 2 May 2020 16:07:12 -0230 Subject: [PATCH 61/69] Fix warnings from clang. --- src/cheat/CheatCodeDialog.cxx | 1 - src/debugger/gui/DebuggerDialog.hxx | 2 +- src/gui/AboutDialog.cxx | 1 - src/gui/ComboDialog.cxx | 1 - src/gui/CommandDialog.cxx | 3 +-- src/gui/DeveloperDialog.cxx | 17 +++++------------ src/gui/Dialog.cxx | 6 ++---- src/gui/GlobalPropsDialog.cxx | 1 - src/gui/HelpDialog.cxx | 3 +-- src/gui/JoystickDialog.cxx | 2 -- src/gui/LoggerDialog.cxx | 1 - src/gui/OptionsDialog.cxx | 2 +- src/gui/RomAuditDialog.cxx | 2 -- src/gui/RomInfoWidget.cxx | 2 +- 14 files changed, 12 insertions(+), 32 deletions(-) diff --git a/src/cheat/CheatCodeDialog.cxx b/src/cheat/CheatCodeDialog.cxx index 5ce380e0b..09ac1cd3c 100644 --- a/src/cheat/CheatCodeDialog.cxx +++ b/src/cheat/CheatCodeDialog.cxx @@ -42,7 +42,6 @@ CheatCodeDialog::CheatCodeDialog(OSystem& osystem, DialogContainer& parent, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; diff --git a/src/debugger/gui/DebuggerDialog.hxx b/src/debugger/gui/DebuggerDialog.hxx index 2fa007214..b66ae37a6 100644 --- a/src/debugger/gui/DebuggerDialog.hxx +++ b/src/debugger/gui/DebuggerDialog.hxx @@ -71,7 +71,7 @@ class DebuggerDialog : public Dialog ButtonWidget& unwindButton() const { return *myUnwindButton; } void showFatalMessage(const string& msg); - void saveConfig(); + void saveConfig() override; private: void center() override { positionAt(0); } diff --git a/src/gui/AboutDialog.cxx b/src/gui/AboutDialog.cxx index 05db4b695..8393e2009 100644 --- a/src/gui/AboutDialog.cxx +++ b/src/gui/AboutDialog.cxx @@ -34,7 +34,6 @@ AboutDialog::AboutDialog(OSystem& osystem, DialogContainer& parent, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; diff --git a/src/gui/ComboDialog.cxx b/src/gui/ComboDialog.cxx index 524a1a3e2..e8b087c53 100644 --- a/src/gui/ComboDialog.cxx +++ b/src/gui/ComboDialog.cxx @@ -37,7 +37,6 @@ ComboDialog::ComboDialog(GuiObject* boss, const GUI::Font& font, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; diff --git a/src/gui/CommandDialog.cxx b/src/gui/CommandDialog.cxx index 86fc6f8c9..934b9e645 100644 --- a/src/gui/CommandDialog.cxx +++ b/src/gui/CommandDialog.cxx @@ -33,8 +33,7 @@ CommandDialog::CommandDialog(OSystem& osystem, DialogContainer& parent) : Dialog(osystem, parent, osystem.frameBuffer().font(), "Commands") { - const int lineHeight = _font.getLineHeight(), - fontHeight = _font.getFontHeight(), + const int fontHeight = _font.getFontHeight(), fontWidth = _font.getMaxCharWidth(), buttonHeight = _font.getLineHeight() * 1.25, buttonWidth = _font.getStringWidth("Time Machine On") + fontWidth * 2; diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 0bcbe32e6..2dd607a4b 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -54,7 +54,6 @@ DeveloperDialog::DeveloperDialog(OSystem& osystem, DialogContainer& parent, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; @@ -90,8 +89,7 @@ void DeveloperDialog::addEmulationTab(const GUI::Font& font) { const int lineHeight = font.getLineHeight(), fontHeight = font.getFontHeight(), - fontWidth = font.getMaxCharWidth(), - buttonHeight = font.getLineHeight() * 1.25; + fontWidth = font.getMaxCharWidth(); const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; const int INDENT = fontWidth * 2; @@ -197,8 +195,7 @@ void DeveloperDialog::addTiaTab(const GUI::Font& font) { const int lineHeight = font.getLineHeight(), fontHeight = font.getFontHeight(), - fontWidth = font.getMaxCharWidth(), - buttonHeight = font.getLineHeight() * 1.25; + fontWidth = font.getMaxCharWidth(); const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; const int INDENT = fontWidth * 2; @@ -287,8 +284,7 @@ void DeveloperDialog::addVideoTab(const GUI::Font& font) { const int lineHeight = font.getLineHeight(), fontHeight = font.getFontHeight(), - fontWidth = font.getMaxCharWidth(), - buttonHeight = font.getLineHeight() * 1.25; + fontWidth = font.getMaxCharWidth(); const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; const int INDENT = fontWidth * 2; @@ -428,8 +424,7 @@ void DeveloperDialog::addTimeMachineTab(const GUI::Font& font) }; const int lineHeight = font.getLineHeight(), fontHeight = font.getFontHeight(), - fontWidth = font.getMaxCharWidth(), - buttonHeight = font.getLineHeight() * 1.25; + fontWidth = font.getMaxCharWidth(); const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; const int INDENT = fontWidth * 2; @@ -548,11 +543,9 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font) #ifdef DEBUGGER_SUPPORT const int lineHeight = font.getLineHeight(), fontHeight = font.getFontHeight(), - fontWidth = font.getMaxCharWidth(), - buttonHeight = font.getLineHeight() * 1.25; + fontWidth = font.getMaxCharWidth(); const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; VariantList items; diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 0195fa8f9..1cc0b3b8c 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -772,8 +772,7 @@ void Dialog::addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font, const string& okText, const string& cancelText, bool focusOKButton, int buttonWidth) { - const int lineHeight = font.getLineHeight(), - fontWidth = font.getMaxCharWidth(), + const int fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(), buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; @@ -821,8 +820,7 @@ void Dialog::addDefaultsOKCancelBGroup(WidgetArray& wid, const GUI::Font& font, const string& defaultsText, bool focusOKButton) { - const int lineHeight = font.getLineHeight(), - fontWidth = font.getMaxCharWidth(), + const int fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(), buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index d8226a2d5..232968f1c 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -39,7 +39,6 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) buttonHeight = lineHeight * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; diff --git a/src/gui/HelpDialog.cxx b/src/gui/HelpDialog.cxx index 9a0bd2bdd..5c9a6b1d3 100644 --- a/src/gui/HelpDialog.cxx +++ b/src/gui/HelpDialog.cxx @@ -35,7 +35,6 @@ HelpDialog::HelpDialog(OSystem& osystem, DialogContainer& parent, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; @@ -73,7 +72,7 @@ HelpDialog::HelpDialog(OSystem& osystem, DialogContainer& parent, int lwidth = 15 * fontWidth; ypos += lineHeight + VGAP * 2; - for(int i = 0; i < LINES_PER_PAGE; ++i) + for(uInt32 i = 0; i < LINES_PER_PAGE; ++i) { myKey[i] = new StaticTextWidget(this, font, xpos, ypos, lwidth, diff --git a/src/gui/JoystickDialog.cxx b/src/gui/JoystickDialog.cxx index 266822eda..218179e72 100644 --- a/src/gui/JoystickDialog.cxx +++ b/src/gui/JoystickDialog.cxx @@ -39,8 +39,6 @@ JoystickDialog::JoystickDialog(GuiObject* boss, const GUI::Font& font, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; - const int VGAP = fontHeight / 4; // Joystick list xpos = HBORDER; ypos = VBORDER + _th; diff --git a/src/gui/LoggerDialog.cxx b/src/gui/LoggerDialog.cxx index 57a0161fc..f9b05911b 100644 --- a/src/gui/LoggerDialog.cxx +++ b/src/gui/LoggerDialog.cxx @@ -43,7 +43,6 @@ LoggerDialog::LoggerDialog(OSystem& osystem, DialogContainer& parent, buttonHeight = font.getLineHeight() * 1.25; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; const int VGAP = fontHeight / 4; int xpos, ypos; diff --git a/src/gui/OptionsDialog.cxx b/src/gui/OptionsDialog.cxx index 9b8087b34..84ea9f605 100644 --- a/src/gui/OptionsDialog.cxx +++ b/src/gui/OptionsDialog.cxx @@ -54,7 +54,7 @@ OptionsDialog::OptionsDialog(OSystem& osystem, DialogContainer& parent, { // do not show basic settings options in debugger bool minSettings = osystem.settings().getBool("minimal_ui") && mode != Menu::AppMode::debugger; - const int lineHeight = _font.getLineHeight(), + const int fontWidth = _font.getMaxCharWidth(), fontHeight = _font.getFontHeight(), buttonHeight = _font.getLineHeight() * 1.25, diff --git a/src/gui/RomAuditDialog.cxx b/src/gui/RomAuditDialog.cxx index 580263730..890da7e95 100644 --- a/src/gui/RomAuditDialog.cxx +++ b/src/gui/RomAuditDialog.cxx @@ -48,8 +48,6 @@ RomAuditDialog::RomAuditDialog(OSystem& osystem, DialogContainer& parent, lwidth = font.getStringWidth("ROMs without properties (skipped) "); const int VBORDER = _th + fontHeight / 2; const int HBORDER = fontWidth * 1.25; - const int INDENT = fontWidth * 2; - const int VGAP = fontHeight / 4; int xpos, ypos = VBORDER; WidgetArray wid; diff --git a/src/gui/RomInfoWidget.cxx b/src/gui/RomInfoWidget.cxx index c935f54dc..8b1852528 100644 --- a/src/gui/RomInfoWidget.cxx +++ b/src/gui/RomInfoWidget.cxx @@ -205,7 +205,7 @@ void RomInfoWidget::drawWidget(bool hilite) int xpos = _x + 8, ypos = _y + yoff + 5; for(const auto& info : myRomInfo) { - if(info.length() * _font.getMaxCharWidth() <= _w - 16) + if(info.length() * _font.getMaxCharWidth() <= uInt64(_w - 16)) { // 1 line for next entry From 6363ebaf0a44078c468ca0a663934c0933e6cdec Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 2 May 2020 16:12:56 -0230 Subject: [PATCH 62/69] libretro: Fix Makefile for recent cart refactoring. --- src/libretro/Makefile.common | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libretro/Makefile.common b/src/libretro/Makefile.common index 34268a29d..616504e1a 100644 --- a/src/libretro/Makefile.common +++ b/src/libretro/Makefile.common @@ -37,10 +37,14 @@ SOURCES_CXX := \ $(CORE_DIR)/emucore/AtariVox.cxx \ $(CORE_DIR)/emucore/Bankswitch.cxx \ $(CORE_DIR)/emucore/Booster.cxx \ + $(CORE_DIR)/emucore/Cart.cxx \ + $(CORE_DIR)/emucore/CartDetector.cxx \ + $(CORE_DIR)/emucore/CartEnhanced.o \ $(CORE_DIR)/emucore/Cart0840.cxx \ $(CORE_DIR)/emucore/Cart2K.cxx \ $(CORE_DIR)/emucore/Cart3E.cxx \ $(CORE_DIR)/emucore/Cart3EPlus.cxx \ + $(CORE_DIR)/emucore/Cart3EX.cxx \ $(CORE_DIR)/emucore/Cart3F.cxx \ $(CORE_DIR)/emucore/Cart4A50.cxx \ $(CORE_DIR)/emucore/Cart4K.cxx \ @@ -53,10 +57,6 @@ SOURCES_CXX := \ $(CORE_DIR)/emucore/CartCM.cxx \ $(CORE_DIR)/emucore/CartCTY.cxx \ $(CORE_DIR)/emucore/CartCV.cxx \ - $(CORE_DIR)/emucore/CartCVPlus.cxx \ - $(CORE_DIR)/emucore/Cart.cxx \ - $(CORE_DIR)/emucore/CartDASH.cxx \ - $(CORE_DIR)/emucore/CartDetector.cxx \ $(CORE_DIR)/emucore/CartDF.cxx \ $(CORE_DIR)/emucore/CartDFSC.cxx \ $(CORE_DIR)/emucore/CartDPC.cxx \ From 8525c605f46817ef8bb0addb74c91d727e6f963b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 2 May 2020 18:15:27 -0230 Subject: [PATCH 63/69] Fix crash in cart autodetect; if we can't find a match, use 4K. --- src/emucore/CartDetector.cxx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 8544a72f0..7eb8bb0e5 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -531,8 +531,6 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) type = Bankswitch::Type::_3F; - else - type = Bankswitch::Type::_4K; // Most common bankswitching type } // Variable sized ROM formats are independent of image size and come last @@ -541,8 +539,11 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si else if(isProbablyMDM(image, size)) type = Bankswitch::Type::_MDM; - ostringstream ss; + // If we get here and autodetection failed, then we force '4K' + if(type == Bankswitch::Type::_AUTO) + type = Bankswitch::Type::_4K; // Most common bankswitching type + ostringstream ss; ss << "Bankswitching type '" << Bankswitch::typeToDesc(type) << "' detected"; Logger::debug(ss.str()); From 9685887833244a8ab3e64e3bd213122491c6f21b Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 3 May 2020 08:45:15 +0200 Subject: [PATCH 64/69] fixed 3E bankswitching --- src/emucore/Cart3E.cxx | 15 +++++++++++++++ src/emucore/Cart3E.hxx | 9 +++++++++ src/emucore/CartEnhanced.cxx | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index 642ac6ce1..be69d105d 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -71,3 +71,18 @@ uInt8 Cartridge3E::peek(uInt16 address) return CartridgeEnhanced::peek(peekAddress); } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Cartridge3E::poke(uInt16 address, uInt8 value) +{ + uInt16 pokeAddress = address; + address &= ROM_MASK; + + if(address < 0x0040) // TIA access + { + checkSwitchBank(address, value); + return mySystem->tia().poke(address, value); + } + + return CartridgeEnhanced::poke(pokeAddress, value); +} diff --git a/src/emucore/Cart3E.hxx b/src/emucore/Cart3E.hxx index 613fa610c..f2ead51f5 100644 --- a/src/emucore/Cart3E.hxx +++ b/src/emucore/Cart3E.hxx @@ -113,6 +113,15 @@ class Cartridge3E : public CartridgeEnhanced */ uInt8 peek(uInt16 address) override; + /** + Change the byte at the specified address to the given value + + @param address The address where the value should be stored + @param value The value to be stored at the address + @return True if the poke changed the device address space, else false + */ + bool poke(uInt16 address, uInt8 value) override; + private: bool checkSwitchBank(uInt16 address, uInt8 value) override; diff --git a/src/emucore/CartEnhanced.cxx b/src/emucore/CartEnhanced.cxx index d5ccf6591..f5c38c9a3 100644 --- a/src/emucore/CartEnhanced.cxx +++ b/src/emucore/CartEnhanced.cxx @@ -232,7 +232,7 @@ bool CartridgeEnhanced::bank(uInt16 bank, uInt16 segment) uInt32 bankOffset = uInt32(mySize) + (ramBank << (myBankShift - 1)); // Remember what bank is in this segment - myCurrentSegOffset[segment] = bank << myBankShift; + myCurrentSegOffset[segment] = uInt32(mySize) + (ramBank << myBankShift); // Set the page accessing method for the RAM writing pages uInt16 fromAddr = (ROM_OFFSET + segmentOffset + myWriteOffset) & ~System::PAGE_MASK; From 370d4365509c67858eb2cf0f5b923e4d769cc37e Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 4 May 2020 09:34:33 +0200 Subject: [PATCH 65/69] add properties for test ROM "spin4a50" --- src/emucore/DefProps.hxx | 3 ++- src/emucore/stella.pro | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 36db315de..fc0fe6155 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -static constexpr uInt32 DEF_PROPS_SIZE = 3513; +static constexpr uInt32 DEF_PROPS_SIZE = 3514; static const BSPF::array2D DefProps = {{ { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -341,6 +341,7 @@ static const BSPF::array2D DefProps = {{ { "15fe28d0c8893be9223e8cb2d032e557", "", "", "Towering Inferno (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "1619bc27632f9148d8480cd813aa74c3", "Thomas Jentzsch", "", "Steeple Chase (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "161ded4a85d3c78e44fffd40426f537f", "Thomas Jentzsch", "", "JtzBall (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "16229d61d7b0c89b01853660a8da22bb", "", "", "spin4a50", "", "", "", "", "4A50", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "163e7e757e2dc44469123ff0e5daec5e", "", "", "Many Blue Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "169d4c7bd3a4d09e184a3b993823d048", "", "", "Superman (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "16cb43492987d2f32b423817cdaaf7c4", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 4c589fe72..8b783bba4 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -1900,6 +1900,11 @@ "Cart.Name" "JtzBall (Alpha) (TJ)" "" +"Cart.MD5" "16229d61d7b0c89b01853660a8da22bb" +"Cart.Name" "spin4a50" +"Cart.Type" "4A50" +"" + "Cart.MD5" "163e7e757e2dc44469123ff0e5daec5e" "Cart.Name" "Many Blue Bars and Text Demo 2 (PD)" "" From d9770ea260173b176a71f21e4c40c5f5ac3625c8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 4 May 2020 09:46:04 +0200 Subject: [PATCH 66/69] small optimizations of detection code --- src/emucore/CartDetector.cxx | 91 ++++++++++++++++++------------------ src/emucore/CartDetector.hxx | 9 +++- 2 files changed, 53 insertions(+), 47 deletions(-) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 7eb8bb0e5..6c68bf6e4 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -374,8 +374,8 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si { 0x8D, 0xF9, 0x1F }, // STA $1FF9 { 0x8D, 0xF9, 0xFF } // STA $FFF9 }; - bool f8 = searchForBytes(image.get(), size, signature[0], 3, 2) || - searchForBytes(image.get(), size, signature[1], 3, 2); + bool f8 = searchForBytes(image, size, signature[0], 3, 2) || + searchForBytes(image, size, signature[1], 3, 2); if(isProbablySC(image, size)) type = Bankswitch::Type::_F8SC; @@ -507,7 +507,7 @@ Bankswitch::Type CartDetector::autodetectType(const ByteBuffer& image, size_t si type = Bankswitch::Type::_3F; else if(isProbably4A50(image, size)) type = Bankswitch::Type::_4A50; - else if(isProbablySB(image, size)) + else /*if(isProbablySB(image, size))*/ type = Bankswitch::Type::_SB; } else if(size == 256_KB) @@ -556,26 +556,25 @@ bool CartDetector::searchForBytes(const uInt8* image, size_t imagesize, uInt32 minhits) { uInt32 count = 0; + for(uInt32 i = 0; i < imagesize - sigsize; ++i) { - uInt32 matches = 0; - for(uInt32 j = 0; j < sigsize; ++j) + uInt32 j; + + for(j = 0; j < sigsize; ++j) { - if(image[i+j] == signature[j]) - ++matches; - else + if(image[i + j] != signature[j]) break; } - if(matches == sigsize) + if(j == sigsize) { - ++count; + if(++count == minhits) + break; i += sigsize; // skip past this signature 'window' entirely } - if(count >= minhits) - break; } - return (count >= minhits); + return (count == minhits); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -604,10 +603,10 @@ bool CartDetector::isProbablyARM(const ByteBuffer& image, size_t size) { 0xA0, 0xC1, 0x1F, 0xE0 }, { 0x00, 0x80, 0x02, 0xE0 } }; - if(searchForBytes(image.get(), std::min(size, 1_KB), signature[0], 4, 1)) + if(searchForBytes(image, std::min(size, 1_KB), signature[0], 4)) return true; else - return searchForBytes(image.get(), std::min(size, 1_KB), signature[1], 4, 1); + return searchForBytes(image, std::min(size, 1_KB), signature[1], 4); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -621,7 +620,7 @@ bool CartDetector::isProbably0840(const ByteBuffer& image, size_t size) { 0x2C, 0x00, 0x08 } // BIT $0800 }; for(uInt32 i = 0; i < 3; ++i) - if(searchForBytes(image.get(), size, signature1[i], 3, 2)) + if(searchForBytes(image, size, signature1[i], 3, 2)) return true; uInt8 signature2[2][4] = { @@ -629,7 +628,7 @@ bool CartDetector::isProbably0840(const ByteBuffer& image, size_t size) { 0x0C, 0xFF, 0x0F, 0x4C } // NOP $0FFF; JMP ... }; for(uInt32 i = 0; i < 2; ++i) - if(searchForBytes(image.get(), size, signature2[i], 4, 2)) + if(searchForBytes(image, size, signature2[i], 4, 2)) return true; return false; @@ -646,8 +645,8 @@ bool CartDetector::isProbably3E(const ByteBuffer& image, size_t size) uInt8 signature1[] = { 0x85, 0x3E }; // STA $3E uInt8 signature2[] = { 0x85, 0x3F }; // STA $3F - return searchForBytes(image.get(), size, signature1, 2, 1) - && searchForBytes(image.get(), size, signature2, 2, 2); + return searchForBytes(image, size, signature1, 2) + && searchForBytes(image, size, signature2, 2, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -655,7 +654,7 @@ bool CartDetector::isProbably3EX(const ByteBuffer& image, size_t size) { // 3EX cart have at least 2 occurrences of the string "3EX" uInt8 _3EX[] = { '3', 'E', 'X'}; - return searchForBytes(image.get(), size, _3EX, 3, 2); + return searchForBytes(image, size, _3EX, 3, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -663,7 +662,7 @@ bool CartDetector::isProbably3EPlus(const ByteBuffer& image, size_t size) { // 3E+ cart is identified key 'TJ3E' in the ROM uInt8 tj3e[] = { 'T', 'J', '3', 'E' }; - return searchForBytes(image.get(), size, tj3e, 4, 1); + return searchForBytes(image, size, tj3e, 4); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -674,7 +673,7 @@ bool CartDetector::isProbably3F(const ByteBuffer& image, size_t size) // We expect it will be present at least 2 times, since there are // at least two banks uInt8 signature[] = { 0x85, 0x3F }; // STA $3F - return searchForBytes(image.get(), size, signature, 2, 2); + return searchForBytes(image, size, signature, 2, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -720,12 +719,12 @@ bool CartDetector::isProbablyBF(const ByteBuffer& image, size_t size, // This signature is attributed to "RevEng" of AtariAge uInt8 bf[] = { 'B', 'F', 'B', 'F' }; uInt8 bfsc[] = { 'B', 'F', 'S', 'C' }; - if(searchForBytes(image.get()+size-8, 8, bf, 4, 1)) + if(searchForBytes(image.get()+size-8, 8, bf, 4)) { type = Bankswitch::Type::_BF; return true; } - else if(searchForBytes(image.get()+size-8, 8, bfsc, 4, 1)) + else if(searchForBytes(image.get()+size-8, 8, bfsc, 4)) { type = Bankswitch::Type::_BFSC; return true; @@ -741,7 +740,7 @@ bool CartDetector::isProbablyBUS(const ByteBuffer& image, size_t size) // Note: all Harmony/Melody custom drivers also contain the value // 0x10adab1e (LOADABLE) if needed for future improvement uInt8 bus[] = { 'B', 'U', 'S'}; - return searchForBytes(image.get(), size, bus, 3, 2); + return searchForBytes(image, size, bus, 3, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -751,14 +750,14 @@ bool CartDetector::isProbablyCDF(const ByteBuffer& image, size_t size) // Note: all Harmony/Melody custom drivers also contain the value // 0x10adab1e (LOADABLE) if needed for future improvement uInt8 cdf[] = { 'C', 'D', 'F' }; - return searchForBytes(image.get(), size, cdf, 3, 3); + return searchForBytes(image, size, cdf, 3, 3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyCTY(const ByteBuffer& image, size_t size) { uInt8 lenin[] = { 'L', 'E', 'N', 'I', 'N' }; - return searchForBytes(image.get(), size, lenin, 5, 1); + return searchForBytes(image, size, lenin, 5); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -770,10 +769,10 @@ bool CartDetector::isProbablyCV(const ByteBuffer& image, size_t size) { 0x9D, 0xFF, 0xF3 }, // STA $F3FF.X { 0x99, 0x00, 0xF4 } // STA $F400.Y }; - if(searchForBytes(image.get(), size, signature[0], 3, 1)) + if(searchForBytes(image, size, signature[0], 3)) return true; else - return searchForBytes(image.get(), size, signature[1], 3, 1); + return searchForBytes(image, size, signature[1], 3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -785,12 +784,12 @@ bool CartDetector::isProbablyDF(const ByteBuffer& image, size_t size, // This signature is attributed to "RevEng" of AtariAge uInt8 df[] = { 'D', 'F', 'D', 'F' }; uInt8 dfsc[] = { 'D', 'F', 'S', 'C' }; - if(searchForBytes(image.get()+size-8, 8, df, 4, 1)) + if(searchForBytes(image.get()+size-8, 8, df, 4)) { type = Bankswitch::Type::_DF; return true; } - else if(searchForBytes(image.get()+size-8, 8, dfsc, 4, 1)) + else if(searchForBytes(image.get()+size-8, 8, dfsc, 4)) { type = Bankswitch::Type::_DFSC; return true; @@ -806,7 +805,7 @@ bool CartDetector::isProbablyDPCplus(const ByteBuffer& image, size_t size) // Note: all Harmony/Melody custom drivers also contain the value // 0x10adab1e (LOADABLE) if needed for future improvement uInt8 dpcp[] = { 'D', 'P', 'C', '+' }; - return searchForBytes(image.get(), size, dpcp, 4, 2); + return searchForBytes(image, size, dpcp, 4, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -829,7 +828,7 @@ bool CartDetector::isProbablyE0(const ByteBuffer& image, size_t size) { 0xAD, 0xF3, 0xBF } // LDA $BFF3 }; for(uInt32 i = 0; i < 8; ++i) - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) return true; return false; @@ -854,7 +853,7 @@ bool CartDetector::isProbablyE7(const ByteBuffer& image, size_t size) { 0x8D, 0xE7, 0x1F } // STA $1FE7 }; for(uInt32 i = 0; i < 7; ++i) - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) return true; return false; @@ -873,7 +872,7 @@ bool CartDetector::isProbablyE78K(const ByteBuffer& image, size_t size) { 0xAD, 0xE6, 0xFF }, // LDA $FFE6 }; for(uInt32 i = 0; i < 3; ++i) - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) return true; return false; @@ -887,12 +886,12 @@ bool CartDetector::isProbablyEF(const ByteBuffer& image, size_t size, // This signature is attributed to "RevEng" of AtariAge uInt8 efef[] = { 'E', 'F', 'E', 'F' }; uInt8 efsc[] = { 'E', 'F', 'S', 'C' }; - if(searchForBytes(image.get()+size-8, 8, efef, 4, 1)) + if(searchForBytes(image.get()+size-8, 8, efef, 4)) { type = Bankswitch::Type::_EF; return true; } - else if(searchForBytes(image.get()+size-8, 8, efsc, 4, 1)) + else if(searchForBytes(image.get()+size-8, 8, efsc, 4)) { type = Bankswitch::Type::_EFSC; return true; @@ -910,7 +909,7 @@ bool CartDetector::isProbablyEF(const ByteBuffer& image, size_t size, }; for(uInt32 i = 0; i < 4; ++i) { - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) { isEF = true; break; @@ -953,7 +952,7 @@ bool CartDetector::isProbablyFC(const ByteBuffer& image, size_t size) { 0x8c, 0xf9, 0xff, 0xad, 0xfc, 0xff } // STY $FFF9, LDA $FFFC 3-D Havoc }; for(uInt32 i = 0; i < 3; ++i) - if(searchForBytes(image.get(), size, signature[i], 6, 1)) + if(searchForBytes(image, size, signature[i], 6)) return true; return false; @@ -972,7 +971,7 @@ bool CartDetector::isProbablyFE(const ByteBuffer& image, size_t size) { 0x20, 0x00, 0xF0, 0x84, 0xD6 } // JSR $F000; $84, $D6 }; for(uInt32 i = 0; i < 4; ++i) - if(searchForBytes(image.get(), size, signature[i], 5, 1)) + if(searchForBytes(image, size, signature[i], 5)) return true; return false; @@ -983,7 +982,7 @@ bool CartDetector::isProbablyMDM(const ByteBuffer& image, size_t size) { // MDM cart is identified key 'MDMC' in the first 8K of ROM uInt8 mdmc[] = { 'M', 'D', 'M', 'C' }; - return searchForBytes(image.get(), std::min(size, 8_KB), mdmc, 4, 1); + return searchForBytes(image, std::min(size, 8_KB), mdmc, 4); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -994,10 +993,10 @@ bool CartDetector::isProbablySB(const ByteBuffer& image, size_t size) { 0xBD, 0x00, 0x08 }, // LDA $0800,x { 0xAD, 0x00, 0x08 } // LDA $0800 }; - if(searchForBytes(image.get(), size, signature[0], 3, 1)) + if(searchForBytes(image, size, signature[0], 3)) return true; else - return searchForBytes(image.get(), size, signature[1], 3, 1); + return searchForBytes(image, size, signature[1], 3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1016,7 +1015,7 @@ bool CartDetector::isProbablyUA(const ByteBuffer& image, size_t size) { 0xAD, 0xC0, 0x02 } // LDA $2C0 (Mickey) }; for(uInt32 i = 0; i < 6; ++i) - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) return true; return false; @@ -1029,7 +1028,7 @@ bool CartDetector::isProbablyWD(const ByteBuffer& image, size_t size) uInt8 signature[1][3] = { { 0xA5, 0x39, 0x4C } // LDA $39, JMP }; - return searchForBytes(image.get(), size, signature[0], 3, 1); + return searchForBytes(image, size, signature[0], 3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1045,7 +1044,7 @@ bool CartDetector::isProbablyX07(const ByteBuffer& image, size_t size) { 0x0C, 0x2D, 0x08 } // NOP $082D }; for(uInt32 i = 0; i < 6; ++i) - if(searchForBytes(image.get(), size, signature[i], 3, 1)) + if(searchForBytes(image, size, signature[i], 3)) return true; return false; diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index 8dc734b42..706731b0f 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -107,7 +107,14 @@ class CartDetector */ static bool searchForBytes(const uInt8* image, size_t imagesize, const uInt8* signature, uInt32 sigsize, - uInt32 minhits); + uInt32 minhits = 1); + + static bool searchForBytes(const ByteBuffer& image, size_t imagesize, + const uInt8* signature, uInt32 sigsize, + uInt32 minhits = 1) + { + return searchForBytes(image.get(), imagesize, signature, sigsize, minhits); + } /** Returns true if the image is probably a SuperChip (128 bytes RAM) From d0276ad4e45d9ebbb8e6e400f2ae971bb86a3470 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 4 May 2020 10:28:46 +0200 Subject: [PATCH 67/69] minor UI alignment fixes --- src/gui/EventMappingWidget.cxx | 2 +- src/gui/InputDialog.cxx | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/gui/EventMappingWidget.cxx b/src/gui/EventMappingWidget.cxx index bb4088173..8051e4a56 100644 --- a/src/gui/EventMappingWidget.cxx +++ b/src/gui/EventMappingWidget.cxx @@ -86,7 +86,7 @@ EventMappingWidget::EventMappingWidget(GuiObject* boss, const GUI::Font& font, addFocusWidget(myActionsList); // Add remap, erase, cancel and default buttons - xpos = _w - HBORDER - buttonWidth; + xpos = _w - HBORDER - buttonWidth + 2; myMapButton = new ButtonWidget(boss, font, xpos, ypos, buttonWidth, buttonHeight, "Map" + ELLIPSIS, kStartMapCmd); diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index bfa914c63..03cedb644 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -54,7 +54,7 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent, // Set real dimensions setSize(50 * fontWidth + HBORDER * 2, - _th + VGAP * 3 + lineHeight + 13 * (lineHeight + VGAP) + VGAP * 7 + buttonHeight + VBORDER * 3, + _th + VGAP * 3 + lineHeight + 13 * (lineHeight + VGAP) + VGAP * 8 + buttonHeight + VBORDER * 3, max_w, max_h); // The tab widget @@ -68,7 +68,7 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent, tabID = myTab->addTab(" Emul. Events ", TabWidget::AUTO_WIDTH); myEmulEventMapper = new EventMappingWidget(myTab, _font, 2, 2, myTab->getWidth(), - myTab->getHeight() - 4, + myTab->getHeight() - VGAP, EventMode::kEmulationMode); myTab->setParentWidget(tabID, myEmulEventMapper); addToFocusList(myEmulEventMapper->getFocusList(), myTab, tabID); @@ -77,7 +77,7 @@ InputDialog::InputDialog(OSystem& osystem, DialogContainer& parent, tabID = myTab->addTab(" UI Events ", TabWidget::AUTO_WIDTH); myMenuEventMapper = new EventMappingWidget(myTab, _font, 2, 2, myTab->getWidth(), - myTab->getHeight() - 4, + myTab->getHeight() - VGAP, EventMode::kMenuMode); myTab->setParentWidget(tabID, myMenuEventMapper); addToFocusList(myMenuEventMapper->getFocusList(), myTab, tabID); @@ -108,7 +108,8 @@ void InputDialog::addDevicePortTab() { const int lineHeight = _font.getLineHeight(), fontWidth = _font.getMaxCharWidth(), - fontHeight = _font.getFontHeight(); + fontHeight = _font.getFontHeight(), + buttonHeight = _font.getLineHeight() * 1.25; const int VGAP = fontHeight / 4; const int VBORDER = fontHeight / 2; const int HBORDER = fontWidth * 1.25; @@ -213,26 +214,26 @@ void InputDialog::addDevicePortTab() // Add EEPROM erase (part 1/2) ypos += VGAP * 3; fwidth = _font.getStringWidth("AtariVox/SaveKey"); - lwidth = _font.getStringWidth("AtariVox/SaveKey"); - new StaticTextWidget(myTab, _font, _w - HBORDER - 4 - (fwidth + lwidth) / 2, ypos, + new StaticTextWidget(myTab, _font, _w - HBORDER - 2 - fwidth, ypos, "AtariVox/SaveKey"); // Show joystick database ypos += lineHeight; - myJoyDlgButton = new ButtonWidget(myTab, _font, HBORDER, ypos, 20, + lwidth = _font.getStringWidth("Joystick Database" + ELLIPSIS) + fontWidth * 2.5; + myJoyDlgButton = new ButtonWidget(myTab, _font, HBORDER, ypos, lwidth, buttonHeight, "Joystick Database" + ELLIPSIS, kDBButtonPressed); wid.push_back(myJoyDlgButton); // Add EEPROM erase (part 1/2) - myEraseEEPROMButton = new ButtonWidget(myTab, _font, _w - HBORDER - 4 - fwidth, ypos, - fwidth, lineHeight+4, + myEraseEEPROMButton = new ButtonWidget(myTab, _font, _w - HBORDER - 2 - fwidth, ypos, + fwidth, buttonHeight, "Erase EEPROM", kEEButtonPressed); wid.push_back(myEraseEEPROMButton); // Add AtariVox serial port ypos += lineHeight + VGAP * 2; lwidth = _font.getStringWidth("AVox serial port "); - fwidth = _w - HBORDER * 2 - 4 - lwidth; + fwidth = _w - HBORDER * 2 - 2 - lwidth; new StaticTextWidget(myTab, _font, HBORDER, ypos + 2, "AVox serial port "); myAVoxPort = new EditTextWidget(myTab, _font, HBORDER + lwidth, ypos, fwidth, fontHeight); From a2e5204835d3a090b917597cee76d559ccb2d0ea Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 4 May 2020 12:25:43 -0230 Subject: [PATCH 68/69] libretro: Fix #627. --- src/libretro/Makefile.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libretro/Makefile.common b/src/libretro/Makefile.common index 616504e1a..1893fa57b 100644 --- a/src/libretro/Makefile.common +++ b/src/libretro/Makefile.common @@ -39,7 +39,7 @@ SOURCES_CXX := \ $(CORE_DIR)/emucore/Booster.cxx \ $(CORE_DIR)/emucore/Cart.cxx \ $(CORE_DIR)/emucore/CartDetector.cxx \ - $(CORE_DIR)/emucore/CartEnhanced.o \ + $(CORE_DIR)/emucore/CartEnhanced.cxx \ $(CORE_DIR)/emucore/Cart0840.cxx \ $(CORE_DIR)/emucore/Cart2K.cxx \ $(CORE_DIR)/emucore/Cart3E.cxx \ From f3f06179407ca9528d1c16cccb0582c4f1cd7c87 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 4 May 2020 14:19:02 -0230 Subject: [PATCH 69/69] Added '_scanend' pseudo-register to track scanlines at end of last frame. Fixes #624. --- Changes.txt | 3 +++ docs/debugger.html | 1 + src/debugger/Debugger.cxx | 5 +++-- src/debugger/Debugger.hxx | 2 +- src/yacc/YaccParser.cxx | 4 +++- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Changes.txt b/Changes.txt index 2fe5ad2b5..2fb02da2b 100644 --- a/Changes.txt +++ b/Changes.txt @@ -40,6 +40,9 @@ * Removed unused CV+ and DASH bank switching types. + * Added debugger pseudo-register '_scanend', which gives the number of + scanlines at the end of the last frame. + -Have fun! diff --git a/docs/debugger.html b/docs/debugger.html index 4f0c1cf6f..91e71bd47 100644 --- a/docs/debugger.html +++ b/docs/debugger.html @@ -755,6 +755,7 @@ that holds 'number of scanlines' on an actual console).

+ diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index 6f5078228..b46570a6a 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -875,7 +875,7 @@ std::array Debugger::ourBuiltinFunctions = { { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Names are defined here, but processed in YaccParser -std::array Debugger::ourPseudoRegisters = { { +std::array Debugger::ourPseudoRegisters = { { // Debugger::PseudoRegister Debugger::ourPseudoRegisters[NUM_PSEUDO_REGS] = { { "_bank", "Currently selected bank" }, { "_cclocks", "Color clocks on current scanline" }, @@ -883,8 +883,9 @@ std::array Debugger::ourPseudoRegisters = { { { "_cycleslo", "Lower 32 bits of number of cycles since emulation started" }, { "_fcount", "Number of frames since emulation started" }, { "_fcycles", "Number of cycles since frame started" }, - { "_icycles", "Number of cycles of last instruction" }, + { "_icycles", "Number of cycles of last instruction" }, { "_scan", "Current scanline count" }, + { "_scanend", "Scanline count at end of last frame" }, { "_scycles", "Number of cycles in current scanline" }, { "_vblank", "Whether vertical blank is enabled (1 or 0)" }, { "_vsync", "Whether vertical sync is enabled (1 or 0)" } diff --git a/src/debugger/Debugger.hxx b/src/debugger/Debugger.hxx index 2b0ce6c1c..d063f2e90 100644 --- a/src/debugger/Debugger.hxx +++ b/src/debugger/Debugger.hxx @@ -363,7 +363,7 @@ class Debugger : public DialogContainer string name, help; }; static std::array ourBuiltinFunctions; - static std::array ourPseudoRegisters; + static std::array ourPseudoRegisters; private: // rewind/unwind n states diff --git a/src/yacc/YaccParser.cxx b/src/yacc/YaccParser.cxx index 82163c433..8bc728ca0 100644 --- a/src/yacc/YaccParser.cxx +++ b/src/yacc/YaccParser.cxx @@ -234,7 +234,9 @@ TiaMethod getTiaSpecial(char* ch) { if(BSPF::equalsIgnoreCase(ch, "_scan")) return &TIADebug::scanlines; - if(BSPF::equalsIgnoreCase(ch, "_scycles")) + else if(BSPF::equalsIgnoreCase(ch, "_scanend")) + return &TIADebug::scanlinesLastFrame; + else if(BSPF::equalsIgnoreCase(ch, "_scycles")) return &TIADebug::cyclesThisLine; else if(BSPF::equalsIgnoreCase(ch, "_fcount")) return &TIADebug::frameCount;
Cartridge.Name:
128IN1 ¹256/512K Multicart .128, .128N1
2K 32-2048 byte Atari .2K
3E 32K Tigervision .3E
3E+ 3E+ (TJ modified DASH) .3EP, .3E+
3E+ 3E+ (TJ modified 3E) .3EP, .3E+
3F 512K Tigervision .3F
4A50 ²64K 4A50 + RAM .4A5, .4A50
4K 4K Atari .4K
CM ¹Spectravideo CompuMate .CM
CTY ²CDW - Chetiry .CTY
CV CommaVid extra RAM .CV
DASH Boulder Dash 2 .DAS, .DASH
DF CPUWIZ 128K .DF
DFSC CPUWIZ 128K + RAM.DFS, .DFSC
DPC Pitfall II .DPC
Control + i
Toggle 'Turbo' modeControl + tControl + t
Toggle sound on/off Control + ]Control the emulation speed (as a percentage, 10 - 1000).
-turbo <1|0>
Enable 'Turbo' mode for maximum emulation speed.
-uimessages <1|0>
Enable or disable display of message in the UI. Note that messages @@ -2063,29 +2074,29 @@ Set the pitch o f Pitfall II music.
-tia.zoom <zoom>
Use the specified zoom level (integer) while in TIA/emulation mode. -
-tia.zoom <zoom>
Use the specified zoom level (integer) while in TIA/emulation mode. +
-tia.vsizeadjust <-5 - 5>
Adjust the display height of the TIA image -
-tia.vsizeadjust <-5 - 5>
Adjust the display height of the TIA image +
-tia.inter <1|0>
Use interpolation for the TIA image (results in blending/smoothing - of the image).
-tia.inter <1|0>
Use interpolation for the TIA image (results in blending/smoothing + of the image).
-tia.fs_stretch <1|0>
Stretch TIA image completely while in fullscreen mode, vs. keeping the correct - aspect ratio.
-tia.fs_stretch <1|0>
Stretch TIA image completely while in fullscreen mode, vs. keeping the correct + aspect ratio.
-tia.fs_overscan <0 - 10>
32IN1 ¹64-128K Multicart (32 games) .32N, .32N1
64IN1 ¹64/128K Multicart .64N, .64N1
128IN1 ¹256/512K Multicart .128, .128N1
2K 32-2048 byte Atari .2K
3E 32K Tigervision .3E
2K 32-2048 bytes Atari .2K
3E 512K Tigervision + 32K RAM.3E
3EX 512K Tigervision + 256K RAM.3EX
3E+ 3E+ (TJ modified 3E) .3EP, .3E+
3F 512K Tigervision .3F
4A50 ²64K 4A50 + RAM .4A5, .4A50
FC Amiga Power Play Aracde 16/32K .FC
FE 8K Decathlon .FE
MDM Menu Driven Megacart .MDM
SB 128-256k SUPERbanking .SB
SB 128-256K SUPERbanking .SB
UA 8K UA Ltd. .UA
UASW 8K UA Ltd. (swapped banks).UASW
WD Wickstead Design (Pink Panther) .WD
Centers game window (if possible).
-windowedpos <WxH>
Sets the window position in windowed emulator mode.
-display <number>
Sets the display for Stella's emulator.
-palette <standard|z26|user>
Set the palette to either normal Stella, the one used in the z26 @@ -2376,6 +2386,16 @@ launcher only happens when started with the launcher).
-launcherpos <WxH>
Sets the window position in windowed ROM launcher mode.
-launcherdisplay <number>
Sets the display for the ROM launcher.
-launcherres <WxH>
Set the size of the ROM launcher.Relocate calls out of address range in the disassembler.
-dbg.pos <WxH>
Sets the window position in windowed debugger mode.
-dbg.display <number>
Sets the display for the debugger.
-dbg.res <WxH>
Set the size of the debugger window.
_fcycles Number of cycles since frame started
_icycles Number of cycles of last instruction
_scan Current scanline count
_scanend Scanline count at end of last frame
_scycles Number of cycles in current scanline
_vblank Whether vertical blank is enabled (1 or 0)
_vsync Whether vertical sync is enabled (1 or 0)

x zh`tXblLO3(#zwraU>pvMC0~DwzSA#*z`vvS&o;~4A6n*G*4GUUomgL4xxn${lfy6u zvumTvZ1~HCSMp!E@E5$9@s{l5dVkWH{45&V-1P@+%(8O_4vZX|{*O;|JiTJiEa$k9 ky|(|FZw%=8`QF?z4-au``iER=Zqn<70ou3b=3?dl0iNfd`v3p{ literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Galaxian by Jess Ragan (Enhanced Graphics).a26 b/test/roms/bankswitching/F8/Galaxian by Jess Ragan (Enhanced Graphics).a26 new file mode 100644 index 0000000000000000000000000000000000000000..f07a72755397699399de0eddfd1dd9f47577864b GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Gravitar (1988) (Atari) [!].a26 b/test/roms/bankswitching/F8/Gravitar (1988) (Atari) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..9dbd14cdf7e0c163ea89304035ce05dc8151882c GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Gravitar (1988) (Atari) [a1][!].a26 b/test/roms/bankswitching/F8/Gravitar (1988) (Atari) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..bee28da5470d53dedf477ea32e6ec48684c08326 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [!].a26 b/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..322c3146a9b34073e9aaceb1940db876a3df1b78 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26 b/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) (PAL) [a2][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..93e44d84e2c79ac7610ef63abc67e4904d601584 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [!].a26 b/test/roms/bankswitching/F8/H.E.R.O. (1984) (Activision) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..4242bd9adebcddb55d67894fca15174fef13b037 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/H.E.R.O. (1984) (CCE).a26 b/test/roms/bankswitching/F8/H.E.R.O. (1984) (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..af262b9bbd863fb2026d32fa0821413eb0d4e481 GIT binary patch literal 8192 zcma($4R{k(wv)+!NSmPr8fa)kH|?gSc5B6M#oE>iyrnzz74Y%Yb^9s;A4Oy<>mvI4 zXj*e)z(oVIQE01;*-p1pK~f>GC8Wj$BB`zneoq8jN_5xIc3B;%{0HWpJ1L6$t^2)` zWbVD^oO|xM_ndp@oSTjLS4FSbY9<7Nh!8x<$x0CEBSsCr_(FpYpx)-D5a~A8z2W_R zC)@RhZjPFqk~(GTv^3*%b48uaMVRY|3L8Ak6+{KGlfWR8$w-ov%M}WRQmN9)*FOPU?{D{~54vmaN zb*^u`len{PG%!G2E0ojEo!D(B`Rj;8d6sv^w&^+18i>}N>J zi6}S_)SgjxqS+XSG{IFvC@J{ZQ1-hh85c*8VSqa0$Q*GfxW`a7>qC0a)4lGl_r_5E zm_vi|==CSInh0SoQs>G9Tkkex>WcZ_K!;eR@*DJx|3mbu|9!+b{qOYjx*f?~L8L}` zj-)QRBOmyWVtz*edi)6){Kt@v4Y>c}^dAM@UiX;9szDjKGG2i)1QIhlf%gQ0^#K-h zE)U;uY^$08)o)`1h1kFVe*;m-?8Nixb%U&oDwhe181tr}*-m?4OUW09x+6)hBo8q* zMwfl$$Z(ikf9YjVdhe^90i=RXc}QL5({KdJKqf({Lm9o>KsGWBQ13Wdbyv*&k^eN> z=^uhgek`d3{3!1qdVtcBE+7vtF(`8TgkU}&BQq;=f9%zRQXV}_>Gtuz&pqZWECkKF z2MYCQcJEHC>KNVsQCE!ZpZWP|6a-b%I|E&vu+|wbX<%8vJm6w0`J?TEhW)Io9UMl( zUd)yE1Z8I&q$3Y$J%l~Oo@vjvn^-yeJYlx3>%p0yf`bmBLtf(D02>(V(}9yX(i2Y7 z8$e0Df$VosGCaX@$3hC%FeceG9?_m;PqrJlO7Jedw-8J)*`ae}JCqK+V-k1~Qo#!3 zU}pBss;a7<;1feA7~B9O1?z`Uz@90QK7rL_KN+BIY@I?N3rC?@UWGJ3a&Y}HN)J9W zj7-7C;m)AlfYLeBRt*>&C9#K4GALlMCvgfuq1gjt)ca#7k5eG+h$G!$a-@6o?B0dy z9`1Q$-bxW@GEyKV=R%oi7B>g!@DSV?v>m;|acCQN0J&k;5JN!P#?>P?_bJ-m_4ddX z5a7{ayuJ%X>)>=T!JJfPVwlt83YzUvOZ%Ph!RkizF8Qdwd&fdGn1}aj;2=VI?iWTi zZZxVH0H7{N!xBh~G+ZIl?J$$WAkn~0MoNzw7GyTEV2*yz**@D@l-_s#4AS&D&mvQw z3z}nNeLK!NVH>3*6PRBU4pJw$ncfyeZheJx$N-fM>kUNs8BnH|wCt+6pY4dG@%IWD z>~7@+M*9#-3G1h3Q^m#6K)tkC?&FTfon|eLt@1 z_EP*T5I3o+YN6QUQCRj+DUw#ZlrVo@)p@Re&)_lp42Kbv(nX>^6K7N2KsVSMg=%BH zEVrD}=3a@|1ZByn4Bha`*@IHQMs`210F9pZ$bo+xjrV2r*0Eu|0nD&LBUm^U9eK- z&WoHpr1HTFB)gek(RUwjJ~-HUv2QVNetR(dCclI|%U82+3(4WPxf&qB4n0fn{Umk) zmSk$;9mglZ`r~(A=BS?D^-1g^_<#x@J?J8rdi0`C2Ww_SHrO&3y=msJPt#{l!|MOC z>n(7KyM-BSJ1kr=_~|rXAy`|@=Y>0{oLGmD#r+m_a7FGn;NaQ?!)e2Nd8O07-+qwo zI1~R=P=!0fyZIE>9uWjRyGOvs_iio|jnWHGv!C(npj*Hm^OFA03$;4x5!NFt<12%s zr;m0BYOwFo4n7@PsKZlXk6G*#+3-`#u0jR8NJl(2es=J@#0XvijFX@Ry4X;RPq73F zlfwZ{lkMXb;kIyFtZjg5x9@^+F7s*r|D{r+B(LIRs1qzJtyrr2vi}4%8OTZBlH}$m zhW(%ChJV_4+l6beJ zo z7i#lO#O_=6Ls^dpWpv@R-##4M=x2rFhToCP7bsd|3`h6iCAk* zK*_;_`}Z|g6&F2MRaLA|WD;2m8%z(Z!IG%Pn_r&nX(5PtE#Z@mC6rYX-?IJS!3QY` zh}-HE(Gp&3Eom&Vt_`;k^FTbVTi4DbC@7?Q2}R&BrMlHhXlItgM{B@RzwCa?E6woB zys<4(g;d9{ib*PI$XgFmydk0VdWAx7FlFk2fV)$vX`Kfk_>sX`j7t*Y$Nl`>?4c`> zozEU1b{-%&!bx2`<^+V^t-bO8Mk^|6866maANxheAlg2tmhvR5Eud+Vl_K2G5G zCB%BtTMyzch&h65hmaw-21mEg454HvHH3MNC88C3y4_??uM; z63-oO7LUIm7ds3pu{=XR5lPj(@JbZ35`s_%%F7MqVgjInAtb~_ksu$K_w*E#$!N+d z*sx*K+MEKbHOFkeBI-3(Ynd(?2t{*lBQ%JVIm*x~RRp)pMpObYz%9@*ZuXlfck9Ta#2V1@rVSgE6YH%EU&&*eT zhyeEg=RM3~a$;RT)c0Ho?EeE@8i>+W62LKqp~SeUuC7$2T2NZLK&9712@*Ha`6hki z0+p((D`vFlZpxLqp!7O2XARC;T1#dG3005Ky&5^Vf>{BSH5zH}+$^&LY) zr-p|wT?&Un;c)mC|NpmC8|YoM-k^T(tMhvO`LEu?r2)!N^slC(rmrtI& zeD1@+wzk2+!Iv-|@_hPP9uj`@1#t|3;0b=?)~n(vFPs`~qIHD728W3nMOZ}B1 zL;#uWSwR=ccct|&6KTcQtfyquaJ0>*sZWErlJxQpJ17)nPeoqk?}fMjPa&e3q zOp}CBUV&{p+AXNO4KSe3VP`*69)yHqH>_mK1&+$L^QzdWWwb^W9;L|GD4d^!Xk6Le z!;Zp{)6KS{0H~x45xnde+W|?W*%B*UVtm#oMz*+q23cE2xSdkP+PN+KT=U#Zbn*pD ztf8pnD$u9-C@GoMd5OdZXor453+Pl}pD)m1iL`B6(%-Em7I&J_*~XI`gZ{vUy4shTUD+koVG#M)e|fg zQ5bCA4`$W*Qo&AE5pE2UA&}DwipWkLdwD;5IMT#VXG0N@Ph~ISn-lg1?yv3%{!v7S z*-KED_f&QFy(l8ow^c-r;L9RX%Tai$*^ZLYG`JRmYY^|}Fx)G?S==zxV~|&+K@#o7 z$5OKQ1D#6?S4Z1BNBUnA;g&4`wbkE0^gcUhH%_Ei^gS*}9x9)ax z1^0;^Q%|^03{anrNItE-HLM!@Jh-gmI@tSw8?vdZ^m!4e(#h0ahZ8o)8L_hv?#lzz z*WmfR=o%VBe?ynJ8gv78W;fzc59^C)ILOJlI&_{5bhZEWHS`*v;#K%PDB%CQ+XL?T zcj#V+F}QX$k(x-anp@{!5KmbkwKC-CiE0H^bf-Xi3F$Wx1G z_L|k{fO?!^ikC7>W66EYT*k=cRhKPY0_f??Ovc(=P*9Llwv@?Zm=aVoWoq&Li&ipE zmac#V>wlQs2ds}U#Y=wqpUjHVB4#c0aWadaWbRu|*RCvMm0z6x}m-)*|C{5SVq>6J<2B zIp@JU?rDH^SZ7{0tDuA_uq~-tRJ3X%Q?xPT9%BJht@+N zs|Ow`|IO4a>vE=e*01L>DR*K7tC-apvJWtDm7Cq#u~fJwRoG2w$(t}UQ;)x z!3d-pBfY|AHPvjafck3igBs)N!h5!D+vcjVVW=?H*d`>|Xxe18JDtry#q`zontc0e zrxOq0axpa~S3`}{=2~4Z(YMv)8?8>KtLBbG6UMH=eOyj@Lf+~+^Fw%u#S(+d=-Rk? z$_l5`xp9JS-RK0fY_qLQ&}(dsph_uCPxPl79)oY#4Cg`*c`q~<7Hkc;>5h93* zs4-+C z2qF}}39Z8+0BD9p!3GbgojZ5s1z0p88VX_29pdX9Smlrq!gP=bT>&2gC7^uW5SJT7 z5!MjPk>Ie{44gJ-ONeptc<4Cj12VCA0VKjygit6Ng7M*xJB$s9??u5pSHusZ5)Uv% zLs1wjF3Qv(o)B!n9>v3goOnpE*+Nlh<3*V;B-B70P~rC-+`Ls4hzUy&nFN?0W|Kg` z0)7qGMVY`iVFZ|9Q@H^|g#cF`B24f+Tz>dA!Qesh5VU~-h>2mrqo6856IMe$(Z<@r z4{&mf7NYV{biApt3C4#7gwBKx zi=j=D>kCMoi*^w^$aQ7wov6_C}d$jR07NuUEYD-TQ5k<~9%x01_A zf+Sb9P6BPJX;K62l4uuGtMY0DN+l2qxZm~x6L zYU&znE{`w7M+KR3Qfhkko#p@jU%zU4xns{e$IpHx{t5)ggFn?7 sgGxb4wwIBH%I^JnobK&2q%{{kWW9~}g|CjbBd literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Joust (1982) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Joust (1982) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..70caa6125ecde64592813357e2a7aae2adba5ac3 GIT binary patch literal 8192 zcmaJm4R{mBm9wkWuVrfu7~9y!CNTs-nrwO`b$TSYm!AWl+ViDN^YgVmq#BEluO z6qop_ofTp&UY1NIF^lsZouNit5^CwdG+q^I#-$-QH22_8sI^@P#X51Rv%~?z{PTEi zNp@s@E_>z9+LgA~PKu07i~8_6_UDeEbk3^59_d_7O}h|`=gPF-6KeE(*ax|1#dmNM z-sPht|GS^N7x16AN4R(RKShq7;tL{2PV(o%pDW*vYLyL9qjFDV_#|$Q8Wexjtazgg z{Bo3+B7Zo88>1%06SXLOG*{UjJ{M}_i$l$P;qaf>!r^nAG5onYDQgmu!hk@E`OgQ~ z=F0QzO(Jz{Ts9oLAT!4TDd_k3mlM!jMe;5;H7MBd;e|Wf}AH@ zgzi7h0|OV7dtuNLVLWgE;5tC9=Z93Bo5(PEMc{xiF6U+8ftTm|W%ly)1P06aFDlnX zX~pPL*DsV!{tI$`zc8*)t}btOn2Vh_yq&fh@T`vpMp}8#0DB4h@FAhT#=R7zI2g}U z@}+S6*0Gr^}d-ah%WVI+aM#2dCmq)r$e2tHG>jvVR+|)orP0%E@ z%BGgqgikg|9(l6GlQ`sxQgXl8iW^;yCeeeNZM#PNKH21W$>nHu1a0F(E{6{^-{}a6 z$kTzkS}ST#dE6)*j#$q4L!Ot=C>>k`ROKp6JV(AksJ9xFWn!MZTT94BcaRmN?wXp8v7)DR>l>=hc6wUTlep8x zX>30o@*e`aUUoS=j*#uelP<@h%XA$^T^>T$-ph2oOz0};{}N%$Um@)9R}=Qi6~Yc9 z&*5tc^UM>bKPj%nodKWJii3eek_U$ZM|#j1JS(0imM>Cx`C$hwPunKnK@3xfjQRp( zS!mA5Ez}gQUiaPqc%tz@XKdupL%dp~A;+(aH~#3S#Sib?@++HAwQ19H-+MC_ON%*p zQb^T^O}INqiy7Pli-yJfuq4*uK77o_IJY^sJ1_Yt=Zj9+`L=Uy3QLNMic5+}Q71q;9sC12qg4l( zOgT9)gWi|}TN}cZ_)$|U4cictwDo=fl6T`qFOoWN4oiEr4hFQa7dHdsFgB|YEvBVc zuwHsO;KR$TmUb6Ai}NuZ3&uL7mvF@#geAM7sKqA9k9DH9KM=&L6=N(UFT^3+t;0A7 zuUdFb4cm^t2ZXG|hV0q||1Z}kD}I>H^CGvQ$wE2uY+K)T zSTL#Z>ZCH3rJC&cS17+Cw*<({F%xR`u1qusd=3N9Q0hfMu_~jE0gxIC)B=GZu;kfw+1g&No1OlMojibNaIA zDi@_h_GFj%4Qh`#r%JYNM*T5Ww}5o zgECN{f*Q@~1r~FZX02DX*UR>s0Q(L#CK`b~5|~xni-oe5r0OLfxT1aQod(jMXjEAz z++54Lsux&>uu;YHEQ=1`++ccYh9E1?-T4zNSEhlj)u$^M9UfA}hQ+M|oMuI9 zGMR9*fUSxOaFao9Xj(AsHpqI%o@7$dB?;0V;RO{*>u6D!WDRZsGIUrEgzfX{#P`>W zPp^mV+alf#7V6By23wg-Nb}Ybk{nl&1dVG}cf!O5S%+zdTLEVV3SiT=2+ldYJy|OE z2(CFQTL_gcuxfx%06V>#Axl@3$gsgzfEh3I)p|3+HdfQX8sjE6EgA_2jex1@(&A=> z?bmcR3oph8m0P^EzEh4yB5h$>rFl*w(^d=2K!X_kU%;-K7dd|lH#>K^7emUn7rc58 zC}6iJ1LZ_fWaG7Xbw1k3IJLeTK?yq5liZL!?tu(*rBfejPC9kI0C{yE=;o@ z^gF;L9V;+RsF5`;hXqnpNKlvK6+T2X*~C&f-&vyOtJT0OuN*)H{wiUX#~DnpjigHjw%7&fpzTA2rtF zoz`;26fc*Hv+zJ_tN}7})tZ_hU5C5@I?6l7oF0Op^}w>ljwLm=@iSg#ly)ywvo_Xi zhPHHQRDZwJ z4NK2N-a1)zcE%sFn{`Z{DUU%n1{_P@T>6;Kz%a;=t4EAp1Fxz6s1ohpqNEIU(bSey z|41}dS09ZkvRnsg3n?EBpZa~0x?BLF`^Ji|ulxG5>6tC|x}s`3LAnaY*|`et8dzOz zt=n)7j9a;~vQmYae`0%b>l!lO%E|>QHoaaCU2HsWS*<48@&Q7TDx{_(Uqq9 z2ALt`hE?c!k~KXD^|Mu_=1oa{f+F}QIT^(0sdrWNu z2=I%{Yaf4n?fmR%5|uJ~O}5K6In&Q=sj8~F{cqQ0%QMgX{Lx433Q|(DnM}FG zQoe5M?Cg{>8r=?)y_`wUq!d_Gr6w~PjYdaDN0mC#Os7(9W(Leg&(J2sKtjuC^~hdZ z%~h~S8I_|!ue<({fBM!f%kru7e|Y;hp@X}({mXrS_x0-*(Bpp``faCg&-O>Zd)MDw zzfg1GqmyqPIkb1jW8b@bP30oy;>Yjwh5ap#jrZSk>+%Ba#MyU`Ndk`_|NgzVtyrv^ zObo}m0M|f z#RvbWR5VRxY|qLBS0kT0*_6s~D}{Qz!qAv+=D$m4^Fp7YNm@edIFt%Zz7qPs2r;`iO=(0-bT0=F^CkrnMKqR zpIyy5hmC)3`HBLw|D*YqF1s((Mx zOCCr*kn+*w!N_JGMP4-Ip@j#D8MlZC)SOGyY_VDbcc@CHh>`_RvOtz(a|M`~1uc51 zivF3o;05s=IVn)z0un53gX3_br)zvAtslx@64r8g3}Tl1qd-H?(`hiMG;Z=IU2SL2 zw}%=%F%*Zm8a(b9LY@)S27D`q$Ph9z0014vnV>;5gCJ<$pEwU8{`|3|%s@;!PqGhe zsoV)mBJn#AJs|_7FM=&;Y{xIeUQ{ZDhN7n^xHwP^%@U>MToU@Wa}2~t+RHe;uqDRT zzHe1d)s}iWumzonIx5zv!XRd$7ZHeQP0HWUA1wh%FLX4t!Gt1$$r!Po)4@Fm4N1>b zN|=VV@brlPNPpAS0sxOXA(?hdC%lCAnUB`=0iH%sB;1sV6^orL3dp z+nIpp_B%830U_yWF2oCbVkh13fsZ;samS^tIB0|~gy@{hN^lo*$F z{)?^N#6@Yyx{ePbQ>9TrXS1RWLIQ5_4d%!A^$2LPAi{i&}sf z?STFnp+v8I){;=MksSokB*~n?A7stod1d|}$5^-WGEr1J-Y z)k+aU)@u0;QELZbRD&?kBuGKan&TSIDg>?IT*|Vzfh&V|gHlKoYOLV`#PP@8+kIrY9c?%@MJD><+YV%q&~Pd>=R937K0|!#>V!@ zflRwJ2#&9na{%S{Mvm{Z)lIf3UqFjfimN_laVXA$byC10AZSB;Uz_b8CPfa16bKo7AIvv8DFitK$ldIv zWfQE^CQpiR668-5Nn^i!IKz+iO9`mqh9z<;!zU!UXfwEil-S(OcdPPxGkhYdkp+lE z(%`E0AB*V6d|%`_klZ|RU!sf#S%mm-IKkc=?q*jEKA#@u2c;GZx z%l9J*#I1(-F?&;nySL}2jHeql80$SU5>1{H2rgMokwLVoqo+UP=|fvbo970o&*v#cA)8WS;l==q#K=Hk>Q>?eOrcotfwsVDe{C-*I>_E zY0n_RJDr;eE}cWVn;@<0$<1U@ewN9iKrd^Jw{pux3jiD;VaiD1sX$1q^&+ytg+#r& zre_R^I(y^ROCo2dCwd_m zFNHm-S}yW;Mrx<|k>OrBR~q7s(0mx0lf4jx^5EF&kw&zh_J}aOxtH%14a@7{YB{!n zh1_Dke+ZTe0uFqTV5C?Ob_JH0Z7i~Jx@dD(d`Hj_-wHn}r~|VH!{WPyPH^}#f2UA? z`y0BJkO5kHtIqb2*JGX_oc!Sa9q$J< zRecKAg+RD%8pyleTQ7AT+b=S>DagP*TNB7)D-0d7PHUU^p*F3Dk4e4906(Y&R^1wv zeL|A*O~RABM*1*LQj6SU5J9nj_(S@`5M~;(&OkjRb>SdH zt=>7~e*lE>m&RW$1c~uKO^p9rkr4z^D1u}w&bU{6$`B_g7a0iX0nc!+YU{m-%T;o~ z*7Zfd>_whl*rcxhX{o-Pvp!3Y@mHZg=uCRoEr1!+hOMv!Xq zU(Df;6O%tjOuh@r{{y%iNbX>ly5iMxo|u#69KMv${7|?Hc+>%n2Kap9;!NxfU_@~0 zWXog8*o2TgHleWohR7>vuRV@9y)aed2Gz90>@8g&P8K8|v+g27x7Ssn^z)0!)ieWz z+>O)Zyo1t9b#PNoXVRH8R5VoS`8EY@IEg?T>U0|VDd^8!ZeQ+)<0?6`z-$!!G6>q_ zOfz4@S`@hmgkFGO)emrT_}TM7xu}PTsDV&u;Rmy>F4lq{FU$I|h`!R1ZM8EHa~Oy@ zCHyI1nXchwe+X=|Djc2&vrK=#taG^_%F1mJFvDt^s>^0)cBy*`J{}p}O#G4?L{%k) zr{J3s>(<7<2vT+&6kuOC{uVkclzWOKOBq&_Z5UeAiA>`bwVSQ0)Q^&u~7 zTa$t=t0fNK_N;p4UNCHpt$x-Sa_pD7t6)9M$8%uCN%v|gTt(J1xR=CJ!NqaJn&R8t z1#w3(-))FL=gx^gAJhxH%-BAhwR5*sj7>)=xMfMz1a)w-IEtt2kWYQWk<{{&$|=?W zem3Q;l?~ZWZ-t0}7AZjx_ypvAONGCR1e4 zDyKW$?b`oZ-i`bA z?c2St&9mF%X*+(vbKto5W$*EW-h=(KvBQ4fFM z;a3$xG4W{%zPe?>u&+QNKAu78xqFRtX61c#O5J?9e6OOe1j3w#GBcab7)U{I;q#BEluO z6qop_ofTp&UY1NIF^lsZouNit5^CwdG+q^I#-$-QH22_8sI^@P#X51Rv%~?z{PTEi zNp@s@E_>z9+LgA~PKu07i~8_6_UDeEbk3^59_d_7O}h|`=gPF-6KeE(*ax|1#dmNM z-sPht|GS^N7x16AN4R(RKShq7;tL{2PV(o%pDW*vYLyL9qjFDV_#|$Q8Wexjtazgg z{Bo3+B7Zo88>1%06SXLOG*{UjJ{M}_i$l$P;qaf>!r^nAG5onYDQgmu!hk@E`OgQ~ z=F0QzO(Jz{Ts9oLAT!4TDd_k3mlM!jMe;5;H7MBd;e|Wf}AH@ zgzi7h0|OV7dtuNLVLWgE;5tC9=Z93Bo5(PEMc{xiF6U+8ftTm|W%ly)1P06aFDlnX zX~pPL*DsV!{tI$`zc8*)t}btOn2Vh_yq&fh@T`vpMp}8#0DB4h@FAhT#=R7zI2g}U z@}+S6*0Gr^}d-ah%WVI+aM#2dCmq)r$e2tHG>jvVR+|)orP0%E@ z%BGgqgikg|9(l6GlQ`sxQgXl8iW^;yCeeeNZM#PNKH21W$>nHu1a0F(E{6{^-{}a6 z$kTzkS}ST#dE6)*j#$q4L!Ot=C>>k`ROKp6JV(AksJ9xFWn!MZTT94BcaRmN?wXp8v7)DR>l>=hc6wUTlep8x zX>30o@*e`aUUoS=j*#uelP<@h%XA$^T^>T$-ph2oOz0};{}N%$Um@)9R}=Qi6~Yc9 z&*5tc^UM>bKPj%nodKWJii3eek_U$ZM|#j1JS(0imM>Cx`C$hwPunKnK@3xfjQRp( zS!mA5Ez}gQUiaPqc%tz@XKdupL%dp~A;+(aH~#3S#Sib?@++HAwQ19H-+MC_ON%*p zQb^T^O}INqiy7Pli-yJfuq4*uK77o_IJY^sJ1_Yt=Zj9+`L=Uy3QLNMic5+}Q71q;9sC12qg4l( zOgT9)gWi|}TN}cZ_)$|U4cictwDo=fl6T`qFOoWN4oiEr4hFQa7dHdsFgB|YEvBVc zuwHsO;KR$TmUb6Ai}NuZ3&uL7mvF@#geAM7sKqA9k9DH9KM=&L6=N(UFT^3+t;0A7 zuUdFb4cm^t2ZXG|hV0q||1Z}kD}I>H^CGvQ$wE2uY+K)T zSTL#Z>ZCH3rJC&cS17+Cw*<({F%xR`u1qusd=3N9Q0hfMu_~jE0gxIC)B=GZu;kfw+1g&No1OlMojibNaIA zDi@_h_GFj%4Qh`#r%JYNM*T5Ww}5o zgECN{f*Q@~1r~FZX02DX*UR>s0Q(L#CK`b~5|~xni-oe5r0OLfxT1aQod(jMXjEAz z++54Lsux&>uu;YHEQ=1`++ccYh9E1?-T4zNSEhlj)u$^M9UfA}hQ+M|oMuI9 zGMR9*fUSxOaFao9Xj(AsHpqI%o@7$dB?;0V;RO{*>u6D!WDRZsGIUrEgzfX{#P`>W zPp^mV+alf#7V6By23wg-Nb}Ybk{nl&1dVG}cf!O5S%+zdTLEVV3SiT=2+ldYJy|OE z2(CFQTL_gcuxfx%06V>#Axl@3$gsgzfEh3I)p|3+HdfQX8sjE6EgA_2jex1@(&A=> z?bmcR3oph8m0P^EzEh4yB5h$>rFl*w(^d=2K!X_kU%;-K7dd|lH#>K^7emUn7rc58 zC}6iJ1LZ_fWaG7Xbw1k3IJLeTK?yq5liZL!?tu(*rBfejPC9kI0C{yE=;o@ z^gF;L9V;+RsF5`;hXqnpNKlvK6+T2X*~C&f-&vyOtJT0OuN*)H{wiUX#~DnpjigHjw%7&fpzTA2rtF zoz`;26fc*Hv+zJ_tN}7})tZ_hU5C5@I?6l7oF0Op^}w>ljwLm=@iSg#ly)ywvo_Xi zhPHHQRDZwJ z4NK2N-a1)zcE%sFn{`Z{DUU%n1{_P@T>6;Kz%a;=t4EAp1Fxz6s1ohpqNEIU(bSey z|41}dS09ZkvRnsg3n?EBpZa~0x?BLF`^Ji|ulxG5>6tC|x}s`3LAnaY*|`et8dzOz zt=n)7j9a;~vQmYae`0%b>l!lO%E|>QHoaaCU2HsWS*<48@&Q7TDx{_(Uqq9 z2ALt`hE?c!k~KXD^|Mu_=1oa{f+F}QIT^(0sdrWNu z2=I%{Yaf4n?fmR%5|uJ~O}5K6In&Q=sj8~F{cqQ0%QMgX{Lx433Q|(DnM}FG zQoe5M?Cg{>8r=?)y_`wUq!d_Gr6w~PjYdaDN0mC#Os7(9W(Leg&(J2sKtjuC^~hdZ z%~h~S8I_|!ue<({fBM!f%kru7e|Y;hp@X}({mXrS_x0-*(Bpp``faCg&-O>Zd)MDw zzfg1GqmyqPIkb1jW8b@bP30oy;>Yjwh5ap#jrZSk>+%Ba#MyU`Ndk`_|NgzVtyrv^ zObo}m0M|f z#RvbWR5VRxY|qLBK_j0#*_6s~D}{Qz!qAv+=D$m4^Fp7YNm@edIFt%Zz7qPs2r;`iO=(0-bT0=F^CkrnMKqR zpIyy5hmC)3`HBLw|D*YqF1s((Mx zOCCr*kn+*w!N_JGMP4-Ip@j#D8MlZC)SOGyY_VDbcc@CHh>`_RvOtz(a|M`~1uc51 zivF3o;05s=IVn)z0un53gX3_br)zvAtslx@64r8g3}Tl1qd-H?(`hiMG;Z=IU2SL2 zw}%=%F%*Zm8a(b9LY@)S27D`q$Ph9z0014vnV>;5gCJ<$pEwU8{`|3|%s@;!PqGhe zsoV)mBJn#AJs|_7FM=&;Y{xIeUQ{ZDhN7n^xHwP^%@U>MToU@Wa}2~t+RHe;uqDRT zzHe1d)s}iWumzonIx5zv!XRd$7ZHeQP0HWUA1wh%FLX4t!Gt1$$r!Po)4@Fm4N1>b zN|=VV@brlPNPpAS0sxOXA(?hdC%lCAnUB`=0iH%sB;1sV6^orL3dp z+nIpp_B%830U_yWF2oCbVkh13fsZ;samS^tIB0|~gy@{hN^lo*$F z{)?^N#6@Yyx{ePbQ>9TrXS1RWLIQ5_4d%!A^$2LPAi{i&}sf z?STFnp+v8I){;=MksSokB*~n?A7stod1d|}$5^-WGEr1J-Y z)k+aU)@u0;QELZbRD&?kBuGKan&TSIDg>?IT*|Vzfh&V|gHlKoYOLV`#PP@8+kIrY9c?%@MJD><+YV%q&~Pd>=R937K0|!#>V!@ zflRwJ2#&9na{%S{Mvm{Z)lIf3UqFjfimN_laVXA$byC10AZSB;Uz_b8CPfa16bKo7AIvv8DFitK$ldIv zWfQE^CQpiR668-5Nn^i!IKz+iO9`mqh9z<;!zU!UXfwEil-S(OcdPPxGkhYdkp+lE z(%`E0AB*V6d|%`_klZ|RU!sf#S%mm-IKkc=?q*jEKA#@u2c;GZx z%l9J*#I1(-F?&;nySL}2jHeql80$SU5>1{H2rgMokwLVoqo+UP=|fvbo970o&*v#cA)8WS;l==q#K=Hk>Q>?eOrcotfwsVDe{C-*I>_E zY0n_RJDr;eE}cWVn;@<0$<1U@ewN9iKrd^Jw{pux3jiD;VaiD1sX$1q^&+ytg+#r& zre_R^I(y^ROCo2dCwd_m zFNHm-S}yW;Mrx<|k>OrBR~q7s(0mx0lf4jx^5EF&kw&zh_J}aOxtH%14a@7{YB{!n zh1_Dke+ZTe0uFqTV5C?Ob_JH0Z7i~Jx@dD(d`Hj_-wHn}r~|VH!{WPyPH^}#f2UA? z`y0BJkO5kHtIqb2*JGX_oc!Sa9q$J< zRecKAg+RD%8pyleTQ7AT+b=S>DagP*TNB7)D-0d7PHUU^p*F3Dk4e4906(Y&R^1wv zeL|A*O~RABM*1*LQj6SU5J9nj_(S@`5M~;(&OkjRb>SdH zt=>7~e*lE>m&RW$1c~uKO^p9rkr4z^D1u}w&bU{6$`B_g7a0iX0nc!+YU{m-%T;o~ z*7Zfd>_whl*rcxhX{o-Pvp!3Y@mHZg=uCRoEr1!+hOMv!Xq zU(Df;6O%tjOuh@r{{y%iNbX>ly5iMxo|u#69KMv${7|?Hc+>%n2Kap9;!NxfU_@~0 zWXog8*o2TgHleWohR7>vuRV@9y)aed2Gz90>@8g&P8K8|v+g27x7Ssn^z)0!)ieWz z+>O)Zyo1t9b#PNoXVRH8R5VoS`8EY@IEg?T>U0|VDd^8!ZeQ+)<0?6`z-$!!G6>q_ zOfz4@S`@hmgkFGO)emrT_}TM7xu}PTsDV&u;Rmy>F4lq{FU$I|h`!R1ZM8EHa~Oy@ zCHyI1nXchwe+X=|Djc2&vrK=#taG^_%F1mJFvDt^s>^0)cBy*`J{}p}O#G4?L{%k) zr{J3s>(<7<2vT+&6kuOC{uVkclzWOKOBq&_Z5UeAiA>`bwVSQ0)Q^&u~7 zTa$t=t0fNK_N;p4UNCHpt$x-Sa_pD7t6)9M$8%uCN%v|gTt(J1xR=CJ!NqaJn&R8t z1#w3(-))FL=gx^gAJhxH%-BAhwR5*sj7>)=xMfMz1a)w-IEtt2kWYQWk<{{&$|=?W zem3Q;l?~ZWZ-t0}7AZjx_ypvAONGCR1e4 zDyKW$?b`oZ-i`bA z?c2St&9mF%X*+(vbKto5W$*EW-h=(KvBQ4fFM z;a3$xG4W{%zPe?>u&+QNKAu78xqFRtX61c#O5J?9e6OOe1j3w#GBcab7)U{I; literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Joust (1982) (Atari).a26 b/test/roms/bankswitching/F8/Joust (1982) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..9b0972aa81b02ee84ba74b9334754cbfcaf25e02 GIT binary patch literal 8192 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 AE&u=k literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [!].a26 b/test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..19df8e2bbacb8e5029e6eccce8f8387f129fad6d GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26 b/test/roms/bankswitching/F8/Jungle Hunt (1982) (Atari) (PAL) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..990f7faf7e8f8aa187c39084e05b175f77b664b2 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Jungle Hunt (1982) (CCE).a26 b/test/roms/bankswitching/F8/Jungle Hunt (1982) (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..94b8a2288215a351e9495e50eb725c66764a438c GIT binary patch literal 8192 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 QMU1SIGfHy>3J>=lI`nL_Gr5TwE@*8R4^=}~ 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 EfAma2X8-^I literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Kung Fu Master (CCE).a26 b/test/roms/bankswitching/F8/Kung Fu Master (CCE).a26 new file mode 100644 index 0000000000000000000000000000000000000000..74378e62acd85bc1051029e546263383123127b3 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26 b/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari) (PAL) [a1][!].a26 new file mode 100644 index 0000000000000000000000000000000000000000..18cd7b190331b765a7f2097915b1889bfb7d47c1 GIT binary patch literal 8192 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 w5cBgzgHEuxLtdF9k<3U{b^0@&y{u~ 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 Kv=xyo=6?V+8cR?B literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari).a26 b/test/roms/bankswitching/F8/Ms. Pac-Man (1982) (Atari).a26 new file mode 100644 index 0000000000000000000000000000000000000000..4b10657b80af8fec7a3e4853c0a5375e8cfca92c GIT binary patch literal 8192 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 z