Re: [新闻] (WIP) David Haywood's Homepage

楼主: conpo (狮子たちの旗)   2019-04-02 11:18:22
2019.03.30
"The Importance of Alternate Versions"
One of the things I picked up with the money that was donated is the
following JAKKS Pacific Spiderman, which has a different, much more boxy
looking shell than the more commonly seen one with GameKey port (and the
later release of the same form with the port removed)
https://mamedev.emulab.it/haze/pics2019/olderspider_small.jpg
Spiderman 5-in-1 JAKKS
Various sources indicated that Spider-Man 5-in-1 started life as a game
running on the SunPlus SPG110 based SoC (System on Chip), not the 2xx
(usually 240) type SoCs found in all the GameKeyReady units. I felt due to
the vastly different form factor here, which appears to be an earlier and
less refined design (closer to the early SpongeBob unit, which is on even
earlier hardware) that there was a good chance that the device pictured would
be the version running on the SPG110 hardware.
It was.
While this contains exactly the same games as the already emulated
GameKeyReady version it is useful for some very important reasons. Firstly,
the Classic Arcade Pinball title is also running on SPG110, and was never
ported to SPG2xx to my knowledge. The (undumped, but sourced) EA Sports units
also run on SPG110.
The problem is, SPG110 actually differs from SPG2xx in some significant ways,
not least it uses an entirely different palette format (HSL based instead of
RGB based) and also has somewhat different video capabilities (Video RAM is
private, only writable with the CPU via DMA / port uploads, sprite format is
different, tile base register is shared, not per layer, priorities are per
tile, not per layer, transparency handling is done with a separate table, not
upper bit of palette etc.)
Having the same game on two different pieces of hardware makes it much easier
to draw conclusions about how the unemulated hardware works by comparing
code, data structures in RAM, register writes etc. between the two versions,
thus telling us plenty about the previously undocumented and not fully
understood SPG110.
This has allowed me to implement many features of the SPG110 hardware, to get
this version booting. Note, the colours are not 100% correct yet, I’ve asked
Olivier Galibert if he can look into it further as HSL decoding is not my
strong point. On the left is the SPG110 set that I’ve been making
improvements to, on the right is the SPG2xx set that is already emulated.
This kind of reference for the colours in an already correctly emulated
version is going to be an essential guideline for improving the decoding.
https://mamedev.emulab.it/haze/pics2019/spdolder0.png
https://mamedev.emulab.it/haze/pics2019/spdnewer0.png
https://mamedev.emulab.it/haze/pics2019/spdolder1.png
https://mamedev.emulab.it/haze/pics2019/spdnewer1.png
https://mamedev.emulab.it/haze/pics2019/spdolder2.png
https://mamedev.emulab.it/haze/pics2019/spdnewer2.png
Left: SPG110 hardware version with currently imperfect HSL decoding Right:
SPG2xx hardware version with correct RGB decoding
As you may have noticed, both screens show sprites, and last time I showed
Classic Arcade Pinball shots, it was lacking in sprites. Needless to say, it
now has sprites with the recent work done.
https://mamedev.emulab.it/haze/pics2019/capb_new_1.png
https://mamedev.emulab.it/haze/pics2019/capb_new_2.png
https://mamedev.emulab.it/haze/pics2019/capb_new_3.png
https://mamedev.emulab.it/haze/pics2019/capb_new_4.png
SPG110 emulation improvements have given Classic Arcade Pinball sprites and
controls
Again colours are still imperfect, but fixing Spider-Man should fix them here
too. I also added inputs so you can actually play the game.
Sound is unemulated, but seems to be closely related to the SPG2xx stuff
(probably with less channels) so I did some refactoring of all the SPG2xx
code in the process, splitting various internal peripherals into sub device
modules (including the I/O which is how I was able to hook up inputs easily
here)
Interestingly videos show a shadow on the ball for this game, yet the
hardware does not seem to have shadow sprite capability as SPG2xx does, so I’
m currently puzzled about how that is being pulled off, it could be some
raster interrupt abuse like that one SNES game does, but we’ll see. (I’m
assuming there aren’t multiple versions of this on different hardware
anyway, I didn’t think to take pictures of my unit running before sending it
off to Sean for dumping)
The earlier version of the ‘Disney’ Plug and Play might also run on SPG110,
the one we sourced and had dumped is the less common GameKeyReady unit (which
works fine in MAME) but I still need to do a proper update about that (it’s
supported in 0.208 tho)
Anyway, going to leave it at that for now, hopefully if the colours can be
further fixed it will be more worthwhile showing screenshots later. I just
wanted to highlight why buying this alt version of Spider-Man was a gamble
that paid off in terms of it enabling me to make progress on other things too.
https://mamedev.emulab.it/haze/
作者: srwcc (老马)   2019-04-03 16:32:00
长知识了有这游戏,酷

Links booklink

Contact Us: admin [ a t ] ucptt.com