Welcome Guest ( Log In | Register )


Post new topic Reply to topic  [ 3 posts ] 
  Sun Nov 08, 2020 3:18 pm
User avatar

Omnipresent Merchant

Location: UK
Brief History of Final Fantasy V

Final Fantasy V: RPGe Advance

FFV Advance introduces new job classes, a whole new dungeon and a new boss, in terms of content it is the best version of Final Fantasy V. But in my opinion, the English script falls short of making it feel like a Final Fantasy game.

I told myself I will not re-play Final Fantasy V until I port the RPGe Super Famicom fan translation to the Game Boy Advance ROM, so here I am making this ROM hack (I've been really itching to play through this game again!!).


This project started in 2017, then went on hold for a while. I rebooted it this year and it's now closer than ever to completion.

It began with creating ROM hacking tools for extracting the RPGe script and re-flowing it for the GBA game and generating a .IPS ROM patching file that can be publicly released.


Unfortunately, the C++ code is starting to rot, so now I'm taking what I have and I'm sprinting to the finish line with manually hacking "find & replace" any issues I encounter whilst play-testing the game.

I'll be documenting information about the ROM in this thread.

What has changed?

RPGe being a fan translation has a few typos and grammatical errors, which I'm tidying up on the way.

I'm also using the official Square Enix English names (Butz -> Bartz, Elementalists -> Geomancers), which adds some complexity.

Some dialogue has to be modified to fit into the smaller GBA 3-line text boxes. Interestingly, without the face portraits, the GBA version can horizontally display more text.

The face portraits have been removed. They are useful for adding context of who is saying what dialogue, but they really do not match any of the character sprites in the world or battles and the original 1992 game did not have them.

Any dialogue in the extra dungeon may or may not be touched. I'll figure that out when I get there.

Button prompts had to change due to Game Boy Advance having different key layout to Super Famicom.

What hasn't changed?

I'm trying to preserve the "feeling" of the RPGe script. It has some interesting decisions, such as having more than 1 character speak within a single dialogue box - which makes editing a lot more difficult.


This is already 90% completed thanks to the tool I wrote to automatically extract and reflow the RPGe text for the GBA version. The last 10% is manually editing the text and testing the game a few times over, and 90% of the time is spent on the last 10% of a project...

I've pretty much completed a first-pass edit of the first world, just a few more dungeons to go through. The worlds aren't split evenly, but this is about 1/3 of the game.

Preview Download

Version 0.1 (U)

Requires Final Fantasy V Advance (U), CRC32 7a24ab0c.
Download: https://github.com/felixjones/ffvtool/r ... v0.1_u.ips
Use a tool such as LunarIPS to apply to your ROM.

Top Top

  Sun Nov 08, 2020 3:48 pm
User avatar

Generic Townsperson
Stuff like this blows my mind! I've never played FFV so can't comment on that side of things... but how is code 'rotting'? That just doesn't make sense to me in a literal or metaphorical sense? Good luck with this! :)

Top Top

  Sun Nov 08, 2020 4:10 pm
User avatar

Omnipresent Merchant

Location: UK
Text Tables

Here are the text translation tables I've compiled together for RPGe, FFVA [U] (USA release) and FFVA [E] (Europe release).

https://gist.github.com/felixjones/5444 ... 51cc55c227

The hex codes are translated to the RPGe version, so RPGe is considered "source of truth".

What do these hex codes mean?
Information from Data Crystal: https://datacrystal.romhacking.net/wiki ... tasy_V:TBL
Expand to see the code.

Xhukari wrote:
Stuff like this blows my mind! I've never played FFV so can't comment on that side of things... but how is code 'rotting'? That just doesn't make sense to me in a literal or metaphorical sense? Good luck with this! :)

I started writing the C++ with the mindset "this should be clean, complete and super readable". That applies to say, 50% of the code?
But when it came to text/string processing (a big weakness of C/C++ and many languages) it all fell to pieces and I just said "screw it, I'll slam out code that works and then just get the ROM hack done".

At the moment that 50% rot is all stuffed into a single source file text_mutator.cpp: https://github.com/felixjones/ffvtool/b ... utator.cpp
Compare that to the style of code in my tree class created for and within the exact same project: https://github.com/felixjones/ffvtool/b ... v/tree.hpp

text_mutator.cpp is just a monster mess of string detection, utility functions, messy back-and-forth with finding codes and translating them to/from UTF-8 strings for C++ processing. tree.hpp is a collection of small methods that do as small amount of work possible and is something I'd probably consider copy/pasting into a future C++ project.

The term code rot applies more to "an old codebase that no-longer works because it used old systems/compilers/bugs that don't exist anymore", so perhaps rot is the wrong term. It's pretty much spaghetti code that has poisoned the code and is making the work slightly more difficult that it needs to be as a result - but because majority of text in FFV is dialogue it's actually not too bad, just means a lot of find-replace hacks are needed to tidy up everything.

Top Top
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 3 posts ] 

Who is online

Users browsing this forum: No users and 10 guests

You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

We are an independent, not-for-profit game making community.
Board Index
About Us
Downloadable Games
Free Browser Games
Games in Development
RPG Maker Support
Game Maker Support
Construct 2 Support
HBGames the eZine
Advanced RPG Maker
Site Announcements
Powered by phpBB © phpBB Group