Skip to content

fix(levels): Yeedil's spawner gets the link words through a pointer - #445

Merged
Veradictus merged 1 commit into
masterfrom
fix/l20-spawner-pointer
Nov 11, 2026
Merged

Veradictus merged 1 commit into
masterfrom
fix/l20-spawner-pointer

Conversation

@Veradictus

Copy link
Copy Markdown
Member

func_L20_0039DCF8 passed a 12-byte struct by value as func_L02_002EF388's fourth argument. Every other caller passes a pointer there. The PS2 compiler passes a struct that size by a pointer to a copy, so the bytes matched; the PC port passed the words in registers instead and crashed on Yeedil. It now passes &arg and declares the parameter as a pointer. The output is byte-identical: tools/check.py reports 20_yeedil OK, 1 of 1 places.

func_L20_0039DCF8 passed a 12-byte struct by value to func_L02_002EF388, whose fourth parameter is a pointer at every other call. The PS2 compiler passes such a struct by a pointer to a copy, so the bytes matched; on the PC port the words went in registers and the routine read them as an address and crashed. It now passes &arg; same bytes (tools/check.py: 20_yeedil OK).
@Veradictus
Veradictus merged commit ce42cf5 into master Nov 11, 2026
@Veradictus
Veradictus deleted the fix/l20-spawner-pointer branch November 11, 2026 05:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant