REDIVIVUS

Proposals / #1049

QUESTLOG_HitTestCloseButton returns bool, not int32_t

applied · by Nugwa628 · submitted 2026-11-02, applied 2026-11-02

Ghidra v1851 · 1966101

Both exits set AL only: 004a2625 MOV AL,1 / 004a2627 RET and 004a2628 XOR AL,AL / 004a262a RET (the upper bytes of EAX keep nPanelX - 0xe6 from 004a2610 ADD EAX,0xffffff1a). The one caller tests the byte: 004a3f98 CALL 0x004a2610 / 004a3f9d TEST AL,AL / 004a3f9f JE. The int32 return is Ghidra's CONCAT31 of the stale upper bytes (the undefined3 dwHitResult register local). Return type only; parameter names and storage (ECX/EAX) unchanged. Resubmission of #1016, which went stale when the parameters were renamed. Recompiled with VC8, 004a2610 then matches byte for byte.

Changes 1, applied together

  1. Set prototype win 0x004a2610

    signatureint32_t QUESTLOG_HitTestCloseButton(int32_t nPanelY, int32_t nPanelX)→bool QUESTLOG_HitTestCloseButton(int32_t nPanelY, int32_t nPanelX)
    convention__cdecl