From e77cfa1596f996cc50c1601ee29891a7fb7eb62d Mon Sep 17 00:00:00 2001 From: jbzdarkid Date: Mon, 27 Jan 2020 21:35:50 -0800 Subject: Clean up globals to be more dynamic --- Source/Memory.cpp | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- Source/Memory.h | 144 +-------------------------------------------- 2 files changed, 168 insertions(+), 147 deletions(-) diff --git a/Source/Memory.cpp b/Source/Memory.cpp index 3121d20..4a4cb63 100644 --- a/Source/Memory.cpp +++ b/Source/Memory.cpp @@ -50,11 +50,16 @@ void Memory::Heartbeat(HWND window, WPARAM wParam) { return; } -#if GLOBALS == 0x5B28C0 - int currentFrame = ReadData({0x5BE3B0}, 1)[0]; -#elif GLOBALS == 0x62D0A0 - int currentFrame = ReadData({0x63954C}, 1)[0]; -#endif + int currentFrame = 0; + if (GLOBALS == 0x5B28C0) { + int currentFrame = ReadData({0x5BE3B0}, 1)[0]; + } else if (GLOBALS == 0x62D0A0) { + int currentFrame = ReadData({0x63954C}, 1)[0]; + } else { + assert(false); + return; + } + int frameDelta = currentFrame - _previousFrame; _previousFrame = currentFrame; if (frameDelta < 0 && currentFrame < 250) { @@ -105,6 +110,7 @@ bool Memory::Initialize() { return false; } + LoadPanelOffsets(); return true; } @@ -180,3 +186,158 @@ void* Memory::ComputeOffset(std::vector offsets) { } return reinterpret_cast(cumulativeAddress + final_offset); } + +int GLOBALS, POSITION, ORIENTATION, PATH_COLOR, REFLECTION_PATH_COLOR, DOT_COLOR, ACTIVE_COLOR, BACKGROUND_REGION_COLOR, SUCCESS_COLOR_A, SUCCESS_COLOR_B, STROBE_COLOR_A, STROBE_COLOR_B, ERROR_COLOR, PATTERN_POINT_COLOR, PATTERN_POINT_COLOR_A, PATTERN_POINT_COLOR_B, SYMBOL_A, SYMBOL_B, SYMBOL_C, SYMBOL_D, SYMBOL_E, PUSH_SYMBOL_COLORS, OUTER_BACKGROUND, OUTER_BACKGROUND_MODE, TRACED_EDGES, AUDIO_PREFIX, POWER, TARGET, POWER_OFF_ON_FAIL, IS_CYLINDER, CYLINDER_Z0, CYLINDER_Z1, CYLINDER_RADIUS, CURSOR_SPEED_SCALE, NEEDS_REDRAW, SPECULAR_ADD, SPECULAR_POWER, PATH_WIDTH_SCALE, STARTPOINT_SCALE, NUM_DOTS, NUM_CONNECTIONS, MAX_BROADCAST_DISTANCE, DOT_POSITIONS, DOT_FLAGS, DOT_CONNECTION_A, DOT_CONNECTION_B, DECORATIONS, DECORATION_FLAGS, DECORATION_COLORS, NUM_DECORATIONS, REFLECTION_DATA, GRID_SIZE_X, GRID_SIZE_Y, STYLE_FLAGS, SEQUENCE_LEN, SEQUENCE, DOT_SEQUENCE_LEN, DOT_SEQUENCE, DOT_SEQUENCE_LEN_REFLECTION, DOT_SEQUENCE_REFLECTION, NUM_COLORED_REGIONS, COLORED_REGIONS, PANEL_TARGET, SPECULAR_TEXTURE, CABLE_TARGET_2, AUDIO_LOG_NAME, OPEN_RATE, METADATA, HOTEL_EP_NAME; + +void Memory::LoadPanelOffsets() { + AddSigScan({0x74, 0x41, 0x48, 0x85, 0xC0, 0x74, 0x04, 0x48, 0x8B, 0x48, 0x10}, [sharedThis = shared_from_this()](int index){ + // (address of next line) + (value at index) + GLOBALS = index + 0x14 + 0x4 + sharedThis->ReadData({index+0x14}, 1)[0]; + }); + ExecuteSigScans(); + + if (GLOBALS == 0x5B28C0) { + POSITION = 0x24; + ORIENTATION = 0x34; + PATH_COLOR = 0xC8; + REFLECTION_PATH_COLOR = 0xD8; + DOT_COLOR = 0xF8; + ACTIVE_COLOR = 0x108; + BACKGROUND_REGION_COLOR = 0x118; + SUCCESS_COLOR_A = 0x128; + SUCCESS_COLOR_B = 0x138; + STROBE_COLOR_A = 0x148; + STROBE_COLOR_B = 0x158; + ERROR_COLOR = 0x168; + PATTERN_POINT_COLOR = 0x188; + PATTERN_POINT_COLOR_A = 0x198; + PATTERN_POINT_COLOR_B = 0x1A8; + SYMBOL_A = 0x1B8; + SYMBOL_B = 0x1C8; + SYMBOL_C = 0x1D8; + SYMBOL_D = 0x1E8; + SYMBOL_E = 0x1F8; + PUSH_SYMBOL_COLORS = 0x208; + OUTER_BACKGROUND = 0x20C; + OUTER_BACKGROUND_MODE = 0x21C; + TRACED_EDGES = 0x230; + AUDIO_PREFIX = 0x278; + POWER = 0x2A8; + TARGET = 0x2BC; + POWER_OFF_ON_FAIL = 0x2C0; + IS_CYLINDER = 0x2FC; + CYLINDER_Z0 = 0x300; + CYLINDER_Z1 = 0x304; + CYLINDER_RADIUS = 0x308; + CURSOR_SPEED_SCALE = 0x358; + NEEDS_REDRAW = 0x384; + SPECULAR_ADD = 0x398; + SPECULAR_POWER = 0x39C; + PATH_WIDTH_SCALE = 0x3A4; + STARTPOINT_SCALE = 0x3A8; + NUM_DOTS = 0x3B8; + NUM_CONNECTIONS = 0x3BC; + MAX_BROADCAST_DISTANCE = 0x3C0; + DOT_POSITIONS = 0x3C8; + DOT_FLAGS = 0x3D0; + DOT_CONNECTION_A = 0x3D8; + DOT_CONNECTION_B = 0x3E0; + DECORATIONS = 0x420; + DECORATION_FLAGS = 0x428; + DECORATION_COLORS = 0x430; + NUM_DECORATIONS = 0x438; + REFLECTION_DATA = 0x440; + GRID_SIZE_X = 0x448; + GRID_SIZE_Y = 0x44C; + STYLE_FLAGS = 0x450; + SEQUENCE_LEN = 0x45C; + SEQUENCE = 0x460; + DOT_SEQUENCE_LEN = 0x468; + DOT_SEQUENCE = 0x470; + DOT_SEQUENCE_LEN_REFLECTION = 0x478; + DOT_SEQUENCE_REFLECTION = 0x480; + NUM_COLORED_REGIONS = 0x4A0; + COLORED_REGIONS = 0x4A8; + PANEL_TARGET = 0x4B0; + SPECULAR_TEXTURE = 0x4D8; + CABLE_TARGET_2 = 0xD8; + AUDIO_LOG_NAME = 0xC8; + OPEN_RATE = 0xE8; + METADATA = 0xF2; // sizeof(short) + HOTEL_EP_NAME = 0x4BC640; + } else if (GLOBALS == 0x62B0A0) { + // TODO: + } else if (GLOBALS == 0x62D0A0) { + POSITION = 0x24; + ORIENTATION = 0x34; + PATH_COLOR = 0xC0; + REFLECTION_PATH_COLOR = 0xD0; + DOT_COLOR = 0xF0; + ACTIVE_COLOR = 0x100; + BACKGROUND_REGION_COLOR = 0x110; + SUCCESS_COLOR_A = 0x120; + SUCCESS_COLOR_B = 0x130; + STROBE_COLOR_A = 0x140; + STROBE_COLOR_B = 0x150; + ERROR_COLOR = 0x160; + PATTERN_POINT_COLOR = 0x180; + PATTERN_POINT_COLOR_A = 0x190; + PATTERN_POINT_COLOR_B = 0x1A0; + SYMBOL_A = 0x1B0; + SYMBOL_B = 0x1C0; + SYMBOL_C = 0x1D0; + SYMBOL_D = 0x1E0; + SYMBOL_E = 0x1F0; + PUSH_SYMBOL_COLORS = 0x200; + OUTER_BACKGROUND = 0x204; + OUTER_BACKGROUND_MODE = 0x214; + TRACED_EDGES = 0x228; + AUDIO_PREFIX = 0x270; + POWER = 0x2A0; + TARGET = 0x2B4; + POWER_OFF_ON_FAIL = 0x2B8; + IS_CYLINDER = 0x2F4; + CYLINDER_Z0 = 0x2F8; + CYLINDER_Z1 = 0x2FC; + CYLINDER_RADIUS = 0x300; + CURSOR_SPEED_SCALE = 0x350; + NEEDS_REDRAW = 0x37C; + SPECULAR_ADD = 0x38C; + SPECULAR_POWER = 0x390; + PATH_WIDTH_SCALE = 0x39C; + STARTPOINT_SCALE = 0x3A0; + NUM_DOTS = 0x3B4; + NUM_CONNECTIONS = 0x3B8; + MAX_BROADCAST_DISTANCE = 0x3BC; + DOT_POSITIONS = 0x3C0; + DOT_FLAGS = 0x3C8; + DOT_CONNECTION_A = 0x3D0; + DOT_CONNECTION_B = 0x3D8; + DECORATIONS = 0x418; + DECORATION_FLAGS = 0x420; + DECORATION_COLORS = 0x428; + NUM_DECORATIONS = 0x430; + REFLECTION_DATA = 0x438; + GRID_SIZE_X = 0x440; + GRID_SIZE_Y = 0x444; + STYLE_FLAGS = 0x448; + SEQUENCE_LEN = 0x454; + SEQUENCE = 0x458; + DOT_SEQUENCE_LEN = 0x460; + DOT_SEQUENCE = 0x468; + DOT_SEQUENCE_LEN_REFLECTION = 0x470; + DOT_SEQUENCE_REFLECTION = 0x478; + NUM_COLORED_REGIONS = 0x498; + COLORED_REGIONS = 0x4A0; + PANEL_TARGET = 0x4A8; + SPECULAR_TEXTURE = 0x4D0; + CABLE_TARGET_2 = 0xD0; + AUDIO_LOG_NAME = 0x0; + OPEN_RATE = 0xE0; + METADATA = 0x13A; // sizeof(short) + HOTEL_EP_NAME = 0x51E340; + } else { + assert(false); + return; + } +} \ No newline at end of file diff --git a/Source/Memory.h b/Source/Memory.h index 82d1293..1724251 100644 --- a/Source/Memory.h +++ b/Source/Memory.h @@ -1,7 +1,6 @@ #pragma once -#define GLOBALS 0x5B28C0 -// #define GLOBALS 0x62D0A0 +extern int GLOBALS, POSITION, ORIENTATION, PATH_COLOR, REFLECTION_PATH_COLOR, DOT_COLOR, ACTIVE_COLOR, BACKGROUND_REGION_COLOR, SUCCESS_COLOR_A, SUCCESS_COLOR_B, STROBE_COLOR_A, STROBE_COLOR_B, ERROR_COLOR, PATTERN_POINT_COLOR, PATTERN_POINT_COLOR_A, PATTERN_POINT_COLOR_B, SYMBOL_A, SYMBOL_B, SYMBOL_C, SYMBOL_D, SYMBOL_E, PUSH_SYMBOL_COLORS, OUTER_BACKGROUND, OUTER_BACKGROUND_MODE, TRACED_EDGES, AUDIO_PREFIX, POWER, TARGET, POWER_OFF_ON_FAIL, IS_CYLINDER, CYLINDER_Z0, CYLINDER_Z1, CYLINDER_RADIUS, CURSOR_SPEED_SCALE, NEEDS_REDRAW, SPECULAR_ADD, SPECULAR_POWER, PATH_WIDTH_SCALE, STARTPOINT_SCALE, NUM_DOTS, NUM_CONNECTIONS, MAX_BROADCAST_DISTANCE, DOT_POSITIONS, DOT_FLAGS, DOT_CONNECTION_A, DOT_CONNECTION_B, DECORATIONS, DECORATION_FLAGS, DECORATION_COLORS, NUM_DECORATIONS, REFLECTION_DATA, GRID_SIZE_X, GRID_SIZE_Y, STYLE_FLAGS, SEQUENCE_LEN, SEQUENCE, DOT_SEQUENCE_LEN, DOT_SEQUENCE, DOT_SEQUENCE_LEN_REFLECTION, DOT_SEQUENCE_REFLECTION, NUM_COLORED_REGIONS, COLORED_REGIONS, PANEL_TARGET, SPECULAR_TEXTURE, CABLE_TARGET_2, AUDIO_LOG_NAME, OPEN_RATE, METADATA, HOTEL_EP_NAME; enum class ProcStatus { NotRunning, @@ -79,6 +78,7 @@ private: void Heartbeat(HWND window, WPARAM wParam); bool Initialize(); void* ComputeOffset(std::vector offsets); + void LoadPanelOffsets(); int _previousFrame = 0; bool _threadActive = false; @@ -98,143 +98,3 @@ private: friend class ChallengeRandomizer; friend class Randomizer; }; - -#if GLOBALS == 0x5B28C0 -#define POSITION 0x24 -#define ORIENTATION 0x34 -#define PATH_COLOR 0xC8 -#define REFLECTION_PATH_COLOR 0xD8 -#define DOT_COLOR 0xF8 -#define ACTIVE_COLOR 0x108 -#define BACKGROUND_REGION_COLOR 0x118 -#define SUCCESS_COLOR_A 0x128 -#define SUCCESS_COLOR_B 0x138 -#define STROBE_COLOR_A 0x148 -#define STROBE_COLOR_B 0x158 -#define ERROR_COLOR 0x168 -#define PATTERN_POINT_COLOR 0x188 -#define PATTERN_POINT_COLOR_A 0x198 -#define PATTERN_POINT_COLOR_B 0x1A8 -#define SYMBOL_A 0x1B8 -#define SYMBOL_B 0x1C8 -#define SYMBOL_C 0x1D8 -#define SYMBOL_D 0x1E8 -#define SYMBOL_E 0x1F8 -#define PUSH_SYMBOL_COLORS 0x208 -#define OUTER_BACKGROUND 0x20C -#define OUTER_BACKGROUND_MODE 0x21C -#define TRACED_EDGES 0x230 -#define AUDIO_PREFIX 0x278 -#define POWER 0x2A8 -#define TARGET 0x2BC -#define POWER_OFF_ON_FAIL 0x2C0 -#define IS_CYLINDER 0x2FC -#define CYLINDER_Z0 0x300 -#define CYLINDER_Z1 0x304 -#define CYLINDER_RADIUS 0x308 -#define CURSOR_SPEED_SCALE 0x358 -#define NEEDS_REDRAW 0x384 -#define SPECULAR_ADD 0x398 -#define SPECULAR_POWER 0x39C -#define PATH_WIDTH_SCALE 0x3A4 -#define STARTPOINT_SCALE 0x3A8 -#define NUM_DOTS 0x3B8 -#define NUM_CONNECTIONS 0x3BC -#define MAX_BROADCAST_DISTANCE 0x3C0 -#define DOT_POSITIONS 0x3C8 -#define DOT_FLAGS 0x3D0 -#define DOT_CONNECTION_A 0x3D8 -#define DOT_CONNECTION_B 0x3E0 -#define DECORATIONS 0x420 -#define DECORATION_FLAGS 0x428 -#define DECORATION_COLORS 0x430 -#define NUM_DECORATIONS 0x438 -#define REFLECTION_DATA 0x440 -#define GRID_SIZE_X 0x448 -#define GRID_SIZE_Y 0x44C -#define STYLE_FLAGS 0x450 -#define SEQUENCE_LEN 0x45C -#define SEQUENCE 0x460 -#define DOT_SEQUENCE_LEN 0x468 -#define DOT_SEQUENCE 0x470 -#define DOT_SEQUENCE_LEN_REFLECTION 0x478 -#define DOT_SEQUENCE_REFLECTION 0x480 -#define NUM_COLORED_REGIONS 0x4A0 -#define COLORED_REGIONS 0x4A8 -#define PANEL_TARGET 0x4B0 -#define SPECULAR_TEXTURE 0x4D8 -#define CABLE_TARGET_2 0xD8 -#define AUDIO_LOG_NAME 0xC8 -#define OPEN_RATE 0xE8 -#define METADATA 0xF2 // sizeof(short) -#define HOTEL_EP_NAME 0x4BC640 -#elif GLOBALS == 0x62D0A0 -#define POSITION 0x24 -#define ORIENTATION 0x34 -#define PATH_COLOR 0xC0 -#define REFLECTION_PATH_COLOR 0xD0 -#define DOT_COLOR 0xF0 -#define ACTIVE_COLOR 0x100 -#define BACKGROUND_REGION_COLOR 0x110 -#define SUCCESS_COLOR_A 0x120 -#define SUCCESS_COLOR_B 0x130 -#define STROBE_COLOR_A 0x140 -#define STROBE_COLOR_B 0x150 -#define ERROR_COLOR 0x160 -#define PATTERN_POINT_COLOR 0x180 -#define PATTERN_POINT_COLOR_A 0x190 -#define PATTERN_POINT_COLOR_B 0x1A0 -#define SYMBOL_A 0x1B0 -#define SYMBOL_B 0x1C0 -#define SYMBOL_C 0x1D0 -#define SYMBOL_D 0x1E0 -#define SYMBOL_E 0x1F0 -#define PUSH_SYMBOL_COLORS 0x200 -#define OUTER_BACKGROUND 0x204 -#define OUTER_BACKGROUND_MODE 0x214 -#define TRACED_EDGES 0x228 -#define AUDIO_PREFIX 0x270 -#define POWER 0x2A0 -#define TARGET 0x2B4 -#define POWER_OFF_ON_FAIL 0x2B8 -#define IS_CYLINDER 0x2F4 -#define CYLINDER_Z0 0x2F8 -#define CYLINDER_Z1 0x2FC -#define CYLINDER_RADIUS 0x300 -#define CURSOR_SPEED_SCALE 0x350 -#define NEEDS_REDRAW 0x37C -#define SPECULAR_ADD 0x38C -#define SPECULAR_POWER 0x390 -#define PATH_WIDTH_SCALE 0x39C -#define STARTPOINT_SCALE 0x3A0 -#define NUM_DOTS 0x3B4 -#define NUM_CONNECTIONS 0x3B8 -#define MAX_BROADCAST_DISTANCE 0x3BC -#define DOT_POSITIONS 0x3C0 -#define DOT_FLAGS 0x3C8 -#define DOT_CONNECTION_A 0x3D0 -#define DOT_CONNECTION_B 0x3D8 -#define DECORATIONS 0x418 -#define DECORATION_FLAGS 0x420 -#define DECORATION_COLORS 0x428 -#define NUM_DECORATIONS 0x430 -#define REFLECTION_DATA 0x438 -#define GRID_SIZE_X 0x440 -#define GRID_SIZE_Y 0x444 -#define STYLE_FLAGS 0x448 -#define SEQUENCE_LEN 0x454 -#define SEQUENCE 0x458 -#define DOT_SEQUENCE_LEN 0x460 -#define DOT_SEQUENCE 0x468 -#define DOT_SEQUENCE_LEN_REFLECTION 0x470 -#define DOT_SEQUENCE_REFLECTION 0x478 -#define NUM_COLORED_REGIONS 0x498 -#define COLORED_REGIONS 0x4A0 -#define PANEL_TARGET 0x4A8 -#define SPECULAR_TEXTURE 0x4D0 -#define CABLE_TARGET_2 0xD0 -#define AUDIO_LOG_NAME 0x0 -#define OPEN_RATE 0xE0 -#define METADATA 0x13A // sizeof(short) -#define HOTEL_EP_NAME 0x51E340 -#endif \ No newline at end of file -- cgit 1.4.1