Now, you're by far the most gifted mathematical mind among us...
Thanks chillyfeez

- I'm just glad I can bring something ("other than amorality") to the team

- You're definitely no slouch yourself:
Like... let's say TNL starts at (arbitrarily) 5D473F; then AND 000003 and store the result somewhere; then pull back your 5D473F and AND FFFFFC; then divide by 4; then perform all necessary functions on both (5D473C/4) and on 000003; then combine the results to get the final TNL.
After going through it a few time I'm actually pretty sure I get it - it was just a kinda Matrixesque "Whoa..." when I first read it. But that's why: you + ASM =>

FTW
To answer, though: Yes; I'd think it can! Even if I'm wrong my immediate thought was "Oh it will! Those numbers aren't pushing me around." If I'm following this right (please correct me if otherwise) looking at what I was sketching out last night I think we have it:
Same example as the last post, the largest multiplicative product ever required is 8705 (DkC @ Lv 69)
As calculated from: P x Q x R = 58 x 81 x 1.853 = 8705.394
It's after this point the rest comes into play: TNL(68) and D (for DkC) - but that's all addition
So if we multiply R x 1000 we'd end up at 8,705,394 - then drop the last three and proceed with addition. The highest number in the ROM table is 212,660 so if we do the multiplication separately we can scale up to keep precision - then drop what isn't needed before going on. It also seems we could even keep the 3rd decimal - but if omitting it would speed things up I'd live with it: most characters have a 3rd place of zero anyway - the exceptions being: DkC = 1.853, Edward = 1.472, Rosa = 1.591, and Cecil = 1.435
So laying it out this is what I've got in mind:
As before DkC is at Lv 68, and advances to Lv 69 => We need to end up at TNL(69) = 212,504
TNL currently stored in RAM: TNL(68) = 203,544
1) Pull Lv from RAM & F from ROM
2) Calculate P & Q - Using P = (Lv - F) & Q = (Lv + F + 3) (Here Lv = 68 & F = 10)
3) Multiply P x Q and store (I'll call it M_1)
4) Load R From the ROM & Shift out of decimal range:
R = R * (100 or 128) or, if possible, R = R * (1000 or 1024)
5) Recall M_1 and multiply by R
Largest Possible Value: P x Q x R = 58 x 81 x (1.853 x 1000) = 8,705,394
6) Shift back yielding: 8,705,394 ---> 8,705
7) Load D for DkC (D = 255)
8) Add to the above: 8,705 + 255 = 8,960
9) Load TNL(68) (From RAM) and add last result:
203,544 + 8,960 = 212,504

I didn't cheat, right? Because if not I think we got it! Three-decimal precision and all. I can also easily redefine the R values so that they scale in binary:
R --> R * 1024 so 1.853 x 1024 = 1897.472 => 1897
Which then when carried through and ends up as:
P x Q x R = 58 x 81 x (1897) = 8,912,106 --> 8703.229 => 8,703
8,703 (for 1024) vs 8,705 (for 1000) - I'd accept that for the sake of faster, easier computation:
Overall how it looks at the end is:
212,486 (for 1024) vs 212,504 (for 1000) => Error = 212,504 - 212,486 = 18
The ROM table lists 212,468 so the binary shift result is closer anyway!
OK! (Phew...) I'm going to pause here and let you have a look; but I think we've got it! I'm going to start another post with some more math info I collected.
