Hi,
I did some lame hack of FF8 to change limits to 32767.
Looks like its work.
Healing with 32767(char had 12000/18000) looked weird(like it health numbers go trought zero)
In battle, menu screen you see only 4 last digits. (In status, juntion, item screen its ok).
I did some testing, but this doesn mean, that I messed something
USE ONLY ON YOUR OWN RISK
If you test it please post result of testing.
ONLY FF8 (latest version)geforce version is patched.
patch here(is patching FF8.exe, so make backup)
2 versions(quick made, so maybe I change something later)
first only comparsions changed (looks like best choice)
http://kruci.wz.cz/ff8limitpatch.exesecond all changed(some weird changed too)
http://kruci.wz.cz/ff8limitpatch2.exeSome tech report
First, i diassembled ff8.exe, then I was searching for all 9999 numbers and changing them to 32767. I suppose that all nuber whitch is 9999 is some limit.
Healing with 32767(char had 12000/18000) looked weird(like it health numbers go trought zero)
I think its due going over max value 32767(12000+32767) where should be negative numbers.
(I can only some asm, and a lot of forget:P)
9999=270f hexadecimal
adress with limits
8F781
8F850
91137 -battle damage limit(even healing/item in battle limit)
91589
9167C
91FB1
95954 -some kind of 9999 limit function
95A1A -changing this alone increase HP limit(maybe there death computing too, but absolutly not sure)
95E6D
What it ca be
Using healing items in items menu, using healing magic in magic menu
GF HP
HP/GF HP after level up.
(HP/GF HP after game start.)
some whitch only move 9999
C9A13
C9A5D
Damage can be 65535(FFFF hex), but with using this, if you get healing to higher then 270f, I think you will not be healed, healt will be decreasing(tested with FFFF)
code usualy looks like this, so sure here is some limit
;some computing of edx
cmp edx, 0000270F
mov esi, edx
jle 0048F7A0
mov esi, 0000270F
jmp 0048F7A0
similar to above
add ecx, 0000270F
cmp esi, ecx
jle 00491145
mov esi, ecx
jmp 0049114F
limit function
mov eax, dword ptr [esp+04]
cmp eax, 0000270F
jle 0049595F
mov ax, 270F
?death computing too, maybe I am absolutly wrong
:00495A1A cmp edx, 0000270F
:00495A20 jle 00495A27
:00495A22 mov edx, 0000270F
:00495A27 xor eax, eax
:00495A29 mov word ptr [esi+00000174], dx
:00495A30 mov ax, word ptr [ebp+00]
:00495A34 movsx ecx, dx
:00495A37 cmp ecx, eax ;in DX is some 9999limited number compared with some number
:00495A39 jge 00495A46 ;and if DX is greater or equal
:00495A3B mov word ptr [ebp+00], dx
:00495A3F mov word ptr [esi+00000172], dx
:00495A46 xor edx, edx ; make it zero
;some function,...
;some some interesting but not changable,
:00495A78 cmp edx, 000000FF
:00495A7E jle 00495A85
:00495A80 mov edx, 000000FF
:00495A85 mov byte ptr [esi+000001BB], dl
:00495A8B xor edx, edx
some 9999 number, but not compare
:004C99FD mov eax, 01CFE0E8
:004C9A02 mov ecx, 00000026
:004C9A07 mov esi, edx
:004C9A09 mov edi, eax
:004C9A0B add edx, 00000098
:004C9A11 repz
:004C9A12 movsd
:004C9A13 mov word ptr [eax], 270F
:004C9A57 mov [ebp+12], 270F
:004C9A5D call 0049A740