Technical appendix · Home · Français
Claims that were believed and then disproved, kept so they aren't re-adopted. Section A comes from the full re-check on 2026-11-03.
| Earlier claim | Result |
|---|---|
| INT 0FEh handler is missing or external | It is maup.exe EA 0x10628
(0x53:0xF8). |
Segment 0x53 is a separate far API |
0x53:0 is _main, 0x53:6 is
Game_Main, 0x53:0xF8 the handler. |
maup.exe is overlaid |
No overlay evidence; 24 ordinary relocated segments. |
Text is fixed-pitch with +0x66 unused |
Vid_DrawGlyph adds +0x66; the
+0x6A nudge is temporary. |
| The atlas reads as little-endian in the file | Wrong for odd byte offsets: 47 of 99 glyphs. |
| Index-to-character map unknown | Solved; see Text and fonts. |
| Dialogue is in no file | It is in G3.CON records
0x28/0x29, 5-bit packed. |
Output is in 0x400 chunks with input resync |
The counter only increments; no effect on decoding. |
rec27_sub02 is a charset, 4,112 B when decoded |
It's a raw image; its first u32 is palette and count bytes. |
Font_LoadStrings loads strings |
It decodes a picture for the intro script. |
.CON records are vector geometry, no text |
Many are tiled images; records 0x28/0x29
are text. |
wVidCanvas* is the draw target |
It's read as a blit source; draws go to wPageSeg. |
ES writes and DS reads the canvas |
Backwards for blits: ES:DI is the source. |
bGlyphDirectStore == 1 means direct store |
1 selects Vid_PutPixel. |
word_1A4F4 is text origin; wGlyphRowPitch
is pitch |
Both hold the text colour. |
Vid_BlitTile: CH rows, CL
tiles |
CH is width, CL is height. |
sub_10536 is a paragraph scan |
It's a Sound Blaster port probe. |
| INT 0FEh site table | Four of six EAs were wrong; all six are file offset +
0xF800. |
| Six service numbers | Six sites, five services. |
| Archive slot comes from the disk map | It comes from wConRecordToArchive. |
Open uses 3D00h |
3D80h. |
| Sentinel list is 20 records | Six groups, with the record set of each archive. |
| Only nine files; nothing missing | More names exist, including conditional G7.CON. |
| Remap applies when the flag is set | It applies when bSoundCard is 0. |
0x15/0x16 both alias 0x17 |
0x15→0x17, 0x16→0x14. |
INSERT DISK belongs to maup.exe |
Only INSTALLE.EXE has that string. |
INSTALLE.EXE is 37,376 B |
12,684 B. |
Last 4 KiB of maup.exe are zero |
Only 1,458 of them are; there's also a 29-byte trailer. |
HNF.HUF says lanxhor,
HEY |
lankhor, URL; ROT-13 was misapplied. |
HNF.HUF tail is byte-identical to
SND.HUF |
Shared suffix is only 216 B. |
| Turbo C code here is BP-less | Standard push bp / mov bp,sp is common: 160 raw
matches. |
0 of 312 payloads pass try_decompress |
Two .CON payloads pass, and all .HUF
streams decode. |
unk_1CBE8 |
The published offset DS:27CB is EA
0x1CBEB. |
| Delphine Software or Loriciels made it | Lankhor: intro credits say so. |
sub_12722 is the idle worker, called from
0x1EFEB |
It's Game_LoadAssets, called once from
0x1F1EB. 0x1EFEB holds no call. |
SAUP.MAU is a saved-game blob, out of scope |
It's the starting game state, loaded into the block at
DS:166. |
| Room records' sub 0 has an unknown format | Palettes, then a normal image at +0x40. |
MAUPITI1 only serves or parks as a TSR |
It holds the game loop, resumed by maup.exe at
0x1EF4D. |
MAUPITI1 "record/arena engine" with a separate resident
role |
It loads records through services; maup.exe does the
file work. |
| Claim | Evidence |
|---|---|
.HUF containers aren't ROT-13 |
They decode from raw bytes. |
| No static Huffman table exists | The tree is adaptive. |
| The game doesn't print text through INT 10h | The character routines are used by the adapter/CLI path (unverified in full). |
Vid_ArenaAlloc isn't a fatal-error routine |
Verified. |
0x7D00 is a word count for a 64,000 B page copy |
Verified at 0x16FBF. |
Con_ResolveDestPtr EA 0x11C48 and
sub_13C80 are separate code |
Verified as separate call targets. |
These measured something real but don't support their old conclusions:
.CON data: pixels are nibble and run-length coded, in many
scan orders.MAUPITI1 "contains no text" from a printable-ASCII
census: the game's text isn't ASCII, so the census can't show that. The
text is in G3.CON; whether MAUPITI1 also
embeds packed strings isn't tested.MAUPITI1.EXEUnpacks from .olz to an identical image; INT 0FEh
handler isn't in it; 51 stubs; 21 INT 21h sites; one
iret; no in, out,
INT 10h, INT 33h; two rep movsb
in the runtime; 7 printable runs; CD FE false hits are
displacements; 0x1335A pushes constant 83, unrelated to
segment 0x53. The instruction counts differ by tool (IDA
29,083 or 29,099; a linear sweep gives 29,145). IDA's runtime names,
such as @Assign, weren't re-read, but the code behind them
has no far callers.
Conclusions from runtime dumps not in this repo:
D-1F11.BIN, S8C76.BIN,
S7832.BIN.
Previous: Naming · Next: Open questions · Technical appendix · Home