Archive for the ‘MESS’ Category
NESsundorma…
While SNES got me busy for awhile (you can check the MESS board post linked in the previous entry for a lot of screens of the progresses), last weekend I had to spend something like 12 hours in trains. The result is that I managed to work a bit on NES emulation.
In addition to a general clean up of the code for Multi-Memory Controllers (aka Mappers) and to the inclusion
of some info about most mappers (more info will be added in future, when I have some more time), I managed
to add a lot of new mappers and to fix a few of the broken ones. Enough words, time for screenshots!!!
DISCLAIMER: none of the screens below were possible before in MESS!
First of all, I fixed the Lagrange Point crash due to the code assuming CHRROM was present (no screens because the game was working in older MESS versions… nothing new to see here).
Then I added Mapper 152, which features Arkanoid 2, GeGeGe no Kitarou 2 and Pocket Zaurus (maybe others as well? I dunno)
These games were maybe working to some extent in very old versions, by using Mapper 70 code, but they became unsupported when switched to their correct Mapper 152. Not sure if they still miss anything.
Next, I fixed Mapper 22 and now TwinBee 3 and Ganbare Pennant Race! are playable for the first time in MESS (to my knowledge they had always been broken before).
Mapper 86 was choosing the wrong PRG banks. Once I fixed those, Moero!! Pro Yakyuu started to work.
Mapper 87 had some banking problem as well, and Jajamaru no Daibouken was not even reaching its title screen.
Now it is fixed
[btw I found the solution to this problem in NEStopia source: thanks a lot for the wonderful emu, Marty!!]
Mapper 93 was using the wrong writes to decide which PRG bank to use. While this was ok for most games,
Shanghai (the non-Sample version) was not working. This got rectified and the title is now playable
Another round of fixes and, for the first time, we have working Mapper 95 emulation. This means that we can play Dragon Buster in MESS
I also fixed Konami VRC1 CHR swapping, and now Tetsuwan Atom shows the correct graphics (thieves in the picture below were garbled previously)
I found out that Mapper 232 was not refreshing its PRG banks. Once properly implemented, Quattro series titles were finally working (although some games still present glitches)
Fixing Mapper 33 starting bank config, Akira now shows its intro rathen than a black screen
The game still lacks part of the graphics (e.g. texts at start), but it is still a progress.
Finally, I found why Mapper 46 was broken and now games in the Rumblestation multigame cart can be selected and played
This basically covers the fixes I have done to classic mappers. More work is required in the driver: not only MMC5 is missing several features (which are probably beyond my skills), but other common mappers like MMC1 and MMC3 have some small problems that would be nice to fix. I will look into those later.
In addition to the above, in the past couple of weeks I also added a few pirate mappers for Asian games which were previously unsupported in MESS. Let me review here these new mappers as well.
MESS is now supporting:
Mapper 143
Dancing Block is remarkable because is probably the only NES game which works in MESS and does not in NEStopia (the basic idea of the fix came from FCEUMM, thanks to Cah4e3 and other authors)
Mapper 250 – Time Diver Avenger looks like an interesting action game
Mapper 156 – Metal Force is a nice MegaMan kind of game
and Buzz and Waldog (mapper 156 again) is a cute platform game
Moreover, I decided MESS had to support all games made by Sachen. Hence, I added
Mapper 136
Mapper 137
Mapper 138
Mapper 139
Mapper 141
Mapper 145
Mapper 146
Mapper 147
Mapper 148
Mapper 149
I also fixed Qi Wang (mapper 133) which was not working, and now is ok (almost)
I also added the following Sachen mappers, which still have some graphical issues
Mapper 150
Mapper 243
While the above mappers include most Sachen games and they are mostly playable, I’d like to fix the graphical problems sooner or later…
But Sachen / Thin Chen was not the only Asian producer in the famiclone market. Therefore, I also worked on implementing / fixing some more easy pirate mapper for MESS. The results are the following (notice that a few games, like some Subor ones, won’t work without emulating custom keyboards/controllers, but I’ll look into these later):
Mapper 36
Mapper 38 (but inputs are not recognized apparently)
Mapper 39
Mapper 132
Mapper 166
Mapper 167
Mapper 171
Mapper 172
Mapper 173
Mapper 176
Mapper 177
Mapper 178
Mapper 179
Mapper 196
Mapper 216
Finally, some multigame carts got added / fixed
Mapper 58 (fixed)
Mapper 201 (fixed)
Mapper 204 (added)
Mapper 212 (added)
Mapper 213 (added)
Mapper 214 (added)
Mapper 222 (added)
Mapper 104 (added, but not working)
Mapper 225 (added, but not working)
…and SNES improves as well!
You may have noticed, if you follow MAMEDev’s blogs (especially this one) or if you follow MESS forums (especially this thread), that SNES emulation in MESS is finally receiving some love
After cleaning up a bit the line drawing routines (which were using a lot of duplicate code, resulting quite hard to follow), I can finally present my first fix with visible result for the end user…
Take a look to Super Chase H.Q.:
before
and after
Or to the zoom effect in Ys III intro:
before
and after
Mode 7 is now much better[1] in MESS!
[1] fyi, it was a matter of precision. kudos to anomie, byuu and all the others which have investigated (and understood) the correct math underlying Mode 7
NES is back!
Yeah, it’s true!
Heretical_One’s work on NES PPU has finally produced the long awaited result and, after 3 months, MESS is able to emulate Nintendo Entertainment System / Famicom games again!
Not only the old supported mappers are back in all their shining splendor, but now MESS can do something which was impossible earlier:
In other words, MMC5 can finally be supported (even if there are still graphical glitches here and there). And now, let me go back fighting against Dracula as Trevor Belmont, please… 😉
p.s. the Japanese version was already playable, since it used a different mapper
Busy…
Long time with no news, but I’ve been really busy with work, and real life…
Moreover, Eclipse (the svn front-end I was using) decided to make my life real hard: it kept giving me errors when I was trying to update my sources to latest developments and it decided to delete (without the expected prompting for confirmations) a few changes I was working on for MAME [1] and that I will need to rewrite, when I’ll have some more time. In the end, I switched to svnX, a very nice OSX GUI, but the headaches Eclipse gave me are still around 🙁
However, MESS development has progressed very fast while I was concerned with non-emu stuff! A huge number of skeleton drivers had been added before 0.132 and immediately after, to preserve the known dumps of obscure machines and to document available info about hardware and memory maps, in perfect MAME-style. And these additions start to produce actual results!
Mahlemiut is doing an awesome job with Fujitsu FM-7 and FM-77AV! In particular, MESS is the first chance for Mac users to see emulated this family of Japanese computers!
Moreover, thanks to Micko, we have emulation of the Canon CAT, of the Videoton TV Computer 64, of the AC-1 and of many Eastern Europe computers which have never been emulated before. He also did some work on the Nintendo Virtual Boy (but no visible results yet)!
Finally, Curt Coder keeps changing skeletons in perfectly working systems, bringing to MESS users emulation of Bondwell 12 & 14, of Tiki 100 & Contiki 100 and of C-80, LC-80 & LC-80.2 among the others.
Adding the ongoing work to fix NES emulation by Heretical One, the coming soon official addition of Game Boy Advance emulation and the fixes to BeBox machines (both courtesy of Arbee), I think MESS has never been so exciting to use! 🙂
[1] Basically, I was converting a few EEPROM chips used in naomi.c and ksys573.c to be MAME devices. Nothing really exciting for the end user, but useful to make the source cleaner.
Commodore tapes…
Last weekend, I spent some time to understand why C16 tape emulation was not completely working in MESS.
Since Commodore tape fixes were my first serious contributions to MESS and since C64, C128 and Vic20 tapes were already perfectly working, I had been a bit disappointed when my attempt to fix C16 never produced any result.
I mean, launching C16 in MESS, you were able to load games from cassettes and to play these games. But for some reason the motor was not correctly turned off.
Similarly, recording BASIC programs on tape was not working: the cassette drive was going on and on even after the BASIC routine had printed on screen that saving was finished.
It took me half an hour to spot the mistake in the previous implementation. As a result:
after saving a program….
…you can reload it…
…and it runs (thinking back, it could have been funnier to make the program write “Hora” 😉 )!
Not very exciting, you will probably think. But I’m really satisfied to have moved MESS one step closer to perfect tape emulation for Commodore drivers!
No luck with PET cassettes, unfortunately. Those still remain in my TODO list and might be fixed sometimes in the future…
In the meanwhile, a lot of skeleton drivers have been included in MESS and Curt Coder has done astounding progresses on my barely sketched Kyocera driver. You can now fully enjoy Olivetti M10, Tandy TRS Model 100, NEC PC8201A and Tandy Model 200 (and even some of their successors), by compiling the current svn source! Or you can wait for MESS 0.132…
I love it when a plan comes together!
Quite often, drivers which are not actively maintained in MAME/MESS suffer of unexpected regressions when some new functionality is added to MAME core. In the case of MESS drivers, similar regressions are seldom immediately reported [1] and it becomes harder and harder to fix them.
Atari 400/800 floppy disks are a good example of this. In the development cycle between 0.129 and 0.130, PIA emulation was converted to use the MAME device framework. Unfortunately, atari.c and related drivers in MESS were strictly entangled with MAME sources, making hard to understand which functions were used by the various components… As a result, the serial communications between computer and floppy drive got lost in the conversion. But no one realized this fact for months!
A couple of weeks ago, cleaning up a bit the MAME side of Atari emulation (used for Max-A-Flex) from MESS specific code, I noticed that there was a function in atarifdc.c which was not used anywhere. Having no clue about its original use, and being without Atari floppy disks to test floppy emulation, I simply decided to ignore it…
Finally, a couple of days ago, Tafoid pointed out that floppy disks were broken in Atari 400 & 800. And he also found out that the breakage had happened after MESS 0.129.
I studied the source and it turned out that the unused function in atarifdc.c (the one I had noticed in the cleaning up process) should not had been unused at all!! Indeed, it was needed to allow communications between the computer and the floppies.
Checking the source changes made when PIA emulation was updated, I found out where the function was required (in the PIA interface for a400 & a800) and I added it back.
Quite sure that I had solved the problem [2], I launched emulation in MESS and…
I spent half a day debugging the floppy code with no success, then I decided to try MESS 0.129 and the result was the same… Boot errors and nothing more.
Wasn’t floppy emulation supposed to work in 0.129?
I was really puzzled, until Tafoid told me he was able to use floppies after my fix… Then, I understood: I was using a broken .atr image in my testing!!! LOL!
Google was my friend and, after few minutes, I was finally able to verify that the floppy emulation was indeed fixed!
Hooray!
Thanks again to Tafoid for the report: without his testing, we could have noticed the regression in 2012 😉
[1] either because no one uses MESS, or because users stick with older versions rather than file a bugzilla report (depending on the case)
[2] Juergen’s code is very solid even years after it’s been originally written
Once upon a time…
…in Japan there was Kyocera (a.k.a. Kyoto Ceramics). In 1983, Kyocera produced the smallest and lightest portable computer of its time: the Kyotronic 85!
Its success, due to being cheap and fed by simple AA batteries, resulted many licensed clones across the world: TRS-80 Model 100, Olivetti M10, NEC PC-8201, etc.
Fast-Forward in time. In Nov 2008, I got interested in Olivetti M10 (and Model 100) because I found listings of both BIOS. Hence, I started writing a skeleton driver for MESS to support this hardware. I sketched the memory maps and added checksums. Not much more. Then I was forced to take a break, due to personal reasons, and I managed to come back to the driver only last week.
I updated the source to the latest core and, while looking for more info about the IO map in internet, a miracle happened: I stumbled in a preliminary driver to add NEC PC8201 to Xmess 0.37b13.2 (courtesy of Hamish Coleman)!!
I revamped its video code, added a couple of unmapped IO reads (devices to be added at a later stage)…
et voilà: I had a correct display of the emulated OS!
Say hello to:
- Olivetti M10 (not sure if Euro, US or both)
- Kyocera Kyotronic 85
- TRS-80 Model 100
- TRS-80 Model 102
- NEC PC-8201A (US version of the Japan-only NEC PC-8201 [1])
Not very exciting, yet. But I will probably submit it soon to MESS svn, right after some more meat has been added to the bones (e.g. inputs and rtc), to be sure the code is not lost if my macbook decides to self-destroy itself.
[1] NEC PC-8201 might be a simple drop in, if a dump of the BIOS surfaces…