Skip to content

DOS UW.EXE crashes (A003) when loading a port save with a thrown projectile in flight #44

Description

@abedegno

Reported by @hankmorgan in PR #33 review (2026-04-26):

If I load a game that has a thrown object in flight dos Underworld will crash, save loads okay in the port.

Repro

  1. In port, throw an object (e.g. dagger, rock).
  2. While the projectile is in flight, save to slot N.
  3. Boot DOS UW.EXE, Journey Onward, load slot N.
  4. UW.EXE crashes with error A003.

Hank offered to provide a sample save in the same review thread:

I can provide relevant files for the above if you cannot reproduce.

Suspected area

Projectiles in flight are tracked as object records with a special motion / trajectory state distinct from grounded mobile objects. The port likely serialises this transient state (velocity vector, frame counter, parent attribution) into the LEV.ARK or PLAYER.DAT in a layout DOS UW.EXE rejects with A003.

Acceptance

  • A port-saved in-flight-projectile state loads in DOS UW.EXE without A003 (graceful behaviour: projectile lands at next tick, or projectile vanishes, whichever matches DOS chargen-derived semantics).
  • The error code A003 is identified in disasm so we know exactly which validation path rejects the save.
  • Regression test asserts the relevant byte(s) round-trip across DOS -> port -> DOS.

Notes

This was not addressed in PR #33. Save loads fine in the port itself; the bug is purely DOS-side parser / validator rejection.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions