Hello, I'm submitting a first round of Nintendo 64 entries.
I've been working for a couple of years on a H264 (MPEG-4 AVC, Baseline Profile) decoder for N64. It is really pushing the limits of the console if you think that N64 was released in 1996, while H264 was finalized on paper in 2003 but became commonplace around 2010 or so. The decoder is fully written in software, it runs on an unmodified, unexpanded console, and uses both the main 93Mhz 64-bit CPU and the 62Mhz RSP coprocessor with SIMD vector instructions. The RSP code is ~5000 lines of assembly code that has been optimized over the years to squeeze every cycle. My goal has always been low bitrate movies, because N64 cartridges are constrained to a maximum of 64Mb on cartridges, so most home-brew applications will try to squeeze videos in very little bitrate.
Typical performance I can achieve is 320x240, 24FPS @ 400 Kbit/s, or 20FPS @ 600 Kbps. Those bitrates sound low but H264 can do wonders (though not miracles). In general, N64 is strongly limited by memory bandwidth, so reducing framerate and resolution helps a lot. For instance, I decided to encode 4:3 videos at 288x208 which allows me to push bitrate up; on my CRT, I think the balance is better, given that H264 can really use those bits.
The player isn't really the best fit for this competition, where there is no bitrate cap. Anyway, this is what I managed to achieve with the samples of this competition. For audio, I went with uncompressed audio because there was room available and I wanted to give every drop of available resources to H264. I have a MPEG1 Layer II (aka "MP2") decoder that kinds of work but it doesn't sound too well (precision issues with fixed-point IMDCT), so I avoided using it here.
LIVE
Video: 288x208, 24FPS, 550Kbps (22 Mb)
Audio: 44100Hz, Stereo, uncompressed
No big problems here. The bitrate is a bit lower than others because I felt like it really needed at least 24 FPS. It's not super beautiful but not bad.
ANIM
Video: 320x176, 12FPS, 1000Kbps (11 Mb)
Audio: 44100Hz, Stereo, uncompressed
Given this is hand-drawn animation, the actual framerate is very low, so I lowered the framerate and bumped bitrate. To me, this looks
very good (also the damning moving star scene)
. It's also at the x264 theoretical encoding perfection bitrate-wise (at this resolution/framerate), because it's using the highest quality setting, unconstrained.
CGI
Video: 320x176, 20FPS, 700Kbps (14 Mb)
Audio: 44100Hz, Stereo, uncompressed
This was the hardest for some reason. In the end I went with 20 FPS to bump the bitrate to a level where I feel it looks good.
BADAPPLE
Video: 320x240, 24FPS, 400Kbps (11 Mb)
Audio: 44100Hz, Stereo, uncompressed
Looks perfect to me. My player has some bugs at 30FPS which I have not investigated, otherwise it would probably work.
You can watch these ROMs using the Ares emulator, which is the only one accurate enough for this H264 player. Ares has some emulation timing inaccuracies, so even if Ares itself runs full speed on your computer (60 FPS in the bottom right corner), the videos might be sluggish at times. On a real console (using a development cartridge like EverDrive64) it looks very smooth. I will try to post recordings.
ROMS DOWNLOAD:
www.dropbox.com