I'd like to see an NES modded into a badass VJ machine one day.
I'll try to answer all the questions in one response.
There's not much going on in the demo apart from proving that it's possible to swap out the NES palette at a measured point on the screen i.e. during the first black gap under the first row of coloured squares. It takes a lot of manual tweaking of cycle-timed code as you only have time to swap 3 colours during horizontal blanking (the time taken by the PPU between drawing the end of one raster line and the start of the next). So, in between each row of square are 3 raster splits that (off the edge of the screen) change 3 colours each, giving you 9 modifiable colours.
I need to code the remaining splits (one for each row of squares). To do that, I can't manually code each one or I'd go insane. Rather, I need to figure an easily repeatable way to achieve the required accurate timing delays, so that's what I'll do next. I don't know much about cycle-timed code so I need to do a bit of research. The demo so far is a bit of trickery with a lot of trial and error
The other side of this is actually coding the colour generation/animation. It's not something I've ever done before.
And, more to the point, where to find the CPU time to do the required data movement/shifting/manipulation - the problem with filling the screen with the timed palette splits is that you're not left with much CPU time to do anything else.
I'll make the source code available once I get the timing loops into a repeatable state and tidy the code up somewhat.
I put a bit more time in on this tonight and got the timing code into a more usable form (though it still needs a bit of tweaking as you'll see). This time I'm doing all 8 splits (well, 7) to make the whole grid animatable. I also programmed two crude animations - one cycles all the colours of the matrix from start to end, left to right. The other animates a spiral that radiates from the centre outwards. I put a simple timer in to periodically switch between the two.
One cool thing I figured out is that if I got the timing tight enough, I could squeeze the vertical gaps between the blocks enough to get an extra row of blocks (the NES resolution is 256 x 240 so doing 32 x 32 pixel blocks only gives you enough vertical height for 7 rows). Therefore, it's now a proper 8 x 8 grid!
great work neil!
now let's talk about algos for generating "visuals".
have you heard of jared tarbell? he runs complexification.net,
but he also has a lot of cool open source code as well.
check this demo out: invader fractal
(source is in the bottom right corner)
here's another demo more related to color: levQuarter
or maybe some demoscene inspired fire :: part 1 and 2
i think that might be some cool inspiration.
Quick update. I added some vertical (alternate column) scrolling and horizontal right-to-left scrolling.
http://dl.dropbox.com/u/5493868/litewall4.nes
Quite good fun this
Next update will be a lightwall coloured scroll text. Old school.
Last edited by neilbaldwin (Jun 23, 2010 11:52 pm)
I now dub thee "Neil fucking awesome wow man Baldwin"
Quick update. I added some vertical (alternate column) scrolling and horizontal right-to-left scrolling.
http://dl.dropbox.com/u/5493868/litewall4.nes
Quite good fun this
Next update will be a lightwall coloured scroll text. Old school.
Wow this is sick.
Now all we need is an uber-cocky, amiga cracktro-like version with kickass music and some scrolling text like "brought to you by demon, the best of the best!! etc"
Nice stuff, it's purdy looking. Time to slap it on a cart and project it someplace large, like the side of my house. Soon as I can get hold of a new projector bulb. I'll take a video of it if I can get it working.