James Dansereau dc5739bc93 D167: D152 addendum -- audio osSetIntMask audit + narrow lock-leak fixes
Static audit of every osSetIntMask(OS_IM_NONE) in the compiled audio code
(event.c, csplayer.c, synaddplayer.c, snd.c): all balanced on every exit
path, including alEvtqPostEvent's freeList-empty early return. No unbalanced
same-thread leak exists -- the D152 s_imLock wedge is not a missing restore.

Two real defects fixed (#ifdef PORT, N64 verbatim under #else):

1. snd.c sndSetSfxSlotVolume walked the live ALSoundState list and posted to
   the shared ALEventQueue without holding OS_IM_NONE, unlike its twin
   sndDeactivateAllSfxByFlag. On PC: unguarded walk racing amMain + one lock
   acquire/release per matching sound. During the mission-failed fade-out
   (sndSetScalerApplyVolumeAllSfxSlot -> sndApplyVolumeAllSfxSlot -> here,
   per frame) that is a per-frame lock-acquire storm. Now holds the mask once
   across the walk; sndApplyVolumeAllSfxSlot batches its slot loop under one
   recursive hold.

2. port/src/libultra.c: portThreadWrapper now calls imThreadExitRelease() when
   a host thread returns from its entry -- if it still owns s_imHeld, release
   the orphan (+ LOG_ERROR). Kills the 'transient thread acquired OS_IM_NONE
   and exited' leak (the §F dump's own alternate hypothesis) and the re-wedge
   when a new thread reuses the dead pthread id and imAcquire mis-detects
   recursion. Steal-lock kept as backstop.

Build 240/240 green; -level_09 frame 300 renders 91.7% non-clear crash-free;
-level_20 boots crash-free. Fade-out repro is playtest-gated (not headless-
reproducible) -- user to confirm no black screen + no D152: log lines.
2026-08-31 12:49:06 -04:00
2026-08-16 17:30:25 -04:00
2026-08-17 13:48:42 -04:00
2026-08-17 13:48:42 -04:00
2026-08-17 13:48:42 -04:00
2026-08-16 17:30:25 -04:00
2021-03-08 12:58:16 -06:00
2021-03-08 12:58:16 -06:00
2021-03-08 12:58:16 -06:00
2026-08-17 13:48:42 -04:00

Goldeneye 007

NTSC-Status JP-Status PAL-Status

About this repository

This is a WIP decompilation of Goldeneye 007!

It builds the following ROMs:

  • ge007.u.z64 sha1: abe01e4aeb033b6c0836819f549c791b26cfde83
  • ge007.j.z64 sha1: 2a5dade32f7fad6c73c659d2026994632c1b3174
  • ge007.e.z64 sha1: 167c3c433dec1f1eb921736f7d53fac8cb45ee31

Note: This repository does not include all assets necessary for compiling the ROMs. A prior copy of the game is required to extract the assets.

Documentation

  • Setup Guide: useful information about installing the necessary dependencies and how to use it
  • Structure Guide: learn more about the project structure of this repository
  • Style Guide: code style conventions if you want to contribute code
S
Description
No description provided
Readme MIT
310 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 92.9%
C++ 2.8%
Python 1.8%
Assembly 1.2%
HTML 0.4%
Other 0.7%