I would like to walk down memory lane a bit with you all ... Bahamut Lagoon is a project that I started in 1998, forming the group "Starsoft Translations". We regrettably failed due to a lack of experience, but we made it fairly far for a group with no programmers.
Undeterred, I spent the next two years learning how to program in C, teaching myself 65816 assembly, and learning how the SNES hardware worked. This was during a time when ASM hacking documentation did not exist, and this information was not shared by anyone who knew the craft.
Over the summer of '99, I devised how to implement a proportional font engine by gluing together characters onto SNES tiles. An SNES cross assembler didn't exist then: to create my first font engine, I wrote out the routine for it on sheets of paper, and simulated it in my head.
Once I was confident in this, I converted my routines into SNES machine instructions, and then manually typed out the code in a hex editor directly into the ROM, testing and debugging each step via the ZSNES debugger. Eventually, I got it to work.
Realizing this was not going to scale, I ended up writing the very first patching assembler in the ROM hacking scene, called xas (x as in "cross knight" or "cross assembler.") That allowed assembly code to be patched into an existing binary, instead of making a new file.
Within another year or so, xas had become rather popular, and more people were capable of SNES assembly programming. One such individual was kammedo, who was also looking to create a fan translation of this game. His group was called Yonin no Translators, and so we teamed up.
We were much more capable than Starsoft, and we managed to completely reprogram the game from scratch this time. But due to unfortunate events, we were unable to have the script translated and the project ultimately failed.
Dejap (Neill Corlett, Darkforce, and Tomato), went on to complete a patch for the game in 2002. Still undeterred, I spent the next few years creating a better cross assembler (xkas), and improving my skill through translating Dragon Quest V and Der Langrisser.
During this process, the emulators of the time, ZSNES and Snes9X, became my next bottleneck. This led to the creation of bsnes, for which I am most well known for to this day. But bsnes originally started with a focus on accuracy, because I needed that for my fan translations.
By 2007, I was confident in bsnes' quality, and I was ready to try my next attempt at Bahamut Lagoon. This time, I was able to reprogram the entire game 100% on my own, and after helping Tomato with Mother 3, he agreed to let me use his translation for my new patch.
But like the Dejap patch before it, my patch relied on dynamic tile rendering. The result was just too slow. Moving through menu screens could take several seconds, and graphical glitches would be numerous as the screens struggled to render. I knew I needed to do better.
I then had an epiphany to statically render the tiles in advance, and my initial tests showed a staggering 20-fold increase in performance. But implementing it into my 2007 patch would've been too large an undertaking, so I scrapped the project once again to start over.
During 2008-2009, my fourth attempt produced a much stronger patch that was lightning fast. But once again along the way, I learned many new tricks: double-buffering to eliminate flickering, using uninitialized counters to cut the number of game code hooks in half, etc.
Once again, the codebase was too far along to add all of these changes retroactively, and xkas had been pushed beyond its breaking point. I had to abandon the project yet again. After this, I was worn down on the game pretty hard, but I promised myself I'd get back to it one day.
At this point, I became known as an emulator developer much more than a ROM hacker, and this became my sole focus for the next ten years. But along the way, I continued to think of Bahamut Lagoon and wrote my most capable cross assembler, bass, and a new patching format, BPS.
Ultimately, emulator development felt like an obligation, like something of a higher calling -- what everyone wanted me to do. If it weren't for very unfortunate circumstances this year, I very likely would have never returned to Bahamut Lagoon again. The dream would have died.
But the silver lining is I've grown stronger as a person, and reflected on what I really wanted in life: to finish the project that started everything for me. After struggling for a year to even begin, this October, I wrote my first line of code for my fifth and final attempt.
The truth is, I intended to translate the script myself this time as well. I moved to Japan two years ago, and at this point my reading comprehension is around JLPT N2 (one step below basic fluency), roughly on par with where Tomato was at in 2002.
But much to my great surprise and elation, Tom accepted my moonshot request to translate the script! This gave me more time to work on the programming, and has also produced a vastly better translation, as Tom is far beyond JLPT N1 (fluency) in skill.
With my 22 years of experience as a ROM hacker, 16 years of experience as an SNES emulator developer, four previous translations attempts on this game (two of which were completed), and Tom's decades of Japanese experience ... the final translation attempt had begun:
The underlying goal: absolutely no corners would be cut, no matter what. I used every bit of my experience and then some. We have font kerning, tabular numbers, multiple text color palettes, multiple font typefaces, static rendering, double buffering, ROM+RAM expansion, ...
Completely redesigned menus, newly added functionality and exposed stats, countless bugfixes from the original game, the internal debugger translated, every text graphic redrawn and improved, enhanced credits, and on and on. There is now 370KB of source code for this translation:
And that's with substantial macro usage that cuts its size to half what it'd be with xkas. Even still, the previous patch was only 150KB of code. Indeed, every screen has been reprogrammed and laid out more optimally. Every cursor repositioned to pixel-perfect accuracy.
This patch represents the absolute limits of Tom's and my abilities. And it is with great pleasure that I can announce our third full playthrough has now completed. I will be adding the final ending screen graphic now. The 22-year long journey ... ends tonight. Stay tuned.
.. and just like that, with a stunning new graphic courtesy of FlashPV, that's it. The conclusion of a 22-year long journey.
My eternal gratitude to everyone who helped and supported me over the decades. You mean the world to me. I dedicate this patch to you.
The End is Near ❤️
Literal tears of joy right now. What an experience. Never stop believing in yourself, never give up on your dreams, never let anyone stop you ... no matter what. With every setback, come back stronger. Prove the whole world wrong. I believe in you, as you all believed in me.
© 2020 Near - archive.is/7K7Hq