<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Toggle Compact View"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end

if not toggleCompactView then
    function toggleCompactView(sender, forceEnable)
        local isCompactMode = not (compactViewMenuItem.Caption == 'Compact View Mode')
        if forceEnable ~= nil then
            isCompactMode = not forceEnable
        end

        synchronize(function()
            compactViewMenuItem.Caption = isCompactMode and 'Compact View Mode' or 'Full View Mode'
            getMainForm().Splitter1.Visible = isCompactMode
            getMainForm().Panel4.Visible    = isCompactMode
            getMainForm().Panel5.Visible    = isCompactMode
        end)
    end
end

if not createCompactViewMenu then
    function createCompactViewMenu()
        if isCompactMenuCreated then return end

        synchronize(function()
            local mainMenu = getMainForm().Menu.Items
            compactViewMenuItem = createMenuItem(mainMenu)
            compactViewMenuItem.Caption = 'Compact View Mode'
            compactViewMenuItem.OnClick = toggleCompactView
            mainMenu.add(compactViewMenuItem)
        end)

        isCompactMenuCreated = true
    end
end

createCompactViewMenu()
toggleCompactView(nil, true)

[DISABLE]
{$lua}
if toggleCompactView then
    toggleCompactView(nil, false)
end
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>35</ID>
      <Description>"Toggle Scripts"</Description>
      <Color>4080FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript Async="1">[ENABLE]
{$lua}
if (syntaxcheck) then return end
synchronize(function()
  getLuaEngine().menuItem5.doClick()
  getLuaEngine().Close()
end)

local enableBattleScripts = {
  0, -- "Toggle Compact View"
  1, -- "Get gold"
  10, -- "Char viewer"
  29, -- "Battle: inf MP"
  30, -- "Battle: HP options"
  33, -- "Field: browse usable spell and restore MP"
  34, -- "Field: MP no decrease after casting"
  5, -- "Shop buy item: gold do not decrease"
  6, -- "Browse and set item amount"
}
local addressList = getAddressList()
synchronize(function()
  for _, id in ipairs(enableBattleScripts) do
    local memRec = addressList.getMemoryRecordByID(id)
    if memRec and not memRec.Active then
      memRec.Active = true
      sleep(30)
    end
    addressList.refresh()
  end
end)
synchronize(function() getLuaEngine().Close() end)
[DISABLE]
{$lua}
if (syntaxcheck) then return end
synchronize(function()
  getLuaEngine().menuItem5.doClick()
  getLuaEngine().Close()
end)

local disableBattleScripts = {
  6, -- "Browse and set item amount"
  5, -- "Shop buy item: gold do not decrease"
  34, -- "Field: MP no decrease after casting"
  33, -- "Field: browse usable spell and restore MP"
  30, -- "Battle: HP options"
  29, -- "Battle: inf MP"
  10, -- "Char viewer"
  1, -- "Get gold"
  0, -- "Toggle Compact View"
}
local addressList = getAddressList()
synchronize(function()
  for _, id in ipairs(disableBattleScripts) do
    local memRec = addressList.getMemoryRecordByID(id)
    if memRec and memRec.Active then
      memRec.Active = false
      sleep(30)
    end
    addressList.refresh()
  end
end)
synchronize(function() getLuaEngine().Close() end)
-- Comments:
-- ID: 0, Description: "Toggle Compact View", Depth: 0
-- ID: 1, Description: "Get gold", Depth: 0
-- ID: 5, Description: "Shop buy item: gold do not decrease", Depth: 0
-- ID: 6, Description: "Browse and set item amount", Depth: 0
-- ID: 10, Description: "Char viewer", Depth: 0
-- ID: 29, Description: "Battle: inf MP", Depth: 0
-- ID: 30, Description: "Battle: HP options", Depth: 0
-- ID: 33, Description: "Field: browse usable spell and restore MP", Depth: 0
-- ID: 34, Description: "Field: MP no decrease after casting", Depth: 0


</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Get gold"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_MONEY,$process,8B 51 28 48 8B 4B 38) // should be unique
alloc(newmem,$1000,INJECT_GET_MONEY)

label(code)
label(return i_base_money_addr)

newmem:
  mov [i_base_money_addr], rcx

code:
  mov edx,[rcx+28]
  mov rcx,[rbx+38]
  jmp return
align 10 cc
  i_base_money_addr:
  dq 0

INJECT_GET_MONEY:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_MONEY i_base_money_addr)

[DISABLE]

INJECT_GET_MONEY:
  db 8B 51 28 48 8B 4B 38

unregistersymbol(INJECT_GET_MONEY i_base_money_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+1154956

DQIIIHD2DRemake.exe+1154932: 48 83 EC 20           - sub rsp,20
DQIIIHD2DRemake.exe+1154936: 41 B0 01              - mov r8b,01
DQIIIHD2DRemake.exe+1154939: 48 8B D9              - mov rbx,rcx
DQIIIHD2DRemake.exe+115493C: 48 8B 49 30           - mov rcx,[rcx+30]
DQIIIHD2DRemake.exe+1154940: 41 0F B6 D0           - movzx edx,r8b
DQIIIHD2DRemake.exe+1154944: E8 27 F8 0E 00        - call DQIIIHD2DRemake.exe+1244170
DQIIIHD2DRemake.exe+1154949: E8 D2 5D E0 FF        - call DQIIIHD2DRemake.exe+F5A720
DQIIIHD2DRemake.exe+115494E: 48 8B 08              - mov rcx,[rax]
DQIIIHD2DRemake.exe+1154951: 48 85 C9              - test rcx,rcx
DQIIIHD2DRemake.exe+1154954: 74 2F                 - je DQIIIHD2DRemake.exe+1154985
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+1154956: 8B 51 28              - mov edx,[rcx+28]
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+1154959: 48 8B 4B 38           - mov rcx,[rbx+38]
DQIIIHD2DRemake.exe+115495D: E8 6E FB 0E 00        - call DQIIIHD2DRemake.exe+12444D0
DQIIIHD2DRemake.exe+1154962: 41 B8 01 00 00 00     - mov r8d,00000001
DQIIIHD2DRemake.exe+1154968: 48 8D 15 F9 78 D7 02  - lea rdx,[DQIIIHD2DRemake.exe+3ECC268]
DQIIIHD2DRemake.exe+115496F: 48 8D 4C 24 30        - lea rcx,[rsp+30]
DQIIIHD2DRemake.exe+1154974: E8 D7 6F 34 00        - call DQIIIHD2DRemake.exe+149B950
DQIIIHD2DRemake.exe+1154979: 48 8B 4B 40           - mov rcx,[rbx+40]
DQIIIHD2DRemake.exe+115497D: 48 8B 10              - mov rdx,[rax]
DQIIIHD2DRemake.exe+1154980: E8 1B F4 0E 00        - call DQIIIHD2DRemake.exe+1243DA0
DQIIIHD2DRemake.exe+1154985: 48 83 C4 20           - add rsp,20
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Gold"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>28</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Mini medal"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>34</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"? (inc. when get medal)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_money_addr</Address>
          <Offsets>
            <Offset>38</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>5</ID>
      <Description>"Shop buy item: gold do not decrease"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BUY_ITEM_NO_DEC,$process,8B 4F 28 41 03 CE) // should be unique
alloc(newmem,$1000,INJECT_BUY_ITEM_NO_DEC)

label(code)
label(return)

newmem:
  cmp r14d, 0
  jnl code
  xor r14d, r14d

code:
  mov ecx,[rdi+28]
  add ecx,r14d
  jmp return

INJECT_BUY_ITEM_NO_DEC:
  jmp newmem
  nop
return:
registersymbol(INJECT_BUY_ITEM_NO_DEC)

[DISABLE]

INJECT_BUY_ITEM_NO_DEC:
  db 8B 4F 28 41 03 CE

unregistersymbol(INJECT_BUY_ITEM_NO_DEC)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+F502D4

DQIIIHD2DRemake.exe+F502B2: 41 03 CE           - add ecx,r14d
DQIIIHD2DRemake.exe+F502B5: 0F 49 D1           - cmovns edx,ecx
DQIIIHD2DRemake.exe+F502B8: 49 8B C9           - mov rcx,r9
DQIIIHD2DRemake.exe+F502BB: 3B D6              - cmp edx,esi
DQIIIHD2DRemake.exe+F502BD: 8D 82 C1 BD F0 FF  - lea eax,[rdx-000F423F]
DQIIIHD2DRemake.exe+F502C3: B2 1C              - mov dl,1C
DQIIIHD2DRemake.exe+F502C5: 0F 4E C3           - cmovle eax,ebx
DQIIIHD2DRemake.exe+F502C8: 29 47 2C           - sub [rdi+2C],eax
DQIIIHD2DRemake.exe+F502CB: 44 8B 47 2C        - mov r8d,[rdi+2C]
DQIIIHD2DRemake.exe+F502CF: E8 2C F4 03 00     - call DQIIIHD2DRemake.exe+F8F700
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+F502D4: 8B 4F 28           - mov ecx,[rdi+28]
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+F502D7: 41 03 CE           - add ecx,r14d
DQIIIHD2DRemake.exe+F502DA: 78 07              - js DQIIIHD2DRemake.exe+F502E3
DQIIIHD2DRemake.exe+F502DC: 3B CE              - cmp ecx,esi
DQIIIHD2DRemake.exe+F502DE: 0F 4C F1           - cmovl esi,ecx
DQIIIHD2DRemake.exe+F502E1: 8B DE              - mov ebx,esi
DQIIIHD2DRemake.exe+F502E3: 48 8B 74 24 38     - mov rsi,[rsp+38]
DQIIIHD2DRemake.exe+F502E8: 8B C3              - mov eax,ebx
DQIIIHD2DRemake.exe+F502EA: 89 5F 28           - mov [rdi+28],ebx
DQIIIHD2DRemake.exe+F502ED: 48 8B 5C 24 30     - mov rbx,[rsp+30]
DQIIIHD2DRemake.exe+F502F2: 48 8B 7C 24 40     - mov rdi,[rsp+40]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>6</ID>
      <Description>"Browse and set item amount"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEM_AND_SET_CNT,$process,41 8B 00 C3 CC) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEM_AND_SET_CNT)

label(code)
label(return i_set_item_cnt_to i_set_item_cnt_min)

newmem:
  mov eax, [i_set_item_cnt_min]
  cmp dword ptr [r8], eax
  jb code
  mov eax, [i_set_item_cnt_to]
  cmp [r8], eax
  jae code
  mov [r8], eax

code:
  mov eax,[r8]
  ret 
  int 3 
  jmp return
align 10 cc
  i_set_item_cnt_to:
  dd 32
  i_set_item_cnt_min:
  dd 2

INJECT_BROWSE_ITEM_AND_SET_CNT:
  jmp newmem
return:
registersymbol(INJECT_BROWSE_ITEM_AND_SET_CNT i_set_item_cnt_to i_set_item_cnt_min)

[DISABLE]

INJECT_BROWSE_ITEM_AND_SET_CNT:
  db 41 8B 00 C3 CC

unregistersymbol(INJECT_BROWSE_ITEM_AND_SET_CNT i_set_item_cnt_to)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+F82062

DQIIIHD2DRemake.exe+F82047: 44 39 5A 08  - cmp [rdx+08],r11d
DQIIIHD2DRemake.exe+F8204B: 75 09        - jne DQIIIHD2DRemake.exe+F82056
DQIIIHD2DRemake.exe+F8204D: 41 8B 4A 04  - mov ecx,[r10+04]
DQIIIHD2DRemake.exe+F82051: 39 4A 0C     - cmp [rdx+0C],ecx
DQIIIHD2DRemake.exe+F82054: 74 0C        - je DQIIIHD2DRemake.exe+F82062
DQIIIHD2DRemake.exe+F82056: 48 83 C0 10  - add rax,10
DQIIIHD2DRemake.exe+F8205A: 49 3B C1     - cmp rax,r9
DQIIIHD2DRemake.exe+F8205D: 75 E1        - jne DQIIIHD2DRemake.exe+F82040
DQIIIHD2DRemake.exe+F8205F: 33 C0        - xor eax,eax
DQIIIHD2DRemake.exe+F82061: C3           - ret 
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+F82062: 41 8B 00     - mov eax,[r8]
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+F82065: C3           - ret 
DQIIIHD2DRemake.exe+F82066: CC           - int 3 
DQIIIHD2DRemake.exe+F82067: CC           - int 3 
DQIIIHD2DRemake.exe+F82068: CC           - int 3 
DQIIIHD2DRemake.exe+F82069: CC           - int 3 
DQIIIHD2DRemake.exe+F8206A: CC           - int 3 
DQIIIHD2DRemake.exe+F8206B: CC           - int 3 
DQIIIHD2DRemake.exe+F8206C: CC           - int 3 
DQIIIHD2DRemake.exe+F8206D: CC           - int 3 
DQIIIHD2DRemake.exe+F8206E: CC           - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>7</ID>
          <Description>"Notice: affects import item too, be careful!"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Item amount must &gt;="</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_set_item_cnt_min</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Set to"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_set_item_cnt_to</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Char viewer"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_CHAR_VIEWER,$process,8B 78 7C F3 0F 58 F6 F3 0F 5C 35) // should be unique
alloc(newmem,$1000,INJECT_CHAR_VIEWER)

label(code)
label(return i_base_char_viewer_addr)

newmem:
  mov [i_base_char_viewer_addr], rax

code:
  mov edi,[rax+7C]
  addss xmm6,xmm6
  jmp return
align 10 cc
  i_base_char_viewer_addr:
  dq 0

INJECT_CHAR_VIEWER:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_CHAR_VIEWER i_base_char_viewer_addr)

[DISABLE]

INJECT_CHAR_VIEWER:
  db 8B 78 7C F3 0F 58 F6

unregistersymbol(INJECT_CHAR_VIEWER i_base_char_viewer_addr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+F83086

DQIIIHD2DRemake.exe+F8305F: 5F                       - pop rdi
DQIIIHD2DRemake.exe+F83060: C3                       - ret 
DQIIIHD2DRemake.exe+F83061: 0F 29 74 24 20           - movaps [rsp+20],xmm6
DQIIIHD2DRemake.exe+F83066: 48 89 7C 24 58           - mov [rsp+58],rdi
DQIIIHD2DRemake.exe+F8306B: E8 90 12 00 00           - call DQIIIHD2DRemake.exe+F84300
DQIIIHD2DRemake.exe+F83070: 48 8B CF                 - mov rcx,rdi
DQIIIHD2DRemake.exe+F83073: F2 0F 10 70 50           - movsd xmm6,[rax+50]
DQIIIHD2DRemake.exe+F83078: 66 0F 5A F6              - cvtpd2ps xmm6,xmm6
DQIIIHD2DRemake.exe+F8307C: E8 7F 12 00 00           - call DQIIIHD2DRemake.exe+F84300
DQIIIHD2DRemake.exe+F83081: 48 8D 4C 24 58           - lea rcx,[rsp+58]
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+F83086: 8B 78 7C                 - mov edi,[rax+7C]
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+F83089: F3 0F 58 F6              - addss xmm6,xmm6
DQIIIHD2DRemake.exe+F8308D: F3 0F 5C 35 63 C5 D4 02  - subss xmm6,[DQIIIHD2DRemake.exe+3CCF5F8]
DQIIIHD2DRemake.exe+F83095: F3 0F 2D DE              - cvtss2si ebx,xmm6
DQIIIHD2DRemake.exe+F83099: D1 FB                    - sar ebx,1
DQIIIHD2DRemake.exe+F8309B: E8 A0 21 FF FF           - call DQIIIHD2DRemake.exe+F75240
DQIIIHD2DRemake.exe+F830A0: 0F 28 74 24 20           - movaps xmm6,[rsp+20]
DQIIIHD2DRemake.exe+F830A5: 8D 14 1F                 - lea edx,[rdi+rbx]
DQIIIHD2DRemake.exe+F830A8: 03 D0                    - add edx,eax
DQIIIHD2DRemake.exe+F830AA: 40 84 F6                 - test sil,sil
DQIIIHD2DRemake.exe+F830AD: 74 30                    - je DQIIIHD2DRemake.exe+F830DF
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>1C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>12</ID>
          <Description>"EXP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>20</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Max HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>28</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>2C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>15</ID>
          <Description>"Max MP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>30</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>16</ID>
          <Description>"MP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>34</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>17</ID>
          <Description>"Base STR"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>38</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>18</ID>
          <Description>"Base DUR"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>40</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>19</ID>
          <Description>"Base SPD"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>48</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Base STA"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>50</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Base INT"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>58</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Base LCK"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Double</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>60</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"Seed: STR"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>70</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"Seed: DUR"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>74</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Seed: SPD"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>78</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"Seed: STA"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>7C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"Seed: INT"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>80</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Seed: LCK"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_char_viewer_addr</Address>
          <Offsets>
            <Offset>84</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>29</ID>
      <Description>"Battle: inf MP"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_MP,$process,3B D0 0F 4C C2 89 81 9C) // should be unique
alloc(newmem,$1000,INJECT_INF_MP)

label(code)
label(return)

newmem:
  cmp dword ptr [rcx+00000180], 0
  je code
  cmp dword ptr [rcx+000001C0], 0
  jne code

  cmp edx,eax
  cmovg eax,edx
  jmp return

code:
  cmp edx,eax
  cmovl eax,edx
  jmp return

INJECT_INF_MP:
  jmp newmem
return:
registersymbol(INJECT_INF_MP)

[DISABLE]

INJECT_INF_MP:
  db 3B D0 0F 4C C2

unregistersymbol(INJECT_INF_MP)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+E80025

DQIIIHD2DRemake.exe+E8000B: CC                             - int 3 
DQIIIHD2DRemake.exe+E8000C: CC                             - int 3 
DQIIIHD2DRemake.exe+E8000D: CC                             - int 3 
DQIIIHD2DRemake.exe+E8000E: CC                             - int 3 
DQIIIHD2DRemake.exe+E8000F: CC                             - int 3 
DQIIIHD2DRemake.exe+E80010: 85 D2                          - test edx,edx
DQIIIHD2DRemake.exe+E80012: 79 0B                          - jns DQIIIHD2DRemake.exe+E8001F
DQIIIHD2DRemake.exe+E80014: C7 81 9C 01 00 00 00 00 00 00  - mov [rcx+0000019C],00000000
DQIIIHD2DRemake.exe+E8001E: C3                             - ret 
DQIIIHD2DRemake.exe+E8001F: 8B 81 98 01 00 00              - mov eax,[rcx+00000198]
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+E80025: 3B D0                          - cmp edx,eax
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+E80027: 0F 4C C2                       - cmovl eax,edx
DQIIIHD2DRemake.exe+E8002A: 89 81 9C 01 00 00              - mov [rcx+0000019C],eax
DQIIIHD2DRemake.exe+E80030: C3                             - ret 
DQIIIHD2DRemake.exe+E80031: CC                             - int 3 
DQIIIHD2DRemake.exe+E80032: CC                             - int 3 
DQIIIHD2DRemake.exe+E80033: CC                             - int 3 
DQIIIHD2DRemake.exe+E80034: CC                             - int 3 
DQIIIHD2DRemake.exe+E80035: CC                             - int 3 
DQIIIHD2DRemake.exe+E80036: CC                             - int 3 
DQIIIHD2DRemake.exe+E80037: CC                             - int 3 
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>30</ID>
      <Description>"Battle: HP options"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BATTLE_HP,$process,89 81 94 01 00 00 C3) // should be unique
alloc(newmem,$1000,INJECT_BATTLE_HP)

label(code)
label(return)
label(vf_min_hp_pct i_enemy_hp_option)

newmem:
  cmp dword ptr [rcx+00000180], 0
  je to_enemy
  cmp dword ptr [rcx+000001C0], 0
  jne to_enemy

  push rdx
  mov edx, [rcx+00000190]
  vcvtsi2ss xmm15, xmm15, edx
  vmovss xmm14, [vf_min_hp_pct]
  vmulss xmm14, xmm14, xmm15
  vcvtss2si edx, xmm14
  cmp eax, edx
  cmovl eax, edx

endp:
  pop rdx

  jmp code

to_enemy:
  cmp dword ptr [i_enemy_hp_option], 0
  je code
  cmp eax, 1
  jbe code
  mov eax, 1

code:
  mov [rcx+00000194],eax
  jmp return
align 10 cc
  vf_min_hp_pct:
  dd (float)0.5
  i_enemy_hp_option:
  dd 0

INJECT_BATTLE_HP:
  jmp newmem
  nop
return:
registersymbol(INJECT_BATTLE_HP)
registersymbol(vf_min_hp_pct i_enemy_hp_option)
[DISABLE]

INJECT_BATTLE_HP:
  db 89 81 94 01 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+E7FE7A

DQIIIHD2DRemake.exe+E7FE5D: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE5E: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE5F: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE60: 85 D2                          - test edx,edx
DQIIIHD2DRemake.exe+E7FE62: 79 0B                          - jns DQIIIHD2DRemake.exe+E7FE6F
DQIIIHD2DRemake.exe+E7FE64: C7 81 94 01 00 00 00 00 00 00  - mov [rcx+00000194],00000000
DQIIIHD2DRemake.exe+E7FE6E: C3                             - ret 
DQIIIHD2DRemake.exe+E7FE6F: 8B 81 90 01 00 00              - mov eax,[rcx+00000190]
DQIIIHD2DRemake.exe+E7FE75: 3B D0                          - cmp edx,eax
DQIIIHD2DRemake.exe+E7FE77: 0F 4C C2                       - cmovl eax,edx
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+E7FE7A: 89 81 94 01 00 00              - mov [rcx+00000194],eax
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+E7FE80: C3                             - ret 
DQIIIHD2DRemake.exe+E7FE81: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE82: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE83: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE84: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE85: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE86: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE87: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE88: CC                             - int 3 
DQIIIHD2DRemake.exe+E7FE89: CC                             - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>31</ID>
          <Description>"min. HP ratio"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_min_hp_pct</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>32</ID>
          <Description>"Enemy fast kill"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_enemy_hp_option</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>33</ID>
      <Description>"Field: browse usable spell and restore MP"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FIELD_BROWSE_HEAL_SPELL,$process,8B 50 34 39 53 14) // should be unique
alloc(newmem,$1000,INJECT_FIELD_BROWSE_HEAL_SPELL)

label(code)
label(return)

newmem:
  mov edx,[rax+30]
  mov [rax+34], edx

code:
  //mov edx,[rax+34]
  cmp [rbx+14],edx
  jmp return

INJECT_FIELD_BROWSE_HEAL_SPELL:
  jmp newmem
  nop
return:
registersymbol(INJECT_FIELD_BROWSE_HEAL_SPELL)

[DISABLE]

INJECT_FIELD_BROWSE_HEAL_SPELL:
  db 8B 50 34 39 53 14

unregistersymbol(INJECT_FIELD_BROWSE_HEAL_SPELL)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+117687A

DQIIIHD2DRemake.exe+117685A: 8D 56 04           - lea edx,[rsi+04]
DQIIIHD2DRemake.exe+117685D: E8 2E 0C E1 FF     - call DQIIIHD2DRemake.exe+F87490
DQIIIHD2DRemake.exe+1176862: 84 C0              - test al,al
DQIIIHD2DRemake.exe+1176864: 75 5B              - jne DQIIIHD2DRemake.exe+11768C1
DQIIIHD2DRemake.exe+1176866: 48 8B 4D 58        - mov rcx,[rbp+58]
DQIIIHD2DRemake.exe+117686A: 8D 56 10           - lea edx,[rsi+10]
DQIIIHD2DRemake.exe+117686D: E8 1E 0C E1 FF     - call DQIIIHD2DRemake.exe+F87490
DQIIIHD2DRemake.exe+1176872: 84 C0              - test al,al
DQIIIHD2DRemake.exe+1176874: 75 4B              - jne DQIIIHD2DRemake.exe+11768C1
DQIIIHD2DRemake.exe+1176876: 48 8B 45 58        - mov rax,[rbp+58]
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+117687A: 8B 50 34           - mov edx,[rax+34]
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+117687D: 39 53 14           - cmp [rbx+14],edx
DQIIIHD2DRemake.exe+1176880: 7F 3F              - jg DQIIIHD2DRemake.exe+11768C1
DQIIIHD2DRemake.exe+1176882: E8 E9 65 E4 FF     - call DQIIIHD2DRemake.exe+FBCE70
DQIIIHD2DRemake.exe+1176887: 33 D2              - xor edx,edx
DQIIIHD2DRemake.exe+1176889: 48 8B CB           - mov rcx,rbx
DQIIIHD2DRemake.exe+117688C: E8 8F 7A C7 FF     - call DQIIIHD2DRemake.exe+DEE320
DQIIIHD2DRemake.exe+1176891: 48 8B D8           - mov rbx,rax
DQIIIHD2DRemake.exe+1176894: 48 85 C0           - test rax,rax
DQIIIHD2DRemake.exe+1176897: 0F 84 8C 00 00 00  - je DQIIIHD2DRemake.exe+1176929
DQIIIHD2DRemake.exe+117689D: E8 CE 65 E4 FF     - call DQIIIHD2DRemake.exe+FBCE70
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>34</ID>
      <Description>"Field: MP no decrease after casting"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : DQIIIHD2DRemake.exe
  Version: 
  Date   : 2025-05-28
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_FIELD_CAST_SPELL,$process,41 29 75 34 B9 00 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_FIELD_CAST_SPELL)

label(code)
label(return)

newmem:
  cmp esi, 0
  jl code
  xor esi, esi

code:
  sub [r13+34],esi
  mov ecx,00000000
  jmp return

INJECT_FIELD_CAST_SPELL:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_FIELD_CAST_SPELL)

[DISABLE]

INJECT_FIELD_CAST_SPELL:
  db 41 29 75 34 B9 00 00 00 00

unregistersymbol(INJECT_FIELD_CAST_SPELL)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: DQIIIHD2DRemake.exe+F96B7D

DQIIIHD2DRemake.exe+F96B57: E8 54 1E 97 FF           - call DQIIIHD2DRemake.exe+9089B0
DQIIIHD2DRemake.exe+F96B5C: 33 C9                    - xor ecx,ecx
DQIIIHD2DRemake.exe+F96B5E: E8 CD 8F 12 00           - call DQIIIHD2DRemake.exe+10BFB30
DQIIIHD2DRemake.exe+F96B63: 4C 8D 45 97              - lea r8,[rbp-69]
DQIIIHD2DRemake.exe+F96B67: C6 45 97 00              - mov byte ptr [rbp-69],00
DQIIIHD2DRemake.exe+F96B6B: 48 8D 55 F7              - lea rdx,[rbp-09]
DQIIIHD2DRemake.exe+F96B6F: 48 8B C8                 - mov rcx,rax
DQIIIHD2DRemake.exe+F96B72: E8 C9 6A 12 00           - call DQIIIHD2DRemake.exe+10BD640
DQIIIHD2DRemake.exe+F96B77: 80 7D 97 00              - cmp byte ptr [rbp-69],00
DQIIIHD2DRemake.exe+F96B7B: 74 14                    - je DQIIIHD2DRemake.exe+F96B91
// ---------- INJECTING HERE ----------
DQIIIHD2DRemake.exe+F96B7D: 41 29 75 34              - sub [r13+34],esi
// ---------- DONE INJECTING  ----------
DQIIIHD2DRemake.exe+F96B81: B9 00 00 00 00           - mov ecx,00000000
DQIIIHD2DRemake.exe+F96B86: 41 8B 45 34              - mov eax,[r13+34]
DQIIIHD2DRemake.exe+F96B8A: 0F 48 C1                 - cmovs eax,ecx
DQIIIHD2DRemake.exe+F96B8D: 41 89 45 34              - mov [r13+34],eax
DQIIIHD2DRemake.exe+F96B91: 48 8B 4D 17              - mov rcx,[rbp+17]
DQIIIHD2DRemake.exe+F96B95: 40 B6 01                 - mov sil,01
DQIIIHD2DRemake.exe+F96B98: 48 85 C9                 - test rcx,rcx
DQIIIHD2DRemake.exe+F96B9B: 74 05                    - je DQIIIHD2DRemake.exe+F96BA2
DQIIIHD2DRemake.exe+F96B9D: E8 8E 98 40 00           - call DQIIIHD2DRemake.exe+13A0430
DQIIIHD2DRemake.exe+F96BA2: 4C 8B AC 24 C0 00 00 00  - mov r13,[rsp+000000C0]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>36</ID>
      <Description>"DRAGON QUEST III HD-2D Remake  /  https://openchetatables.com"</Description>
      <Color>009300</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
