Fix some threading isssue

Add compareAndSet to memory and use it where needed
DMAs still suck
Remove the HBLANK TODO

Timings are correct, it’s just that the CPU is too slow to perform
everything during the HBLANK period, so optimization of the CPU is
needed