<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>47</ID>
      <Description>"Warning: Wait until the main menu has loaded before enabling."</Description>
      <Options moDeactivateChildrenAsWell="1"/>
      <Color>808080</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>53</ID>
          <Description>"ITORAH"</Description>
          <Options moHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

{$lua}
  LaunchMonoDataCollector()
{$asm}

define(One,GrimbartTales.Platformer2D.UI.HealthStaminaBar:UpdateImageSizes+5c)
define(Two,PlayTime:Update+b)
define(Three,GrimbartTales.Platformer2D.Items.ItemBag:GetCount+a3)
define(Four,GrimbartTales.Platformer2D.DamageSystem.LifePoints:DealDamage+4b1)

alloc(newmemOne,$1000,One)
alloc(newmemTwo,$1000,Two)
alloc(newmemThree,$1000,Three)
alloc(newmemFour,$1000,Four)
alloc(Five,8)
alloc(Six,8)
alloc(Seven,8)
alloc(Eight,1)
alloc(Nine,1)

registersymbol(One)
registersymbol(Two)
registersymbol(Three)
registersymbol(Four)
registersymbol(Five)
registersymbol(Six)
registersymbol(Seven)
registersymbol(Eight)
registersymbol(Nine)

label(codeOne)
label(codeTwo)
label(codeThree)
label(codeFour)
label(codeFive)
label(codeSix)
label(codeSeven)
label(returnOne)
label(returnTwo)
label(returnThree)
label(returnFour)

Five:
  dq 0

Six:
  dq 0

Seven:
  dq 0

Eight:
  db 0

Nine:
  db 0

newmemOne:

codeOne:
  mov [Five],rax
  movss xmm1,[rax+60]
  jmp returnOne

One:
  jmp newmemOne

returnOne:

newmemTwo:

codeTwo:
  mov [Six],rsi
  movss xmm0,[rsi+20]
  jmp returnTwo

Two:
  jmp newmemTwo

returnTwo:

newmemThree:

codeThree:
  mov [Seven],rax
  movsxd  rcx,dword ptr [rax+20]
  mov rax,rbx
  jmp returnThree

Three:
  jmp newmemThree
  nop 2

returnThree:

newmemFour:
  cmp [rax+18],0
  je codeFour
  cmp byte ptr [Eight],1
  je codeFive
  jmp codeSeven

codeFour:
  cmp byte ptr [Nine],1
  je codeSix
  jmp codeSeven

codeFive:
  movss xmm5,[rax+60]
  movss [rax+64],xmm5
  jmp returnFour

codeSix:
  xorps xmm5,xmm5
  movss [rax+64],xmm5
  jmp returnFour

codeSeven:
  movss [rax+64],xmm5
  jmp returnFour

Four:
  jmp newmemFour

returnFour:

{$lua}
  if not clockTimer then
  clockTimer = createTimer(nil,false)
  clockTimer.Interval = 1000

  lastEdit = ""
  timeValue = nil
  displayBuffer = allocateMemory(64)

  unregisterSymbol("Ten")
  registerSymbol("Ten",displayBuffer,true)

  local function resolveTimeValue()
  local base = getAddressSafe("Six")
  if base then
  local ptr = readPointer(base)
  if ptr and ptr ~= 0 then
  return ptr + 0x20
  end
  end
  return nil
  end

  clockTimer.OnTimer = function()
  timeValue = resolveTimeValue()

  local display = "Waiting"
  local currentValue = readString(displayBuffer) or ""

  if currentValue ~= "" and currentValue ~= lastEdit and timeValue and timeValue ~= 0 then
  local parsedNumbers = {}
  for n in currentValue:gmatch("%d+") do
  table.insert(parsedNumbers,tonumber(n))
  end

  local timeTotal
  if #parsedNumbers == 3 then
  local h,m,s = parsedNumbers[1],parsedNumbers[2],parsedNumbers[3]
  timeTotal = (h * 3600 + m * 60 + s)
  elseif #parsedNumbers == 2 then
  local m,s = parsedNumbers[1],parsedNumbers[2]
  timeTotal = (m * 60 + s)
  elseif #parsedNumbers == 4 then
  local h,m,s,cs = parsedNumbers[1],parsedNumbers[2],parsedNumbers[3],parsedNumbers[4]
  timeTotal = (h * 3600 + m * 60 + s) + (cs / 100.0)
  else
  timeTotal = nil
  end

  if timeTotal then
  if timeTotal &gt; 359999.99 then timeTotal = 359999.99 end
  writeFloat(timeValue,timeTotal)
  end

  lastEdit = currentValue
  end

  local stored = (timeValue and timeValue ~= 0) and readFloat(timeValue) or nil
  local v = stored or nil

  for i = 0,63 do writeBytes(displayBuffer + i,0) end

  if not v or v &lt; 0 or v ~= v then
  display = "Waiting"
  else
  local totalSeconds = math.floor(v + 0.5)

  if totalSeconds &gt; (99*3600 + 59*60 + 59) then
  totalSeconds = 99*3600 + 59*60 + 59
  end

  local hours = math.floor(totalSeconds / 3600)
  local minutes = math.floor((totalSeconds % 3600) / 60)
  local seconds = totalSeconds % 60

  if hours &lt; 10 then
  display = string.format("%d:%02d:%02d",hours,minutes,seconds)
  else
  display = string.format("%02d:%02d:%02d",hours,minutes,seconds)
  end
  end

  writeString(displayBuffer,display,false)
  lastEdit = display
  end

  clockTimer.Enabled = true
  end
{$asm}

[DISABLE]

One:
  db F3 0F 10 48 60

Two:
  db F3 0F 10 46 20

Three:
  db 48 63 48 20 48 8B C3

Four:
  db F3 0F 11 68 64

unregistersymbol(One)
unregistersymbol(Two)
unregistersymbol(Three)
unregistersymbol(Four)
unregistersymbol(Five)
unregistersymbol(Six)
unregistersymbol(Seven)
unregistersymbol(Eight)
unregistersymbol(Nine)

dealloc(newmemOne)
dealloc(newmemTwo)
dealloc(newmemThree)
dealloc(newmemFour)
dealloc(Five)
dealloc(Six)
dealloc(Seven)
dealloc(Eight)
dealloc(Nine)

{$lua}
  if clockTimer then
  clockTimer.Enabled = false
  clockTimer.destroy()
  clockTimer = nil
  end

  if displayBuffer then
  unregisterSymbol("Ten")
  deAlloc(displayBuffer)
  displayBuffer = nil
  end

  timeValue = nil
  lastEdit = nil
{$asm}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>54</ID>
              <Description>"==== General ===="</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <Color>C080FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"Infinite Health"</Description>
                  <Color>C08000</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]

Eight:
  db 1

[DISABLE]

Eight:
  db 0
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"Infinite Healing Power"</Description>
                  <Color>C08000</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]

define(Eleven,HealCharges:TryHeal+79)
alloc(newmem,$1000,Eleven)

label(code)
label(return)

newmem:

code:
  mov eax,[rsi+34]
  mov [rsi+38],eax
  mov rax,[rsi+18]
  jmp return

Eleven:
  jmp newmem
  nop 2

return:
registersymbol(Eleven)

[DISABLE]

Eleven:
  db 89 46 38 48 8B 46 18

unregistersymbol(Eleven)
dealloc(newmem)
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"Infinite Stamina"</Description>
                  <Color>C08000</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]

define(Twelve,GrimbartTales.Platformer2D.CharacterController.Stamina:TryUse+103)
alloc(newmem,$1000,Twelve)

label(code)
label(return)

newmem:

code:
  movss xmm5,[rsi+34]
  movss [rsi+38],xmm5
  jmp return

Twelve:
  jmp newmem

return:
registersymbol(Twelve)

[DISABLE]

Twelve:
  db F3 0F 11 6E 38

unregistersymbol(Twelve)
dealloc(newmem)
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"Untouchable"</Description>
                  <Color>C08000</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]

{$lua}
  if untouchable == nil then
  untouchable = createTimer(nil,false)
  untouchable.Interval = 1000
  untouchable.OnTimer = function()
  local addr = getAddressSafe("[Five]+6D")
  if addr ~= nil then
  writeByte(addr,1)
  end
  end
  untouchable.setEnabled(true)
  end
{$asm}

[DISABLE]

{$lua}
  if untouchable ~= nil then
  local addr = getAddressSafe("[Five]+6D")
  if addr ~= nil then
  writeByte(addr,0)
  end
  untouchable.setEnabled(false)
  untouchable.destroy()
  untouchable = nil
  end
{$asm}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>59</ID>
                  <Description>"Quick Kills"</Description>
                  <Color>C08000</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]

Nine:
  db 1

[DISABLE]

Nine:
  db 0
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>60</ID>
                  <Description>"⬆Don’t use on bosses, or they won’t change phases."</Description>
                  <Color>C0C0C0</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"==== Extras ====="</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <Color>C080FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>62</ID>
                  <Description>"Time"</Description>
                  <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>String</VariableType>
                  <Length>8</Length>
                  <Unicode>0</Unicode>
                  <CodePage>0</CodePage>
                  <ZeroTerminate>1</ZeroTerminate>
                  <Address>Ten</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>63</ID>
                  <Description>"Shards"</Description>
                  <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <Color>C08000</Color>
                  <VariableType>4 Bytes</VariableType>
                  <Address>[Seven]+20</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Created by: Outrun
https://opencheattables.com
</Comments>
</CheatTable>
