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.
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)
Great job. Bass Fishin’ is a great find, I think. Always found those fishing games interesting, especially now since fishing games are perfect candidates for virtual reality.
on that note kind of there any hope for the mid 2000’s japan mobile games because there was some cool stuff made then
somebody more familiar with Japan’s mobile industry would have to source the phones to dump, and emulate, and then source proper images of the software (which from what I’m told might not even exist anymore, because they were tied to services that are no longer online)
mamedev can’t really do everything, especially when it comes to obscure tech from markets that are difficult to penetrate. somebody on that side of the world would ideally be involved in doing it.
Exactly true… I was in Japan in the early 2000’s and I actually still have my flip phone (the P503iS for what it’s worth). I remember playing a few very basic Namco arcade themed puzzle games on the phone at the time – there was one based on Tank Battalion which was pretty fun – but these little games were only playable through an online service. Just to be sure I powered it up and yep, nothing was on it.
Hi David I have been trying to contact you. I am curious if you have looked into the Savage Quest emulation? I was told by someone in the Emulation scene you are the only competent who seems to know what they are doing.
I also have Savage Quest 2.1 if you guys are wanting that – if you can please contact me by email.
Savage Quest is PC hardware, and I really have nothing to do with the emulation of that side of things I’m afraid.
There are people involved with MAME who are more knowledgeable about PC hardware, although I suspect the problem here is that MAME’s PC hardware emulation isn’t well tested above 486 level.
Alt. revisions are always welcome of course, it would be a shame if anything got lost.
Hi Haze – thanks for the Response. Interesting – hmmm who would know more about hardware emulation or is working on
something to do with the 486 level. Cause I thought all that hardware old PC type stuff was emulated already in dosbox?
-Thanks
486 level isn’t the cutoff so much as the introduction of PCI. We emulate ISA systems very well, but PCs with PCI are still in the early stages.