Weltkarte pixelexakt: gemessene Blit-Anker (Basis=(x,218-y)), Punkt steht + Kopf blinkt darueber, Segment/Name-Zuordnung um 1 korrigiert (W1L0 hat keinen Kartenpunkt)
This commit is contained in:
@@ -1739,3 +1739,41 @@ Binary-KOORDINATEN stimmen, aber der BLIT-ANKER des Originals (topleft vs
|
||||
zentriert) steht nicht im Binary -- wir hatten zentriert geraten. Fix:
|
||||
empirische Offsets MAP_DX=5/MAP_DY=4 in worldmap._tf() (dort feinjustieren,
|
||||
falls noch nicht exakt).
|
||||
|
||||
## 26.07.2026 (16) -- Karte PIXELEXAKT: Template-Matching statt Schaetzung
|
||||
|
||||
Stefans Nachmessung: immer noch daneben ("noch ein bisschen nach rechts
|
||||
und weiter runter"). Diesmal richtig gemessen: KARTE-Sprites per
|
||||
Template-Matching (mit Alpha-Maske) in den DOSBox-Referenzframes gesucht.
|
||||
Ergebnis eindeutig (err ~10 = VGA-DAC-Rauschen, naechster Kandidat >200):
|
||||
|
||||
- KARTE0 (10x7) steht DAUERHAFT, Topleft (58,162) -- in BEIDEN Blinkphasen!
|
||||
- KARTE4-Kopf (14x15) blinkt DARUEBER an/aus, Topleft (53,146) (steht auf
|
||||
dem Punkt). Frueherer Befund "Punkt und Kopf wechseln sich ab" war
|
||||
falsch (Diff-Region war die VEREINIGUNG beider Sprites).
|
||||
- KARTE3 (kleine Punkte): am Spielstart NIRGENDS auf der Karte -- nicht
|
||||
freigeschaltete Level sind unsichtbar (bestaetigt die Netz-Screenshots:
|
||||
dort ist das Spiel durchgespielt).
|
||||
|
||||
Daraus die exakten Anker (Binary-Label (x,y)): Basis = (x, 218-y);
|
||||
KARTE0-Topleft = Basis+(5,0); Kopf-Topleft = Basis+(0,-16); KARTE3
|
||||
zentriert auf dem grossen Punkt = Basis+(7,2) (einzige verbleibende
|
||||
Annahme -- kleine Punkte gibt es in keiner DOS-Referenzaufnahme).
|
||||
|
||||
WICHTIGER NEBENFUND -- Segment/Namens-Zuordnung war um 1 verschoben:
|
||||
Das Start-Label (53,56) gehoert zu SEGMENT 0, und 21 Segmente = exakt
|
||||
die 21 anwaehlbaren Level W1L1..W3L7 (3 Welten x 7). W1L0 (22. Name,
|
||||
MAP existiert) hat KEINEN Kartenpunkt (Bonus-/Geheimlevel?). Also
|
||||
segments[i] = names[i+1]; der "fehlende W3L7-Randfall" aus Eintrag (13)
|
||||
war keiner. Cursorstart = Segment 0 = W1L1.
|
||||
|
||||
Disassembly-Check (Stefans Frage "bekommst du das nicht aus dem
|
||||
Disassembler?"): einziges `mov ax,218` im Binary (Offset 0xf084) ist
|
||||
eine HUD-ZIFFERN-Routine (X-Positionen 186/194/202, Spriteindex =
|
||||
Ziffer+500 -- notiert fuer die Punkteanzeige!). Der Karten-Anker steht
|
||||
nicht als Literal im Code -> Pixelmessung war der richtige Weg.
|
||||
|
||||
Verifikation: eigener Karten-Render vs. DOSBox-Frame, mittlerer
|
||||
Pixelfehler 5.0 (identisch mit dem Ganzbild-Grundrauschen der
|
||||
VGA-DAC-Quantisierung) in beiden Blinkphasen => pixelidentisch.
|
||||
--once exit 0.
|
||||
|
||||
Reference in New Issue
Block a user