I've been working on a new programming language and compiler for making NES games in.
Website: https://pubby.games/nesfab.html
Features:
- Easy to build ROMs. No linker configurations necessary.
- Imports and converts many file formats automatically. You can make games without writing tools.
- Built-in support for custom character sets, along with text compression.
- Optimizes generated code and compresses data.
- Banks are abstracted. Just specify your data and the compiler will smartly handle bank switches behind the scenes.
- No forward declarations. Unlike C, definitions can exist in any order.
- Variable allocation is smartly handled for you, including a type-safe alternative to unions.
- Built-in support for fixed-point math.
- Easy byte-level manipulation.
- Compile-time evaluation, like C++'s constexpr.
- Inline assembly (on a function level, not statement level).
- Compiler is fast and multi-threaded.
- Only targets discrete mappers, like BNROM. I doubt it'll ever support ASICs like MMC3, unless someone wants to design one with 32k banks.
- It only makes NES games.
- Toolchain is just the monolithic, non-incremental compiler. Limited debugging features so far.
- Error messages and frontend optimizations are obviously worse than Clang with LLVM-MOS.
- No recursion (except in inline assembly).
- Indentation is significant, like Python