Since I got stuck with porting my custom EEPROM implementation for Genesis/MegaDrive towards the core one [*] and since updating software lists with PCB info is valuable but not very exciting, I was searching for some not too complex but still rewarding emulation task to occupy my weekend.
While going through my notes and partially developed implementations, I stumbled upon a bunch of notes about the “General Purpose I/O port” of the GBA, a bunch of pins connected to the ROM on the GBA cart PCBs which allow the system to serially transfer bits through the cartslot. The main usage of the port was the routing of the RTC in Pocket Monster games, the Rumble feature of Drill Dozer and the Gyroscope sensor of Warioware Twisted. The missing implementation of the RTC comms was also the reason why Sennen Kazoku was stuck on the following screen
Since the port was quite well documented (mainly thanks to the great reverse engineering job done by the nocash guy) and the RTC improvement was often requested on the Bannister MESS board, I decided to take (again) a quick look to see whether this time I could manage to make the RTC work.
It turned out that in my previous attempts on this, I had misread some of the bits of info presented at GBATEK. After some work to add the correct GPIO hookup into the driver, I was finally greeted by Sennen Kazoku getting in-game
Similarly, the new code allowed to say goodbye to this annoying messages
and made Pokémon Ruby / Emerald / Sapphire at last fully working
(and yes, I’m sort of cheating with the above screens, since the game could be played even without the RTC, but some events would not have worked as designed without it, so it is a *real* improvements 😉 )
With the RTC implemented, I decided to look a bit to the other games using the port and it turned out that RTC was probably the most complex of the device exploiting the GPIO port… good for us!
In a few hours I was able to implement in MAME the Gyroscopic Sensor used by Warioware Twisted, so that its minigames will be playable in next MAME release
Next it was the turn of Boktai’s luminosity/light sensor. Such a sensor was used in the three games of the Boktai / Bokura no Taiyou series, and the lack of support for it had a great playability impact in MAME: it not only made almost impossible the gameplay in Boktai 2 / Zoku Bokura no Taiyou and in Shin Bokura no Taiyou (the Jpn-only third chapter in the saga), since solar light is needed to recharge the main character’s weapon, but even more annoyingly it caused the following screen to show up and stop any play at the very beginning of the first game
Luckily, the sensor implementation was not too difficult (in MAME you will be able to choose the luminosity level from the “Machine Configuration” menu entry of the internal interface… at least until we get some sort of webcam support as input device in MAME, which would force users to play the game outside in order to actually defeat vampires 😉 ) and we now can play these games (almost) as they were intended
(observe the luminosity bars which are not empty as they were in MAME/MESS so far…)
To complete the picture, it remained to add the Rumble chip and that was very easy to add, even if it is probably less interesting from the MAME-users’ point of view in its current state: as with other MAME outputs, with the new code the emulator will now send out a "Rumble" output bit (0 for Rumble=OFF and 1 for Rumble=ON) whenever the games try to access the Rumble component… however, users will need a third party application to listen to the output and redirect it to some hardware that can "rumble" in sync with the gameplay.
Is this all? Well, I thought so at first… but then I realized that there were a few more low hanging fruits I could implement, and that is how we will also get in next MAME:
- emulation of the Tilt sensor used by Yoshi’s Universal Gravitation / Yoshi Topsy-Turvy / Yoshi no Banyuuinryoku (and by Koro Koro Puzzle)
- emulation of the Rumble chip used by MBC-5 Game Boy Color games (like Pokémon Pinball and more), once again restricted to a "Rumble" output bit ready to be intercepted by some external listener application
- partial emulation of the RTC used by MBC-3 Game Boy Color games (like Pokémon Gold / Silver / Crystal and many more), which allows to actually pass from a stuck clock that never updates
to a clock that is aligned with real time when the game is rebooted
You might have noticed that I wrote partial emulation above, and the reason is that the clock goes definitely too fast while in-game and thus the support cannot be considered complete…
In the next few days, I plan to revisit a little bit the GPIO direction bit handling, since it does not match perfectly the description at GBATEK and I would like to understand where the difference comes from, and to search for the issue which causes the RTC to go so fast in GBC games. Let’s see how it does work out
[*] I’ve done some progress but it’s pretty boring… and it always requires me playing at least a NBA Jam match to test that both reading and writing to EEPROM works fine, which usually does not fit well the short lunch breaks at work, when I have the chance to make some hobbyist developments
Long time without posting, but work on MAME/MESS has proceeded pretty well (with some hyatus here and there…)
For instance, in MAME 0.173 you can now play with up to 9 friends in Saturn Bomberman, with the Sega Saturn driver (of course), thanks to the work made on the controller emulation (based on previous great work by Kale!)
The Saturn Multitap support is still not 100% accurate, but it is a starting point, at least.
Since the release, instead, I spent some time cleaning up the NeoGeo driver (whose cartslot emulation was not very accurate, at best, with all possible protection devices being mounted in the main system when running single-game drivers, and thus making a poor job at documenting how the hardware actually worked).
At the same time, I have also decided to go back revisiting old things that I had never managed to get working when converting console to use slot devices in MAME/MESS (see old entries of the blog, if you are not sure what I’m referring to).
One of the items which annoyed me most was NBA Jam for the MegaDrive / Genesis.
If you have ever tried to play it in MAME, indeed, the game plays without any apparent issue:
You boot, enter your initial
Then you play the first match
The problem is that, while as long as you keep playing the game records your progresses (wins & losses), when you quit and restart emulation, you are greeted with a disappointing “No Record” message
Given that this is one of the games I have wasted more time with as a teenager, both at arcades and at home on the MegaDrive, this was really an itch that I couldn’t scratch and that kept jumping to my mind whenever I had time to look into unsolved emulation issues.
The big problem with this was the nature of the issue: the cart relied on the serial EEPROM implementation available in the MAME core and I had zero past experience with this kind of chips. I downloaded (long ago) the datasheet for the specific device used in NBA Jam carts (a X24C02 EEPROM) but to no avail: the MAME implementation was close enough to sound reasonable and not close enough (at least to my eyes) to directly compare the code process with the process described in the datasheet. One of the worst possible scenario for tracking down a bug like this 😉
In the end, after several attempts, yesterday I have managed to write down some equivalent code good enough to get to the following screen
This means that I shall finally be able to improve my old record of 26 wins in a row and it also means that we are closer than ever to emulating in MAME the similar EEPROMs used by other MegaDrive games and by some Bandai games on Famicom.
My effort will go primarily towards investigating why the core implementation fails, so that any other driver will be able to benefit of the improvements… but this also means it might be a few releases before other games using these EEPROMs are playable. However, having a working implementation to compare the broken one with could probably attract the attention of other DEVs as well, and work team might give a boost to the development.
Some time ago, I have discussed about Nantettate! Baseball by Sunsoft (for the Nintendo Famicom) and about the sub-cart system used to update team data of the original game at later stage, to renew players’ experience without the need of a whole new game.
In Japan, however, it was far from being an isolated case. In particular, it seems that Bandai was a company who strongly believed in the concept of expandable games, with cheaper updates at later times. It happened with Famicom Karaoke Studio (new songs were added by switching the cart in the body of the Karaoke Studio connector)
(Karaoke Studio base cart and add-on cart pics from ochagumi’s blog)
it happened with the Datach Joint ROM System (featuring a barcode scanner in the base device)
(Datach base cart and add-on cart pics from nesworld.com)
and it also happened a few years later with the Sufami Turbo for the Super Famicom (a.k.a. SuFami)
(Sufami Turbo base cart from an auction)
In emulators, these expansions are never trivial to handle (not to mention that quite often users are not aware of the correct usage of the original hardware!), but luckily the progresses about slot devices in MESS made them quite easy to work with, both from the development and from the usage points of view. If Sufami Turbo was already handled fine under the SNES driver, and Karaoke Studio is still out of reach due to mic emulation requirements, in the past few days I dug out some old (and broken) code to emulate the Datach unit in MESS and decided to take another look to the barcode reader support.
Long story short, I managed to fix the barcode handling code, and in next release you will be able to effectively play most of Datach games in MESS! However, I guess that some explanations on the way it will work in the emulator could be useful.
EDIT (2014-02-13): As of latest MAME/MESS svn, Datach games have been moved from NES softlist to a separate Datach softlist (because the carts are different, as you can see from the pictures). Also, the base unit has been properly implemented as a passthrough cart with a separate cartslot for its minicarts. This means that to test the improvements below you now have to launch MESS with the following command
mess nes -cart datach -cart2 gamename
where gamename can be either a softlist shortname, or the full path to the iNES files for the games (notice that you can also load an headerless 256k dump of your Datach minicarts, so you don’t need to add an header if you dumped your own cart)
First of all you will need to launch a Datach game in NES. These typically are games which boots with this logo
If you have ever launched one of these games in previous MESS, you would have noticed that some games were not really playable due to the game sitting there waiting for a barcode to be scanned into the unit. The Dragon Ball game (Dragon Ball Z – Gekitou Tenkaichi Budou Kai) and the Yu Yu Hakusho game (Yu Yu Hakusho – Bakutou Ankoku Bujutsu Kai) are perfect examples for this
If you try to start a game and you have no barcode, you cannot pass through the following screens
where the game waits for a barcode to generate your character.
Now, when you get to those screens, you can just open up the UI and you will see a brand new menu item: Barcode Reader!
You select it, you choose the Datach reader, and you will get to the Barcode prompt
and here you can enter your favorite barcode! (you first type the code, then you select the “Enter Code” option)
EDIT (2014-02-14): the guy at retrostuff.org (the website where I had borrowed the original Goku barcode) has scanned some more original cards for the Datach Dragon Ball Z game. This helps to play the game as it was intended. You can find them at this page. Thanks a lot, mate.
By using “5018-4385″ and “9638-5074″ (two codes I found by googling EAN-8 barcodes) you get a fight between an alien and the cyborg 18!
The game also features a menu where you can test your barcodes to see which fighters get unlocked with each code, before entering the tournament!
By selecting “022248-300117″ (which comes from an original DBZ card for Goku), you will see the game scanning the code
and you will get a Level 2 Sayan fighter.
By using “062982-144233″ (mentioned in nocash documents) you will get a different and stronger Level 2 fighter (maybe Trunks?)
By using “9-771129-975005″ (a code I took from a comic book I had at home) you will get a weak Level 1 Piccolo
and so on…
Similarly, in Yu Yu Hakusho – Bakutou Ankoku Bujutsu Kai, you can now pass to the actual fights
You can now also play Ultraman Club – Supokon Fight!
and J League Super Top Players
and SD Gundam – Gundam Wars
even if I’m not sure how to pass this screen
Finally, Battle Rush – Build Up Robot Tournament does not enter in game (maybe it sits waiting for response from the unemulated EEPROM?)
The factory option works, but in this way there is not much to do other than creating robots over and over.
There was also a seventh Datach game, Crayon Shin-Chan Ora to Poi Poi, but this does not even use the barcode unit and it was probably only sold in Datach format (in addition to the standard FC cart format) to make happier the owner of the Datach unit.
I’m not fully satisfied by the initial commit to MESS, because Datach carts are still treated as base FC carts, without a separate slot, but this will be fixed later. In the meanwhile, 6 out of 7 Datach games are playable, at last!
Finally, for the moment I won’t look in supporting Barcode Battler units (both for NES and SNES), because those require to convert the NES/SNES controllers to be slot devices and thus require more time than I have at the moment. Also, I’d be actually more interested into understanding how Barcode Boy worked, since only a few emulators support or document it 😉
One of the main limitations of NES emulation in MESS has always been the lack of MMC-5 support. It was not the only problem (many games suffer of 1-line glitches, a few games are broken, and Skulls & Crossbones IRQ handling does not like at all out PPU code), but still MMC-5 was probably the most annoying one, because Castlevania III is one of the favorite games of a lot of people (including myself) and it was a pain to admit that we were not able to support it properly in MESS.
I have written many times in the past that the culprit was our emulation of the NES video chip, too limited to handle all MMC-5 features, and that a full PPU rewrite was needed in order to properly fix CV3 and the various Koei games which run on this boards. And I have promised to many friends that eventually I would have been able to tackle the challenge of such a rewrite.
Unfortunately, a long series of real life events is keeping me 95% busy with non-emulation stuff, so that the actual rewrite I’ve been working on since last June is still faaaaar from completion. In conclusion, proper MMC-5 support in MESS seemed doomed…
…if it wasn’t for the fact that I was terribly nauseated by repeating over and over that MESS was very cool (thanks to the MAME debugger, to the number of supported pirate mappers, to the support for Game Genie, Famicom BASIC and Nantettatte Baseball subcarts), but not good enough to support MMC-5, despite MMC-5 was one of the most famous official Nintendo mappers and it was already supported by most other emus…
Read the rest of this entry »
One thing which I have always wanted to add support for in MESS was tape loading from inside Family BASIC for the Japanese Famicom. I’m not sure if I was fascinated to see what could be done when using my fav 8bit console as an home computer, or if I wanted to support it because only a bunch of other emus do (NEStopia, NesterJ, any other?), fact his that I had made multiple attempts in the past 2 years to add cassettes to Famicom in MESS, with no luck.
The problem was not the cassette recorder connection in itself: it was well documented which bits correspond to read from tape and write to tape, respectively. The problem was the small number of testcases and the apparent lack of documentation about the cassette file formats!
Once Anna Wu managed to find for me a few .tp files to play with (many thanks as usual, Anna), I thought I was ready to go, but I realized soon that the problem was not so easy to solve: a .tp file contains a sort of waveform pattern, but I was unable to convert it to something that Family BASIC was capable to recognize…
The real breakthrough happened when I got in touch with Pokun at nesdev boards, who in turn pointed me to UglyJoe, brilliant and very friendly admin at famicom world forums
He not only had found out that .tp was just a raw wave file at 32kHz (very easy to convert to a .wav file to be fed to MESS, e.g. with Audacity), but he also spent a lot of time last year typing a dozen of Family BASIC programs in his FC and saving them to tape!!!
Hence, by converting Anna’s .tp files and studying UglyJoe’s .wav files, I finally succeeded in adding tape support to our beloved emulator.
EDIT: I recall that if you launch BASIC V3.0 and you get an error message displayed, or if you launch BASIC V2.0/V2.0A and you get a grey screen, it means that you haven’t connected the Famicom Keyboard! To test any of the games below, you need to launch famicom emulation in MESS with one of the BASIC carts mounted, then access the internal UI with TAB, go into Driver Configurations and change the Expansion port to “FC Keyboard”. Once you’ve done this, the BASIC cart will work as shown in the pictures
and some of the files typed in by UglyJoe (that you can find at famicomworld and maybe you can also say thanks for his work, while you’re there)
The new feature revealed also that our NES input handling, whose cleanup I had kept postponing for months, really needed to be revamped in order to allow working controls in these games. Indeed, our code had been written with NES controllers in mind (and it worked well for those), but Famicom controllers were different. Original FC had indeed hardwired controllers and any additional peripheral had to be connected to the expansion port which we were not emulating properly. This has been mostly fixed now and, when tape support will be added, you will be able to also control the main characters in the games
An interesting feature of UglyJoe’s tapes is that you have to load the BG data separately. Luckily, UJ gave all the necessary details and I post them here too, for reference. So you need to launch Famicom in MESS with the Family BASIC v2.0 (or v2.0A) cart, with the FC Keyboard enabled as controller, and with one of the bg data wav file as cassette. Then, follow next steps
1. After entering your name, the cart will ask you if you want to load GAME BASIC. Either press Yes (F1), or type “GAME BASIC” and press Enter.
2. At next menu, select “2. BG GRAPHIC” by pressing “2”
3. Then press FC “ESC” key (in emulated keyboard mode, it is mapped by default to your TAB key; in natural keyboard mode, it is mapped to your own ESC key) and select “FILE” (scroll with arrow keys and confirm with the SpaceBar)
4. Press “L” (for LOAD) and Enter (no need to specify a filename). Then, enter the Internal UI and press Play in the Tape Control menu: after some second the program will be recognized and loaded (you can always FastForward the emulation to reduce the loading times!)
5. When loading procedure completes, the graphics will be displayed. Here you can access again the menu as before, by pressing the FC “ESC” key and then press the FC “STOP” key (mapped by default to your Backspace key) to go back to the main BASIC menu
6. Select “1. BASIC” by pressing “1”, to finally access the BASIC prompt
7. Now, enter the Internal UI, and load the program wav file through the File Manager menu. Then go back to emulation and type LOAD. Start the new tape from the Tape Control submenu of the Internal UI and wait for its completion
8. Typing RUN, you will be finally able to play the game and help Mario to kill the floating crab
None of these programs is going to compete with main Famicom productions (2KB of memory is too small for that), of course, but Family BASIC was a piece of Famicom history and it was a pity not to document it properly… and who knows, maybe some Japanese user will dig out his old collection of tapes and we might find more of these before they get lost forever!
p.s. there were a few more programs supporting tapes on the Famicom, and a few on chinese famiclones. if someone still has such tapes, please contact us at MESS boards!
OK, I had left you with the announcement of MESS supporting the lock-on cartridge for Sonic & Knuckles, but in the past weeks I have worked hard to propagate the nice features of slot expansions to other systems in MESS and I have to say that the results are definitely nice… actually so nice that a single blog post is not enough for all the changes that have been done (and the snaps necessary to show them all!), and I preferred to split them across a series of entries!
If you are a regular follower at the MESS board at bannister.org, you probably have already heard about most of these (except the NES ones… those should be a nice surprise for you too ), but I think that it might be good for everyone to finally see in action all those svn logs entries about “slot devices”
- The Sega side of the progresses, namely MegaDrive and Saturn
- The Game Boy side of the progresses
- The SNES side of the progresses
- The NES side of the progresses
There is still so much to do for these systems (more SNES addons to emulate, more sound chips in NES carts to implement, more protected GB pirate games to support, etc.) that you can expect to see slot devices mentioned in messnew and svn log still for long time, but I’m confident nobody would deny that this is a great starting point for future progresses!
Finally, the NES chapter, i.e. the real news getting prepared for MESS 0.148u4!
Converting NES carts to slot devices has been my goal since a long time. It’s been essentially the main reason I’ve decided to learn more about slots, given that many NES carts had some additional chips on them and that these were impossible to support appropriately in MESS without slots.
However, at the same time, converting NES carts meant having to create around 300 hundreds different types of slots, so to covert all PCBs/mappers used by NES carts. It is not very surprising, therefore, that it took me really a looooong time before being able to announce the actual completion of the slot-ification process…
However, the work has finally reached a point where it can be made public because, even if more cleanups are definitely needed, at least no regressions are known at this stage (but I’m pretty sure that something has slipped through our regression tests, with more than 3000 dumps available…)
The first consequences of the slot devices cannot really be shown, because they mostly deal with sounds
With the new code, indeed, MESS finally features (like many other emus)
– sound FX in the Japanese version of Gimmick, by emulating the additional YM2149 present inside the Sunsoft 5B chip
– OST in Lagrange Point, by emulating the YM2413 present inside the VRC-7 chip
– speech in Jaleco sports game, even if they currently use external samples, mostly recorded years ago by Pongbashi, given that the ADPCM chip used in these is currently undumpable (samples go in the samples/ folder, like you would do with MAME samples, and you can use the old TOSEC set from 2009)
Definitely more suited to be displayed with snaps is the support for the NES-EVENT PCB, which means that you can now play in MESS the Nintendo World Championship 1990 cart (DipSwitches included)
Another interesting aspect is that, thanks to the great analysis done by naruko on the Sunsoft-6/Sunsoft-DCS pcbs, MESS is now capable of emulating Nantettatte!! Baseball lock-on mechanism! This Sunsoft game is pretty interesting, given that it experimented a very original way to solve the problem of sports games with stats becoming outdated a few months after the game release…
Basically, one had to buy the original game first, at full price, and then after a few months the publisher offered cost-reduced minicarts containing new teams and new data to be plugged into the original game!
Nantettatte!! Baseball base cart and add-on cart pics from zation0323’s blog
You can see that the update cart fits the small blue slot in the main cart!
In MESS you will now be able to emulate this behavior like with Sonic & Knuckles: when you load Nantettatte!! Baseball, MESS offers you a -cart2 slot where you can load the add-on minicart (only two were sold by Sunsoft, ’91 Hen and OB Hen). By loading one of the minicarts, the first difference you see is in the available teams
base game (up left), 91 hen (up right) and OB hen (down left). also, I have fixed some gfx issues present in current MESS (down right).
but I guess that also team members and stats have been updated. Maybe, if this mechanism had been successful, Electronic Arts and other companies would have followed a different strategy in the past 20 years, but I guess Nantettatte!! Baseball was not a blockbuster 😉
Along the same line of piggyback carts, we now support the real NES Game Genie from Galoob (not very useful, given that most of these same codes are also in Puggsy’s cheats, but if it was possible on the real system why not in MESS as well?). Once again, when you load the Game Genie in the main cartslot, a -cart2 device becomes available to load any another game you want
Game Genie with Super Mario Bros. and the codes to make Mario immortal and to have Bowser flames in all levels
Game Genie with Super Mario Bros. 3 and the code for the Hammer suit
While converting the old code to the new slots, I have also improved some pcbs and/or fixed some bugs, which I guess will be appreciated by everyone. For instance, Family Circuit ’91 is no more glitchy as in 0.148u2
Ingame before the rewrite (left) and after (right)
and some Tengen games work now, like Klax, Road Runner and Alien Syndrome
Some progresses have also been made on other games, which however still do not work.
Skull and Crossbones now draws most of its graphics (but dies when the gameplay starts, possibly due to a delay in IRQ firing which is not easy to implement in current PPU code and which will probably have to wait until the PPU rewrite)
And Racermate Challenge II after some flickers (the game saves on battery the videoram content, but we currently do not emulate this, so the game has to initialize it every time, which should be the reason of the flickering…) finally shows the current game screen, but it cannot work because the bycicle controller is not emulated at all
Plus, I have added support for some more pirate pcbs, mostly used by multigame carts or FDS conversions
Before 0.148u2 release, SNES carts got converted to slot devices as well. Like with MegaDrive and Virtua Racing, the main effect on the end-users is that now games using add-on chips like DSP-1/2/3/4 (e.g. Super Mario Kart, Dungeon Master, etc.) or ST-010 (e.g. Exhaustion Heat 2), or SuperFX (e.g. Star Fox) can be loaded into snes & snespal directly, without the needs of additional clone systems (snesdsp, snessfx, etc.) like in 0.148! And we also support dumps with the DSP bios attached at the end of the file, like byuu’s higan, for ease of compatibility of the files between emulators.
The rewrite had however also many other effects. For instance, the Powerfest ’94 competition cart is playable in MESS now (DipSwitches included)
But we also added support for DSP-1 games with large ROM, like Super Bases Loaded II
Furthermore, some basic support for BS-X Satellaview was added to both BS-X – Sore wa Namae o Nusumareta Machi no Monogatari
and some other compatible games
Even if most games making non trivial usage of flash memory are not working yet (which means that 70% of the BS-X carts, including the popular BS Zelda, BS Excitebike, Radical Dreamers and Treasure Conflix, will only show a black screen ), a few other work fine
Luckily, even our sloppy BSX implementation is enough to support the character data in Same Game, by just dropping samegmcc or samegamecd in the -cart2 slot available when loading samegame…
Same Game + Chara Cassette, Bomberman flavor
Same Game + Chara Cassette, Momotarou flavor
Same Game + Chara Data (which adds Tengai Makyou characters)
A more interesting addition was probably the Korean 20-in-1 multigame cart showed here, which mostly work in current MESS (even if a couple of games freeze at start)
As in the MegaDrive case, the slot code allowed for emulation of more protected SNES pirate carts
Pokemon Gold Silver
X-Men VS Street Fighter
Street Fighter EX Alpha
Also, even if MESS has supported 8MB ExHiROM/ExLoROM games with no problems since 2007, support is now more transparent and they work exactly the same as HiROM/LoROM
snaps from Dragon Quest 3 English translation
snaps from Super Demo World
As you might have guessed at this stage, a byproduct of the usage of slots is that it is now very easy to add emulation of the copy protection and of the bankswitch mechanisms used in many pirate carts. However, I can’t stress enough that without slots it would have never been possible to support properly the add-on chips as we do now
Soon after finishing MegaDrive, I have converted Game Boy and Game Boy Color carts to use internally the slot devices, and as a byproduct I found out that some “Collection” games, like Genjin Collection, Momotarou Collection, Mortal Kombat I & II and Super Chinese Land 1.2.3 were emulated as plain MBC1 even if they were in fact using an alternate switching mechanism. By fixing that, all of them now work fine in MESS and don’t freeze/reset anymore when a game is selected!
Also, I was able to add support for some pirate games which were not emulated before, like Rockman 8 (which might still have issues, given that enemies do not appear for whole sections of the levels… but it might just be the way it is originally, I don’t really know…)
and the raw dumps of Sintax chinese games (huge thanks go to Taizou, who reverse engineered the non-trivial protection for these!).
Some of these are quite interesting
others not so much, but still worth preservation to better represent the HK market
MegaDrive support has been improved some more, so that in addition to all the protected pirate carts which were supported by HazeMD, it also supports the recently dumped Super Mario World 64
and a few RPGs that not many other emus allow to play (credits go to Eke too, for the kind support in sorting out a few bankswitch corner cases)
Legend of Wukong
And, quite important from an user-friendlyness point of view, you can now use the main genesis/megadriv/megadrij emulation to run Virtua Racing
instead of using some clone systems (gensvp and c.) which many users did not even know that existed. Now you just load the game and it plays fine (by internally adding the required co-processor)
Also the slot code allowed to fix some bugs in our previous code, fixing some games which had been broken or heavily glitched in MESS for years like World Series Baseball games
WSB before (left) and after (right) the fixes!
As per Kale’s request, I also slot-ified the Saturn carts, allowing for cleaner support of Backup RAM carts. Hence, you can now format your saturn ‘memory card’ and load/save stuff there, e.g. in Castlevania Symphony of the Night
Also, you can copy data between the internal backup memory and the external one, like in a real saturn
1. select the external memory
2. select the data to copy
3. it’s written to the internal memory!