Archive for December, 2012

Dear Mayans …

Sunday, December 23rd, 2012

So, what’s the current MESS status, with regards of the major systems? Everyone keeps saying that MESS sucks and the like, but I just think that people generally doesn’t try too hard with them. So, let’s do a recap, trying to take an un-biased POV especially on the stuff I’ve worked on. Notice that I won’t talk about some systems (basically anything created by Apple, Amstrad CPC, Sinclair Spectrum, Philips CD-i etc.) just because I don’t know jack about these ones so it’s basically pointless to share my opinion on them (hopefully that somebody will complete this article on their blog):

________________________________________________________________________
ASCII / Microsoft
________________________________________________________________________
MSX1
Works fine, nothing special to report. (screenshot Dragon Slayer IV – Drasle Family).

MSX2
Again, works pretty good, some games won’t work on a stock MSX2 due of configuration issues, you need to try some clones first before moaning. Anything that uses V9958 YUV mode doesn’t work also, but that’s primarly a MAME issue for Puzzle Star / Sexy Boom … (screenshot Space Manbow)


________________________________________________________________________
Atari
________________________________________________________________________
A2600
Was broken before, now it’s again in top shape. Carts all worked fine. Haven’t tried to load tapes, because I don’t know how to (screenshot: E.T.)

A5200/A400/A800
Works well except for some small timing issues in a bunch of tested SWs. For whatever reason 5200 driver has some booting issues that are absent in a400 / a800 (it supposedly has just less RAM?), so stick with the latter for the time being. (screenshot: H.E.R.O.)

A7800
Works good enough as far as I can tell. (screenshot: Ninja Golf):

Lynx
Emulation was broken a bunch of years ago, it’s now pretty solid, everything I’ve feeded worked fine (I think it was improved by Huygens at some point, let me know if I’m wrong). (screenshot: Marlboro Go!):

ST
Nothing boots at all (apparently disk format used isn’t yet supported) and no input seems to work on OS screen. (screenshot main BIOS screen)
EDIT: according to Mike Abson of MESS forum, .ipf format is actually supported and a bunch of games loads fine, still with no inputs however.

Jaguar
Only a 40-50% of the games boots on this if they doesn’t trip weird bugs (like the one in Tempest 2k, where it overwrites the cart ROM region for whatever reason), and even if they does, there are many issues with the annoying video device/blitter. Jag CD isn’t emulated at all, but without a solid base behind that isn’t even to be taken into consideration. (screenshot: Double Dragon V):


________________________________________________________________________
Commodore
________________________________________________________________________
Vic-20 / Vic-1001
Very slow driver, and inputs are pretty unresponsive most of the time (and no joystick support, so you can’t possibly start some games). Some games (like A.E.) also sports offsetted gfxs. Nowhere near as usable, no … (screenshot: D-Fuse)
EDIT: for the joystick support, it was because you needed to actually type -joy1 joy in the command line. I’ve changed that to be default behaviour.

C-64
More or less same performance issues as Vic-20, but it improved greatly with recent commits (just one month ago it was borderline unusable). Carts seems working with a fair share of issue, datassette and floppy devices trims even more the compatibility ratio. If you’re lucky and get anything to boot, games are somehow working with some video timing glitches. (screenshot: Aztec Challenge):

C-128
It’s currently under development by Curt, it’s the very definition of a WIP driver, with two screens attached (!) and booting behaviour varies, between chars in the wrong screen, chars in the right screen or no chars at all. It’s also very slow and keyboard inputs are inconsistant (i.e. pseudo-randomly works or not), so just like Vic-20 it’s not really usable. (screenshot main BASIC logo

Amiga
To be honest the driver isn’t that bad. Yes, there are various bugs that are probably silly (I’ve fixed a bunch in the past month) and some SWs fails loading … basically your usual hit or miss situation, IF you know two tricks: (a) sometimes you have to press the mouse left button in order to advance some screens (especially trainers) and (b) in order to disk swap properly, you have to first unmount your previous image then load the new one, both just like a real Amiga. Hopefully somebody will step up and improve the situation at some point … (screenshot: Deflektor)


________________________________________________________________________
Fujitsu
________________________________________________________________________
FM-7 / FM-77AV
Works fairly well. Some disk images refuses to load in the MESS file manager (fails to recognize properly the disk geometry). FM77AV support is very preliminary (I’ve feeded it with the Demo program, gfxs are completely garbled) (screenshot Bokosuka Wars)

FM Towns
It generally works with a fair share of gfx issues, apparently Windows 95 is even usable on that. It’s just not extensively tested I think, so if you want to do it be our guest. (screenshot Last Survivor)


________________________________________________________________________
IBM
________________________________________________________________________
PC/XT PC/AT
Right now the x86 CPU is very solid, so the PC/AT can run and install every available Windows up to ME with a i486 and several *nix distros. As for the video/sound, some ISA cards are emulated, but there are still a fair share of bugs with them (most known one is the horizontal pel shift bug in VGA that happens in Alien Breed and Sensible World of Soccer. It’s basically used for horizontal scrolling, but values doesn’t make much sense as per now). Some SWs also behaves weird (for example: Heroes of Might & Magic hangs once that you go in end turn phase). Will see to iron out these issues in the next months … (screenshot Windows 95 with Solitaire on the foreground)


________________________________________________________________________
NEC
________________________________________________________________________
PC-60xx
System is marked GNW just because it handles cassette tapes via an hack (use -cart2 option to load anything, then follow whatever instruction needed by the SW). The rest it behaves fairly well, including up to MK-2 support. You can’t save, and some edge cases doesn’t work at all (i.e. one version of Xevious). Video needs a MC6847 merge with the one used by CoCo (only regular PC-6001 tho, Mk-2 uses a special version of the chip), and there’s still a i8255 hack that needs to be ironed out. (screenshot Flappy)

PC-88xx
With anything that doesn’t fail floppy copy protection, it works decently. I can fairly assume that the uPD765 usage in some SWs is very creative, so the compatibility ratio is about 70-75%. It also needs a better implementation of some chips (i8214 and uPD3301), so anything that abuse those is going to fail (even though I hardly know of any SWs that does so, just the sound tends to die from time to time due of the correlated irq). Also, stock PC-8001 doesn’t work due of a lack of a mantainer, stick with PC-8801 and flip the Basic DIP-SW to N-Basic if you want to try them. Cassette and CD aren’t supported either, we don’t have any heck of an info for the latter (not even what’s the procedure to load from CD-ROM), should be the same protocol used by PCE CD for what is worth … (screenshot Replicart)

PC-88VA
Doesn’t boot anything, due of 1+ bugs with the DMAC (same one as FM Towns). It also needs a complete video rewrite, hopefully device-style (screenshot PC-88VA2 settings menu):

PC-98xx
Under WIP by me as per now, it’s coming along pretty nicely as well. Only floppy games works as per now with an hit and miss compatibility (formats supported: .fdi and .d88), and keyboard is sometimes fussy (needs proper UART hooked up), but anything that boots does it without too much to write home about. PC-9821 support is very preliminary, and it somehow works for everything that is exclusively on floppy and doesn’t use the EGC, although very performance hitter. Anything compiled with BASIC most of the time fails badly (Xevious, Adventureland), presumably there are issues with uPD7220 opcodes. Sound boards PC9801-26 and PC9801-86 are more or less supported, no MIDI for now. (screenshot A-Train 4)


________________________________________________________________________
NEC / Hudson Soft
________________________________________________________________________
PC Engine
System is emulated decently enough with the current video code, with several games that fails because the latter. A new core device is under development by Judge from some time, but it’s still not yet ready for the prime time (mostly due of performance issues). SGX is emulated too, provided that you care anyway. (screenshot Zipang):

PC Engine CD
More or less the same situation than stock PCE, except that the CD code adds up more failures in it. It’s mostly an irq/timing issue, I need to rewrite that part at some point. There’s also an issue with ADPCM sound samples, if they need to stream continously the correlated irq won’t signal that it needs more data, ending up in muting the sound. Being a CD system there are many lazy dumps, and that’s an issue also due of the weird geometry that some games might have. Finally, for the curious: Akumajou Dracula X works completely only if you have the aforementioned new PCE video device core in, it otherwise hangs in several spots. (screenshot: Final Zone II):

PC-FX
Very preliminary, it shows a very basic OS screen with bad colors and nothing more (it uses a complex YUV calculation). There are issues with V810 CPU irqs, they makes the framework to crash if two happens at the same time (it’s also a shared issue with Virtual Boy). Not a single line of CD-ROM device code is written at all, but it’s a super-set of the one also used by PCE/PC-8801 anyway (so using this system as a base for rewriting it might be a good idea).


________________________________________________________________________
Nintendo
________________________________________________________________________
NES / Famicom
Some mappers aren’t emulated, but otherwise works fine (compatibility 80%). PPU mid-frame changes doesn’t work too well (off by a bunch of scanlines, generally), and sometimes you get garbled gfxs. It can load Famicom disk images too. Needs some serious reg-testing and somebody that is willing to rewrite the whole video system from scratch (according to Etabeta). (screenshot: Kage):

Super NES / Super Famicom
Compatibility ratio is decent as per now, it’s not yet at BSNES level and some extra chips aren’t yet supported (example: SA-1). The major problem with this is still the main<->sound timings, we’re still cycle stealing too much or too little, depending on the situation. It needs a major rewrite of the CPU emulation (that should also take open bus into account). Also, video emulation isn’t too good either, but the whole thing is currently annoying enough to debug, last time I’ve fixed a very simple bug (Robocop 3 missing sprites, caused by incorrect VRAM wrap-around) it took me about 3/4 hours. Too much. (screenshot: EarthBound)

Game Boy
A bunch of very slight timing issues (Souko Ban 2 menus has a stick charset that bogusly appears), but it’s otherwise fully working as far as I can tell (screenshot: Koi Wa Kakehiki):

Game Boy Color
Not tried too much, but there are a fair deal of gfx/timing bugs on this one (example: Montezuma’s Return on THQ logo). It seems otherwise more or less in a working state, just not extensively tested. (screenshot: Gambler Densetsu Tetsuya):

Virtual Boy
Fairly decent, for something that has very obtuse documentation available. Framebuffer isn’t yet emulated properly (don’t know how/where to clear them) so a bunch of games doesn’t work (the ones you don’t want to play anyway, like WaterWorld), and the V810 core has various bugs (so sometimes crashes or sports weird bugs, like a lack of collision for some spots in Galactic Pinball), but I think it’s fairly usable otherwise. A good trick is to enter into Video Options and use either one of the two screens, the system can be pretty intensive and doing it gives a performance boost. (screenshot: Bound High)

64 / 64DD
Performance varies greatly on this one according to what happens on screen (it ranges between 20% to 100% and above). Compatibility isn’t great, most games either crashes or throws black screens. Former might be due of some silly floating point assert within the gfx system, it’s certainly something that’s shared (examples: Bangai-O, Fushigi no Dungeon 2, Sin & Punishment, all with the same assert type). Only the BIOS is supported in 64DD, no work has been done for the disk drive emulation. (screenshot: Bomberman 64 JP version)

Game Boy Advance
Compatibility is a lot better, compared to when I’ve reg tested the driver a bunch of years ago. There are still some video timing issues and fails on some edge cases (like the protection used in Famicom Mini games), but that’s it. (screenshot Bit Generation – Digidrive)


________________________________________________________________________
Sega
________________________________________________________________________
SG-1000
I’ve did a bit of reg testing in the past for this, *everything* boots and works fine except for Safari Hunting (that hangs as soon as a game starts). (screenshot: Girl’s Garden)

Master System / SG-1000 Mark 3 / Game Gear
They all works good enough (never got an issue with any reg tested game so far on these systems). (screenshot: Kenseiden):

Mega Drive
Things works mostly right, and compatibility ratio is about 99%. A bunch of games (Fatal Rewind, Sesame Street) doesn’t work at all, and a bunch of others has slight raster issues (Chaos Engine), a.k.a. your typical edge cases that won’t work on anything else except (I think) Kega Fusion. Haze has shown interest to iron out the issues of this system at some point. (screenshot Ichidant-R)

Mega CD / Sega CD
Stock Mega CD (the Japanese one) doesn’t load anything for now (it was working before), you need to use megacd2j if you want to play a JP game. Compatibility ratio is otherwise hit or miss, due of the timings that have a huger impact on this than regular MD. (screenshot: Dungeon Explorer)

(Super) 32x
Again, timings are annoyingly strict on this one too, and there might be SH-2 core bugs in a bunch of spots (Sangokushi or Virtua Racing Deluxe, for example). Games on this system are mostly written in pure ASM code, unlike most of the other SH-2 based systems, so there’s an higher change of core bugs happening. It’s otherwise usable, although it needs a very high end CPU if you want to play anything. A bunch of games (like WWF Raw) does illogical stuff like writing to the ROM region on the copyright screen. Enabling the ROM to be writeable makes the background logo to appear (and I think it should), if it’s a joke it’s a very good one … (screenshot: Space Harrier):

Saturn
Current SW compatibility is more or less at the level of the Yabause emulator. The major problem with this system is not that it’s too hard to emulate, but rather, the lack of vital information available. For example: there’s no info regarding VDP1 opcode timings, that definitely makes a difference on several test cases like Night Striker or Grandia. We also don’t emulate the SCU DSP at CPU level, and a bunch of games definitely relies on that by keeping it enabled (so it hangs with the current hook-up, example Magical Hoppers). Some later Sega games like Daytona USA CE or Virtual On also uses some exploit in the system to draw their 3d list, no hell of an idea about this one. Last one that I do recall as a nasty test case at the moment is the Game Basic software: it tries to do an illegal DMA (from BIOS ROM to VDP1), so the (visually appealing) demos won’t display any gfx.
(screenshot Steam Heart’s)

Dreamcast
Emulation is decent for booting some Naomi games, it isn’t at all for the console. It boots up to the swirl logo and the adjust clock screen. No much work has been done for the ATAPI CD-ROM controller, so nothing boots. It’s also VERY slow performance wise, as you can expect … (screenshot: Adjust Clock screen)


________________________________________________________________________
Sharp
________________________________________________________________________
X1
Emulation is very solid for this system, certainly on par with the other emus. It just doesn’t handle partial updates (seen in a x1 demo) and it doesn’t yet handle weird resolutions like 640 x 8 setted up in the CRTC (yes, it’s an abuse), but I will do them at some point (former needs a full rewrite of the video system). X1 Turbo Z extra features aren’t handled, but none of the available games supports them anyway. (screenshot Maja Adventure)

MZ-2500 (SuperMZ)
The SuperMZ is currently a step below perhaps even two or three compared to Takeda’s emu. Some SWs doesn’t like our FDC (garbage in Murder Club), others have weird bugs (Instant Game Over in Orrbit 3) plus the system doesn’t support neither SASI nor the network device (Moon Child relies on it). There are also some gfx bugs with some of the Dust Box programs (they are annoying to test as well). Might add support for save states and clean-up the whole thing at some point … (screenshot: Murder Club with garbled gfxs)

X68k
Worked decently in the past, it’s now broken due of uPD765 modernization and DRQ issues with the DMAC. As far as I can remember, there were issues with video (most of them narrows down to priority), and keyboard was very annoying to use (apparently key repeat isn’t handled very well). (screenshot Babel no Tou)


________________________________________________________________________
SNK
________________________________________________________________________
Neo-Geo AES
Works just like the MAME MVS driver, so let’s say it’s about 95%-98% accurate. (screenshot: WindJammers)

Neo-Geo CD
Situation with NG CD dumps is your usual cesspool, with .mp3 tracks that needs to be converted and the like. Other than that the emulation seems pretty solid again. (screenshot: Neo Turf Masters Scotland course)

Neo-Geo Pocket / Neo-Geo Pocket Color
First off, you have to press Q in order to start the emulation (the system does things in background when is in stand-by mode). Then, you have to set up various settings, it doesn’t yet save to NVRAM so you have to do it everything for the time being (just keep pressing over and over). Game compatibility is pretty good, everything worked fine in my testing minus for SNK Gals Fighters, it moans that there’s a link error, but I guess it should be trivial to fix … (screenshot: Densha de Go 2!)


________________________________________________________________________
Sony
________________________________________________________________________
SMC-70 / SMC-777
This one works well by now, provided that we hardly have documentation and software available hardly gets to 10 official releases (mostly uninteresting stuff for the regular user) and 20+ homebrew/doujinshi programs. Program bankswitch is really weird and doesn’t cope well with MAME framework, so I have a crude hack in the driver that presumably doesn’t work at all if something theoretically abuses of it … (screenshot Slip Othello, a doujinshi that runs via the System Disk)

Playstation
It’s still in a preliminary state. Memory cards doesn’t work, most games fails to detect inputs (tied to the former?) and a bunch trips unemulated GPU opcodes (Nuclear Strike, if my memory serves). Also anything that uses the Dual Shock SDK (i.e. not Tobal 2) won’t accept inputs either. CD protections are also completely unhandled, so most later games won’t work. It basically needs somebody that’s brave enough to take the task on his shoulders … personally speaking I hate MIPS arch so that’s not me in any case. (screenshot: Final Fantasy VIII title screen, via a debug trick for the protection):


________________________________________________________________________
(Various)
________________________________________________________________________
Acorn Archimedes / RISC PC
Archimedes boots up to the RISC OS available RAM text. It doesn’t go further than that (doesn’t recognize the file system?). RISC PC is just a laconic black screen (might rewrite it from scratch at some point). (screenshot: RISC OS):

Bandai WonderSwan / Bandai WonderSwan Color
Sound is very preliminary, samples volume ranges between very loud to very quiet. You also need to reconfigure the keys according to your tastes and what the game requires. Both systems are otherwise completely functional (screenshot: Makaimura):

Casio PV-1000
Dig Dug has gfx issues, Dirty Chameleon hangs at title screen (irq/bad dump?), Excite Mahjong inputs seems broken, Pachinko Ufo doesn’t start either, Space Panic has further gfx issues and doesn’t start either. Everything else works fine (so, 7 currently dumped games out of 12 works). (screenshot: Tutankham):
EDIT (24-dec-2012): fixed all of the aforementioned issues, system is currently capable of running everything right by now.

Casio PV-2000
All cart games boots and works fine. Haven’t tried cassette tapes tho (no idea if any of them are dumped). (screenshot Ski Command)

ColecoVision
Everything seems to work fine. I’m not a Coleco expert, so I wasn’t able to start a bunch of games, but it’s probably due of my lack of experience with the system (screenshot: B.C.’s Quest for Tires)

Epoch Super Cassette Vision
Everything works on this one too, except for Mappy that is way too fast and Basic Nyuumon that hangs pseudo-randomly and doesn’t accept any input. (screenshot: Lupin III)

Funtech Super A’Can
Not much is known about this, the driver just contains educated guesses. It started off well when only 2/3 games were dumped, then the other games simply doesn’t like what’s in the driver. Basically the irq/dma logic isn’t understood at all and that is the main issue with the system, with issues in video and sound sub-systems too. It definitely needs HW tests but then HW tests cannot be done easily apparently due of a cart connector protection in it (Kevtris knows more) … (screenshot: Magical Pool, via debug trick)

GCE Vectrex
Yet another solid driver, nothing to report on this one. (screenshot: Bedlam)

Mattel Intellivision
Another solid driver, nothing to report here. (screenshot: Chess )

Radio Shack CoCo
Cartridge loading sometimes are pretty intensive (Arkanoid) and it seems it hung MESS, but they otherwise loads fine after some time. System seems fully functional despite a couple of misses (Quick Diag ROM doesn’t show any text if not for a split second, Super Pitfall crashes, Rail Runner shows a broken screen and doesn’t go further). (screenshot: Temple of ROM):

同人誌

Friday, December 7th, 2012

So, latest news is that OG understood the annoying floppy code that the PC-9801 series of personal computers uses. As a result, now the driver will get my cure over a daily basis:

From the time I’m writing, status is:
*PC-9801F and PC-9801RS are the machines that works best. For the former you have to change System Configuration to load the “2HD floppy bios” if you want anything to boot from a floppy. Only 2HD images are supported, 2DD / 2D doesn’t work yet. Also, PC-9821 still pukes on the upd765 so no floppy works on that. PC-9801VM and everything else returns “ROM SUM ERROR”, obviously that means the ROMs are bad so I don’t bother that much.
*Up to 16 colors are supported, including GRCG features (rmw pixels in a bitmap). EGC / 256 colors and up aren’t. PCG is very preliminary, tested only on Dragon Buster (and even that doesn’t work too well either);
*kanji status: only hiragana/katakana works correctly (apart from Kimagure Orange Road, edge case where my current hook-up doesn’t work too well, see above snaps). Kanji are still an issue (current dump has half size roms), so it’s either garbage, filled squares or a mess of pixels;
*Some games doesn’t like my implementation of the interlace, maybe they sets that up in upd7220. For the time being just flip the DIP-SW to Normal Display / Hi-Res Display if graphics are half or double size.
*Sound: YM2203 and buzzer are supported, YM2608 & MT-32/MIDI and dunno what else aren’t. Also, some games fails to detect the sound board (and that’s weird);
*HDD images aren’t supported in any way (haven’t yet looked at SASI / SCSI interfaces, and knowing NEC I’m sure they abused of the HW even on this);
*keyboard is very preliminary. Most important feature missing is key repeat (so for example, if a game wants it to keep moving forward won’t work).
*Basic mouse is supported, except for the frequency register. At least anything I’ve tested work on that 😉

Lastly, if you want to submit a bug report drop me a line at the MESS forum topic here.