Improved 400+ color palette demo

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Improved 400+ color palette demo

Post by blargg » Wed Jun 09, 2010 5:43 pm

I just improved my 400+ color palette demo to not shake (well, it shakes by two pixels, but at 30 Hz, so it's much less noticeable). Cleaner, easier-to-follow code is included, rather than the super-optimized code like in the previous version. NTSC-only at the moment:

full_palette.zip

Image Image

User avatar
cpow
NESICIDE developer
Posts: 1097
Joined: Mon Oct 13, 2008 7:55 pm
Location: Minneapolis, MN
Contact:

Re: Improved 400+ color palette demo

Post by cpow » Wed Jun 09, 2010 7:48 pm

blargg wrote:I just improved my 400+ color palette demo to not shake (well, it shakes by two pixels, but at 30 Hz, so it's much less noticeable). Cleaner, easier-to-follow code is included, rather than the super-optimized code like in the previous version. NTSC-only at the moment:

full_palette.zip

Image Image
Man, that is WHACK!

User avatar
tokumaru
Posts: 11907
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru » Wed Jun 09, 2010 8:39 pm

I find it funny that the first image is full of harmony and looks very clean, while the second one looks like a TV with really bad interference, even though they are composed by the same rows, just arranged differently (the JPEG artifacts don't help, but both images have them)...

User avatar
Disch
Posts: 1849
Joined: Wed Nov 10, 2004 6:47 pm

Post by Disch » Wed Jun 09, 2010 8:40 pm

I'm not hip with all the goovy jive you kids use these days, but isn't "whack" a negative term?

User avatar
Dwedit
Posts: 4366
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit » Wed Jun 09, 2010 9:02 pm

So is "Bad", but that didn't stop anyone.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

Drag
Posts: 1327
Joined: Mon Sep 27, 2004 2:57 pm
Contact:

Post by Drag » Wed Jun 09, 2010 9:13 pm

Dwedit wrote:So is "Bad", but that didn't stop anyone.
Man, I love the power glove.

tepples
Posts: 22157
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Wed Jun 09, 2010 9:21 pm

Drag wrote:Man, I love the power glove.
Why, Lucas? Is that what lets you PK freeze Jimmy Woods's hands?

User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg » Wed Jun 09, 2010 9:46 pm

Yeah, the left image looks more vibrant and clean, but doesn't really show how smooth a gradient you get. You are left wondering whether some colors are repeated. The right one makes it very clear that this isn't just showing 52 colors or something puny.

tepples
Posts: 22157
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Thu Jun 10, 2010 5:06 am

A to switch: is that possible?

User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg » Thu Jun 10, 2010 2:41 pm

Sure, but unless I can make the inner loops similar enough to be switched based on a variable, it would involve having both loops in the code, and thus more complexity. It's already complex enough to follow as it is. I'll take a look though, since it would be nice to have one ROM.

I came across your vertical stretch demo where you blend lines via flickering. I realized that this would benefit the smooth gradient version of this palette demo. Since it already shakes horizontally at 30 Hz, effectively blending the vertical edges, I could have it shake vertically as well, blending it all together more.

tepples
Posts: 22157
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Post by tepples » Thu Jun 10, 2010 3:06 pm

blargg wrote:Sure, but unless I can make the inner loops similar enough to be switched based on a variable, it would involve having both loops in the code, and thus more complexity. It's already complex enough to follow as it is.
For each mode, make a 32-entry table of tints and a 32-entry table of starting colors. Order them in ROM as normal_tints, smooth_tints, normal_startcolors, smooth_startcolors. Then display entries 0-31 or 32-63 of each table.

User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg » Mon Jun 14, 2010 7:17 am

I put up a nice page on the Wiki describing how this demo works, and updated the source code to be cleaner and easier to follow. Unfortunately, I didn't put in controller control of alternating between two palettes, as it would have complicated the code more than it was worth.

bucky o'hare
Posts: 160
Joined: Fri Sep 22, 2006 9:52 am
Location: philly

Post by bucky o'hare » Mon Jun 14, 2010 4:49 pm

Wasn't there an animated demo posted with the noise channel making 'wave' sounds? Was that posted elsewhere or was it taken down?

I could've sworn it was in this thread!

User avatar
blargg
Posts: 3715
Joined: Mon Sep 27, 2004 8:33 am
Location: Central Texas, USA
Contact:

Post by blargg » Mon Jun 14, 2010 8:41 pm

Yeah, but it's in for a big upgrade. Stay tuned... :)

User avatar
Bregalad
Posts: 7990
Joined: Fri Nov 12, 2004 2:49 pm
Location: Chexbres, VD, Switzerland

Post by Bregalad » Wed Jun 16, 2010 1:32 am

Well Blargg, congratulation for this demo which was implemented in an incredibly clever way.
If I understand way, you managed to get completely rid of all jittering (or get only 1 pixel jitter I haven't understood exacly).
How did you manage this exploit ? I always got ~9 pixels (3 CPU clock) jittering at best (NTSC).
Useless, lumbering half-wits don't scare us.

Post Reply