Kentucky Route Zero: PC Edition Guide

Unlocking Console With CE for Kentucky Route Zero

Unlocking Console With CE

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.)

Keys
Key
Function
F1
Brings Up Helper Screen, also closes it
F2
Brings Up Bookmark Screen, also closes it
F5
Reload the current scene
F10
Unlocks the Camera. Use WASD to move, the mouse to look around, shift to lower. Using F10 again will snap your camera back to where it should be. Can be used to take some cool screenshots.
Brings up a debug overlay
U
Hides certain UI elements
I
Hides certain UI elements (Different than U)
Shrinks UI elements
+
Enlarges UI elements
Numpad –
Freezes the game
Numpad +
Unfreezes the game
M
Mutes all game audio
[ and ]
Functions the same as F1 and F2
S
Slows down the game (Thanks One3rd)
F
Speeds up the game
Arrow Keys
Adjusts culling when using the camera to zoom in and move around the scene (Thanks One3rd)
Mouse Wheel
Zoom the camera in and out. Use arrow keys to adjust culling when you use this.
END
End’s current conversation. (Thanks One3rd)

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]

Key
Function
X
Pauses game (sets time to 0)
Alt + X
Unpauses game (sets time to 1)
C
Slowmo (sets time to 0.3)

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

SteamSolo.com