Para Para Paradise Translation and Asset Tools
Firebeat
One of the first things I wanted to do when I got access to my Para Para Paradise machine was learn how it worked. There were several versions of this game, with the definitive version of the Firebeat hardware (the first generation), being 1st Mix PLUS. It used a PowerPC processor, proprietary GCU, a Yamaha ADPCM chip (for sound effects) 2 CD-ROMS (one for ISO-9660 and one for redbook audio), a suicide RT (more on this later), and, from a software perspective, a foreign binary format.I examined how the BIOS worked and then saw that it loaded an executable over the ATAPI interface, which was then LZ decoded and with the entry point being the last 8 bytes of that LZ payload. I examined the code and discovered some suicide code via planned obsolesce. All Firebeat games used a dongle and RTC peripherals. The dongles were meant to allow for software updates. The RTCs, those batteries are designed to go dead. When that happens, a special pre-programmed payload will be erased. All Firebeat games check for these special payloads and if they don't exist, usually they let you call the Manufacturer to enter a code to restore the data. However, this service has not been active for some time, let alone has it ever been available outside Japan; AND not all games allowed this. So when you changed the batteries, your computer is essentially bricked. You cannot dump this payload either as the chip is not socketed, and you will damage the memory if you do remove it to save your data preemptively.
My investigation into the suicide nature of these boards also allowed me to make several code changes to how the assets were rendered and laid out. I then wrangled and saw the same LZ compression code from before used for several compressed graphics in ISO file system. So I wrote a tool to decode them and studied how the GCU worked to determine that the graphics were generally all flip book sprite sheets. I decided to have some fun and utilize what I had learned to try to create a higher resolution version of some of the background videos. The second version of the game severely reduced the capabilities of the background videos, but added a 3D dancer that demonstrated the official choregraphy to the songs.
After learning the basics of the system, and enjoying playing the game so much, I wanted to share it with everyone. The game itself is VERY Japanese, a little intimidating and incredibly pink. It really stands out and draws attention to you. Most people do not want attention drawn to them if they have no idea what they are doing, and the game already took a lot of guts to play! So I began looking into ways to localize and create tools to make the game more friendly to the average person.
The games mascot, Yoko, is a Ganguro that uses slang from Osaka-ben. So I tried to tweak some of her dialog to be a bit of a valley girl at times when it wasn't critical the player understand things under time constraints. I also worked to create typefaces and kerning that replicated the original look and feel of the source material as closely as possible.
Screenshots and Videos Demos
A small sampling of dialog and typeface |
Additional spritesheets showing dialog fragments and typefaces |
Viper
The second major version of the game changed CPU units to the Viper system. It is also PowerPC based but includes a 3DFX card to render 3D dancers performing the official choregraphy by Club Twinstar. In lieu of 2 CD-ROMs, everything was now housed on a hard drive, which meant audio was no longer redbook. This also lead me to discover a foreign filesystem (which I have dubbed ViperFS) on the hard drive. Security was handled a bit differently with an embedded dongle that was bypassable for upgrades (but never used) via a dongle port. This model did not feature a suicide though you would still need to socket a replacement for when the batteries died.After examining the game contents, I wanted to figure out how to add custom songs to the engine. However, after seeing that many of the assets were once again hard coded sprite sheets, I quickly changed course on this idea. Instead, I decided to figure out the audio encoding of the new game and the chart format so that I could make some homebrew to run on a computer. After a lot of examination and consultation with many others, I knew it was an ADPCM code of some sort and that it was nibble interleaved, but the Haley's Comet 64 messaging board were abe to help me narrow it down to Speex, a telephone audio codec. This is normally mono, hence, interleaving both channels, one per nibble. In the end I wrote program to scan the hard drive image for the music and extract it then convert it to WAV. Then I wrote an application to convert the chart format from their proprietary one, into a chart format known by homebrew. I also released that source code here.