MooglyGuy's Shoddily-Put-Together N64 WIP Page - November 2007 Entries

11/29/2007 - Making A Pass

I've nearly perfected texture support in PIN64. I had a lingering issue that I didn't figure out until this evening, which is that some captures seemed to be lacking around half the polygons that should have been there. It wasn't until I considered the relative lack of power that the N64 has that it dawned on me: Most N64 games do not, in fact, run at 60 frames per second. With that in mind, I added a #define to my output routines in MESS to output five sequential frames' worth of captures to separately-named files. My hunch was right, and it turns out that a number of games draw half of the geometry in one pass, then the rest of the geometry in a second. I threw together a program to merge together two or more individual frame captures, and lo and behold, it worked perfectly. What follows is a series of screenshots from my current working version:


Mario's face, pass 1


Mario's face, pass 2


Both passes, merged


Mario, having just jumped out of the entrance pipe


In-game, pass 1


In-game, pass 2


Both passes, merged


Mario Kart 64 displays bizarre Z-buffering issues; for some reason, the Z buffer seems to be intruding on the framebuffer.


Blast Corps title intro, pass 1


Blast Corps title intro, pass 2


Both passes, merged


For some reason, Quake 64 displays bizarre static in both MESS and PIN64. Incorrect dithering, perhaps?


For another unknown reason, captures of Tetrisphere don't show the playfield, which is odd, as it renders fine in MESS.


I've also implemented the ability to cycle the event display index. This is the same capture as the merged in-game captures, but with the event display index set to stop halfway through rendering the castle.

The next step for PIN64 is to give it some sort of keyboard-controlled user interface for viewing the current state of registers, and possibly manually modifying registers. In addition, I plan to add playback support on real hardware.

Lastly, if you want to check out the kinds of files I'm working with, here are some captures: Stay tuned for more updates!

11/25/2007 - Giving Thanks

While NUTS provides a reasonably decent method for detecting errors in MESS's RSP implementation, there's currently no good way to test the RDP implementation. Certainly, NUTS has a rudimentary method for sending packets to the RDP manually, but there's no in-depth tool. With that in mind, I'm now working on a program tentatively called PIN64 - Polygon Inspector for N64.

The current plan is to add functionality to MESS that will allow the user to capture all of the commands sent to the RDP over the course of a given frame, then load that capture in a separate program in order to externally analyze the RDP behavior.

The analysis tool will allow the user to see a rendering of all or some of the packets sent to the RDP over the course of the frame, view the state of the RDP after each packet, and possibly modify the RDP state somewhat as well.

This has the distinct advantage of being able to capture a single frame from MESS, then iterate on MESS's RDP emulation without having to re-run the game each time.

Yesterday and today I threw together some initial work. PIN64, in its current state, can either dump the command stream as text or render the command stream on-screen. As I have not yet added support to MESS for saving the textures when they're loaded, the captures lack textures. Nonetheless, it's working decently thus far:


The title logo from Super Mario 64


Mario's face from the intro screen in Super Mario 64


Princess Peach's letter from Super Mario 64


Princess Peach's face, mid-fadeout

If you're curious, you can get the above captures here. If you want to see the command streams dumped as text, click here.

I'll post again once I have textures working. Until then...

Current News
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007