Everything that is neither a dat table nor a structure offset. A great deal of what a map actually reaches for is in here: mouse coordinates, current player, screen position.
| Player Name | 0x57EE9C · EPD -11570 · 25B × 1 · SC:R Unsupported — If you are playing as 'asdf' then you will find on that address: 'asdf' |
|---|---|
| Player 2 Selection Group | 0x628518 · EPD 161901 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 3 Selection Group | 0x628548 · EPD 161913 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 4 Selection Group | 0x628578 · EPD 161925 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 5 Selection Group | 0x6285A8 · EPD 161937 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 6 Selection Group | 0x6285D8 · EPD 161949 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 7 Selection Group | 0x628608 · EPD 161961 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Player 8 Selection Group | 0x628638 · EPD 161973 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. |
| Unitnode Table | 0x59CCA8 · EPD 19025 · 336B × 1700 · SC:R Backed By Code — [SCR: See individual entries] See Unitnode Structure in the Reference page or https://github.com/bwapi/bwapi/blob/master/bwapi/BWAPI/Source/BW/CUnit.h Units are loaded to index 0 then 1699, 1698, 1697... (this includes pre-placed map units) Compute the memory location of an index using: 0x0059CCA8 + (0x150 * index) Example: Index 1699 is at 0x00628298 = 0x0059CCA8 + (0x150 * 0x6A3) (player 161,741) where 0x0059CCA8 is the base address, 0x150 = 336 is the size and 0x6A3 = 1699 is the unit index Index 1698 is at 0x00628148 = 0x0059CCA8 + (0x150 * 0x6A2) Index 1697 is at 0x00627FF8 = 0x0059CCA8 + (0x150 * 0x6A1) Index 1696 is at 0x00627EA8 = 0x0059CCA8 + (0x150 * 0x6A0) etc. (difference between each index is the size, 336 = 0x150) |
| Music Volume | 0x6CDFE0 · EPD 331551 · 4B × 1 · SC:R Backed By Code — 0-100 for music volume Note: SC:R no longer uses this address. The value is always 0 in SC:R. |
| Digital Volume | 0x6CDFE4 · EPD 331552 · 4B × 1 · SC:R Backed By Code — 0-100 for sound volume Note: SC:R no longer uses this address. The value is always 0 in SC:R. |
| Game Speed | 0x6CDFD4 · EPD 331548 · 4B × 1 · SC:R Backed By Code — The current game speed. The values are as follows: 0 = Slowest 1 = Slower 2 = Slow 3 = Normal 4 = Fast 5 = Faster 6 = Fastest Note: SC:R no longer uses this address. The value is always 0 in SC:R. |
| Pylon Auras are Visible | 0x63FF48 · EPD 0 · 4B × 1 · SC:R Read-Only — (Writing to it apparently does nothing :C .) |
| Cheat Flags | 0x6D5A6C · EPD 339394 · 4B × 1 · SC:R Simple Data — Setting cheat flags will work in multiplayer games, but maybe not as expected. 00000001 **Black Sheep Wall 00000002 Operation CWAL 00000004 Power Overwhelming 00000008 *Something For Nothing 00000010 *Show Me The Money 00000040 Game Over Man 00000080 There Is No Cow Level 00000100 Staying Alive 00000200 Ophelia 00000800 The Gathering 00001000 Medieval Man 00002000 Modify The Phase Variance 00004000 **War Aint What It Used To Be 00020000 Food For Thought 00040000 *Whats Mine Is Mine 00080000 *Breathe Deep 20000000 noglues If any of these are enabled and you use any cheat it will instead disable these and do their action (and since you can't use cheats in multiplayer they are useless there.) ** If you enable these in Multiplayer they will be automatically disabled. 28000200 - These flags apparently do not clear at the start of a game. Radio Free Zerg doesn't use these flags. |
| Music ID | 0x6D5BB0 · EPD 0 · 4B × 1 · SC:R support level not stated — Change this value and toggle music and it will play a different sound track. 0 = Off 1 = Zerg 1 2 = Zerg 2 3 = Zerg 3 4 = Terran 1 5 = Terran 2 6 = Terran 3 7 = Protoss 1 8 = Protoss 2 9 = Protoss 3 10 = Zerg Briefing Room 11 = Terran Briefing Room 12 = Protoss Briefing Room 13 = Zerg Defeat 14 = Terran Defeat 15 = Protoss Defeat 16 = Zerg Victory 17 = Terran Victory 18 = Protoss Victory 19 = Zerg Victory 20 = Terran Victory 21 = Protoss Victory 22 = Title/Menu Music 23 = Terran 2 (Credits?) 24 = Radio Free Zerg Others crash. |
| Unit Color Table | 0x581D76 · EPD -8572 (+2) · 8B × 12 · SC:R Simple Data — Each byte corresponds to a palette index used for each player color. (The low values for the starting address is the selection circle color for players 11 and 12. Usually 0x0101 ... See that address for details.) |
| Minimap Color Table | 0x581DD6 · EPD -8548 (+2) · 1B × 12 · SC:R Simple Data — Each byte references a palette index. This table is immediately after the unit color table, so the low value is the last 2 bytes of Player 12's unit color. |
| Player Selection Circle Colors | 0x581D6A · EPD -8575 (+2) · 1B × 12 · SC:R Simple Data — Each byte sets the color of the selection circle: 000 - Green 001 - Yellow 002 - Red 017 - Grey Blue* 136 - Light Grey* 138 - Dark Grey* Higher values can give different colors (most give solid black.) Asterisk colors are inconsistent. p1 = -8575 with mask 0x00FF0000 p2 = -8575 with mask 0xFF000000 p3 = -8574 with mask 0x000000FF p4 = -8574 with mask 0x0000FF00 p5 = -8574 with mask 0x00FF0000 p6 = -8574 with mask 0xFF000000 p7 = -8573 with mask 0x000000FF p8 = -8573 with mask 0x0000FF00 p9 = -8573 with mask 0x00FF0000 p10 = -8573 with mask 0xFF000000 p11 = -8572 with mask 0x000000FF p12 = -8572 with mask 0x0000FF00 |
| Pointer to map "STR " section | 0x5993D4 · EPD 15388 · 4B × 1 · SC:R Backed By Code — Pointer default: first string |
| SC Technologies Available (0-23) | 0x58CE24 · EPD 2736 · 24B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 24 bytes per row, 1 byte per tech. BW techs are elsewhere. Offset: 24 * Player + Offs SC Techs: ID Offs. Name 00 +0 Stim Packs 01 +1 Lockdown 02 +2 EMP Shockwave 03 +3 Spider Mines 04 +4 Scanner Sweep 05 +5 Tank Siege Mode 06 +6 Defensive Matrix 07 +7 Irradiate 08 +8 Yamato Gun 09 +9 Cloaking Field 10 +10 Personnel Cloaking 11 +11 Burrowing 12 +12 Infestation 13 +13 Spawn Broodlings 14 +14 Dark Swarm 15 +15 Plague 16 +16 Consume 17 +17 Ensnare 18 +18 Parasite 19 +19 Psionic Storm 20 +20 Hallucination 21 +21 Recall 22 +22 Stasis Field 23 +23 Archon Warp |
| SC Technologies Researched (0-23) | 0x58CF44 · EPD 2808 · 24B × 12 · SC:R Simple Data — [See SC Technologies Available] http://farty1billion.dyndns.org/EUDdb/?pg=entry&id=410 |
| SC Upgrades Available (0-45) | 0x58D088 · EPD 2889 · 46B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 46 bytes per row, 1 byte per upgrade. BW upgrades are elsewhere. Offset: 46 * Player + Offs SC Upgrades: ID Offs. Name 00 +0 Terran Infantry Armor 01 +1 Terran Vehicle Plating 02 +2 Terran Ship Plating 03 +3 Zerg Carapace 04 +4 Zerg Flyer Caparace 05 +5 Protoss Armor 06 +6 Protoss Plating 07 +7 Terran Infantry Weapons 08 +8 Terran Vehicle Weapons 09 +9 Terran Ship Weapons 10 +10 Zerg Melee Attacks 11 +11 Zerg Missile Attacks 12 +12 Zerg Flyer Attacks 13 +13 Protoss Ground Weapons 14 +14 Protoss Air Weapons 15 +15 Protoss Plasma Shields 16 +16 U-238 Shells 17 +17 Ion Thrusters 18 +18 Burst Lasers (Unused) 19 +19 Titan Reactor (SV +50) 20 +20 Ocular Implants 21 +21 Moebius Reactor (Ghost +50) 22 +22 Apollo Reactor (Wraith +50) 23 +23 Colossus Reactor (BC +50) 24 +24 Ventral Sacs 25 +25 Antennae 26 +26 Pneumatized Carapace 27 +27 Metabolic Boost 28 +28 Adrenal Glands 29 +29 Muscular Augments 30 +30 Grooved Spines 31 +31 Gamete Meiosis (Queen +50) 32 +32 Metasynaptic Node (Defiler +50) 33 +33 Singularity Charge 34 +34 Leg Enhancements 35 +35 Scarab Damage 36 +36 Reaver Capacity 37 +37 Gravitic Drive 38 +38 Sensor Array 39 +39 Gravitic Boosters 40 +40 Khaydarin Amulet (HT +50) 41 +41 Apial Sensors 42 +42 Gravitic Thrusters 43 +43 Carrier Capacity 44 +44 Khaydarin Core (Arbiter +50) 45 +45 Unknown Upgrade45 |
| SC Upgrades Researched (0-45) | 0x58D2B0 · EPD 3027 · 46B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 46 bytes per row, 1 byte per upgrade. BW upgrades are elsewhere. Offset: 46 * Player + Offs SC Upgrades: ID Offs. Name 00 +0 Terran Infantry Armor 01 +1 Terran Vehicle Plating 02 +2 Terran Ship Plating 03 +3 Zerg Carapace 04 +4 Zerg Flyer Caparace 05 +5 Protoss Armor 06 +6 Protoss Plating 07 +7 Terran Infantry Weapons 08 +8 Terran Vehicle Weapons 09 +9 Terran Ship Weapons 10 +10 Zerg Melee Attacks 11 +11 Zerg Missile Attacks 12 +12 Zerg Flyer Attacks 13 +13 Protoss Ground Weapons 14 +14 Protoss Air Weapons 15 +15 Protoss Plasma Shields 16 +16 U-238 Shells 17 +17 Ion Thrusters 18 +18 Burst Lasers (Unused) 19 +19 Titan Reactor (SV +50) 20 +20 Ocular Implants 21 +21 Moebius Reactor (Ghost +50) 22 +22 Apollo Reactor (Wraith +50) 23 +23 Colossus Reactor (BC +50) 24 +24 Ventral Sacs 25 +25 Antennae 26 +26 Pneumatized Carapace 27 +27 Metabolic Boost 28 +28 Adrenal Glands 29 +29 Muscular Augments 30 +30 Grooved Spines 31 +31 Gamete Meiosis (Queen +50) 32 +32 Metasynaptic Node (Defiler +50) 33 +33 Singularity Charge 34 +34 Leg Enhancements 35 +35 Scarab Damage 36 +36 Reaver Capacity 37 +37 Gravitic Drive 38 +38 Sensor Array 39 +39 Gravitic Boosters 40 +40 Khaydarin Amulet (HT +50) 41 +41 Apial Sensors 42 +42 Gravitic Thrusters 43 +43 Carrier Capacity 44 +44 Khaydarin Core (Arbiter +50) 45 +45 Unknown Upgrade45 |
| First Unit Pointer | 0x628430 · EPD 161843 · 4B × 1 · SC:R Backed By Code — The value is pointer to the first unit in the unitNodeTable. |
| Unit being Produced | 0x6CA9F0 · EPD 328099 · 4B × 1 · SC:R Unsupported — Set value to 1 to detect any unit currently being trained on any building. Not fully tested. |
| Filename for Lastreplay | 0x4FF900 · EPD -141977 · 12B × 1 · SC:R support level not stated — Contains the string "LastReplay". |
| Replay Speed Limiters | 0x4FF90C · EPD 0 · 4B × 7 · SC:R support level not stated — The speed in milliseconds to spend each frame during a replay. The array index is dependant on the game speed. |
| Replay Command Table | 0x4FF928 · EPD 0 · 16B × 2 · SC:R support level not stated — Contains the replay commands "show" and "hide" along with function pointers. |
| Replay show command modifiers | 0x4FF948 · EPD 0 · 32B × 12 · SC:R support level not stated — Contains sub-commands and leaderboard values to use in the "/replay show" command. |
| Menu Info Array | 0x4FFAD0 · EPD 0 · 12B × 27 · SC:R support level not stated — Contains the menu index, background index, and menu path. |
| Campaign List Info | 0x4FFC20 · EPD 0 · 8B × 85 · SC:R support level not stated — Contains the campaign listing info. WORD gluHist.tbl index WORD mapdata.dat index WORD cinematic index BYTE race index BYTE bonus flag |
| cInit Constructor Function Table | 0x50C000 · EPD 0 · 4B × 310 · SC:R support level not stated — Standard C-Runtime. Generated by Visual C++. |
| Current Cinematic ID | 0x5122B8 · EPD 0 · 4B × 1 · SC:R support level not stated — An index for the currently playing cinematic. |
| Game Speed Refresh Rate | 0x5124D8 · EPD -122787 · 4B × 7 · SC:R Simple Data — Contains the value in milliseconds required for each frame. Array index dependant on game speed... |
| Replay Speed Refresh Rate | 0x5124F4 · EPD 0 · 4B × 7 · SC:R support level not stated — Contains the time in milliseconds spent each frame. Array index dependent on game speed. |
| Image Update Functions | 0x512510 · EPD 0 · 8B × 18 · SC:R support level not stated — An array of image functions. The array is officially called sgUpdateFuncs. |
| Image Drawing Functions | 0x5125A0 · EPD -122737 · 12B × 18 · SC:R support level not stated — This corresponds to a value in images.dat. The official name for this array is sgDrawFuncs. Structure: +0x0 id +0x4 normal draw function pointer +0x8 mirror draw function |
| Active Nation ID | 0x512678 · EPD -122683 · 4B × 1 · SC:R Backed By Code — This is the same as Human ID unless you are playing Team Melee. The official name for this is g_ActiveNationID. |
| Active Human ID | 0x51267C · EPD -122682 · 4B × 1 · SC:R Backed By Code — This is your player ID. The official name for this is g_ActiveHumanID. |
| Active Storm ID | 0x512680 · EPD -122681 · 4B × 1 · SC:R Unsupported — This is your active storm ID, which is different from your player ID. The official name for this is g_ActiveStormID. |
| Local Nation ID | 0x512684 · EPD -122680 · 4B × 1 · SC:R Backed By Code — The official name for this is g_LocalNationID. P1: 00 P2: 01 P3: 02 etc. |
| Local Human ID | 0x512688 · EPD 0 · 4B × 1 · SC:R support level not stated — The official name for this is g_LocalHumanID. |
| Local Storm ID | 0x51268C · EPD -122678 · 4B × 1 · SC:R Unsupported — The official name for this is g_LocalStormID. |
| Cinematic File Name Array | 0x512690 · EPD 0 · 4B × 28 · SC:R support level not stated — Contains string pointers for the file names of all game cinematics. |
| Race Filename Modifiers | 0x512700 · EPD 0 · 8B × 1 · SC:R support level not stated — Contains 3 bytes "ztp" used when loading race-specific files, like the user HUD for example. |
| Cursor Filename Array | 0x512708 · EPD 0 · 4B × 19 · SC:R support level not stated — Contains pointers to a string for each cursor image. |
| Cursor Scroll Type Modifiers | 0x512754 · EPD -122628 · 2B × 10 · SC:R Unsupported — Contains the index for the cursor used for scrolling. |
| Tileset Color Cycle Pointers | 0x5127DC · EPD 0 · 4B × 9 · SC:R support level not stated — Contains pointers to the tileset color cycle data. Array index dependant on tileset. |
| Trigger Action Function Array | 0x512800 · EPD 0 · 4B × 60 · SC:R support level not stated — Contains function pointers for all trigger actions. |
| Death Table Start | 0x58A364 · EPD 0 · 48B × 228 · SC:R Simple Data — Counts per player, per unit First entry in the death table (P1 marine) for 1.16.1. Structured like P1 marine P2 marine ... P12 marine P1 ghost P2 ghost ... P12 ghost ... ... For each unit, 4 bytes per player, for 12 players. offset + (unit*12 + player) * sizeof(u32) |
| Images Attack Overlay Array | 0x51F2A8 · EPD -109615 · 4B × 999 · SC:R Read Only — Pointers to GRP handles for all images. |
| Images Damage Overlay Array | 0x520244 · EPD -108616 · 4B × 999 · SC:R Read Only — Pointer to LO? handles for all images.dat entries. |
| Images Special Overlay Array | 0x5211E0 · EPD -107617 · 4B × 999 · SC:R Read Only — Pointer to LO? handles for all images.dat entries. |
| Images Landing Dust Overlay Array | 0x52217C · EPD -106618 · 4B × 999 · SC:R Read Only — Pointer to LO? handles for all images.dat entries. |
| Images Liftoff Dust Overlay Array | 0x523118 · EPD -105619 · 4B × 999 · SC:R Read Only — Pointer to LO? handles for all images.dat entries. |
| Images Shield Overlay Array | 0x52E5C8 · EPD 0 · 4B × 999 · SC:R support level not stated — Pointer to GRP handles for all images. |
| Images Array | 0x52F568 · EPD -93055 · 64B × 5000 · SC:R Read Only — The array of images currently processed in the game. |
| Player Human IDs | 0x57EE7C · EPD -11578 · 4B × 8 · SC:R Unsupported — The Human ID for each player.llll |
| Player Nation IDs | 0x57EEC0 · EPD -11561 · 4B × 8 · SC:R Unsupported — The Nation ID for each player. |
| Active Player Structures | 0x57EEE0 · EPD -11553 · 36B × 12 · SC:R Backed By Code — A structure for each player containing their HumanID, StormID, Type, Race, Team, and Name. +0x00 = HumanID (4 bytes) +0x04 = StormID (4 bytes) +0x08 = Type (1 byte; 0 = inactive, 1 = computer, 2 = human, 3 = rescuable, 7 = neutral) +0x09 = Race (1 byte; 0 = zerg, 1 = terran, 2 = protoss) +0x0A = Team (1 byte) +0x0B = Name (25 bytes) |
| Last Whisper Player | 0x57F094 · EPD 0 · 25B × 1 · SC:R support level not stated — The name of the player that last whispered you (in-game only). |
| Vision Filter | 0x57F0B0 · EPD 0 · 4B × 1 · SC:R support level not stated — A shared vision filter used for changing the player's vision settings. |
| Multiplayer Mode | 0x57F0B4 · EPD -11436 · 4B × 1 · SC:R Read Only — A boolean value that specifies if the game is Single or Multi player. The official name for this field is gbMultiPlayerMode. 0=single 1=Multi |
| Network Player Status Array | 0x57F0B8 · EPD -11435 · 4B × 8 · SC:R Unsupported — An array containing flags for each player's network status. |
| Network Maximum Buffer Size | 0x57F0D8 · EPD 0 · 4B × 1 · SC:R support level not stated — A value indicating the maximum size for the command buffer that the network provider allows. |
| Main Menu Dialog Handle | 0x57F0DC · EPD -11426 · 4B × 1 · SC:R Unsupported — A handle to the main menu BIN dialog. |
| Player Minerals | 0x57F0F0 · EPD -11421 · 4B × 12 · SC:R Simple Data — The current amount of minerals the player has. |
| Player Gas | 0x57F120 · EPD -11409 · 4B × 12 · SC:R Simple Data — The current amount of gas the player has. |
| Player Total Gas Harvested | 0x57F150 · EPD -11397 · 4B × 12 · SC:R Simple Data — The total gas the player has ever harvested |
| Player Total Minerals Harvested | 0x57F180 · EPD -11385 · 4B × 12 · SC:R Simple Data — The total minerals the player has ever harvested |
| Tileset | 0x57F1DC · EPD -11362 · 2B × 1 · SC:R Simple Data — The current tileset ID being used. Changing to 1 will turn null terrain into Space with stars (Space platform tileset) |
| Active Player Count | 0x57F1E1 · EPD -11361 (+1) · 1B × 1 · SC:R Simple Data — The number of active players in the game. |
| Console Index | 0x57F1E2 · EPD -11361 (+2) · 1B × 1 · SC:R Simple Data — A value indicating which console GUI should be displayed. 0 = zerg 1 = terran 2 = protoss |
| Shared Vision | 0x57F1EC · EPD -11358 · 4B × 12 · SC:R Simple Data — The shared vision values for each player. StarCraft does not draw vision for players 9-12, but they can see players that have visioned with them and players can detect units they have shared vision with.. |
| Player Color Mapping | 0x57F21C · EPD -11346 · 4B × 8 · SC:R Simple Data — A mapping of the player's colors. |
| Elapsed Time | 0x58D6F8 · EPD 3301 · 4B × 1 · SC:R Simple Data — Game Seconds (1 Game Second = 16 Game Ticks = ~1072ms on normal speed = ~672ms on fastest speed) Reportedly can be modified to prevent flag beacons from creating flags. |
| Campaign Index | 0x57F244 · EPD -11336 · 2B × 1 · SC:R Simple Data — A value indicating which campaign is being played. |
| Next Scenario name | 0x57F246 · EPD -11336 (+2) · 32B × 1 · SC:R Simple Data — The name of the next scenario, set using the Set Next Scenario trigger. |
| Last Event Position | 0x57FD34 · EPD -10636 · 4B × 2 · SC:R Simple Data — A POINT structure containing the position of the last event that occured (spacebar). PlayerID + 1 for Y position |
| Map File Name | 0x57FD3C · EPD -10634 · 260B × 1 · SC:R Simple Data — The current map's file name. |
| Map Title | 0x57FE40 · EPD -10569 · 32B × 1 · SC:R Simple Data — The current map's title. |
| Score Total Units Produced | 0x581DE4 · EPD -8544 · 4B × 12 · SC:R Simple Data — Appears to be flipped; units owned, and not produced. |
| Score Units Produced | 0x581E14 · EPD -8532 · 4B × 12 · SC:R Simple Data — Appears to be flipped; units owned, and not produced. |
| Score Units Owned | 0x581E44 · EPD -8520 · 4B × 12 · SC:R Simple Data — Appears to be flipped; to be units produced, and not owned. |
| Number of Units Lost | 0x581E74 · EPD -8508 · 4B × 12 · SC:R Simple Data — Deaths for "Any Unit" stored here. |
| Number of Units Killed | 0x581EA4 · EPD -8496 · 4B × 12 · SC:R Simple Data — Kills for "Any Unit" stored here. |
| Score Unit Total | 0x581ED4 · EPD -8484 · 4B × 12 · SC:R Simple Data |
| Score Kill Total | 0x581F04 · EPD -8472 · 4B × 12 · SC:R Simple Data |
| Score Structures Constructed Total | 0x581F34 · EPD -8460 · 4B × 12 · SC:R Simple Data |
| Number of Buildings Constructed | 0x581F64 · EPD -8448 · 4B × 12 · SC:R Simple Data |
| Number of Buildings Lost | 0x581FC4 · EPD -8424 · 4B × 12 · SC:R Simple Data — Deaths for "Buildings" stored here. |
| Number of Buildings Razed | 0x581FF4 · EPD -8412 · 4B × 12 · SC:R Simple Data — Kills for "Buildings" stored here. |
| Buildings Score | 0x582024 · EPD -8400 · 4B × 12 · SC:R Simple Data — Score for "Buildings", or buildings produced. |
| Razings Score | 0x582054 · EPD -8388 · 4B × 12 · SC:R Simple Data — Score for "Razings", or buildings killed. |
| Number of Factories Constructed | 0x582084 · EPD -8376 · 4B × 12 · SC:R Simple Data |
| Number of Factories Owned | 0x5820B4 · EPD -8364 · 4B × 12 · SC:R Simple Data |
| Number of Factories Lost | 0x5820E4 · EPD -8352 · 4B × 12 · SC:R Simple Data — Deaths for "Factories" stored here. |
| Zerg Control Available | 0x582144 · EPD -8328 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Zerg Control Used | 0x582174 · EPD -8316 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Zerg Control Max | 0x5821A4 · EPD -8304 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Terran Supply Available | 0x5821D4 · EPD -8292 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Terran Supply Used | 0x582204 · EPD -8280 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Terran Supply Max | 0x582234 · EPD -8268 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Protoss Psi Available | 0x582264 · EPD -8256 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Protoss Psi Used | 0x582294 · EPD -8244 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Protoss Psi Max | 0x5822C4 · EPD -8232 · 4B × 12 · SC:R Simple Data — 4 bytes per player Despite being 4 bytes, the game will only display it as uint16 and will wrap around after 65536. |
| Score Custom | 0x5822F4 · EPD -8220 · 4B × 12 · SC:R Simple Data |
| All Unit Counts Table | 0x582324 · EPD -8208 · 48B × 228 · SC:R Simple Data — Counts per player, per unit For each unit, 4 bytes per player, for 12 players. offset + (unit*12 + player) * sizeof(u32) |
| Completed Unit Counts Table | 0x584DE4 · EPD 0 · 48B × 228 · SC:R Simple Data — Counts per player, per unit For each unit, 4 bytes per player, for 12 players. offset + (unit*12 + player) * sizeof(u32) |
| Killed Unit Counts Table | 0x5878A4 · EPD -2736 · 48B × 228 · SC:R Simple Data — Counts per player, per unit. For each unit, 4 bytes per player, for 12 players. offset + (unit*12 + player) * sizeof(u32) |
| Player's Force | 0x58D5B0 · EPD 3219 · 1B × 8 · SC:R Simple Data — 8 bytes: 1 byte for each active player, specifying which of the 4 forces (0-based) that the player's on: EPD 3219 Player 1: 0x0058D5B0 Player 2: 0x0058D5B1 force*256 Player 3: 0x0058D5B2 force*65536 Player 4: 0x0058D5B3 force*16777216 EPD 3220 Player 5: 0x0058D5B4 Player 6: 0x0058D5B5 force*256 Player 7: 0x0058D5B6 force*65536 Player 8: 0x0058D5B7 force*16777216 each force have a multipler value to differentiate themselves from one another: Force 1 Force 2 (*2 to Player) Force 3 (*3 to Player) Force 4 (*4 to Player) force flags force names PLAYER'S FORCE |
| Force Flags | 0x58D5B8 · EPD 3221 · 1B × 4 · SC:R Simple Data — 4 bytes: 1 byte for each force specifying the flags; force 1: 0x0058D5B8 force 2: 0x0058D5B9 bits*256 force 3: 0x0058D5BA bits*65536 force 4: 0x0058D5BB bits*16777216 7 bits: 1 bit per flag per force; bit 0: randomize location (+1 to byte) bit 1: ally (+2 to byte) bit 2: allied victory (+4 to byte) bit 3: shared vision (+8 to byte) bit 4: unknown/unused (+16 to byte) bit 5: unknown/unused (+32 to byte) bit 6: unknown/unused (+64 to byte) bit 7: unknown/unused (+128 to byte) EPD 3221: read not one byte, but all four bytes and 12 bits FORCE FLAGS force names player's force |
| Force Names | 0x58D5BC · EPD 3222 · 30B × 4 · SC:R Simple Data — 4 byte integers: 1 integer for each force, string number of the name per force: force 1: 0x0058D5BC (EPD 3222) force 2: 0x0058D5DC (EPD 3230) force 3: 0x0058D5F8 (EPD 3237) force 4: 0x0058D614 (EPD 3244) untested: even forces strip two characters from the start of the force name advice: use [EUD] Text to Value converter force flags FORCE NAMES player's force |
| Mission Objectives Index | 0x58D6C4 · EPD 3288 · 4B × 12 · SC:R Simple Data — EPD 3288 (+0x00): This is the Mission Objective String ID for Player 1. To find the String ID for a Mission Objective: 1) Look at Player 1's Mission Objective text. 2) Go into the String Editor of the Map Editor you're using. 3) Find the exact string used in Player 1's Mission Objective text within the String Editor. 4) Now count all of the string above it, and add 1 to the total number. Note: This does not work if Player 1 does not have any text in his Mission Objective. In fact, the value of the address would be 0. EPD 3289 (+0x04): This is the Mission Objective String ID for Player 2. EPD 3290 (+0x08): This is the Mission Objective String ID for Player 3. EPD 3291 (+0x0C): This is the Mission Objective String ID for Player 4. EPD 3292 (+0x10): This is the Mission Objective String ID for Player 5. etc |
| Countdown Timer | 0x58D6F4 · EPD 3300 · 4B × 1 · SC:R Simple Data — Changing the value of this address with EUP or EUD is worthwhile, as the timer will not appear graphically and yet count down till zero without any of the players knowing. In other words, this could be used as another death counter for certain events. [So is this 'Display Countdown Timer' then?] |
| #'s of Game Pauses | 0x58D718 · EPD 3309 · 1B × 8 · SC:R Simple Data — The base value of this address is: (P1 + P2 + P3 + P4) * 3 = 50529027 Player 1: *1 Player 2: *256 Player 3: *65536 Player 4: *16777216 Player 1, 2, 3, and 4 all have three remaining game pauses that they can use to stop the game from running temporarily. If Player 2 were to pause the game, and have only two remaining game pauses left as a result, the new value of the address is: 50529027 - 256 = 50528771. The same as EPD 3310, except: Player 5: *1 Player 6: *256 Player 7: *65536 Player 8: *16777216 Challenge (Try it) - Create a easy formula from all of the information given. |
| Start Locations | 0x58D720 · EPD 3311 · 4B × 8 · SC:R Simple Data — Point: u16 X u16 Y EPD 3311 +0x00: P1 Start Location (X, Y*65536) +0x01: P2 Start Location (X 16777216, Y 256) *256 +0x02: Unknown (4194352) *65536 +0x03: Unknown (805322752) *16777216 EPD 3312 +0x04: Unknown (3145792) +0x05: P3 Start Location (X 16777216, Y 256) *256 +0x06: Unknown (4194352) *65536 +0x07: Unknown (805322752) *1677216 EPD 3313 +0x08: Unknown (3145792) +0x09: P4 Start Location (X 16777216, Y 256) *256 +0x0A: Unknown (4194352) *65536 +0x0B: Unknown (805322752) *16777216 EPD 3314 0x0C: Unknown (3145792) +0x0D: P5 Start Location (X 16777216, Y 256) *256 +0x0E: Unknown (12582960) *65536 +0x0F: Unknown (805355520) *16777216 EPD 3315 +0x10: Unknown (3145920) +0x11: P6 Start Location (X 16777216, Y 256) *256 +0x12: Unknown (12582960) *65536 +0x13: Unknown (805355520) *16777216 EPD 3316 +0x14: Unknown (3145920) +0x15: P7 Start Location (X 16777216, Y 256) *256 +0x16: Unknown (12582960) *65536 +0x17: Unknown (805355520) *16777216 EPD 3317 +0x18: Unknown (3145920) +0x19: P8 Start Location (X 16777216, Y 256) *256 +0x1A: Unknown (12582960) *65536 +0x1B: Unknown (805355520) *16777216 Base Value (when start locations are placed top-left of the map) Player 1: 3145792 Player 2-8: 1073754112 Already you can tell that all of this is confusing and doesn't make a lot of sense on its own, so here's a tutorial that will hopefully clear up some things: 1.To check if the position of Player 3's Start Location is at the location you placed it at, look at EPD 3312. Look at the X pixel placement of P3 start location in your map editor and write it down. Look at the Y pixel placement of P3 start location in your map editor and write it down. Now plug those numbers into this formula: Memory at Death Table + 3312 is exactly (3145792 + (((Start Location X * 16777216) + (Start Location Y * 256)) * 256) + (4194352 * 65536) + (805322752 * 16777216)) 3145792, 4194352, and 805322752 are "constants," that you need to know and account for in the equation. Because EPD reads 4 bytes at once (this formula does not work for Player 1 and Player 2 Start Location. If you understood everything that was said so far, then coming up with another formula that's specific to those two will be easy). The trigger should work, and if it doesn't, then either you have miscalculated or these "unknowns", are not constant. Challenge - Find out what those unknowns are actually for, and/or create an easier formula than the one I have come up with. |
| Vanilla Location Table | 0x58D740 · EPD 3319 · 20B × 64 · SC:R Simple Data — This Location Table is not used in the Expansion (Brood War)! |
| Switch Table | 0x58DC40 · EPD 3639 · 32B × 1 · SC:R Simple Data — +0x00 (EPD 3639) Switch 1: *1 Switch 2: *2 Switch 3: *4 Switch 4: *8 Switch 5: *16 Switch 6: *32 Switch 7: *64 Switch 8: *128 ... Switch 32: *2147483648 When none of the switches from 1 to 32 are set, the value of the address is: 0 When only switch 8 is set, the value of the address is: 128. When only switch 2 and switch 8 are set, the value of the address is: 2 + 128 = 130. +0x04 (EPD 3640): Switch 33-64 +0x08 (EPD 3641): Switch 65-96 +0x0C (EPD 3642): Switch 97-128 +0x10 (EPD 3643): Switch 129-160 +0x14 (EPD 3644): Switch 161-192 +0x18 (EPD 3645): Switch 193-224 +0x1C (EPD 3646): Switch 225-256 |
| Time Pause State | 0x58F04C · EPD 4922 · 4B × 1 · SC:R Simple Data — If FALSE, the value of the address is 0, and the countdown timer is not paused. if TRUE, the value of the address is greater than 0, and the countdown timer is paused. |
| Is Expansion | 0x58F440 · EPD 5175 · 1B × 1 · SC:R Simple Data — 1 if your game is using the Expansion set. |
| Input Procedures | 0x5968A0 · EPD 0 · 4B × 19 · SC:R support level not stated — A list of functions that determine how user input is handled. |
| Game Mode | 0x596904 · EPD 12648 · 2B × 1 · SC:R Unsupported — Determines the game's mode. In-Game, in-menu, battle.net, etc. The official name is gwGameMode. |
| Virtual Key Array | 0x596A18 · EPD 12717 · 1B × 256 · SC:R Backed By Code — An array containing the state of all the virtual key codes (VK_). |
| BW Technologies Available (24-43) | 0x58F050 · EPD 0 · 20B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 20 bytes per row, 1 byte per tech. |
| BW Technologies Researched (24-43) | 0x58F140 · EPD 0 · 20B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 20 bytes per row, 1 byte per tech. |
| BW Upgrades Available (46-60) | 0x58F278 · EPD 0 · 15B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 15 bytes per row, 1 byte per upgrade. |
| BW Upgrades Researched (46-60) | 0x58F32C · EPD 5106 · 15B × 12 · SC:R Simple Data — Table layout is reverse compared to deaths/kills table. 1 row per player, 46 bytes per row, 1 byte per upgrade. ALL BW upgrades addresses generated automatically in Eud Editor 2 0.17.9.7 are wrong Please follow contents below Offset: 15 * Player + Offs BW Upgrades: ID Offs. Name 00 +0 unknown upgrade46 01 +1 argus jewel (corsair +50) 02 +2 unknown upgrade48 03 +3 arugs talisman (DA +50) 04 +4 unknown upgrade50 05 +5 caduceus reactor (medic +50) 06 +6 chitinous plating 07 +7 anabolic synthesis 08 +8 charon booster 09 +9 unknown upgrade55 10 +10 unknown upgrade56 11 +11 unknown upgrade57 12 +12 unknown upgrade58 13 +13 unknown upgrade59 14 +14 unknown upgrade60 |
| Number of Buildings Owned | 0x581F94 · EPD -8436 · 4B × 12 · SC:R Simple Data |
| Campaign list pointers | 0x5122A0 · EPD 0 · 4B × 6 · SC:R support level not stated — Pointer to memory location of details of first mission in SC zerg, SC terran, SC protoss, BW zerg, BW terran and BW protoss campaigns Data pointed to: http://farty1billion.dyndns.org/EUDDB/?pg=entry&id=423 |
| Establishing shot pointers | 0x4FFF60 · EPD 0 · 8B × 65 · SC:R support level not stated — 64 entries defining campaign mission prologue/establishing shots 1 entry defining campaign mission epilogue (hybrids bonus mission) INT pointer to script filename INT mapdata.dat index |
| Screen Coordinate Y | 0x628470 · EPD 161859 · 4B × 1 · SC:R Read Only — The position of the screen on the Y Axis. Note that it's locked on an 8 pixel grid, so 2 would mean 16 pixel. |
| Screen Coordinate X | 0x628448 · EPD 161849 · 4B × 1 · SC:R Read Only — The position of the screen on the X Axis. Note that it's locked on an 8 pixel grid, so 2 would mean 16 pixel. |
| Mouse Coordinate X | 0x6CDDC4 · EPD 331416 · 4B × 1 · SC:R Simple Data — Relative to the screen. |
| Mouse Coordinate Y | 0x6CDDC8 · EPD 331417 · 4B × 1 · SC:R Simple Data — Relative to the screen. |
| Location Table | 0x58DC60 · EPD 3647 · 20B × 255 · SC:R Simple Data — +0x00 (EPD 3647) This is the LEFT position of the location (X1). +0x04 (EPD 3648) This is the TOP position of the location (Y1). +0x08 (EPD 3649) This is the RIGHT position of the location (X2). +0x0C (EPD 3650) This is the BOTTOM position of the location (Y2). +0x10 (EPD 3651) String ID: Look in the String Editor of the Map Editor you're using Find the name of the location within it Now count all the strings that are above it, and add 1 to the total number. The number you came to is the String ID for that location Flags (Affect Layers): Low Ground: 65536 Med Ground: 131072 High Ground: 262144 Low Air: 524288 Med Air: 1048576 High Air: 2097152 When all flags are enabled, the value of the address is: 4128768 + String ID When all flags are disabled, the value of the address is: String ID NOTE: the 64th (1-based) location is "Anywhere." |
| Hotkeyed Unit | 0x57FE60 · EPD -10561 · 864B × 8 · SC:R Simple Data — Purpose To detect the hotkey and then the slot that a unit is stored in and/or the unit that is stored in a slot within a hotkey for any player. Math The total amount of units that can be hotkeyed is 12. There are 18 hotkeys in existence. 12 * 18 = 108 108 is the total amount of EPD values for each player. If we want to check if there's a unit in the seventh slot within the hotkey CTRL+0 for Player 1, -10561 + 7 = -10555. If we want to check if there's a unit in the first slot within the hotkey CTRL+1 for Player 1, -10561 + 12 = -10550. If we want to check if there's a unit in the first slot within the hotkey CTRL+0 for Player 2, -10561 + 109 = -10452. 12 * 9 * 8 = 864 864 is the total combined number of all players' EPD value. We can check any slots within any hotkeys for any player to detect if any unit exist. At least 1 We can check any slots within any hotkeys for any player to detect if no unit exist. At least 3749 but what if we want to detect if a specific unit within the map is hotkeyed in a certain slot? Unit alpha ID (Unit Entity) Index # Alpha ID 0 2049 1 3748 [+1700] 2 3747 [-1] 3 3746 [-1] Confused? Hint: http://www.staredit.net/topic/14226/ (Read Section 6) ^^^^^^^Parts of this seem to be wrong. This is the magic formula: with the variables p = player number (starting at 0 up to 7) h = hotkey number i = index in a hotkey (starting at 0 up to 11) u = unit id then if player p has unit u hotkeyed in index i of hotkey h, we have, for u > 0 memory(-10561+(p 216)+(h 12)+i) == 3749 - u, and for u = 0, memory(-10561+(p 216)+(h 12)+i) == 2049. ============== Edited by PereC, 2021.06.25: Each u32 stores the Alpha ID of a hotkeyed unit: Starting from 0x57FE60: All the hotkeyed unit of P1 0x57FE60: Alpha ID of the 1st unit in P1 hotkey 0 0x57FE64: Alpha ID of the 2nd unit in P1 hotkey 0 0x57FE68: Alpha ID of the 3rd unit in P1 hotkey 0 ... 0x57FE60 + 4 * 11: Alpha ID of the 12th unit in P1 hotkey 0 0x57FE60 + 4 * 12: Alpha ID of the 1st unit in P1 hotkey 1 0x57FE60 + 4 * 13: Alpha ID of the 2nd unit in P1 hotkey 1 ... 0x57FE60 + 4 * 119: Alpha ID of the 12th unit in P1 hotkey 9 From 0x57FE60 + 4 * 120 to 0x57FE60 + 4 * 216: ?????? Starting from 0x57FE60 + 216: All the hotkeyed unit of P2 Starting from 0x57FE60 + 216 * 2: All the hotkeyed unit of P3 ... Starting from 0x57FE60 + 216 * 7: All the hotkeyed unit of P8 Personally I don't know why there are 864 bytes for each player. Intuitively there should be 4 * 12 * 10 = 480 bytes for each player, cuz there are 10 hotkeys and 12 units within a hotkey. ====================================== Further written by AINukeHere. (2021.08.24) The above is very confusing because there are many wrong parts. There are 12 unit slots for each hotkey, and each unit ID (Alpha ID) is 4 bytes. That is, 48 bytes per hotkey. Each player holds 18 hotkeys. The 10 hotkeys (indices 0 to 9) are hotkeys designated by Ctrl+Number. The remaining 8 (indices 10 to 17) hotkeys are units that are automatically saved whenever multiple units are selected. It can be selected with Alt+Left Mouse Click. So the allocated memory per player is 4 12 18 = 864 bytes. |
| Emp Shockwave Missiles (???) | 0x59CDE0 · EPD 0 · 4B × 1 · SC:R support level not stated — The total amount of missiles from *all science vessel that you can see on the map. *: Not completely tested and confirmed. |
| Mouse Left Click | 0x5968AC · EPD 12626 · 4B × 1 · SC:R support level not stated — Detects the left click of a mouse. Use only actions that won't desync (check the Reference). |
| Displayed HP | 0x6CA94D · EPD 0 · 4B × 1 · SC:R support level not stated — The current HP of the selected unit. |
| Current Button Set | 0x68C14C · EPD 264058 · 4B × 1 · SC:R Simple Data — The button set ID of the currently selected single unit. There is a 1-to-1 relationship between unit ID and it's button set, eg the buttonset for terran ghost is ID 1. There are also several group buttonsets, for when multiple workers, or burrowable, or cloakable units etc selected: 244 - generic units, shows move/stop/attack/guard/patrol buttons 245 - workers, shows move/stock/attack + gather and return resources buttons 246 - cloakable units, as per 'generic' + cloak/decloak buttons 247 - burrowable units, as per 'generic' + burrow/unburrow buttons Refer to button tabs in Firegraft. Through experimentation, buttons occasionally have a delay of up to 2-3 seconds before changes in game state will update the button status (eg when a new tech is available, a button that relies on that tech may stay greyed out for 2-3 seconds). Setting this address with a different value (eg 244) is a way to force a refresh for the currently displayed button set. Note that SC constantly updates this address to reflect the current unit's actual button set, to prevent units from being able to action commands that they shouldn't have access to (the infamous 1.13 patch series to stop any building from making any unit). |
| Inverse System Time | 0x51CE8C · EPD 0 · 4B × 1 · SC:R support level not stated — Value : -GetTickCount() (about 10ms error) Used for input polling. See .text:004D98D8 for more info. Can be used to detect lagging or syncing with game audio. |
| Trigger Condition Function Array | 0x515A98 · EPD 0 · 4B × 24 · SC:R support level not stated — Contains function pointers for all trigger conditions. |
| Mission Briefing Action Function Array | 0x519E50 · EPD 0 · 4B × 10 · SC:R support level not stated — Contains function pointers for all mission briefing actions. |
| Trigger Execution Timer (Hyper triggers) | 0x6509A0 · EPD 203151 · 4B × 1 · SC:R Simple Data — When this value reaches 0, trigger loop executes. Preserve to 0 for single-tick hypers, or 1 for traditional hyper triggers (2 ticks). Wait(n) will make this value 1 after ceil(n / 'ms per tick') + 1, so Wait(0) makes this value to 1, making the trigger loop execute every 2 ticks. |
| Larva Count | 0x585474 · EPD -5052 · 12B × 1 · SC:R support level not stated — (Why does this entry exist? Should be within the Completed Unit Counts Table) The amount of larva a hatchery, lair, or hive currently have. |
| Order Destination Invalid (???) | 0x59CD3C · EPD 0 · 4B × 1 · SC:R support level not stated — "When this address is frozen and you order a unit to try to walk into water or other invalid terrain, the unit will walk in place when it determines it cannot complete the destination, instead of coming to a full stop." -Roy |
| CUNIT - Idle Order Timer | 0x59CCF9 · EPD 19045 (+1) · 4B × 1 · SC:R support level not stated — (*256) While the unit is specifically following the order to move to an area, the value of this address is 0. When it is not moving, the value appears to randomize itself. When the unit is given an order to attack an area, it switches from randomizing itself to being zero repeatedly with a delay. This might explain why units that are attacking are slower at firing the auto-acquired target once it is in range than it is to patrol towards them instead. Note that a building is always zero. 0x0059CCFA (*65536) 0x0059CCFB (*16777216) |
| Last Time for Drop Window | 0x59CC78 · EPD 19013 · 4B × 1 · SC:R Simple Data — Last GetTickCount Win32 API Time for Drop Window shown. Whenever a player disconnects, StarCraft will display drop window. If 2 minutes elapsed since last drop window showed, StarCraft will reset the drop timer to 45 seconds. |
| Accept Commands | 0x6556E0 · EPD 208095 · 4B × 1 · SC:R Unsupported — If 1, commands are accepted. If 0, all commands are ignored. |
| s_button Offset | 0x5187E8 · EPD -116447 · 12B × 250 · SC:R Backed By Code — +0x00 (EPD -116447) Number of available buttons. 0 = Button disabled +0x04 (EPD -116446) s_button Address. +0x08 (EPD -116445) Unknown. 0 ~ 227 = Units buttons 228 ~ 249 = Internal buttons (228 = Blank) |
| Pointer to "MTXM" map tile data | 0x5993C4 · EPD 15384 · 4B × 1 · SC:R Backed By Code |
| GRP Array | 0x51CED0 · EPD -111909 · 4B × 999 · SC:R Read Only — Pointer to each GRP for each images.dat entry |
| Player Units available | 0x57F27C · EPD -11322 · 228B × 12 · SC:R Simple Data — 1 row of 228 bytes, 1 per unit, per player offset + (Cp * 228) + 100 |
| Network Mode Delay | 0x51CE84 · EPD -111928 · 4B × 1 · SC:R Read Only — 1 in single player, 2 in LAN, 5 on battle.net. Described at http://wiki.teamliquid.net/starcraft/LatencyChanger Editted by PereC, 2021.03.31: In SC:R, the value is always 1000 |
| Network Mode Delay 2 | 0x51CE88 · EPD -111927 · 4B × 1 · SC:R support level not stated — Appears to be a duplicate of 0x0051CE84. Not sure which value is the one that is actually used. Editted by PereC, 2021.03.31: In SC:R, the value is always 1000 |
| First Empty Unit | 0x628438 · EPD 161845 · 4B × 1 · SC:R Backed By Code — The address of the unit structure to be created -added by jehn |
| Last Unit Pointer | 0x6283F8 · EPD 0 · 4B × 1 · SC:R support level not stated — The value is pointer to the last unit in the unitNodeTable. -added by jehn |
| Trigger Wait Timers | 0x650980 · EPD 0 · 4B × 8 · SC:R support level not stated — Wait action timers for each player |
| Current Player Selection | 0x6284B8 · EPD 161877 · 4B × 12 · SC:R Backed By Code — Selection group of the current player Seems to be duplicated at 0x59724C and 0x597208? |
| MapSize | 0x57F1D4 · EPD -11364 · 2B × 2 · SC:R Simple Data — 2byte Width 2byte Height width + 65536*height |
| stat_txt.tbl pointer | 0x6D1238 · EPD 334773 · 4B × 1 · SC:R Backed By Code |
| Game Subtype ID | 0x59BA5C · EPD 0 · 4B × 1 · SC:R support level not stated — Subtype ID specified in GOT template. Top Vs. Bottom: Number is the number of players on top (1 = "1 vs #", 2 = "2 vs #", etc.) Greed: 1=2500, 2=5000, 3=7500, 4=10000 Slaughter: 1=15, 2=30, 3=45, 4=60 Team Melee/FFA/CTF: 1=2 teams, 2=3 teams, 3=4 teams |
| Images Damage Overlay Frame | 0x5240D0 · EPD -104613 · 1B × 999 · SC:R Simple Data |
| First Image Pointer | 0x57EB68 · EPD -11775 · 4B × 1 · SC:R Read Only — Pointer to the first CImage instance. |
| Drop Timer | 0x59CC80 · EPD 19015 · 4B × 1 · SC:R Simple Data — The time remaining before a player is dropped. See the address 0x59CC78 (Last Time of Drop Window) for application. |
| Last Image Pointer | 0x57EB70 · EPD -11773 · 4B × 1 · SC:R Read Only — Pointer to the last CImage instance. |
| Sprite Table | 0x629D98 · EPD 163469 · 36B × 2500 · SC:R Read Only — [SCR: See individual entries] Difference between each entry: 9 Player ID's Struct: https://github.com/bwapi/bwapi/blob/master/bwapi/BWAPI/Source/BW/CSprite.h Populates like CUnit, with 2nd entry at the rearmost of the table, and the 3rd the 2nd rearmost entry of the table; first entry will be a cursour sprite, having sprite ID of 318. |
| iscript.bin pointer | 0x6D1200 · EPD 334759 · 4B × 1 · SC:R Backed By Code |
| Storm Graphics Palette | 0x1505E670 · EPD 86724803 · 4B × 256 · SC:R Read Only |
| Battle.snp Join Channel | 0x1904613C · EPD 103477110 · 4B × 1 · SC:R Simple Data |
| Battle.snp Join Channel (2) | 0x1904613C · EPD 103477110 · 4B × 1 · SC:R Simple Data |
| Unit Reqs data | 0x514178 · EPD -120955 · 1090B × 1 · SC:R Simple Data — Packed list of opcodes/parameters for data requiremens. First u16 is the unit ID for the script, followed by the script. 0x##FF is an opcode, 0x##00 is a parameter, FFFF is the end of the script. |
| Upgrade Reqs data | 0x5145C0 · EPD -120681 · 838B × 1 · SC:R Simple Data |
| Research Req Data | 0x514908 · EPD -120471 · 318B × 1 · SC:R Simple Data |
| Tech Use Req Data | 0x514A48 · EPD -120391 · 688B × 1 · SC:R Simple Data |
| Order Req Data | 0x514CF8 · EPD -120219 · 1316B × 1 · SC:R Simple Data |
| Player 1 Trigger List | 0x51A280 · EPD -114745 · 4B × 3 · SC:R Backed By Code |
| Player 2 Trigger List | 0x51A28C · EPD -114742 · 4B × 3 · SC:R Backed By Code |
| Player 3 Trigger List | 0x51A298 · EPD -114739 · 4B × 3 · SC:R Backed By Code |
| Player 4 Trigger List | 0x51A2A4 · EPD -114736 · 4B × 3 · SC:R Backed By Code |
| Player 5 Trigger List | 0x51A2B0 · EPD -114733 · 4B × 3 · SC:R Backed By Code |
| Player 6 Trigger List | 0x51A2BC · EPD -114730 · 4B × 3 · SC:R Backed By Code |
| Player 7 Trigger List | 0x51A2C8 · EPD -114727 · 4B × 3 · SC:R Backed By Code |
| Player Alliances | 0x58D634 · EPD 3252 · 12B × 12 · SC:R Simple Data — EPD 3252 0x00: P1 ally status to P1 0x01: P1 ally status to P2 (*256). 0x02: P1 ally status to P3 (*65536). 0x03: P1 ally status to P4 (*16777216). EPD 3253 0x04: P1 ally status to P5. 0x05: P1 ally status to P6 (*256). 0x06: P1 ally status to P7 (*65536). 0x07: P1 ally status to P8 (*16777216). EPD 3254 P1 ally status to P9-P12. EPD 3255 0x0C: P2 ally status to P1. 0x0D: P2 ally status to P2 (*256). etc 0x00: Enemy, 0x01: Ally, 0x02: Allied Victory Note - A player is always allied OR allied victory to themself. I could not confirm through testing if it was just one of them, but in most cases, it's allied. Otherwise assume allied victory instead. |
| Player 8 Trigger List | 0x51A2D4 · EPD -114724 · 4B × 3 · SC:R Backed By Code |
| Fog of War Update Counter | 0x51CE98 · EPD -111923 · 4B × 1 · SC:R Simple Data — Set to 0 to update FoW. Toggle between 0 and 1 in separate trigger cycles to fast update FoW. With single frame hypers: (see 0x006509A0) Set to 1 to fast update Fog of War. Set to 0 to never Fog of War revealed areas. (ie. "war ain't what it used to be" cheat) |
| Number of Factories Razed | 0x582114 · EPD -8340 · 4B × 12 · SC:R Simple Data — Kills for "Factories" stored here. |
| Starting Player Local ID | 0x57F1B0 · EPD -11373 · 4B × 1 · SC:R Simple Data |
| Player Slot Types | 0x57F1B4 · EPD -11372 · 1B × 12 · SC:R Simple Data |
| Player Slot Races | 0x57F1C0 · EPD -11369 · 1B × 12 · SC:R Simple Data |
| Team Game Main Player | 0x57F1CC · EPD -11366 · 1B × 4 · SC:R Simple Data |
| Screen Tile Position | 0x57F1D0 · EPD -11365 · 2B × 2 · SC:R Simple Data |
| Messsage Send To Filter | 0x57F1D8 · EPD -11363 · 2B × 2 · SC:R Simple Data |
| Message Player Filter | 0x57F1DA · EPD -11363 (+2) · 2B × 2 · SC:R Simple Data — Should be within the previous entry |
| Current Music | 0x57F1DE · EPD -11362 (+2) · 2B × 2 · SC:R Simple Data |
| BWGame Unk_f0 | 0x57F1E0 · EPD -11361 · 1B × 1 · SC:R Simple Data |
| Is Custom Single Player | 0x57F1E3 · EPD -11361 (+3) · 1B × 1 · SC:R Simple Data |
| BWGame unk_f4 | 0x57F1E4 · EPD -11360 · 4B × 1 · SC:R Simple Data |
| BWGame unk_f8 | 0x57F1E8 · EPD -11359 · 4B × 1 · SC:R Simple Data |
| Saved Elapsed Seconds | 0x57F240 · EPD -11337 · 4B × 1 · SC:R Simple Data |
| Single Player Race | 0x57F266 · EPD -11328 (+2) · 1B × 1 · SC:R Simple Data |
| Single Player Computer Races | 0x57F267 · EPD -11328 (+3) · 1B × 8 · SC:R Simple Data |
| BWGame unk_17F | 0x57F26F · EPD -11326 (+3) · 1B × 1 · SC:R Simple Data |
| Saved Screen Positions | 0x57F270 · EPD -11325 · 4B × 3 · SC:R Simple Data — Pos 1: -11325 X + 65536*Y Pos 2: -11324 X + 65536*Y Pos 3: -11323 X + 65536*Y |
| BWGame unk_c3c | 0x57FD2C · EPD -10638 · 1B × 8 · SC:R Simple Data |
| BWGame unk_2870 | 0x581960 · EPD -8833 · 1B × 1024 · SC:R Simple Data |
| Default Message Filter | 0x581D60 · EPD -8577 · 1B × 1 · SC:R Simple Data — Controls who you chat with when pressing Enter. (To Allies: hello) 0 = Player0 1 = Player1 2 = Player2 3 = Player3 4 = Player4 5 = Player5 6 = Player6 7 = Player7 8 = All 9 = Allies |
| Player Lose Type | 0x581D61 · EPD -8577 (+1) · 1B × 1 · SC:R Simple Data |
| Player Left | 0x581D62 · EPD -8577 (+2) · 1B × 8 · SC:R Simple Data |
| BWGame unk_2cf2 | 0x581DE2 · EPD -8545 (+2) · 1B × 2 · SC:R Simple Data |
| SC Tech Research In Progress | 0x58D064 · EPD 2880 · 1B × 36 · SC:R Simple Data — Who knows |
| SC Upgrade in Progress Lvl 1 (Unused?) | 0x58D4D8 · EPD 3165 · 1B × 72 · SC:R Simple Data — Who knows |
| SC Upgrade in Progress Lvl 2 (Unused?) | 0x58D520 · EPD 3183 · 1B × 72 · SC:R Simple Data — Who knows |
| SC Upgrade in Progress Lvl 3 (???) | 0x59D568 · EPD 19585 · 1B × 72 · SC:R support level not stated — Who knows |
| Elapsed Time (2) | 0x58D6F8 · EPD 3301 · 4B × 1 · SC:R Simple Data — Game Seconds (1 Game Second = 16 Game Ticks = ~1072ms on normal speed = ~672ms on fastest speed) Reportedly can be modified to prevent flag beacons from creating flags. |
| SC Switch Table (Unused?) | 0x58D6FC · EPD 3302 · 4B × 1 · SC:R Simple Data — 32 switches, probably pre-1.04 when number of switches was increased to 256. |
| Player Victory Status | 0x58D700 · EPD 3303 · 1B × 8 · SC:R Simple Data |
| Leaderboard Has Computer Players | 0x58D708 · EPD 3305 · 4B × 1 · SC:R Simple Data |
| Leader Board Type | 0x58D70C · EPD 3306 · 1B × 1 · SC:R Simple Data |
| Leader Board Condition | 0x58D70D · EPD 3306 (+1) · 1B × 1 · SC:R Simple Data |
| Leader Board Subtype | 0x58D70E · EPD 3306 (+2) · 2B × 1 · SC:R Simple Data |
| Leader Board Goal | 0x58D710 · EPD 3307 · 4B × 1 · SC:R Simple Data |
| Leader Board String Index | 0x58D714 · EPD 3308 · 4B × 1 · SC:R Simple Data |
| BW Tech Research In Progress | 0x58F230 · EPD 0 · 1B × 72 · SC:R support level not stated — [SCR: Simple data] Who knows |
| BW Upgrade In Progress | 0x58F3E0 · EPD 5151 · 1B × 96 · SC:R Simple Data — Who knows |
| BWGame unk_10351 | 0x58F441 · EPD 5175 (+1) · 1B × 1 · SC:R Simple Data |
| Unknown Player Color Something | 0x58F442 · EPD 5175 (+2) · 1B × 8 · SC:R Simple Data |
| BWGame "Literally Unused" | 0x58F44A · EPD 5177 (+2) · 1B × 29604 · SC:R Simple Data |
| Trigger Current Player aka CP Trick | 0x6509B0 · EPD 203155 · 4B × 1 · SC:R Simple Data — Used to dynamically run EUDs or dereference pointers. Sets "Current Player" in triggers to be a reference to a different base address for the deaths table. e.g. Set Deaths("Int:203155", "Terran Marine", Set to, EPD); Set Deaths("Int:203155", "Terran Marine", Add/Subtract, whatever); Set Deaths("Current Player", "Terran Marine", Set to/Add/Subtract, whatever); Example: Implement Set Minerals for current player // Add -11421 to 0x006509B0 (player ID corresponding to 0x0057F0F0) SetMemory(0x6509B0, Add, 0xFFFFD363); // Add 50 to byte offset for that address -- current player will increase target address by 4 bytes for each player that runs it SetDeaths(CurrentPlayer, Add, 50, "Terran Marine"); // Add +11421 to 0x006509B0 to set it back to what it was SetMemory(0x6509B0, Add, 0x00002C9D); Example: Implement a SetKills action for Current Player // Add -2736 to 0x6509B0 (player ID corresponding to 0x005878A4) SetMemory(0x6509B0, Add, 0xFFFFF550); // Current player combined with unit ID now references the correct target address in the Kills table) // This SetDeaths is now really SetKills to add/subtract/set to for unit of choice SetDeaths(CurrentPlayer, Subtract, 1, "Terran Ghost"); // Add +2736 to 0x006509B0 to set it back to what it was SetMemory(0x6509B0, Add, 0x00000AB0); Note: Set Deaths needs to be for current player, P1/P2/etc. would modify the normal deaths table. Note2: Cannot use Any Unit/Men/Buildings/Factories for the unit, those do have Unit IDs, are not stored in the Kills table, and would overflow into other areas. |
| TranWire.grp pointer | 0x68C1F4 · EPD 264100 · 4B × 1 · SC:R Backed By Code — Overwriting a particular unit's frame offset with a different frame offset can change the image used for that unit. GRP header: u16 frameCount u16 width u16 height GRP Frame (* frameCount) u8 x u8 y u8 w u8 h u32 offset |
| GrpWire.grp Pointer | 0x68C1FC · EPD 264102 · 4B × 1 · SC:R Backed By Code — Overwriting a particular unit's frame offset with a different frame offset can change the image used for that unit. GRP header: u16 frameCount u16 width u16 height GRP Frame (* frameCount) u8 x u8 y u8 w u8 h u32 offset |
| Wirefram.grp Pointer | 0x68C204 · EPD 264104 · 4B × 1 · SC:R Backed By Code — Overwriting a particular unit's frame offset with a different frame offset can change the image used for that unit. GRP header: u16 frameCount u16 width u16 height GRP Frame (* frameCount) u8 x u8 y u8 w u8 h u32 offset |
| AIScript pointer | 0x68C104 · EPD 264040 · 4B × 1 · SC:R Backed By Code |
| BWScript pointer | 0x68C108 · EPD 264041 · 4B × 1 · SC:R Backed By Code |
| Damage type/factor multipliers vs unit size | 0x65678C · EPD 209162 · 20B × 5 · SC:R support level not stated — (What's this?) |
| Display Text | 0x640B60 · EPD 186879 · 218B × 13 · SC:R Backed By Code — Line IDs: 0-10: display text lines (first line defined by 0x640B58 - Next Display Text Line) 11: ? 12: status message |
| Next Display Text Line | 0x640B58 · EPD 186877 · 4B × 1 · SC:R Simple Data — First line to be drawn on screen or written to. Changing this value to 11 or 12 and then doing a Display Text action will allow displaying a status message. |
| Send Message Type | 0x68C144 · EPD 264056 · 4B × 1 · SC:R Simple Data — Can be used to check if send message box is open (At Least 1) |
| Active Tile Buffer | 0x6D0E84 · EPD 334536 · 4B × 1 · SC:R Unsupported — Pointer to u16 array of active map tiles. |
| Last Random Number | 0x51CA14 · EPD -112212 · 4B × 1 · SC:R Simple Data — Randomization seed for the next random number, mask with 0x7FFF0000 for the last returned number. int getRandomNumber(){ lastRandomNumber = lastRandomNumber * 0x15A4E35 + 1; return (lastRandomNumber >> 16) & 0x7FFF; } |
| glScrollPixelX | 0x62848C · EPD 161866 · 4B × 1 · SC:R Read Only — Duplicate of screen coordinates? |
| glScrollPixelY | 0x6284A8 · EPD 161873 · 4B × 1 · SC:R Read Only — Duplicate of screen coordinates? |
| gfpCellMap | 0x628494 · EPD 161868 · 4B × 1 · SC:R Backed By Code — Pointer to VX4 megatile buffer? |
| Creep Tile Backup Buffer | 0x6D0C68 · EPD 334401 · 4B × 1 · SC:R Unsupported — Pointer to the u16 buffer that stores the tile IDs of tiles overwritten by creep in the Active Map Tile buffer. Values are normally 0 until a creep tile replaces them. |
| Tile Buffer Height | 0x6D0C6C · EPD 334402 · 4B × 1 · SC:R Unsupported — Copy of Map Height? |
| Tile Function Pointers | 0x6D0C70 · EPD 334403 · 4B × 4 · SC:R Unsupported — 0x006D0C70 -> 0x0047E2D0 -- refreshes map tiles for drawing? 0x006D0C74 -> isCreepCovered -- checks if a tile is creep 0x006D0C78 -> isTileVisible -- checks if a player can see the tile 0x006D0C7C -> null pointer? -- I couldn't find what function is actually put here |
| Tile Buffer Width | 0x6D0F08 · EPD 334569 · 4B × 1 · SC:R Unsupported — Copy of Map Width |
| Tile Flags Pointer | 0x6D1260 · EPD 334783 · 4B × 1 · SC:R Backed By Code — Pointer to (Map Width)x(Map Height) array of u32 flags: 0x000000xx - Visibility Flags -- bits correspond to each player 0x0000xx00 - Explored Flags -- bits correspond to each player 0x00010000 - Walkable 0x00020000 - Unused? 0x00040000 - Unwalkable 0x00080000 - Unused? 0x00100000 - Unused? 0x00200000 - Unused? 0x00400000 - Has Creep 0x00800000 - Unbuildable (i.e., water tiles) 0x01000000 - Low Ground 0x02000000 - Med Ground 0x04000000 - High Ground 0x08000000 - Occupied (i.e. contains a building) 0x10000000 - Creep Receeding 0x20000000 - Cliff Edge 0x40000000 - Temporary Creep 0x80000000 - Unused? Taken from: https://github.com/bwapi/bwapi/blob/master/bwapi/BWAPI/Source/BW/Structures.h#L80 |
| CV5 Pointer | 0x6D5EC8 · EPD 339673 · 4B × 1 · SC:R Backed By Code |
| Creep Overlay Buffer | 0x6D0E80 · EPD 334535 · 4B × 1 · SC:R Unsupported — Pointer to u8 flags relating to the creep overlay for each map tile. |
| gameTextCounters | 0x640B24 · EPD 186864 · 4B × 12 · SC:R Unsupported — Contains the tick count for when the message should disappear. Corresponds to the same index of game text. |
| Cunit - Shield Gain | 0x59CD52 · EPD 19067 (+2) · 2B × 1 · SC:R Supported — Shield gain on construction (bwapi) |
| Minimap State | 0x6D5BBE · EPD 0 · 4B × 1 · SC:R support level not stated — Minimap State - Pressing Tab, Shift+tab changes this 0x00 - default 0x01 - Enemies red, allies yellow 0x02 - Enemies red, allies yellow, ememy units red, ally units yellow, your units teal |
| Damage type/factor multipliers vs unit size (2) | 0x65678C · EPD 209162 · 20B × 5 · SC:R support level not stated — (What's this?) |
| Game Brightness | 0x657A9C · EPD 210382 · 4B × 1 · SC:R Simple Data — Darkens the screen without affecting UI elements. Appears to be a modifier for Fog of War Masks? Technically a 1 byte value, but the high bytes are padding and not used. Valid values are 0-31, with 0 being black and 31 being maximum brightness. Values >31 appear to just be black. The value appears to be the index in tileset*\dark.pcx remapping palette. |
| Fog of War Masks | 0x657AA0 · EPD 210383 · 1B × 4096 · SC:R Backed By Code — Sets the brightness parts of the fog of war masks. Corresponds to dark.pcx indexes, with valid values from 0 (black) to 31 (full brightness). Values >31 in 1.16.1 are glitched colors. 4 bytes at 0x00657AA0 correspond to unexplored fog. 4 bytes at 0x0065825C correspond to explored areas in fog. 4 bytes at 0x00658A9C correspond to visible areas. Other addresses relate to the transitions between these areas. Setting to 0x1F1F1F1F will fully clear the mask, though units and buildings may not be visible or selectable depending on the actual fog state. Additionally, using different values for each byte, e.g. 0x1F001F00, will create vertical stripes (tested in 1.16.1). |
| Mouse Button State | 0x6CDDC0 · EPD 331415 · 4B × 1 · SC:R Simple Data — 2: Left button pressed. 8: Right button pressed. 32: Middle button pressed Edited by PereC, 2021.03.29 |
| Network Buffer | 0x654880 · EPD 207175 · 496B × 1 · SC:R Backed By Code — Game Command Queue. See https://github.com/phu54321/vgce/blob/master/docs/Blizzard/Starcraft/packets2.txt Also https://github.com/bwapi/bwapi/blob/main/bwapi/BWAPI/Source/BW/OrderTypes.cpp Not sure if the size is 496, the value in 0x0057F0D8 Edited by PereC, 2021.04.03 |
| Network Buffer Used | 0x654AA0 · EPD 207311 · 4B × 1 · SC:R Supported — Command queue (0x00654880) space used. Edited by PereC, 2021.04.03 |
| Mouse and Keyboard Scroll Speed | 0x513B68 · EPD -121343 · 7B × 7 · SC:R Supported — Edited by PereC, 2021.04.12 For SC:R, In menu - Options - Speed, you can set Key Scroll Speed and Mouse Scroll Speed, each has 7 levels. For each level, the Scroll Speed has 7 different values, each 1 byte. level 1: 0x513B68, 0x513B69, 0x513B6A, ..., 0x513B6E level 2: 0x513B6F, 0x513B70, 0x513B71, ..., 0x513B72 ... level 7: 0x513B92, 0x513B93, 0x513B94, ..., 0x513B98 If you set all the 7 bytes of level2 to 0, then you can't scroll the screen by mouse if you set the Mouse Scroll Speed to level2 in game, but you can still scroll screen by keyboard if Key Scroll Speed is not in level2. If you set all the 49 bytes to 0, then you can't scroll the screen using mouse or keyboard. See: https://cafe.naver.com/edac/39325 |
| Mouse Scroll Speed Array | 0x513B68 · EPD -121343 · 7B × 7 · SC:R Supported — Amount of Mouse Scroll Speed. Array index dependent on mouse scroll level (0 to 6). |
| Unit Infomation | 0x5193A0 · EPD -115697 · 12B × 228 · SC:R support level not stated — See Description Edited by PereC, 2021-06-05 In SC:R, 64-bit starcraft ignores this part. You are suggested to use 32-bit starcraft if this part of memory is modified by EUD triggers. +0x0: Unit ID +0x4: Status Function +0x8: Display Function |
| Player 1 Selection Group | 0x6284E8 · EPD 161889 · 4B × 12 · SC:R Backed By Code — List of unit node pointers for Player's current group selection. Points to address 0x0059CCA8 |
