-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlevel7.ts
More file actions
22 lines (20 loc) · 2.4 KB
/
level7.ts
File metadata and controls
22 lines (20 loc) · 2.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { Level } from './types';
export const level7: Level = {
id: 7,
title: "Boolean Logic Bypass: Direct State Manipulation",
description: "A locked security gate blocks your path at X=310. In normal gameplay, you'd explore the map, fight enemies, solve puzzles to find the GOLD_KEY, then return to unlock this door. That's 15+ minutes of gameplay. But speedrunners discovered a faster route: the door's lock state is a single boolean at address 0x00401060 (offset 0x60 in our memory map). The game checks 'if (door.isLocked) blockPlayer();' every frame. Change that byte from 0x01 (TRUE) to 0x00 (FALSE) and the door thinks it's already unlocked. No key required. This is how Any% speedruns skip entire game sections - they manipulate state flags directly. Real-world equivalent: DRM checks, trial/demo mode flags, save game validation. Tools: Hex Editor (offset 0x60: LOCK_STATE).",
requiredSkill: "State Flag Manipulation & Boolean Logic Bypass",
objective: (s) => s.doorLocked === false,
hint: "Open Hex Editor. Navigate to offset 0x60 (LOCK_STATE). Current value: 01 (TRUE/locked). Double-click and change to: 00 (FALSE/unlocked). The Data Inspector will show Boolean interpretation. Alternative: Use Memory Scanner to find 'doorLocked' and freeze it to 0. Watch the door transform from RED (locked) to GREEN (unlocked). This technique is used in speedruns, save editors, and DRM bypasses.",
tutorPersona: "The Lockpicker: Doors are illusions. A locked door is just a boolean variable set to TRUE. The game engine asks: 'Is the door locked?' If you control memory, you control the answer. The key is narrative - the lock is logic. Speedrunners have been doing this for decades. Why play through 30 minutes of fetch quests when you can flip a single bit? Every permission check, every progression gate, every 'you need X to proceed' - they're all just if() statements reading from memory. Rewrite the condition. Rewrite reality.",
memoryLayout: [
{ key: 'doorLocked', label: 'LOCK_STATE', type: 'bool', offset: 0x60 },
{ key: 'inventory', label: 'POCKET_CONTENTS', type: 'string', offset: 0x80 }
],
initialState: { doorLocked: true, inventory: ['LINT'] },
platforms: [
{ id: 'p1', x: 0, y: 280, width: 300, height: 40, type: 'static' },
{ id: 'p2', x: 350, y: 280, width: 450, height: 40, type: 'static' }
],
hazards: [{ id: 'gate', x: 310, y: 0, width: 30, height: 280, damage: 0, type: 'firewall' }]
};