|----------------------------------------------| | random battle song and victory fanfare hack | | by: madsiur (code) | | version: 1.0 | | released on: January 16th, 2022 | | apply to: FF3us 1.0 (no header) | |----------------------------------------------| |----------------------------------------------| | 1- Files present | |----------------------------------------------| random_a.asm: 8 battle songs, 4 victory fanfares assembly file random_a_nh.ips: IPS patch for the random_a.asm hack (for headeless ROM) random_b.asm: 4 battle songs, 4 victory fanfares assembly file random_b_nh.ips: IPS patch for the random_b.asm hack (for headeless ROM) random_c.asm: 4 battle songs, 2 victory fanfares assembly file random_c_nh.ips: IPS patch for the random_c.asm hack (for headeless ROM) bins/instrument_data.bin: Original instrument sets that needed relocation |----------------------------------------------| | 2- Song hacks present | |----------------------------------------------| All FF6 songs hacks used in this hack were created by emberling except the CT and CC victory fanfares which are the work of Gi Nattak. Each one has a data file (_data.bin) and an instrument set file (_inst.bin). bins/fanfare_0: Chrono Cross: Victory Fanfare bins/fanfare_1: Chrono Trigger: Victory Fanfare bins/fanfare_2: Mystic Quest: Victory! bins/song_0: FF7: Let the Battle Begin! bins/song_1: FF9: Battle 1 bins/song_2: Tales of Phantasia: Battle Theme bins/song_3: Chrono Trigger: Battle 1 bins/song_4: FF5: Battle 1 bins/song_5: FFX: Battle Theme bins/song_6: FF8: Force your Way |----------------------------------------------| | 3- Usage | |----------------------------------------------| To use an asm file or an ips file of the hack, your FF3us 1.0 ROM must first be expanded to 32 Mbit, ideally with FF padding in empty space. By default, the hack use free space starting at offset $FF0000 but that can be changed in the asm file by modifying the "seek($FF0000)" macro call. You can apply an asm file to the ROM with bass v14 (link below) by typing a command such as "bass -o rom.smc random_a.asm". You can apply an IPS file to the ROM with a patching utility such as Lunar IPS (link below). Each different hack use the same song starting order, starting at 0. For example the 4 songs hack use song_0, song_1, song_2 and the FF6 battle theme as 4th song. The same logic applies to the fanfare themes, the FF6 one being the last in every case. |----------------------------------------------| | 4- Modifications | |----------------------------------------------| I made 3 versions of the hack to accommodate the most people possible but there are ways to modify the hack. For example, if you want to replace a song, you can select a new one in the ff6hacking wiki database (link below), simply rename the _inst.bin and _data.bin files, replace them in the bins folder and run the bass command to assemble the hack. A second thing that can be done is having more than once a song ID in song_table or fanfare_table. This will change the appearance odds of that song though. This can be sort of a workaround to having a max number of songs different than 2, 4 or 8. Having a random number for example between 0 and 2 or between 0 and 5 cannot be done with a simple edit of the current code. A third different thing that can be done is for example changing the line "and #$04" to "and #$01" in the code. The latter would always select index 0 or 1 from the song table (instead of a 0-3 index in the 4 songs hack) thus always selecting between the first two battle songs. Regardless of what you tweak, if you decide remove song data and instruments at the bottom of an asm file, you might need to modify in accordance the song IDs in the different tables. |----------------------------------------------| | 5- Offsets affected | |----------------------------------------------| These are the changes of random_a_nh.ips, there other two hack are quite similar except for the amount of free space used starting at $FF0000. $C10152-$C10156 - JSL instruction (fanfare) $C2BDB7-$C2BDBA - JSL instruction (battle theme) $C5062B-$C5062E - Resumed songs table LDA instruction $C501E2-$C501E5 - Instrument sets LDA instruction $C53C5E-$C53C5E - Total number of songs in the game $C53F95-$C53FB0 - New song pointers $FF0000-$FF6F59 - New code, instrument sets, new song data |----------------------------------------------| | 6- Links | |----------------------------------------------| ff6hacking wiki song database: https://www.ff6hacking.com/wiki/doku.php?id=ff3:ff3us:music:songdata bass v14: https://www.romhacking.net/utilities/794/ Lunar IPS: http://www.romhacking.net/utilities/240/