Overview
This guide will show you how to set up Cheat Engine and how to use the Debug Console script to use features like an unlocked camera, bookmarks for skipping between acts and scenes and more.
Cheat Engine
CE is a free program by DarkByte and safe to download. There are some advertisements in the installer which I suggest opting out of. You can download that here[www.cheatengine.org]
Debug Console Cheat Table
To make this work you will need to download my cheat table here[fearlessrevolution.com]. You do not need an account to download the file. This contains the script that has the auto assembler script for the debug console. If you want to view the raw script, simply scroll down to the script source.
Setup
After installing Cheat Engine and downloading the cheat table, go ahead and open that cheat table which will then open Cheat Engine.
Make sure the game is running at this time and you are in world (not at the title screen, in one of the acts/scenes and able to move around).
Now you’ll want to find this button and click on it. This will bring up a processes window. Find the KentuckyRouteZero process and select it and then press Open.
You may now be greeted with
select Yes.
You will now have the option to tick the box by ‘Debug Console’
Go ahead and click the box. It may hang for 1-3 seconds but after the box should be ticked and you should be greeted with the following
Double click ‘Off’ and select from the drop down box ‘On’ – Now the console should be activated. Head back to your game and try pressing F1. If all went according to plan, you should now see something like this in the top left of your game screen
Keys And Functions
Now that CE is set up, you are free to try out different functions. I recommend doing this on an already completed save game or a brand new one. You never know how things like this can impact your saves. So you use the following functions at your own risk. These are the ones I have discovered but there may be more.
(A small side note: You only need to use CE once to activate the console per save game. You should be fine to continue using it even after closing the game down.)
I’m sure theres other functions I haven’t found, if you run across any, feel free to contribute in a comment and I’ll amend this section.
One3rd’s Alternative Game Speed Hotkeys
If you find that using the games built in Numpad + and Numpad – doesn’t work for you or you want a little bit more control over it, One3rd’s script gives you that functionality. Unlike the original Debug Console script, you will need to run CE every time to use this script. You can download the new script here[fearlessrevolution.com]
Unlocked Camera Screenshots
Non-Cheat Engine Console Enable
Thanks to Topsy for the following information. If you wish to avoid using Cheat Engine all together, you can achieve the same results by following this link[consolidatedpower.co] here. There is also a full list of available commands and detailed information on each command and function.
Additional Help
If you run into any problems or have questions, feel free to contact me and I’ll do what I can to help out. If you want to see the script first then check below for that.
Script Source [Updated with Table version 1.0c Final]
<?xml version=”1.0″ encoding=”utf-8″?>
<CheatTable CheatEngineTableVersion=”29″>
<CheatEntries>
<CheatEntry>
<ID>1</ID>
<Description>”Debug Console”</Description>
<Options moHideChildren=”1″/>
<LastState/>
<Color>FF0000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : KentuckyRouteZero.exe
Version:
Date : 2020-02-02
Author : Iscariot
This script does blah blah blah
}
[ENABLE]
aobscan(enabledebug,0F B6 40 14 85 C0 75 09) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(debug)
registersymbol(debug)
newmem:
mov [debug],eax
code:
movzx eax,byte ptr [eax+14]
test eax,eax
jmp return
debug:
dq 0
enabledebug:
jmp newmem
nop
return:
registersymbol(enabledebug)
[DISABLE]
enabledebug:
db 0F B6 40 14 85 C0
unregistersymbol(debug)
unregistersymbol(enabledebug)
dealloc(newmem)
</AssemblerScript>
<Hotkeys>
<Hotkey>
<Action>Activate</Action>
<Keys>
<Key>97</Key>
</Keys>
<Description>Enable Script</Description>
<ID>0</ID>
</Hotkey>
</Hotkeys>
<CheatEntries>
<CheatEntry>
<ID>2</ID>
<Description>”Console”</Description>
<DropDownList ReadOnly=”1″ DescriptionOnly=”1″ DisplayValueAsItem=”1″>0:Off
1:On
</DropDownList>
<VariableType>Byte</VariableType>
<Address>debug</Address>
<Offsets>
<Offset>14</Offset>
</Offsets>
</CheatEntry>
<CheatEntry>
<ID>3</ID>
<Description>”F1 For Helpers”</Description>
<LastState Value=”” RealAddress=”00000000″/>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>4</ID>
<Description>”F2 For Bookmarks”</Description>
<LastState Value=”” RealAddress=”00000000″/>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>5</ID>
<Description>”F5 To Go Back A Bit?”</Description>
<LastState Value=”” RealAddress=”00000000″/>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>6</ID>
<Description>”F10 For Free Camera”</Description>
<LastState Value=”” RealAddress=”00000000″/>
<GroupHeader>1</GroupHeader>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>11</ID>
<Description>”Debug Ephemera”</Description>
<Options moHideChildren=”1″/>
<LastState/>
<Color>FF0000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : KentuckyRouteZero.exe
Version:
Date : 2020-02-04
Author : Iscariot
This script does blah blah blah
}
[ENABLE]
aobscan(_epherma,0F B6 87 B9 00 00 00 85 C0 75 13) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(debug)
registersymbol(debug)
newmem:
mov [debug],edi
code:
movzx eax,byte ptr [edi+000000B9]
jmp return
debug:
dq 0
_epherma:
jmp newmem
nop 2
return:
registersymbol(_epherma)
[DISABLE]
_epherma:
db 0F B6 87 B9 00 00 00
unregistersymbol(debug)
unregistersymbol(_epherma)
dealloc(newmem)
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>10</ID>
<Description>”Unlock All”</Description>
<DropDownList ReadOnly=”1″ DescriptionOnly=”1″ DisplayValueAsItem=”1″>0:Locked
1:Unlocked
</DropDownList>
<VariableType>Byte</VariableType>
<Address>debug</Address>
<Offsets>
<Offset>9D</Offset>
</Offsets>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>13221</ID>
<Description>”[One3rd GameSpeed Script]”</Description>
<LastState Value=”” RealAddress=”00000000″/>
<GroupHeader>1</GroupHeader>
<CheatEntries>
<CheatEntry>
<ID>13217</ID>
<Description>”Game Speed”</Description>
<LastState/>
<Color>FF0000</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
alloc(newmem,2048)
label(returnhere)
label(exit)
label(gameSpeed)
registersymbol(gameSpeed)
newmem:
mov [gameSpeed],esi
movss xmm4,[esi+000000E4]
jmp exit
exit:
jmp returnhere
////
///
gameSpeed:
dd 0
///
“UnityPlayer.dll”+487381:
jmp newmem
nop 3
returnhere:
[DISABLE]
dealloc(newmem)
“UnityPlayer.dll”+487381:
movss xmm4,[esi+000000E4]
unregistersymbol(gameSpeed)
{
aobscanmodule(INJECT,UnityPlayer.dll,F3 0F 10 A6 E4 00 00 00) // should be unique
// ORIGINAL CODE – INJECTION POINT: “UnityPlayer.dll”+487381
“UnityPlayer.dll”+48735B: E9 A2 00 00 00 – jmp UnityPlayer.dll+487402
“UnityPlayer.dll”+487360: 80 BE B0 00 00 00 00 – cmp byte ptr [esi+000000B0],00
“UnityPlayer.dll”+487367: 74 0C – je UnityPlayer.dll+487375
“UnityPlayer.dll”+487369: C6 86 B0 00 00 00 00 – mov byte ptr [esi+000000B0],00
“UnityPlayer.dll”+487370: 5E – pop esi
“UnityPlayer.dll”+487371: 8B E5 – mov esp,ebp
“UnityPlayer.dll”+487373: 5D – pop ebp
“UnityPlayer.dll”+487374: C3 – ret
“UnityPlayer.dll”+487375: 80 BE B1 00 00 00 00 – cmp byte ptr [esi+000000B1],00
“UnityPlayer.dll”+48737C: F2 0F 10 5E 50 – movsd xmm3,[esi+50]
// ———- INJECTING HERE ———-
“UnityPlayer.dll”+487381: F3 0F 10 A6 E4 00 00 00 – movss xmm4,[esi+000000E4]
// ———- DONE INJECTING ———-
“UnityPlayer.dll”+487389: 74 0D – je UnityPlayer.dll+487398
“UnityPlayer.dll”+48738B: F3 0F 59 25 F8 73 FC 5F – mulss xmm4,[UnityPlayer.dll+EC73F8]
“UnityPlayer.dll”+487393: 0F 5A D4 – cvtps2pd xmm2,xmm4
“UnityPlayer.dll”+487396: EB 6A – jmp UnityPlayer.dll+487402
“UnityPlayer.dll”+487398: F3 0F 10 8E E8 00 00 00 – movss xmm1,[esi+000000E8]
“UnityPlayer.dll”+4873A0: 0F 28 F2 – movaps xmm6,xmm2
“UnityPlayer.dll”+4873A3: 0F 5A C1 – cvtps2pd xmm0,xmm1
“UnityPlayer.dll”+4873A6: F2 0F 5C F3 – subsd xmm6,xmm3
“UnityPlayer.dll”+4873AA: 66 0F 2F F0 – comisd xmm6,xmm0
“UnityPlayer.dll”+4873AE: 76 09 – jna UnityPlayer.dll+4873B9
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>13218</ID>
<Description>”X = Pause ALT+X =Resume C = 0.3″</Description>
<LastState Value=”” RealAddress=”00000000″/>
<Color>8000FF</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
<CheatEntry>
<ID>13219</ID>
<Description>”Game Speed”</Description>
<VariableType>Float</VariableType>
<Address>gameSpeed</Address>
<Offsets>
<Offset>e4</Offset>
</Offsets>
<Hotkeys>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>88</Key>
</Keys>
<Value>0</Value>
<ID>2</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>18</Key>
<Key>88</Key>
</Keys>
<Value>1</Value>
<ID>3</ID>
</Hotkey>
<Hotkey>
<Action>Set Value</Action>
<Keys>
<Key>67</Key>
</Keys>
<Value>0.3</Value>
<Description>slomo – when using KB controls</Description>
<ID>6</ID>
</Hotkey>
</Hotkeys>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatE