The other problem with trying to do any kind of software screen drawing on the Genesis is timing. You'd need to make sure that you are drawing pixels at the right time, pretty much dedicating all of the time during screen drawing to just that, no real time for game logic except for blanking periods. Also, not all systems are built equal, so while it may run perfectly on one system, on another, it'd look distorted. (See this) So yeah, you're just better off making a tile buffer that gets sent to VRAM. You'd just need to make sure that your buffer drawing code is efficient enough, use lookup tables whenever it's best to use them, avoid slower instructions like MULU/MULS and DIVU/DIVS, etc., avoid unnecessary/redundant code, etc. etc. Also, set up a double buffer in VRAM so it doesn't appear glitchy when it starts transferring tiles. With figuring out how to draw the circles from the thing you linked to, one method that comes to mind that for each scanline, you set up a number of smaller lines to draw and their widths with how you set up the circles. These lines would be drawn one after another. There may be a better method out there without resorting to completely prerendering it all, but this is what I'm thinking (and I wouldn't be surprised if there was, I'm not exactly the greatest when it comes to coming up with the most optimal code and methods, but meh). At least with this, you don't need to waste time drawing the entirety of every circle, and just draw only what's gonna show up. I also advise against setting up a standard bitmap buffer that gets converted into tiles when it comes to actually setting up pixels. I'm pretty sure it'd be faster to just determine the correct address and nibble to write to, which shouldn't be too slow or hard to do if you write just write pixel by pixel, line by line in order, which can be done with the method I described above. Don't even bother clearing the buffer either, since the entire thing would get overwritten anyways.