~~NOTOC~~
===== Battle Formation Event Command =====
[[ff3:ff3us:patches:madsiur|{{ff3:ff3us:patches:madsiur:madbutton.png}}]]
==== Patch data ====
|Name |Battle Formation Event Command 1.0 |
|Author |madsiur |
|Link |{{ff3:ff3us:patches:madsiur:battleform.zip|Download}} |
==== Rom data ====
|ROM Name |Final Fantasy III (USA) 1.0 |
|ROM SHA-1 |4F37E4274AC3B2EA1BEDB08AA149D8FC5BB676E7 |
|Header |No |
|ROM Name |Final Fantasy III (USA) 1.1 |
|ROM SHA-1 |057ADA1C641E3E0B3CA34E6E4F4EB1B05A87143A |
|Header |No |
==== Description ====
This hack is inspired by the work of [[http://s8fp98fd5k.blog105.fc2.com/|Shall]] on FF6-G (which ASM code is [[http://ux.getuploader.com/shalldif/|public]]) but his code has been adapted to FF3us and modified in order to behave exactly like command $4D and not like the original $C0A5A7 battle calling code, which resulted in weird behavior with the party position after a battle called with an event trigger.
This event command fill a gap in FF3us by letting you call a battle directly with a formation. Normally as an example command $4D will call a pack with ID between $100 and $1FF, which can be somehow limited for extensive hacks with a lot of battle called this way. This command $69 behave in a identical way of command $4D, except of a pack number a formation ID is provided. The format is the following:
69 AA BB CC
Battle with formation BBAA with battle background CC
CC AND $3F = Background ID, map default if CC equals $3F
CC AND $80 = Disable battle blur
CC AND $40 = No battle sound
As an example, 69 22 01 12 will trigger a battle with formation $0122 with battle background $12 with battle blur and battle sound. 69 22 01 3F would use the map default background and 69 22 01 FF the default background with no battle blur and no battle sound. As always, you need to provide the good event context after battle in order to see this fully working (same for command $4D). An example would be:
69 22 01 12 ; Call battle
B2 A9 5E 00 ; Check for game over (subroutine $CA5EA9)
96 ; Restore screen from fade
FE ; Return
If you want to move the code, you can assemble the ASM file you need with xkas 0.06.
==== Offsets ====
|$C0992C - $C0992D |Event Command Pointer Table (both implementations) |
|$C0D613 - $C0D65E |Bank $C0 Implementation: Command Code |
|$C0D613 - $C0D616 |Bank $F2 Implementation: JML to Command Code |
|$F20000 - $F2004B |Bank $F2 Implementation: Command Code |
==== Code ====
Bank $C0 Implementation
org $C0992C ; Jump table edit
dw cmd69
org $C0D613 ; Change to relocate command in bank $C0
cmd69: ; Requires $4B bytes of free space
REP #$20 ; 16-Bit Accumulator
LDA $EB ; Battle formation
STA $0011E0 ; Store as battle formation
TDC ; Clear Accumulator
SEP #$20 ; 8-Bit Accumulator
LDA $ED ; Battle intro effects and background
AND #$C0 ; Isolate battle blur and battle sound effect disabling
STA $078A ; Save value in RAM
LDA $ED ; Battle intro effects and background
AND #$3F ; Isolate bits 0-5 (battle background ID, max #$3F)
CMP #$3F ; Check if equal to #$3F
BNE lblA ; If not, set as background
LDA $0522 ; Load $0522 (#$7F = battle background ID)
AND #$7F ; Isolate bits 0-6 (battle background ID, max #$7F)
lblA:
STA $0011E2 ; Store as battle background ID
TDC ; Clear Accumulator
STA $0011E3 ; ???
LDA $1ED7 ;
AND #$10 ; Continue music during battle?
LSR ;
STA $0011E4 ; Set to continue current music
LDA #$01 ;
STA $56 ; Enable battle
LDX $0541 ; BG1 X,Y Center Coordinate
STX $1F66 ; Store as Field XY Scroll Position
LDX $00AF ; Party's X,Y Position
STX $1FC0 ; Set as Party XY Position
LDA #$E0 ;
STA $11FA ; enable startup event, disable fade-in, no update on map load
LDA #$04 ; Number of bytes: 4
JMP $9B70 ; Advance the event queue of 4 bytes
==== Links ====
[[http://www.ff6hacking.com/forums/showthread.php?tid=3393|Forum Thread]]\\
[[http://ux.getuploader.com/shalldif/|FF6-G Uploader]]\\
[[http://s8fp98fd5k.blog105.fc2.com/|Shall's Blog]]\\
[[https://www.youtube.com/channel/UCUnyxLM-Sdl7OtKxRHzuSZQ|Shall's Youtube Channel]]\\
==== Screenshots ====
{{gallery>ff3:ff3us:patches:madsiur:battle_form:?128x128&lightbox}}
[[ff3:ff3us:patches:madsiur|{{ff3:ff3us:patches:madsiur:madbutton.png}}]]