Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
1 user currently in Rom Hacking: |
Acmlm's Board - I2 Archive - Rom Hacking - Mario 64 - Amazing Stuff | | | |
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 | Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
User | Post | ||
RT-55J Ninji Level: 23 Posts: 194/240 EXP: 65287 For next: 2436 Since: 12-29-04 Since last post: 9 hours Last activity: 9 hours |
| ||
Originally posted by VL-Tone It's in the 15th e-mail in the game information section. |
|||
mekakame Micro-Goomba Level: 7 Posts: 12/18 EXP: 925 For next: 523 Since: 06-08-05 From: Samut Prakan, Thailand, Asia, Earth, Milky Way, Space... Since last post: 5 days Last activity: 1 day |
| ||
I wonder which program you use to hack N64, and rip grphics? | |||
Dark Ludwig Red Paratroopa Level: 21 Posts: 68/172 EXP: 45740 For next: 4203 Since: 09-17-04 From: Georgia Since last post: 9 days Last activity: 2 days |
| ||
Originally posted by mekakameThey pretty much most likely use hex editors as far as modifying little things in the rom, but they made their own MIO0 decompressors for the graphics. They then just made programs that display them. I am 99% sure that's right..... |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6576/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
That's pretty much what I did. I mainly use Tile Molestor for the graphics part, though, since my program isn't as accurate. | |||
eNathan Goomba Level: 8 Posts: 27/33 EXP: 1773 For next: 414 Since: 08-07-05 From: United States, but does it matter? Since last post: 1 day Last activity: 8 days |
| ||
(been away for a while..) wow im suprised, it seems like you's are getting somewhere with this Mario 64. BTW, Excellent hack V-Tone! Thats pretty advanced stuff im sure, chaning mario's head into princesses's Im still trying to find the X Y and Z cords of mario atm, I have found a few addresses that change Mario's location but I am not sure of their exact location (maybe a byte or two off?) and what type of float they are Ill get it them soon to! *eNathan plans to make a SM64 teleporter |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6621/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
If you mean RAM addresses, GSCentral should have them. | |||
mekakame Micro-Goomba Level: 7 Posts: 13/18 EXP: 925 For next: 523 Since: 06-08-05 From: Samut Prakan, Thailand, Asia, Earth, Milky Way, Space... Since last post: 5 days Last activity: 1 day |
| ||
Originally posted by HyperHacker I how have Tile Molester v0.16 When I open it, it doesn't seem to open anything... How to use it? |
|||
Riku Giant Goomba Level: 42 Posts: 699/1239 EXP: 505941 For next: 15421 Since: 06-21-05 From: ....Is this like a custom title? Since last post: 6 hours Last activity: 6 hours |
| ||
So would it be possible to when you get all 120 stars, make it have a boss run? Ya know, like Koopa 1, 2 and 3? Seprate levels I mean. | |||
VL-Tone Red Cheep-cheep Level: 23 Posts: 163/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
Hi there, gotta keep this thread alive... The image format in Mario 64 and in many other n64 games, is 16-bits per pixel, 5 bits per color channel and 1 bit for alpha, RGBA 5551. To produce my images I used my own program that converts a MIO0 file into an RGBA 8888 (8 bits per channels) RAW file that I open in Photoshop. For some reason, Photoshop defaults to CMYK color when opening a 4 channel file. I converted the images straight to RGBA color. Unfortunately I recently found out that I it still resulted in colors that are off. So it means that all the images I posted until now have wrong colors Maybe I'm daltonian and I don't know, but I didn't notice it before I'll try to make a batch script to fix them all. As for my level editor, the version online is not really useful now as the included combos mostly work in other levels. You can move and rotate objects though... But my own development version did improve. I recently discovered some key commands used in the object layout data. Take Level 1: You can find this line in a list in my hacking doc http://pages.infinit.net/voxel/Mario64HackingDoc.txt
It comes from this command at 2AC10C in ROM:
The "00" command that is 0x10 bytes long loads and warps to a level. The level layout data is loaded in "bank" 0E in RAM. So 405A60 is the address (in ROM) of where the object layout data starts, 405FB0 is the end, usually where a MIO0 file is (and that file is not necessarily used by this level). Now 0000264 is the entry point inside the level layout data. This is where the game starts to read data inside bank 0E in RAM. (these are symbolic RAM banks, not hard-wired). So 405A60+ 0x264= 405CC4 At this address you get:
Now about the geometry layout data, I wont deconstruct the whole data since I don't know much about it. The data happens to start at offset 0x0440 in bank 0E. As you can see in the command up-there: "22 08 00 36 0E 00 04 40", it's the data to load the grill geometry and associate it with 36.
Ok that's about it as for describing data. (Dang this post is long!) My development program can now show just about every level including most of it's "24" objects. My programs now look into a folder containing all decompressed MIO0 files from the game. So it can now decode just about everything on the fly. This means an eventual editor could feature the actual objects instead of boxes It also decodes the textures directly from the MIO0 files now so the colors are fixed. For now though, it's very slow to load a whole level and I'm still experimenting. One thing that I have to find is how the different body parts of Mario and other enemies are connected, and it's probably in the geometry layout data. Another important thing missing is the connection between commands 22 and level layout found inside compressed data. Those for which there is a description list. One last thing, I put all the pictures I posted here in an album that you can see there: http://pages.infinit.net/voxel/m64index.html Note, the colors are off (edited by VL-Tone on 09-06-05 03:05 AM) |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6876/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
Awesome. Looking at commands 06 and 07 it seems like this is some sort of script code. If you looked at what the game does with the command number you could very well find a jump table pointing to the code of every command. Any idea how the RAM 'banks' are mapped to real memory addresses? Maybe they're byteswapped or something, like 01 00 23 45 should really be 00 01 45 23. If it was just a straight memory address, it seems pretty odd to stick a zero in there. |
|||
VL-Tone Red Cheep-cheep Level: 23 Posts: 164/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
Originally posted by HyperHacker Yeah these are called ASM macro-commands, StarFox uses that too. I don't know exactly how banks are mapped into memory, but from I've looked inside a savestate, banks don't all have the same size. I would guess that their location is always the same though. I'm not sure what you mean by byte-swapping things though everything I posted is in normal byte order. I cannot find your example "01 00 23 45" in my post, what kind of offset were you talking about? Edit: I think I know what you mean HyperHacker... This is from the command that loads geometry layout data for object type 36. 22 08 00 36 0E 00 04 40 0E is the bank number and 000440 is the offset inside this bank. And I'm %100 sure about it since I use it to decode levels. 000440 is meaningful, it's the offset of the first command of the geometry layout data in bank 0E, and it happens to be the grill that appear when using object type 36. Other offsets precisely match. I did not find the use of this command by messing with it and loading the emulator, I found it by figuring out that those were offsets to geometry layout data inside a specific part of RAM, just by looking at the data. Then I did some experimentation that proved it to me. Most everything described in my last post is tried and tested, except things with question marks (edited by VL-Tone on 09-06-05 02:57 AM) (edited by VL-Tone on 09-06-05 03:06 AM) |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6885/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
That was just an example. I figured that in the command you posted, the real memory address would be 000E4004. But it's just an idea. | |||
VL-Tone Red Cheep-cheep Level: 23 Posts: 165/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
HyperHacker, I guess I over-reacted, but I felt a little insulted you thought I have done a byte order mistake, when I fully knew it was impossible, since all offsets matches and are used in my current decoder version... Anyway I don't do byte ordering mistakes anymore! So like I said, in my example, it's really 0E for the "bank" and 0440 for the offset inside that bank. Here is something very very interesting that I found... Take this command: 18 0C 00 07 00 3F C2 B0 00 40 5A 60 It decompresses the main MIO0 file for level 1 (3FC2B0 in ROM) in RAM bank 07, which is always used to store the main geometry data for a particular level. 405A60 is the end of this MIO0 file in ROM. You can re-point the pointer to the end of the ROM at 800000 for example (don't forget to set the end pointer too), and append a MIO0 file at the end of the ROM. Some emulators may want a ROM with a standard size so you may want to "pad" the rest with "00" or "FF" to get a 12 or 16 megs ROM. It works, I tried it, but you still have to decompress, recompress every-time you make a change... But here is the very very interesting part: command 17 is just like command 18, except that it copies uncompressed data in RAM... So try this: At 405CC8 in ROM, change "18 0C 00 07 00 3F C2 B0 00 40 5A 60" to "17 0C 00 07 00 80 00 00 00 81 17 C2". Then append the decompressed version of MIO0 file 3FC2B0 at the end of the ROM (at 800000), pad the rest to get a 12 or 16 megs ROM. You can then edit the uncompressed version of the MIO0 data right in the ROM!!! As a quick example, you can change the sign object byte (34) that is found near the starting point. Byte 34 for this sign can be found at 1129B in the MIO0 file (81129B in ROM) . You can change it to something else, like 64 for a breakable box. The same could be done for almost all other MIO0 files. The only problem with this would be making patches for hack distribution, but still, for now it can be very useful to experiment without having to decompress and recompress data all the time! (Edit: added an example hack of level 1's MIO0 file) (edited by VL-Tone on 09-06-05 11:04 PM) |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6900/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
Awesome. I wonder if that means we could compress things that aren't normally compressed if we run low on ROM space? (Though that would mean adding 24MB of content. ) If bank 7 is always used to hold the current level's layout, and the banks vary in size, then they're probably just various chunks of memory reserved for stuff. I imagine there's a master pointer table somewhere that would tell you the location of each 'bank'. |
|||
VL-Tone Red Cheep-cheep Level: 23 Posts: 166/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
Originally posted by HyperHacker All the MIO0 files decompressed amount to a little less than 8MB so doing this for all files would get us a 16MB ROM, though you could use the compressed MIO0 file space in the first 8MB for other things. What is the biggest possible size for a n64 ROM? In any case, compressing the resulting ROM or patch using ZIP would probably save us as much space as using MIO0 compression. Yeah I'm pretty sure there is a table for the "banks" locations, I didn't look for it yet though, one way to find it would be to find where bank 07 is in RAM, then looking for this offset inside the ROM. |
|||
Nebetsu Shmee Level: 55 Posts: 1401/1574 EXP: 1291130 For next: 23059 Since: 09-01-04 From: Nebland Since last post: 3 hours Last activity: 1 hour |
| ||
VL-Tone: I just want to interrupt the technical mumbo-jumbo and say this: OMFG WILL J00 HAVE MY CHILDREN?????? Seriously man: Keep up the good work. It's not often that I read a 20 page topic and wish it was MUCH longer. |
|||
VL-Tone Red Cheep-cheep Level: 23 Posts: 167/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
Originally posted by Nebetsu lol, I'm a man, and hetero at that (oh well do I really have to specify that in a ROM hacking forum?) So you just read all pages of this topic in one stretch? How much time did it take? I wish I had more time to spend on this, fortunately I will be able to post more often in September. |
|||
HyperLamer <||bass> and this was the soloution i thought of that was guarinteed to piss off the greatest amount of people Sesshomaru Tamaranian Level: 118 Posts: 6909/8210 EXP: 18171887 For next: 211027 Since: 03-15-04 From: Canada, w00t! LOL FAD Since last post: 2 hours Last activity: 2 hours |
| ||
Hello and welcome to last week. It's September 7th. I think the max size for an N64 ROM is 32MB; any higher than that and you need to use some bankswapping or something. Though I'm not entirely sure. I doubt we'll be adding that much any time soon anyway. If you can get me a dump of what would be in this 'bank 7' I can look for it in memory and see if I can find where it starts. From there a pointer table shouldn't be difficult to produce. I doubt it contains any length information though. (edited by HyperHacker on 09-07-05 02:29 AM) |
|||
VL-Tone Red Cheep-cheep Level: 23 Posts: 168/200 EXP: 64158 For next: 3565 Since: 06-06-04 From: In the Moon! Since last post: 5 days Last activity: 2 hours |
| ||
Originally posted by HyperHacker I knew that it's September , so what I mean is that I have more time, starting this month, I guess I should have just said that As for a dump of bank 7, if you are in Level 1, it should contain in RAM the decompressed data found in the MIO0 file found at 3FC2B0 in the ROM. It starts with:
|
|||
Cellar Dweller Flurry !!! Level: 27 Posts: 244/269 EXP: 107817 For next: 8342 Since: 03-15-04 From: Arkansas Since last post: 16 days Last activity: 34 min. |
| ||
This may need some more verification, but I think that I have found the location of a copy of the segment table in a savestate. Using a PJ64 format savestate the location is 0x33bb60 in the savestate(subtract 0x75c to get 0x33b404 in RAM). The 7th 32 bit word points to the current level data. The decompression locations for the MIO0 files seem to be dynamic. It is posible that this may not be the master copy of the segment table. |
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 | Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
Acmlm's Board - I2 Archive - Rom Hacking - Mario 64 - Amazing Stuff | | | |