Description:
This hack enables 5-digit, 10,000+ damage/healing. It's capped at 32000 because the total is stored in a 16-bit, signed integer, creating a possible range of -32768 to 32767. I rounded it off to (-)32000 for aesthetic reasons.
Click to view demo video (YouTube)
This is an updated bugfix and improvement of the previously-titled hack "Displayable 32766 damage/healing". It includes headered & unheadered patches for the Final Fantasy III (U) (V1.0 & V1.1) [!] ROM.
It squeezes 5 digits into 4 tiles, hence the custom font (the original font would have created digit overlap in this case). It's done this way because there is not enough room in the VRAM or OAM for a 5th tile. The tiles are stored in 4bpp, and the digits are squeezed into 4 tiles. This makes the process of assembly-coding somewhat tricky.
I had to revise the custom assembly code twice because it wasn't efficient enough, causing interrupts (NMI) and invisible digits. Furthermore, spells that hit multiple targets (e.g. Quake, WWind, Merton) use different routines for simultaneous display and trigger the interrupt bug more frequently. First, I tried a WAI (wait for interrupt) instruction, which only worked in Snes9x, not ZSNES. I finally managed to fix the issue in both emulators by disabling non-maskable interrupts entirely (STZ $4200). If you experience graphical glitches or invisible digits during simultaneous digit display, it's most likely an interrupt problem. As far as I can tell, this has been fixed.
Special thanks
- Imzogelmo (feedback and beta testing)
- assassin17 (damage truncation offsets)
- Terii Senshi (compressed digits offset)
- Novalia Spirit (found bugs in draining spells, recovery items, and battle submenus)
Screenshots: