MapView: Pass tile in iy rather than ix.
MapView: Separate drawing the parts before and after the split.
ROM: Change mapper type from KonamiSCC to ASCII8.

ASCII8 supports larger sizes and does not have SCC registers in bank 3FH.
ROMMapper: Add constructor, define in ROM and initialise in ROMRuntime.
Video: Improve mode constant names, and make them 0 / 1 for simpler math.

Instead of multiplying / dividing, now we shift left / right.
MapView: Keep tile offset in l' instead of iyl or iyh.

A bit slower on 4bpp, a bit faster on 8bpp, less code and frees up iy.
MapView: Manipulate e register directly instead of going through a.

A bit slower on 4bpp, but a bit faster on 8bpp, and no need to preserve a.
MapView: Inline get tile source call, and separate draw column tile methods.
TileMap: Store map as an array of tiles rather than references of tiles.

Removes a level of indirection. Halves the maximum tile map size, but it was
limited already so we will need to deal with that in the future anyway.
Additionally, the Tile object size could be reduced to two bytes because the
aligned tile data address really only needs 13-14 bits depending on screen mode,
and can be packed with 2-3 collision bits.
tools: Introduce Array2D class and simplify Image and TileMap.
tools: Export using shorthand object literals.
tools: Use double quotes everywhere.
README: Add development information.
images: Store RGB colours as homogeneous coordinates.

So that the exact value is preserved and they’re easier to convert to different
bit-depths.
images: Introduce gamma function to convert colours more precisely.
resources: Construct resources sooner, and inline parse methods.
audio: Introduce audio subsystem.

Based on VGM-like playback with VGM files as input.

Including a "silence" track which doubles as a stress test, updating all chip
registers every other frame.
Interrupt: Introduce frame handlers.

A frame handler is called at the end of the frame. The split handlers are
responsible for indicating that they are at the end of the frame.
Interrupt: Don’t require handlers to preserve the c register.
Interrupt: Push all basic registers for ease of use.

In practice we already always pushed hl in the handlers, and sometimes de too.
Next