allows you to change controlling character without entering menu.
still in the flashback portion at the start of the game. so can't test much.
the script have no aobscans as well. probably would only works on steam.
for testing purpose for now, crashes should be expected, would refine it when I have time......
make sure both 1 and 2 are activated.
when activated, press Z or X to change character.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>129</ID>
<Description>"1"</Description>
<Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
label(pPartyInfo)
registersymbol(pPartyInfo)
label(ddCCharInc)
registersymbol(ddCCharInc)
label(ddCCharDec)
registersymbol(ddCCharDec)
alloc(newmem,2048,"ff7rebirth_.exe"+A68AB2)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
mov rcx,[rax+58]
test rcx,rcx
jnz @f
mov rcx,pPartyInfo
mov [rcx],rax
originalcode:
mov rcx,[rax+58]
test rcx,rcx
exit:
jmp returnhere
///
pPartyInfo:
dq 0
ddCCharInc:
dd 0
ddCCharDec:
dd 0
///
///
"ff7rebirth_.exe"+A68AB2:
jmp newmem
nop 2
returnhere:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem)
"ff7rebirth_.exe"+A68AB2:
db 48 8B 48 58 48 85 C9
//mov rcx,[rax+58]
//test rcx,rcx
unregistersymbol(pPartyInfo)
unregistersymbol(ddCCharInc)
unregistersymbol(ddCCharDec)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>130</ID>
<Description>"2"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat
alloc(newmem2,2048,"ff7rebirth_.exe"+BE7F5F)
label(returnhere2)
label(originalcode2)
label(exit2)
newmem2: //this is allocated memory, you have read,write,execute access
//place your code here
push rax
push rbx
push rdx
xor rbx,rbx
xor rdx,rdx
mov rax,pPartyInfo
mov rax,[rax]
test rax,rax
jz closing
mov rcx,ddCCharInc
cmp byte ptr [rcx],1
jne @f
cmp byte ptr [rcx+1],1
je closing
mov byte ptr [rcx+1],1
mov dl,1
jmp init
@@:
mov [rcx+1],bl
@@:
lea rcx,[rcx+4]
cmp byte ptr [rcx],1
jne @f
cmp byte ptr [rcx+1],1
je closing
mov byte ptr [rcx+1],1
mov dl,ff
jmp init
@@:
mov [rcx+1],bl
@@:
jmp closing
init:
push rax
mov bl,[rax+1]
lea rcx,[rax+4]
xor rax,rax
@@:
add bl,dl
xor al,al
cmp bl,9
cmovge rbx,rax
mov al,8
test bl,bl
cmovl rbx,rax
cmp byte ptr [rcx+rbx*2],1
jne @b
@@:
pop rax
cmp [rax+1],bl
je @f
mov [rax+1],bl
mov [rax+2],bl
mov rbx,[rsp+8]
mov byte ptr [rbx+00000228],3
closing:
pop rdx
pop rbx
pop rax
end:
originalcode2:
movzx ecx,byte ptr [rbx+00000228]
exit2:
jmp returnhere2
///
"ff7rebirth_.exe"+BE7F5F:
jmp newmem2
nop 2
returnhere2:
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
dealloc(newmem2)
"ff7rebirth_.exe"+BE7F5F:
db 0F B6 8B 28 02 00 00
//movzx ecx,byte ptr [rbx+00000228]
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>127</ID>
<Description>"ddCCharInc"</Description>
<LastState Value="0" RealAddress="7FF75534002E"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>ddCCharInc</Address>
<Hotkeys>
<Hotkey OnlyWhileDown="1">
<Action>Set Value</Action>
<Keys>
<Key>90</Key>
</Keys>
<Value>1</Value>
<ID>0</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
<CheatEntry>
<ID>128</ID>
<Description>"ddCCharDec"</Description>
<LastState Value="0" RealAddress="7FF755340032"/>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Byte</VariableType>
<Address>ddCCharDec</Address>
<Hotkeys>
<Hotkey OnlyWhileDown="1">
<Action>Set Value</Action>
<Keys>
<Key>88</Key>
</Keys>
<Value>1</Value>
<ID>0</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>