This page lists all currently known memory pointers to relevant game variables.
- Unless otherwise specified, all variables are signed 4 Byte variables.
- The values of all timing related variables are in ticks.
- All offsets are notated as hexadecimal numbers.
Menu Screens and Game State
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Menu screen | edge.exe+1F9080, 50 |
See Menu screens table for values |
| Button selection | edge.exe+1F91B4, 8*[value of screen]+44, 10 |
Number of the button currently selected or pressed |
| Pause options selection | edge.exe+1F91B4, D4, 50 |
|
| Pause main menu selection | edge.exe+1F91B4, D4, 54 |
Level select
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Level number | edge.exe+1F91B4, 64, 38 |
Number in level list (starting from 0) |
| Level ID | edge.exe+1F91B4, 64, 40, -4 |
|
| Beaten | edge.exe+1F91B4, 64, 40, 0 |
|
| Best time | edge.exe+1F91B4, 64, 40, 4 |
|
| Collected Prisms | edge.exe+1F91B4, 64, 40, 8 |
|
| Rank | edge.exe+1F91B4, 64, 40, C |
0 (D) to 5 (S+) |
These offsets only apply to the Normal level select screen. Change the first offset to 6C or 74 for the Bonus or Extended menu variables respectively.
Gameplay
For many of the variables here, their behavior is known, but it is not always clear for what they are used in the game's code.
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Level ID | edge.exe+1F9040, 78 |
|
| Deaths | edge.exe+1F9064, 104 |
|
| Level clear | edge.exe+1F9064, B5 |
1 Byte. Set to 1 when touching the exit point of a level, set to 0 when exiting the clear screen |
Timing
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Time | edge.exe+1F9064, 10C |
|
| Edging | edge.exe+1F9064, 6C |
1 if currently edging, 0 if not |
| Current EDGE Time | edge.exe+1F9064, 7B |
Time that gets displayed next to the cube when edging |
| Total EDGE Time | edge.exe+1F9064, 108 |
Time that is shown in the second row of the clear screen |
| Final Time with EDGE Time subtracted | edge.exe+1F9064, 110 |
Time that is shown in the third row of the clear screen |
| Total time spent in levels | edge.exe+1F9064, 4 |
Same as time, but never resets |
Positioning
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Cube action | edge.exe+1F9064, 34, 4 |
0: Standing, 1: Moving, 2: Climbing, 3: Falling, 6: Shrinking, 7: Growing |
| Last action | edge.exe+1F9064, 34, 8 |
Same as cube action (with a small delay), but doesn't reset to 0 when the action is done |
| Cube moving direction | edge.exe+1F9064, 34, C |
0: Standing; Moving: 1: NE, 2: SW, 3: NW, 4: SE; Climbing: 5: NE, 6: SW, 7: NW, 8: SE |
| Last moving direction | edge.exe+1F9064, 34, 10 |
Same as Cube moving direction (with a small delay), but doesn't reset to 0 when movement is done |
| Step progress | edge.exe+1F9064, 34, 14 |
2 Bytes. Number between 0 and 30 to indicate the progress (angle) of the current step |
| Coordinate | edge.exe+1F9064, 34, 28/2C/30, edge.exe+1F9064, 34, 34/38/3C |
X, Y, and Z coordinate of the cube measured in blocks |
| Subcoordinate | edge.exe+1F9064, 34, 4C/50/54 |
X, Y, and Z coordinate of the cube measured in subblocks (1/30 of a block). Used for precise positioning, for example when moving as minicube. Changing these values actually changes the position of the cube |
| Subcoordinate delta | edge.exe+1F9064, 34, 58/5C/60 |
Values that will be added to the X, Y, and Z subcoordinate when a step is completed. When falling, the Z delta is added to the Z coordinate each tick |
edge.exe+1F9064, 34, 64 |
Not fully known. This variable holds the Z coordinate but only updates when a step is completed on a different height, or when starting a level or going to a checkpoint | |
| Cube vertices | edge.exe+1F9064, 34, 70-CC |
The subcoordinates of each of the cube's 8 vertices, in the order 000, 100, 110, 010, 001, 101, 111, 011 |
edge.exe+1F9064, 34, D0-12C |
Not fully known. Also store the subcoordinates of the cube's vertices, but only update when the cube is being pushed by a moving platform |
Cube size
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Cube render size | edge.exe+1F9064, 34, 134 |
Normally 4096, increases to 12288 when shrinking, decreases to 4096 when growing. The higher the value, the smaller the cube is rendered |
| Cube size | edge.exe+1F9064, 34, 138 |
1: Normal, 3: Minicube; When set to 1, the cube will slowly accelerate, otherwise it will be at max speed instantly |
| Step size | edge.exe+1F9064, 34, 13C |
30: Normal, 10: Minicube; The number of 30ths of a block that the cube will move with each step |
Speed and acceleration
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Angle | edge.exe+1F9064, 34, 140 |
|
| Angle Speed | edge.exe+1F9064, 34, 144 |
|
| Speed | edge.exe+1F9064, 34, 148 |
|
| Starting Speed | edge.exe+1F9064, 34, 14C |
Always 4505 |
Achievements
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Always edged | edge.exe+1F9064, 34, 15C |
1 if you have edged at all possible times, 0 if not. Used for checking whether you completed the "edgaholic" achievement |
Prisms
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Prisms | edge.exe+1F9064, 11C |
Prisms currently collected |
| Total Prisms | edge.exe+1F9040, 30 |
Total prisms in current level |
| Steps since last prism | edge.exe+1F9064, 34, 160 |
The higher this value, the lower the cube's acceleration |
| Total steps | edge.exe+1F9064, 34, 164 |
|
| Prism boost timer | edge.exe+1F9064, 34, 168 |
Steps since last prism does not increase for 100 ticks after a prism has been collected |
Collision
Here, each variable is 1 Byte. Terms like "in front of" or "behind" are relative to the cube's current movement direction.
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| High wall check | edge.exe+1F9064, 34, 174 |
1 if there is a 2 block or higher wall in front of the cube, i. e. there is a block diagonally above and in front of the cube |
| High wall check behind | edge.exe+1F9064, 34, 175 |
1 if there is a 2 block or higher wall behind the cube, i. e. there is a block diagonally above and behind the cube |
| Air check | edge.exe+1F9064, 34, 176 |
1 if there is no block directly in front of the cube |
| Wall check | edge.exe+1F9064, 34, 177 |
1 if there is a 1 block or higher wall in front of the cube, i. e. there is a block directly in front of the cube or diagonally above and in front of the cube |
| Moving platform check | edge.exe+1F9064, 34, 178 |
1 if the Wall check passes and one of the two blocks belongs to a moving platform |
| Climb check | edge.exe+1F9064, 34, 17A |
1 if the cube can climb here, i. e. there is no block directly behind it |
| Floor check | edge.exe+1F9064, 34, 17B |
1 if there is a block directly under the cube |
Miscellaneous
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Movement axis input | edge.exe+1F9064, 34, 184 |
The axis corresponding to the player's input, regardless of whether the input results in any movement. 1 means Y axis, 2 means X axis. |
| Movement direction input | edge.exe+1F9064, 34, 188 |
The direction corresponding to the player's input, regardless of whether the input results in any movement. 1 means positive direction on the X axis and negative direction on the Y axis, -1 means negative direction on the X axis and positive direction on the Y axis. |
| Movement axis result | edge.exe+1F9064, 34, 18C |
Same as Movement axis input, but the value only updates when the input results in actual movement |
| Movement direction result | edge.exe+1F9064, 34, 190 |
Same as Movement direction input, but the value only updates when the input results in actual movement |
| GRAVITY | edge.exe+1F9064, 34, 194 |
A constant used for calculating the cube angle during movement |
| Last fall starting height | edge.exe+1F9064, 34, 198 |
The Z subcoordinate the cube had when it last fell. Probably used for checking for the "Long Fall" achievement |
| Cube finished animation timer | edge.exe+1F9064, 34, 1A0 |
-1 while in a level. When the finished animation plays this variable decreases from 82 to 0. |
| Balance time | edge.exe+1F9064, 34, 1A8 |
The number of ticks the cube has balanced on its edge while on the ground. Used to check for the "Balance" achievement |
| Climb time | edge.exe+1F9064, 34, 1B4 |
Similar to Current EDGE Time, but timing starts as soon as the cube starts climbing |
| Falling from level Spawn | edge.exe+1F9064, 34, 1C1 |
1 Byte. 1 if the cube has just spawned in a level and is currently falling. |
Other cube
Changing the first offset from 34 to 38 yields the equivalent variables for other cubes (holocube and darkcube).
Checkpoints
| Variable Name | Pointer and Offsets | Comment |
|---|---|---|
| Checkpoint | edge.exe+1F9064, 120 |
Number of the last activated checkpoint. -1 means no checkpoint has been activated yet |
| Steps since last prism at checkpoint | edge.exe+1F9064, 124 |
Value of steps since last prism when the last checkpoint was activated |
| Total steps at checkpoint | edge.exe+1F9064, 128 |
Value of total steps when the last checkpoint was activated |
| Cube size at checkpoint | edge.exe+1F9064, 12C |
Value of cube size when the last checkpoint was activated. This value will be used to calculate cube render size and step size when returning to checkpoint |
| Prisms at checkpoint | edge.exe+1F9064, 130 |
Value of prisms when the last checkpoint was activated |
Inputs
Keyboard inputs are managed in the memory region around edge.exe+1F8BEB. Here, each byte corresponds to a button. If its value is set to anything but 0, the corresponding button will be registered as being pressed. The most important buttons are:
| Button | Pointer |
|---|---|
| W | edge.exe+1F8C27 |
| A | edge.exe+1F8C11 |
| S | edge.exe+1F8C23 |
| D | edge.exe+1F8C14 |
| Esc | edge.exe+1F8BEB |
| Enter | edge.exe+1F8BDD |
| Shift | edge.exe+1F8BE0 |
Mouse
| Button | Pointer |
|---|---|
| Mouse X Coordinate | edge.exe+1F8AE8 |
| Mouse Y Coordinate | edge.exe+1F8AEC |
Game info
Game mechanics
If you want to add new pages or edit existing ones, you can either create an issue or message me on Discord (robin.mu). All wiki pages are also uploaded in the Wiki folder.