So for the last week or so I've been playing in my lab coming up with a pretty keen project, I was wondering if anyone wants to help. I figure as I kicked off the "Gears
" project which became The Wiki
, then creating the Q-Gears project
, which was gracefully taken over by Akari, I decided to add something back to the community.Introducing N-Gears
N-gears is the systematic disassembly and reassembly of the FF7 ROM for the NES, recoded so that it's more like it's PSX counterpart.
Over at Romhacking.net
someone decided to make a little project to take the Chinese FF7NES rom, translate into English, and give it a graphical makeover. I saw what they were doing and decided while they were doing that, why not balance the game and convert scene.bin over to the NES to make it more like it's PSX counterpart...
Sadly, the game's engine is broken on the inside. I'm not going to enumerate what's wrong with it, but after a week of trying to shim in my changes, I have declared the engine beyond repair and in need of a rewrite...
Here's how it's going to go down...1) Set up a toolchain so that I can compile a 2MB nes game.
This is done, I'm using the same mapper as the FF7NES, Mapper 163, It needs tweaks, but does generate a 2MB rom. For those not in the know, the largest game over made by Nintendo in the NES era was Kirby's Adventure, which was 768K.2) Disassemble FF7NES.
The game weighs in at 2MB. Lucky for us, the code is an inefficient mess. I saw almost 512K of blank space in there, and the code is all over the place. I've got the disassembly scripts started, if anyone wants to help, I can show you how to use da65. You need to have a good handle on NES architecture and 6502 code. 3) Reassemble FF7NES into workable code
The code that is disassembled will be rewritten as source code. The dissembler does about 70% of the job, minus the symbol names. This will require keeping track of variables and routines in a 2MB game. The good news is all the important global variables are in the save map.4) Rewrite the parts that suck.
This is the big part, throw out the linear growth curves, create a small LZW routine. Import a tiny version of kernel.bin, scene.bin and savemap. Get muti-slot Matreria working. Keep things that "work" like the event system, but expand the mapping. My dream is to have this compatible with Black Chocobo
Feel free to tell me I'm insane. Post here if you want to help or ask questions. This might be fun, this might be a complete waste of time. Who Knows! I'm off to post the mechanics in "Reverse Engineering