<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Get money (Usage: money change)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : PortRoyale3.exe
  Version: 
  Date   : 2022-08-24
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_MONEY,PortRoyale3.exe,8B 81 E4 02 00 00 56 8D) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
label(i_money_base_addr)
newmem:
  mov [i_money_base_addr], ecx

code:
  mov eax,[ecx+000002E4]
  jmp return
align 10 cc
  i_money_base_addr:
  dd 0

INJECT_GET_MONEY:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_MONEY)
registersymbol(i_money_base_addr)
[DISABLE]

INJECT_GET_MONEY:
  db 8B 81 E4 02 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: PortRoyale3.exe+35A358

PortRoyale3.exe+35A32B: FF 24 85 F8 A3 75 00           - jmp dword ptr [eax*4+PortRoyale3.exe+35A3F8]
PortRoyale3.exe+35A332: 01 91 54 01 00 00              - add [ecx+00000154],edx
PortRoyale3.exe+35A338: EB 1E                          - jmp PortRoyale3.exe+35A358
PortRoyale3.exe+35A33A: 01 91 50 01 00 00              - add [ecx+00000150],edx
PortRoyale3.exe+35A340: EB 16                          - jmp PortRoyale3.exe+35A358
PortRoyale3.exe+35A342: 01 91 58 01 00 00              - add [ecx+00000158],edx
PortRoyale3.exe+35A348: EB 0E                          - jmp PortRoyale3.exe+35A358
PortRoyale3.exe+35A34A: 01 91 70 01 00 00              - add [ecx+00000170],edx
PortRoyale3.exe+35A350: EB 06                          - jmp PortRoyale3.exe+35A358
PortRoyale3.exe+35A352: 01 91 6C 01 00 00              - add [ecx+0000016C],edx
// ---------- INJECTING HERE ----------
PortRoyale3.exe+35A358: 8B 81 E4 02 00 00              - mov eax,[ecx+000002E4]
// ---------- DONE INJECTING  ----------
PortRoyale3.exe+35A35E: 56                             - push esi
PortRoyale3.exe+35A35F: 8D 34 10                       - lea esi,[eax+edx]
PortRoyale3.exe+35A362: 89 B1 E4 02 00 00              - mov [ecx+000002E4],esi
PortRoyale3.exe+35A368: 85 D2                          - test edx,edx
PortRoyale3.exe+35A36A: 7E 14                          - jle PortRoyale3.exe+35A380
PortRoyale3.exe+35A36C: 85 C0                          - test eax,eax
PortRoyale3.exe+35A36E: 7E 22                          - jle PortRoyale3.exe+35A392
PortRoyale3.exe+35A370: 85 F6                          - test esi,esi
PortRoyale3.exe+35A372: 79 1E                          - jns PortRoyale3.exe+35A392
PortRoyale3.exe+35A374: C7 81 E4 02 00 00 FF FF FF 7F  - mov [ecx+000002E4],7FFFFFFF
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Money"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>i_money_base_addr</Address>
          <Offsets>
            <Offset>2E4</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
