Offline
Minneapolis
blargg wrote:

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


I must say Bargg, on FCEUX and Mednafen I am getting some very interesting "tears" within the individual blocks. The edges of the blocks are perfect, but they have some kind of jagged gradienting inside of the box. I think it's just a timing accuracy thing with the emulator, and with the inaccuracies of an actual NTSC NES and NTSC display device they should be virtually unnoticeable.

Offline

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.

Offline
WOW MAN!

Nestopia cope with it well.

Having trawled blargg's code, if he says it's glitch-free it's glitch-free. smile

Offline
Minneapolis

I know it's just the emulator, as this kinda of incredibly accurate timing just isn't present in most emulators. i can't say for Nestopia as I don't have it.

Offline

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.

Last edited by blargg (Jul 1, 2010 12:10 am)

Offline
Tacoma WA

i tread in the footsteps of giants here.

wow.

just wow

Offline
killadelphia

sick.  bucky showed me the ROM.  sick.

Offline

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

Offline
Tokyo, Japan

This is really really impressive. I am going to use this in a show on Saturday if thats ok? Is there any chance a little user interactivity could be added by then?

Eirtherway it is a BADASS bit of code and I will try and take a video or two!

Offline

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.

Offline
rochester, ny

i know neil had talked about being able to sync LSDJ and NTRQ up, so i think an awesome feature for a program like this would be the ability to sync LSDJ to it so that the animation moves in sync with the tempo of the LSDJ song. maybe it could be programmed to pulse on beats 2 and 4, that kind of thing. obviously this would require arduino hardware but i'm just thinking out loud.

also, it would be amazing if this thing had a couple basic animations, but you could load your own images into it, and maybe cycle through different sets of images. again, just thinking out loud!

Offline
Minneapolis

Well, it actually wouldn't probably require arduino hardware per-se, it could be done with a basic stamp or propeller or TTL or whatever.

Offline
Tokyo, Japan
blargg wrote:

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.

Thanks very much for looking into this Blargg. I would like to use it in a way fairly similar to neil's litewall 5 with maybe an added feature or two. So something like

- speed up/slowdown animation
- switch pattern

With a couple of extra features such as for example

- change background color from black to white then white to black
- pause animation
- black out or white out the screen

But I don't know how hard any of the above would be from a programming point of view.

Once again thanks sooooo much to both yourself and neil for working on this!

Offline

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.

Offline

loving the improvements, i think you have taken the coutdown out though?

Offline

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.