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

作者: conpo (獅子たちの旗)   2018-03-08 20:07:30
2018.03.06
"Feeling NO2talgic"
While there haven’t been many updates here over the last couple of weeks
anybody who has been watching my YouTube channel will have seen various
videos showing the progress on XaviX based games.
My primary goal with XaviX emulation is to understand the hardware well
enough to get the Taito and Namco Nostalgia TV games up and running as they’
re interesting arcade ports containing remixed versions of each of the games,
which were exclusive to the units and as it’s becoming more and more
difficult to find new TVs with component inputs they risk becoming dead /
mostly unusable technology at some point in the probably not so distant
future.
Mostly what ended up happening is I got stuck emulating those, but thanks to
the dumping efforts of Sean Riddle (along with Peter Wilhelmsen for
purchasing many of them) I did end up with a number of other dumps to look
at, each one telling me a little bit more about the hardware in order to
further the emulation.
Probably the most interesting of those dumps is ironically one of the first
ones to be dumped and that is Play TV Monster Truck. While all the other
games seem to use a common codebase (likely one supplied by SSD Company with
slight modifications made by each developer) Monster Truck instead uses a
completely unique codebase, which actually seems a lot cleaner and easier to
follow than the other games, so ultimately that ended up being the focal
point of the initial work. I don’t really know why this, but Monster Truck
with it’s over the top giant trucks, crazy Nitro boosts and commentary that
Awesome Possum would be proud of looks like it might be the key to figuring
out an awful lot of how this hardware works.
There are multiple generations of the XaviX chip, which is a 6502 derived CPU
with onboard gfx / sound hardware. The first generation seems to add 2 new
6502 opcodes for handling far calls / returning from far calls, and for now
this is the one I’ve been working on. The later ones add more opcodes,
although from a brief glance of the code seem to have very similar, likely
compatible video hardware. I haven’t tackled those yet (although there are
some interesting titles for when I do, such as the Star Wars Lightsaber
Battle Game and a similar Lord of the Rings one)
What’s interesting about the XaviX is that it has a very console-like
design, meaning that the graphical features it has can be configured in a
number of ways via registers in order to suit the needs of the developer.
What we’ve seen so far with the dumps is that the developers made full use
of that, with most titles using the hardware in a slightly different way;
Monster Truck is especially interesting in this sense because it uses a
tilemap mode where the tiles numbers are actually pointers to data structures
containing a packet (which controls colour and flipping) as well as the
actual gfx data. Other games don’t enable that mode, and use the tile number
as a regular tile number, pointing directly to gfx data. There are also bits
to enable / disable the use of additional attribute tables, as well as change
the offset multiplier, and use a redirection table. Furthermore, data can be
anything from 1-bit per pixel to 8-bit per pixel and is stored in packed
format in the ROMs, so it can draw even 5 or 7bpp data as tiles or sprites
straight from the packed data in the rom, without having to expand it first.
It looks like every object / layer can specify priority too, which needs to
be checked for every pixel drawn (sprite list doesn’t seem to be in priority
order, priority comes from an attribute) I haven’t yet emulated that tho.
There also seem to be unknown ways to force tiles to be solid / use blank
data, which Boxing makes use of, and again I haven’t figured out yet.
Sound, which I haven’t looked at yet is just plain 8-bit PCM.
Palettes are interestingly the same format as the Radica games like Space
Invaders and Golden Tee Home, which does make me wonder if there is some
connection between the hardware even if those don’t have the hardware
flexibility or custom opcodes.
So far the main problem I’ve encountered is various games going off the
rails, the 6502 crashes, causing code to execute in the wrong order, or just
crash entirely. As a result most games are not yet playable (although if I
add the additional ADC interrupt and hook up the controls on Monster Truck it
would definitely be close) I suspect the code execution problem is either due
to some issues with how I’ve hooked up the custom memory mapping, or just
with the interrupts / various status flags as my interrupt disable is very
obviously wrong at the moment and I’m not generating the secondary interrupt
at all.
Either way, I figured it was about time I put up some screenshots showing the
current state of progress. As I said, I don’t consider any of these playable
yet, as most hang at some point, don’t have controls yet, or have noticeable
graphical issues, but it’s all progress to look back on.
https://mamedev.emulab.it/haze/pics2018/xavixx_6.png
https://mamedev.emulab.it/haze/pics2018/xavixx_7.png
https://mamedev.emulab.it/haze/pics2018/xavixx_8.png
https://mamedev.emulab.it/haze/pics2018/xavixx_9.png
https://mamedev.emulab.it/haze/pics2018/xavixx_10.png
https://mamedev.emulab.it/haze/pics2018/xavixx_11.png
https://mamedev.emulab.it/haze/pics2018/xavixx_12.png
https://mamedev.emulab.it/haze/pics2018/xavixx_13.png
https://mamedev.emulab.it/haze/pics2018/xavixx_14.png
https://mamedev.emulab.it/haze/pics2018/xavixx_15.png
https://mamedev.emulab.it/haze/pics2018/xavixx_16.png
https://mamedev.emulab.it/haze/pics2018/xavixx_17.png
https://mamedev.emulab.it/haze/pics2018/xavixx_18.png
https://mamedev.emulab.it/haze/pics2018/xavixx_19.png
https://mamedev.emulab.it/haze/pics2018/xavixx_20.png
https://mamedev.emulab.it/haze/pics2018/xavixx_21.png
https://mamedev.emulab.it/haze/pics2018/xavixx_22.png
https://mamedev.emulab.it/haze/pics2018/xavixx_23.png
https://mamedev.emulab.it/haze/pics2018/xavixx_24.png
https://mamedev.emulab.it/haze/pics2018/xavixx_25.png
https://mamedev.emulab.it/haze/pics2018/xavixx_26.png
https://mamedev.emulab.it/haze/pics2018/rad_fb.png
There are a number of other ‘first generation’ XaviX games dumped that don’
t do anything worth showing yet, including Ping Pong, Baseball 2, Taito
Nostalgia 1 and Namco Nostalgia 2. I think all the current problems with
first generation games not booting / crashing will come down to the same
thing, so hopefully once I’ve figured out what the problem is I’ll have
significantly more to show.
There are other non-Xavix TV games still in the pipeline too (I bought a few
over here such as ConnecTV Cricket and donated them to Sean, so assuming the
parcel doesn’t get lost I’ll have those to look at too at some point, I
suspect that one is unSP hardware like Skateboarder was)
https://mamedev.emulab.it/haze/

Links booklink

Contact Us: admin [ a t ] ucptt.com