Generating composite video with atmega328 [Solved]

Basically, I want to use an atmega328 + external dual-port ram as the video signal generator for an eventual z80 computer. I'm fine with monochrome text-only video. The ram that I intend to use is this one and given its memory size and the display I have I can only have a max of 35x28 8x8 characters on screen, for a resolution of 280x224.

The atmega would have enough ram to keep a similar amount of characters in memory but I'd like to simplify timing issues that arise from the v-ram being busy while it's being outputted to the screen.

The process I'm envisioning is : the atmega sends an address to the ram, reads the character byte, uses that ( + current vertical position % 8 ) to index its own eeprom (or maybe load the eeprom into ram and use that if it faster) to get the horizontal section of the character it needs to print, loads that into a port register and shifts it a bit at a time to generate the video signal.

Now, would an atmega328@16mhz be fast enough to generate both video and sync for that resolution with such a setup? Is there an easier way?

That or if anyone has some resource with timings of avr ASM operations / composite video generation it would be appreciated.

As per usual, if you look hard enough you find out someone has already done the heavy lifting:

https://forum.arduino.cc/index.php?topic=199170.0

https://www.hackster.io/janost/avr-videoblaster-8026fd

Whoops.