7 Memory Pointers
robin-mu edited this page 2025-02-28 21:14:27 +01:00

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