Nintendo 64 Take a look at Cart ROM – Gaming Alexandria

We had been despatched a Nintendo 64 check cartridge ROM that was dumped anonymously. Zoinkity wrote up a pleasant readme explaining the small print which is included within the 7ZIP file we’ve uploaded to the Web Archive for safekeeping. Obtain it by clicking here.
Under is the textual content from the included readme file with particulars.
.: Nintendo 64 Take a look at Cart model 1.? :.
Lastly, a public launch of each full ROMs from a Nintendo 64 check cart!
Wait, each!?
Take a look at carts had been designed to be reprogrammed–in full or partially–by means of the jtag port or through gangwriter. When there’s any type of electrical delay by any means it appears to map the “testcart_reflash” ROM, permitting you to pipe a brand new “testcart_runtime” to it. (Verify the “reflash interface.txt” doc for more information on how that works.)
That’s moderately been the issue up up to now, however it seems in the event you stick a little bit of polyimide tape over the cart’s CIC pins you possibly can boot to a 64DD whereas it nonetheless maps the principle runtime (assuming yours has a CIC+IPL otherwise you programmed your personal). Having the code you need uncovered means you possibly can simply DMA every part as an alternative of making an attempt to learn from the uncovered flash addresses; there’s a little bit of a trick to doing that with 16bit {hardware}.
This dump was taken through a 64DD dev unit whereas the runtime was accessible. It was checked towards a second dump taken through IO entry (doubled-reads, much like the writing methodology), and each had been in contrast towards an earlier partial dump to confirm recognized good contents. You might additionally learn the person flash items themselves in case your IC programmer helps the chipset / has the precise adapter.
Please notice that the runtime is just not alleged to be some excellent a number of of a chip measurement. You probably have ever had the “privilege” of utilizing jtag you’d perceive why. The reflasher is aligned to the beginning of the final unit (every unit being 0x200000 giant) and retains its padding (in different phrases, the unwritten bytes erased to 0xFF on the finish). That file has a most measurement in different phrases, in order that looks like an essential factor to protect.
.: Why model 1.? :.
The particular construct is up for debate. It’s clearly *not* model 1.0. It’s suspected to be no less than a model 1.1–seemingly ultimate–primarily based on the audio check.
There are two current blobs of supply code for the Go/No Go instrument (GnG, used for manufacturing unit high quality management): one from the OMAN archive and one other distributed with libultra OS2.0E. Each predate this launch (constructed towards OS2.0H). Essentially the most noticeable–arguably solely–distinction from 2.0E is that the left/proper audio check stopped utilizing beeps and midi sequences, changing them with a voice saying “That is your * channel.” It additionally doesn’t use the “subway” sequence. It’s not clear what model was first used for these standalone cartridges.
(So sure, there’s no less than one different model that must be tracked down and dumped.)
For these within the know, a partial dump of the principle runtime was taken by marshallh again on Jun 29, 2016. That was completed by sniffing the handle traces and was largely full, missing solely knowledge that wasn’t accessed (versus used). It’s been out there to emulator devs since then, awaiting a whole dump earlier than public launch. It’s the identical construct as this one or very, very shut.
It was lacking:
*) The tail finish of all audio samples. They’re clipped by the participant earlier than operating to completion so the ends weren’t loaded. (Samples are solely loaded on-demand in blocks.) One did have a brief non-matching phase, may very well be a smidgen of corruption or possibly it was leveling or one thing utilized to a single spot.
*) Sequences for noteLeft, noteRight, and subway (performs G, then E). LR had been changed by extra express “That is your * channel.” messages from model 1.1 onward, however the authentic beeps & sequences are nonetheless compiled in.
*) The quantity sequence used for the PI check. That is solely run (or related) when a zaru check rig is connected, not when booted standalone (except you run it manually through command line).
.: About Zaru :.
Additionally supplied is a brief, hopefully correct, doc on how the zaru rig ought to function. You might theoretically construct one and stick it in a controller slot (like a mempak) to pointlessly verify all of your grounds. Most of the checks solely run with a zaru or run alternate code when one is discovered.
.: Does It Emulate? :.
If it doesn’t, complain to your emulator’s devs.
There isn’t a lot level to emulating it apart from to verify accuracy or complaining concerning the lack of it. The central focus is often on passing the RCP checks, however you’d be shocked how few emulators assist the Recenter button (the Begin in L+R+Begin toggles 0080, not 1000) or what number of neglect the VI completely, immediately outputting the framebuffer (the wiggly triangle video check makes use of VI settings to clip a window out of the framebuffer and scale it, in any other case you’ll see a triangle bouncing inside a field). Or what number of aren’t unicode-aware. (Did they only copy some previous PJ64 supply or one thing? Is it that arduous to make use of strncpy(20) and decode as an alternative of hoping a uncooked bytes “filename” doesn’t throw an error?)
It really works high quality on flashcarts, however then the check cartridge *is* a flashcart in order that’s no shock. Could be helpful in the event you did a console mod and must know the way unhealthy your solder job actually was.
Notice it’s *supposed* to show rubbish for ~15 seconds, then in another way coloured rubbish about as lengthy earlier than in the end loading the interface. There’s an preliminary bootloader within the 80200000 vary that first runs some very fundamental checks–like confirming RDRAM is on the market & works by operating by means of its setup and a few r/w checks–earlier than loading the precise interface code to the 80000000 vary, faking a reset (besides with zaru the place the reset is kind of actual), then going by means of the complete initialization routine once more and at last organising some video. Don’t be shocked that it has two units of fundamental lib capabilities. You’ll be able to sidestep that–and must in the event you’re utilizing an iQue–however you’re additionally avoiding a number of the lowest degree checks.
It runs some checks a bit in another way if 4MB, 6MB, or 8MB of RDRAM are detected. When you don’t suppose 6MB was ever a factor, attempt asking round about 64DD assist in Ocarina of Time ;*)
The reflasher is comparatively pointless to run and not using a actual unit. It was extremely useful to discover ways to speak to the flash correctly and perceive the IO limitations; the dumper(s) wouldn’t have been attainable with out it.
.: Checksums :.
“testcart_reflash.n64”
inside 318B3640 72EC843F
md5 2E61A0218EB2407336104EAC28431E44
sha512 1A5BE7A343C91E8D36EFE0EEB49A2059887DCB229F7EE8260AA746678E2B8FE9E5D349CC6913DBA7098F20E4A7FF0FAC3C50FED72DDAB8CAD28E2B211EA9EEDF
“testcart_runtime_v2.n64”
inside BDFEF553 94A42EF9
md5 B991B1BF574A73E1D8AC5081B96D5D2D
sha512 2BC1B969FCE9548FCC41B9160680E9F14F6B3A7C3C2257DCC36A076DFC1FDDFE81E9264657CB6A8FAF4E70BB3F6D20AC6377060604902837534B2C7AF40B555D
.: Thanks :.
Many due to the nameless donor that lent one in every of these! Reward be to Anon!
-Zoinkity
Thanks once more to all contributors!