<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>3721</ID>
      <Description>"==== General ===="</Description>
      <Options moDeactivateChildrenAsWell="1"/>
      <Color>C080FF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>3290</ID>
          <Description>"Freeze Time"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscanmodule(One,soniccd.exe,A2 FB 4E ?? ?? 0F)
alloc(Two,5)

registersymbol(One)
registersymbol(Two)

Two:
  readmem(One,5)

One:
  db 90 90 90 90 90

[DISABLE]

One:
  readmem(Two,5)

unregistersymbol(One)
unregistersymbol(Two)

dealloc(Two)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3746</ID>
          <Description>"Keep Rings"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscanmodule(Three,soniccd.exe,89 8A F0 D6 ?? ?? E9)

alloc(newmem,$1000)
alloc(Four,6)

registersymbol(Three)
registersymbol(Four)

label(code)
label(return)

Four:
  readmem(Three,6)

newmem:
  cmp dword ptr [esp+94],1
  jne code
  cmp byte ptr [soniccd.exe+2B8040],1
  jne code
  jmp return

code:
  mov [edx+soniccd.exe+C3D6F0],ecx
  jmp return

Three:
  jmp newmem
  nop

return:

[DISABLE]

Three:
  readmem(Four,6)

unregistersymbol(Three)
unregistersymbol(Four)

dealloc(newmem)
dealloc(Four)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3747</ID>
          <Description>"⬆Doesn’t work in Special Stages."</Description>
          <Color>C0C0C0</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>3737</ID>
          <Description>"Infinite Air"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

{$lua}
  if underwater == nil then
  local addr = getAddress("soniccd.exe+C070A0")
  underwater = createTimer(nil,false)
  underwater.Interval = 1000
  underwater.OnTimer = function()
  writeSmallInteger(addr,0)
  end
  underwater.setEnabled(true)
  end
{$asm}

[DISABLE]

{$lua}
  if underwater ~= nil then
  underwater.setEnabled(false)
  underwater.destroy()
  underwater = nil
  end
{$asm}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3728</ID>
          <Description>"Infinite Idle Time"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscanmodule(Five,soniccd.exe,89 90 24 07 ?? 01)

alloc(newmem,$1000)
alloc(Six,6)

registersymbol(Five)
registersymbol(Six)

label(code)
label(return)

Six:
  readmem(Five,6)

newmem:

code:
  xor edx,edx
  mov [eax+soniccd.exe+DA0724],dx
  jmp return

Five:
  jmp newmem
  nop

return:

[DISABLE]

Five:
  readmem(Six,6)

unregistersymbol(Five)
unregistersymbol(Six)

dealloc(newmem)
dealloc(Six)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3712</ID>
          <Description>"Easy Metal Sonic Race"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

{$lua}
  local timer = createTimer(nil,false)
  timer.Interval = 1000

  timer.OnTimer = function(timer)
  writeBytes("soniccd.exe+C3FA32",0)

  local val = readBytes("soniccd.exe+C3F9AA",1,false)
  if val == 3 then
  writeBytes("soniccd.exe+C3F9C2",0)
  else
  writeBytes("soniccd.exe+C3F9C2",3)
  end
  end

  timer.Enabled = true
  _G.metalRace = timer
{$asm}

[DISABLE]

{$lua}
  if _G.metalRace then
  _G.metalRace.Enabled = false
  _G.metalRace.destroy()
  _G.metalRace = nil
  end
{$asm}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3714</ID>
          <Description>"⬆Enable it before the gate opens, or Metal will still race, just slower."</Description>
          <Color>C0C0C0</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>3719</ID>
          <Description>"Untouchable"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscanmodule(Seven,soniccd.exe,8B 4A 18 89 0C 85 78 54 ?? ??)

alloc(newmem,$1000)
alloc(Eight,10)

registersymbol(Seven)
registersymbol(Eight)

label(code)
label(return)

Eight:
readmem(Seven,10)

newmem:

code:
  mov word ptr [edx+18],3
  mov ecx,[edx+18]
  mov [eax*4+soniccd.exe+C35478],ecx
  jmp return

Seven:
  jmp newmem
  nop 5

return:

[DISABLE]

Seven:
  readmem(Eight,10)

unregistersymbol(Seven)
unregistersymbol(Eight)

dealloc(newmem)
dealloc(Eight)
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>25</ID>
          <Description>"⬆Doesn’t work in Special Stages."</Description>
          <Color>C0C0C0</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>3727</ID>
      <Description>"==== Extras ====="</Description>
      <Options moDeactivateChildrenAsWell="1"/>
      <Color>C080FF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>3720</ID>
          <Description>"Debug Mode"</Description>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

{$lua}
  if debugMode == nil then
  local addr = getAddress("soniccd.exe+FC5844")
  debugMode = createTimer()
  debugMode.Interval = 1000
  debugMode.OnTimer = function() writeBytes(addr,1) end
  end
{$asm}

[DISABLE]

{$lua}
  if debugMode then
  writeBytes("soniccd.exe+FC5844",0)
  debugMode.destroy()
  debugMode = nil
  end
{$asm}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>3729</ID>
          <Description>"Score"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
          <Color>C08000</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>soniccd.exe+C07094</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3730</ID>
          <Description>"Lives"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>soniccd.exe+C0709C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3731</ID>
          <Description>"UFO"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>soniccd.exe+C3D800</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3732</ID>
          <Description>"Rings"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>soniccd.exe+C3D6F0</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3733</ID>
          <Description>"Special Stage Rings"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">??:Waiting
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>C08000</Color>
          <VariableType>2 Bytes</VariableType>
          <Address>soniccd.exe+C3D80C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>3748</ID>
          <Description>"⬆Don’t lock values, or some menus won’t load."</Description>
          <Color>C0C0C0</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Created by: Outrun
https://opencheattables.com</Comments>
</CheatTable>
