Final Fantasy II: Adding Spells to Spell Lists Patch is a modification for the Super Nintendo game that adjusts how spells are organized in the spell lists. Unlike the original system, where spells are classified by number, this patch assigns spells based on the first character of their names. It offers compatibility for multiple versions, enhancing customization for users who alter spell effects.
This patch is really only for hackers. In the original game, spells are added to spell lists based on spell number. If you change spell effects, however (for example, changing a White spell to a Black spell), then the spell will still be added to a White list.
This patch changes it so the spells are added based on the first character of their name. Any spells with a white magic sphere will be added to the top (i.e. White) list, any spells with a gray magic sphere will be added to the bottom (i.e. Call) list, and any other spells with be added to the middle (i.e. Black/Ninja) list. The zip file includes patches for FF2us v1.0, FF2us v1.1, and FF4j.
=================================================================
FF2/4 Adding Spells to Spell Lists Patch by Phoenix Hacks
9/9/2008
=================================================================
This patch is really only for hackers. In the original game, spells are added to spell lists based on spell number. If you change spell effects, however (for example, changing a White spell to a Black spell), then the spell will still be added to a White list.
This patch changes it so the spells are added based on the first character of their name. Any spells with a white magic sphere will be added to the top (i.e. White) list, any spells with a gray magic sphere will be added to the bottom (i.e. Call) list, and any other spells with be added to the middle (i.e. Black/Ninja) list.
This zip file includes three IPS patches. One is for FF2us v1.0, one is for FF2us v1.1, and one is for FF4j. The disassembly for each of these is provided below. The "ASM Interpretation" is for v1.0, but the (headered) offsets are listed for all three version on the left. The second subroutine below (starting at offset 1F420) is the same for all three versions.
2v1.0 2v1.1 4j Hex Data ASM Interpretation
----- ----- ----- -------- ------------------
1F334 1F349 1F34E BD 60 15 Load A with 1 byte at $7E:1560+X ; \
1F337 1F34C 1F351 D0 2D Branch to 1F366 if zero flag is clear ; |
1F339 1F34E 1F353 B9 1C 29 Load A with 1 byte at $7E:291C+Y ; | load A with the spell number
1F33C 1F351 1F356 85 B9 Store A to $00:D+$B9 ; |
1F33E 1F353 1F358 C9 FF Compare A with #FF ; |
1F340 1F355 1F35A F0 2D Branch to 1F36F if zero flag is set ; /
1F342 1F357 1F35C 20 20 F2 Jump to subroutine at 1F420 ; load A with first letter of spell name
1F345 1F35A 1F35F C9 40 Compare A with #40 ; if A isn't 40 (i.e. white magic),
1F347 1F35C 1F361 D0 06 Branch to 1F34F if zero flag is clear ; branch to next check
1F349 1F35E 1F363 A5 B3 Load A with 1 byte at $00:D+$B3 ; else if A is 40 and the spell list isn't 0,
1F34B 1F360 1F365 D0 19 Branch to 1F366 if zero flag is clear ; skip past adding the spell
1F34D 1F362 1F367 80 11 Branch to 1F360 ; otherwise add the spell to the first list
1F34F 1F364 1F369 C9 41 Compare A with #41 ; if A isn't 41 (i.e. call magic),
1F351 1F366 1F36B D0 08 Branch to 1F35B if zero flag is clear ; branch to next check
1F353 1F368 1F36D A5 B3 Load A with 1 byte at $00:D+$B3 ; else if A is 41
1F355 1F36A 1F36F C9 02 Compare A with #02 ; and the spell list isn't 2,
1F357 1F36C 1F371 D0 0D Branch to 1F366 if zero flag is clear ; skip past adding the spell
1F359 1F36E 1F373 80 05 Branch to 1F360 ; otherwise add the spell to the third list
1F35B 1F370 1F375 A5 B3 Load A with 1 byte at $00:D+$B3 ; if A is anything else
1F35D 1F372 1F377 3A Decrement A ; and the spell list isn't 1,
1F35E 1F373 1F378 D0 06 Branch to 1F366 if zero flag is clear ; skip past adding the spell
1F360 1F375 1F37A A5 B9 Load A with 1 byte at $00:D+$B9 ; \
1F362 1F377 1F37C 9D 60 15 Store A to $7E:1560+X ; |
1F365 1F37A 1F37F C8 Increment Y ; |
1F366 1F37B 1F380 E8 Increment X ; | otherwise, add the spell to the
1F367 1F37C 1F381 E6 B7 Increment 1 byte at $00:D+$B7 ; | list and repeat if necessary
1F369 1F37E 1F383 A5 B7 Load A with 1 byte at $00:D+$B7 ; |
1F36B 1F380 1F385 C9 18 Compare A with #18 ; |
1F36D 1F382 1F387 D0 C5 Branch to 1F334 if zero flag is clear ; /
1F36F 1F384 1F389 60 Return from subroutine ; return
1F420 DA Push X (2 bytes) onto stack ; \
1F421 85 DF Store A to $00:D+$DF ; |
1F423 A9 06 Load A with #06 ; |
1F425 85 E1 Store A to $00:D+$E1 ; | loads A with the first letter
1F427 20 E0 83 Jump to subroutine at 185E0 ; | of the spell name (40 for
1F42A A6 E3 Load X with 2 bytes at $00:D+$E3 ; | white magic, 41 for call magic)
1F42C BF 00 89 0F Load A with 1 byte at 78B00+X ; |
1F430 FA Pull 2 bytes from stack and store in X ; |
1F431 60 Return from subroutine ; /
Final Fantasy II (USA).sfc - NOINTRO
CRC32: 65D0A825
MD5: 4FA9E542B954DCB954D5CE38188D9D41
SHA-1: 2FA447E3E010CE8BA5B4E746F6609AA0E324D947
SHA-256: 680535DC1C4196C53B40DC9C2C9BC159A77802AB8D4B474BEF5DC0281C15AD06
Final Fantasy II: Adding Spells to Spell Lists Patch Game Wiki
Experience Final Fantasy II: Adding Spells to Spell Lists Patch Game (USA) online wiki exclusivly at RetroSpot.net. View Final Fantasy II: Adding Spells to Spell Lists Patch and use it with an core of your choice. Final Fantasy II: Adding Spells to Spell Lists Patch is compatible with PC, Mac, iOS and Android. RetroSpot is USA #1 choice for Retro Game information for games like Final Fantasy II: Adding Spells to Spell Lists Patch.