Super Mario 64: The Missing Stars (Rom Hack) by messiaen at 6:00 PM EDT on May 5, 2009
Hi!
Some of you will remind me from my thread about Mario 64 (and basically, Nintendo first-party) sequence format.
This is just to let you guys know that I finished my Super Mario 64 hack, called "The Missing Stars". It's the first ever complete Mario 64 hack and features, besides new levels, tons of custom music, including an original composition of mine.
Download it here: http://sites.google.com/site/messiaen64/themissingstars
Damn, there was a last minute bug due to a minimal change in an object position. Please redownload the patch if you have downloaded it before this message.
This hack uses extended memory, so I guess it won't work on a real N64 :(.
I was wondering just recently when we'd see a full hack of SM64. There's plenty of videos on youtube of kids dicking around in toad's tool, but to date I haven't seen anything solid. I'd like to play this! Shame my only means would be emulation.
Well, the title screen works, but when going into the demo or pressing start it freezes at the full white screen (music keeps going into demo, though). It's probably a matter of misalignment somewhere. I noticed the extender tool mentioned something about a future version doing 16-byte alignment, that might be required for ROM access via DMA (though iirc it was 8 bytes).
The title screen already runs some functions from the upper 4mb memory so I guess that means, unlike I thought, that it can work with the extension pak after all?
Have you tried running a "clean" extended ROM on your N64 just to see if the same problem happens? Since there is an open-source ROM Extender tool, I could try word aligning the data just to check if that would work.
The "new extender" output also freezes after hitting start or going into the demo.
Sure enough, if I have it round the "new offsets" up to the next 16 bytes it works, here's my diff. I don't know if this is a particularly safe way to handle it, though, as I don't take into account the actual file sizes, so they might overlap. I'm just guessing here.
Ok, thanks for the help. If I have some time today, I'll try sending you a version of the extended ROM with the alignment corrected. If that works, I can make a new patch compatible with the N64 hardware and try to convince VL-Tone (the guy who programmed Toad's Tool 64) to correct it in future versions of the extender :).
Edit: Ops, you edited your post after mine :). I don't know exactly what you modified, but what I was about to do is edit the tables.c file and change offsets like 0x00b1f8b5 to 0x00b1f8b4. There's a 32k space (if I remember correctly) space between the uncompressed files moved to the upper part of the ROM, so it's safe to displace them a few bytes.
All I did was have the program do the rounding itself. I removed the const from the table and added a loop to round addresses up to the >= 16-aligned address. If the spacing is as you describe then this should work fine, though I guess it makes more sense to just fix the table. 0x00b1f8b4 won't work if I understand the issue correctly, you'll want 0x00b1f8b0 likely. And I'd personally round up instead of down, to 0xb1f8c0 (0xb1f8b8 might work, too, but I didn't test 8-byte alignment). That way you're consuming your own padding, rather than that of the previous file.
[edit] Oh, man, I've known about Toad's Tool for a while, but I just got the pun. Awesome.
I played the hack and i was disappointed. it's the same wanky arbitrary approach you see on youtube. no rhyme no reason, just a "mess around", throwing whatever objects wherever just because you can, no real attempt at interesting level design or dialogue. random music choices as well... hah, were those originally midi sequences from vgmusic? easiest approach there would probably be to either stick to mario series compositions. imitating kondo's compositional voice from the ground up to create new compositions would take substantially more skill, but that would be exciting.
anyway, nothing inherently wrong with mess-around hacks, fun for about 5 - 10 minutes, but your first post made it sound more promising than that. :(
well, it's good to see these things are possible. hope someone really capitalises on it.
This hack is insane, really. All level geometry is made by some "pre-made" solid objects, with some hacks in the collision system to make it actually work without slowing down the game like hell. There is a shitload of hacks to make this thing work, and while the level desing may not be great (taking in account the limitations I've worked with, it's very decent), I'm satisfied with it, especially the later areas. There's tons of cool stuff: the catch Yoshi-star, Fire Mario powerup, day-night, etc.
As for custom music, I have done the possible with the limited tools I wrote by cracking myself the music format. There's one original song (the night "town" music) which I think turned out quite well, but I didn't want to write more because it would be hard to make them sound good without hours and hours of work and I was too busy trying to solve dozens of small problems everywhere.
Mastery: You are using an inadequate video plug-in (there's a reason a readme.txt file is included!). I'm not sure what is going on in the end, I couldn't reproduce whatever bug you had there.
Edit: About the camera: the main problem of the camera is that the original Mario 64 camera is broken. It only works because there are tons of hardcoded camera positions for each level, and I (or anyone else) couldn't yet get rid of this.
About the camera, the hard coded camera positions isn't really the nuisance, but rather that you're restricted from angling the camera into logical positions, and that it tends to go in the opposite direction of what'd seem logical to be at.
hcs: I'll try doing a new patch soon (maybe this weekend), I'm looking forward to see it working on real hardware but unfortunately I have been way too busy with real life :).
Mastery: that's strange, the grass texture coordinates look messed up, and the only plug-in with this problem (from the ones I've tested) is Jabo's 1.5.2. The camera angle limitations are also part of hardcoded (on a level basis) stuff. There are dozens of different functions affecting the camera coordinates at once, so it's really hard to understand it and thus overcome these problems.
Nemu is the only emulator that seems to care about the alignment, since it wouldn't run the extended ROM before and now it works perfectly. That's great, because I had to resort to PJ 1.4 debugger (ugh) to correct some bugs and now I can use Nemu 64.
Now let's see if it works on real hardware. If so, I want PICS :). Patch it to the normal (non-aligned) output of the extender.
Also, for those interested or merely curious about it, here is pretty much all source code for the assembly/C hacks used:
I guess if I can correct some of the messed up display lists maybe it can work reasonably. I will try doing some tweaks in the RSP commands of the 'basic objects' and producing a new patch.
Now would be a good time to try some low level video plugins :P.
Edit: Yep, the Z64 plugin seem accurate enough to reproduce most of the graphical glitches, I'll see what I can do.
No luck yet trying to fix some of the display lists to work with low-level video plugins, but let me use this thread to show this bizare mini hack:
Mario 64 "Pong": http://www.youtube.com/watch?v=FBjUml6xPQo
It's basically a pong game which exploits the Print functions from the game. Features a primitive computer AI with progressive levels of difficulty and even some sounds :P.
Crappy source at http://sites.google.com/site/messiaen64/pong_of_death
Super Mario 64 The Missing Stars by the_audio_ripper at 11:19 AM EST on January 17, 2012
Seriously, the soundtrack isn't worth it. If you really want it, it's easier to use the debug code I've developed, stop sfx and capture the music ingame.