ff3:ff3us:patches:madsiur:random_battle_songs

Name Random Battle Songs 1.0
Author (code) madsiur
Authors (songs) emberling, Gi Nattak
Link Download
ROM Name Final Fantasy III (USA) 1.0
ROM SHA-1 4F37E4274AC3B2EA1BEDB08AA149D8FC5BB676E7
Header No
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

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

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

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 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.

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.

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, 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.

  • ff3/ff3us/patches/madsiur/random_battle_songs.txt
  • Last modified: 2 years ago
  • by madsiur