Programming languages resources
This page is a collection of my favorite resources for people getting started
writing programming languages. I hope to keep it updated as long as I continue
to find great stuff.
Pointer tagging and NaN boxing
Resources on representing small values efficiently.
Small JITs to help understand the basics. Note that these implementations tend
to focus on the compiling ASTs or IRs to machine code, rather than the parts of
the JIT that offer the most performance: inline caching and code inlining.
Compiling is great but unless you’re producing good machine code, it may not do
a whole lot.
Game Boy Emulators
Pan Docs (newer version
here?), which give technical data about the Game
Boy hardware, I/O ports, flags, cartridges, memory map, etc This excellent
of the boot ROM This
that details the full instruction set, including CB opcodes This
full opcode reference for
the GBZ80 The
Game Boy CPU manual The
GameBoy memory map This
blog post that gives a
pretty simple state machine for the different rendering steps The
Ultimate Game Boy Talk by
Michael Steil at CCC This
ROM generator for custom logos This
sample DAA implementation This
awesome-gbdev list This
excellent emulator and debugger Another
emulator and debugger The
Game Boy complete technical reference This
Gameboy Overview blargg’s
which have instruction tests, sound tests, etc gekkio’s
and his test ROMs This
fairly readable Go emulator,
which has helped me make sense of some features This
fairly readable C emulator This
fairly readable C++ implementation This
helpful GPU implementation in Rust This
for decoding GameBoy instructions.
NOTE: This has one
that someone and I independently found. The original repo
has fixed the bug but not the page linked above. This
summary blog post
explaining GPU modes And of course
This is a potentially fun way to
render the screen without SDL, but only for non-interactive purposes.
playlist looks like it could be worth a watch, but it’s a lot of hours. Lists
I should probably pick and choose some great stuff from these lists to
copy onto this page.