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

09/29/2007 - Source 2

As I no longer have upload access to the old host for my Animal Crossing code generator, this is now the home for it as will. I've fixed a long-standing bug in the player and town name parsing, you can download the new version's source code here.

09/27/2007 - Source

Grab the NUTS source code here.

09/26/2007 - Pining for the Fjords

Just a small update - NUTS is currently in a Schrodinger-esque state of possibly being dead, but possibly not. In the past month I've changed jobs (I start in a week!), and it's up in the air right now whether or not I'll be able to continue my work on NUTS. Personally, I don't think I could be reasonably disallowed from working on it given the severe unlikelihood that the company has any documentation at all on the N64's hardware, let alone the RSP (which Nintendo forced developers to keep under literal lock and key).

That said, as soon as I have access to both the internet and my home dev machine at the same time, I intend to release the source code as-is. I feel I owe the community at least that much.

On a totally different subject, here's a bit of fun that I discovered for all five of you who bought Superman Returns: The Videogame, for the Xbox 360. Go into the pause menu, and enter the following code sequence:

D-Pad Right
D-Pad Up
Y
Y
D-Pad Up
D-Pad Right
D-Pad Down
D-Pad Up
X

Watch the cars. Then damage a car and watch the carnage. Fun!

09/02/2007 (2) - Release Candidate

NUTS RC1 is now available to download. Click here to download it. Please be sure to read all included documentation. Note that it will likely NOT run on any emulators other than ones providing explicit LLE RSP emulation. If you have any questions, comments, bug reports, or suggestions regarding NUTS, feel free to contact me at my above-listed contact points.

09/02/2007 - Tetris

Everything seems to be fitting together nicely. It's now possible to run tests on the RSP. It's actually markedly faster than the standalone versions of the RSP tests due to some brutal optimization. Whereas the standalone versions updated the screen after each opcode for a pretty blinkenlights effect, the test suite stops updating the screen altogether unless the user presses a button to force a frame update. It's not all that pretty, but we're talking a speedup on the order of tens of times, which is more than worth it.

For the curious, here's what you'll see if there are no issues detected:



Also, here's what it looks like when there's an error in the testing (in this case, I forced an error to make the screen come up):



The last two things on the agenda are to make the Input Test screen, which should be really easy, and document it. All in all, we're on the verge of a release here, people.

08/26/2007 - Glass Tiger

Sorry for the long delay - yet again - in making progress on the RSP probe. Over the past few days I've been putting the polishing touches on the user interface for the RSP Probe section of the test suite; the only remaining task is to write the actual probe code itself. This isn't as absurd as it sounds; in fact, the probe code will be rather elementary, as I've already written standalone versions to test individual opcodes, and by and large it'll be a copy/paste job. The most difficult issue so far has been how to present the appropriate amount of data to the user for tweakage.

The main issue with regards to the interface was how to deal with series of flag-affecting opcodes. I hadn't thought of this until I looked at opcodes on an individual basis, but there are some ops where the behavior is dependent on the compare, carry, or zero flags when entering the instruction, and can subsequently modify those flags for further use. As it turns out, the maximum number of chained instructions is around three, so it was a simple matter of having three opcode selectors that are enabled and disabled when the appropriate opcode is selected in the selector before it.

The current UI looks like this:


The main RSP test window. Lets the user change the starting parameters and the opcode(s) to be tested.


When a flag-affecting opcode is selected, the secondary opcode selector becomes active.


When another flag-affecting opcode is selected, the tertiary opcode selector becomes active. Incidentally, the only available tertiary opcode is VMRG, which is dependent on compare flags.


A separate screen was devised for setting the base address for any load/store opcodes and the data to be loaded. This is useful for testing the behavior of unaligned reads and writes. As a single vector is 16 bytes wide, it makes the most sense to make 32 bytes available, which will enable the testing of all possible non-aligned reads and writes.

I'll be moving into a new place in a week or two, but hopefully I'll be able to get more work done before then and complete the probe in short order after the move has taken place.

Also, I should point out that once I have moved, I will no longer have a static IP address available to me, and I will no longer be able to host my WIP page on my own machine. If anyone would like to offer me web space where I could continue this page after I move, I would be appreciative. I can be contacted at my usual info listed above.

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