About hacking (by Gemini)
First things first: this game was a massive, gigantic mess to hack. I think I wrote this pretty much everywhere, but I've got to say it again: Satan himself worked on the game engine, no doubt about it. Wanna know why it's so complicated?
Part 1: string size reduction. This game is one of the very few to treat text as arrays of 2 byte symbols, which means that EVERYTHING that is part of a string, whether it is text or special codes, takes at least 2 bytes. This wasn't really suitable for a translation that needs a lot of space, so it had to be fixed by reducing the amount of space used for both text symbols and special codes. Some things were pretty easy to fix, given that I could work on the whole routines, instead of just hacking a few spots (unfortunately spasm, the assembler I was using at the beginning, doesn't allow that). On the other hand, there were A LOT of very hidden spots in the code that had to be changed as well so that the reduction could be complete, and not crash/bug the game for whatever reason. This was probably the most annoying part of the whole hack, especially the damn subroutines used to manage multiple choices!
Part 2: implementing a not-slow-or-super-unstable variable width font. The original code to allow VWF was only a few line hack, which altered the horizontal spacing for sprites and made it so that the routine for letter rendering would read 1 byte characters (it's part of the reduction hack, yup). This was working until only a few things were in English, but then Tom gave me more material for insertion and the problems start to come to surface. The first issue was with random crashes, which happened when there was a lot of text to append to the GPU list, something that made *every* dungeon dialogue lead to terrible crashes, as well as in Personal Data and battle menus. The second issue was with speed on the Ps2: the way the original game sends data to screen works fine on the original console, but for some reason is terribly slow on the Ps2 (and it was the same for all builds of Pops before v4.00). I had to do something about the crashes, so I went and tried to analyze the print routine, succeeding! At that point all I had to do was rewriting the font system to use images taken from a VRAM image used for HUD elements, instead of uploading the whole array every time for each frame. This fix also took care of the slowdowns, which means double victory to me.
Unfortunately, the image where I put the whole font also contained static names for characters used in menus and battles. These new issues were pretty hard to fix because most of the code that renders them and its very crappy solutions. For menus, I turned all the names into actual test, just like the game used to do for Tatsuya's. As for battles, those are always rendered using graphics, even for Tatsuya's. This was probably the most problematic fix in the whole game because of the way the Playstation manages sprite primitives. I can't even remember all the mess that I had to do to have only a few strings to show perfectly. Damn you, battle programmers.
Of course, there are also other issues that I had to take care of in order to hack some parts of the game, like compressions or archive management. But they really minor stuff when you have a game this evil to deal with.