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