Title: Battle Dialog Page Break Author: SilentEnigma Version: 1.1 Release Date: 2021-09-17 Applies to: Final Fantasy III (v1.0) (U) Contents: BattleDialogPageBreak_A_H.ips = patch for headered ROMs, "A" variant BattleDialogPageBreak_A_NH.ips = patch for unheadered ROMs, "A" variant BattleDialogPageBreak_B_H.ips = patch for headered ROMs, "B" variant BattleDialogPageBreak_B_NH.ips = patch for unheadered ROMs, "B" variant readme.txt = this file ROM Addresses: C1/439B, C1/439F, C1/43A4, C1/5E5A - C1/5E5B Free space used: 30 bytes C1/FFE5 - C1/FFF8 * C2/A684 - C2/A690 * Due to high use of the limited free space in Bank C1, this hack may require significant modification in order to maintain compatibility with some other hacks. -------------------------------------------------- TABLE OF CONTENTS 0. Description 1. Relevant Offsets & Disassembly 2. Credits 3. Revision History 4. Legal ________________________________________________________________________________ 0. DESCRIPTION ________________________________________________________________________________ This hack adds a page break function <$03> for the big battle dialog captions in FF3us. When the function is invoked, the displayed text clears, and the remaining text continues from the top of the dialog window. This provides hackers with an alternative to the default page scrolling behavior used by big battle captions, and is especially useful for reformatting the script to use quotation marks. The hack comes in two variants: - A (BattleDialogPageBreak_A): Keeps the original left/right margin widths. - B (BattleDialogPageBreak_B): Reduces left/right margins (more usable text area) USAGE ===== Page break function I.D.: $03 Page break is typically added after function $07 (pause until A button pressed). Example using FF3usME ===================== In FF3usME > Monster Editor > Big Captions > Caption $00: Add <$03> after the first pause (

): WEDGE: Hey! What's the matter?

<$03> Do you know something we don't__?

Result: -------------------------------- | WEDGE: | | Hey! What's the matter? | | | -------------------------------- -------------------------------- | Do you know something we | | don't......? | | | -------------------------------- ________________________________________________________________________________ 1. RELEVANT OFFSETS & DISASSEMBLY ________________________________________________________________________________ Contents: a. Common b. Variant B Only ================================================== a. Common ================================================== Original: C1/5E5A: 47 67 ; (03) (exits) Modified: C1/5E5A: E5 FF ; (03) (new subroutine C1/FFE5) New Subroutine C1/FFE5: C1/FFE5: 20 02 5E JSR $5E02 ; Prepare to clear page C1/FFE8: DA PHX ; string index C1/FFE9: 20 D0 96 JSR $96D0 ; Clear page C1/FFEC: 20 95 96 JSR $9695 ; Prepare fresh page C1/FFEF: FA PLX ; string index C1/FFF0: 22 84 A6 C2 JSL $C2A684 ; New subroutine C2/A684 C1/FFF4: 20 D5 5D JSR $5DD5 ; Start fresh page C1/FFF7: FA PLX ; Pull original return address C1/FFF8: 60 RTS ; Double-return New Subroutine C2/A684: C2/A684: E8 INX ; string index C2/A685: E8 INX ; skip newline C2/A686: 8E D7 88 STX $88D7 C2/A689: AF 1B 98 C1 LDA $C1981B ; Battle big captions bank C2/A68D: 8D D9 88 STA $88D9 C2/A690: 6B RTL ================================================== b. Variant B Only ================================================== Original: C1/439A: 9D 45 E7 STA $E745,X <- Margin / 8 = (0xE745 - 0xE73F) / 2 C1/439D: 1A INC A C1/439E: 9D 85 E7 STA $E785,X <- Margin / 8 = (0xE785 - 0x40 - 0xE73F) / 2 C1/43A1: 1A INC A C1/43A2: E8 INX C1/43A3: E8 INX C1/43A4: E0 34 00 CPX #$0034 <- Text box width / 8 = 0x34 / 2 Modified: C1/439A: 9D 43 E7 STA $E743,X <- Margin / 8 = (0xE743 - 0xE73F) / 2 C1/439D: 1A INC A C1/439E: 9D 83 E7 STA $E783,X <- Margin / 8 = (0xE783 - 0x40 - 0xE73F) / 2 C1/43A1: 1A INC A C1/43A2: E8 INX C1/43A3: E8 INX C1/43A4: E0 38 00 CPX #$0038 <- Text box width / 8 = 0x38 / 2 ________________________________________________________________________________ 2. CREDITS ________________________________________________________________________________ Thanks to: Imzogelmo, for his disassembly of bank C1 http://www.angelfire.com/al2/imzogelmo/patches.html Lord J et al., for the FF3usME utility. http://www.angelfire.com/pq/jumparound/ ________________________________________________________________________________ 3. REVISION HISTORY ________________________________________________________________________________ 2020-12-26 : Version 1.0 released. 2021-09-17 : Version 1.1 released. - Resolved conflict with Assassin's Alphabetical Rage patch. ________________________________________________________________________________ 4. LEGAL ________________________________________________________________________________ Copyright (C) 2020, 2021 David R. Thompson (SilentEnigma). The copyright holder ("author") permits the free use of the attributed work referenced by this document exclusively for non-commercial purposes, provided that the following conditions are met: 1. The author and all contributors credited in this readme document shall be given credit for their respective contributions wherever the attributed work is reused, redistributed, or modified. 2. This readme document shall accompany any of the files comprising the attributed work wherever they are redistributed in unmodified form. The work(s) and file(s) distributed with this document are provided "AS-IS", WITHOUT ANY WARRANTY. The author shall not be held responsible for any damages related to the use of work(s) and file(s) distributed with this document.