• win64-main-e604fb6 e604fb606d

    Ghost released this 2026-07-14 18:49:41 -04:00 | 458 commits to 1016_part3 since this release

    • [Tests] Add SharpEmu.Libs.Tests project

    Introduce an xunit project for the HLE libs with a minimal ICpuMemory fake,
    so library-level exports and helpers can be exercised without a live guest.

    Co-Authored-By: Claude Fable 5 noreply@anthropic.com

    • [Ampr] Disambiguate pak size-collisions by read locality

    PakDirectoryTracker resolves a sequential AMPR read (offset -1) back to an
    absolute pak offset by matching the requested byte count against the PACK
    directory. When several files share that byte count it took the first
    unconsumed match in directory order, which mis-resolves out-of-order reads:
    progs/h_ogre.mdl and bots/navigation/death32c.nav are both 0x3A34 bytes, and
    death32c.nav sits earlier in the directory and is never read during Quake's
    intro demo, so requesting h_ogre.mdl returned the nav file's bytes. The engine
    then parsed "NAV2" as a brush model, failed the version check and aborted.

    Pick the unconsumed same-size entry nearest the running read cursor instead.
    id archives cluster related assets and the guest streams them with locality,
    so this lands on the intended file; contiguous same-size runs (the
    gfx/weapons/ww_*.lmp icons) still resolve in packed order.

    Verified against a Quake dump: the abort is gone, h_ogre.mdl reads correctly,
    and the intro demo reaches its main loop and renders instead of dying at the
    error dialog.

    Co-Authored-By: Claude Fable 5 noreply@anthropic.com


    Co-authored-by: Claude Fable 5 noreply@anthropic.com

    Downloads