User:Stewmat

From ZeldaHacking Wiki
Jump to navigation Jump to search

About Me

I'm just this guy, you know?

History with Oracles hacking

Early days

I don't recall when I discovered ZOLE, but it was before I understood how such things were made. I didn't know how one would make tools like this, but I wanted to learn.

I wanted to experiment in fresh pastures, so my first foray into making ROM hacking tools was with my Wario Land 3 editor. I have fond memories of waking up early in the morning just so I could get back to coding the thing. It felt awfully exciting to exert that kind of control over a game, something I'd never done before.

Next, I wrote my own gameboy emulator, GameYob. At first this was just a personal experiment for me, started in 2011. But later, frustrated at Lameboy being closed-source and feeling like I could do better, I decided to take a crack at porting it to the DS, with some success.

These two projects were my knowledge foundation for all of my gameboy hacking projects that would follow.

ZOLE improvements

At some point around 2014, the primary zelda hacking forums were shut down, which was very disappointing to me. I was not an active member there, but I certainly lurked. At the time, it was the only place to find reliable information on Oracle of Ages and Seasons hacking.

On another forum - I forget which - Xyspade had made a few posts about ZOLE. I believe it was him who initially sent me the ZOLE source code, before Lin gave me permission to host it on Github.

It seemed like ZOLE was dead, so I took it upon myself to add some improvements. The most serious issue in my mind was that the ASM patches applied to all ROMs did not work on real hardware, only on VisualBoyAdvance. So I fixed that, along with a handful of other issues, but never released any big new features.

This was also around the time I made my only ZOLE-based ROM hack, Kaizo of Ages. Even at the time, though, I had begun some heavy reverse-engineering of Oracle of Ages and created my own assembly code for some of the custom events in that hack.

I wanted to make better hacking tools. But despite how much fun I'd had with Wario Land 3, I knew that my editor sucked. I'd received occasional reports of ROM files getting totally corrupted after extended usage of my editor. I began to get scared of continuing to develop the tool out of the fear I might make things worse. How could I guarantee that I wouldn't introduce a bug that would destroy someone's hard work? These fears extended to ZOLE and prevented me from doing anything serious with it beyond simple bugfixes.

Pokemon Red/Blue Full Color Hack

Searching for more cool Gameboy stuff to do, I stumbled across an incomplete colorization hack of Pokemon Red by FroggestSpirit, and vowed to complete it. This was a very important project for me because it introduced me to the pokered disassembly, and as a consequence, an entirely new ROM Hacking paradigm.

In a nutshell: Make a ROM Hack without hacking the ROM. Build it from scratch from a disassembly instead.

Despite the upfront work required, there are so many benefits to this approach:

  • Your tooling does not need any kind of free space management system (the most dangerous component of my Wario Land 3 editor). That is the job of the assembler.
  • The code is easy to modify, sometimes even documented for you!
  • You can use git for version control! This effectively eliminates any risk of permanently destroying a project (as can occur with ROM files).

After working on this project, my instinct was that ROM files are a fragile and unsuitable medium for any kind of development work. They should be created only as the final product, not modified step-by-step. (This is not to say that there are no good ROM-based editors, but they are much more difficult to do properly, and much more dangerous when things go wrong.)

So I wanted that for the Oracles.

oracles-disasm

In 2015 I started the Oracle of Ages Disassembly. It was a long slog... a very long slog.

Don't get me wrong, it was fun at first. But I was essentially the only contributor for a long time, and motivation waxed and waned. This was especially the case when I started reverse-engineering object code. At this point I'd already had a handle on how pretty much everything worked, and there would be very few revelations working on the object code, but there was just so much of it.

Still, eventually I did get Oracle of Ages into a state where the ROM was fully address-shiftable. For Oracle of Seasons, it was actually Dan Jia who put in the final stretch of work on the Seasons object code to bring it up to speed in that regard as well. This was in 2020.

LynnaLab

I had been working on LynnaLab even from the early days of the disassembly, but didn't seriously advertise it at first. Like the disassembly itself, it languished for years at a time.

Being built on top of the disassembly, it was a bit of a complex beast, and it was hard to get people to use it even after I released v1.0.0. The setup process was just too complicated - you had to use Windows Subsystem for Linux just to build the disassembly! I considered it the ideal toolkit for myself, but that didn't stop people from continuing to use ZOLE, as it was just so much easier to get it working!

...It also didn't help that I never released any updates for 4 years. For v2.0.0 I focused on streamlining the setup process and had some success getting more people to use it.