<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>2702</ID>
      <Description>"Sonic Adventure 2[ Steam]"</Description>
      <Options moHideChildren="1" moManualExpandCollapse="1"/>
      <Color>009700</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>2703</ID>
          <Description>"Youtube"</Description>
          <Color>208FFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://www.youtube.com/user/droelke");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>2704</ID>
          <Description>"OCT Profile"</Description>
          <Color>208FFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://opencheattables.com/memberlist.php?mode=viewprofile&amp;u=85");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>5394</ID>
          <Description>"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"</Description>
          <Options moManualExpandCollapse="1"/>
          <Color>0000FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>39</ID>
              <Description>"Table Author:  XxDaRealSlimballinxX"</Description>
              <Color>FC94B0</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>40</ID>
                  <Description>"Visit us today @ GBA Services!"</Description>
                  <Color>C080FF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>1337110746</ID>
                  <Description>"Discord  @ SlimBallin#1687"</Description>
                  <Color>008080</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>1337110747</ID>
              <Description>"[X] &lt;=== For Full Tool View"</Description>
              <Options moManualExpandCollapse="1"/>
              <Color>00FF00</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]
// Script Creaded By mgr.inz.Player On CE Forums
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>1337110748</ID>
                  <Description>"Cheats"</Description>
                  <Options moManualExpandCollapse="1"/>
                  <Color>FF00FF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>5393</ID>
                      <Description>"xxxxxxxxxxxxxxxxxx"</Description>
                      <Options moManualExpandCollapse="1"/>
                      <GroupHeader>1</GroupHeader>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>5</ID>
                          <Description>"Score"</Description>
                          <Color>00FFFF</Color>
                          <VariableType>Auto Assembler Script</VariableType>
                          <AssemblerScript>{ Game   : sonic2App.exe
  Version: 
  Date   : 2022-09-10
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(score,sonic2App.exe,A3 50 B0 74 01 89 41 18 C3) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
mov eax,#99999999
  mov [sonic2App.exe+134B050],eax
  jmp return

score:
  jmp code
return:
registersymbol(score)

[DISABLE]

score:
  db A3 50 B0 74 01

unregistersymbol(score)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: sonic2App.exe.text+4C310

sonic2App.exe.text+4C2E7: 8B 0D 50 B0 74 01     - mov ecx,[sonic2App.exe.data+E34050]
sonic2App.exe.text+4C2ED: 03 C1                 - add eax,ecx
sonic2App.exe.text+4C2EF: 3D FF E0 F5 05        - cmp eax,05F5E0FF
sonic2App.exe.text+4C2F4: 76 14                 - jna sonic2App.exe.text+4C30A
sonic2App.exe.text+4C2F6: 8B 15 30 A2 A5 01     - mov edx,[sonic2App.exe+165A230]
sonic2App.exe.text+4C2FC: B8 FF E0 F5 05        - mov eax,05F5E0FF
sonic2App.exe.text+4C301: A3 50 B0 74 01        - mov [sonic2App.exe.data+E34050],eax
sonic2App.exe.text+4C306: 89 42 18              - mov [edx+18],eax
sonic2App.exe.text+4C309: C3                    - ret 
sonic2App.exe.text+4C30A: 8B 0D 30 A2 A5 01     - mov ecx,[sonic2App.exe+165A230]
// ---------- INJECTING HERE ----------
sonic2App.exe.text+4C310: A3 50 B0 74 01        - mov [sonic2App.exe.data+E34050],eax
// ---------- DONE INJECTING  ----------
sonic2App.exe.text+4C315: 89 41 18              - mov [ecx+18],eax
sonic2App.exe.text+4C318: C3                    - ret 
sonic2App.exe.text+4C319: CC                    - int 3 
sonic2App.exe.text+4C31A: CC                    - int 3 
sonic2App.exe.text+4C31B: CC                    - int 3 
sonic2App.exe.text+4C31C: CC                    - int 3 
sonic2App.exe.text+4C31D: CC                    - int 3 
sonic2App.exe.text+4C31E: CC                    - int 3 
sonic2App.exe.text+4C31F: CC                    - int 3 
sonic2App.exe.text+4C320: 80 3D 02 B0 74 01 00  - cmp byte ptr [sonic2App.exe.data+E34002],00
}
</AssemblerScript>
                          <Hotkeys>
                            <Hotkey>
                              <Action>Toggle Activation</Action>
                              <Keys>
                                <Key>112</Key>
                              </Keys>
                              <ID>0</ID>
                            </Hotkey>
                          </Hotkeys>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>1</ID>
                              <Description>"No description"</Description>
                              <Color>FDF5B5</Color>
                              <VariableType>4 Bytes</VariableType>
                              <Address>sonic2App.exe+134B050</Address>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>10</ID>
                          <Description>"Rings x999"</Description>
                          <Color>00FFFF</Color>
                          <VariableType>Auto Assembler Script</VariableType>
                          <AssemblerScript>{ Game   : sonic2App.exe
  Version: 
  Date   : 2022-09-11
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Rin_s,sonic2App.exe,66 89 04 75 28 B0 74 01 7E) // should be unique
alloc(newmem,$20)

label(code)
label(return)

newmem:

code:
mov ax,999
  mov [esi*2+sonic2App.exe+134B028],ax
  jmp return

Rin_s:
  jmp code
  nop 3
return:
registersymbol(Rin_s)

[DISABLE]

Rin_s:
  db 66 89 04 75 28 B0 74 01

unregistersymbol(Rin_s)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: sonic2App.exe.text+4BE3D

sonic2App.exe.text+4BE16: 8B F0                    - mov esi,eax
sonic2App.exe.text+4BE18: 83 E6 01                 - and esi,01
sonic2App.exe.text+4BE1B: 0F B7 04 75 28 B0 74 01  - movzx eax,word ptr [esi*2+sonic2App.exe.data+E34028]
sonic2App.exe.text+4BE23: 0F B7 C8                 - movzx ecx,ax
sonic2App.exe.text+4BE26: 03 C2                    - add eax,edx
sonic2App.exe.text+4BE28: BA E7 03 00 00           - mov edx,000003E7
sonic2App.exe.text+4BE2D: 66 3B C2                 - cmp ax,dx
sonic2App.exe.text+4BE30: 57                       - push edi
sonic2App.exe.text+4BE31: C7 44 24 10 00 00 00 00  - mov [esp+10],00000000
sonic2App.exe.text+4BE39: 89 4C 24 24              - mov [esp+24],ecx
// ---------- INJECTING HERE ----------
sonic2App.exe.text+4BE3D: 66 89 04 75 28 B0 74 01  - mov [esi*2+sonic2App.exe.data+E34028],ax
// ---------- DONE INJECTING  ----------
sonic2App.exe.text+4BE45: 7E 0C                    - jle sonic2App.exe.text+4BE53
sonic2App.exe.text+4BE47: 8B C2                    - mov eax,edx
sonic2App.exe.text+4BE49: 66 89 04 75 28 B0 74 01  - mov [esi*2+sonic2App.exe.data+E34028],ax
sonic2App.exe.text+4BE51: EB 0F                    - jmp sonic2App.exe.text+4BE62
sonic2App.exe.text+4BE53: 66 85 C0                 - test ax,ax
sonic2App.exe.text+4BE56: 7D 0A                    - jnl sonic2App.exe.text+4BE62
sonic2App.exe.text+4BE58: 33 D2                    - xor edx,edx
sonic2App.exe.text+4BE5A: 66 89 14 75 28 B0 74 01  - mov [esi*2+sonic2App.exe.data+E34028],dx
sonic2App.exe.text+4BE62: 0F BF C9                 - movsx ecx,cx
sonic2App.exe.text+4BE65: B8 1F 85 EB 51           - mov eax,51EB851F
}
</AssemblerScript>
                          <Hotkeys>
                            <Hotkey>
                              <Action>Toggle Activation</Action>
                              <Keys>
                                <Key>112</Key>
                              </Keys>
                              <ID>0</ID>
                            </Hotkey>
                          </Hotkeys>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>11</ID>
                              <Description>"No Description"</Description>
                              <Color>FDF5B5</Color>
                              <VariableType>2 Bytes</VariableType>
                              <Address>0174B028</Address>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>13</ID>
                          <Description>"Lives"</Description>
                          <Color>00FFFF</Color>
                          <VariableType>Auto Assembler Script</VariableType>
                          <AssemblerScript>{ Game   : sonic2App.exe
  Version: 
  Date   : 2022-09-11
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(liv_s,sonic2App.exe,A3 44 B6 73 01) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
mov eax,#99
  mov [sonic2App.exe+133B644],eax
  jmp return

liv_s:
  jmp code
return:
registersymbol(liv_s)

[DISABLE]

liv_s:
  db A3 44 B6 73 01

unregistersymbol(liv_s)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: sonic2App.exe.text+4D718

sonic2App.exe.text+4D6EA: 6A 01                 - push 01
sonic2App.exe.text+4D6EC: 8D 44 24 1C           - lea eax,[esp+1C]
sonic2App.exe.text+4D6F0: D9 5C 24 4C           - fstp dword ptr [esp+4C]
sonic2App.exe.text+4D6F4: D8 44 24 64           - fadd dword ptr [esp+64]
sonic2App.exe.text+4D6F8: D9 5C 24 64           - fstp dword ptr [esp+64]
sonic2App.exe.text+4D6FC: E8 AF 0F 33 00        - call sonic2App.exe.text+37E6B0
sonic2App.exe.text+4D701: DD 44 24 14           - fld qword ptr [esp+14]
sonic2App.exe.text+4D705: DC 05 A0 6C 90 00     - fadd qword ptr [sonic2App.exe.rdata+93CA0]
sonic2App.exe.text+4D70B: 0F BF 05 24 B0 74 01  - movsx eax,word ptr [sonic2App.exe.data+E34024]
sonic2App.exe.text+4D712: D9 1D 48 B6 73 01     - fstp dword ptr [sonic2App.exe.data+E24648]
// ---------- INJECTING HERE ----------
sonic2App.exe.text+4D718: A3 44 B6 73 01        - mov [sonic2App.exe.data+E24644],eax
// ---------- DONE INJECTING  ----------
sonic2App.exe.text+4D71D: 83 C4 04              - add esp,04
sonic2App.exe.text+4D720: B8 3C B6 73 01        - mov eax,sonic2App.exe.data+E2463C
sonic2App.exe.text+4D725: 5E                    - pop esi
sonic2App.exe.text+4D726: 83 C4 78              - add esp,78
sonic2App.exe.text+4D729: E9 D2 03 00 00        - jmp sonic2App.exe.text+4DB00
sonic2App.exe.text+4D72E: 5E                    - pop esi
sonic2App.exe.text+4D72F: 83 C4 78              - add esp,78
sonic2App.exe.text+4D732: C3                    - ret 
sonic2App.exe.text+4D733: CC                    - int 3 
sonic2App.exe.text+4D734: CC                    - int 3 
}
</AssemblerScript>
                          <Hotkeys>
                            <Hotkey>
                              <Action>Toggle Activation</Action>
                              <Keys>
                                <Key>112</Key>
                              </Keys>
                              <ID>0</ID>
                              <ActivateSound TTS="EN">The Peter is Back!</ActivateSound>
                            </Hotkey>
                          </Hotkeys>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>12</ID>
                              <Description>"No description"</Description>
                              <Color>FDF5B5</Color>
                              <VariableType>4 Bytes</VariableType>
                              <Address>sonic2App.exe+133B644</Address>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Code :mov ecx,[sonic2App.exe+165A230]</Description>
      <AddressString>sonic2App.exe+4D30A</AddressString>
      <Before>
        <Byte>01</Byte>
        <Byte>89</Byte>
        <Byte>42</Byte>
        <Byte>18</Byte>
        <Byte>C3</Byte>
      </Before>
      <Actual>
        <Byte>8B</Byte>
        <Byte>0D</Byte>
        <Byte>30</Byte>
        <Byte>A2</Byte>
        <Byte>A5</Byte>
        <Byte>01</Byte>
      </Actual>
      <After>
        <Byte>A3</Byte>
        <Byte>50</Byte>
        <Byte>B0</Byte>
        <Byte>74</Byte>
        <Byte>01</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Change of inc word ptr [ebx+06]</Description>
      <AddressString>sonic2App.exe+2CD39F</AddressString>
      <Before>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>D9</Byte>
        <Byte>40</Byte>
        <Byte>04</Byte>
      </Before>
      <Actual>
        <Byte>66</Byte>
        <Byte>FF</Byte>
        <Byte>43</Byte>
        <Byte>06</Byte>
      </Actual>
      <After>
        <Byte>D9</Byte>
        <Byte>E1</Byte>
        <Byte>D9</Byte>
        <Byte>5C</Byte>
        <Byte>24</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
