Random battle song and victory fanfare

Last updated : 01/16/2022
Current version : 1.0
Compatible with : FF3us 1.0
Type : Modification
Download
Description

This hack randomize the regular battle song and victory fanfare. There are 3 included hacks, with amount of songs as following:

random_a: 8 battle songs, 4 victory fanfares
random_b: 4 battle songs, 4 victory fanfares
random_c: 4 battle songs, 2 victory fanfares
Music

All songs used in this hack were created by emberling except the Chrono Trigger and Chrono Cross victory fanfares which are the work of Gi Nattak. Each song has a data file (_data.bin) and an instrument set file (_inst.bin). Here are the available songs:

Victory fanfare: Chrono Cross
Victory fanfare: Chrono Trigger
Victory fanfare: Mystic Quest

Battle song: FF7 - Let the Battle Begin!
Battle song: FF9: Battle 1
Battle song: Tales of Phantasia - Battle Theme
Battle song: Chrono Trigger: Battle 1
Battle song: FF5: Battle 1
Battle song: FFX: Battle Theme
Battle song: FF8: Force your Way
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 song database, 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.

Offsets affected
$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-$FFXXXX - New code, instrument sets, new song data (ending offset can vary)

Random battle song and victory fanfare

Last updated : 01/16/2022
Current version : 1.0
Compatible with : FF3us 1.0
Type : Modification
Download
Description

This hack randomize the regular battle song and victory fanfare. There are 3 included hacks, with amount of songs as following:

random_a: 8 battle songs, 4 victory fanfares
random_b: 4 battle songs, 4 victory fanfares
random_c: 4 battle songs, 2 victory fanfares
Music

All songs used in this hack were created by emberling except the Chrono Trigger and Chrono Cross victory fanfares which are the work of Gi Nattak. Each song has a data file (_data.bin) and an instrument set file (_inst.bin). Here are the available songs:

Victory fanfare: Chrono Cross
Victory fanfare: Chrono Trigger
Victory fanfare: Mystic Quest

Battle song: FF7 - Let the Battle Begin!
Battle song: FF9: Battle 1
Battle song: Tales of Phantasia - Battle Theme
Battle song: Chrono Trigger: Battle 1
Battle song: FF5: Battle 1
Battle song: FFX: Battle Theme
Battle song: FF8: Force your Way
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 song database, 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.

Offsets affected
$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-$FFXXXX - New code, instrument sets, new song data (ending offset can vary)