(Link to AcmlmWiki) Offline: thank ||bass
Register | Login
Views: 13,040,846
Main | Memberlist | Active users | Calendar | Chat | Online users
Ranks | FAQ | ACS | Stats | Color Chart | Search | Photo album
05-14-24 12:32 PM
0 users currently in ROM Hacking.
Acmlm's Board - I3 Archive - ROM Hacking - General Super Mario 64 hacking / TT64 Progress thread New poll | | Thread closed
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71Add to favorites | Next newer thread | Next older thread
User Post
Raccoon Sam

Boomerang Brother
Custom Title








Since: 11-20-05
From: Correct

Last post: 6294 days
Last view: 6294 days
Posted on 03-21-06 10:31 AM Link
Excellent.
Could you perhaps make a compatibility list?
With OSes and their versions?
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-21-06 01:17 PM Link
Mac OS X and Win32.
Raccoon Sam

Boomerang Brother
Custom Title








Since: 11-20-05
From: Correct

Last post: 6294 days
Last view: 6294 days
Posted on 03-21-06 03:47 PM Link
Originally posted by BGNG
Mac OS X


Tiger, Panther, Jaguar, Puma what?
proffessor_gad

Red Koopa








Since: 01-27-06
From: Mars

Last post: 6325 days
Last view: 6325 days
Posted on 03-21-06 04:10 PM Link
Mission successfull! I have successfully decompressed/recompressed super mario 64, and it worked perfectly on the emulator! I'm so happy!

P.S. I made no modifications to the decompressed file, maybe if I did....
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-21-06 04:13 PM Link
Originally posted by Raccoon Sam
Tiger, Panther, Jaguar, Puma what?

While you're at it, why not say "95, ME, 2000, XP what?"
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-21-06 05:21 PM Link
Originally posted by Raccoon Sam

Tiger, Panther, Jaguar, Puma what?


I'm not sure it's a good idea to be a smartass about OS X versions names here

It should work on Mac OS X 10.3 and 10.4 (and probably 10.1 and 10.2).

As for Windows, I guess it will work on any Win32 OS, which means 95 and up.

I would support Linux if I could, but I simply can't... I'm sincerely sorry about that Someone else will have to do that, and I'll help this person if necessary.


(edited by VL-Tone on 03-21-06 04:21 PM)
(edited by VL-Tone on 03-21-06 05:48 PM)
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-21-06 11:27 PM Link
That's what C is for, my apprentice. You're already looking into it. If you program in C, you can have cross-platform out the wazoo.
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-22-06 12:55 AM Link
hehehe

For now, I'll only use it for external commands, and maybe someday port the whole editor, to C or something like that, but don't count on it, I'm not that young anymore, I already learned too many (useless) things in my life, like how to load a program from an audio tape using a 16k Timex Sinclair 1000 micro-computer.




(edited by VL-Tone on 03-21-06 11:58 PM)
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6304 days
Last view: 6295 days
Posted on 03-22-06 01:07 AM Link
I just did some looking into regarding the repointing not working. Here is a disassembly of the code that contains the start and end pointers:

80286d40: 3c 05 00 11  LUI a1, 0x11 (17)

80286d44: 3c 06 00 11 LUI a2, 0x11 (17)
80286d48: 24 c6 47 50 ADDIU a2, a2, 0x4750 (18256)
80286d4c: 24 a5 8a 40 ADDIU a1, a1, 0xffff8a40 (-30144)
80286d50: 0c 09 e1 f6 JAL 0x802787d8 (-2144892968)
80286d54: 24 04 00 02 ADDIU a0, r0, 0x2 (2)


I patched Mupen 64 to display when the JAL instruction is executed with 0x802787d8 and tried to run the repointed ROM. It did not indicate that the JAL instruction was ever executed. When Mupen 64 stops emulation, it prints the contents of the registers. When I stopped the hacked ROM, I noticed that the PC was near the beginning of the ROM.

Next, I patched Mupen 64 to magically change the a1 and a2 registers to point to 0x800000-0x80bd10 when the above JAL was called and a1 pointed to 0x108a40. I then ran a ROM with the MIO0 file copied onto the end of the ROM but no other changes. It ran fine.

It seems that changing this part of the ROM causes a checksum to fail and hang the ROM. There are several checksums in a N64 ROM header. Perhaps using one the header checksum fixing tools could help.
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-22-06 02:24 AM Link
The first megabyte of PRG-ROM data after the boot code (that is, 0x1000 to 0x101000) is checked against two checksums in the ROM header at offsets 0x10 and 0x14. I believe Super Mario 64 uses the CIC-NUS-6102 boot chip, so you'd have to recalculate the checksums accordingly if you change any data in this portion of the ROM.
Originally posted by VL-Tone
1. The MIO0 file 10A68 is a special case, it's decompressed and loaded with a custom command that cannot be easily changed to a 0x17 command. (I know how to re-point it though, thanks to Cellar Dweller)

2. The command 0x1A which is used about once per level loads a compressed texture segment like the 0x18 could do, but when I try to re-point it to decompressed data and changing the command from 0x1A to 0x17, the game crashes. So some texture would not be editable.
Assuming "10A68" refers to ROM address 0x10A68, then that's the problem right there. Shame I didn't realize that sooner. 0x10A68 falls within the 0x1000 to 0x101000 range of offsets. If you change it or anything related to it, the header checksum will fail when the game boots and the CIC code will stick the execution into an endless loop.



There's a DOS program out there that I'm currently using for the F-Zero X editor called rn64crc by RaO. You can grab that at Dextrose.

Otherwise, I have some C code that calculates those checksums for a variety of CIC-NUS chips, but it's encased in a thick protective barrier of GNU GPL. If you plan to use this code in your project, I highly recommend you create it as a separate command line utility and release the source code with it.

Attached is the file, along with the GPL text file, in its form verbatim as it was when Parasyte gave it to me some time ago.

Attachments

n64sums.zip (8952b) - views: 94



(edited by BGNG on 03-22-06 01:48 AM)
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-22-06 05:56 AM Link
Originally posted by BGNG
The first megabyte of PRG-ROM data after the boot code (that is, 0x1000 to 0x101000) is checked against two checksums in the ROM header at offsets 0x10 and 0x14. I believe Super Mario 64 uses the CIC-NUS-6102 boot chip, so you'd have to recalculate the checksums accordingly if you change any data in this portion of the ROM.
Originally posted by VL-Tone
1. The MIO0 file 10A68 is a special case, it's decompressed and loaded with a custom command that cannot be easily changed to a 0x17 command. (I know how to re-point it though, thanks to Cellar Dweller)

2. The command 0x1A which is used about once per level loads a compressed texture segment like the 0x18 could do, but when I try to re-point it to decompressed data and changing the command from 0x1A to 0x17, the game crashes. So some texture would not be editable.



Actually, it's a typo, which I corrected. I meant "The MIO0 file 0x108A40 is a special case" which is outside of the first meg.

But the code Cellar posted is at 0x3AC0 so it is part of the checksum. This code contains the pointer to the MIO0 found at 0x108A40, and that's what must be modified to be able to edit this particular re-pointed MIO0. I didn't stumble on this checksum problem until I tried to edit some table at 0xEC7E0. The rest of the level data is outside the first meg.

I downloaded the n64sums.c file. I think I found a potential endian issue in that command:

#define BYTES2LONG(b) ( (b)[0] << 24 | \
(b)[1] << 16 | \
(b)[2] << 8 | \
(b)[3] )


This is the same function I had to edit to make the YaZ0 compressor work on PPC.

Can I modify it under GPL? (I'm pretty clueless about these licenses) What do I have to do if I modify it?


(edited by VL-Tone on 03-22-06 04:58 AM)
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-22-06 12:44 PM Link
Read the .txt file in there for notes of how to use something licensed under GPL. Basically, if you modify it, make sure you post in the comments at the top of the file when you modified it.

The BYTES2LONG() macro there is endian-safe. N64 ROMs are always stored big-endian, since that's with the RISC 4300i is using. All that macro does is take four bytes loaded from the ROM and shift/combine the bits to make a long variable out of them. Regardless of the endianness of your processor, that macro will do its job correctly.

That .c compiles to a command line utility as it is, so give it a shot and see if it works the way you want it to before changing anything.
Cellar Dweller +

Red Koopa









Since: 11-18-05
From: Arkansas

Last post: 6304 days
Last view: 6295 days
Posted on 03-22-06 03:40 PM Link
Fixing the checksums did the trick. I had to patch in the new checksums manually, as the utility did not have the capability to patch the ROM.

The most important issue with the GPL is that you make the source code of the modified version availible. The best way to do this is to include the source code along with the binary, as this will eliminate the need to ensure that that the source code is available for three years.
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-22-06 06:59 PM Link
Ok, I compiled the n64sums program on gcc without any errors, and it seems to work without any modification.

For a mario64.z64 ROM I get:

BootChip: CIC-NUS-6102
CRC 1: 0x635A2BFF Calculated: 0x635A2BFF (Good)
CRC 2: 0x8B022326 Calculated: 0x8B022326 (Good)

I can read back this output in Director and automatically patch the ROM accordingly, so it's all good!
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-22-06 08:06 PM Link
Excellent. Check your PM's, VL-Tone. I've given you a Windows compile of it.

I think it might only work with Z64, so be careful with it. If anything, just have your editor swap everything to Z64 if necessary. You have the means for that.

Remember: When you release anything with n64sums in it, be sure to include the .c and gpl.txt with the distribution. Putting those together with your finished editor will make sure you conform to everything stated in the GPL.


(edited by BGNG on 03-22-06 07:06 PM)
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-22-06 10:54 PM Link
The ROM will be converted to .z64 anyway using the byte swapper. n64sums will be run after as the last process.

Thanks for the compile!
HyperHacker

Star Mario
Finally being paid to code in VB! If only I still enjoyed that. <_<
Wii #7182 6487 4198 1828


 





Since: 11-18-05
From: Canada, w00t!
My computer's specs, if anyone gives a damn.
STOP TRUNCATING THIS >8^(

Last post: 6295 days
Last view: 6295 days
Posted on 03-23-06 12:04 PM Link
BGNG, not sure what's wrong with M0CK (but there's something), but do recall that my own compressor works except for that one padding bug. Maybe you could compare the code to see what they do differently. (And yes, I should rewrite mine to have code that isn't a huge mess, but that's beside the point. )
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-25-06 01:31 AM Link
Some little update before this thread gets burried

My "Super Mario 64 ROM extender" is almost ready. It works on my Mac, but the Windows version doesn't... I just installed Windows XP on Virtual PC, and I'll try to find and squash the bug.

For some reason, the shell_cmd Xtra doesn't call anything on Windows. Once this one is fixed, I don't think I'll have many other cross-platform problems, Director projects, even complex ones, usually run exactly the same on both platform. A few basic issues can happen with path separators, but these are taken care off now.

This program will be useful for other reasons than my editor. The ROM it produces can have its textures edited without having to deal with compression. The font and text MIO0 will now be editable, thanks to Cellar Dweller and BGNG.

Once the ROM extender is released, I may release some simple quick text and texture editor, and/or some interesting IPS patches to be used with the extended ROM



No Photoshop involved I swear!

Yes I could put 5 Bowsers. As for moving him in other levels, this won't be possible in my editor until version 1.5, as it involves switching which bank is loaded in which level, and inserting a special object. Actually, putting extra Bowsers require deleting and adding objects, which won't be possible in v1.0

It's much harder to battle 3 Bowsers at the same time. While you pick one by the tail and start spinning, the other two will toast you

Bowsers have no collision detection between themselves, and act independently, each one will become a key if you beat them. At first, the extra Bowsers will look stunned and won't attack, you have to pick them and throw them so they wake up.

It seems that the behavior code will decide which kind of Bowser you get depending on which level you are. So maybe it will be hard anyway to move it to other levels.


(edited by VL-Tone on 03-25-06 12:32 AM)
Guy Perfect









Since: 11-18-05

Last post: 6296 days
Last view: 6295 days
Posted on 03-25-06 02:37 AM Link
I always thought a video clip of tossing Bowser off of the mountain in Bob-omb Battlefield would make for one nice hype-inducing promotional video.
VL-Tone

Paratroopa








Since: 11-18-05

Last post: 6485 days
Last view: 6485 days
Posted on 03-25-06 05:34 AM Link
Originally posted by BGNG
I always thought a video clip of tossing Bowser off of the mountain in Bob-omb Battlefield would make for one nice hype-inducing promotional video.


I'll do my best to make this possible, but I cannot guarantee it. Personnaly I would like to battle Bowser on the top of the castle




Great news, Windows version of the ROM extender is ready and working! (Mac version later today.)

I'm confident enough to release it now:

http://rapidshare.de/files/16368233/M64ROMExtender_1.1b.zip.html

It's on rapidshare, you have to click the free button and wait a few seconds until the download can be started. A Read Me file is included.

Have fun!


(edited by VL-Tone on 03-25-06 04:35 AM)
(edited by VL-Tone on 03-25-06 04:38 AM)
(edited by VL-Tone on 03-25-06 04:42 AM)
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71Add to favorites | Next newer thread | Next older thread
Acmlm's Board - I3 Archive - ROM Hacking - General Super Mario 64 hacking / TT64 Progress thread | Thread closed


ABII

Acmlmboard 1.92.999, 9/17/2006
©2000-2006 Acmlm, Emuz, Blades, Xkeeper

Page rendered in 0.079 seconds; used 452.86 kB (max 587.57 kB)