| |||
Views: 88,607,086 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 05-20-24 06:30 PM |
|
Guest: Register | Login |
Main - Posts by messiaen |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 143/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Mario Kart red shells in Mario 64 anyone ?
The red shell is one of the beta models leftovers found in the ROM. This bizarre thing was written in C. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 145/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
So, I'm trying to work on an addmusic-derived music importer for Super Mario Kart. I've got the basic stuff working however I'm having trouble on the insertion part.
Until now, I was relying on the offsets for the Select Player screen Dirtbag gave me to do a few tests. In this case, the data is compressed in the ROM at 0x61e28. Before the actual pattern pointers/music data, there are these 4 bytes: 2102 00D0 0x00D0 is a pointer to where the following data will be uploaded in the SPC-RAM. I'm not sure about what the first numbers do (perhaps the size of the data block to be uploaded to SPC-RAM?). Replacing the music data that follows works nicely, however sequences bigger than about 0x200 will crash the game. But what is puzzling me is that I can't replace other decompressed sequences in the game. For instance, the Ghost Valley music pattern pointers beggins at 0x339 in the unheadered ROM, but when I replace it the data gets uploaded to the SPC-RAM at 0xD000 however some of the data around that region is overwritten, causing the sequence not to work. Can someone offer some insight ? I know pretty much zero about SNES and SPC hacking, so this is new territory to me. Also, could someone explain how to work out the actual location of music data in the ROM from the pointers to music data in Stifu's SMK notes? So far what I have been doing is to dump the SPC RAM, go to $D000 (unheadered) and search for that in the ROM, however I don't understand how that pointer table in Stifu's note works. This is a small test I did a few days ago. Note that is only a really quick test, before I even got all the loop stuff to work: Thanks in advance. Edit: Found some good information in these old d4's notes. Seems like I missed the fact that most tracks are indeed compressed, which is probably why I couldn't replace other tracks. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 146/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Thanks smkdan. Even after adjusting the block size in the header things weren't working right. I looked at the tracks from the game and after the music data there's always these 4 bytes: "00 00 00 08". Appending this after the music data mde things work. Is this usual in the N-SPC format or something specific to Mario Kart?
I've written a simple inserter using the Lunar Compress DLL, but what I need to do now is to repoint the music data to avoid corrupting the ROM when inserting data larger than the original. I have a question about SNES pointers. To read pointers, I just read them as little endian and them get rid of the first nibble in the third byte. Ie: 28 1E [C]6 = 0x61e28 01 98 [8]4 = 0x49801 Now I have read from a DataCrystal article Dirtbag pointed to me that the "C" before the address means it's a pointer to ROM data. But what about "8" (as in the second pointer above) ? What's the difference and should I worry about it when moving data around? |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 147/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Playing around with a primitive .obj importer for Mario 64. Just wish I had the pacience to learn how to use Blender properly .
(crappy) Video of this model. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 148/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
This tool imports an Wavefront .obj file as levels of Mario 64, and supports textures assigned in material files:
Download Have fun! |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 149/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
I managed to reach the boss of the second level, however it required tons and tons of precise savestates. You really should balance it a bit more, the first level was hard but way more fun.
Still it's nice to see you made progress on the editor, looking forward for more levels . |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 150/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
A super debug mode for Mario 64 I'm working on:
Lets you control/spawn objects, modify music/sounds, camera (not 100% yet) and modify some other parameters. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 151/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Haven't worked on this for a while, so I'll just release what I have for now: a MML importer almost fully compatible with SMW's addmusic (it's actually built from romi's addmusic) and a simple inserter (requires Lunar Compress.dll).
A warning, the inserter will corrupt your ROM if the inserted file is bigger than the original one. Right now the only option is to manually change the music pointer table at 0x1f47b so that it points to a free area of the ROM. Once I know more how SMK editors such as MAKE deal with extending the ROM and using the extra space I will make it automatically repoint stuff. Download. Here's a conversion of a .mml file from SMWCentral to SMK: A few differences from Romi's addmusic: intro command ('/') isn't supported, and you can only specify one string of musical data to each channel. For instance, this won't work: #0 v180 #1 v200 #2 v220 #0 c #1 d #2 e So change to this: #0 v180 c #1 v200 d #2 v220 e Instrument list can be found on d4s's notes. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 152/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Posted by Stifu Thanks, I may look at that. By the way, Dirtbag suggested I could perhaps use the original Track Layout/AI/Object Overlay Data space to put the new music data. Since MAKE expands the ROM and repoint stuff, the original data isn't used anymore. Does your editor do someting similar? Posted by roxahrisUgh, people still use that? You'd think people would have moved onto a better way of editing music by now. Still better than hex (by the way, Lilypond uses text-based files). But thinking about alternatives, one could write a plug-in for some of the music notation programs out there, such as Finale or Sibelius. I know Sibelius has some sort of script language, not sure if it could handle exporting to N-SPC or something along that lines. Or perhaps one could search for a open music notation software and work from that. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 153/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
I remember playing Chip'n'Dale on the NES. Wouldn't use an editor, however I would like to see a hack of that game. If you don't have enough motivation to write a full-fledged editor, at least share your notes and maybe the level viewer source. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 154/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Tried a bit the interface and found one small bug report concerning the "Diagonal Line" function. When using it, one can get a "outside of array bounds" error if the line exceeds maximum Y position of the level.
It doesn't happen at the bottom or right and left boundaries. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 155/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Finally got external textures to work on my Mario 64 .obj importer:
|
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 156/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
A Banjo-Kazooie level imported into Mario 64:
Download PPF patch. You'll need to turn extended memory support on your emulator. Patch to a clean extended ROM. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 157/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Posted by Hamtaro126 Actually, that's a video by VL-Tone showing an early version of his .obj importer. The Banjo song was only a background effect, it isn't a port. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 158/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Do you plan releasing the source code for this? I'm interested in learning about MusicXML for similar music hacking purposes and I'm also considering learning some C#. XML parsing is still something I haven't tried, though, are there good libraries for this in C#? Doing it in C (which is basically what I know) seems not so trivial.
Anyway, great work on this. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 159/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Thanks Kawa and JaSp. That was the motivation I needed to start learning C# . I also tried writing a MIDI converter a few months ago and was turned down by the many possible variants, it's indeed a hardware format so it can get very messy in polyphonic contexts. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 160/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
SORT OF two player mode in Mario 64 (controlling NPCs):
Many practical problems, however the concept could work in a smaller scale. Edit: Embed doesn't seem to be working Non-embed. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 161/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
New, vastly improved version, including a graphical interface this time!
For those who used older versions, you'll have to patch your ROM again (read obj_import.exe or watch the video tutorial included if you have doubts): What's new: - Graphical interface! (Requires .NET Framework 3.5) - Replace all levels instead of only Bob-omb Battlefield. - Select background and environment effect, including beta flower. - Comprehensive error trapping. - Fixed problems with texture paths as well as parsing problems when the file had spaces. - Better texture handling. - Model files are now centered around (0,0,0). - Video Tutorial. Download v0.6 |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 162/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Posted by Dialga You may want to download this small update (just replace those two .exe files), which fixes a gross bug related to texture file names. |
messiaen |
| ||
Cheep-cheep Level: 32 Posts: 163/193 EXP: 204878 Next: 1564 Since: 05-26-08 From: Porto Alegre, Brazil Last post: 4467 days Last view: 4795 days |
Posted by Dialga To me, it seems to be working fine. By the way, I updated the first post to avoid people downloading an older version (maybe you tried download it instead of the link in the second post?) |
Main - Posts by messiaen |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 132, rows: 164/164, time: 0.222 seconds. |