etabeta's playground

MESS & MAME wip

Archive for the ‘MESS’ Category

NESsundorma…

without comments

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)
map152_01map152_02map152_03map152_04

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).
map022_01map022_02

Mapper 86 was choosing the wrong PRG banks. Once I fixed those, Moero!! Pro Yakyuu started to work.
map086

Mapper 87 had some banking problem as well, and Jajamaru no Daibouken was not even reaching its title screen.
Now it is fixed
map087_01map087_02
[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
map093

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
map95_01map95_02

I also fixed Konami VRC1 CHR swapping, and now Tetsuwan Atom shows the correct graphics (thieves in the picture below were garbled previously)
map075

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)
map232_01 map232_02

Fixing Mapper 33 starting bank config, Akira now shows its intro rathen than a black screen
map033
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
map046_01 map046_02

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
map143_01
map143_02map143_03

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
map250_01 map250_02

Mapper 156 – Metal Force is a nice MegaMan kind of game
map156_02map156_03

and Buzz and Waldog (mapper 156 again) is a cute platform game
map156_04map156_05

Moreover, I decided MESS had to support all games made by Sachen. Hence, I added

Mapper 136
map136

Mapper 137
map137

Mapper 138
map138_01map138_02

Mapper 139
map139_01map139_02map139_03

Mapper 141
map141_01map141_02map141_03

Mapper 145
map145

Mapper 146
map146_01map146_02

Mapper 147
map147_01map147_02

Mapper 148
map148_01map148_02map148_03

Mapper 149
map149

I also fixed Qi Wang (mapper 133) which was not working, and now is ok (almost)
map133_01map133_02

I also added the following Sachen mappers, which still have some graphical issues

Mapper 150
map150_01map150_02

Mapper 243
map243

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
map036_01map036_02

Mapper 38 (but inputs are not recognized apparently)
map038

Mapper 39
map039

Mapper 132
map132

Mapper 166
map166

Mapper 167
map167

Mapper 171
map171_01map171_02

Mapper 172
map172

Mapper 173
map173_01
map173_02map173_03

Mapper 176
map176_01 map176_02

Mapper 177
map177_01map177_02map177_03map177_04

Mapper 178
map178

Mapper 179
map179

Mapper 196
map196

Mapper 216
map216_01map216_02map216_03

Finally, some multigame carts got added / fixed

Mapper 58 (fixed)
map058_01 map058_02

Mapper 201 (fixed)
map201_01map201_02

Mapper 204 (added)
map204

Mapper 212 (added)
map212_01map212_02

Mapper 213 (added)
map213

Mapper 214 (added)
map214

Mapper 222 (added)
map221_01 map221_02

Mapper 104 (added, but not working)
map104_01 map104_02

Mapper 225 (added, but not working)
map255

Written by etabeta

September 30th, 2009 at 9:00 pm

Posted in MESS

…and SNES improves as well!

without comments

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
before

and after
after

Or to the zoom effect in Ys III intro:
before
before,II
before,III

and after
after,II

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

Written by etabeta

August 8th, 2009 at 8:48 am

Posted in MESS

NES is back!

without comments

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:

cv3_00

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… 😉

cv3_01

p.s. the Japanese version was already playable, since it used a different mapper
aku_00

Written by etabeta

August 2nd, 2009 at 1:59 pm

Posted in MESS

Busy…

without comments

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.

Written by etabeta

July 13th, 2009 at 10:37 am

Posted in MAME,MESS

Commodore tapes…

without comments

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….
save01save02

…you can reload it…
load01load02

…and it runs (thinking back, it could have been funnier to make the program write “Hora” 😉 )!
run

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…

Written by etabeta

May 21st, 2009 at 3:39 pm

Posted in MESS

I love it when a plan comes together!

without comments

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…

a800_1

 

What!?!

 

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.

 

WHAT!?!

 

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!

a800_3

a800_2

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

Written by etabeta

May 1st, 2009 at 11:01 am

Posted in MESS

Once upon a time…

without comments

…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!

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)

    olivm10

  • Kyocera Kyotronic 85

    kyo85

  • TRS-80 Model 100

    trsm100

  • TRS-80 Model 102

    trsm102

  • NEC PC-8201A (US version of the Japan-only NEC PC-8201 [1])

    npc8201a

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…

Written by etabeta

April 17th, 2009 at 1:32 am

Posted in MESS