The Makefile changes from 578536e removed `$(BUILD_DIR)/$(RPC_LIBS)` from the `$(EXE)` target. This meant it was no longer copied to the build dir, so at runtime the .exe couldn't find it.
This restores that part of the `$(EXE)` rule if `RPC_LIBS` is non-empty.
Fixes#558.
* created the audio thread
* Update playback.c
* moved call to audio_game_loop_tick() to the audio thread
* added semaphores
* Update pc_main.c
* audio thread now runs at 60hz
also now using the built-in sys_sleep() upon sleeping. also implemented mutex locks.
* audio thread doesn't run when loading a level
uses code lifted straight from the original decomp since that deals with multithreading
* mutex, semaphore, and time functions moved to platform.c
* fixed race condition (i hope). also created thread.h and .c for global access
* refactored so that pc_main has the functions for waiting for a semaphore and whatnot
* Update pc_main.c
* Update Dockerfile to Ubuntu 22.04
also:
- Update packages for Dockerfile and instructions
* Add missing package for hexdump
* Make usage message consistent
* Makefile: macOS Package Manager & Compiler detection
* Makefile: (Moderate) Build Speed improvements:
0) use gnu make "simply expanded" variable
1) use gnu make `shell` function instead of backticks
2) collectively these avoid multiple variable expansions per compiler call
3) should most significantly improve I/O bound platforms (e.g. MSYS2)
* Makefile: revert "Compiler Options" comment change
* Makefile: Move `PLATFORM_CFLAGS` to a less intrusive location
The segfault is hit while trying to render bhvCheckerboardElevatorGroup
when the player first enters the stage.
So here's some background: bhvCheckerboardElevatorGroup is the invisible
parent object that defines where the two platforms will rotate around. It
has a model, but it's never rendered in game. The entity only exists for
a few frames before being removed from the scene.
Here's the theory: Since it is only valid for a few frames, I believe the
model gets deallocated after removal. Since changing the camera precision
makes the camera end up in a slightly different spot, it could be trying
to render the object when precision is set to 3 but not to 1.
Here's the solution: Adding cur_obj_hide() to the start of
bhv_checkerboard_elevator_group_init() prevents the crash
fixes#437