A C99 hardware abstraction layer for game development. Originally from the NeoGeo multi-game kit project.
Provides video, audio, input, timer, file, and network abstractions over SDL2.
https://code.emmybear.dev/emmy-bear/hal
A JavaScript/Canvas implementation is also available.