Final Fantasy III: Random Battle Songs Super Nintendo

  • ~
  • Share
This hack add randomness to the default battle song and victory fanfare. There are three hacks each with an IPS file and a corresponding ASM file that can be assemble with bass v14. The first hack will select between 8 battle songs and 4 fanfare songs, the second one between 4 battle songs and 4 fanfare songs and the third one between 4 battle songs and 2 fanfare songs.

In all case the hack use free space in expanded ROM (offset $FF0000) but the offset can easily be modified in the ASM file if needed. This hack also relocate the instrument sets, to allow place for new song pointers which are locate right before them in the ROM.

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





Database match: Final Fantasy III 1.0 (USA)
Database: No-Intro: Super Nintendo Entertainment System (v. 20210222-050638)
File/ROM SHA-1: 4F37E4274AC3B2EA1BEDB08AA149D8FC5BB676E7
File/ROM CRC32: A27F1C7A
Release Date
Jan 16, 2022
2 years ago
Similar Games
Popular Super Nintendo Games

Play Final Fantasy III: Random Battle Songs Game

Experience Final Fantasy III: Random Battle Songs Game (USA) online exclusivly at PastGames.net. Get Final Fantasy III: Random Battle Songs ROM and use it with an emulator of your choice. Final Fantasy III: Random Battle Songs can be played on PC, Mac, iOS and Android using our high quality downloads. PastGames is Americas #1 choice for Retro Games like Final Fantasy III: Random Battle Songs.