MooglyGuy's Shoddily-Put-Together WIP Page

To see the full list of opcode statii, click here.

List of Contributors (in no specific order)


Click here to go home.

Win Free Prizes

2/5/2008 - Blargh

To hell with this antiquated method of posting regular updates. Click here.

2/1/2008 - Eye of the Tiger

One "angrylion" told me that apparently Ziggy's MESS-derived LLE plugin, Z64, handles RSP DMA in a somewhat different manner than MESS. Impressively, there's a marked difference in some games versus the mangled jumble of polygons that they used to show:

Mario Golf



Mario Tennis



Pokemon Stadium

Unfortunately, it also manages to break Ocarina of Time, Jet Force Gemini, and possibly others, so it's not something I'm going to be submitting anytime soon. Hopefully it'll provide a good starting point for more investigation, though.

1/19/2008 - All of the Day and All of the Night

In MAME-related news, I've found a potentially serious bug in the way MAME handles VRCP. Check out the message board post here.

In other news, have you ever wanted to see what my workspace looks like? Of course you haven't, but I'm going to show it to you anyway.

My A/V setup (click for big):


My sitting setup (click for big):


Until next time...

1/16/2008 - One Step Forward and No Steps Back

A couple new discoveries:
What's next? Who knows!

1/15/2008 - You Can't Kill the Metal

Looking for yet another emulation forum to join and complain about emulators? Look no further - the Moogle Technologies forums are now open!

1/7/2008 (2) - His Pokemans

ColourBorrower showed me them.

In case anyone feels like comparing against reference material, the good ColourBorrower provided me with a link to various Pokemon Puzzle League videos, found here. The strange corruption in the collage on 1/6/2008, "My Pokemans", seems to be caused when the game attempts to draw the borders around the playfield and meters. Now I just need to figure out why.

In other news, Ziggy's Z64 plugin is great, I'm sure, but it rewrites a fairly substantial amount of MESS's RDP functionality in order to get hardware acceleration working. I can't make heads or tails of what the changes were under the hood versus MESS's behavior, so I've put in a request for the man to summarize the changes he made. Here's hoping it works.

1/7/2008 - This Is A Call

Tonight I intend to look into backporting any fixes made in Ziggy's RSP / RDP plugin, which was based off of code found in MESS a while ago. Hopefully that will go well.

On a different subject, I could use some help from anyone who owns a copy of Pokemon Puzzle League. As you can see in the screenshot posted below, there's some weird corruption present on the screen when in-game. If someone could please get me a high-quality screenshot of what the game is actually supposed to look like when in-game in 2D mode, that would be great. Ping me on AIM, YIM or ICQ and throw the screenshot up onto Waffleimages or something, and I'll be your best friend!

1/6/2008 - My Pokemans

Let me show you them:

pokemans.jpg

I finally got into the swing of writing test code for the N64 again, and decided to tackle the fact that the behavior of DMA transfers when the Count and Skip fields were non-zero was unknown. A couple hours later, I have a fix for almost any game in MESS that previously died with a non-zero dma_count or dma_skip assertion. Wonder of wonders, Pokemon Puzzle League now fires right up and is fully playable.

Yesterday I fixed texture loading and texel fetching for 32-bit RGBA textures, which fixes Mario Kart 64's title logo:



Last but not least, I was able to reenable texture clamping. It was previously disabled because enabling it broke Rampage: World Tour, but it was able to be reenabled once I discovered the reason. If you're curious, apparently texture coordinates should be recentered on 0,0 for the sake of texel lookup after coordinate clamping and mirroring, not before.

12/29/2007 - Triangles

Today was a pretty productive day, adding support for the following commands:

With the triangle and color editing, we can send Mario on our very own LSD trip:

lsd.png

The Set Scissor command, as the name implies, affects the scissor box for polygon drawing:

scissor.png

The remaining commands that I need to support are as follows:

Some of these probably don't actually need to be edited - for instance, I hear that color keying is actually broken in production N64 units. Who knew?

12/28/2007 - Hack 'n Slash

Well, that ended up being a lot easier than I thought it would be, though I'm not 100% sure it's accurate to the hardware. I put in a specific check to disable writing the pixel to the framebuffer and Z-buffer if the alpha of the pixel, post-color-combine, is zero. Surprisingly, it didn't seem to adversely affect things:

trees.png

stars2.png

Cool!

12/27/2007 (2) - Retro-Active

Now we go into the realm of 2D, with the ability to edit Textured Rectangle commands. After some jiggery-pokery to support non-fullsreen UIScreen instances, we have a handy editor for the aforementioned commands:

rect_edit.png

After some fooling around, we can enhance Super Mario 64 for the visually impaired!

texrect.png

Not sure what command I'm going to support next.

12/27/2007 - The Freeman's Nemesis

The first command-editing screen is now in, it allows you to edit the "Set Combine" command. To do so, I had to create a new part, the UIDropdown class. When you have a Set Combine command selected in the main event list, pressing 'E' will bring up the command edtior screen for the command, if one is relevant:

edit_combine_screen.png

Once you press 'D' (Done) the editor screen will go away and return you to the main event list.

As a demonstration, I edited most of the Set Combine events to use the following equation for texture color:

( C_ZERO - C_ZERO ) * C_ZERO + C_TEX0

Which results in the following scene:

edit_combine.png

Cool, huh?

12/24/2007 (2) - Erroneously Abled

I've added another UIList to the upper-right pane in the window so that you can see additional info on the command that you have selected. In doing so, PIN64 has made its first true step towards usefulness.

For instance, it seemed to me that the bottom face of the first billboard you encounter in Mario 64 was being drawn incorrectly. Now that I have the ability to get a proper interactive view of the commands being sent to the RDP, I can see that the errant drawing is not due to an RDP implementaton bug, but is in fact probably due to an RSP core bug. Observe:

rsp_err.png

What you're looking at is the little white line to the left of Mario's head. In fact, it should be shorter than it is and drawn approximately centered on the post that's already been drawn. However, from the X coordinates of the three points (xl, xh and xm), it's clear that the incorrect coordinates are being passed to the RDP that something is going awry further up in the chain. I guess this just gives me more motivation to kick my ass into gear and start running comprehensive RSP test batteries at night when I'm in bed.

Next stop: Command editing!

12/24/2007 - Differently Abled

I've put in the ability to disable events. Observe the scene with the water polys enabled:
enable.png

And disabled:
disable.png

Next stop: Command info pane!

12/22/2007 - Little Shop of Horrors

Is it just me, or does Mario without a moustache look like Rick Moranis?

mario_moranis.png

12/19/2007 - English Pastimes and Other Boring Activities

I've brought the UITextQueue class up to date, and am now keeping a list of the events that are queued:

event_queue.png

Sometime over the holiday break I intend to bring the UIList part up to speed so that I can actually have a scrollable list of events.

12/16/2007 - PEBKAC

Over the past two weeks I've been overhauling PIN64 under the hood to use proper classes and singletons rather than make everything an ungodly mess of global functions and typedefs. I've done a first pass at converting the UI system found in NUTS - I now have the UITextField class converted over and I've created a new UIRect class to encapsulate colored tiles of arbitrary size in order to get filled window backgrounds and such.

It's very rudimentary, but the following demonstrates one UIRect instance and two UITextField instances contained within a single UIScreen instance inside the UI singleton:

prelim_ui.png

Also note that I've added the ability to highlight the currently-selected triangle event with a white line around the edges.

No PIN64 release is planned for the forseeable future, not the least reason being that all of my N64 work is in a legal state of limbo until I can get some sort of contractual exemption. Nintendo were stingy enough with proper hardware-level documentation that there's no way in hell I could be using any sort of work-related materials to develop this.

As always, more info as it develops.

Previous Months

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