MAME/MESS v0.148u2 - 模擬器

Rosalind avatar
By Rosalind
at 2013-03-20T23:13

Table of Contents

"What's New In 0.148u2"

This is a ‘live’ article, it will see various updates until I eventually
declare it finished.

There are two ways you can judge an emulator, either by what it can do, or
what it can’t do. Personally I’ve always favored the first option, it’s a
more positive outlook, and it’s a good one to take with MAME, and especially
MESS, or the combined UME project (and it’s part of the whole philosophy
behind it, UME allows you to do more than MAME)

It’s with that introduction I’ll mention some of the progress in 0.148u2
coming from the MESS side of things. It goes without saying that the Jaguar
driver is a bit rubbish, in terms of what it *can’t* do you could fill a
list covering most of the system library but I’m going to focus on what it
can do here, and 0.148u2, thanks to some work from Ville, expands what it can
do into the realm of being able to run Tempest 2000, the psychedelic
follow-up to Atari’s arcade classic. The game runs and is very playable on
my Core2 system with full sound, I don’t think the graphics are perfect but
it’s a huge improvement on before where it would simply crash the emulator
due to unsafe blitter operations overwriting the game ROM in memory!

http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_temp2k_4.png

Purists might say it lacks the crisp vector look of the original, although
that’s obvious given that it isn’t running on vector hardware here, but it
has a style of it’s own, and I feel could easily have been an arcade
release. Jaguar will need a lot more significant work applied (probably a
full rewrite) before it’s anywhere near a good driver, but nice to see it
getting a bit of attention in the same way that u2 has given some attention
to several older MAME drivers. The original Jaguar version of Rayman also
benefited from the changes with the collisions now being fixed, although that
still lacks sound and the save feature shows ‘ERROR’ in all slots, still it
complements the progress made with the Saturn version of the same game in u1
nicely!

http://mamedev.emulab.it/haze/pics2013/148u2_jag_rayman_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_jag_rayman_2.png

Speaking of Saturn there have been continued improvements to the emulation of
it in u2 from Kale, mostly targeting specific issues highlighted by specific
games, but many of the improvements likely have a wider impact than the
individual test cases observed. A knock on effect of this Saturn work has
been improvements to the ST-V emulation in MAME, and as featured on Kale’s
Blog, the game ‘Zenkoku Seifuku Bishoujo Grand Prix Find Love’ is now
playable in MAME. If it wasn’t clear from the title it’s an adult game
where you undress Japanese ‘gals’ by playing various mini-games, including
a ‘find the differences’ one, ‘pairs’ and a jigsaw game. Typical 90s
garbage really, but at least it works now, interesting only really because of
the platform it runs on.

http://mamedev.emulab.it/haze/pics2013/148u2_findlove_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_findlove_4.png
(Kale got Zenkoku Seifuku Bishoujo Grand Prix Find Love working thanks to a
better understanding of ST-V / Saturn hardware)

Some observations were also made about the protected ST-V games during this
development cycle, and Kale identified that the broken player / ball
movements in Tecmo World Cup ’98 were indeed related to a protection check,
although even with that fixed the game still hangs if the USA Goalkeeper gets
the ball, it isn’t clear if that is further protection on the GKs special
move, or just a bug in the Saturn / ST-V emulation. From some brief studying
of the protection it looks like Sega actually used a complex encryption /
compression system on some of the game data for these ST-V games, similar
(possibly the same as) the one used on the Naomi cartridges. Further research
suggests it might also be used on Model 3, both for the games with compressed
graphics there, and even the ones doing a dumb ‘string check’. That would
mean Sega were using an encryption scheme as complex as CPS2 to perform
nothing more than a hardcoded check against a string in some cases if true,
mind boggling!

http://mamedev.emulab.it/haze/pics2013/148u2_twc98_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_twc98_2.png
(Kale improved Tecmo World Cup ’98, but it still has game breaking bugs and
bad performance)

Either way, a lot more work, and possibly extensive data collection +
analysis will be needed to either confirm or deny that theory. Decathlete
remains an odd-one out and seems to have the compression more for functional
purposes than protection, the way it talks to the device is different to the
rest, and it explicitly uploads what look like Huffman tables for the
compression. I plan on having another look at that one in the future. There
were other ST-V fixes as well, the long standing ‘some games give 2 credits
on startup’ bug appears to have been fixed as well, and while only a minor
irritation it is a sign that the driver, and understanding of the hardware
are starting to mature even a huge amount of work remains, especially in
terms of performance and video accuracy.

The work on Gunpey is included in 0.148u2, although no progress was made on
the compression, which remains problematic. My early optimism that I would
have that one sorted in a week definitely didn’t pay off! It’s actually
rather playable but still marked as not-working because a couple of the sheer
number of broken graphics caused by the missing decompression.

http://mamedev.emulab.it/haze/pics2013/148u2_gunpey_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gunpey_2.png
(Gunpey, quite playable but understanding the compression scheme has become a
sticking point)

You’re probably sick of seeing Cool Riders by now, but that is included as
well, I’d had the driver on freeze for a while as not to break in any way
prior to the 0.148u2 release, I might give some of the remaining issues
another look now that u2 is out of the way, the main irritation is still the
sound.

http://mamedev.emulab.it/haze/pics2013/148u2_coolridr.png
(Cool Riders is officially supported in 0.148u2)

On the MESS side etabeta has been giving some attention to expanded
cartridges for a number of systems. The Genesis and SNES were beneficiaries
of this, and also improved documentation of the cartridge content (rom name,
chip locations, extra hardware etc.) thanks to notes / information from ‘
ICEknight’, ‘Sunbeam’ on the MESS forums and other contributors from
elsewhere. This kind of information is essential to the documentation value
of MESS, and of course proper identification and emulation of any important
extra chips found in the cartridges.

I mentioned expanded cartridges, and for the Genesis that more often than not
means 3rd party ones, usually unlicensed (by Sega) Chinese titles and the
like many of which had unusual / custom mapping for things like their battery
backed save systems, or custom protections. A number of games previously
requiring hacked dumps to run can now be used with the proper ones, including
things like ‘Tiny Toon Adventures 3′ I am however still noticing some
stability issues with the driver randomly crashing, especially on startup
with certain games (Mulan for example) This may or may not be related to some
overall stability issues I’ve noticed since the recent HLSL work went in,
where games with dynamic resolution changes are bombing out on me at random.
The genesis does do dynamic resolution changes…

http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_toon3_4.png

http://mamedev.emulab.it/haze/pics2013/148u2_wukong_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_wukong_4.png

http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_mulan_4.png

http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_genesis_smw64_4.png

http://mamedev.emulab.it/haze/pics2013/148u2_beggar_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_beggar_6.png
(A selection of unlicensed Genesis titles where the extra hardware in the
cartridges is now emulated)

Other systems saw work on obscure carts / pirate releases too, with the
Gameboy not being excluded from that. Work was done on support for the custom
hardware used by “Shi Qi Shi Dai – Jing Ling Wang Dan Sheng” a Chinese
RPG, it still has issues with drivers other than gbpocket due to unhandled
bios interactions (maybe it only works on specific machines anyway?)
Improvements were made to the Rockman 8 support too, a pirate sequel to the
famous series although I’m not convinced it REALLY works yet, most enemies
seem to be missing until you die, and the glitches with the video timing are
irritating.

http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_shi_6.png

http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_gb_rock8_4.png

As part of etabeta’s work the SNES saw a large number of cleanups, and
refactoring to make things work in a more ‘logical’ way. For cartridges
with expanded hardware you no longer need to specify different base machines,
instead the software lists specify what hardware was in the cartridge and
dynamically add the extra required CPUs to the emulation etc. The downside to
this is that the slot system seems to be causing some pretty significant
performance issues, with a drop of 20% reported on some of the SNES titles
for which performance was already worrying (the DSP based ones). Hopefully
this is temporary, and some more intelligent coding somewhere can win it
back. The SNES also had a number of pirate titles and the like, including an
odd multi-game cart consisting of an original Tetris game alongside many
ported NES titles. Not all the games run especially well in MESS, although
many are glitch on (at least some models of) original hardware too. Like most
multi-game pirates the cartridge contains extra bankswitching logic and
etabeta needed to emulate this in order for it to run at all.

http://mamedev.emulab.it/haze/pics2013/148u2_kor10_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_kor10_6.png
(A funky SNES bootleg cart containing NES games required custom bankswitch
emulation in order to boot, although still has issues)

While that pirate cart is quite funky, there were also a number of
multi-games containing regular SNES games. Unfortunately most dumps of these
are bad, containing only the first bank, probably due to being dumped with
cart copiers incapable of dealing with the bankswitching. A similar problem
exists for many Genesis mulit-game pirate carts.

There were SNES games with additional protection as well, although many of
these seem to have been of an even lower quality than the Genesis ones.
Tekken 2 is one such example. A cracked version of the pirate game has been
supported for a while, but 0.148u2 adds emulation of the original protected
pirate cartridge too. The screenshots might look reasonable but the actual
gameplay on offer makes Fit of Fighting in MAME look like Marvel vs. Capcom.
Imagine if you will controls, animation and scrolling running at something
like 5 frames per second, and a game where most of your attacks, if you do
manage to pull any off, get blocked. It’s diabolical. As it turns out,
emulating the protection on this also allowed for another game to run, the
Street Fighter EX plus alpha pirate, that’s marginally better, but we’re
talking very, very small margins here.

http://mamedev.emulab.it/haze/pics2013/148u2_snes_tek2_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_tek2_2.png

http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_snes_sfex_4.png

You’ll have noticed something of a recurring theme with the emulation of
these pirate carts, and might be wondering why etabeta has spent his time
looking at these rather than spending time improving the actual SNES and
Genesis emulation. I think a lot of it comes down simply to levels of
interest, it’s always enjoyable to be discovering, documenting and
understanding something new then recording those findings in MAME / MESS as a
record of how they work, and while the games are often terrible that’s not
really the point. When I was working on HazeMD it was one of my goals, to
understand the things nobody had put much effort into understanding before,
so I’m glad to see that continued here, and it looks like people have even
started performing hardware tests for some of the protected carts to document
how they really work. I’ve always said the value of MAME / MESS is the
knowledge contained within it, and obviously understanding these things
increases that even when the games are of little worth.

Back to the MAME side, we decided to mark Stadium Hero 96, the game featured
in the previous update here, as working. Kale played through the game,
completing it, and reported that there only seem to be a few issues with the
clipping windows in places, and no game breaking bugs, so the IMPERFECT
GRAPHICS flag seems more appropriate than the non-working one at this point.

http://mamedev.emulab.it/haze/pics2013/148u2_stadhr96j_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_stadhr96j_2.png

I don’t usually cover bootleg clones, but ‘RevisionX’ dumped an unknown
board which turned out to be a new bootleg of Moon Cresta called Star Fighter
(making it the 3rd game we have supported to carry that name..) It has some
redrawn graphics, fast shooting, and more aggressive wave advancement
compared to the original at least, I’m not sure how it compares to some of
the other bootlegs. The colours might be wrong because no colour PROM was
dumped, and we’re using the one from the original.

http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_starfgmc_4.png

PoPo Bear, another game featured here in a previous update is also officially
supported in 0.148u2.

http://mamedev.emulab.it/haze/pics2013/148u2_popo_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_popo_2.pngFrom a more technical side of things one of the most significant updates in
0.148u2 is the complete rewrite of the 6809/6309/KONAMI CPU cores by Nathan
Woods. This was done as an attempt to make the cores cycle accurate and
should lead to far better raster effects in systems like the CoCo in MESS
with some other supporting improvements. This is a very big change, and has
the potential to break a lot, in fact when it first went in there was
widespread breakage of many drivers in MAME and MESS, but during the course
of the u1->u2 cycle the majority of the obvious ones were caught and fixed.
Just be warned, some bugs could still be lurking because it’s fresh code
replacing tried and tested old code. Naturally if you see any new suspicious
behavior introduced for games using a CPU from this family in 0.148u2 it
should be reported on Mametesters

Kale also put some work into the Casio Loopy, allowing preliminary screens of
that. The system is a difficult target primarily because there is no dump of
the BIOS. The system uses an SH1 with internal ROM, and boots the games from
that, with some code pointing back to the bios for various interrupts /
system calls. The goal of trying to emulate some of the system like this is
in part to gain an understanding how how things work, and potentially come up
with a way to dump the content of the internal ROM if the hardware allows for
reading of it from the game code. The speech bubbles shown in one of the
games might actually be an ideal starting place for such work so while most
of this looks like meaningless garbage right now it is actually potentially
very important progress.

http://mamedev.emulab.it/haze/pics2013/loopy_1.png
http://mamedev.emulab.it/haze/pics2013/loopy_2.png
http://mamedev.emulab.it/haze/pics2013/loopy_3.png
http://mamedev.emulab.it/haze/pics2013/loopy_4.png
http://mamedev.emulab.it/haze/pics2013/loopy_5.png
http://mamedev.emulab.it/haze/pics2013/loopy_6.png

Back to the ‘technical’ changes, we’ve seen a LOT of modernizations in
MAME and MESS during this update in additional to Firewave going over a lot
of drivers and devices adding proper initialization of many member variables
in an effort to keep the project both clean, deterministic and stable. Many
of these were missed during older initialization passes because the older
(non C++) device model would automatically 0 out memory when creating
devices, but the new one does not, and was leaving many things in
undetermined states, which generally isn’t a good thing because a lot of
those are detectable by the emulated system and/or can cause stability
issues. I do wonder if the Genesis stability issues I’ve been seeing while
writing this article aren’t related to a similar problem if we can rule out
the D3D code updates made for HLSL / multithreading by default. Tracking
random issues like that can be a nightmare tho, especially when they stop
happening altogether in your debug builds, so I’m glad to see preemptive
steps being taken to prevent many potential problems from cropping up later,
it certainly helps narrow things down when you have to start looking for
potential issues manually.

From the oddity department LoganB submitted a software list for the Sega
Dreamcast VMU quickload files. While these aren’t technically ‘roms’ as
such (but memory dumps) they do provide an accessible way to make use of
Sandro Ronco’s driver by validating that you’re using recognized software,
software that would definitely work on the original unit. While the approach
used is not very ‘pure’ it is convenient, and very useful for regression
testing and the like. Here are some screenshots of the Powerstone VMU memory
dump running. No new work has been done on the actual driver, but with the
software list now being present and hooked up it’s the first time I’ve
given it a run through so I thought it warranted putting some shots up, for a
reference to how it runs right now (even if it’s still marked as NOT WORKING)

http://mamedev.emulab.it/haze/pics2013/148u2_svmu_1.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_2.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_3.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_4.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_5.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_6.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_7.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_8.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_9.png
http://mamedev.emulab.it/haze/pics2013/148u2_svmu_10.png

Not all work involving MAME and MESS involves changing the actual projects
directly either. The support network is vital as well, and while I feel we
should keep a lot of this tied as close to the actual emulation distributions
as possible (rather than relying on miscellaneous forum posts and wiki
entries) it is good to see when people make an active effort to teach people
how to use MESS, and show what can be done. It’s with that I’d like to
mention a thread R.Belmont created on the MESS forums to help people
understand MESS to the point of being able to install an actual operating
system inside an emulated PC in MESS. While doing this isn’t very practical
for performance reasons it is important people realise that both MESS and UME
can make use of far more advanced features of the MAME framework than MAME
alone, and show how some of them are used. Now none of this would be possible
without the underlying improvements to the PC emulation which have been
ongoing for some time now, but the two really go hand in hand and one of the
motivating factors for the project(s) is curiosity, and that desire to do
things just because they can be done. There is another amusing thread of
screenshots of the MESS forums taken from within MESS again showing that you
can squeeze a lot of entertainment out of the projects beyond the obvious
ones.

來源:http://mamedev.emulab.it/haze/2013/03/19/whats-new-in-0-148u2/

--

ポーラステーション
http://perryt0517.wordpress.com/

--

All Comments

Nintendulator 0.975 beta (2013/03/19)

Quintina avatar
By Quintina
at 2013-03-20T22:59
http://www.qmtpro.com/~nes/nintendulator/ Nintendulator 0.975 beta (2013/03/19) is released. Nintendulator is an open source Win32 NES emulator written in ...

Pcejin SVN r209

Callum avatar
By Callum
at 2013-03-20T22:57
http://code.google.com/p/pcejin/ Pcejin SVN r209 is released. Pcejin is a PC Engine / PCE CD-ROM / SuperGrafx Emulator. pcejin takes the accurate PCE emul ...

no$psx v1.4

Emma avatar
By Emma
at 2013-03-20T22:55
http://nocash.emubase.de/psx.htm no$psx v1.4 is released. no$psx is a nocash Playstation PSone emulator by martin korth no$psx v1.4 Changelog: - gpu: v ...

中原之霸者

Yuri avatar
By Yuri
at 2013-03-20T19:56
請教中原之霸者的幾個疑問 -------------------------------- 有關人物出現的時間 雖然華泰攻略沒列出來 但似乎有受到年份的影響 好比說許褚要到201年才會出現 這部分有沒有確實的資料參考 破關畫面底下顯示的數字 系統是如何計算出來的 攻略寫統治度、忠誠度平均 但我全部的州統 ...

CocoaMSX v1.2

Caitlin avatar
By Caitlin
at 2013-03-20T17:50
CocoaMSX is an open source MSX emulator for OS X. * Removed the black side borders from the main emulator window * Improved mouse support (press Cmd+Click ...