I saw you starred my Cross-Lib project: https://github.com/Fabrizio-Caruso/CROSS-LIB
If it does most of what you want to do with XINAGA, let me know if you want to give it a try. Feel free to ask me for help on how to use it. Cross-Lib is not perfect. It is a huge one-man project.
Cross-Lib is:
(1) A universal C library for about 200 retro systems across several architectures, you write your code once and then you can compile it with a dozen different cross-compilers to get the same game. You can even compile it natively for the PC (terminal only for the moment). You do not need to write target-specific code. Even graphics assets (tiles) are shared whenever possible.
(2) A set of tools to import, export, manage graphics assets.
(3) A set of tools to build, create projects, manage projects.
Cross-Lib is NOT a compiler, though. You use it with cross-compilers (or native compilers).
Remark:
- Graphics is only tile-based as this is the only possible graphics on all targets including ASCII-only ones. Target with real graphics can use tiles with defined shapes. ASCII-only targets with no graphics can only map tiles to ASCII shapes.
- Sounds are even more limited: just some sound effects.
- Input is either IJKL SPACE or joystick.
- No interrupt as not only targets have interrupts
- Speed can be tune on each target by setting a specific variable in its Makefile.
I will improve Cross-Lib in the future but I won't add features that would prevent it from being universal.