øA slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;u=278;area=showposts;start=570 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index138e.html slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=profile;area=showposts;u=278 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/index138e.html.z x Êåg^ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ 0P. ÷ OK text/html ISO-8859-1 gzip 0|Ö ÷ ÿÿÿÿÿÿÿÿ Tue, 10 Mar 2020 19:25:21 GMT 0ó° °® 0® P® €§² ð® Éåg^ ÿÿÿÿÿÿÿÿB+ ÷
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.



$02/E5AA BD E6 DB LDA $DBE6,x[$7E:DC19]which is the opcode responsible for loading each displayed digit, so that it reads$02/E5AA BD E5 DB LDA $DBE5,x[$7E:DC18]$02/86C1 A2 10 27 LDX #$2710$02/86C1 A2 00 40 LDX #$4000$02/CA35 99 E7 DB STA $DBE7,y[$7E:DBED]
$02/CA38 C8 INY ;(I needed this one-byte op to, because I was writing a JSL)$02/CA35 22 E0 EF 12 JSL $12EFE0[$12:EFE0]$12/EFE0 C9 7A CMP #$7A ;compare the digit about to be stored into the table with 7A
$12/EFE2 90 0A BCC $0A [$EFEE] ;if it is lower than 7A, skip to the end of this routine (and proceed as normal)
$12/EFE4 48 PHA ;if it is 7A or higher (which will only happen with the digit in the 1000s place, then stack it
$12/EFE5 A9 71 LDA #$71
$12/EFE7 99 E6 DB STA $DBE6,y[$7E:DBED];load 71 into the 10000s place
$12/EFEA 68 PLA ;pull the digit back off the stack
$12/EFEB 38 SEC
$12/EFEC E9 0A SBC #$0A ;subtract 0A
$12/EFEE 99 E7 DB STA $DBE7,y[$7E:DBEE];then proceed as normal
$12/EFF1 C8 INY ;(this is a replacement of that INY we cannibalized at 02/CA38
$12/EFF2 6B RTL Ah, the ROLler you are talking about is 02:852B which oddly enough is the same division routine I mentioned from bank 3, but for some reason coded slightly differently. In any case, it divides and produces an integer division in $2A and remainder/modulo in $2C. The former is used as the next digit, while the latter is used for calculating the next digit on the way down. Interestingly that does indeed work for 5 digits.
I would bet that the routine at 02:86BF is probably used for any decimal conversion for display, at least in battle, including the party battle window HPs, and perhaps the monster HP in a Peep result, which actually needs 5 digits.
I tried setting the damage to 12345 and while this routine did calculate 5 digits properly, only 2345 displayed in bouncy numbers, thus whatever 3 changed bytes you mentioned must be needed to setup the bouncy sprites. You're already past this part, but I was curious how they performed the decimal conversion, so I popped in to take a look.

Excellent, those 4-byte records are the hardware sprite format. FYI the 4th byte format is"Priority" means, essentially, layer, I presume... Whether it appears over or under existing sprites?Code: [Select]vhoopppc
v: vertical flip
h: horizontal flip
oo: priority
ppp: palette
c: 9th bit of sprite index (aka character)
Another thing is that there are only so many sprites available for the digits, but I don't know how many that is. Is the most that can be displayed at once 8 monsters * 5 digits, or are there some spells that need all 13 actors * 5?AFAIK, 8*5 would be the most. Ffiv doesn't have a merton-style spell that hits all monsters and all party members.
Ah, the ROLler you are talking about is 02:852B which oddly enough is the same division routine I mentioned from bank 3, but for some reason coded slightly differently. In any case, it divides and produces an integer division in $2A and remainder/modulo in $2C. The former is used as the next digit, while the latter is used for calculating the next digit on the way down. Interestingly that does indeed work for 5 digits.
I would bet that the routine at 02:86BF is probably used for any decimal conversion for display, at least in battle, including the party battle window HPs, and perhaps the monster HP in a Peep result, which actually needs 5 digits.
I tried setting the damage to 12345 and while this routine did calculate 5 digits properly, only 2345 displayed in bouncy numbers, thus whatever 3 changed bytes you mentioned must be needed to setup the bouncy sprites. You're already past this part, but I was curious how they performed the decimal conversion, so I popped in to take a look.

