Greetings! Ribose here. The wait for Ys vs. Trails in the Sky: Alternative Saga is finally over. To lead up to the release, I’d like to talk about the process in these last few months to get this release to be the polished version we will be releasing in one week. Please enjoy this trailer.
I was added to the team after completing work on the last Geofront project to help fix the remaining issues and coordinate the completion of the patch. I spent the time acquainting myself with the tools, and rewriting several of them to function more correctly or sometimes from scratch. I ended up rewriting the tools that patch the EBOOT strings, the tool that creates ITP texture assets from images, and the tool that builds the game ISO from our files. I also wrote new tools to patch IT3 containers, PTF theme files, and GIM textures. Finally, I implemented several fixes to longstanding bugs. But first, HidoranBlaze would like to expand on our patch’s font.
Hido here, and I’m happy to announce that Ys vs. Trails in the Sky will feature a variable-width font! You may have seen a sneak peek of this on Twitter, but now we can show off the final result! A welcome addition, I imagine, for people used to the high quality font C Sector delivered with the Crossbell games. Reverse engineering and programming has been done on my part to implement a variable-width font, and increase the text limit, as the game was originally built with fixed-width font in mind. With this feature implemented, players can expect a gorgeous variable-width font, along with meticulously edited story text and system text, made possible through the increased text limit! We hope you’ll enjoy the results.
Back to Ribose here. There were several mysterious bugs I had to address, some caused by our English implementation and some present in the original Japanese release.
Our use of a different font system than the original caused the above issue where the number of displayed font objects would overflow and start drawing over parts of the stats display on the left of Customize. This could only occur if you’d viewed both the Equip and Skills submenus during a session. The fix was to make the game check the alpha transparency of the submenus themselves, instead of the presence of a submenu pointer. Now it can’t exceed the limit and won’t overflow.
I fixed several other minor issues:
- (In Japanese release) In Story Mode, the “Menu” button prompt would be disabled when hovering over non-stages, even though what’s disabled is the “OK” action.
- (In Japanese release) In all menus containing stats (Arcade Mode, Story Mode/New Game, Customize), the HP numeral was offset up by one pixel.
- (In Japanese release) In Customize, the menu could be tricked into displaying a change skill selection for the EXTRA Skill, even though you cannot change characters’ EXTRA Skills.
- (In Japanese release) At the start of battle in a couple Story Mode fights, no voice acting would play, even though animations would still play as if they did. This occurred only if all opponents were boss monsters (three specific fights in each Story Mode route).
- (Required for English text) UV offsets had to be updated for a texture in Customize and a texture in Mona’s Shop for the different text widths.
- (Required for English text) Adding support for Material Collection having commas: In the original game, they use plain CSV files for many listings, such as the music collection in the game. However, since these use comma characters to delimit values, they couldn’t be supported without changing literally hundreds of checks in the EBOOT for commas in their CSV parser. The original team used a non-printable character for this, and we expanded this to all CSVs in the game. This means commas are now fully supported in the text of collection entries.
- And numerous patches to the way strings were copied for various parts of the UI. Who knew that PSP compilers like putting short strings straight into the registers, thus hardcoding their effective length.
Swapping Cross and Circle
In the course of developing the patch, we wanted to make what felt like an authentic, complete game. This included the menus using the North American Cross and Circle button swap. You’d expect this to be easy, but there ended up being several parts to this:
- It had to work in the system on real hardware. This was possible thanks to the thoroughly-documented PSP SDK, which fans of the platform had already made over the years. It ended up taking three separate patches for the various parts of the shell (save menu, exit menu, and overall system configuration). This patch also updated the game language in those shell UIs, which is good.
- It had to affect behavior only in UIs. The game has a custom mapping system AND a two-button skill system (the same one in Ys SEVEN), making naïve swapping of the buttons at the read state a bad idea. After a few false starts, I settled on swapping every individual comparison for confirm/cancel buttons throughout the UIs. There were 48 of these!
- It had to change how the UI appears in several places. This ended up being a complicated set of 7 different changes in 4 wildly different cases. Some UIs used straight UV coordinates, while others had an index that could be easily swapped, others had a string in the string table (so the scenario parser uses this feature a single time in the game), and still others used prompts drawn directly into graphics. And after doing all that, we had to update every screenshot that was taken of UIs for the tutorial graphics that happened to show those UIs.
- And finally, it had to work in battle exactly as before, including the configuration to rebind controls in the main menu. This ended up involving a lot of debugging, but the solution was a simple swap of the comparison that button config menu makes at the time of button press.
With all that said, swapping the buttons does go a long way to making it feel like a complete release like The Legend of Heroes: Trails in the Sky and Ys SEVEN already on the PSP platform.
Textures and File Formats
While the original team and the V Sector had some tools already, some were buggy and lacked critical features. Due to the obtuse nature of the setup, we were having issues keeping assets synchronized, leading to a black screen on game launch. After resolving that and even rewriting the ISO building script, I also rewrote the EBOOT string patching script to address edge cases with certain relocated strings being referenced more than one time.
We didn’t have any method to update a PTF theme found in the game’s Material Collection. Sony provided an official tool in 2006 to build PTF files, but nobody seemed to document how to actually take them apart. Homebrew developers in that era apparently opted to make a competing format called CTF rather than learning to build official-looking PTF files. Turns out, this is just a container of zlib-compressed GIM files. And GIM files are Sony’s propriety texture format used by PSP and PS3. PS3 homebrew developers were apparently better at documenting that format, though, but they didn’t explain the “tiling” that PSP GIM files used, presumably for speed, which took a little trial and error to get right.
With all that wall of text of work, I can proudly say we patched the logo in the Ys vs. Trails in the Sky theme’s wallpaper and preview images.
Another challenge with file formats were texture conversions to ITP, the format Falcom has been using for around a decade now. The previous team already had a reasonable method to convert to ITP version 1002, but it was wrought with manual wrangling of image palettes and frustration. I rewrote the script to handle the special quantizing directly and automatically. On the same track, I discovered version 1004 uses the same tiling method as Sony did for its GIM texture format. I was able to implement parity with what the original Japanese release contained.
Further down this road, we discovered we needed to edit a texture found in the IT3 container format (the same one that Crossbell and many other Falcom games use). Since we’d used a much different method to replace textures on PC, I had to implement a proper IT3 replacement script for the above translated texture.
We’re finally nearing the end of this long journey. The Ys vs. Trails in the Sky: Alternative Saga patch will release on October 16, 2021.
In our release post next week, we will provide instructions for patching a physical copy/rip of the UMD game, how to get the game running on PPSSPP, PSP, or PS Vita hardware, and how to use the networking features of the game. We will also be distributing the HD texture pack for PPSSPP players. See you all then!