MSXgl is a Game Library wrote in C and targeting MSX computers.
The goal of this library is to offer to C programmers, the whole set of functionalities to create a game with high performances. Even if a C program can never be as efficient as a program written entirely in assembler, the goal is to try to get as close as possible.
To achieve this goal, the library is dynamically compiled to allow the user to configure the functionalities to best suit his needs. Also, the most expensive features are written in assembler.
The other goal was to create a library that could be totally independent of the BIOS. This makes it much easier to use the 16K of page 0. The library also provides interrupt handling code to create ROMs that always remain on page 0.
Many sample programs are available to demonstrate the different features of the library.
The MSXgl Build Tool allows in 1 click to create a final program for a large number of formats:
- Plain ROM from 8K to 64K (interrupt handler can be install in page 0),
- Mapped ROM from 64K to 4096K (ASCII-8, ASCII-16, Konami and Konami SCC mappers),
- MSX-DOS 1 or 2 binary program,
- BASIC binary program.
The library supports the following devices:
- VDP (TMS9918, V9938 and V9958) and V9990,
- PSG (AY-3-8910), MSX-Music, MSX-Audio, Konami SCC,
- Keyboard, Joystick, Mouse and Ninja Tap (4 joysticks adaptator),
- ROM mapper, slot manager, and Real Time Clock (RP-5C01).
Here are also the supported audio formats:
- Arkos Tracker 2 (AKG, AKY and AKM)
- Trilo Tracker SCC
- Vortex Tracker II (PT3)
- WYZ Tracker (WYZ)
- ayFX
- VGM (for all supported audio chip)
- lVGM (a light-VGM format for PSG)
- PCM-Encoder (aka. Crystal clean PCM 8bit samples on the poor PSG)
Many thanks to the members of the MSX Ressource Center and MSX Village who have been very helpful. The library is distribute under Creative Commons BY-SA license. Tools or sources from other authors could use other free license.
Documentation:
- Code documentation: /engine/doc/html/ (WIP)
- Library documentation: https://aoineko.org/msxgl (WIP)
If you have any question, feel free to join the MSXgl Discord server.