Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
1 user currently in Rom Hacking: hukka | 2 guests
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 33Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
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: 5404/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 07-01-05 02:53 AM Link | Quote
Anything that's not part of the level geometry itself (eg anything movable) should be defined in the objects list.

You sure it's 12 bytes? I know they use float values for coords in memory, so I don't see how they couldn't in ROM, and those are 4 bytes each. Just the coordinates alone should be 12 bytes, then you have those other two properties, object ID (as in what the hell is it) and possibly size. It might have a type, too; I know the 3 types of ! boxes are one object that just use a certain byte to determine what colour/cap they are.
Someguy

Buzzy Beetle
It seems as though the girl you've fallen for is also a pyromaniac.
Level: 32

Posts: 328/397
EXP: 193329
For next: 13113

Since: 03-15-04
From: I'm proud to be an American... I think...

Since last post: 1 day
Last activity: 5 hours
Posted on 07-01-05 03:07 AM Link | Quote
Can you give a list of objects you have found out? I changed Koopa the Quick to show up on act 1 and changed his object so I can see the different ones, but I skipped around alot in the beginning, and I was thinking I could fill in empty spaces with your data if possible, and vice versa.
BGNG

Snifit
Level: 22

Posts: 108/276
EXP: 56579
For next: 1771

Since: 06-03-05

Since last post: 8 days
Last activity: 3 hours
Posted on 07-01-05 04:08 AM Link | Quote
Kinda off-topic, but it's approperiate nonetheless. In my layout/signature, you can see that I've used some images to show which projects I'm involved in here at Acmlm's Board. There's F-Zero X Level Editing and Super Mario 64 Level Editing. The latter may be useful to others. Here it is if you have layouts disabled:



I offer to anyone who wants to, take that image and use it in your own layouts/signatures. I recommend taking it and hosting it somewhere yourself, as I'm likely to remove the image without notice. But there it is, and I'm using it to show all of Acmlm who cares to look this project of ours, so we should perhaps be able to rally more support that way.

And besides... It took me all of 15 minutes to make that sucker. You'd better appreciate it! (-:
Chickenlump

Level: 41

Posts: 615/722
EXP: 474192
For next: 5953

Since: 03-15-04
From: Columbia City Indiana

Since last post: 3 hours
Last activity: 4 min.
Posted on 07-01-05 05:44 AM Link | Quote
Thanks for the sig image BGNG, it's very nicely done.
I uploaded it to my own photobucket account so as not to leach off of yours.
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: 5409/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 07-01-05 08:07 AM Link | Quote
If you don't mind I'm just gonna use yours.
Sokarhacd

Ball and Chain Trooper
Resistance is Futile
You Will Be Assimilated
Hab SoSlI' Quch
Level: 61

Posts: 1397/1757
EXP: 1799888
For next: 76708

Since: 03-15-04

Since last post: 6 days
Last activity: 4 hours
Posted on 07-01-05 08:59 AM Link | Quote
cool, ill put it in my sig, just because its very interesting, if anyone wants to use it from my host instead of uploading it, then its here http://dcah.us.to/sm64le.gif
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 85/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 07-01-05 10:55 AM Link | Quote
Hyperhacker, I was mistaken, these are 24 bytes after all, but some other type of objects have different length. I'm sure though that the start positions for objects are 16-bits (2 bytes) for each axis. This is the format used by the geometry data. I cannot see why they would have used 4 bytes for this as it would be an overkill and take more space (remember, SM64 had to be a very compact game). It's very possible that 4-bytes coords are used in RAM for precise movements, but just looking at the data it's obvious (to me) that the start positions are 16-bits signed integers for x,y and z just like the level geometry vertices.

Here is a really useful way of finding order in a chaos of hex data.
If you already know about this technique, I hope others can learn from this because I rarely (or never) seen it explained anywhere.

The trick is to use a good old text editor, like the notepad...

It's a really great draft tool to find the format of data with objects of different byte sizes. This is actually what I mostly used to find the polygon and level format for StarFox, and recently the Mario 64 polygon format (that and a custom program that evolved as I found more data). It's really simple and it beats an hex editor when you have to deal with this type of hacking IMHO.

Still the hex editor should be used in parallel with the text editor. First you copy some not too small chunk of data from an hex editor, then paste it in the text editor. The pasted format has to be bytes separated by spaces with no carriage returns (you'll add those manually).

So you look at the data in the text editor, and try to find patterns, reoccurring bytes at fixed intervals. Let's say you see that 1824 repeats every 24 bytes. Position the cursor just before the next 1824 and hit return. Repeat the operation for every other patterns you see. Remember though that the reoccurring bytes are not necessarily the first bytes of the object "container", maybe it's in the middle of the object. In this case it seems that 1824 are the first bytes of the objects since the 04 07 00 00 is sandwiched between the two 1824... groups. But it doesn't matter at much first, just insert returns to create lines with each part of a repeating patterns. Along the way you may find other evidences that confirm that the carriage returns are inserted at the right place. You can also delete returns if you have to.


Here is what you find starting at 405A60 (reversed bytes order)

18 24 36 1F B0 05 00 03 BE 01 00 00 46 01 00 00 00 00 00 00 00 13 68 48
18 24 37 1F 01 F7 CD 02 00 04 00 00 2D 00 00 00 03 00 00 00 00 13 1C 4B
18 24 00 1F FE F7 00 00 03 F4 00 00 19 00 00 00 00 00 00 00 00 13 E0 25
18 24 CF 1F 15 F7 00 00 9E F1 00 00 1B 00 00 00 00 00 00 00 00 13 78 14
18 24 CA 1F 4C 06 2C 01 03 12 00 00 00 00 00 00 28 00 00 00 00 13 70 1B
04 07 00 00
18 24 00 03 FF 05 00 0F 47 EA 00 00 00 00 00 00 00 00 00 00 00 13 A4 3A
18 24 00 3C FF 05 00 0F 47 EA 00 00 00 00 00 00 00 00 00 00 00 13 80 3A
18 24 00 03 0C 02 09 0B E8 EA 00 00 00 00 00 00 02 00 00 00 00 13 A4 3A
18 24 00 3C 0C 02 09 0B E8 EA 00 00 00 00 00 00 02 00 00 00 00 13 80 3A
18 24 B4 1F 1F FC 76 03 13 F2 00 00 00 00 00 00 00 00 00 00 00 13 08 3A
18 24 B4 1F EF FC 76 03 33 EF 00 00 00 00 00 00 00 00 00 00 00 13 08 3A
18 24 B4 3E A3 FF 76 03 AA F2 00 00 00 00 00 00 00 00 00 00 00 13 08 3A
18 24 C3 01 A5 E9 8C 00 81 17 00 00 00 00 00 00 02 00 00 00 00 13 DC 31
18 24 C3 01 96 E7 00 00 18 1A 00 00 00 00 00 00 01 00 00 00 00 13 DC 31
18 24 C3 3E A5 E9 8C 00 81 17 00 00 00 00 00 00 00 00 00 00 00 13 28 32
18 24 C3 3E 96 E7 00 00 18 1A 00 00 00 00 00 00 03 00 00 00 00 13 DC 31
18 24 80 01 C2 E9 80 00 E0 15 00 00 87 00 00 00 01 00 00 00 00 13 10 4F
18 24 C9 3E C2 E9 80 00 E0 15 00 00 B4 00 00 00 00 00 00 00 00 13 74 32
18 24 00 02 E8 0C 92 10 05 EE 00 00 00 00 00 00 00 00 00 00 00 13 D0 45
18 24 68 3C 48 0D 02 03 64 19 00 00 00 00 00 00 01 00 00 00 00 13 80 45
04 07 00 00
[18 24 56 01 64 06 92 10 41 EA 00 00 6D FF 00 00 00 00 00 00 00 13 F4 01] Boss
18 24 68 02 5C F0 00 00 65 14 00 00 00 00 00 00 02 01 00 00 00 13 80 45
18 24 00 3F 90 E8 E8 03 60 09 00 00 00 00 00 00 00 03 00 00 00 13 8C 3E
18 24 00 3F 38 E6 E8 03 E2 04 00 00 00 00 00 00 04 04 00 00 00 13 FC 3E
18 24 7A 3F 0E 06 B0 04 2C 01 00 00 00 00 00 00 00 05 00 00 00 13 3C 3E
04 07 00 00
04 1B 00 00
0C 18 07 00 3F 00 B0 C2 40 00 60 5A
0C 1A 09 00 32 00 70 D0 33 00 30 4B
0C 18 0A 00 2A 00 B0 C6 2B 00 10 8F
0C 18 05 00 13 00 20 4D 13 00 D0 B5
0C 17 0C 00 13 00 D0 B5 13 00 10 B9
0C 18 06 00 1C 00 30 42 1D 00 90 7C
0C 17 0D 00 1D 00 90 7C 1D 00 10 83
0C 18 08 00 1F 00 00 22 20 00 D0 08
0C 17 0F 00 20 00 D0 08 20 00 10 14
04 1D 00 00
0C 25 01 00 00 00 01 00 00 13 C0 2E
08 06 00 00 00 15 60 06
08 06 00 00 00 15 6C 07
08 06 00 00 00 15 58 09
08 22 17 00 00 16 E8 0F
08 22 36 00 00 0E 40 04
08 22 37 00 00 0E 58 04
08 22 38 00 00 0E 70 04
08 1F 00 01 00 0E 88 04
08 06 00 00 00 0E 00 00
08 06 00 00 00 0E 7C 00
08 06 00 00 00 0E E8 01
18 24 00 1F 62 E6 E8 03 40 19 00 00 87 00 00 00 0A 00 00 00 00 13 74 2F
18 24 00 1F 47 02 7B 0A F5 EA 00 00 66 FF 00 00 0B 00 00 00 00 13 5C 07
18 24 00 1F 90 06 FB 0E 6D EA 00 00 67 FF 00 00 0C 00 00 00 00 13 5C 07
18 24 00 1F 2C E6 00 04 E9 F2 00 00 6B 00 00 00 0D 00 00 00 00 13 5C 07
18 24 00 1F BC 07 00 03 DA 19 00 00 69 FF 00 00 0E 00 00 00 00 13 5C 07
08 26 09 0A 0A 01 00 00
08 26 09 0B 0C 01 00 00
08 26 09 0C 0B 01 00 00
08 26 09 0D 0E 01 00 00
08 26 09 0E 0D 01 00 00
08 26 06 F0 32 01 00 00
08 26 06 F1 64 01 00 00
08 2E 00 00 00 07 58 E9
08 39 00 00 01 07 4C 10
04 30 00 00
08 36 00 00 03 00 00 00
04 31 00 00
04 20 00 00
04 1E 00 00
0C 2B 00 01 87 00 62 E6 00 00 40 19
08 11 00 00 24 80 D8 BC
08 12 01 00 24 80 D8 BC
04 1C 00 00
04 04 01 00
04 02 00 00


I put the Bob-ombs boss object in brackets.

[18 24 56 01 64 06 92 10 41 EA 00 00 6D FF 00 00 00 00 00 00 00 13 F4 01]

56 is the object type for the boss
01 is the act in which it appears (3F and 1F have other meanings?)
Then you clearly see 3 16-bits signed integers which are most likely the x,y,z coordinates.

Here are the coordinates in correct byte order.
0664 1092 EA41 the last one is a negative value.

Ok so that's it for now, let me just feed this into my program to confirm all this. Sorry for the long post, but it think it was useful to include that much data

Hey look what I got in my signature



(edited by VL-Tone on 07-01-05 01:58 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: 5416/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 07-01-05 01:59 PM Link | Quote
Is there such thing as a 16-bit float? The format in memory generally sticks to values around 1.0 so I can't imagine why they would need to use a 16-bit value in ROM; even like 5.0 would be way out of the level area. You may be right on the precision idea; changing a float coordinate by anything less than 0x00010000 is barely noticeable. The coordinates might be stored using some sort of 'small float' that's less precise, and expand it to a full 32-bit float in memory so it doesn't have to do a lot of calculations later.

Hm, come to think of it the lower 16 bits of these coordinates rarely changes. Maybe they're omitted? In the first byte sequence you posted, "18 24 36 1F B0 05 00 03 BE 01 00 00 46 01 00 00 00 00 00 00 00 13 68 48", which bytes would be the coordinates?
Cellar Dweller

Flurry
!!!
Level: 27

Posts: 233/269
EXP: 107817
For next: 8342

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 07-01-05 03:04 PM Link | Quote
Has anyone noticed that thr act number acts like a bit field? (e.g. 0x03 -> acts 1 and 2)
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 86/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 07-01-05 03:31 PM Link | Quote
Hyperhacker, do you believe me now?



I never said that they were 16 bit floats, they are 16-bits signed integers. They are values that can go from -32768 to 32767. For example $FFFE=-2 , $FFFF=-1, $0000=0, $0001=1 etc. The dividing point between negative and positive values is $8000 (32768), values higher than that are negative.

(Edit: sorry forgot to answer that question: x=(B0 05), y=(00 03) , z=(BE 01) are the coordinates in the example you provided. In normal byte ordering it's $050B, $0300 and $01BE)

Now about the picture... these are all the $1824 objects found in the level object data. The selected one is the Bob-Omb boss. You can see that warps and Mario's starting position are included... more about that soon (hopefully before I take my week vacation starting Monday)

Cellar Dweller I think you are right about the act byte... it may be very simple: one bit per act, with a maximum of 8 acts per level



(edited by VL-Tone on 07-01-05 06:34 AM)
(edited by VL-Tone on 07-01-05 06:37 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: 5421/8210
EXP: 18171887
For next: 211027

Since: 03-15-04
From: Canada, w00t!
LOL FAD

Since last post: 2 hours
Last activity: 2 hours
Posted on 07-01-05 05:41 PM Link | Quote
Wonder how hard it'd be to add acts to a level then.

If they're not floats, though, what are they? The game translates them to a float that's rarely over 5.0. I can't grasp why or how you would use 16-bit integers for this.
Someguy

Buzzy Beetle
It seems as though the girl you've fallen for is also a pyromaniac.
Level: 32

Posts: 329/397
EXP: 193329
For next: 13113

Since: 03-15-04
From: I'm proud to be an American... I think...

Since last post: 1 day
Last activity: 5 hours
Posted on 07-01-05 06:35 PM Link | Quote
From what I see in that pic, does that mean it would be possible close to now to make the program allow you to move the objects and output the proper code and tell you the offset it was at, or atleast tell you where each object would be in the rom to help find what's what? If not I think I'll continue playing with it with this new found info, finding what object is what and trying to figure a tiny bit out on my own now that I know how many bytes each thing is.

EDIT: A small bit of something I figured out, the last two bytes of the objects are the type bytes, they determen what the object acts like, but also appear to be quite sensitive. Minor changes crash the game, however copying bytes from other objects seem to make it okay. Some kind of pointer maybe? Changing bytes 17 and 18 seem to affect the status of Koopa the Quick when I used him as a test subject before going on to the last ones. Sometimes it made him act like a normal Koopa, or a shellless koopa, or a Koopa the Quick sized one, one time he acted like normal but said something like "Ehh hee hee hee" and the game crashed(either because I forgot to put the flagpole on act 1 or whatever he was set to crashed the game.

Finally I may do some slight aid to the community!


(edited by Someguy on 07-01-05 01:01 PM)
wario

Micro-Goomba
Level: 5

Posts: 2/11
EXP: 405
For next: 124

Since: 07-01-05

Since last post: 109 days
Last activity: 83 days
Posted on 07-01-05 07:53 PM Link | Quote
is anyone remake super smash bros 64? because i think of putting alot of charcters in there.sorry about being off topic though


(edited by wario on 07-01-05 10:55 AM)
Chickenlump

Level: 41

Posts: 616/722
EXP: 474192
For next: 5953

Since: 03-15-04
From: Columbia City Indiana

Since last post: 3 hours
Last activity: 4 min.
Posted on 07-01-05 08:08 PM Link | Quote
Originally posted by wario
is anyone remake super smash bros 64? because i think of putting alot of charcters in there.sorry about being off topic though


I don't think anyone is hacking that game right now.
The only thing I know of right now is a re-texturing project for the game, and that's pretty much it.

http://emutalk.net/showthread.php?t=26284
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 87/200
EXP: 64158
For next: 3565

Since: 06-06-04
From: In the Moon!

Since last post: 5 days
Last activity: 2 hours
Posted on 07-01-05 09:14 PM Link | Quote
Originally posted by HyperHacker
Wonder how hard it'd be to add acts to a level then.

If they're not floats, though, what are they? The game translates them to a float that's rarely over 5.0. I can't grasp why or how you would use 16-bit integers for this.


Are you trolling me or something HyperHacker? The pic I posted proves that the coords are 16-bits signed integers. The sphere are plotted using the 16-bits signed integers found in each 18 24 object and they just happen to be at the same location as most of the objects in level 1, this ain't no coincidence. I also spent a great length of post to explain to you what 16-bits signed integers are. Tell me how you came to think that values from -32768 to 32768 are not suitable for points in 3d space?

Someguy: Yes, I -may- publish such a program before my vacation... In my current version you can already click on the spheres to select them and see the related hex data.
Keitaro

Iron Knuckle
ウラシマ ケイタロウ
Level: 54

Posts: 1234/1342
EXP: 1201569
For next: 32301

Since: 03-15-04
From: Hinata, Japan

Since last post: 2 days
Last activity: 2 days
Posted on 07-01-05 09:33 PM Link | Quote
sweet jesus, mary and joseph...I lurk for a bit and this is what you guys come up with? Holy hell, I should go away more often, you'll probably have reverse engineered the game by that time kickass job to all who did whatever. You are truely what romhackers should be
Sukasa

Boomboom
Error 349857348734534: The system experienced an error.
Level: 57

Posts: 1111/1981
EXP: 1446921
For next: 39007

Since: 02-06-05
From: *Shrug*

Since last post: 6 days
Last activity: 1 day
Posted on 07-01-05 11:16 PM Link | Quote
Looking at what you've said about act numbers, would that mean that if you had an object you wanted to appear on acts 1, ,2 and 4, you could type in the act number 0x0B?
Anyways, I would realy like to help out, does anyone know of anything I can do to help?
Chickenlump

Level: 41

Posts: 618/722
EXP: 474192
For next: 5953

Since: 03-15-04
From: Columbia City Indiana

Since last post: 3 hours
Last activity: 4 min.
Posted on 07-01-05 11:53 PM Link | Quote
Sure, help out with the list I'm starting to compile.
Were looking to build a list of 0 - 255 (in hex) of what each value is for each object's image.
Go to the offset 405B9E and change that byte and save and write down what it becomes in the game.
This byte changes the image of the first red bob-omb you come across in act 1 of level 1 (you start right next to it).
I've made a savestate right before the begining of the level to make it easier.



Here is my wip list:

64 - Pirahna Plant
65 - Chain Chomp chain link
66 - Chain Chomp
67 - Stone Boss
68 - koopa turtle
69 - nothing?
6A - Koopa the Quick's Flagpole
6B - Wooden Log
6C - nothing?
6D - nothing?
6E - nothing?
6F - Chain Chomp
70 - nothing
71 - nothing
72 - nothing
A4 - Small round white drop on ground
A5 - Small Rain Drop on ground
A6 - Water Puddle on ground
A7 - Cloud (flat)
A8 - Small Bubble (flat)
A9 - Nothing
AA - Small Round Pinkish sphere (flat)
AD - Nothing
AE - Nothing
AF - Nothing
B0 - Nothing
B1 - Nothing
B2 - Nothing
B3 - Nothing
B4 - Top Half of round black rolling ball (flat)
B5 - Nothing
B6 - Nothing
B7 - Nothing
B8 - Nothing
B9 - Little Blue Fish
BA - Little Blue Fish
BB - Little Pink Butterfly
BC - Black Bob-omb
BE - Koopa Shell
BF - Shelless Koopa
C0 - Goomba
C1 - Nothing
C2 - silver sparky ball with face
C3 - Red Bobomb


(edited by Chickenlump on 07-01-05 02:59 PM)
(edited by Chickenlump on 07-01-05 03:24 PM)
Sukasa

Boomboom
Error 349857348734534: The system experienced an error.
Level: 57

Posts: 1113/1981
EXP: 1446921
For next: 39007

Since: 02-06-05
From: *Shrug*

Since last post: 6 days
Last activity: 1 day
Posted on 07-01-05 11:57 PM Link | Quote
OK, how about I do 0xD0 up? I should be able to handle that easily enough.
Chickenlump

Level: 41

Posts: 619/722
EXP: 474192
For next: 5953

Since: 03-15-04
From: Columbia City Indiana

Since last post: 3 hours
Last activity: 4 min.
Posted on 07-01-05 11:59 PM Link | Quote
Cool, and I'll head the opposite way, and edit the list I made above as I go.
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 33Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Rom Hacking - Mario 64 - Amazing Stuff | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.023 seconds.