ALTParty 2011 NES demo entry + greeting

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
ALTParty 2011 NES demo entry + greeting
by on (#85580)
Hi.

Last weekend I traveled to Helsinki, Finland with a three man team and competed in the demo party ALTparty. We actually managed to win, to our big suprise.

I just wanted to pass this on because I decided to add nesdev.com in the greetings list as a sign of gratitude for all the excellent information on the platform that helped me understand some of the quirks of the PPU. I didn't want to name anyone in particular since I did extensive searching on a wide range of topics, but rather thank the nesdev community as a whole for all the invaluable information that are available here.

They haven't uploaded the demo on pouet.net as of this writing, but I did record it on sunday and uploaded it to youtube, so you can watch it here: http://www.youtube.com/watch?v=8lThuA3aA8s

You can read some details about the production in the youtube description. I know it doesn't contain a lot of effects (like raster effects or mid-frame palette swaps) but it was a short 2w (evenings and weekends) production and none of us had worked with NES before, so cut us some slack will you? ;)

... and here we accept the award:
Image


So I just thought you wanted to know about the shoutout, and once again: Thank you!

by on (#85581)
Cool, glad you won. Whatched the demo, nice animations. What PPU Quirks were used?

by on (#85582)
Managed to get the QR code cleaned up enough to read. To save everyone else the time it points to the website: http://www.taongad.com

by on (#85583)
I'm guessing this probably runs in PAL mode, just a wild guess judging by how quickly it switches screens, you admitted you were new to the platform, and because most of the NES demos listed on pouet.net are for PAL mode.

Really glad to see a real NES demo, and not the bad joke that someone else made earlier.

by on (#85586)
3gengames wrote:
Cool, glad you won. Whatched the demo, nice animations. What PPU Quirks were used?


None, really. By quirks I mostly meant poorly documented features I needed to understand the basics. I've done development for GBA before (professionally) so I know a bit about how Nintendo likes to design their hardware, but I ran into some issues early on and nesdev had the answers. For example I didn't realize that I needed to reset the 2006 tile pos at the end of vblank (before next frame) when I were done writing to PPU. That is a "quirk" in my book.

The scene in the demo that pushes the hardware the most is the part with the nyan-cat. It pushes about as many nametable bytes as it can manage to copy during vblank, plus it uses 63 of the 64 available sprites. Had to do the sprite setup during frame rendering to save time for nametable copying in the vblank.

I used MMC3 as the mapper of choice, mostly because of the many banks available, but I was also considering doing some IRQ effects. Unfortunately I only got IRQ to work in emu and not on my POWERPAK kit, so I wasn't sure I did it right and didn't dare to rely on it. I suspect I have a faulty kit or a bad firmware, because I had some other issues with bank switching also on hardware. I'm thinking of revisiting the IRQ issue and play with it some at a later date. But I think I'm done with NES for a while (but not forever). :)

WhatULive4: hehe, yeah. Youtube compression ate the pixels. The homepage doesn't contain anything interesting right now. We are thinking of maybe adding links to all our previous released material later (while we haven't competed in demo before, we have in music, ANSI-gfx and other stuff).

by on (#85587)
Dwedit wrote:
I'm guessing this probably runs in PAL mode, just a wild guess judging by how quickly it switches screens, you admitted you were new to the platform, and because most of the NES demos listed on pouet.net are for PAL mode.

Really glad to see a real NES demo, and not the bad joke that someone else made earlier.


Yes, it is in PAL, because we live in the PAL-region and didn't want to import a new device.

by on (#85591)
How many nametable tiles are you pushing out per frame during the Nyan-cat sequence?

In my Chu Chu Rocket game, I was pushing out 216 tiles per frame in NTSC mode, and had to turn the screen on 3 scanlines into the frame. But PAL mode has a much longer vblank time and you can push out far more tiles.

by on (#85592)
Cool demo, I liked it! There's never too many of these. :)

And yeah, it's always good idea to upscale videos before uploading to YouTube even if the source material is 240p or whatnot, because the audio quality depends on the video resolution as well.

The latest beta version of the PowerPak mappers should fix the MMC3 IRQ problems.

And finally, the "correct" way to reset scroll at the end of vblank is to write to $2005 twice and to $2000 once. This way the scroll can be set to any 9-bit position in the nametables. Writing 0 twice to $2006 will work in some cases only.

by on (#85603)
Just curious, did you use 2KB more PPU RAM?

And that's cool that you did GBA development too. What games did you work on?

Yeah but still cool that you used an NES, good job. Hopefully most are of at least this quality. And so did you find the NESDev wiki hard to use and what details weren't highlighted in it?

by on (#85614)
thefox wrote:
Cool demo, I liked it! There's never too many of these. :)

And yeah, it's always good idea to upscale videos before uploading to YouTube even if the source material is 240p or whatnot, because the audio quality depends on the video resolution as well.

The latest beta version of the PowerPak mappers should fix the MMC3 IRQ problems.

And finally, the "correct" way to reset scroll at the end of vblank is to write to $2005 twice and to $2000 once. This way the scroll can be set to any 9-bit position in the nametables. Writing 0 twice to $2006 will work in some cases only.


Good point.

Actually "High Hopes" were an inspiration for me to pick the NES platform and Pornotracker was used for the music in the demo, so we probably owe you an extra thank you.

by on (#85616)
3gengames wrote:
Just curious, did you use 2KB more PPU RAM?

And that's cool that you did GBA development too. What games did you work on?

Yeah but still cool that you used an NES, good job. Hopefully most are of at least this quality. And so did you find the NESDev wiki hard to use and what details weren't highlighted in it?


No PPU RAM, only PPU ROM (2x 4kb). Is that a MMC3 feature? We only used bank switching from MMC3, no other mapper specific features.

Here are some of the prototypes and releases we made for GBA/NDS/PDA: http://www.velinje.com/pixelknights

by on (#85618)
Burre wrote:
No PPU RAM, only PPU ROM (2x 4kb). Is that a MMC3 feature?

He meant for name tables. With 2 extra KB of RAM you get a total of 4 name tables to work with (i.e. 4-screen mirroring). It's not specific to the MMC3, any mapper can have that.

by on (#85620)
FYI, the ROM is available at http://scene.org/dir.php?dir=/parties/2 ... _beginner/

Another tip: Always make the PRG and CHR bank sizes a power of two, or you may have problems with certain emulators and PowerPak.

Burre wrote:
Actually "High Hopes" were an inspiration for me to pick the NES platform and Pornotracker was used for the music in the demo, so we probably owe you an extra thank you.

Aah, that's good to hear!

by on (#85621)
Cool, it's NTSC compatible too. Not like some of the other PAL NES intros that weren't doing anything intensive, but were still NTSC incompatible.

by on (#85635)
tokumaru wrote:
Burre wrote:
No PPU RAM, only PPU ROM (2x 4kb). Is that a MMC3 feature?

He meant for name tables. With 2 extra KB of RAM you get a total of 4 name tables to work with (i.e. 4-screen mirroring). It's not specific to the MMC3, any mapper can have that.


Ah, ok. Didn't think about that.

Would it have been possible to write to the offscreen nametable during frametime? That would have freed up a lot of vblank time in that case.

by on (#85636)
Yeah, that's what I was thinking you did. You can write to the others during VBlank and when done, switch to that and change the other. And with 4 you could upload 4 and just spin all 4 of those. :wink:

by on (#85637)
thefox wrote:
Another tip: Always make the PRG and CHR bank sizes a power of two, or you may have problems with certain emulators and PowerPak.


Just the .org/bank adresses or do I have to set something else?

by on (#85638)
3gengames wrote:
Yeah, that's what I was thinking you did. You can write to the others during VBlank and when done, switch to that and change the other. And with 4 you could upload 4 and just spin all 4 of those. :wink:


Ok cool. I thought I wasn't allowed to touch $2006 unless in vblank or with bg rendering off. That would have made things a lot easier.

by on (#85639)
You can, but writing to it during rendering would be bad. [Earlier in the post somebody refferenced another that was "a bad joke," that's a great example of what NOT to do because that's what'll happen when you write to $2007 during rendering. Although writing to $2006 during rendering will also mess with the scroll too] You can disable rendering and write too. As long as your in VBlank you can write to nametables and everything, just switch to it once you write all the data over like 8 frames or something, then switch to it and go back to the other non-displayed nametable and change that. To see what I mean really well, tokumaru's raycasting demo is something you can see it work since it spans multiple frames.

by on (#85640)
Dwedit wrote:
Cool, it's NTSC compatible too. Not like some of the other PAL NES intros that weren't doing anything intensive, but were still NTSC incompatible.


Yes, it runs. But it doesn't compensate for speed or resolution. However, it was accidentally run in that mode during the compo by the organizers so it apparently looks good enough. :-)

by on (#85645)
Burre wrote:
Would it have been possible to write to the offscreen nametable during frametime?

No, that's not possible (3gengames' "yeah" was not for this question). Even with 4 name tables you'd have only the time of the vertical blank to update them.

I believe that the only mapper that allows you to modify a name table during rendering is the MMC5, when you use its dedicated 1KB of RAM as one. But the MMC5 is a bad choice if you ever plan to produce carts in quantity.

by on (#85797)
It is now up on pouet.net (http://pouet.net/prod.php?which=57971)

by on (#86150)
I really love the music :) I had the demo in a loop for about 10 times in a row minimum just to be able to listen to the music while working :)

by on (#86151)
It's too bad it violates the "safe area", the sprites are right down to the bottom of the screen, and will probably be clipped on old TVs. New HDTVs don't clip, and instead refuse to display a progressive image.

Edit: I meant on NTSC. I hear PAL doesn't clip anything.