Some technical notes. (You can skip this if you're just interested in the program!)
This program is not meant to generate tight, kernal-friendly code, but instead take full advantage of every register and graphics option the 2600 has (creativity over the technical aspect, so to speak). Instead of generating data, it actually generates 8 lines of code, including all HMOVE, graphics-loading, and color register setting. While this wouldn't be practical for a real game, by now, ROM size has grown exponentially, while the limits of the 2600 have stayed the same; if one could take advantage of ROM space to improve graphics, then it seems a worthwhile tradeoff.
The row is 8 pixels high, so you would need 12 of them to make a full screen. You can try--the generated row is about 600, 700 bytes, and there's little room for bankswitching. Optimizations could improve that (there's better ways to waste 50 cycles than 25 NOPs). Generating code in RAM would be even better; maybe once the generation has been standardized.
If you're interested in how the code is generated, go to the "chrome\content\rowEditor.js" file and find the exportRow() function.
The graphics get messed up at high pixel values cause there is an HMOVE butting in on the RESxxs. Fixable, but difficult.
Missiles are another story. Getting an LDA and two STAs in after a WSYNC is painful enough, but can somebody tell me why RESM0 an RESM1 use bit D1, not D0? I could totally take advantage of D0 on the color byte being useless. -.- If somebody finds me an illegal opcode which does ROL, STA in three cycles (or even INC, STA), please tell me. Then again, there's also no time to RESMx the missiles anyway, so it's almost moot.
NUSIZ and CTRLPF could be set during the first lines (since no sprites can be displayed there anyway) but it'd be cooler if they could be set on every line (for variable-size sprites). Doesn't seem feasible, though.
HMOVE
can be set on each line. However, sprites could only move even more left, so it's kinda limited. A future version might do HMOVE on each line, use the HBLANK lines for extra cycle time, and allow per-line sprite movement. If that'd be at all useful.
Edited by Blackbird, Tue Jun 10, 2008 11:55 PM.