There will be two different kernels: One for asymmetric levels, unable to display hi-res objects apart from the taxi and the passenger, and one for symmetric levels with an intelligent object multiplexer allowing for more hi-res objects like bullets, snowflakes etc. with minimal flicker. Both are designed to have no empty scanlines and to be able to display dynamically changing playfield graphics, i.e. levels with moving walls or doors opening and closing.
I've finished a proof of concept of the asymmetric kernel. Note that the graphics and level design are only a placeholder.
For those who don't want to run it in Stella, the opening in the vertical wall is moving, and the top of the ring where the passenger is in alternates between open and closed. You cannot yet move the taxi around; it's only my first experiment if the kernel works as intended.
Features of the kernel:
- The interior of a level has a resolution of 32x40. Blocks can be switched on/off at a resolution of 32x20 during the game, and the level exit can be anywhere on the top.
- The taxi will be drawn every scanline, the passenger (or the target pad if he's already on board the taxi) every second scanline.
- The background and the playfield colors can be set every 4 scanlines.
- Also every 4 scanlines, the missiles can be enabled or disabled. Right now they are used to mark the fuel pad in the lower right corner.
The kernel has some downsides however. As already stated, it doesn't allow for additional hi-res objects. In addition, taxi and passengers only have a single color, and I'm not very happy with how the fuel pad gets displayed. But my main design goals were to be able to draw the taxi each scanline and to have an asymmetric level design which is not static, which together is pretty limiting with regards to instruction cycles left for other stuff. Hence the second kernel for symmetric levels which I will do later, but first I'll add the ability to actually fly around with the taxi.
Edited by Kylearan, Mon Feb 13, 2017 1:11 PM.