<?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>87</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, -- "Bullets / crafting: craft / keep at least min. set?"
  10, -- "Item Editor"
  2, -- "Crafting: set min. material amount"
  4, -- "Battle: damage control"
  71, -- "Keep min. EN"
  73, -- "Get SP after battle"
  76, -- "Get enhance piece amount after battle"
  83, -- "Recipe: set min. particles# (残響) after use"
  11, -- "Additional methods"
  74, -- "Method.2"
  84, -- "Browse &amp; set"
  12, -- "Additional method.2 (effect 1 not empty)"
  13, -- "Additional method.3 (material grade)"
  14, -- "Additional method.4 (Sattlement / raw materials)"
  15, -- "Additional method.5 (Equipments, if HP+/Atk+/Def+/Spd+ not zero)"
}
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 = {
  15, -- "Additional method.5 (Equipments, if HP+/Atk+/Def+/Spd+ not zero)"
  14, -- "Additional method.4 (Sattlement / raw materials)"
  13, -- "Additional method.3 (material grade)"
  12, -- "Additional method.2 (effect 1 not empty)"
  84, -- "Browse &amp; set"
  74, -- "Method.2"
  16, -- "Duplicate select item to container"
  11, -- "Additional methods"
  83, -- "Recipe: set min. particles# (残響) after use"
  76, -- "Get enhance piece amount after battle"
  73, -- "Get SP after battle"
  71, -- "Keep min. EN"
  67, -- "Synthesis: mana multiplier"
  64, -- "Synthesis: easy lv up"
  4, -- "Battle: damage control"
  2, -- "Crafting: set min. material amount"
  10, -- "Item Editor"
  1, -- "Bullets / crafting: craft / keep at least min. set?"
  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: "Bullets / crafting: craft / keep at least min. set?", Depth: 0
-- ID: 2, Description: "Crafting: set min. material amount", Depth: 0
-- ID: 4, Description: "Battle: damage control", Depth: 0
-- ID: 10, Description: "Item Editor", Depth: 0
--   ID: 11, Description: "Additional methods", Depth: 1
--     ID: 12, Description: "Additional method.2 (effect 1 not empty)", Depth: 2
--     ID: 13, Description: "Additional method.3 (material grade)", Depth: 2
--     ID: 14, Description: "Additional method.4 (Sattlement / raw materials)", Depth: 2
--     ID: 15, Description: "Additional method.5 (Equipments, if HP+/Atk+/Def+/Spd+ not zero)", Depth: 2
--   ID: 16, Description: "Duplicate select item to container", Depth: 1
-- ID: 64, Description: "Synthesis: easy lv up", Depth: 0
-- ID: 67, Description: "Synthesis: mana multiplier", Depth: 0
-- ID: 71, Description: "Keep min. EN", Depth: 0
-- ID: 73, Description: "Get SP after battle", Depth: 0
--   ID: 74, Description: "Method.2", Depth: 1
-- ID: 76, Description: "Get enhance piece amount after battle", Depth: 0
-- ID: 83, Description: "Recipe: set min. particles# (残響) after use", Depth: 0
--   ID: 84, Description: "Browse &amp; set", Depth: 1


</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Bullets / crafting: craft / keep at least min. set?"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-20
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BULLETS_NO_DEC,$process,B8 E7 03 00 00 3B D0 0F 47) // should be unique
alloc(newmem,$1000,INJECT_BULLETS_NO_DEC)

label(code)
label(return)

newmem:
  cmp edx, r8d
  jae code
  mov edx, r8d

code:
  mov eax,000003E7
  jmp return

INJECT_BULLETS_NO_DEC:
  jmp newmem
return:
registersymbol(INJECT_BULLETS_NO_DEC)

[DISABLE]

INJECT_BULLETS_NO_DEC:
  db B8 E7 03 00 00

unregistersymbol(INJECT_BULLETS_NO_DEC)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1105C65

Atelier_Yumia.exe+1105C57: CC              - int 3 
Atelier_Yumia.exe+1105C58: CC              - int 3 
Atelier_Yumia.exe+1105C59: CC              - int 3 
Atelier_Yumia.exe+1105C5A: CC              - int 3 
Atelier_Yumia.exe+1105C5B: CC              - int 3 
Atelier_Yumia.exe+1105C5C: CC              - int 3 
Atelier_Yumia.exe+1105C5D: CC              - int 3 
Atelier_Yumia.exe+1105C5E: CC              - int 3 
Atelier_Yumia.exe+1105C5F: CC              - int 3 
Atelier_Yumia.exe+1105C60: 44 0F BE 41 0A  - movsx r8d,byte ptr [rcx+0A]
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1105C65: B8 E7 03 00 00  - mov eax,000003E7
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1105C6A: 3B D0           - cmp edx,eax
Atelier_Yumia.exe+1105C6C: 0F 47 D0        - cmova edx,eax
Atelier_Yumia.exe+1105C6F: 41 83 E8 03     - sub r8d,03
Atelier_Yumia.exe+1105C73: 74 18           - je Atelier_Yumia.exe+1105C8D
Atelier_Yumia.exe+1105C75: 41 83 E8 01     - sub r8d,01
Atelier_Yumia.exe+1105C79: 74 12           - je Atelier_Yumia.exe+1105C8D
Atelier_Yumia.exe+1105C7B: 41 83 F8 01     - cmp r8d,01
Atelier_Yumia.exe+1105C7F: 74 0C           - je Atelier_Yumia.exe+1105C8D
Atelier_Yumia.exe+1105C81: 33 C0           - xor eax,eax
Atelier_Yumia.exe+1105C83: 85 D2           - test edx,edx
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Crafting: set min. material amount"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_INF_CRAFT_MATERIAL,$process,0F B7 40 14 48 8B 5C 24 30) // should be unique
alloc(newmem,$1000,INJECT_INF_CRAFT_MATERIAL)

label(code)
label(return i_min_craft_mat_val)

newmem:
  push rbx
  mov bx, [rax+14]
  cmp bx, [i_min_craft_mat_val]
  jae endp
  mov bx, [i_min_craft_mat_val]
  mov [rax+14], bx

endp:
  pop rbx

code:
  movzx eax,word ptr [rax+14]
  mov rbx,[rsp+30]
  jmp return
align 10 cc
  i_min_craft_mat_val:
  dw #288

INJECT_INF_CRAFT_MATERIAL:
  jmp newmem
  nop 4
return:
registersymbol(INJECT_INF_CRAFT_MATERIAL i_min_craft_mat_val)

[DISABLE]

INJECT_INF_CRAFT_MATERIAL:
  db 0F B7 40 14 48 8B 5C 24 30

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1141576

Atelier_Yumia.exe+1141559: 74 2A           - je Atelier_Yumia.exe+1141585
Atelier_Yumia.exe+114155B: 45 84 C9        - test r9b,r9b
Atelier_Yumia.exe+114155E: 74 16           - je Atelier_Yumia.exe+1141576
Atelier_Yumia.exe+1141560: 0F B7 48 16     - movzx ecx,word ptr [rax+16]
Atelier_Yumia.exe+1141564: 66 03 48 14     - add cx,[rax+14]
Atelier_Yumia.exe+1141568: 0F B7 C1        - movzx eax,cx
Atelier_Yumia.exe+114156B: 48 8B 5C 24 30  - mov rbx,[rsp+30]
Atelier_Yumia.exe+1141570: 48 83 C4 20     - add rsp,20
Atelier_Yumia.exe+1141574: 5F              - pop rdi
Atelier_Yumia.exe+1141575: C3              - ret 
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1141576: 0F B7 40 14     - movzx eax,word ptr [rax+14]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+114157A: 48 8B 5C 24 30  - mov rbx,[rsp+30]
Atelier_Yumia.exe+114157F: 48 83 C4 20     - add rsp,20
Atelier_Yumia.exe+1141583: 5F              - pop rdi
Atelier_Yumia.exe+1141584: C3              - ret 
Atelier_Yumia.exe+1141585: 48 8B 5C 24 30  - mov rbx,[rsp+30]
Atelier_Yumia.exe+114158A: 33 C0           - xor eax,eax
Atelier_Yumia.exe+114158C: 48 83 C4 20     - add rsp,20
Atelier_Yumia.exe+1141590: 5F              - pop rdi
Atelier_Yumia.exe+1141591: C3              - ret 
Atelier_Yumia.exe+1141592: CC              - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>3</ID>
          <Description>"min. value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_min_craft_mat_val</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>4</ID>
      <Description>"Battle: damage control"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-17
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_DAMAGE_MULTI,Atelier_Yumia.exe,44 8B 86 B0 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_DAMAGE_MULTI)

label(code)
label(return vf_damage_multi_2_player vf_damage_multi_2_enemy is_quick_break i_min_hp_threshold i_min_hp_ratio)

newmem:
  cmp r14d, 0
  jg code
  movaps xmm14, [vf_damage_multi_2_player]
  vcvtsi2ss xmm15, xmm15, r14d
  vshufps xmm15, xmm15, xmm15, 0
  vmulps xmm15, xmm14, xmm15

  cmp qword ptr [rsi+80], 0
  jne to_enemy
  cmp qword ptr [rsi+88], 0
  jne to_enemy
  cmp qword ptr [rsi+90], 0
  jne to_enemy
  cmp qword ptr [rsi+A0], 0
  jne to_enemy

  //vcvtss2si r14d, xmm15

  mov r8d,[rsi+000000B8]
  vmovss xmm14, [i_min_hp_ratio]
  vcvtsi2ss xmm13, xmm13, r8d
  vmulss xmm13, xmm13, xmm14
  push r15
  vcvtss2si r15d, xmm13 // max HP * min ratio
  mov r8d,[rsi+000000B0]

  vcvtss2si r14d, xmm15
  add r8d, r14d
  cmp r8d, r15d
  jge end_ratio_chk

  mov r8d, r15d
  mov [rsi+000000B0], r8d
  vxorps xmm15, xmm15, xmm15

end_ratio_chk:
  pop r15


  mov r8d,[rsi+000000B0]
  vcvtss2si r14d, xmm15
  add r8d, r14d
  cmp r8d, [i_min_hp_threshold]
  jge code_pre

  mov r8d, [i_min_hp_threshold]
  vxorps xmm15, xmm15, xmm15
  mov [rsi+000000B0], r8d

  jmp code_pre

to_enemy:
  cmp dword ptr [rsi+A0], 0
  jne to_e_break
  vshufps xmm15, xmm15, xmm15, 1
  cmp dword ptr [is_quick_break], 1
  jne code_pre
  cmp dword ptr [rsi+000000B4], 1
  jb code_pre
  mov dword ptr [rsi+000000B4], 1
  jmp code_pre

to_e_break:
  cmp dword ptr [is_quick_break], 1
  jne code
  cmp dword ptr [rsi+000000B0], 1
  jbe code
  mov dword ptr [rsi+000000B0], 1

code_pre:
  vcvtss2si r14d, xmm15
code:
  mov r8d,[rsi+000000B0]
  jmp return
align 10 cc
  vf_damage_multi_2_player:
  dd (float)0.8
  vf_damage_multi_2_enemy:
  dd (float)1
  dd 0 0
  is_quick_break:
  dd 1
  i_min_hp_threshold:
  dd 32
  i_min_hp_ratio:
  dd (float)0.2

INJECT_DAMAGE_MULTI:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_DAMAGE_MULTI vf_damage_multi_2_player vf_damage_multi_2_enemy is_quick_break i_min_hp_threshold i_min_hp_ratio)

[DISABLE]

INJECT_DAMAGE_MULTI:
  db 44 8B 86 B0 00 00 00

unregistersymbol(INJECT_DAMAGE_MULTI vf_damage_multi_2_player vf_damage_multi_2_enemy is_quick_break i_min_hp_threshold i_min_hp_ratio)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+F20D42

Atelier_Yumia.exe+F20D23: 48 85 C9                 - test rcx,rcx
Atelier_Yumia.exe+F20D26: 74 60                    - je Atelier_Yumia.exe+F20D88
Atelier_Yumia.exe+F20D28: 8D 57 01                 - lea edx,[rdi+01]
Atelier_Yumia.exe+F20D2B: E8 10 E2 05 00           - call Atelier_Yumia.exe+F7EF40
Atelier_Yumia.exe+F20D30: 84 C0                    - test al,al
Atelier_Yumia.exe+F20D32: 75 43                    - jne Atelier_Yumia.exe+F20D77
Atelier_Yumia.exe+F20D34: 48 89 74 24 30           - mov [rsp+30],rsi
Atelier_Yumia.exe+F20D39: 8B D7                    - mov edx,edi
Atelier_Yumia.exe+F20D3B: 48 8D 34 BB              - lea rsi,[rbx+rdi*4]
Atelier_Yumia.exe+F20D3F: 48 8B CB                 - mov rcx,rbx
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+F20D42: 44 8B 86 B0 00 00 00     - mov r8d,[rsi+000000B0]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+F20D49: 45 03 C6                 - add r8d,r14d
Atelier_Yumia.exe+F20D4C: E8 9F 0B 00 00           - call Atelier_Yumia.exe+F218F0
Atelier_Yumia.exe+F20D51: 48 8B 43 40              - mov rax,[rbx+40]
Atelier_Yumia.exe+F20D55: 48 83 B8 C8 00 00 00 00  - cmp qword ptr [rax+000000C8],00
Atelier_Yumia.exe+F20D5D: 74 13                    - je Atelier_Yumia.exe+F20D72
Atelier_Yumia.exe+F20D5F: 83 FF 01                 - cmp edi,01
Atelier_Yumia.exe+F20D62: 75 0E                    - jne Atelier_Yumia.exe+F20D72
Atelier_Yumia.exe+F20D64: 39 BE B0 00 00 00        - cmp [rsi+000000B0],edi
Atelier_Yumia.exe+F20D6A: 7D 06                    - jnl Atelier_Yumia.exe+F20D72
Atelier_Yumia.exe+F20D6C: 89 BE B0 00 00 00        - mov [rsi+000000B0],edi
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"multiplier to player"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_damage_multi_2_player</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"multiplier to enemy"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_damage_multi_2_enemy</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>7</ID>
          <Description>"min. HP ratio"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>i_min_hp_ratio</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"min. HP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_hp_threshold</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Quick break?"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>is_quick_break</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Item Editor"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-20
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEMS,$process,0F B7 77 04 85 C9) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEMS)

label(code)
label(return i_base_item_addr i_method_3_on i_method_4_on i_method_2_on i_method_5_on)

newmem:
  test ecx,ecx
  jz code
{
  cmp dword ptr [i_method_4_on], 1
  je alt_check_for4
  jmp save_addr
alt_check_for4:
  cmp byte ptr [edi+A], 4
  je code
  cmp byte ptr [edi+A], 5
  je code
}
check_method2:
  cmp dword ptr [i_method_2_on], 1
  jne check_method5
  cmp word ptr [rdi+E], 0 // effect1
  je check_method5
  jmp code


check_method5:
  cmp dword ptr [i_method_5_on], 1
  jne check_method4
  cmp qword ptr [rdi+7C], 0 // 7C, 7E, 80, 82: HP+, Atk+. Def+, Spd+
  je check_method4
  jmp code

check_method4:
  cmp dword ptr [i_method_4_on], 1
  jne check_method3
  cmp byte ptr [rdi+0A], 4
  je code
  cmp byte ptr [rdi+0A], 5
  je code
  //jmp save_addr

check_method3:
  cmp dword ptr [i_method_3_on], 1
  jne save_addr
  cmp byte ptr [rdi+30], 5
  je code

save_addr:
  mov [i_base_item_addr], rdi

code:
  movzx esi,word ptr [rdi+04]
  test ecx,ecx
  jmp return
align 10 cc
  i_base_item_addr:
  dq 0
  i_method_2_on:
  dd 0
  i_method_3_on:
  dd 0
  i_method_4_on:
  dd 0
  i_method_5_on:
  dd 0

INJECT_BROWSE_ITEMS:
  jmp newmem
  nop
return:
registersymbol(INJECT_BROWSE_ITEMS i_base_item_addr i_method_3_on i_method_4_on i_method_2_on i_method_5_on)

[DISABLE]

INJECT_BROWSE_ITEMS:
  db 0F B7 77 04 85 C9

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+110D20B

Atelier_Yumia.exe+110D1DF: E8 3C 06 04 00        - call Atelier_Yumia.exe+114D820
Atelier_Yumia.exe+110D1E4: 48 8D 15 6D 4A ED 00  - lea rdx,[Atelier_Yumia.exe+1FE1C58]
Atelier_Yumia.exe+110D1EB: 48 8B C8              - mov rcx,rax
Atelier_Yumia.exe+110D1EE: E8 FD 4E 02 00        - call Atelier_Yumia.exe+11320F0
Atelier_Yumia.exe+110D1F3: 84 C0                 - test al,al
Atelier_Yumia.exe+110D1F5: 0F 84 DC 00 00 00     - je Atelier_Yumia.exe+110D2D7
Atelier_Yumia.exe+110D1FB: 0F BE 4F 0A           - movsx ecx,byte ptr [rdi+0A]
Atelier_Yumia.exe+110D1FF: 33 DB                 - xor ebx,ebx
Atelier_Yumia.exe+110D201: 48 89 6C 24 40        - mov [rsp+40],rbp
Atelier_Yumia.exe+110D206: 48 89 74 24 48        - mov [rsp+48],rsi
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+110D20B: 0F B7 77 04           - movzx esi,word ptr [rdi+04]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+110D20F: 85 C9                 - test ecx,ecx
Atelier_Yumia.exe+110D211: 74 0A                 - je Atelier_Yumia.exe+110D21D
Atelier_Yumia.exe+110D213: 83 E9 01              - sub ecx,01
Atelier_Yumia.exe+110D216: 74 05                 - je Atelier_Yumia.exe+110D21D
Atelier_Yumia.exe+110D218: 83 F9 01              - cmp ecx,01
Atelier_Yumia.exe+110D21B: 75 24                 - jne Atelier_Yumia.exe+110D241
Atelier_Yumia.exe+110D21D: 48 8B 0D 84 B3 6E 01  - mov rcx,[Atelier_Yumia.exe+27F85A8]
Atelier_Yumia.exe+110D224: 48 85 C9              - test rcx,rcx
Atelier_Yumia.exe+110D227: 74 1E                 - je Atelier_Yumia.exe+110D247
Atelier_Yumia.exe+110D229: E8 F2 05 04 00        - call Atelier_Yumia.exe+114D820
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Additional methods"</Description>
          <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>12</ID>
              <Description>"Additional method.2 (effect 1 not empty)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-20
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEMS_2,$process,0F B6 51 02 0F BF 09 E9 ?? ?? ?? ?? CC B8) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEMS_2)

label(code)
label(return)

i_method_2_on:
  dd 1

newmem:
  test r12, r12
  jnz code
  push rcx
  lea rcx, [rcx-C]
  mov [i_base_item_addr], rcx
  pop rcx


code:
  movzx edx,byte ptr [rcx+02]
  movsx ecx,word ptr [rcx]
  jmp return

INJECT_BROWSE_ITEMS_2:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BROWSE_ITEMS_2)

[DISABLE]

INJECT_BROWSE_ITEMS_2:
  db 0F B6 51 02 0F BF 09
i_method_2_on:
  dd 0
unregistersymbol(INJECT_BROWSE_ITEMS_2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1102793

Atelier_Yumia.exe+1102787: CC              - int 3
Atelier_Yumia.exe+1102788: CC              - int 3
Atelier_Yumia.exe+1102789: CC              - int 3
Atelier_Yumia.exe+110278A: CC              - int 3
Atelier_Yumia.exe+110278B: CC              - int 3
Atelier_Yumia.exe+110278C: CC              - int 3
Atelier_Yumia.exe+110278D: CC              - int 3
Atelier_Yumia.exe+110278E: CC              - int 3
Atelier_Yumia.exe+110278F: CC              - int 3
Atelier_Yumia.exe+1102790: 4C 8B C2        - mov r8,rdx
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1102793: 0F B6 51 02     - movzx edx,byte ptr [rcx+02]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1102797: 0F BF 09        - movsx ecx,word ptr [rcx]
Atelier_Yumia.exe+110279A: E9 61 14 F7 FF  - jmp Atelier_Yumia.exe+1073C00
Atelier_Yumia.exe+110279F: CC              - int 3
Atelier_Yumia.exe+11027A0: B8 FF FF FF FF  - mov eax,FFFFFFFF
Atelier_Yumia.exe+11027A5: C6 41 02 00     - mov byte ptr [rcx+02],00
Atelier_Yumia.exe+11027A9: 66 89 01        - mov [rcx],ax
Atelier_Yumia.exe+11027AC: C3              - ret
Atelier_Yumia.exe+11027AD: CC              - int 3
Atelier_Yumia.exe+11027AE: CC              - int 3
Atelier_Yumia.exe+11027AF: CC              - int 3
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>13</ID>
              <Description>"Additional method.3 (material grade)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEMS_3,$process,0F BE 47 30 83 F8 05) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEMS_3)

label(code)
label(return)

i_method_3_on:
  dd 1

newmem:
  mov [i_base_item_addr], rdi
  mov dword ptr [i_method_3_on], 1

code:
  movsx eax,byte ptr [rdi+30]
  cmp eax,05
  jmp return


INJECT_BROWSE_ITEMS_3:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BROWSE_ITEMS_3)

[DISABLE]

INJECT_BROWSE_ITEMS_3:
  db 0F BE 47 30 83 F8 05

i_method_3_on:
  dd 0

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+11056DC

Atelier_Yumia.exe+11056BB: 8B 0C 81              - mov ecx,[rcx+rax*4]
Atelier_Yumia.exe+11056BE: EB 35                 - jmp Atelier_Yumia.exe+11056F5
Atelier_Yumia.exe+11056C0: 33 C0                 - xor eax,eax
Atelier_Yumia.exe+11056C2: 48 8D 0D 1F 7B ED 00  - lea rcx,[Atelier_Yumia.exe+1FDD1E8]
Atelier_Yumia.exe+11056C9: 81 FB 77 01 00 00     - cmp ebx,00000177
Atelier_Yumia.exe+11056CF: 0F 9F C0              - setg al
Atelier_Yumia.exe+11056D2: 83 C0 04              - add eax,04
Atelier_Yumia.exe+11056D5: 48 98                 - cdqe 
Atelier_Yumia.exe+11056D7: 8B 0C 81              - mov ecx,[rcx+rax*4]
Atelier_Yumia.exe+11056DA: EB 19                 - jmp Atelier_Yumia.exe+11056F5
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+11056DC: 0F BE 47 30           - movsx eax,byte ptr [rdi+30]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+11056E0: 83 F8 05              - cmp eax,05
Atelier_Yumia.exe+11056E3: 77 0E                 - ja Atelier_Yumia.exe+11056F3
Atelier_Yumia.exe+11056E5: 48 98                 - cdqe 
Atelier_Yumia.exe+11056E7: 48 8D 0D FA 7A ED 00  - lea rcx,[Atelier_Yumia.exe+1FDD1E8]
Atelier_Yumia.exe+11056EE: 8B 0C 81              - mov ecx,[rcx+rax*4]
Atelier_Yumia.exe+11056F1: EB 02                 - jmp Atelier_Yumia.exe+11056F5
Atelier_Yumia.exe+11056F3: 33 C9                 - xor ecx,ecx
Atelier_Yumia.exe+11056F5: 03 E9                 - add ebp,ecx
Atelier_Yumia.exe+11056F7: 48 8D 05 3A 16 E8 00  - lea rax,[Atelier_Yumia.exe+1F86D38]
Atelier_Yumia.exe+11056FE: 48 8D 4C 24 20        - lea rcx,[rsp+20]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>14</ID>
              <Description>"Additional method.4 (Sattlement / raw materials)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEMS_4,$process,0F BE 51 0A 48 8B F9) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEMS_4)

label(code)
label(return)

newmem:
  cmp byte ptr [rcx+0A], 4
  je to_process
  cmp byte ptr [rcx+0A], 5
  je to_process
  jmp code

to_process:
  mov dword ptr [i_method_4_on], 1
  mov [i_base_item_addr], rcx

code:
  movsx edx,byte ptr [rcx+0A]
  mov rdi,rcx
  jmp return

INJECT_BROWSE_ITEMS_4:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BROWSE_ITEMS_4)

[DISABLE]

INJECT_BROWSE_ITEMS_4:
  db 0F BE 51 0A 48 8B F9
i_method_4_on:
  dd 0
unregistersymbol(INJECT_BROWSE_ITEMS_4)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1105FBA

Atelier_Yumia.exe+1105FA9: CC                    - int 3 
Atelier_Yumia.exe+1105FAA: CC                    - int 3 
Atelier_Yumia.exe+1105FAB: CC                    - int 3 
Atelier_Yumia.exe+1105FAC: CC                    - int 3 
Atelier_Yumia.exe+1105FAD: CC                    - int 3 
Atelier_Yumia.exe+1105FAE: CC                    - int 3 
Atelier_Yumia.exe+1105FAF: CC                    - int 3 
Atelier_Yumia.exe+1105FB0: 48 89 5C 24 18        - mov [rsp+18],rbx
Atelier_Yumia.exe+1105FB5: 57                    - push rdi
Atelier_Yumia.exe+1105FB6: 48 83 EC 30           - sub rsp,30
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1105FBA: 0F BE 51 0A           - movsx edx,byte ptr [rcx+0A]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1105FBE: 48 8B F9              - mov rdi,rcx
Atelier_Yumia.exe+1105FC1: 85 D2                 - test edx,edx
Atelier_Yumia.exe+1105FC3: 74 0A                 - je Atelier_Yumia.exe+1105FCF
Atelier_Yumia.exe+1105FC5: 83 EA 01              - sub edx,01
Atelier_Yumia.exe+1105FC8: 74 05                 - je Atelier_Yumia.exe+1105FCF
Atelier_Yumia.exe+1105FCA: 83 FA 01              - cmp edx,01
Atelier_Yumia.exe+1105FCD: 75 2C                 - jne Atelier_Yumia.exe+1105FFB
Atelier_Yumia.exe+1105FCF: 48 8B 0D E2 E5 6E 01  - mov rcx,[Atelier_Yumia.exe+27F45B8]
Atelier_Yumia.exe+1105FD6: 48 85 C9              - test rcx,rcx
Atelier_Yumia.exe+1105FD9: 0F 84 F8 00 00 00     - je Atelier_Yumia.exe+11060D7
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>15</ID>
              <Description>"Additional method.5 (Equipments, if HP+/Atk+/Def+/Spd+ not zero)"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_ITEMS_4,$process,42 0F BF 54 77 7C) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_ITEMS_4)

label(code)
label(return)

i_method_5_on:
  dd 1

newmem:
  test r14, r14
  jnz code
  mov [i_base_item_addr], rdi

code:
  movsx edx,word ptr [rdi+r14*2+7C]
  jmp return

INJECT_BROWSE_ITEMS_4:
  jmp newmem
  nop
return:
registersymbol(INJECT_BROWSE_ITEMS_4)

[DISABLE]

INJECT_BROWSE_ITEMS_4:
  db 42 0F BF 54 77 7C

i_method_5_on:
  dd 0

unregistersymbol(INJECT_BROWSE_ITEMS_4)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1105B7D

Atelier_Yumia.exe+1105B58: 48 8B 0D 09 EA 6E 01     - mov rcx,[Atelier_Yumia.exe+27F4568]
Atelier_Yumia.exe+1105B5F: E8 DC 67 F6 FF           - call Atelier_Yumia.exe+106C340
Atelier_Yumia.exe+1105B64: 48 85 C0                 - test rax,rax
Atelier_Yumia.exe+1105B67: 74 0E                    - je Atelier_Yumia.exe+1105B77
Atelier_Yumia.exe+1105B69: 41 8B D6                 - mov edx,r14d
Atelier_Yumia.exe+1105B6C: 48 8B C8                 - mov rcx,rax
Atelier_Yumia.exe+1105B6F: E8 1C 7B 17 00           - call Atelier_Yumia.exe+127D690
Atelier_Yumia.exe+1105B74: 44 8B E0                 - mov r12d,eax
Atelier_Yumia.exe+1105B77: 80 7F 0A 00              - cmp byte ptr [rdi+0A],00
Atelier_Yumia.exe+1105B7B: 75 09                    - jne Atelier_Yumia.exe+1105B86
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1105B7D: 42 0F BF 54 77 7C        - movsx edx,word ptr [rdi+r14*2+7C]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1105B83: 44 03 E2                 - add r12d,edx
Atelier_Yumia.exe+1105B86: 0F 57 C0                 - xorps xmm0,xmm0
Atelier_Yumia.exe+1105B89: F3 0F 7F 45 E8           - movdqu [rbp-18],xmm0
Atelier_Yumia.exe+1105B8E: 48 C7 45 F8 00 00 00 00  - mov qword ptr [rbp-08],00000000
Atelier_Yumia.exe+1105B96: 48 8D 55 E8              - lea rdx,[rbp-18]
Atelier_Yumia.exe+1105B9A: 41 8B CE                 - mov ecx,r14d
Atelier_Yumia.exe+1105B9D: E8 0E 81 17 00           - call Atelier_Yumia.exe+127DCB0
Atelier_Yumia.exe+1105BA2: 48 8B 75 F0              - mov rsi,[rbp-10]
Atelier_Yumia.exe+1105BA6: 48 8B 5D E8              - mov rbx,[rbp-18]
Atelier_Yumia.exe+1105BAA: 48 3B DE                 - cmp rbx,rsi
}
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Duplicate select item to container"</Description>
          <Color>FF80FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
--NO_ACTIVATE
if syntaxcheck then return end

clearLuaLog()

if memrec then print(memrec.Description) end
print("Start copying item...")

local itemBaseAddr = readPointer("i_base_item_addr")
if not itemBaseAddr or itemBaseAddr == 0 then
  print("Please select an item first.")
  return
end

print(string.format("Source item address: %08X", itemBaseAddr))

-- Constants
local ItemRecordSize = 134
local EmptyItemID = 65535

-- Check game process
if getAddressSafe(process) == nil then
  print("Game process not found.")
  return
end

-- Start scanning
local currentAddr = itemBaseAddr
local found = false

while true do
  local itemID = readSmallInteger(currentAddr + 2)
  if itemID == EmptyItemID then
    print("Found empty slot at: " .. string.format("%08X", currentAddr))
    local bytes = readBytes(itemBaseAddr, ItemRecordSize, true)
    writeBytes(currentAddr, bytes)
    found = true
    break
  end

  currentAddr = currentAddr + ItemRecordSize
  if currentAddr - itemBaseAddr &gt; ItemRecordSize * 4950 then
    print("Safety stop: scanned over 4950 records.")
    break
  end
end

if not found then
  print("No empty slot found. Item not copied.")
end

closeLuaEngine()
{$asm}
[DISABLE]

</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>17</ID>
              <Description>"Warning: used for "container window" only; make sure you have space left!"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>18</ID>
              <Description>"Warning: may cause game unstable, recommended only for useable item and equipments"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>19</ID>
              <Description>"Close &amp; open menu to take affect"</Description>
              <Color>8000FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>20</ID>
          <Description>"Base address"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>8 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Serial No."</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Item ID"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>2</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>23</ID>
          <Description>"Quality"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"Max quality"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>6</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"Material: Amount"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>26</ID>
          <Description>"?"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Byte</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>27</ID>
          <Description>"?"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Byte</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>B</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>28</ID>
          <Description>"Effect 1"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>29</ID>
          <Description>"Effect 1 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>30</ID>
          <Description>"Effect 2"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>10</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>31</ID>
          <Description>"Effect 2 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>12</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>32</ID>
          <Description>"Effect 3"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>14</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>33</ID>
          <Description>"Effect 3 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>16</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>34</ID>
          <Description>"Effect 4"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>18</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>35</ID>
          <Description>"Effect 4 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>1A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>36</ID>
          <Description>"Effect 5"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>1C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>37</ID>
          <Description>"Effect 5 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>1E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>38</ID>
          <Description>"Effect 6"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>20</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>39</ID>
          <Description>"Effect 6 Lv"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>22</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>40</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>24</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>41</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>26</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>42</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>28</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>2A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>44</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>2C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>45</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>2E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>46</ID>
          <Description>"Material Grade"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>30</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>47</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>32</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>48</ID>
          <Description>"?? (40)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>40</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>49</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>52</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>50</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>6A</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>51</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>6C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>52</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>6E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>53</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>78</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>54</ID>
          <Description>"Equip: HP+"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>7C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>55</ID>
          <Description>"Equip: Atk+"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>7E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>56</ID>
          <Description>"Equip: Def+"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>80</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>57</ID>
          <Description>"Equip: Spd+"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>82</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>58</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>16</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>34</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>59</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>16</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>44</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>60</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>16</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>54</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>61</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>16</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>64</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>62</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>16</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>74</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>63</ID>
          <Description>"??"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>Array of byte</VariableType>
          <ByteLength>2</ByteLength>
          <Address>i_base_item_addr</Address>
          <Offsets>
            <Offset>84</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>64</ID>
      <Description>"Synthesis: easy lv up"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-20
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SYN_EASY_LvUp,$process,66 01 07 4D 8D 76 08) // should be unique
alloc(newmem,$1000,INJECT_SYN_EASY_LvUp)

label(code)
label(return vf_syn_lv_multi)

newmem:
  test ax, ax
  jz code
  vcvtsi2ss xmm15, xmm15, eax
  vmovss xmm14, [vf_syn_lv_multi]
  vmulss xmm15, xmm14, xmm15
  vcvtss2si eax, xmm15

code:
  add [rdi],ax
  cmp word ptr [rdi], 0
  jge @F
  mov word ptr [rdi], 0
@@:
  lea r14,[r14+08]
  jmp return
align 10 cc
  vf_syn_lv_multi:
  dd (float)1.5

INJECT_SYN_EASY_LvUp:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_SYN_EASY_LvUp vf_syn_lv_multi)

[DISABLE]

INJECT_SYN_EASY_LvUp:
  db 66 01 07 4D 8D 76 08

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1301A9A

Atelier_Yumia.exe+1301A75: B9 04 00 00 00           - mov ecx,00000004
Atelier_Yumia.exe+1301A7A: 48 0F 47 CB              - cmova rcx,rbx
Atelier_Yumia.exe+1301A7E: 77 07                    - ja Atelier_Yumia.exe+1301A87
Atelier_Yumia.exe+1301A80: 48 0F BF C3              - movsx rax,bx
Atelier_Yumia.exe+1301A84: 66 F3 AB                 - repe stosw 
Atelier_Yumia.exe+1301A87: 66 89 5D 28              - mov [rbp+28],bx
Atelier_Yumia.exe+1301A8B: 49 83 C6 08              - add r14,08
Atelier_Yumia.exe+1301A8F: 48 8B FD                 - mov rdi,rbp
Atelier_Yumia.exe+1301A92: 49 8B 0E                 - mov rcx,[r14]
Atelier_Yumia.exe+1301A95: E8 A6 EE FF FF           - call Atelier_Yumia.exe+1300940
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1301A9A: 66 01 07                 - add [rdi],ax
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1301A9D: 4D 8D 76 08              - lea r14,[r14+08]
Atelier_Yumia.exe+1301AA1: 48 8D 7F 02              - lea rdi,[rdi+02]
Atelier_Yumia.exe+1301AA5: 49 83 EF 01              - sub r15,01
Atelier_Yumia.exe+1301AA9: 75 E7                    - jne Atelier_Yumia.exe+1301A92
Atelier_Yumia.exe+1301AAB: 48 8B 44 24 78           - mov rax,[rsp+78]
Atelier_Yumia.exe+1301AB0: 48 8B 94 24 88 00 00 00  - mov rdx,[rsp+00000088]
Atelier_Yumia.exe+1301AB8: 48 89 6C 24 78           - mov [rsp+78],rbp
Atelier_Yumia.exe+1301ABD: 0F B7 80 30 0C 00 00     - movzx eax,word ptr [rax+00000C30]
Atelier_Yumia.exe+1301AC4: 66 41 03 04 24           - add ax,[r12]
Atelier_Yumia.exe+1301AC9: 66 41 89 04 24           - mov [r12],ax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>65</ID>
          <Description>"Disable after syhtnesis"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>66</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_syn_lv_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>67</ID>
      <Description>"Synthesis: mana multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-20
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_SYN_MANA_MULTI,$process,66 41 03 04 24) // should be unique
alloc(newmem,$1000,INJECT_SYN_MANA_MULTI)

label(code)
label(return vf_syn_mana_multi)

newmem:
  vcvtsi2ss xmm15, xmm15, eax
  vmovss xmm14, [vf_syn_mana_multi]
  vmulss xmm15, xmm14, xmm15
  vcvtss2si eax, xmm15

code:
  add ax,[r12]
  cmp word ptr [r12], 0
  jge return
  mov word ptr [r12], 0
  jmp return
align 10 cc
  vf_syn_mana_multi:
  dd (float)1.5

INJECT_SYN_MANA_MULTI:
  jmp newmem
return:
registersymbol(INJECT_SYN_MANA_MULTI vf_syn_mana_multi)

[DISABLE]

INJECT_SYN_MANA_MULTI:
  db 66 41 03 04 24

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1301AC4

Atelier_Yumia.exe+1301A95: E8 A6 EE FF FF           - call Atelier_Yumia.exe+1300940
INJECT_SYN_EASY_LvUp: E9 61 E5 CA FE           - jmp 7FF7EED70000
Atelier_Yumia.exe+1301A9F: 66 90                    - nop 2
Atelier_Yumia.exe+1301AA1: 48 8D 7F 02              - lea rdi,[rdi+02]
Atelier_Yumia.exe+1301AA5: 49 83 EF 01              - sub r15,01
Atelier_Yumia.exe+1301AA9: 75 E7                    - jne Atelier_Yumia.exe+1301A92
Atelier_Yumia.exe+1301AAB: 48 8B 44 24 78           - mov rax,[rsp+78]
Atelier_Yumia.exe+1301AB0: 48 8B 94 24 88 00 00 00  - mov rdx,[rsp+00000088]
Atelier_Yumia.exe+1301AB8: 48 89 6C 24 78           - mov [rsp+78],rbp
Atelier_Yumia.exe+1301ABD: 0F B7 80 30 0C 00 00     - movzx eax,word ptr [rax+00000C30]
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1301AC4: 66 41 03 04 24           - add ax,[r12]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1301AC9: 66 41 89 04 24           - mov [r12],ax
Atelier_Yumia.exe+1301ACE: 48 85 D2                 - test rdx,rdx
Atelier_Yumia.exe+1301AD1: 74 1B                    - je Atelier_Yumia.exe+1301AEE
Atelier_Yumia.exe+1301AD3: 44 0F B7 C0              - movzx r8d,ax
Atelier_Yumia.exe+1301AD7: 4C 8D 4D 16              - lea r9,[rbp+16]
Atelier_Yumia.exe+1301ADB: 48 8D 45 17              - lea rax,[rbp+17]
Atelier_Yumia.exe+1301ADF: 48 8D 4C 24 78           - lea rcx,[rsp+78]
Atelier_Yumia.exe+1301AE4: 48 89 44 24 20           - mov [rsp+20],rax
Atelier_Yumia.exe+1301AE9: E8 C2 FB FF FF           - call Atelier_Yumia.exe+13016B0
Atelier_Yumia.exe+1301AEE: 48 8B FD                 - mov rdi,rbp
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>68</ID>
          <Description>"Enable before starting synthesis"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>69</ID>
          <Description>"Disable after syhtnesis"</Description>
          <Color>8000FF</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>70</ID>
          <Description>"multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>Float</VariableType>
          <Address>vf_syn_mana_multi</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>71</ID>
      <Description>"Keep min. EN"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_KEEP_MIN_EN,$process,66 89 81 D2 00 00 00 C3 CC) // should be unique
alloc(newmem,$1000,INJECT_KEEP_MIN_EN)

label(code)
label(return i_min_en_threshold)

newmem:
  cmp ax, [i_min_en_threshold]
  jae code
  mov ax, [i_min_en_threshold]

code:
  mov [rcx+000000D2],ax
  jmp return
align 10 cc
  i_min_en_threshold:
  dw 50

INJECT_KEEP_MIN_EN:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_KEEP_MIN_EN i_min_en_threshold)

[DISABLE]

INJECT_KEEP_MIN_EN:
  db 66 89 81 D2 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1159D15

Atelier_Yumia.exe+1159CEF: 66 45 85 C0           - test r8w,r8w
Atelier_Yumia.exe+1159CF3: 66 41 0F 4F C0        - cmovg ax,r8w
Atelier_Yumia.exe+1159CF8: 66 89 81 D2 00 00 00  - mov [rcx+000000D2],ax
Atelier_Yumia.exe+1159CFF: C3                    - ret 
Atelier_Yumia.exe+1159D00: 0F B7 81 D4 00 00 00  - movzx eax,word ptr [rcx+000000D4]
Atelier_Yumia.exe+1159D07: 66 3B D0              - cmp dx,ax
Atelier_Yumia.exe+1159D0A: 7D 09                 - jnl Atelier_Yumia.exe+1159D15
Atelier_Yumia.exe+1159D0C: 33 C0                 - xor eax,eax
Atelier_Yumia.exe+1159D0E: 66 85 D2              - test dx,dx
Atelier_Yumia.exe+1159D11: 66 0F 4F C2           - cmovg ax,dx
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1159D15: 66 89 81 D2 00 00 00  - mov [rcx+000000D2],ax
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1159D1C: C3                    - ret 
Atelier_Yumia.exe+1159D1D: CC                    - int 3 
Atelier_Yumia.exe+1159D1E: CC                    - int 3 
Atelier_Yumia.exe+1159D1F: CC                    - int 3 
Atelier_Yumia.exe+1159D20: 48 89 5C 24 10        - mov [rsp+10],rbx
Atelier_Yumia.exe+1159D25: 55                    - push rbp
Atelier_Yumia.exe+1159D26: 56                    - push rsi
Atelier_Yumia.exe+1159D27: 57                    - push rdi
Atelier_Yumia.exe+1159D28: 41 56                 - push r14
Atelier_Yumia.exe+1159D2A: 41 57                 - push r15
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>72</ID>
          <Description>"min. value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_min_en_threshold</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>73</ID>
      <Description>"Get SP after battle"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_SP,$process,8B 81 A0 00 00 00 89 44) // should be unique
alloc(newmem,$1000,INJECT_GET_SP)

label(code)
label(return i_base_sp_addr)

newmem:
  mov [i_base_sp_addr], rcx

code:
  mov eax,[rcx+000000A0]
  jmp return
align 10 cc
  i_base_sp_addr:
  dq 0

INJECT_GET_SP:
  jmp newmem
  nop
return:
registersymbol(INJECT_GET_SP i_base_sp_addr)

[DISABLE]

INJECT_GET_SP:
  db 8B 81 A0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1132345

Atelier_Yumia.exe+113232C: CC                       - int 3 
Atelier_Yumia.exe+113232D: CC                       - int 3 
Atelier_Yumia.exe+113232E: CC                       - int 3 
Atelier_Yumia.exe+113232F: CC                       - int 3 
Atelier_Yumia.exe+1132330: 48 89 5C 24 18           - mov [rsp+18],rbx
Atelier_Yumia.exe+1132335: 48 89 74 24 20           - mov [rsp+20],rsi
Atelier_Yumia.exe+113233A: 57                       - push rdi
Atelier_Yumia.exe+113233B: 48 83 EC 30              - sub rsp,30
Atelier_Yumia.exe+113233F: 48 8B FA                 - mov rdi,rdx
Atelier_Yumia.exe+1132342: 48 8B D9                 - mov rbx,rcx
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1132345: 8B 81 A0 00 00 00        - mov eax,[rcx+000000A0]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+113234B: 89 44 24 40              - mov [rsp+40],eax
Atelier_Yumia.exe+113234F: 48 8B 0A                 - mov rcx,[rdx]
Atelier_Yumia.exe+1132352: 48 8B 01                 - mov rax,[rcx]
Atelier_Yumia.exe+1132355: C7 44 24 20 07 00 00 00  - mov [rsp+20],00000007
Atelier_Yumia.exe+113235D: 4C 8D 0D 74 23 EB 00     - lea r9,[Atelier_Yumia.exe+1FE46D8]
Atelier_Yumia.exe+1132364: 41 B8 04 00 00 00        - mov r8d,00000004
Atelier_Yumia.exe+113236A: 48 8D 54 24 40           - lea rdx,[rsp+40]
Atelier_Yumia.exe+113236F: FF 50 78                 - call qword ptr [rax+78]
Atelier_Yumia.exe+1132372: 8B 83 A4 00 00 00        - mov eax,[rbx+000000A4]
Atelier_Yumia.exe+1132378: 89 44 24 40              - mov [rsp+40],eax
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>74</ID>
          <Description>"Method.2"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_SP2,$process,44 8B 81 E0 00 00 00 44) // should be unique
alloc(newmem,$1000,INJECT_GET_SP2)

label(code)
label(return)

newmem:
  mov [i_base_sp_addr], rcx
code:
  mov r8d,[rcx+000000E0]
  jmp return

INJECT_GET_SP2:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_SP2)

[DISABLE]

INJECT_GET_SP2:
  db 44 8B 81 E0 00 00 00

unregistersymbol(INJECT_GET_SP2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1131890

Atelier_Yumia.exe+1131883: 48 83 C4 20                    - add rsp,20
Atelier_Yumia.exe+1131887: 5F                             - pop rdi
Atelier_Yumia.exe+1131888: C3                             - ret 
Atelier_Yumia.exe+1131889: CC                             - int 3 
Atelier_Yumia.exe+113188A: CC                             - int 3 
Atelier_Yumia.exe+113188B: CC                             - int 3 
Atelier_Yumia.exe+113188C: CC                             - int 3 
Atelier_Yumia.exe+113188D: CC                             - int 3 
Atelier_Yumia.exe+113188E: CC                             - int 3 
Atelier_Yumia.exe+113188F: CC                             - int 3 
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1131890: 44 8B 81 E0 00 00 00           - mov r8d,[rcx+000000E0]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+1131897: 44 03 C2                       - add r8d,edx
Atelier_Yumia.exe+113189A: 41 81 F8 9F 86 01 00           - cmp r8d,0001869F
Atelier_Yumia.exe+11318A1: 7C 0B                          - jl Atelier_Yumia.exe+11318AE
Atelier_Yumia.exe+11318A3: C7 81 E0 00 00 00 9F 86 01 00  - mov [rcx+000000E0],0001869F
Atelier_Yumia.exe+11318AD: C3                             - ret 
Atelier_Yumia.exe+11318AE: 33 C0                          - xor eax,eax
Atelier_Yumia.exe+11318B0: 45 85 C0                       - test r8d,r8d
Atelier_Yumia.exe+11318B3: 41 0F 4F C0                    - cmovg eax,r8d
Atelier_Yumia.exe+11318B7: 89 81 E0 00 00 00              - mov [rcx+000000E0],eax
Atelier_Yumia.exe+11318BD: C3                             - ret 
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>75</ID>
          <Description>"SP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_sp_addr</Address>
          <Offsets>
            <Offset>A0</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>76</ID>
      <Description>"Get enhance piece amount after battle"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_GET_ENHANCE_PIECE,$process,41 8B 87 98 00 00 00 4C) // should be unique
alloc(newmem,$1000,INJECT_GET_ENHANCE_PIECE)

label(code)
label(return i_base_enh_piece_addr)

newmem:
  mov [i_base_enh_piece_addr], r15

code:
  mov eax,[r15+00000098]
  jmp return
align 10 cc
  i_base_enh_piece_addr:
  dq 0

INJECT_GET_ENHANCE_PIECE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_GET_ENHANCE_PIECE i_base_enh_piece_addr)

[DISABLE]

INJECT_GET_ENHANCE_PIECE:
  db 41 8B 87 98 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+11599F4

Atelier_Yumia.exe+11599C3: FF 50 78                 - call qword ptr [rax+78]
Atelier_Yumia.exe+11599C6: 41 0F B7 87 94 00 00 00  - movzx eax,word ptr [r15+00000094]
Atelier_Yumia.exe+11599CE: 4C 8D 0D 73 D1 E8 00     - lea r9,[Atelier_Yumia.exe+1FE6B48]
Atelier_Yumia.exe+11599D5: 48 8B 0E                 - mov rcx,[rsi]
Atelier_Yumia.exe+11599D8: 48 8D 55 D7              - lea rdx,[rbp-29]
Atelier_Yumia.exe+11599DC: 66 89 45 D7              - mov [rbp-29],ax
Atelier_Yumia.exe+11599E0: 41 B8 02 00 00 00        - mov r8d,00000002
Atelier_Yumia.exe+11599E6: C7 44 24 20 05 00 00 00  - mov [rsp+20],00000005
Atelier_Yumia.exe+11599EE: 48 8B 01                 - mov rax,[rcx]
Atelier_Yumia.exe+11599F1: FF 50 78                 - call qword ptr [rax+78]
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+11599F4: 41 8B 87 98 00 00 00     - mov eax,[r15+00000098]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+11599FB: 4C 8D 0D 5E D1 E8 00     - lea r9,[Atelier_Yumia.exe+1FE6B60]
Atelier_Yumia.exe+1159A02: 48 8B 0E                 - mov rcx,[rsi]
Atelier_Yumia.exe+1159A05: 48 8D 55 D7              - lea rdx,[rbp-29]
Atelier_Yumia.exe+1159A09: 89 45 D7                 - mov [rbp-29],eax
Atelier_Yumia.exe+1159A0C: 41 B8 04 00 00 00        - mov r8d,00000004
Atelier_Yumia.exe+1159A12: C7 44 24 20 07 00 00 00  - mov [rsp+20],00000007
Atelier_Yumia.exe+1159A1A: 48 8B 01                 - mov rax,[rcx]
Atelier_Yumia.exe+1159A1D: FF 50 78                 - call qword ptr [rax+78]
Atelier_Yumia.exe+1159A20: 41 8B 87 9C 00 00 00     - mov eax,[r15+0000009C]
Atelier_Yumia.exe+1159A27: 4C 8D 0D 42 D1 E8 00     - lea r9,[Atelier_Yumia.exe+1FE6B70]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>77</ID>
          <Description>"Piece"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>98</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>78</ID>
          <Description>"Prism"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>9C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>79</ID>
          <Description>"En"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>92</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>80</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>B0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>81</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>C8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>82</ID>
          <Description>"??"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF8080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_base_enh_piece_addr</Address>
          <Offsets>
            <Offset>E4</Offset>
          </Offsets>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>83</ID>
      <Description>"Recipe: set min. particles# (残響) after use"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : bbfox@htgtps://opencheaattables.com
}

[ENABLE]

aobscanmodule(INJECT_SET_MIN_MEMORY_PIECE,$process,89 81 E0 00 00 00 48 8B 0D) // should be unique
alloc(newmem,$1000,INJECT_SET_MIN_MEMORY_PIECE)

label(code)
label(return i_min_mem_piece)

newmem:
  cmp eax, [i_min_mem_piece]
  jae code
  mov eax, [i_min_mem_piece]

code:
  mov [rcx+000000E0],eax
  jmp return
align 10 cc
  i_min_mem_piece:
  dd 65

INJECT_SET_MIN_MEMORY_PIECE:
  jmp newmem
  nop
return:
registersymbol(INJECT_SET_MIN_MEMORY_PIECE i_min_mem_piece)

[DISABLE]

INJECT_SET_MIN_MEMORY_PIECE:
  db 89 81 E0 00 00 00

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+115A015

Atelier_Yumia.exe+1159FF0: 83 FA 0C                       - cmp edx,0C
Atelier_Yumia.exe+1159FF3: 77 3C                          - ja Atelier_Yumia.exe+115A031
Atelier_Yumia.exe+1159FF5: 48 63 C2                       - movsxd  rax,edx
Atelier_Yumia.exe+1159FF8: 48 8D 0C 81                    - lea rcx,[rcx+rax*4]
Atelier_Yumia.exe+1159FFC: 8B 81 E0 00 00 00              - mov eax,[rcx+000000E0]
Atelier_Yumia.exe+115A002: 44 3B C0                       - cmp r8d,eax
Atelier_Yumia.exe+115A005: 7E 0B                          - jle Atelier_Yumia.exe+115A012
Atelier_Yumia.exe+115A007: C7 81 E0 00 00 00 00 00 00 00  - mov [rcx+000000E0],00000000
Atelier_Yumia.exe+115A011: C3                             - ret 
Atelier_Yumia.exe+115A012: 41 2B C0                       - sub eax,r8d
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+115A015: 89 81 E0 00 00 00              - mov [rcx+000000E0],eax
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+115A01B: 48 8B 0D 3E EC 69 01           - mov rcx,[Atelier_Yumia.exe+27F8C60]
Atelier_Yumia.exe+115A022: 48 85 C9                       - test rcx,rcx
Atelier_Yumia.exe+115A025: 74 0A                          - je Atelier_Yumia.exe+115A031
Atelier_Yumia.exe+115A027: 48 8B 01                       - mov rax,[rcx]
Atelier_Yumia.exe+115A02A: 48 FF A0 48 01 00 00           - jmp qword ptr [rax+00000148]
Atelier_Yumia.exe+115A031: C3                             - ret 
Atelier_Yumia.exe+115A032: CC                             - int 3 
Atelier_Yumia.exe+115A033: CC                             - int 3 
Atelier_Yumia.exe+115A034: CC                             - int 3 
Atelier_Yumia.exe+115A035: CC                             - int 3 
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>84</ID>
          <Description>"Browse &amp; set"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Atelier_Yumia.exe
  Version: 
  Date   : 2025-03-21
  Author : $bbfox@https://opencheattables.com
}

[ENABLE]

aobscanmodule(INJECT_BROWSE_N_SET_MEM_PIECE,$process,8B 84 81 E0 00 00 00) // should be unique
alloc(newmem,$1000,INJECT_BROWSE_N_SET_MEM_PIECE)

label(code)
label(return)

newmem:
  push r15
  push r14
  lea r15,[rcx+rax*4+000000E0]
  mov r14d, [r15]
  cmp r14d, [i_min_mem_piece]
  jae endp
  mov r14d, [i_min_mem_piece]
  mov [r15], r14d

endp:
  pop r14
  pop r15

code:
  mov eax,[rcx+rax*4+000000E0]
  jmp return

INJECT_BROWSE_N_SET_MEM_PIECE:
  jmp newmem
  nop 2
return:
registersymbol(INJECT_BROWSE_N_SET_MEM_PIECE)

[DISABLE]

INJECT_BROWSE_N_SET_MEM_PIECE:
  db 8B 84 81 E0 00 00 00

unregistersymbol(INJECT_BROWSE_N_SET_MEM_PIECE)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Atelier_Yumia.exe+1159658

Atelier_Yumia.exe+115963D: E8 CE F2 E9 FF        - call Atelier_Yumia.exe+FF8910
Atelier_Yumia.exe+1159642: 8B C8                 - mov ecx,eax
Atelier_Yumia.exe+1159644: 48 83 C4 28           - add rsp,28
Atelier_Yumia.exe+1159648: E9 33 F1 E9 FF        - jmp Atelier_Yumia.exe+FF8780
Atelier_Yumia.exe+115964D: CC                    - int 3 
Atelier_Yumia.exe+115964E: CC                    - int 3 
Atelier_Yumia.exe+115964F: CC                    - int 3 
Atelier_Yumia.exe+1159650: 83 FA 0C              - cmp edx,0C
Atelier_Yumia.exe+1159653: 77 0B                 - ja Atelier_Yumia.exe+1159660
Atelier_Yumia.exe+1159655: 48 63 C2              - movsxd  rax,edx
// ---------- INJECTING HERE ----------
Atelier_Yumia.exe+1159658: 8B 84 81 E0 00 00 00  - mov eax,[rcx+rax*4+000000E0]
// ---------- DONE INJECTING  ----------
Atelier_Yumia.exe+115965F: C3                    - ret 
Atelier_Yumia.exe+1159660: 33 C0                 - xor eax,eax
Atelier_Yumia.exe+1159662: C3                    - ret 
Atelier_Yumia.exe+1159663: CC                    - int 3 
Atelier_Yumia.exe+1159664: CC                    - int 3 
Atelier_Yumia.exe+1159665: CC                    - int 3 
Atelier_Yumia.exe+1159666: CC                    - int 3 
Atelier_Yumia.exe+1159667: CC                    - int 3 
Atelier_Yumia.exe+1159668: CC                    - int 3 
Atelier_Yumia.exe+1159669: CC                    - int 3 
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>85</ID>
          <Description>"min. value"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>i_min_mem_piece</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>86</ID>
      <Description>"Atelier Yumia: The Alchemist of Memories &amp; the Envisioned Land  /  https://opencheattables.com"</Description>
      <Color>00A800</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>drop item Code :mov [rcx+08],dx</Description>
      <AddressString>Atelier_Yumia.exe+1105C8D</AddressString>
      <Before>
        <Byte>66</Byte>
        <Byte>89</Byte>
        <Byte>41</Byte>
        <Byte>08</Byte>
        <Byte>C3</Byte>
      </Before>
      <Actual>
        <Byte>66</Byte>
        <Byte>89</Byte>
        <Byte>51</Byte>
        <Byte>08</Byte>
      </Actual>
      <After>
        <Byte>C3</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
        <Byte>CC</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
  <LuaScript>--[[
[ENABLE]
{$lua}
if syntaxcheck then return end
]]--
-- **デバッグモードの設定 (デフォルト: 無効)**
ItemRecordSize = 134

local debugMode = false

-- AOBScanModule関数
if not AOBScanModule then
    function AOBScanModule(moduleName, signature, scanOptions)
        local baseAddr = nil
        local maxAddr = 0
        local modList

        synchronize(function()
            modList = enumModules()
        end)

        for _, mod in ipairs(modList) do
            if string.lower(mod.Name) == string.lower(moduleName) then
                baseAddr = mod.Address
                maxAddr = baseAddr + mod.Size
                break
            end
        end

        if not baseAddr then
            if debugMode then print("✖️ Error: Module " .. moduleName .. " not found!") end
            return nil
        end

        if debugMode then
            print(string.format("✔️ %s Base Address: 0x%X", moduleName, baseAddr))
            print(string.format("📐 Scanning Range: 0x%X - 0x%X", baseAddr, maxAddr))
        end

        local ms = createMemScan()

        synchronize(function()
            ms.firstScan(
                soExactValue,
                vtByteArray,
                nil,
                signature,
                nil,
                baseAddr,
                maxAddr,
                scanOptions or "+X+R",
                fsmNotAligned,
                "1",
                true,
                true,
                false,
                false
            )
        end)

        ms.waitTillDone()

        local results = createFoundList(ms)
        results.initialize()

        local addr
        synchronize(function()
            if results.getCount() &gt; 0 then
                addr = results[0]
            end
        end)

        if addr then
            if debugMode then print("🎯 AOB found at: 0x" .. addr) end
        else
            if debugMode then print("✖️ AOB not found in " .. moduleName) end
        end

        results.destroy()
        ms.destroy()
        return addr
    end
end

registerLuaFunctionHighlight('AOBScanModule')

--[[
test AOBScanModule()
local aob_addr_str = AOBScanModule("???.exe", "48 8B 05 ?? ?? ?? ?? 33 ED 48 8B 88", "+X+R")
if aob_addr_str then
    print("✔️ Final AOB Address: 0x" .. aob_addr_str)
else
    print("✖️ AOB not found in ???.exe")
end
]]--

-- Lua scripts that table checkbox will not be checked with "NO_ACTIVATE" in comment/script body
if not onMemRecPostExecute then
    function onMemRecPostExecute(memoryrecord, newState, succeeded)
        if memoryrecord.Type == vtAutoAssembler and memoryrecord.Script:find("NO_ACTIVATE") and newState and succeeded then
            synchronize(function()
                memoryrecord.disableWithoutExecute()
            end)
        end
    end
end

-- Memory record IDs now allowed to be 'locked'
IDs = {999999, 9999999}

-- Determine event trigger sequence
if not contains then
    function contains(table, val)
       for i = 1, #table do
          if table[i] == val then
             return true
          end
       end
       return false
    end
end

if not onMemRecPreExecute then
    function onMemRecPreExecute(memoryrecord, newstate)
        if contains(IDs, memoryrecord.ID) and newstate then
            synchronize(function()
                if not memoryrecord.OnActivate then
                    memoryrecord.OnActivate = function(memoryrecord, before, currentstate)
                        return false
                    end
                end
            end)
        end
    end
end

-- Utility Functions
-- Clear lua engine log
if not clearLuaLog then
    function clearLuaLog()
        synchronize(function()
          getLuaEngine().MenuItem5.doClick()
        end)
    end
end
registerLuaFunctionHighlight('clearLuaLog')

-- Close lua engine log
if not closeLuaEngine then
    function closeLuaEngine()
        synchronize(function()
          getLuaEngine().Close()
        end)
    end
end
registerLuaFunctionHighlight('closeLuaEngine')

-- Clear lua engine log &amp; close lua engine
if not closeLuaEngine2 then
    function closeLuaEngine2()
        synchronize(function()
          getLuaEngine().MenuItem5.doClick()
          getLuaEngine().Close()
        end)
    end
end
registerLuaFunctionHighlight('closeLuaEngine2')

synchronize(function() AddressList.Header.OnSectionClick = nil end)
--[[
[DISABLE]
{$lua}

if AOBScanModule then
    AOBScanModule = nil
end
if onMemRecPostExecute then
    onMemRecPostExecute = nil
end
if onMemRecPreExecute then
    onMemRecPreExecute = nil
end
if clearLuaLog then
    clearLuaLog = nil
end
if closeLuaEngine then
    closeLuaEngine = nil
end
if closeLuaEngine2 then
    closeLuaEngine2 = nil
end
]]--
</LuaScript>
</CheatTable>
