Title: Tintinabar Restores MP Author: PowerPanda Version: 1.0 Applies to: FF3us v1.0 (headered) Contents: tintinmp_8.ips - Each step restores MP equal to 1/8th of your stamina tintinmp_16.ips - Each step restores MP equal to 1/16th of your stamina tintinmp_removal.ips - reverts your rom, and works with both the 8 and 16 versions -------------------------------------------------------------------------------- -=Intro and Description=- The Tintinabar (or Tintinnabulum) is an interesting, but semi-useless relic. It does not restore enough HP to make it worthwhile. However, if it restored MP, it would be a bit more enticing. This micropatch has the Tintinabar restoring a little bit of MP with every step. Two versions exist: one that restores MP equal to 1/8th of your stamina with each step, and another that restores 1/16th. Choose the version that you want. Note that this does not change the item description for the Tintinabar, as that would make the patch incompatible with any other hack that changes item descriptions. You can use the program FF3usME to edit the item description on your own copy. -------------------------------------------------------------------------------- -=Compatibility=- This hack is compatible with any hack that does not edit the Tintinabar, as all of the code changes are done in-line. It is unfortunately incompatible with Lenophis's "Unhardcoded Tintinabar" hack. His code is so optimized that I was unable to add in the extra 2 bytes that were needed to do the additional division. However, I was able to use some of his optimized code to make space for my own changes. -------------------------------------------------------------------------------- Credits Hacking - PowerPanda C0 Bank Optimizations - Lenophis Programs Used HxD Hex Editor -------------------------------------------------------------------------------- Code Changes C0/4A54: BD 50 18 LDA $1850,X (setup of current parties) C0/4A57: 89 40 BIT #$40 C0/4A59: F0 70 BEQ $4ACB C0/4A5B: 29 07 AND #$07 C0/4A5D: CD 6D 1A CMP $1A6D (Compare to the active party) C0/4A60: D0 69 BNE $4ACB C0/4A62: B9 14 16 LDA $1614,Y (status byte 1) C0/4A65: 29 C2 AND #$C2 (are any of the three terminal ailments set?) C0/4A67: D0 2A BNE $4A93 (branch if so) C0/4A69: B9 23 16 LDA $1623,Y (Load character's relic 1) C0/4A6C: C9 E5 CMP #$E5 (Is it Tintinabar?) C0/4A6E: F0 0A BEQ $4A7A (Branch if it is) C0/4A70: B9 24 16 LDA $1624,Y (Load character's relic 2) C0/4A73: C9 E5 CMP #$E5 (Is it Tintinabar?) C0/4A75: D0 1C BNE $4A93 (Branch if it's not) C0/4A77: 20 E8 AE JSR $AEE8 C0/4A7A: B9 1C 16 LDA $161C,Y (Load character's stamina) C0/4A7D: 4A LSR A (Divide by 2) C0/4A7E: 4A LSR A (Now by 4) C0/4A7F: 4A LSR A (Now by 8) C0/4A80: EA NOP (Change to 4A to divide by 16) C0/4A81: EA NOP (Leave this here to let the SNES catch up) C0/4A82: C2 21 REP #$21 C0/4A84: 79 09 16 ADC $160D,Y (Add current MP to Stamina / 8) C0/4A87: C5 1E CMP $1E C0/4A89: 90 02 BCC $4A8D C0/4A8B: A5 1E LDA $1E C0/4A8D: 99 09 16 STA $160D,Y (Store to current MP) C0/4A90: 7B TDC