r/3DO • u/trapexit • 22d ago
The 3DO Decomp Project
https://www.patreon.com/trapexit/posts/announcing-3do-164834756I've kicked of a project to decomp and release any and all 3DO retail releases. All code generated will be buildable for and run on the original hardware. It will all be released under the GPL license allowing for people to port to other platforms. You can read more about the project from the Patreon post.
You can watch the work (a bulk of the initial work is automated using custom tooling I've built + clankers) at https://twitch.com/3dodev I'll also stream the manual work necessary to complete each title once it gets to that point.
Those who support the project financially will get a say in the direction via voting on what should be worked on. To start however I chose Need For Speed.
I used Road Rash, PDWT, and Return Fire as test beds for my tooling which you can see over on YouTube: https://youtu.be/U4gIbjwjQW8 I'll be releasing those once I'm finished polishing them off.
6
u/CrippledGoose316 22d ago
Would this also allow for people to perhaps optimize the code to get better frame rates on 3DO hardware?
3
u/trapexit 21d ago
Yes
2
u/CrippledGoose316 21d ago
To me that is far more exciting than the typical PC ports we usually see with all these decomp projects. Preserving the source code is awesome and all, but it'd be awesome to see games improved upon on the hardware they were released on initially.
2
u/trapexit 21d ago
That's always a possibility with decomps. It's just not the main focus by people. As I explain in the FAQ on the post that is not my immediate concern. It's enough work just to get the decomp done. It will likely take years even with AI to do the full catalog.
1
u/CrippledGoose316 21d ago
Yeah. I think the decomp itself is amazing for preservation and stuff. I just personally the PC port aspect of it to be kinda lame.
But eventually AI will probably get the point where all anyone would need to do is feed it the source code and console development documentation and it could find ways to optimize and get frame rate improvements. I find that aspect of the potential of decomps to be really fascinating.
2
2
2
u/NomalNedium 21d ago
Excited for escape from monster manor
1
u/trapexit 21d ago
EFMM's source was released years ago. I have ported it to 3do-devkit but I've not pushed it to my repo yet.
2
2
u/galapag0 20d ago
I think this is a great initiative and people should support it! With that said, I have a question as a fellow decomp-er: If you are trying to get functional equivalent code, how do you decide when to stop and move to the next one? It seems that if you want to take it as the scale of all the 3DO games, you could end up with a lot of "unfinished" decomps.
1
u/trapexit 20d ago
Since the 3DO leveraged an advanced high level OS that was updated over time and had different compilers my interest is really not binary compatibility so it does make knowing when to stop harder. That said... once it seems to play correctly, which AI can help determine using the headless harness I've built around Opera, it's a good point to consider that a v1.0 release and move on. Of course you won't have 100% code coverage but I would rather have 95% done reconstructions than 0%. If people really care about titles and they get used, mod'ed, ported... bugs will be found and fixes made. And as AI gets better and cheaper I can always circle back.
1
u/galapag0 20d ago
Do you have a way to save and replay inputs for different games in Opera?
1
u/trapexit 20d ago
Yes. The test harness allows headless interaction with Opera (any libretro core). Configured to run for X seconds or frames, inputs submitted at specific frames, dump screenshots to png at specific frames or when changed, dump audio, etc.
I don't have saving of input from regular Opera to be used in the harness but I've never needed that. Could be added easily enough.
1
u/galapag0 20d ago
I think if you can collect something like a completely playthrought, it's a solid way to find regressions and declare a game "well enough tested".
1
u/trapexit 20d ago
Sure, though I would rather the AI be able to do that and generally in my experience it has. It has run hour long playthroughs to test different code paths.
1
u/galapag0 20d ago
I will be interested to know how well AI can play any non trivial game that need good coordination
1
u/trapexit 20d ago
Don't forget it can, and will, and does change the code to test specific things. You can watch the stream right now and it inserts debugging code to skip to gameplay and whatever. On Return Fire it just skipped the whole intro and jumped straight to gameplay. It can save memory state to rerun specific situations. It will even modify emulator to add debugging, checkpoints, breakpoints, etc.
1
u/galapag0 20d ago
Oh, absolutely. What I mean is using the controls in a similar way as people so it can feel if something is not right in the gameplay loop.
1
u/trapexit 20d ago
It can compare frame for frame with the oracle and I've added a feature to opera to fix the PRNG. So it mostly just needs to be thorough more than anything. It's may not be trivial depending on the title because, like in Road Rash, the way they did a PRNG was to look at the audio clock and because of slight changes in executable size and layout they don't match up exactly (due to just how long it took to loadthe assets) so had to put in delays into the decomp to try to match them up. But it's doable. The last 5% of this stuff is going to be involved no matter what. The hope is the tooling will largely handle it and I update the tooling, docs, skills as I find issues.
1
5
u/leadedsolder 22d ago
Looking forward to Return Fire. I know you always do a good job.