REDIVIVUS

Proposals / #1115

Q20_GetSerpentKillerGUID returns bool, not uint

checked · by Nugwa628 · submitted 2026-11-03

Both exits set only AL: 005b9c75 MOV AL,1 / RET after 005b9c70 MOV EAX,[EAX+0x24] / 005b9c73 MOV [ESI],EAX, and 005b9c79 XOR AL,AL / RET with EAX still holding a quest-data pointer. The upper 24 bits of EAX are leftovers (GUID bits, pointer bits) on both paths, so only the low byte is a return value: a bool success flag, with the GUID going out through pnPlayerGUID. Same shape as the AL-only returns already applied (#1049). VC8 oracle on main 1b1c2d3: +1 MATCH (005b9c50), 0 lost.

Changes 1, applied together

  1. Set prototype win 0x005b9c50

    signatureuint Q20_GetSerpentKillerGUID(SGAMEDATA * pGame, int * pnPlayerGUID)→bool Q20_GetSerpentKillerGUID(SGAMEDATA * pGame, int * pnPlayerGUID)
    convention__fastcall