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 (ジョジョの奇妙な冒険 黄金の旋風, JoJo no Kimyō na Bōken Ōgon no Kaze, lit. "GioGio's Bizarre Adventure: Golden Whirlwind") 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 (free) or 010 Editor (paid). In addition, obtaining a PS2 emulator such as PCSX2 can be helpful for testing mods quickly.
Host Filesystem
Under normal circumstances, an ISO editor would be necessary to access the files within the game backup. However, by extracting the files and editing the game's executable files to redirect file locations and bypass disc sanity checks, it is possible to run the game on the host filesystem. Doing so allows AFS files to be easily altered or replaced, even while the game is running, and also improves the game's load times; in addition, it allows for the removal of SYSTEM.CNF and the game's "GDT" padding files, reducing the game's total filesize by 85%.
An IPS patch compatible with any retail executable can be found here and applied with any IPS ROM patcher. Note that after extracting files and patching the executable, you will need to enable Host Filesystem, which can be found in PCSX2's emulation settings menu. Finally, just for convenience, it is advised that you append the ".ELF" file extension to the modified executable, to allow for easier selection or detection from the emulator.
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. While this allows the program to automatically determine the correct size to allocate for the file, user action is still required afterward. After selecting either option, close the last error window that pops up, then press Ctrl and R simultaneously. Doing so will bring up a menu where you can modify the reserved space for every file. If you allowed AFSExplorer to set a reserved space, the size allocated to the file in question here should match your modified file's size; if not, select the file and then press or hold the "+" button until the size in bytes can fit your modded file. Now click "Regenerate AFS" and save the edited AFS. Note that doing this will not result in the modified file being added to the newly-created AFS, so you will have to open the AFS and import the file yourself afterward.
Assuming you are not using the host filesystem, 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, setting the timestamp format to "NTSC Frames," and multiplying the frame number you want by two before writing it into the text file. 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.
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 against the original.
Python Script Method
Get the extraction and injection Python scripts (you'll need Python 3.7 for them to work correctly). Extract both scripts into a folder, then create another folder next to them named "pzz_files" and put your cutscene file(s) in there. Once that's done, you must run pzz_extractor.py. After it runs, you can start modifying the TXT file(s) it extracted. Once you're done editing your TXT file, simply run pzz_injector.py and import the modified PZZ file(s) it creates into AFS_DATA.AFS.
Formatting Guide
Audio Editing
You will need SNDtool and BDBodge to edit voice clip and sound effect files; Audacity, its FFmpeg extension, and ADX Encoder are required to edit music, cutscene audio, and character dialogue. In addition, you will need Python 3.7 installed for BDBodge 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. Drag and drop the SND file on SNDtool to extract the BD/HD files, then run the Python script for BD Bodge. In the console window that pops up, type "e" for "extract" and press Enter. You will then be prompted to enter the path to an HD file, but simply dragging the HD file you want to edit onto the console window will insert the path for you. After that, do the same for the BD file and press Enter. The console window will then ask you to create a folder for the exported WAV files. Once again, drag the desired folder onto the console window and press Enter to begin extraction. 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 BD Bodge Python script again. This time, type "i" for "import." After providing paths to the BD/HD files and WAV folder once more, the script will begin processing the WAV file(s) and importing them into the BD/HD files. Once BD Bodge is finished with the job, you'll need to run SNDtool from the console to repack the BD/HD files back into an SND file. Simply type SNDtool.exe, then drag and drop each required file and type a name for the final SND file.
Example: SNDtool.exe "C:\edit.hd" "C:\edit.bd" "C:\edit.u1" "C:\edit.u2" newfile.snd
(Keep in mind that the files must always be in this order, or else it will not work.)
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. With the FFmpeg extension installed (refer to the installation instructions on Audacity's website), Audacity is capable of opening and exporting ADX files natively, but does not support looping in any capacity. Thus, if your only goal is to edit non-looping audio (dialogue and cutscene audio), Audacity alone will suffice for converting to and from the format. There are a few things to keep in mind, however: due to a bug in the current version of Audacity, you will need to export your tracks with the "(external program)" format, with the command set to ffmpeg -i - "%f.adx". In addition, be careful to specify the correct sample rate in the export options menu.
In order to add loop points to your custom ADX file (important if you are editing music), you will need ADX Encoder. Upon opening the program, you will be presented with the following GUI:
- Import: Clicking the button displaying a folder and an arrow, pressing Insert, or selecting "Item->Add" in the window dropdown will allow you to select a WAV file to be converted. The selected WAV file will appear in the list, along with its sample rate, number of audio channels, and number of samples.
- Remove: Clicking the button displaying a red X over a file icon, pressing Delete, or selecting "Item->Delete" in the window dropdown will remove the highlighted WAV file from the list.
- Loop: Double-clicking a file in the list, clicking the button displaying a pair of arrows, pressing L, or selecting "Loop->Loop Settings..." in the window dropdown will allow you to set the loop information for the created ADX. You can choose to disable looping, have the file loop from the start of the audio to the end, or set loop points by sample number. The sample numbers of a given position or selection can be viewed in Audacity by clicking the arrow to the right of either value in the "Selection" panel at the bottom of the window, and then selecting "samples" in the resulting dropdown menu.
- Output Folder: Clicking the button displaying an empty folder or pressing O will prompt you for a folder to place the new ADX files in. If this is not set, the files will be deposited in the computer's root directory.
- Export: Clicking the "Encode" button or pressing E will convert each WAV file in the list into an ADX file with corresponding audio and loop information.
Note that if imported into the game as-is, the ADX files output by this program will not loop, due to using a different loop specification than the game expects. To remedy this, the use of a hex editor is required. Opening an exported ADX file in a hex editor should result in a similar view to the left side of the following image:
In order to make the ADX file meet the game's standards, three actions are required in the hex editor:
- Change the values at position 0x12 from "04 00" to "03 00".
- Delete 12 (0x0C) bytes of zeroes from position 0x14 onward (the selection should end just before a value of "00 00 00 01").
- Subtract 12 (0x0C) from the value at position 0x02, which indicates the start of the audio data.
After doing this and saving the ADX file, the game will be able to read it correctly, loop data included.
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. You will also need to download pzz-pasta and unzip it, then move pzzcompjojo.exe, pzz_comp_jojo.py and pzzcomp_jojo_batch.py into the "pzz-editing" folder.
Start by extracting the PZZ file you want from AFS_DATA.AFS into the same folder as PZZ-extraction.bat, then run the BAT file. When prompted, type the filename of the PZZ file you just extracted into the command prompt. This will create two folders with the extracted files. Depending on the PZZ file, the textures will be extracted to either the "unpack" folder or the "decompressed" folder, though in most cases they should be extracted to the latter. The extracted texture files will have the extension TXB. Once you find them, copy the TXB files into the "texture-editing" folder, then run TXB-extract.bat. Now, at last, you can open the unpacked TM2 files in Rainbow and click Export, allowing you to modify the images.
Edit each image however you want, then re-import the images into rainbow via their respective XML files and save the output TM2 file. Replace the TM2 files in the texture-editing directory and run TXB-repack.bat. Once the script finishes, replace the original TXB file from the PZZ with the newly-created file. Finally, run PZZ-repack.bat to repack the PZZ file, which can be re-imported into the game files.
Font Editing
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.
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. 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. To begin using these codes, start the emulator and open its log window using the status bar. If you are using a Qt build of PCSX2 (one that displays a grid or list of found games), the option can be found at "Debug" -> "Enable System Console"; otherwise, it should be at "Misc" -> "Show Console". After doing so, booting a game will display information about the disc at startup, including the CRC checksum of the game data. Copy the CRC checksum, then create a new file in PCSX2's cheats folder ("cheats" by default) with the copied checksum as the name and ".PNACH" as the extension. You may then paste any available cheats you desire into the file, treating it as a plaintext file. The final step is to enable cheats within the emulator: this can be done from the status bar via "System" -> "Enable Cheats" on non-Qt builds and through the "Emulation" tab of the settings menu in Qt builds.
Mod Downloads
See the above sections, particularly the AFS section, for information on how to install these mods.
Texture Edits
Giorno Giovanna
Pink Giorno - Hudgyn Sasdarl
Green Giorno - penguino
Black Suit Giorno - penguino
Anime Style Giorno Giovanna - penguino
Purple Gold Experience - penguino
Bruno Bucciarati
Anime Style Bruno Buccellati - penguino
Anime Style Sticky Fingers - penguino
Guido Mista
Gallery Room Photo Mista - Hudgyn Sasdarl
Pannacotta Fugo
Green Fugo - Hudgyn Sasdarl
Purple Haze Feedback Cover "Cheddar Fugo" - Hudgyn Sasdarl
Purple Haze Feedback Cover Purple Haze - Hudgyn Sasdarl
Red Fugo - Lester
Diavolo
Random Cosplay Colors Diavolo - Hudgyn Sasdarl
Diavolo with "Da Gold" on His Pants - Hudgyn Sasdarl
Anime Style King Crimson - penguino
Enemy Characters
Anime Grateful Dead - GoofyG
Spider-Man (2002) Secco - penguino
UI/Engine
Shader Mod Collection - penguino
Comic Sans Font - penguino
Italic Text - penguino
Xbox Buttons - MistaL
Technical Difficulties Loading Screen - penguino
Heritage for the Future Blood (White Blood) - penguino
All-Star Battle/Eyes of Heaven Blood (Ink Blood) - penguino
Auto Modellista Shader - penguino
Other
Phantom Blood PS2 Palette Jonathan in Title Demo - Hudgyn Sasdarl
JoJo's Venture Palette Joseph in Title Demo - Hudgyn Sasdarl
JoJo's Venture Palette Jotaro in Title Demo - Hudgyn Sasdarl
Audio Edits
Music
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
Bucciarati's Arranged Theme over Menu - Waddle
Cutscenes
Mista is Defeated (Audio Only) - penguino
Giorno Giovanna
Text-To-Speech Giorno Voice Clips - penguino
Vinny Voice Clips over Giorno - penguino
Enemy Characters
Black Sabbath Normal Pitch Voice Lines - penguino
Sonic Voice Clips over Diavolo - penguino
Fushigi Freak Diavolo - Hudgyn Sasdarl
Cutscene Edits
Demo Sequence
Improved Giorno Demo - penguino
Penguino Birthday Intro - Hudgyn Sasdarl
Chapter 1
Bucciarati is Formatting - Hudgyn Sasdarl
Chapter 4
Chapter 11
Credits Cutscene Subtitles - Hudgyn Sasdarl
Fushigi Freak Diavolo - Hudgyn Sasdarl
Model Edits
Character
Frog Giorno - penguino
Playable Turtle Polnareff - penguino
Troll-Face Black Sabbath - penguino
SM64 Mario over Janitor - penguino
Santa Giorno - penguino
Sonic over Giorno - penguino
GioGio's Bizarre Adventure over Giorno - penguino
Saxman over King Crimson - penguino
PaRappa the Rapper/Chop Chop Master Onion over Abbacchio/Moody Blues - penguino
Stage
Bob-Omb Battlefield over Naples Plaza - penguino & Hudgyn Sasdarl
Full Translations
JoJo's Colored Adventure Translation (GioGio's Bizarre Adventure)
Hudgyn Sasdarl's Translation (JoJo's Bizarre Adventure: Golden Wind)
rzhumen88's Russian Translation (Невероятные приключения ДжоДжо: Золотой Ветер)
OAleex's Brazillian Portuguese Translation (JoJo's Bizarre Adventure: Golden Wind)
To install these mods, you will need the program xdelta. Open the program, select the Patch, Source File, and Output File, and click the Patch button.
Resources
(sdplxx.txt is an unused template file.)
Menu 01 - Poster Viewer
Menu 02 - Concept Art
Menu 08 - Araki Sketches
Diavolo reused from prior loading screen
(Volume 56, Chapter 519)
Green Day based on its only full appearance
(Chapter 553, Chapter 552)
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.