A terminal-based endless runner in x86 NASM + C
check_for_collision)mvwaddwstrsrc/game.c — core game engine, rendering, threadingsrc/game.asm — movement, collision, map logic (67% of codebase)src/driver.c — C main(), calls asm_main()src/asm_io.asm — I/O wrappers (printf, scanf bridges)inc/game.h — all structs, constants, prototypesMakefile — 4-step build: asm → obj → linkgame→lock guards global game state (ACTIVE / IDLE / INACTIVE)player→lock guards per-player x, y, statepthread_mutex_lockend() before teardownenter N, 0 / leave — compatible with C's cdecl[ebp+8], [ebp+12]…▓▲◆) overflow char[3] — each is 3 bytes. Fixed with ASCII fallback[ebp+N]pthread_detach to avoid memory leaks on rapid keypresses__initialize_curses__ accidentally duplicated inside init() — corrupted the whole function body-g -F dwarf in both NASM and GCC flags