Xer
12-23-2003, 02:15 AM
My Fatal Frame +3 trainer has some problems.
Source:
.586p
GetBase macro Reg
call $+5
pop Reg
sub Reg,$-1
endm
Code segment use32
org 0
dd offset End_of_file
dw 1 ; Version
dd End_of_header ; Size of header
dd offset Selections
dd offset Selections_Text
dd offset ID_List
dd offset Entry
dd 0 ; res1
dd 0 ; res2
db 0 ; Master Enable
End_of_header equ $
Entry:
;
; this code will be called after the game is loadede but before
; it is launched , it shoot be able to check for Pal/Ntsc version
; and if multi xbe files it used in the game.
;
mov edi,010114h
cmp dword ptr [edi],3dc11253h
jne Exit
cld
Photo_90:
cmp [Sel_90+ebp],0
je SStone
mov al,01h
mov edi,0002f392h
stosb
SStone:
cmp [Sel_SStone+ebp],0
je MStone
mov al,090h
mov edi,0002e587h
stosb
stosb
stosb
stosb
stosb
stosb
MStone:
cmp [Sel_MStone+ebp],0
je Exit
mov al,090h
mov edi,0002931ch
stosb
stosb
stosb
stosb
stosb
stosb
Exit:
ret
ID_List label dword
dd 054430004h ; Fatal Frame ID
dd 0
Selections label byte
Sel_90 db 0
Sel_SStone db 0
Sel_Mstone db 0
Selections_Text label word
dd offset Text_Menu
dd offset Text_Info
dd offset text_Photo90
dd offset text_SStone
dd offset text_MStone
dd 0
Text_Menu db 'Fatal Frame +3',0
Text_Info db 'Trainer By Xer',0
db 0 ; End of info
text_Photo90 db 'Unlimited Photo 90',0
text_SStone db 'Unlimited Spirit Stone',0
text_MStone db 'Unlimited Mirror Stone',0
End_of_file equ $
Code ends
end
It works correctly,but only "nondecreasing" not "Infinite".
So I try to maximate the value.
Address "0001BEA0" is a proc that copies saved data to memory in batches,"010023EC" stores saved data.
I set a breakpoint on "010023EC" to see when the value is changed,but the game never freezes even datum in "010023EC" are changed.So I poke it myself,and the breakpoint works correctly.
I've really no idea why the game doesn't halt when the breakpoint is reached.
Source:
.586p
GetBase macro Reg
call $+5
pop Reg
sub Reg,$-1
endm
Code segment use32
org 0
dd offset End_of_file
dw 1 ; Version
dd End_of_header ; Size of header
dd offset Selections
dd offset Selections_Text
dd offset ID_List
dd offset Entry
dd 0 ; res1
dd 0 ; res2
db 0 ; Master Enable
End_of_header equ $
Entry:
;
; this code will be called after the game is loadede but before
; it is launched , it shoot be able to check for Pal/Ntsc version
; and if multi xbe files it used in the game.
;
mov edi,010114h
cmp dword ptr [edi],3dc11253h
jne Exit
cld
Photo_90:
cmp [Sel_90+ebp],0
je SStone
mov al,01h
mov edi,0002f392h
stosb
SStone:
cmp [Sel_SStone+ebp],0
je MStone
mov al,090h
mov edi,0002e587h
stosb
stosb
stosb
stosb
stosb
stosb
MStone:
cmp [Sel_MStone+ebp],0
je Exit
mov al,090h
mov edi,0002931ch
stosb
stosb
stosb
stosb
stosb
stosb
Exit:
ret
ID_List label dword
dd 054430004h ; Fatal Frame ID
dd 0
Selections label byte
Sel_90 db 0
Sel_SStone db 0
Sel_Mstone db 0
Selections_Text label word
dd offset Text_Menu
dd offset Text_Info
dd offset text_Photo90
dd offset text_SStone
dd offset text_MStone
dd 0
Text_Menu db 'Fatal Frame +3',0
Text_Info db 'Trainer By Xer',0
db 0 ; End of info
text_Photo90 db 'Unlimited Photo 90',0
text_SStone db 'Unlimited Spirit Stone',0
text_MStone db 'Unlimited Mirror Stone',0
End_of_file equ $
Code ends
end
It works correctly,but only "nondecreasing" not "Infinite".
So I try to maximate the value.
Address "0001BEA0" is a proc that copies saved data to memory in batches,"010023EC" stores saved data.
I set a breakpoint on "010023EC" to see when the value is changed,but the game never freezes even datum in "010023EC" are changed.So I poke it myself,and the breakpoint works correctly.
I've really no idea why the game doesn't halt when the breakpoint is reached.