<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>1337110750</ID>
      <Description>"Sonic Mania [Epic Edition]"</Description>
      <Options moManualExpandCollapse="1"/>
      <Color>00FFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>13</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>1337110749</ID>
                      <Description>"xxxxxxxxxxxxxxxxxxxxxxx"</Description>
                      <Options moManualExpandCollapse="1"/>
                      <GroupHeader>1</GroupHeader>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>51</ID>
                          <Description>"xxxxxxx  Player Cheats  xxxxxxxxxxxxxxxx"</Description>
                          <Options moManualExpandCollapse="1"/>
                          <Color>FF00FF</Color>
                          <GroupHeader>1</GroupHeader>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>5</ID>
                              <Description>"Lives x 99"</Description>
                              <VariableType>Auto Assembler Script</VariableType>
                              <AssemblerScript>{ Game   : SonicMania.exe
  Version: 
  Date   : 2022-09-09
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Li_ves,SonicMania.exe,89 86 D0 00 00 00 B9 0D 00 00 00 E8 36) // should be unique
alloc(newmem,$20)

label(code)
label(return)

newmem:

code:
mov eax,#99
  mov [esi+D0],eax
  jmp return

Li_ves:
  jmp code
  nop
return:
registersymbol(Li_ves)

[DISABLE]

Li_ves:
  db 89 86 D0 00 00 00

unregistersymbol(Li_ves)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SonicMania.exe.text+C363A

SonicMania.exe.text+C361D: A1 28 02 BE 00     - mov eax,[SonicMania.exe+A60228]
SonicMania.exe.text+C3622: 8B 00              - mov eax,[eax]
SonicMania.exe.text+C3624: 83 F8 02           - cmp eax,02
SonicMania.exe.text+C3627: 74 27              - je SonicMania.exe.text+C3650
SonicMania.exe.text+C3629: 83 F8 01           - cmp eax,01
SonicMania.exe.text+C362C: 74 22              - je SonicMania.exe.text+C3650
SonicMania.exe.text+C362E: 8B 86 D0 00 00 00  - mov eax,[esi+000000D0]
SonicMania.exe.text+C3634: 83 F8 63           - cmp eax,63
SonicMania.exe.text+C3637: 7D 07              - jnl SonicMania.exe.text+C3640
SonicMania.exe.text+C3639: 40                 - inc eax
// ---------- INJECTING HERE ----------
SonicMania.exe.text+C363A: 89 86 D0 00 00 00  - mov [esi+000000D0],eax
// ---------- DONE INJECTING  ----------
SonicMania.exe.text+C3640: B9 0D 00 00 00     - mov ecx,0000000D
SonicMania.exe.text+C3645: E8 36 E7 F3 FF     - call SonicMania.exe.text+1D80
SonicMania.exe.text+C364A: 8B 8E C8 00 00 00  - mov ecx,[esi+000000C8]
SonicMania.exe.text+C3650: 8D 41 64           - lea eax,[ecx+64]
SonicMania.exe.text+C3653: B9 E8 03 00 00     - mov ecx,000003E8
SonicMania.exe.text+C3658: 3D 2C 01 00 00     - cmp eax,0000012C
SonicMania.exe.text+C365D: 0F 4F C1           - cmovg eax,ecx
SonicMania.exe.text+C3660: 89 86 C8 00 00 00  - mov [esi+000000C8],eax
SonicMania.exe.text+C3666: 83 7D 08 01        - cmp dword ptr [ebp+08],01
SonicMania.exe.text+C366A: 5E                 - pop esi
}
</AssemblerScript>
                            </CheatEntry>
                            <CheatEntry>
                              <ID>7</ID>
                              <Description>"Rings x 999"</Description>
                              <VariableType>Auto Assembler Script</VariableType>
                              <AssemblerScript>{ Game   : SonicMania.exe
  Version: 
  Date   : 2022-09-09
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(coi_n,SonicMania.exe,01 96 C4 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
mov edx,#999
  add [esi+000000C4],edx
  jmp return

coi_n:
  jmp code
  nop
return:
registersymbol(coi_n)

[DISABLE]

coi_n:
  db 01 96 C4 00 00 00

unregistersymbol(coi_n)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SonicMania.exe.text+C35DF

SonicMania.exe.text+C35BF: CC                             - int 3 
SonicMania.exe.text+C35C0: 55                             - push ebp
SonicMania.exe.text+C35C1: 8B EC                          - mov ebp,esp
SonicMania.exe.text+C35C3: 56                             - push esi
SonicMania.exe.text+C35C4: 8B F1                          - mov esi,ecx
SonicMania.exe.text+C35C6: 8B 0D 28 02 BE 00              - mov ecx,[SonicMania.exe+A60228]
SonicMania.exe.text+C35CC: 83 39 03                       - cmp dword ptr [ecx],03
SonicMania.exe.text+C35CF: 75 0E                          - jne SonicMania.exe.text+C35DF
SonicMania.exe.text+C35D1: 0F B7 86 B6 00 00 00           - movzx eax,word ptr [esi+000000B6]
SonicMania.exe.text+C35D8: 01 94 81 D4 11 03 00           - add [ecx+eax*4+000311D4],edx
// ---------- INJECTING HERE ----------
SonicMania.exe.text+C35DF: 01 96 C4 00 00 00              - add [esi+000000C4],edx
// ---------- DONE INJECTING  ----------
SonicMania.exe.text+C35E5: 8B 86 C4 00 00 00              - mov eax,[esi+000000C4]
SonicMania.exe.text+C35EB: 3D E7 03 00 00                 - cmp eax,000003E7
SonicMania.exe.text+C35F0: 7E 11                          - jle SonicMania.exe.text+C3603
SonicMania.exe.text+C35F2: C7 86 C4 00 00 00 E7 03 00 00  - mov [esi+000000C4],000003E7
SonicMania.exe.text+C35FC: B8 E7 03 00 00                 - mov eax,000003E7
SonicMania.exe.text+C3601: EB 10                          - jmp SonicMania.exe.text+C3613
SonicMania.exe.text+C3603: 85 C0                          - test eax,eax
SonicMania.exe.text+C3605: 79 0C                          - jns SonicMania.exe.text+C3613
SonicMania.exe.text+C3607: C7 86 C4 00 00 00 00 00 00 00  - mov [esi+000000C4],00000000
SonicMania.exe.text+C3611: 33 C0                          - xor eax,eax
}
</AssemblerScript>
                            </CheatEntry>
                            <CheatEntry>
                              <ID>9</ID>
                              <Description>"Score "</Description>
                              <VariableType>Auto Assembler Script</VariableType>
                              <AssemblerScript>{ Game   : SonicMania.exe
  Version: 
  Date   : 2022-09-09
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Sc_re,SonicMania.exe,89 96 D4 00 00 00 81) // should be unique
alloc(newmem,$20)

label(code)
label(return)

newmem:

code:
mov edx,#180041337
  mov [esi+000000D4],edx
  jmp return

Sc_re:
  jmp code
  nop
return:
registersymbol(Sc_re)

[DISABLE]

Sc_re:
  db 89 96 D4 00 00 00

unregistersymbol(Sc_re)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SonicMania.exe.text+C3714

SonicMania.exe.text+C36F3: 57                             - push edi
SonicMania.exe.text+C36F4: 8B FA                          - mov edi,edx
SonicMania.exe.text+C36F6: 83 BE 34 01 00 00 01           - cmp dword ptr [esi+00000134],01
SonicMania.exe.text+C36FD: 75 0D                          - jne SonicMania.exe.text+C370C
SonicMania.exe.text+C36FF: 6A 00                          - push 00
SonicMania.exe.text+C3701: FF 15 4C 02 BE 00              - call dword ptr [SonicMania.exe+A6024C]
SonicMania.exe.text+C3707: 83 C4 04                       - add esp,04
SonicMania.exe.text+C370A: 8B F0                          - mov esi,eax
SonicMania.exe.text+C370C: 8B 96 D4 00 00 00              - mov edx,[esi+000000D4]
SonicMania.exe.text+C3712: 03 D7                          - add edx,edi
// ---------- INJECTING HERE ----------
SonicMania.exe.text+C3714: 89 96 D4 00 00 00              - mov [esi+000000D4],edx
// ---------- DONE INJECTING  ----------
SonicMania.exe.text+C371A: 81 FA 7F 96 98 00              - cmp edx,SonicMania.exe+80967F
SonicMania.exe.text+C3720: 7E 0F                          - jle SonicMania.exe.text+C3731
SonicMania.exe.text+C3722: C7 86 D4 00 00 00 7F 96 98 00  - mov [esi+000000D4],SonicMania.exe+80967F
SonicMania.exe.text+C372C: BA 7F 96 98 00                 - mov edx,SonicMania.exe+80967F
SonicMania.exe.text+C3731: 8B 8E D8 00 00 00              - mov ecx,[esi+000000D8]
SonicMania.exe.text+C3737: 8B FA                          - mov edi,edx
SonicMania.exe.text+C3739: 3B D1                          - cmp edx,ecx
SonicMania.exe.text+C373B: 7C 55                          - jl SonicMania.exe.text+C3792
SonicMania.exe.text+C373D: A1 28 02 BE 00                 - mov eax,[SonicMania.exe+A60228]
SonicMania.exe.text+C3742: 53                             - push ebx
}
</AssemblerScript>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>52</ID>
                          <Description>"xxxxxxxxxxxx World xxxxxxxxxxxx"</Description>
                          <Options moManualExpandCollapse="1"/>
                          <Color>00FFFF</Color>
                          <GroupHeader>1</GroupHeader>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>45</ID>
                              <Description>"Timer Never hits minutes"</Description>
                              <VariableType>Auto Assembler Script</VariableType>
                              <AssemblerScript>{ Game   : SonicMania.exe
  Version: 
  Date   : 2022-09-09
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJECT,SonicMania.exe,A2 18 C1 B8 00) // should be unique
alloc(newmem,$20)

label(code)
label(return)

newmem:

code:
mov al,#0
  mov [SonicMania.exe+A0C118],al
  mov [SonicMania.exe+A0C11A],al
  jmp return

INJECT:
  jmp code
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
  db A2 18 C1 B8 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SonicMania.exe.text+1ED61F

SonicMania.exe.text+1ED601: 0F B6 C1        - movzx eax,cl
SonicMania.exe.text+1ED604: 0F 47 C2        - cmova eax,edx
SonicMania.exe.text+1ED607: A2 1A C1 B8 00  - mov [SonicMania.exe+A0C11A],al
SonicMania.exe.text+1ED60C: B8 89 88 88 88  - mov eax,88888889
SonicMania.exe.text+1ED611: F7 EE           - imul esi
SonicMania.exe.text+1ED613: 03 D6           - add edx,esi
SonicMania.exe.text+1ED615: C1 FA 05        - sar edx,05
SonicMania.exe.text+1ED618: 8B C2           - mov eax,edx
SonicMania.exe.text+1ED61A: C1 E8 1F        - shr eax,1F
SonicMania.exe.text+1ED61D: 03 C2           - add eax,edx
// ---------- INJECTING HERE ----------
SonicMania.exe.text+1ED61F: A2 18 C1 B8 00  - mov [SonicMania.exe+A0C118],al
// ---------- DONE INJECTING  ----------
SonicMania.exe.text+1ED624: 5E              - pop esi
SonicMania.exe.text+1ED625: C3              - ret 
SonicMania.exe.text+1ED626: CC              - int 3 
SonicMania.exe.text+1ED627: CC              - int 3 
SonicMania.exe.text+1ED628: CC              - int 3 
SonicMania.exe.text+1ED629: CC              - int 3 
SonicMania.exe.text+1ED62A: CC              - int 3 
SonicMania.exe.text+1ED62B: CC              - int 3 
SonicMania.exe.text+1ED62C: CC              - int 3 
SonicMania.exe.text+1ED62D: CC              - int 3 
}
</AssemblerScript>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>50</ID>
                          <Description>"xxxxxxx Ring Challege [Blue Balls] xxxxxxx    Grab 1 and DONE!"</Description>
                          <Options moManualExpandCollapse="1"/>
                          <Color>FFFF00</Color>
                          <GroupHeader>1</GroupHeader>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>49</ID>
                              <Description>"Blue Ball Challange "</Description>
                              <VariableType>Auto Assembler Script</VariableType>
                              <AssemblerScript>{ Game   : SonicMania.exe
  Version: 
  Date   : 2022-09-09
  Author : slimb

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(Blue_bal,SonicMania.exe,F1 FF FF A1 84 F5 BF 00) // should be unique
alloc(newmem,$20)

label(code)
label(return)

newmem:

code:
  mov eax,[SonicMania.exe+A7F584]
  mov [eax+8],#1
  jmp return

Blue_bal+03:
  jmp code
return:
registersymbol(Blue_bal)

[DISABLE]

Blue_bal+03:
  db A1 84 F5 BF 00

unregistersymbol(Blue_bal)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: SonicMania.exe.text+983D3

SonicMania.exe.text+98397: 89 4C 24 24                    - mov [esp+24],ecx
SonicMania.exe.text+9839B: 83 F8 12                       - cmp eax,12
SonicMania.exe.text+9839E: 0F 87 69 04 00 00              - ja SonicMania.exe.text+9880D
SonicMania.exe.text+983A4: 0F B6 80 50 98 21 00           - movzx eax,byte ptr [eax+SonicMania.exe.text+98850]
SonicMania.exe.text+983AB: FF 24 85 30 98 21 00           - jmp dword ptr [eax*4+SonicMania.exe.text+98830]
SonicMania.exe.text+983B2: 81 BF 94 00 00 00 80 00 00 00  - cmp [edi+00000094],00000080
SonicMania.exe.text+983BC: 0F 8E 4B 04 00 00              - jng SonicMania.exe.text+9880D
SonicMania.exe.text+983C2: 89 9F B4 00 00 00              - mov [edi+000000B4],ebx
SonicMania.exe.text+983C8: 89 B7 B8 00 00 00              - mov [edi+000000B8],esi
SonicMania.exe.text+983CE: E8 9D F1 FF FF                 - call SonicMania.exe.text+97570
// ---------- INJECTING HERE ----------
SonicMania.exe.text+983D3: A1 84 F5 BF 00                 - mov eax,[SonicMania.exe+A7F584]
// ---------- DONE INJECTING  ----------
SonicMania.exe.text+983D8: FF 48 08                       - dec [eax+08]
SonicMania.exe.text+983DB: 83 BF C0 00 00 00 00           - cmp dword ptr [edi+000000C0],00
SonicMania.exe.text+983E2: 75 2B                          - jne SonicMania.exe.text+9840F
SonicMania.exe.text+983E4: A1 A0 F3 BF 00                 - mov eax,[SonicMania.exe+A7F3A0]
SonicMania.exe.text+983E9: 56                             - push esi
SonicMania.exe.text+983EA: 53                             - push ebx
SonicMania.exe.text+983EB: 6A 01                          - push 01
SonicMania.exe.text+983ED: 0F B7 00                       - movzx eax,word ptr [eax]
SonicMania.exe.text+983F0: 50                             - push eax
SonicMania.exe.text+983F1: FF 15 68 02 BE 00              - call dword ptr [SonicMania.exe+A60268]
}
</AssemblerScript>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>coins</Description>
      <AddressString>SonicMania.exe+C2508</AddressString>
      <Before>
        <Byte>80</Byte>
        <Byte>F0</Byte>
        <Byte>09</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>89</Byte>
        <Byte>83</Byte>
        <Byte>C4</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>A1</Byte>
        <Byte>E0</Byte>
        <Byte>F2</Byte>
        <Byte>BF</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
    <CodeEntry>
      <Description>Blue ball challange</Description>
      <AddressString>SonicMania.exe+993D8</AddressString>
      <Before>
        <Byte>E9</Byte>
        <Byte>28</Byte>
        <Byte>6C</Byte>
        <Byte>FA</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>FF</Byte>
        <Byte>48</Byte>
        <Byte>08</Byte>
      </Actual>
      <After>
        <Byte>83</Byte>
        <Byte>BF</Byte>
        <Byte>C0</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <UserdefinedSymbols/>
</CheatTable>
