Jump to content

The big driver I chose after 0.92.6...


Recommended Posts

In fact it's not so much the driver itself, it's what kind of hardware there was inside.

There is a last potential in raine which was never used in all these years : starscream, its default 68000 emulator can also emulate a 68010, but there is no game using a 68010 in raine. Now it's more complex than just calling a function to tell you want a 68010 here, you have to assemble a separate version of starscream just for that, with all its function starting by s68010, making all this a mess. But I found lately that I can use the 68000 functions to prepare the emulation and just change the cpu type at the end to actually run the emulation, and it should work, so it was worth a try after all this time...

Then something interesting. Well some old atari hardware was intriguing, using a speech synthesizer  despite their old age, these are pre-1990 games, usually the games of this era are very primitive. I even remember this kind of chip, they tried to sell some for the old 8 bit computers like the oric, it was very expensive, so nobody bought them, but it was still intriguing. Not something too complex though, the gauntlet driver seemed fine for that, it's not exactly easy, but at least it didn't look too complex, and there is a last reason for that : Neil Corlett, the author of starscream wrote a gauntlet emulator for dos a very long time ago, mge, but he didn't release the source and so this thing is totally forgotten now (and it's too bad, I would have loved to have a look at certain parts of this source). That was it, it was going to be gauntlet then !

Well I must say it's maybe the only game where I never played the arcade machine and I didn't like it, it was obviously some cash machine, something made to just get more money, making the conversions for the computers of the time actually more interesting. But still, it was worth trying this.

Well there was a 1st problem : the slapstic, which is some kind of parasitic chip connected to the rom, which intercepts the address bus requests to make things more complex. There was an incredible work done by mame in the old days to document this chip, they even made some very clear and portable source to decode them (in their old versions, since then it was contaminated by their c++ frenzy and has become very obfuscated and not portable at all, but I don't care, I just used an old version). It almost worked directly in raine without modification, almost, it gave me some small problems and this thing is not easy to debug, but anyway.

After that, there was the fact their sprites for the "playfield" layer are inverted (they should be xor-ed with 0xffff, it took me a very long time to find out because I am not good with sprites problems). Anyway it was an interesting challenge.

After that the real stuff started : the inter-cpu communication (there is a 6502 for the sound with the 68010 in this game). The code to synchronize the chips in this game is crazy, the main cpu sends a reset request, in its reset code the 6502 checks if there is a sound command waiting, if there is none it enters an infinite loop and it's game over. So it must receive a sound command, but not the nmi which goes with it because if it has the nmi then it can't see there is something waiting ! Just crazy !

Anyway to sum up things at this point : I finally have something working (except I didn't add the real sprites yet, just the layers), but only with the C version of the cpu emulators ! If using the usual asm versions, there are serious inter cpu communication problems making the sound almost completely broken. The 68010 emulation in starscream was broken for some reason, I fixed it last night, a problem in the rte instruction, but now the result is exactly the same as using its 68000 code ! And there is also a problem with the 6502 asm emulator apparently. Well the good news is that it's working great in 64 bits ! It will probably be the 1st game working only in 64 bits, becasue debuging these asm cpu cores is extremely complex and time consuming, I already spent quite some time time on them, fixed some bugs in both, but I think I had enough of it, there is not much point pushing things more than that at this point.

The funny thing is that the sound works very well, I had no problem on this side ! Actually in 98-99, mame and raine used the same sound drivers, so I just took some old versions for the pokey and the tms5220 chip since these are old drivers in mame, and they worked with just some slight modifications to adapt them to some things which are different in raine. They work well, but the speech synthesizer would be very hard to use out of this emulation, there is no high level interface, but it gives quite incredible results if you think about the year it was made... !

I still need to clean things up, there is also kiki kaikai which is broken (I found this while cleaning up some headers !). So I'll take some more time to finish this. It was an interesting experiment even if quite frustrating in the end I must say. I think the code used by mge was heavily hacked to be able to work in these conditions. It would have been interesting to see how it was hacked. The slapstic doesn't use a simple test, and there was also the inter cpu communication to patch to make it work, really too bad he didn't release the source, I would have been very curious to see that (his official site has gone with his mail, there is a page about him there, because he got famous about some rom hacking tools too : https://www.romhacking.net/community/99/ )

Edited by Tux
  • Like 3
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...