Wow, shapes are cool. Left and right change between them. I only made up four. I was experimenting with morphing them, but for now I think simple is better.

blargg_litewall-5.zip

Very minor tweaks, since the stuff I'm working on will take a while. Comb pattern slowed down. Lighter row at bottom of other pattern eliminated.

blargg_litewall-4.zip

The tempo idea got put on hold while I implement other shapes. That's an awesome idea, and so obvious too.

Heh, "epilepsy mode" is why I tried to avoid really quick flashing patterns.

nickmaynard, hold Select then press B to have it transition to black, as when it started. Or if you want an immediate black, hold Start then press B. That's the initial state.

My idea for the config is that you hold any button on the controller while resetting the NES. You do not want it coming up while doing a performance. That would ruin the mood. The settings will be saved in battery RAM, which I assume the PowerPak supports decently.

Lazerbeat, yeah, I was thinking of having multiple presses access more patterns. The main drawback is that you don't get as immediate response when you select it. Maybe that's not a problem. I was also thinking that a configuration screen might allow you to select the patterns you particularly want for quick access. A configuration screen would also allow each VJ to customize things to his liking, so that he might achieve more unique effects.

Same with the animation speed: I figured the immediate enable/disable might be preferable to having to press up/down again to go back to normal. So you might speed it up for a few seconds, then slow it down.

I've been looking into the tempo tap and I'm really liking it. I'm writing a prototype side program that just synchronizes a screen flash with your tapping (and keeps going once you stop, of course), and allows fine-tuning if it's getting off the beat. I think it'll work well. The neat thing about this is that you can set the tempo to whatever you want (i.e. full control of animation speed), easily do a double/half tempo with the music, or whatever. I like this tempo tap idea because it keeps it interactive, and it's not locked to the music if you don't want it so.

I'm thinking I'll make the tempo tap Select + tap A, unless it would be used a lot.

I'm also probably going to have animations involve TWO rates: one that causes some visual pulse in time with the tempo tap, and another that cycles colors or whatever, whose speed can be adjusted. The visual pulse wouldn't be the flash; that'd still be manual. It'd be more subtle, like the one that has an expanding or contracting light circle.

Give me an idea of how you'd use pause/unpause. I made it a little obscure since I figured it wouldn't get used a lot. Would you be using it many times in the music? I don't want to waste such prime buttons as left and right on it unless it's a key function. I was going to save left/right to adjust some aspect of animation. Maybe the tempo tap will eliminate the need for that.

As you can see, with the controls, my goal was to make often-used things single-handed.

neilbaldwin, I'm thinking it's probably a good thing for you to be working on your version, since you're familiar with it, and you've taken a different approach to patterns (modify previous image, rather than overwrite with new one). Probably more unique ideas from each of us, rather than being on the same page. On the other hand, it means less patterns for my version. Every time I run yours I feel that it's more spontaneous and lively.

Help me out with this sync feature. Would it show a regular white flash after you tapped out the tempo for a bit? Or something else? I guess ideally the pattern's rate would somehow match, but that'll take a bit of doing.

I still need to integrate things from neilbaldwin's version. The main thing lacking is patterns that act on the previous pattern's image, which is cool. I think that has some cool potential. Will also be doing some kind of text.

What I'd really like to add is a configuration screen that saves to battery RAM, so you can get it customized just to how you like it.

Thanks for the ideas, they were inspiring.

OK, a first cut at an interaction scheme. Give me feedback! Ideally, give me an idea of how you actually would use this with music or whatever. I know very little about what you all do. The more I know, the better I can design the interface. It starts out black, so you can determine how the first pattern appears.

blargg_litewall-3.zip

Hold up: faster
Hold down: slower
Hold B: Grayscale
Hold A: Inverse
Hold A+B: Grayscale inverse

Select: transition to new pattern
Start: immediately change to new pattern

You can either use a random pattern, or press select/start and hold, then press another button while holding to get a specific pattern.

Press alone: random pattern
Hold and press up/down/left/right: transition to specific pattern
Hold and press B: black pattern
Select + Start: pause/unpause animation

You can keep select/start held and keep changing to specific patterns; you don't have to release it between each change.

Yes, this is all to be used however you like. Lazerbeat, give me an idea of how you'd be using it. Do you want to be able to select a particular pattern? Select a particular transition effect? Describe how you might actually be using it in a show, e.g. playing some music, and you want a particular pattern, or whatever. Use cases so I can have something concrete. I have no idea how this stuff is used. Thanks.

Since neilbaldwin got caught up another music engine project, I did a little more work on some patterns, and transitions between them. This is non-interactive. Also, feel free to use any of these in shows or whatever.

blargg_litewall-2.zip

I'm pretty sure I'm using aspects not yet documented by the Nesdev community. For example, writing to the tint register mid-scanline takes effect a couple of pixels earlier than writing at the same time to the grayscale bit, even though they are both in the same register.

My programming setup allows me to have the code window in front of me, make some changes, hit F4 to have it sent to the NES and run immediately, watch what it does, then make some changes and hit F4 again to run it, without having to swap cartridges or hit reset or anything. So it lends itself to a very trial-and-error style at times, where I adjust something until it looks right, and also adjust it slightly up and down to be sure I've got some margin for error. I don't have to know exactly when something is being done, just that it's being done whenever it needs to in order to look right.

Got the synchronization snag fixed. Now it's just a matter of having enough time to do the effects, but at least now we can make a variable tradeoff between frame rate and processing, rather than having to do everything at 60 FPS no matter what. Much more flexible.

Those emulators are at fault for the glitches you see. On an NTSC NES, it looks absolutely perfect (that's what the video captures are from). I've got the timing spot-on (you don't even see any glitches in the overscan area; I use video capture on my computer which shows the entire frame).

Preliminary page-flipping working, but I ran into a snag with timing synchronization. I pretty sure it's solvable, about to try.

I finally solved the problem of having enough time to do animations. I've had trouble sleeping all night, dreaming constantly about it, heh. This will allows layering effects and whatever, only at a cost of more slightly more choppy animation. It's not like most of these things need to run at 60 FPS anyway, at least I don't think. It's basically page-flipping, or a similar variation. I'm going to try it today. If this works, I think neilbaldwin will be able to go wild with the pattern programming side.

I did a quick comb effect, with a subtle color gradient horizontally. Controller d-pad adjusts the rates of each comb. NES is recommended, as I can't test it on emulators, though I imagine Nestopia would handle it correctly.

blargg_litewall-1.zip

One reason I was thinking 10x8 is how it would look on a widescreen TV that stretches a 4:3 image slightly (or a lot) to reduce the black borders. Or is that out of the question for how this will be used?

It shouldn't be too hard to support both. As far as my low-level engine is concerned, you can just set the left and right columns to black and get 8x8 if you want. It's also arranged so that it's really easy to support the option in whatever code generates the color patterns.

I made some screenshots of the current engine, with the two sizes for comparison:


I can widen the squares so that the 8x8 fills the TV, if we decide for sure that 8x8 is the way to go. These also show the larger color palette (currently 256 colors + 16 gray levels), available via some technical tricks.

Well I'm on board now too, working on the low-level graphics engine only. The version I produced allows a 10x8 grid. I'm trying to figure out whether to reduce it to 8x8, or keep 10x8. Any thoughts? Neil says 8x8 is correct, and I mostly agree, since that's the standard tile size, makes it square, like a big pixel, etc. I just wanted to be sure before I remove low-level support for a larger one. It would simplify things to go to 8x8, but perhaps the widescreen 10x8 is better.