Blog:GioGio's Bizarre Adventure Modding Info

This modding guide for GioGio's Bizarre Adventure has been adapted from a Google Doc written by penguino and Hudgyn Sasdarl. The guide is primarily written with the assumption that the end user will be running Windows, as several of the programs involved do not work or have not been tested on other operating systems.

How to Play the Game
GioGio's Bizarre Adventure (ジョジョの奇妙な冒険 黄金の旋風) follows Giorno Giovanna and his allies as they seek to overthrow the boss of the corrupt gang Passione in order to reform the organization from the inside. The gameplay takes the form of a series of battles against varied Stand users, with each enemy and battlefield offering unique challenges and opportunities in combat.

But you probably knew all of that already, right?

Getting Started
To begin modding GioGio's Bizarre Adventure, you will need a backup of the game disc, ideally stored as an ISO file or in a similar format. No matter which aspects of the game you want to mod, you will also need AFSExplorer and a hex editor such as HxD. In addition, obtaining a PS2 emulator such as PCSX2 can be helpful for testing mods quickly.

AFS Editing
The GioGio's Bizarre Adventure game disc contains three AFS files: AFS00.AFS, AFS01.AFS, and AFS_DATA.AFS. The first file, AFS00.AFS, contains the music files used by the game, the cutscene audio tracks, and all of the mid-fight dialogue (excluding voice clips). The second AFS file, AFS01.AFS, contains the game's sound effects and character voice clips. The third and most interesting of the AFS files, AFS_DATA.AFS, hosts the entirety of the game's textures, models, character files, stage files, cutscenes, and dialogue text.

AFSExplorer is currently the most versatile way to open, overwrite, and export or import files from these archives. After downloading the program, launch the application, open the "File" dropdown, and either open an extracted AFS file or use the "Import AFS file from CD image..." option to access the disc image directly. Right-clicking a file will provide options to "Export" the original file, "Import" a modified file, or open the file in an external hex, texture, or sound editor that you can specify in the "Configuration..." option under File.

Not Enough Space Error
If your modified file is bigger than the original, you'll likely get an error message saying there's not enough room for it. This is because each file in the AFS archive has a very specific amount of space assigned to it. If AFS Explorer asks you to auto-arrange the files, select "No". Auto-arranging files is known to break the file and make it unable to be read by the game. A new window will appear asking if you want to set a new reserved space, but this is usually performed unsuccessfully. Click "No" again, and close the last error window that pops up. Once all of the error windows are gone, press Ctrl and R simultaneously. Doing so will bring up a menu where you can modify the reserved space for every file. Press or hold the "+" button until the size in bytes can fit your modded file. Now click "Regenerate AFS" and save the edited AFS.

You must now put the new AFS file into the ISO. Simply using AFS Explorer's insert option won't work here, since inserting a file of a different size requires rebuilding (and consequently breaking) the ISO. Instead, use a program that can open and save ISOs directly, such as isomod. Upon downloading and opening isomod, you will see three fields. Browse to and select your ISO for the first field, then type the name of the AFS you're replacing in the field below it. For the third field, browse to and open the regenerated AFS file. After all three fields have been filled, press "Import!", and the program will insert the regenerated AFS file into the ISO.

Text Editing
The text in GioGio's Bizarre Adventure, unlike many PS2 titles (including the later Phantom Blood adaptation), is stored in uncompressed Shift-JIS text format. Thus, changing the game's text is a simple procedure using a hex editor. All of the text used for a cutscene or stage is stored in its respective file (See the Resources section for more information). You can use Audacity as a reference for frame timings by loading the audio track for the cutscene and setting the timestamp format to "NTSC Frames", then multiply them by two before writing them into the .txt. If there's simply not enough room to fit all of your text (or if there's no room at all, as in d0fh.pzz), then it is possible to expand the size of the text section. The header format is documented in this Github thread. If you're unsure of how to handle the header, use this edited file as a reference. The menu, prologue, demo, and Gallery Mode text are not stored within a specific chapter's file; instead, they're located in the game's executable, slpm_651.40, which can also be edited separately or directly from a disc image.

Python Script Method
Get the extraction and injection Python scripts (you'll need Python 3.7.8 for it to work correctly) and put both scripts on a folder, then create another one inside named "pzz_files" and put your cutscene files in there. Once that's done, you must run pzz_extractor.py. After it runs, you can start modifying the .txt file it extracted. Once you're done with the .txt file, simply run pzz_injector.py and import the modified .pzz file into AFS_DATA.AFS

Formatting Guide
https://cdn.discordapp.com/attachments/483466531674521603/1005992788078379128/giogiotextW1.png https://cdn.discordapp.com/attachments/483466531674521603/1005994126581444688/giogiotextW2.png https://cdn.discordapp.com/attachments/483466531674521603/1015692152086470776/giogiotextw3B.png

Audio Editing
You'll need SNDBodge and PES Sound Converter to edit the different audio files in the game. You will need to have Python 3.7.8 installed for SNDBodge to function.

Sound Effect and Voice Clip Editing
Upon opening AFS01.AFS, you will see several .snd files. Right-click the file you want to edit and select "Export", then save it wherever you want.

Run the Python script for SNDBodge. On the console window that pops up, type "e" for "extract" and press Enter. You will then be prompted to enter the path to an SND file, but simply dragging the SND file you want to edit onto the console window will insert the path for you. After doing so, press Enter. Now you must create a folder where the program will save exported WAV files. Once again, drag it onto the console window when it asks you for the path and press Enter. Once the extraction process is complete, you can begin editing the exported WAV audio files.

When you're done editing, export your audio as a mono 16-bit WAV file with the original filename of the sound file you have edited. Replace the original WAV file with the edited one, delete all of the WAV files that you didn't modify, and run the Python script again. This time, type "i" for "import." After providing paths to the SND file and WAV folder once more, the script will begin processing the WAV file(s). The resulting SND file(s) can then be imported into the AFS.

Streamed Audio Editing
Within AFS00.AFS, you will see hundreds of ADX files. Once you find the file you want to edit, export the file and open PES Sound Converter. Once the program has opened, change the options at the top of the window to "ADX" and "WAV" and add the ADX file you extracted. Click "Next", and you should be prompted for a folder to save the converted ADX file in. Click "Use source directory" if you just want to use the same folder as the original file. Click "Next" again and the program will begin converting the file. Once it finishes, you can do whatever you want to the exported WAV file. https://cdn.discordapp.com/attachments/483466531674521603/951448010880061510/unknown.png

Once you're done editing it, save your audio as a WAV file. Go back to PES Sound File Converter and change the options at the top of the window to "WAV" and "ADX". Next, select your edited WAV file. If you are editing a dialogue audio file, set the Sample Rate to 48000Hz and the Channel setting to Mono; if you are modding a music track, set the Channel setting to Stereo and turn on looping. Note that doing this will simply cause the entire audio file to loop; see below for more information on setting custom loop points. Finally, click "Convert" and import your modified ADX file into AFS Explorer. https://cdn.discordapp.com/attachments/483466531674521603/951450430989295656/unknown.png

Setting Custom Loop Points for Music
Navigate to the folder you saved PES Sound Converter in and enter the "convert" folder. Inside, there should be five EXE files which the program uses for conversion. Click the address bar of the Explorer window, type "cmd", and press Enter. This will open a command-line window where you can run the conversion programs. To convert a WAV file to an ADX file with custom loop points, type "WAV2ADX.exe" followed by the path of your WAV file (again, you can input this by dragging the WAV file into the command line window) and the name of the directory where the output file will be saved. Before pressing Enter, type "-lps" and the sample number where the loop should begin (you can view this in Audacity by clicking the rightmost arrow in the timestamps at the bottom and selecting "Samples"), followed by "-lpe" and the sample number where the loop should end. Press Enter, and the new ADX file will be saved to the output folder. Example:

Texture Editing
In order to edit textures, you will need a program called rainbow, which can open TIM2 files, as well as a specialized PZZ file decompression script. (The Python script is recommended over the C executable due to its "unpack" command.) Use the script to unpack the PZZ file containing the texture you want to edit, and then use it to "decompress" the separate compressed files. (This is explained somewhat thoroughly in the github page's documentation.) Next, find the files with TIM2 headers in their data (often the second compressed file) and delete the data before the first header (usually 200 bytes). If you want to edit any TIM2 files that occur after the first instance, you will need to get rid of all data before the header of the TIM2 you want to edit. Now, at last, you can open the cut-down file in rainbow and click Export, allowing you to export the image and .xml metadata.

NOTE: Before exporting the .xml and image files, check the dropdown menu next to "Select Palette" at the bottom left of the rainbow window. If rainbow lists two palettes, the resulting exported image will be in black and white with no transparency. To fix this, open the TIM2 file in your hex editor. Search for a value of "80 00 00 00", which should be at either 0x14 or 0x84 depending on the TIM2's byte alignment, and change it to "40 00 00 00". After doing this, saving the file, and reopening it in rainbow, the dropdown should list only one palette and the image should export correctly.

Edit the image however you want, then re-import the image and .xml into rainbow and save the output .tm2 file. Reinsert the output TIM2 into the decompressed file it originated from. After that, it's back to the command line in order to compress the new file using the PZZ script. Finally, find that same original compressed file in the PZZ you started with, insert your new compressed file over the original, and import your modded PZZ either into the AFS file or directly into the disc image. In case you are confused, a video explaining the process can be found here.

Font Editing
However, editing the font is much simpler! The font is stored in the file nec20rg04.pzz, and can be opened with the program Crystal Tile 2. After starting the program and opening the file, open the Tile Viewer by either selecting it in the View menu or pressing F5. Set the "Tile form" to "4 color 2bpp" and the offset to 800, and you should be able to view each character in the font in its own separate tile. Each tile can be exported with either the "Export image" or "1 1 Export" option under Edit, and you can import edited tiles by using the "Import image" option in the same menu. An image containing all 7,807 font tiles can be found here.

Palette Editing
Navigate to the ending of a texture, the hex color codes for the colors of the image are stored there, all you need to do is get a program to view these color codes and then just replace them with whatever you want in a HEX editor.

How to NOT Play the Game (Cheating)
While testing out your edited files in-game, it helps to be able to manipulate the game in order to reach the thing you want to test quicker. Or you might simply want to mess around with the game in ways that can't be achieved by changing files. Either way, the best way to do this is by using Cheat Engine and the GioGio cheat table (also available through Cheat Engine's CEShare functionality). It is important to note that the cheat table currently only supports PCSX2 versions below 1.7. To begin, open Cheat Engine and your emulator of choice, then click the magnifying glass icon ("Select a process to open"). After selecting the emulator process, open the cheat table by selecting the folder icon ("Open a cheat table...") and navigating to the file. In addition, several codes for this game exist that can be used with PCSX2.

Mod Downloads
See the above sections, particularly the AFS section, for information on how to install these mods.

Texture Mods
Purple Gold Experience - penguino Pink Giorno - Hudgyn Sasdarl Shader Mod Collection - penguino Green Giorno - penguino Black Suit Giorno - penguino Comic Sans Font - penguino Italic Text - penguino Xbox Buttons - MistaL Green Fugo - Hudgyn Sasdarl Anime Grateful Dead - GoofyG Technical Difficulties Loading Screen - penguino Random Cosplay Colors Diavolo - Hudgyn Sasdarl Diavolo wit Da Gold on his Pants - Hudgyn Sasdarl Phantom Blood PS2 Jonathan in Title Demo - Hudgyn Sasdarl

Audio Mods
Text-To-Speech Giorno Voice Clips - penguino Dunkaccino Menu - penguino il vento d'oro over Giorno's Theme (1-2) - Hudgyn Sasdarl Fighting Gold over Gold Experience Requiem's Theme - Hudgyn Sasdarl Vinny Voice Clips over Giorno - penguino Sonic Voice Clips over Diavolo - penguino Bucciarati's Arranged Theme over Menu - Waddle Black Sabbath Normal Pitch Voice Lines - penguino Mista is Defeated - penguino

Cutscene Edits
Improved Giorno Demo - penguino Bucciarati is Formatting - Hudgyn Sasdarl Credits Cutscene Subtitles - Hudgyn Sasdarl Penguino Birthday Intro - Hudgyn Sasdarl UNO Debate 4-2 - penguino

Full Translations
JoJo's Colored Adventure Translation (GioGio's Bizarre Adventure) Hudgyn Sasdarl's Translation (JoJo's Bizarre Adventure: Golden Wind)

To install either of these extensive mods, you will need the program xdelta. Open the program, select the Patch, Source File, and Output File, and click the Patch button.

Other
Playable Turtle Polnareff - penguino Frog Giorno - penguino Troll-Face Black Sabbath - penguino Mario Model Edit over Janitor - penguino

Community
Join penguino's Discord server to stay up to date with the latest happenings in the GioGio modding scene. In addition, penguino is known to share developments in the modding scene (as well as the results of those developments) on his YouTube channel and Twitter feed.