▲ 17 r/recomps

[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.

reddit.com
u/SgtElectroSketch — 11 days ago
▲ 10 r/recomps

Dragon Warrior 4 (NES) Disassembly Complete

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.

github.com
u/SgtElectroSketch — 15 days ago
▲ 2.9k r/gaming

With GameFreak's Beast of Reincarnation, Pokopia, and now the OoT Remake, there is no reason for Pokemon to not have a higher level of fidelity on Switch 2.

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.

imgur.com
u/SgtElectroSketch — 1 month ago
▲ 11 r/RetroAchievements+1 crossposts

Mastery #32 Dragon Warrior III (NES), the Erdrick Saga is Complete!

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.

u/SgtElectroSketch — 1 month ago

Embedded Controller Not Working in Armoury Crate Overlay/SE

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?

reddit.com
u/SgtElectroSketch — 2 months ago

Mastery 30 Pokemon Ruby Professor Oak Challenge

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.

u/SgtElectroSketch — 2 months ago

C++ Files made in unreal editor gone on next launch

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.

u/SgtElectroSketch — 2 months ago
▲ 20 r/recomps

Community Poll Results, New Subreddit Rules, and Flairs

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

  • Be Civil, this one is self explanatory, mostly everyone has been following it, I haven't had to remove too many comments or posts. You are free to disagree on things, that's the point of discussion, life isn't fun if everyone thought the same things and agreed on everything.
  • You may not resort to name calling, insulting people, or maliciously trolling, don't get into pissing contests.
  • Yes you have freedom of speech, but that doesn't mean freedom from consequence. Also, we aren't the government and as much as I love the 1st amendment, it doesn't apply to private entities.
  • I will be enforcing rule 1 strictly.
  • If you have a comment removed, take it as a moment to reflect and ask yourself is what you're doing productive. I'm not going to ban anyone unless they get argumentative, or continually break this rule, but I will readily remove posts and comments. We're (mostly) adults, lets act like it.
  • If someone marks their post with an AI affiliated flair, you are not to go into that post and call it slop, insult the dev, or insult the project, you're free to filter those posts and not interact at all.
  • EDIT: If someone marks their post as not AI, and they aren't using AI, do not suggest them to use AI in their project.
  • Part of this respect is also any project posted must either be open-source (linking to a public GitHub repo so the code can be verified) OR have a mandatory "Run at your own risk" disclaimer if it's a compiled executable, this is to protect the community from malware. Why it matters: If someone vibe-codes a port that accidentally (or intentionally) acts as malware, this rule allows us to instantly pull the post (and ban the user if it was intentional) for not providing the source code.

Rule 2: Advertising, and spam is strictly disallowed except on days for self-promotion.

  • If you are a content creator, we will have a day for posting.
  • Devs posting links to their own recomps/decomp repos are obviously exempt from this, as that's the point of the sub.
  • Ports and mods have their own days as well.
  • Do not spam the subreddit with low effort posts.
  • No all caps titles or clickbait titles, I hate buzzwords and influencer speak, please don't do this.

Rule 3: All posts should be related to recompilation or decompilation projects.

  • This is going to be modified. Going forward, posts that are not a Decomp or Recomp are only allowed on specified days.
  • Below I will cover the difference between Decomps/Recomps/Ports/Mods&Hacks

Rule 4: No Linking to Copyrighted Material / Not crediting original devs

  • This is self explanatory, do not link to things that have copyrighted materials.
  • Sharing ROMs, ISOs, BIOS files, or compiled executables of copyrighted games is an instant ban.
  • Creators can share patch files (like .bps or .xdelta), source code, or compiling tools that require the end-user to provide their own legally dumped game files.
  • This includes other sites, subreddits, repos, etc... I'm not trying to get this sub in legal trouble.
  • I am including a clause on no claiming other's work as your own. If you fork someone's repo, you must credit the original project. This is just common decency.

Rule 5: Post not properly marked

  • This goes for each of the flairs
  • If you lazily pick one that doesn't apply, the post will get removed. You may repost under the proper flair.
  • If you do not disclose AI, and it is found that you have, the post will be removed, multiple offenses will result in a ban.
  • There will be a configuration for all posts that are marked AI that will ask you to talk about the level of AI involvement, if you only used AI to give you direction or explain things, or only used it for help with small unfamiliar functionality, that is different than a 100% vibe coded project.
  • Nobody is obligated to help you with your AI involved projects, do not be surprised if people don't want to get into the code if you yourself don't know anything about it.
  • Conversely, as stated above, if a project is marked as AI, and you are anti-AI, DO NOT go into the post and call it slop, do not insult the person posting the project. Your comment will be removed and multiple offenses will result in a ban.

Rule 6: Post not on appropriate day.
All Times will use UTC

  • Monday will be for Mods / Fangames / Recreations (Mod-day Monday)
  • Saturday will be for memes (Saturday morning cartoons is the inspiration)
  • Sunday will be for self promotion (Self-Promote Sunday)
  • Recomp/Decomp/Native Source Ports posts will be allowed every day.

Rule 7: Absolutely NO AI Art/Music

  • I'm not ignoring the 2nd option of the poll. This is for the 2nd most popular option.
  • Where is the line? There is a difference between someone who uses pytorch and other tools to upscale original assets, that's okay. No AI generated art from a diffusion model or LLM based image generator, nor are any music/sound generated from AI models allowed.
  • Why is this different from code? Code has a history of sharing and being shared. Before LLMs people went to stack overflow. The goal of much development is to reduce re-inventing the wheel.
  • AI art does not fall into that, there are tons of artists, musicians, and creators out there that have assets for very cheap, or for free.
  • "It's just a placeholder" is not a defense. Placeholders can be as simple as a checkered box, or a stick figure. The point of placeholders is to be easily noticeable to be replaced with final work.

Rule 8: No NSFW / NSFL Content

  • No NSFW mods, assets, or discussions.
  • I can't verify the identity of everyone here, I don't want to deal with it, so it stays off.

Poll Results as of the time of posting this:

399 Votes

  • Absolutely No Projects Using AI - 71 Votes: 17.8% of responses.
  • No Projects with AI Art/Music, but coding assistance is okay: 106 votes: 26.6% of responses.
  • Posts must be clearly marked if AI was involved: 39.3% of responses
  • Anything goes: 16.3% of responses

What does this mean for the sub?

There will be new flairs, and new rules.

Flairs:

  • Discussions: These do not link to decomps, recomps, ports, mods/hacks directly, conversation is encouraged, these are allowed all days.
  • Question: These are if you are a user and not a dev, if you need help. Please do not just post "HELP ME WITH THIS" Make an effort to solve your problem, tell us what you've tried to solve your problem first. Posts that don't do this fall under Rule 2 for being "Low Effort". People don't appreciate "I've tried nothing and nothing works"
  • Memes: Unrelated to anything and are attempting to be humorous, these will be limited to a certain day of the week.
  • Technical Help: This is for devs who are running into issues. The dev MUST state if they've used AI in their project in the body of the post, first line MUST be AI: Not Used OR AI: Used.
  • Decomp - No AI: It is what it says it is
  • Decomp - AI: You used AI, please be honest, people have a right to make informed choices on what they download and install on their devices.
  • Recomp - No AI: Same as above
  • Recomp - AI: See above
  • Port - No AI: I will cover the difference between a port and a recomp below.
  • Port - AI: See above
  • Mod/Hack - No AI
  • Mod/Hack - AI

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

  • Decomp: binary reverse engineered back into source code. Not a port.
  • Recomp: binary automatically translated to a new platform by tooling. No source needed. A port.
  • Native source port: humans adapt existing (usually decompiled) source to modern hardware. A port, not a recomp.
  • Port: the umbrella term for anything made to run on another platform.
  • Recreation/fangame: built from scratch, not derived from the original.
  • Mod/hack: scoped changes layered on a port or applied to the binary.

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

reddit.com
u/SgtElectroSketch — 2 months ago

Question about tools on decomps

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!

reddit.com
u/SgtElectroSketch — 2 months ago
▲ 21 r/recomps

Fresh Start

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.

reddit.com
u/SgtElectroSketch — 2 months ago
▲ 15 r/recomps

Community Stance on AI

​

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.

View Poll

reddit.com
u/SgtElectroSketch — 2 months ago
▲ 30 r/recomps

State of the sub

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.

reddit.com
u/SgtElectroSketch — 2 months ago

Vagrant Story Port Update

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.

u/SgtElectroSketch — 3 months ago

Personal Project: Running Vagrant Story Natively on PC

Progress Images

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.

u/SgtElectroSketch — 3 months ago

"Masteries" #29 and #30 two Demakes PT and Fable

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.

u/SgtElectroSketch — 5 months ago