Really good "special effects" in games

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems. See the NESdev wiki for more information.

Moderator: Moderators

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

Really good "special effects" in games

Post by tokumaru »

I just love to figure out how NES games achieve some great looking effects, that most of the times don't look NESish at all. Effects involving palette changes, bankswitching, sprite priorities, scrolling, timing, etc.

But there are some I just can't figure out. Does any one have a clue on how does the 3D floor in Cosmic Epsilon work? I could see it is more complex than the one in 3D World Runner, wich had only 2 colors and fixed size squares. Cosmic Epsilon actually had patterns on the floor, like streets, oceans and such. I think it involved some bankswitching, but that's it.

It also took me a while to discover how most racing (F1) games used to give the impression of a road moving. I thought: "How does this game change the palette every few scanlines without visible glitches?". But then I learned they switched to a CHR bank wich had the road with the desired colors, instead of changing the palette. I guess this is because in the beginning I had the idea that bankswitching was something slow, and wouldn't be done several times in one frame. But now I now it is not actually "switching", the cart just looks for the graphics/data somewhere else. In fact the word "switching" is very misleading, IMO.

But, still in the subject of special effects, does anyone want to point the ones they think deserve some attention, the ones they like? I like to see how the coders were smart to make it past the obvious limitations of the NES and come up with something that looks good.
Celius
Posts: 2158
Joined: Sun Jun 05, 2005 2:04 pm
Location: Minneapolis, Minnesota, United States
Contact:

Post by Celius »

If you go to the PD roms competition link on the main site, you can look for Chris Covell's Stretch demo which I gave a 10 out of 10 because that was very very very cool. I'm not sure how he did it, because he does his NES demo's with DASM 2.12 running on Amiga, and um, I'm not to familiar with any of that, because 1, I don't know anything about Amiga, and 2, DASM hates me, and never works for me. But yeah, check that out. He makes a 3D kind of look. It looks crappy on Nintendulator, because there's a whole bunch of lines all over the place, but run it on JNES, and awe at the awesomeness of it. I'm sorry, I just thought it was cool. Check it out. http://www.pdroms.de/database/files/NES ... Covell.zip
User avatar
Quietust
Posts: 1920
Joined: Sun Sep 19, 2004 10:59 pm
Contact:

Post by Quietust »

Celius wrote:It looks crappy on Nintendulator, because there's a whole bunch of lines all over the place
...just as it does on the real hardware. Chris Covell is aware of this, but he didn't want to bother fixing it.
Quietust, QMT Productions
P.S. If you don't get this note, let me know and I'll write you another.
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

The stretch demo is indeed very cool. There is onother one I also like very much, with a green text in the middle of the screen (I can't remember what's written) that keeps fliping and there is a reflex of the whole thing at the bottom on a surface that looks like water, or something...

Quietust, do you know exactly what causes the glitches in the strech demo? I always thought this demo was so cool that it is a shock to know it does not run well on hardware. So it might be a good thing to know what's wrong...
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Post by Dwedit »

I'd guess that no mapper = no irq. No irq = crappy scanline timing based effects.

Yet Rare did a good job pulling them off in slalom with no mapper, and very few emulators (nintendulator, nestopia, possibly others) supports slalom's track effect.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
loopy
Posts: 405
Joined: Sun Sep 19, 2004 10:52 pm
Location: UT

Post by loopy »

Last edited by loopy on Wed Aug 20, 2008 10:52 am, edited 1 time in total.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

I tried to figure how the mega-FF1 orb beam was made. I eventually got that this is pretty easy to do. Just be sure to turn the color emphasis / grayscale bits at a fixed point on the screen, then wait for a few cycles depending on how much large is your beam, to eventually turn it back on. The whole thing would be 113 cycles if you want a beam going one pixel back, or 114 cycles if you want a beam going two pixels further per scanline. Other values are possible for beams that would become closer to the horizontal line. A disaventage of this is to not be NTSC/PAL compatible, without changing the beam's direction.
A cool effect I had in mind would be to split the whole screen in two with a similar algoritm, switching pattern table via $2000.
Another cool effect would be to make clipping, aka to turn the screen off during a scanline and turn it on back in HBlank, to make an effect like when you enter in a battle in the SNES game Fire Eblem 4 - Seisen no Keifu.
Useless, lumbering half-wits don't scare us.
User avatar
Quietust
Posts: 1920
Joined: Sun Sep 19, 2004 10:59 pm
Contact:

Post by Quietust »

Bregalad wrote:The whole thing would be 113 cycles if you want a beam going one pixel back, or 114 cycles if you want a beam going two pixels further per scanline.
Actually, 113 cycles would go 2 pixels back and 114 cycles would go 1 pixel forward. Remember, the NES CPU executes 113+2/3 cycles (341 / 3) per scanline.
Quietust, QMT Productions
P.S. If you don't get this note, let me know and I'll write you another.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Right.
Overall, 111 will be 8 pixels back, 112 5 pixels back, 113 2 pixels back, 114 1 pixel forwad, 115 4 pixels forwad, 116 7 pixels forwad, etc...
The whole thing should be rewritten with different timed cycles for PAL format, and probably other beams are possible.
Useless, lumbering half-wits don't scare us.
Celius
Posts: 2158
Joined: Sun Jun 05, 2005 2:04 pm
Location: Minneapolis, Minnesota, United States
Contact:

Post by Celius »

Oh my god. That demo, loopy, was AWESOME! That looked SO COOL! I think if we were back in the day like in 1985, and we saw that shit, we would say, OH MY GOD! BEST GRAPHICS EVER! Okay, a little overboard there. Very very nice job! love it!
User avatar
tokumaru
Posts: 12427
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Post by tokumaru »

Yeah, the demos are really cool, loopy! The firefly one seems very hard to emulate... do you mess with the color emphasis bits twice every spotlight scanline? Timing seems hard on this one...

The "unfinished" demo is very nice too! Love the dancing bars! =)
User avatar
loopy
Posts: 405
Joined: Sun Sep 19, 2004 10:52 pm
Location: UT

Post by loopy »

Last edited by loopy on Wed Aug 20, 2008 10:55 am, edited 2 times in total.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

I'd like to input something like FireFly in a dark RPG place, where the light would follow the hero (scince the hero is always in the center of the screen, this could be simpler). Or for a RPG where the screens stops to move when you walk on a border of the map, the hero will moove then.

I rally can't understand at all what in the world is 5 independant scroll aeras.
Useless, lumbering half-wits don't scare us.
User avatar
Quietust
Posts: 1920
Joined: Sun Sep 19, 2004 10:59 pm
Contact:

Post by Quietust »

loopy wrote:I made another demo with 5 independant scroll areas (3 vertical strips+2 horizontal). I seem to have misplaced it, unfortunately...
I believe this is the one you are referring to:

http://www.qmtpro.com/~nes/misc/demo3.nes
Last edited by Quietust on Sat Nov 22, 2008 4:09 pm, edited 1 time in total.
Quietust, QMT Productions
P.S. If you don't get this note, let me know and I'll write you another.
User avatar
Bregalad
Posts: 8056
Joined: Fri Nov 12, 2004 2:49 pm
Location: Divonne-les-bains, France

Post by Bregalad »

Interesting, but it actually uses ugly code that will never return from an interrupt, and the tiles that are on-screen aren't very good-looking. I think this one should be improved.
Another challenge would be to use only an UNROM card or something and does this with CHR RAM. I really like games that modify CHRAM to do special effects. I'd like someday to make a game where every player and monster is just some tiles from CHRAM that are getting re-written regulary to allow more animation frames and more flexibility while mazing sprites. I think this is very hard to do, even with the PAL format that can have more VBlank time, it would need precise calculation so a different moving object could be re-calculated each frame, but not all at the same time so the whole thing become possible.
Useless, lumbering half-wits don't scare us.
Post Reply