Page 1 of 1

FourFreeO underway!

Posted: Thu Jul 28, 2011 5:41 am
by JohnnyDude
I couldn't help but notice that parts of FreeDO went open source. Last weekend I downloaded what was uploaded to see if it could function on its own.

It's been about a week, and I've been able to compile the FreeDO core and interface with it minimally. I have fed it a ROM to see what happens, and I finally I have my first visible progress!

Image

I hereby name it: FourFreeO, a name combining both FourDO and FreeDO. It really doesn't use any code from my high-level emulation attempt (FourDO). I gave up with the high-level emulation approach; disassembling and reverse engineering the 3DO OS was clearly an overwhelming workload.

Anyway, I'll keep working on it. I'm using C# this time and crossing my fingers that it performs well enough. Long live 3DO!

Posted: Thu Jul 28, 2011 1:50 pm
by Trev
Hmmm ... FourFreeO sounds a bit awkward imo. I like plain 4DO better. :wink:

Congrats on your progress, and best wishes. :)

Posted: Fri Jul 29, 2011 6:08 am
by JohnnyDude
Hm, well yeah. FreeFourO is mighty goofy. I suppose I'll stick with FourDO / 4DO.

Posted: Fri Jul 29, 2011 6:32 pm
by 3DOKid
Well, the 4D suggests the fourth dimension: Time. So why don't you call it the flux capacitor and be done with it? ;)

Posted: Fri Jul 29, 2011 11:09 pm
by Jones
Doc!!!!!
;)

Posted: Fri Jul 29, 2011 11:23 pm
by 3DOKid
Jones wrote:Doc!!!!!
;)
Great Scott!!!!

Posted: Sat Jul 30, 2011 2:32 am
by Trev
This is heavy!

Posted: Sun Jul 31, 2011 9:21 am
by JohnnyDude
Breakthrough! Since that last screenshot, I am now:
* Reading the video buffer accurately
* Able to load BIOS
* Able to load a game

BIOS worked great from the get-go. Figuring out how to load a game took a while. Some examples:
* I had to disassemble FreeDO to find the right value to pass to the FreeDO interface for GetDiscSize. It's too bad they didn't upload their UI code. What a chore!
* For some mysterious reason, I had to disable compiler optimizations on a few functions in the FreeDO core, or it would freeze up. Probably some bad pointer arithmetic I'll have to look into later.
* I also had to make my first genuine bug fix to the FreeDO source code: an uninitialized variable. I'm somewhat confused as to how this got uploaded, since I hit it very early on.

Anyway, finally, after some work and very late nights:

Image

Yep, the game starts up. The introduction video does too; and so does the main menu, and the in-game demo the game plays through. That is a pretty significant test of the system. The source code they uploaded seems to be pretty much complete as far as emulation of the system. I am quite happy about this.

I'm going to move on to audio next. That may require me to pick a better multimedia framework (currently the display is using winforms and simple blits). I believe I'll go with either OGL or SDL if I have to. Oh, also, I will work on incorporating a flux capacitor.

Posted: Sun Jul 31, 2011 7:29 pm
by 3DO Experience
This is getting really cool! Keep up the great work!!

Posted: Mon Aug 01, 2011 8:06 am
by JohnnyDude
Thanks for the enthusiasm!

Audio was pretty easy to hook up. I got that going tonight.

I noticed some garble-ing in the audio at times (happened once on the killing time main menu). I believe that problem is in the core code. Nuts. Well, I'll get to that later, I suppose.

I'll move onto controls next.

Posted: Mon Aug 01, 2011 8:49 am
by Scarlettkitten
That's fantastic work 8)

Posted: Mon Aug 01, 2011 10:07 am
by Jones
Very cool! :-)

Posted: Mon Aug 01, 2011 4:37 pm
by bonefish
I love seeing emulation of older game machines that time has nearly forgotten... A labor of love LOL

Posted: Tue Aug 02, 2011 2:25 pm
by ajgiov
Great effort!

Posted: Wed Aug 03, 2011 4:17 am
by JohnnyDude
Image

Working on controls seemed tedious when I had to sit through boot and intros to test them.

So I've got some basic features in. It's easier for me to work on things with that sweet option to automatically load the last save state. Why don't more emulators do that?

Unfortunately, framerate dips too low sometimes (as I indicated) on intensive areas of the game. It makes the audio very annoying. That'll have to be my next priority after adding controls.

Posted: Wed Aug 03, 2011 9:16 am
by Jones
MacOS port, please...! :D

Posted: Wed Aug 03, 2011 9:34 am
by Calavera
Playing the games at a higher resolution would be a nice feature. I think PSX games look much better when played through an emulator.