Can NES (FE1) ASM Hacking be made any easier?

You most likely haven’t been, but in case you’ve been wondering why Basilisk hasn’t been updated and you haven’t seen much more FE1 content, it’s because I’ve run into a problem. Working with FE1 has become a huge pain. It’s a cycle of pain that’s best represented in this chart:

cycle

First and foremost, managing the game data is the easy part. Text, map data, game stats, all the “soft” game data is not an issue to move around the ROM. The real trouble is moving around the game’s code and all of the game’s pointers.

If you happened to be wondering why you can’t turn off the mods I added to FE1 in Basilisk, it’s because I had to go in and rewrite the existing code to work with my new code into the ROM, and undo-ing that would mean that Basilisk would have to have instructions to update the ROM for BOTH versions of the code. There’s several mods in it too, and they all occupy predetermined spaces in the ROM. If you could turn mods on and off, there’d be these weird gaps in the ROM, and some of the mods depend on others! It’s be handy if there was a nice way to automatically fill empty space with the new code for mods AND update the JSR branches in the original code.

Most of all, I’m looking for a way to manage adding and changing the game’s ASM code without doing it by hand. Perferably something compatible with Python. I can work with other languages if necessary. I’ll even write my own scripting language if I have to.

A full disassembly of the game might provide something I can work with. However, I have never done anything like that before. Also, having the entirety of the game’s code as ASM may not allow me to make easy edits like I want when it comes to having to recompile all that code and data.

There’s also this problem: I do not have a real assembler. I simply made my own little program that converts basic ASM code to bytes and bytes to ASM code. It doesn’t support labels for anything. Ideally, I’d like to have some way to assemble/disassemble ASM code that integrates with Python as that’s what the rest of my romhacking tools use.

FEGB builder or whatever it’s called doesn’t have these issues. How did that tool solve this? On a GBA game no less! Are there any solutions to these problems?

Sheeda would really like there to be more FE1 content. If you could help, you’d make her very happy!
port - Copy (2)

6 Likes

I’ve always felt NESdev was a great resource of highly talented individuals. You might be able to find some help here.

https://forums.nesdev.org/viewforum.php?f=24

There is a specific user that has shown a lot of knowledge and mastery of 6502 assembly and has been very helpful in various forums, but they are a little brusque. I think they are native Russian so it may be a language barrier thing.

Cyneprepou4uk

  • As a note I would’ve been all over Basilisk and making tons of cool hacks if this was around when I was younger. I don’t have as much time or interest in romhacking now but your work still makes me excited for what could be done with your tool and research :slight_smile:
1 Like

Thanks for the response. I should probably try asking over at NESdev then. Still thought it worth it to try here what with the ASM talk I keep seeing pop up now and then.

Ah, yes. I’ve met him (?) a couple times on the romhacking.net forums. Definitely an expert, but seems to dislike it when people ask dumb questions.

I’ll have to ask around some more on Nesdev and RHDN.
Still open if anyone has any creative ideas here too!

1 Like