-
Notifications
You must be signed in to change notification settings - Fork 0
Embedded Exe Strings
Vairn edited this page Jun 2, 2026
·
1 revision
Navigation: Home - Game systems - Embedded Exe Strings
Generated by tools/extract_embedded_strings.py.
[TOC]
-
Source executable:
C:\_20260421_\D-REC\development\MM2\mm2(181524 bytes) -
Segment manifest:
EXTRACTED/ghidra/mm2_segments.json -
Code hunk 0: load
0x00000, size0x2593C(153916 bytes) — main game code + embedded ASCII tables -
Data hunk 0: load
0x2593C, size0x21AC— mostly numeric tables; few ASCII strings -
Code hunk 1 (overlay): load
0x27B1C, size0x3CB8— boot errors, Amiga library names,.datfilenames -
Capstone listing:
EXTRACTED/mm2.capstone.asm(PEA PC-relative refs parsed for xrefs)
-
Embedded exe strings: raw ASCII, NUL or inline
N]Nu/XON]Nutag prefixes before UI lines. -
str.dat:(byte + 0x1C) & 0xFFwith0x01→ newline — not used for exe-embedded text. -
event.dat: per-location0xFF-terminated string banks; door titles & scripted dialogue.
| Metric | Count |
|---|---|
| Raw ASCII runs (quality-filtered) | 982 |
| PEA (PC) xrefs attached | 128 |
| Also in str.dat | 6 |
| Also in event.dat | 6 |
| Exe-only (≥8 clean chars) | 680 |
| str.dat blocks loaded | 73 |
| event.dat strings loaded | 1270 |
| Category | Count |
|---|---|
misc_code |
606 |
early_tables |
77 |
town_chests_traps |
68 |
code_overlay |
46 |
town_training |
34 |
town_pub_quests |
27 |
combat |
24 |
town_inn |
23 |
town_temple |
15 |
town_blacksmith |
14 |
data_filenames |
13 |
boot_errors |
9 |
amiga_libraries |
7 |
town_names |
5 |
ui_menus |
5 |
boot_meta |
3 |
shop_common |
3 |
town_guild |
3 |
Handlers (OP_0E selectors) live in code hunk 0; most scene dialogue for
pub/shop/temple is in str.dat, while inn/rest/chest/trap/shop chrome
and many menu labels are embedded next to handlers:
Inn / rest / registry / dismiss hirelings. 22 strings.
-
0x19D47[exe-only] Rest complete, no encounters. -
0x19EBF[exe-only] Too dangerous! -
0x19ED3[exe-only] Rest here? (Y/N) -
0x19EE4[exe-only] Not enough gold - Dismiss hirelings -
0x19F08[exe-only] A jolly old innkeeper waves his quill -
0x19F2E[exe-only] in the air as he asks, "Will you sign -
0x19F54[exe-only] the registry (y/n)?" -
0x19F6A[exe-only] The well-groomed whiskers of the old -
0x19F8F[exe-only] concierge twitch as he proclaims, "We -
0x19FB5[exe-only] have the finest suites. Sign -
0x19FD3[exe-only] in (y/n)?" -
0x19FDE[exe-only] Ordigon, the elderly innkeeper, rubs -
0x1A003[exe-only] his bushy white mustache and says, -
0x1A026[exe-only] We have cozy, warm beds. Sign-in -
0x1A051[exe-only] The aging host of the sleezy inn -
0x1A072[exe-only] leers at you from behind his desk and -
0x1A098[exe-only] asks, "I suppose your party only wants -
0x1A0BF[exe-only] one room. Stay (y/n)?" -
0x1A0D7[exe-only] The proprietor blows a pile of dust -
0x1A0FB[exe-only] off the register and asks eagerly, -
0x1A11E[exe-only] Can I sign you in (y/n)?" -
0x1A1A4[exe-only] gRBgBg?<
Pub-adjacent quest NPCs (Lord Hoardall etc.). 27 strings.
-
0x188DA[exe-only] The huge chamber is overstocked with -
0x18903[exe-only] many unusual items. Lord Hoardall -
0x18926[exe-only] begs your party for a favor. Will -
0x18949[exe-only] you gather more items for him (y/n)? -
0x1896E[exe-only] Heads of monstrous beasts adorn the -
0x18992[exe-only] walls in this room. Will you gather -
0x189B7[exe-only] more trophies for Lord Slayer (y/n)? -
0x189DE[exe-only] Your party must bring me the three -
0x18A03[exe-only] hidden swords of chivalry: Valor, -
0x18A27[exe-only] Honor, and Nobility. Good luck! -
0x18A4C[exe-only] Your party must defeat the three royal -
0x18A73[exe-only] envoys of evil that wreak havoc to the -
0x18A9A[exe-only] north. One flies, one slithers, and -
0x18AC0[exe-only] one crawls. Good luck! -
0x18ADE[exe-only] and return it to me. I wish you -
0x18B00[exe-only] luck, fair travelers! -
0x18B1D[exe-only] and destroy it. I wish you luck, -
0x18B40[exe-only] fair travelers! -
0x18B5A[exe-only] At what level of -
0x18B6B[exe-only] difficulty do you -
0x18B7D[exe-only] wish to aid Lord -
0x18B8E[exe-only] A) Page's Quest -
0x18B9E[exe-only] B) Squire's Quest -
0x18BB0[exe-only] C) Knight's Quest -
0x18BC2[exe-only] D) Lord's Quest -
0x18BD2[exe-only] Your party has already been quested -
0x18BF6[exe-only] to seek out the
Chest labels + trap messages. 66 strings.
-
0x1A2C2[exe-only] Wooden Crate -
0x1A2D1[exe-only] Tin Lockbox -
0x1A2DF[exe-only] Steel Safe -
0x1A2EC[exe-only] Copper Safe -
0x1A2FA[exe-only] Bronze Safe -
0x1A308[exe-only] Steel Safe -
0x1A315[exe-only] Gold Safe -
0x1A321[exe-only] Stasis Safe -
0x1A32F[exe-only] Hidden Cache -
0x1A33E[exe-only] Wicker Chest -
0x1A34D[exe-only] Rusty Trunk -
0x1A35B[exe-only] Copper Box -
0x1A368[exe-only] Bronze Box -
0x1A375[exe-only] Steel Box -
0x1A381[exe-only] Gold Box -
0x1A38C[exe-only] Doomsday Box -
0x1A39B[exe-only] Rotting Box -
0x1A3A9[exe-only] Rusty Chest -
0x1A3B7[exe-only] Stone Chest -
0x1A3C5[exe-only] Copper Chest -
0x1A3D4[exe-only] Bronze Chest -
0x1A3E3[exe-only] Steel Chest -
0x1A3F1[exe-only] Gold Chest -
0x1A3FE[exe-only] Statis Box -
0x1A40B[exe-only] Wooden Chest -
0x1A41A[exe-only] Rusty Chest -
0x1A428[exe-only] Copper Chest -
0x1A437[exe-only] Bronze Chest -
0x1A446[exe-only] Silver Chest -
0x1A455[exe-only] Gold Chest -
0x1A462[exe-only] Platinum Box -
0x1A471[exe-only] Doomsday Box -
0x1A480[exe-only] Ceramic Case -
0x1A48F[exe-only] Lacquer Box -
0x1A49D[exe-only] Jewelled Box -
0x1A4AC[exe-only] Copper Trunk -
0x1A4BB[exe-only] Bronze Trunk -
0x1A4CA[exe-only] Silver Trunk -
0x1A4D9[exe-only] Gold Trunk -
0x1A4E6[exe-only] Statis Box - … +26 more (see JSON)
Blacksmith shop UI strings. 6 strings.
-
0x1C51E[exe-only] Blacksmith -
0x1C537[str.dat] G-Gather Gold -
0x1C545[exe-only] Other Char -
0x1C7E2[str.dat] Select (A-F) -
0x1CD24[exe-only] Buy (A-F) -
0x1CFC0[exe-only] Buy (A-C)
Temple UI + donation/heal strings. 7 strings.
-
0x1D6A1[str.dat] G-Gather Gold -
0x1D6AF[exe-only] Other Char -
0x1D6BC[exe-only] Select (A-E) -
0x1E26E[exe-only] has been healed. -
0x1E283[exe-only] is healthy. -
0x1E291[exe-only] Select another -
0x1E2A2[exe-only] character.
Mage guild UI. 2 strings.
-
0x1E896[exe-only] Mage Guild -
0x1E8A7[exe-only] Learn (A-D)
Training enrollment strings. 29 strings.
-
0x1F87C[exe-only] is not affected! -
0x1F892[exe-only] resisted! -
0x1FDAC[exe-only] A page rolls rusty armor in a barrel -
0x1FDD5[exe-only] of sand in order to clean it as burly -
0x1FDFB[exe-only] squires practice fighting with wooden -
0x1FE21[exe-only] sticks. Care to train (y/n)? -
0x1FE3F[exe-only] Banners flutter loudly in the damp sea -
0x1FE66[exe-only] air while knights and gladiators test -
0x1FE8C[exe-only] their fighting skills. A muscular man -
0x1FEB3[exe-only] offers training. Join (y/n)? -
0x1FED1[exe-only] The sound of clashing swords -
0x1FEEE[exe-only] permeates the chilly air. A burly -
0x1FF11[exe-only] warrior asks if you would care to -
0x1FF33[exe-only] enlist for training (y/n? -
0x1FF4D[exe-only] Covered in sweat from the heat and a -
0x1FF72[exe-only] tough workout, Phrand, the master -
0x1FF94[exe-only] trainer approaches and asks, "Do you -
0x1FFB9[exe-only] desire some rigorous training (y/n?" -
0x1FFDE[exe-only] As youths struggle and train in the -
0x20002[exe-only] distance, a man garbed in a loose -
0x20024[exe-only] robe tied with a swordbelt fluidly -
0x20047[exe-only] walks to you. "Care to train (y/n?" -
0x2055F[str.dat] You have to be well -
0x20578[exe-only] to train here. -
0x2058A[str.dat] Sorry - you need -
0x2059B[exe-only] more gold. -
0x205A9[exe-only] You gained -
0x205B5[exe-only] hit points -
0x205C1[exe-only] and new spells
| Service | Load address |
|---|---|
open_tavern_food |
0x1A132 |
open_inn_lodging |
0x19EC0 |
open_temple |
0x1D208 |
open_training |
0x1F800 |
open_mages_guild |
0x1E870 |
open_blacksmith_shop |
0x1C54A |
| Content | Primary location |
|---|---|
| Pub NPC intros (Amber, Rowena, Belinthra…), food/drink menus, rumors | str.dat |
| Blacksmith NPC intros (Svendegard…), buy/sell prompts | str.dat + exe menu labels |
| Temple priest intros, donation feedback | str.dat |
| Mage guild intros, membership gate |
str.dat + exe Mage Guild label |
| Innkeeper scenes, rest prompts, registry y/n |
exe 0x19D00..0x1A200
|
| Chest/trap messages |
exe 0x1A280..0x1A800
|
| Building sign titles (Slaughtered Lamb, etc.) |
event.dat (OP_0B) |
python tools/extract_segments.py mm2 # ghidra/*.bin + manifest
python tools/extract_embedded_strings.py mm2
python tools/mm2_codec.py str-decode str.dat EXTRACTED/docs/11-str-decoded.txt
python tools/decode_event.py event.dat| Page | Why |
|---|---|
| Event to String Path | When exe text vs str.dat |
| Town Services | Inn & service prompts |
- Docs Wiki Hub ← full doc index
- Getting Started ← read this first
- Overview
- Workspace Notes
- Open Questions
- Full Analysis
- Game Remake
- Startup and Init
- Runtime Memory Map
- Main Loop and Map
- Exploration Input and Options
- Party and Session
- Game State Struct
- Data Hunk mm2 data 00
- Time Era Calendar
- GFX Loading
- ANM TV Format
- PC DOS graphics
- SNES graphics
- 3D View and Game Screen
- Amiga 3D Render Process
- Scripted Scene Graphics
- Event Graphics Opcodes
- Title Screen Assets
- Title Screen Animation
- Format inventory
- items.dat
- monsters.dat
- roster.dat
- attrib.dat
- map.dat
- spells & item use
- event.dat
- Events by location ← 71 maps
- Events hub (numbered)
- Event Script Opcodes
-
Event Script DSL ←
.mm2evtauthoring - Event Text Rendering
- Event Graphics Opcodes
- Combat Overview
- Combat System
- Encounter Tables
- Spell Cast ASM
- monsters.dat abilities
- Spells and item use
- Amiga audio in exe ← Paula / DATA / remake
- Controls: Sounds / Walk Beep
- MM2 music format (superseded)
- Title/death audio paths (superseded)
- Known songs catalog (superseded)
- Town Services
- Spell Sources
- Character Mechanics
- Skills and Hirelings
- Commerce Formulas
- Commerce World Services
- Mount Farview Class Quest
- Class Quest HP Bug
- Event Runtime
- Event to String Path
- Embedded Exe Strings
- Copy Protection
- Time Era Calendar
- Game State Struct
- MM1 Overview ← hub + decode status
- MM1 MAZEDATA format
- MM1 to MM2 outdoor
- MM1 WALLPIX by sector
- MM1 art & graphics
- MM1 items / monsters (status)
- MM1 map walker ↗
- MM1 2D maps gallery
- MM1 WALLPIX gallery