Emulate A Sega Saturn


B-ZaR said:
Honestly, I'm as interested as anyone here, but let's give the man some breathing space. If nobody knows what you're doing, they won't bug you about it all the time :p
Let me turn that around for you: If we bug him enough about it, it won't make a difference if he tells us or not. :D

But it's pretty obvious that he's porting Dolphin to ARM.
 
Last edited by a moderator:
Exophase said:
No, I dislike comparing traces. I have command line commands and debugger commands that break after X instructions. When the break happens the register state is displayed (and some other info). I have two tabs in a terminal and switch between them rapidly to see if there are any differences between the two. If there aren't I go forward half a step (sometimes less, if it takes a long time to get there). If there are I start over. Eventually I find the point where they diverge.
That seems tedious. What I do is calculate checksums in the interrupt handler, and find the point where they diverge. That gets it to within a million instructions or so. Then I do instruction-by-instruction tracing (or at least branches and loads/stores) starting from the last interrupt where they matched. Why do you dislike comparing traces? It isn't hard to diff the files and find the non-matching lines.
 
Last edited by a moderator:
Ari64 said:
That seems tedious. What I do is calculate checksums in the interrupt handler, and find the point where they diverge. That gets it to within a million instructions or so. Then I do instruction-by-instruction tracing (or at least branches and loads/stores) starting from the last interrupt where they matched. Why do you dislike comparing traces? It isn't hard to diff the files and find the non-matching lines.

It's logarithmic time. It's manual work, but it doesn't take a long time. Of course, it can be automated as well; the fact that I'm doing it manually isn't really the point.

I dislike comparing traces for the same reason that notaz does, because the files get huge very quickly and slow down the emulation by a couple orders of magnitude. Add in the time it takes to transfer this file between an embedded platform and a PC and the answer should be pretty obvious why I'd want to avoid this. Sure, occasionally the state will diverge and then merge back, so that you miss the first divergence while binary searching, but this is uncommon enough to make it worth dealing with specially when it happens.
 
Last edited by a moderator:
Exophase said:
Ari64 said:
That seems tedious. What I do is calculate checksums in the interrupt handler, and find the point where they diverge. That gets it to within a million instructions or so. Then I do instruction-by-instruction tracing (or at least branches and loads/stores) starting from the last interrupt where they matched. Why do you dislike comparing traces? It isn't hard to diff the files and find the non-matching lines.

It's logarithmic time. It's manual work, but it doesn't take a long time. Of course, it can be automated as well; the fact that I'm doing it manually isn't really the point.

I dislike comparing traces for the same reason that notaz does, because the files get huge very quickly and slow down the emulation by a couple orders of magnitude. Add in the time it takes to transfer this file between an embedded platform and a PC and the answer should be pretty obvious why I'd want to avoid this. Sure, occasionally the state will diverge and then merge back, so that you miss the first divergence while binary searching, but this is uncommon enough to make it worth dealing with specially when it happens.
Boy, I sure don't know WTF?! you guys are talking about, but whatever it is, keep it coming! Let's move this topic over to the developer's corner, and let's get the Saturn emulator up to N64 levels, if it exist of course? ;)



Chris
 
Last edited by a moderator:
There's no Saturn emulator! There's no development to discuss. What are you guys thinking :C You shouldn't get so excited over random technical sounding comments.
 
@exophase

Did you hear anything from the freedo guys? It seems there is a new version out now? Those boards are like a ghost town.
 
Exophase said:
It's logarithmic time. It's manual work, but it doesn't take a long time. Of course, it can be automated as well; the fact that I'm doing it manually isn't really the point.

I dislike comparing traces for the same reason that notaz does, because the files get huge very quickly and slow down the emulation by a couple orders of magnitude. Add in the time it takes to transfer this file between an embedded platform and a PC and the answer should be pretty obvious why I'd want to avoid this. Sure, occasionally the state will diverge and then merge back, so that you miss the first divergence while binary searching, but this is uncommon enough to make it worth dealing with specially when it happens.
I don't transfer the files, diff runs fine on the beagleboard. The files are usually around 20-30 mb.

The only case that I see often where the state will diverge and then merge back is where the liveness analysis discards a register, then the interrupt handler saves/restores the registers. If I see this happening, I just turn off the liveness analysis and save every register. I did have a few cases where the cycle counts were slightly off, but I fixed all of those.

jumpman said:
Boy, I sure don't know WTF?! you guys are talking about, but whatever it is, keep it coming! Let's move this topic over to the developer's corner, and let's get the Saturn emulator up to N64 levels, if it exist of course? ;)
I'm talking about what I did to develop a N64 emulator, but the basic theory applies to many emulators.
 
Last edited by a moderator:
Phawx said:
@Exophase

Did you hear anything from the freedo guys? It seems there is a new version out now? Those boards are like a ghost town.

I don't know anything about this. What's this new version about? Did it get released w/o source?
 
Last edited by a moderator:
Cassini was a bad port of girigiri but i remember both emu's running daytona,segarally panzer dragon and virtua cop near full speed on a p4 1.4 with a geforce 2 mx 32mb card and i think it was said to run at high speed on a lower 800mhz amd chip,bare in mind the graphical emulation was no where near right but daytona for instance ran at over 60fps even tho its a 30fps game with coded frameskip built into the game but the emu was for sure spitting it out and daytona was graphicaly quite stable on cassini.I also own the pc versions or daytona and segarally and i would bet they are saturn emulated possibly with a more complete giri emu.My point is that it's more than possible on the panda,and also quite possible on a psp but needs to be done properly , i would love to see cassini ported to panda or psp but not sure if thats possible with arm cpu. Exophase am i right in thinking that you created the psp gba emu gpsp? becase i must say now that its n amazing emu not just becase it's on the psp but that i have actuly found it to run better than the xbox and pc versions and also want to say thanks for letting me enjoy gba on my psp.
 
Id like to say that Im not a coder or major tech geek but I am fascinated with the technical jargon and development insight in this thread. I wish I had a comp sci degree and better knowledge of binary programming. For me, emulation was the only way to play many great discontinued and foreign games. Im also very much into chip tone music and have gotten to appreciate many composers this way. I thank the devs for their time and effort and hope this Pandora will rattle a few cages.
 
paddy said:
Cassini was a bad port of girigiri but i remember both emu's running daytona,segarally panzer dragon and virtua cop near full speed on a p4 1.4 with a geforce 2 mx 32mb card and i think it was said to run at high speed on a lower 800mhz amd chip,bare in mind the graphical emulation was no where near right but daytona for instance ran at over 60fps even tho its a 30fps game with coded frameskip built into the game but the emu was for sure spitting it out and daytona was graphicaly quite stable on cassini.I also own the pc versions or daytona and segarally and i would bet they are saturn emulated possibly with a more complete giri emu.

I'm almost certain that Daytona and Sega Rally were not emulated. It's requirements are Windows 95 with a P90. There's no way a P90 could EVER emulate a Saturn. Plus the PC version of Daytona USA doesn't have the horrible short-distance cropping issues that the Saturn version had.

Remember, SEGA will have had access to the source code of the Saturn version of Daytona USA, so I'm sure it was a source-port.
 
Last edited by a moderator:
paddy said:
Cassini was a bad port of girigiri but i remember both emu's running daytona,segarally panzer dragon and virtua cop near full speed on a p4 1.4 with a geforce 2 mx 32mb card and i think it was said to run at high speed on a lower 800mhz amd chip,bare in mind the graphical emulation was no where near right but daytona for instance ran at over 60fps even tho its a 30fps game with coded frameskip built into the game but the emu was for sure spitting it out and daytona was graphicaly quite stable on cassini.I also own the pc versions or daytona and segarally and i would bet they are saturn emulated possibly with a more complete giri emu.My point is that it's more than possible on the panda,and also quite possible on a psp but needs to be done properly , i would love to see cassini ported to panda or psp but not sure if thats possible with arm cpu. Exophase am i right in thinking that you created the psp gba emu gpsp? becase i must say now that its n amazing emu not just becase it's on the psp but that i have actuly found it to run better than the xbox and pc versions and also want to say thanks for letting me enjoy gba on my psp.

For what it's worth, Cassini isn't a bad port, it's just a "resource hack." I'm not sure what they actually changed, but it was never any core functionality as far as I'm aware. girigiri's source code has never been available. Cassini distributed a disassembly of it in order to try to present an air of credibility but I doubt anyone ever used it for anything. The point is, you can't port girigiri to a platform like Pandora.

I've actually used girigiri once on my Celeron 566@850MHz (Coppermine128). The only game I tried was Panzer Dragoon Saga, which was a late release and I understand to be one of the more demanding titles on the platform. It wasn't full speed - if I recall correctly, it was somewhat over half speed - but it was fast enough that it seemed that the high end machines of the time (late 2002, I think) would have been able to just about handle it. It was at least fast enough that it was worthy of being pushed as a commercial product, albeit for a pretty limited time. Your accounts of it on a 1.4GHz Pentium 4 seem plausible (the video card doesn't have to be very powerful at all to provide Saturn emulation), but even with the low end P4 being as craptacular as it was I think it'd still have a Cortex-A8 at even 800MHz well in its place. Still, I think girigiri's performance is a lot more encouraging than SSF's is today, even if you might have to pay for it in compatibility. It's enough to make all of this easily worth pursuing, IMO.

Thanks for the compliment. :B
 
Last edited by a moderator:
Exophase said:
It's enough to make all of this easily worth pursuing, IMO.

You think it's worth pursuing?

And you're working on a new emulator?

2+2 = ....5?
 
Last edited by a moderator:
Pleng said:
You think it's worth pursuing?

And you're working on a new emulator?

2+2 = ....5?

I think a lot of things are worth pursuing, and I never work on more than one major thing at a time. What I'm working on right now isn't even necessarily an emulator.
 
Last edited by a moderator:
Exophase said:
What I'm working on right now isn't even necessarily an emulator.

Confirmed: Exophase is working on not necessarily an emulator!

...I don't think I'm doing this right.
 
Last edited by a moderator:
(this post is horribly off-topic, but let's face it- this whole thread is now off-topic)

@Exophase
Thank you so much for volunteering to port a GBA emulator to the Pandy!
Which one were you thinking of doing?
 
fearofshorts said:
(this post is horribly off-topic, but let's face it- this whole thread is now off-topic)

@Exophase
Thank you so much for volunteering to port a GBA emulator to the Pandy!
Which one were you thinking of doing?

Huuh?

I think you have that sort of backwards. I never volunteered to port a GBA emulator to the Pandora. After enough arm twisting zodttd has agreed to port my GBA emulator (gpSP). The chances of me ever doing anything at all with gpSP are basically zero. I'd prefer to put effort such as that into another GBA emulator.

Not to say I'm working on a GBA emulator.

Although it'd be pretty funny if that's what the big secret was.
 
Last edited by a moderator:
... huh. Well, nice job creating an emulator (just noticed it in your sig).
But I think you need to talk to someone-
The Emulator Plausibility List shows your name next to GBA, coloured orange to show that you have pledged to port it. I guess someone got confused.
 
Last edited by a moderator:
It's just out of date, guess it needs to be updated. It doesn't really matter though.
 
Back
Top