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
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.
Interrupt: Improve field and method names.
TIMIHook: Remove H.TIMI hook and set INTCNT and SCNCNT in Interrupt instead.

This is only a performance-saving measure and therefore only relevant during the
main gameplay loop. At that point in time our own interrupt handler is active
so we might as well just integrate it there and reduce complexity. Additionally,
H.TIMI is currently not even being called because overscan is active.
Interrupt: Include return code in the class rather than having it static.

And dynamically patch it into the split handlers.
Interrupt: Stop relying on parity of the status register.

At some point in the past it helped the split to be handled in time in the
presence of profiling debug markers, however since aba30d6a9aeb we no longer do
this through a Z80 instruction but hook it up entirely through emulator
breakpoints, so we don’t need to be so extremely optimal here anymore.

Moreover, this makes it more robust in the face of someone making let’s say a
new FPGA VDP with a new VDP ID. The alternative would’ve been to determine
whether to check for pe or po at runtime, but it’s easier to just get rid of it.

Additionally fix Interrupt_Return indentation.
tools: Split up build scripts.

The file was getting a bit too unwieldy.
resources: Rename buildres / manifest to resources.
buildres: Remove unused variable.
buildres/manifest: Specify screen mode and frame rate in manifest.
buildres: Use async / await and promises instead of callbacks.

Cleans up and simplifies the code a lot, avoiding callback hell.
Also update the png-js and xml2js packages in the process.
Makefile: Depend on node_modules.

So that it is rebuilt when package.json is newer.
The old method only worked the first time.
MapView: Pull the split point check out of the loop.

MapView: Rearrange code and improve register mapping.

So that output-related registers are grouped together in alternate registers.