[Megathread] Requests
I hear you guys, all requests are to go in here from now on.
If you see a post or comment requesting a port/recomp/decomp, please report under Rule 11.
I hear you guys, all requests are to go in here from now on.
If you see a post or comment requesting a port/recomp/decomp, please report under Rule 11.
AI was used in tracing data, or going through generated reports (which really should have been gitignored so I wasn't pushing 45k+ line changes because of those reports).
I did this one because I could not find repos for DW4 on the NES and there were some for DW1-3.
The people like pret who did these disassemblies for the pokemon games before AI are something else, props to them, because even with the assistance of AI, this took a while.
We seriously have to stop accepting the laziness of the Pokemon Franchise that we've seen in the mainline games.
Unfortunately, they know we will still buy it either way.
Edit: I know Gamefreak did not make Pokopia or OoT
I should have separated them better. The connection between the 3 games is Game freak + Nintendo + Pokemon Company
Edit 2: Graphical fidelity does not have to mean hyper realism. Games can be stylized and be high fidelity, without looking like real life. Recent HD2D games are examples of what I would call high fidelity, and they're pixel art.
High fidelity just means quality, care, and style. Beautiful environments, things that make you stop and say "Holy shit", it doesn't have to look like a photograph to do that.
DW3 was a much smoother experience than DW2, but took SO much longer. I decided to grind to level 99 to finish the last boss without the sphere of light and it still took careful planning.
Undecided if I want to do the remakes or continue on to DW4.
This only just started happening. The gamepad does not respond at all after pressing the overlay button.
The overlay will come up, but it does not respond to controls. I tried enabling and disabling the embedded controller, that does nothing.
Windows recognizes the device, and will switch between gamepad mode and desktop mode if I use touch controls to change them. Desktop mode works normally.
It's just when opening the Armoury crate app or overlay, it's not responding.
I've uninstalled and reinstalled AC SE, I've uninstalled and reinstalled the drivers. I've checked for updates in the My Asus app and the AC app. Nothing.
It works in games as well, just not in the damn app that was made for the device.
Any ideas?
I put this off for a LONG time. Was pretty burnt out after doing the RBY, GSC FRLG and Sapphire base sets and POC for all of them. Just a few more achievements and base set Ruby will be done. Then off to emerald. Gen 3 is kind of a slog in the PoC department.
Good afternoon everyone.
I'm getting my feet wet with unreal, and I went and added a new C++ script by going to Tools-> New C++ Class, followed the prompts, and saved the project. It DID show up in the C++ folder of the content drawer before closing, when I relaunched it was not there.
I browsed to the folder location where it should have been, and it is still there (the moving platform source/header) in windows explorer. It's just not in unreal anymore.
Not sure how to fix this, sorry if it's a very beginner question.
Edit: Apparently I have the dumb, I needed to rebuild in Visual Studio.
Hello everyone,
I think it's time to go over a few things since I've had a chance to think about things a bit.
I won't have a chance to update the rules and flairs until later this evening when I get home from work, but these will be effective today:
Let's start with the rules:
DA RULES
Rule 1: Respect others and be civil
Rule 2: Advertising, and spam is strictly disallowed except on days for self-promotion.
Rule 3: All posts should be related to recompilation or decompilation projects.
Rule 4: No Linking to Copyrighted Material / Not crediting original devs
Rule 5: Post not properly marked
Rule 6: Post not on appropriate day.
All Times will use UTC
Rule 7: Absolutely NO AI Art/Music
Rule 8: No NSFW / NSFL Content
Poll Results as of the time of posting this:
399 Votes
What does this mean for the sub?
There will be new flairs, and new rules.
Flairs:
What is the difference between a Decomp, a Recomp, a Port, and a Mod?
Edit: This post has been corrected thanks to feedback from dariosamo and the N64 Recomp server FAQ.
Decompilation (Decomp)
A decomp is the output of a binary file for a game that has been dumped into raw assembly, and then converted back into human readable code, ideally the language the developers used to write the game. Purists say that the code must compile back to the original binary and be exact byte-for-byte. BfB is the gold standard for decomps because it says your logic matches the original dev's implementation exactly.
Decomps are a long, arduous process, and LLMs struggle with them because they make assumptions the original dev may not have made. They stumble over this type of work a lot.
Important: a decomp is not a port. It is a reverse engineering process that produces source code. A decomp compiled as-is would still only run on the original hardware or in an emulator. Getting it onto a new platform is a separate effort.
Recompilation (Recomp)
Recomp is short for static recompilation. It is a way of porting an application to another platform automatically, using tools that work off information gathered ahead of time about the application.
Static recompilation does not require any source code for the application being ported. It operates on the original machine code binary and translates it at build time. There is no human sitting there interpreting the original code and rewriting it in C. That's what makes it "static" and that's what makes it a recomp. Zelda 64: Recompiled is the example everyone points to.
Since humans are not expected to read the recompiled code, developers relying on static recompilation use partial or complete decompilations as a way to add fixes or enhancements to the port.
Ports
A port is any application that was made to run on another platform. That's the whole definition. It's the broad category.
All recomps are ports, but not all ports are recomps.
Native Source Ports
A native source port takes existing source code, usually the output of a decomp, and swaps the proprietary hardware calls out for modern ones, so the game runs natively on new hardware instead of under emulation. It stays as close to the original code as it reasonably can, but a human is doing the translation work.
Ship of Harkinian is a native source port. It goes a long way toward staying very close to the original source code, but it is not a recomp, because it doesn't use static recompilation.
Ports in general don't have to care about byte-exactness at all. Plenty of them care more about getting the project to run, period: changing code to mimic behavior, taking shortcuts, whatever it takes.
Recreations / Fangames
Worth calling out separately: a project that rebuilds a game from scratch, without deriving from the original binary or its decompiled source, isn't a port of anything. It's a recreation or a fangame, even if the name has "recomp" in it.
Mods/Hacks
Mods and hacks are standalone code that either integrates with or sits on top of a port, or modifies the binary files directly. They are smaller and scoped to a limited set of functionality.
Quick reference
I know there are people who don't care about the distinction, but I'm a technical person, an engineer by profession, and words mean things. I'm also not perfect and can get things wrong. Corrections are welcome and I'll keep editing this as I get them.
Thank you all for your time. I've enjoyed the past few days of modding for this sub, and I want to see us grow as a community.
Edit: See new bullet under rule 1.
Edit 2: Clarified the daily schedule as I had some wrong info. Native Ports are allowed any day, Mods/Fan games/Recreations are limited to Mondays
For actual decomp work where you're converting the binary to asembly and then to C/C++ what are you guys using? I'm learning Ghidra right now, but wanted to know more about the tool chains being used.
I'm more interested in specific tools, and not agentic AI coding, I'm not against AI, but I'm trying to learn the by hand methods.
Thank you all in advanced!
Good evening all. Thank you all for participating in the poll so far.
I hope I don't have to remind people too often of this, but please remain civil.
I have no affiliation with the other sub, and I don't want to start things off from a space of negativity. I don't care what happened there in the past. Despite any grievances that anyone may have, this isn't the place for that. Please do not trash talk the other subs, their users, or their mods.
If I see comments trash talking, I will remove them. I'm not banning anyone for the time being, because I believe everyone should have a voice, but if this becomes a dumping ground for the /r/decomps sub, I will take action.
Lets keep it positive and focus on the projects.
Edit: If you see anyone being uncivil, please utilize the report button. I'm not taking sides, I'm just not going to entertain it.
​
I want to ensure our rules reflect what the community actually wants to see. Please vote on how we should handle AI content going forward. The results here will directly shape our official subreddit rule.
Hey everyone, I just got granted the sub, it was unmoderated. Tomorrow I'm going to work on getting this opened back up and getting things organized.
Edit: Sub is back open. Please see Rule 4. It's new to protect the subreddit.
I don't have a new video yet, but I've been decomping a little on my own, but also watching ser-pounce's repo and pulling updates.
I've decided to make my repo public:
https://github.com/JEschete/VS-NativePort
I've got audio working for the FMV the first time it plays, but overall things are still silent, and I've noticed the audio stream isn't fully closing, so that's on my todo list.
I'm going to be publishing videos periodically as they come to my other youtube account (don't want it on my personal), I'll post that next time I have something to show.
I need to look at the things I've decompiled myself and match things to how ser-pounce is doing it and contribute to his repo as much as I can.
I've been working on turning Vagrant Story into a native PC executable to get it running with no emulator, no MIPS interpreter, and the game's actual code compiled for x86. Once I get it running fully, then I'm going to look at 64bit compatibility.
It now boots. Publisher screen -> developer screen -> title screen with the logo, the rune backdrop, and SOUND / NEW GAME / CONTINUE, navigable with a DualSense.
None of this would exist without the rood-reverse project, an ongoing matching decompilation of Vagrant Story. "Matching" means the C they've written compiles back to byte-identical machine code against the retail disc, which is the gold standard for porting, and brutally hard work. At the commit I started from, it was ~60% of the code matched, ~34% fully linked. The menu subsystem and the title screen are both at 100%.
I didn't decompile the game any of the starting point, but I am working ahead of where they are.
What I've been building so far is the layer underneath the decompilation, replacing the PlayStation hardware with host equivalents, taking the Ship of Harkinian model as inspiration. Decomp first, then reimplement the hardware.
What "native port" means here (and what it doesn't)
The code is native. Decompiled C, compiled to a 32-bit x86 ELF.
You still need to provide the game assets through a legally owned version of the game. Like Ship of Harkinian requiring your own Zelda ROM, this needs your own copy. But, and this was a design goal, it doesn't need the disc image at runtime. The original disc's assets are extracted from the build's own output and serve those reads out of the extracted asset tree.
What's implemented
The whole PSYQ hardware layer, in C:
libgte (the geometry coprocessor) - verified bit-exact against real COP2 hardware. I built a PS-EXE test ROM, ran it in DuckStation to capture real register outputs, and diffed 891 vectors. Zero mismatches.
libgpu - a GP0 command-list rasteriser. Flat, Gouraud and textured triangles, CLUT texture sampling (4/8/15-bit), sprites, VRAM transfers.
libds - a virtual CD drive that reproduces the real command protocol (DsPacket -> command-complete callback -> per-sector DslDataReady -> DsGetSector), with sectors delivered at the vblank boundary where the drive interrupt would land.
libpad - writes genuine PS1 controller packets into the game's own pad buffer, so held/pressed/released, auto-repeat and analog-to-d-pad all get computed by untouched game code.
libapi - including a full PS1 memory card filesystem. It loads my actual save and the menus enumerate my actual inventory.
Plus an SDL2 window, and PS1 main RAM mapped at 0x80000000 so the boot path's hardcoded addresses (the allocator gets handed literal 0x8010C000, overlays load to their real addresses) all just work.
What does NOT work
No audio. The SPU is a silent stub. Everything calls into it correctly, it just doesn't make sound.
No intro FMV. It's an MDEC video stream and there's no decoder yet. Currently skipped.
NEW GAME doesn't start a game. It hands off to BATTLE.PRG, the actual game engine, and the long pole. It's ~35% decompiled, so that's a wall no amount of platform work gets around.
So: it boots, it renders, it takes input, it reads your save. It is not playable, and won't be until the engine decomp is much further along.
What will be possible once decomp is finished and it is fully ported
The reason to do it this way, instead of as an emulator hack or a binary patch, is that once the engine is decompiled the game stops being a fixed artifact and becomes an ordinary C codebase. Everything below gets cheap the moment that's true, and most of it is impossible before it.
Platforms
64-bit is the first one. The current build is 32-bit for a specific reason: PS1 ordering tables store 24-bit pointers, so every host pointer the game threads into a display list has to fit under 16MB. Getting past that needs a handle or offset layer rather than raw pointers. After that it's native Windows, macOS, Linux, ARM. A game this size runs comfortably on a Steam Deck or a phone.
Resolution and framerate
The rasteriser is mine, so nothing binds it to 320x240 or to the PS1's quirks. Higher internal resolution, perspective-correct texturing instead of the affine warping, no vertex wobble from the GTE snapping coordinates to integers. Or keep all of that, since it becomes a toggle instead of a constraint. Widescreen is a bigger job because the UI is laid out for 4:3, but that's a layout problem rather than a hardware one. Framerate needs the most care: game logic ticks at 60Hz and a lot of code assumes it, so uncapping means either interpolating the render or auditing a great deal of timing.
Load times
Effectively already gone. The virtual CD serves out of ordinary files and its speed is a config value rather than a spinning disc. Vagrant Story's constant room-to-room loading is one of the few things that really dates it.
Mods as code
This is the big one. Once it's C, a mod is a patch to a build, not a hex edit to a binary. Vagrant Story is an unusually good candidate for it: the weapon crafting and affinity system is famously deep and famously opaque. Can anyone say fast weapon swapping?
Quality of life
Remappable controls, rumble, save anywhere, faster text, and an affinity/damage readout that shows what the game is actually calculating. Retail bugs can simply be fixed once you can see them.
Assets
Texture replacement, higher-poly models, restored content if any is still sitting in the data. The pipeline already extracts everything from your own disc, so changing what gets handed to the game is a short step from here.
Preservation
The honest long-term argument. Emulators drift, hardware dies, and a compiled binary is a black box that nobody can maintain. A matching decompilation plus a working port means the game survives as documented, buildable source that someone can compile on hardware that doesn't exist yet.
Edit: FMV Loads now, had an issue with the display depth, but that is now working. Loading a save from the main menu isn't quite there. The previous menu examples were from shunting the data directly into the game state.
Edit 2: Video of it launching, I'm having to transmit controller input to WSL at the moment since WSL can't interface with the controller directly.
Can you start in NG+ on very hard to get the save medal? Or do you have to start a fresh save?
I normally scoff at such short masteries, but these were pretty interesting. Both made with GB Studio. The PT one wasn't really scary, you just go in a bunch of loops.
The Fable demake was a nice little callback to the original. I was able to actually use my memory of the original to remember what I had to do.
Solid 40 minutes of my time.