Register - Login
Views: 96137622
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
12-11-18 02:53:11 AM

Jul - SM64 Hacking (Archive) - Goomba Geo Layout Deconstruction New poll - New thread - New reply
Next newer thread | Next older thread
messiaen
Catgirl
Level: 65


Posts: 170/1085
EXP: 2271208
For next: 64420

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 07-16-08 04:12:07 PM (last edited by messiaen at 07-18-08 07:04 PM) Link | Quote
Here is the deconstructed Goomba Geo Layout. This probably will be useful for creating new (modified) enemies. Maybe in the future it could be expanded to an "enemies" Geo Layout thread.

All offsets are absolute:


200FB4: 1600 0001 0096 0064 <-- Sets shadow
200FBC: 0400 0000
200FC0: 1D00 0000 0000 4000 <-- Scale Polygons
200FC8: 0400 0000
200FCC: 1301 0000 0000 0000 0801 D760 <-- Not polygons, but RSP settings (*)
200FD8: 0400 0000
200FDC: 1301 0000 0000 0000 0000 0000
200FE8: 0400 0000
200FEC: 1400 0000 0000 0000 <-- "Triggers" 0x0D scaling?? (**)
200FF4: 0400 0000
200FF8: 1504 0000 0801 B690 <-- Body (not animated). Uses texture #382.
201000: 0500 0000
201004: 0500 0000
201008: 0400 0000
20100C: 0E00 0002 8029 DB48 <-- Calls Blinking Function (common to many objects)
201014: 0400 0000
201018: 1301 0030 0000 0000 0801 B5C8 <-- Head (***)
201024: 1301 0030 0000 0000 0801 B5F0 <-- Blinking Head (***)
201030: 0500 0000
201034: 1301 FFC4 FFF0 002D 0000 0000 <-- Foot 1 position (x,y,z)
201040: 0400 0000
201044: 1301 0000 0000 0000 0801 CE20 <-- Foot 1 (****)
201050: 0500 0000
201054: 1301 FFC4 FFF0 FFD3 0000 0000 <-- Foot 2 position (x,y,z)
201060: 0400 0000
201064: 1301 0000 0000 0000 0801 CF78 <-- Foot 2
201070: 0500 0000
201074: 0500 0000
201078: 0500 0000
20107C: 0500 0000
201080: 0500 0000
201084: 0100 0000



The Bank 0x08 pointed by this object starts at 0xA8181C.

(*) BC00 0002 8000 0040 <-- "MOVEWORD" RSP command. According to Mupen's RSP plug-in, the fourth byte argument = NUMLIGHT, so it probably affects lightning properties.

(**) I have to check this again, but without the 0x14 the 0x1D scaling doesn't work. At least that was my experience with custom non-animated models. This has to be tested again.

(***) The second byte is the distance between the body and the head. Normally in a 0x13 command it would be the X position, however the animation of this node makes the object rotated. Each head uses a different texture, and they are alterned in order to get the blinking effect.

(****) Foot 1 color offsets = 0xA9ACEC/0x194D0 and 0xA9ACF4/0x194D8 [absolute/relative to bank]

Here is a simple modification:

rstewart215804
User
Crazed Mario 64 Hacker!!!
Level: 11


Posts: 13/18
EXP: 4894
For next: 1091

Since: 09-12-07


Since last post: 9.0 years
Last activity: 8.0 years

Posted on 07-16-08 08:25:14 PM Link | Quote

------------------------------------

[14] [00 00 00 00 00 00 00]

[1]: All children are aligned toward the camera (billboards)
[2-8]: Always 00

------------------------------------



The 0x14 command rotates all its children toward the camera. This is how the game produces all its billboards, such as the black Bob-omb main body.

In the Goomba, the 0x14 command rotates a small billboard located between the head and feet. In your picture it is the big gray block.



Another command that is quite interesting and that isn't documented is the 0x10 command.


------------------------------------

[10] [00 00 00] [00 8E] [FF CD] [FF 82] [00 16] [FF D8] [FF 79]

[1]: 10= Full rotation and position. Used only for Mario's cap currently.
[2,3,4]: Always 00
[5,6], [7,8], [9,10]: X, Y and Z position of the part, relative to the current node, 16-bit signed integers.
[11,12], [13,14], [15,16]: X, Y and Z rotation of the part, relative to the current node, 16-bit signed integers.

------------------------------------



It currently is only used for Mario wings on his hat but it can be used to rotate portions of objects. With this command you can give the Goomba an upside down head.
messiaen
Catgirl
Level: 65


Posts: 171/1085
EXP: 2271208
For next: 64420

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 07-17-08 01:49:37 PM (last edited by messiaen at 07-18-08 07:08 PM) Link | Quote
Nice! I was having a hard time adding body parts to the Goomba, perhaps the 0x10 command will help. Here's the Bob-omb enemy Geo Layout, it is very similar to the Goomba:




Starts at offset 0x201088. Bank 08 = 0xA8181C.

1600 0001 00C8 0046 <-- Sets Shadow
0400 0000
1D00 0000 0000 6000 <-- Scaling
0400 0000
1301 0000 0000 0000 0000 0000
0400 0000
1301 0000 0000 0000 0000 0000
0400 0000
1301 0000 0000 0000 0000 0000
0400 0000
1400 0000 0000 0000 <-- See previous post
0400 0000
1504 0000 0802 2D08 <-- Main body (not animated)
0500 0000
0500 0000
1301 0000 0039 FFC4 0000 0000 <-- Position for Foot 1
0400 0000
1301 0000 0000 0000 0000 0000
0400 0000
1301 005B 0000 0000 0000 0000 <-- Another position parameter for Foot 1 (*)
0400 0000
1301 0000 0000 0000 0802 3270 <-- Foot 1
0500 0000
0500 0000
0500 0000
1301 0000 0037 003E 0000 0000 <-- Position for Foot 2
0400 0000
1301 0000 0000 0000 0000 0000
0400 0000
1301 005B 0000 0000 0000 0000 <-- Another parameter for Foot 2 (*)
0400 0000
1301 0000 0000 0000 0802 3378 <-- Foot 2
0500 0000
0500 0000
0500 0000
1301 0000 0000 0000 0802 3480 <-- Top part (trigger)?
0E00 0002 8029 DB48 <-- Calls Blinking function (used by many objects)
0400 0000
1304 0000 0000 0000 0802 2B58 <-- Eyes
1304 0000 0000 0000 0802 2B88 <-- Blinking eyes
0500 0000
0500 0000
0500 0000
0500 0000
0500 0000
0100 0000



(*) The foot is rotated, so the "X" parameter is actually a "Y". Using negative numbers (ie, above 8000) will increase not only the foot Y position but also the amplitude of the movement (?).

Do you have any clue why so many empty 0x13 commands are used?
VL-Tone
Member
Super Mario 64 forum moderator
Level: 51


Posts: 225/621
EXP: 997438
For next: 16500

Since: 07-27-07

From: Montreal, Canada

Since last post: 1.0 years
Last activity: 58 days

Posted on 08-02-08 05:26:40 PM Link | Quote

0x13 commands that have "00 00 00 00" as a polygon data pointers are used as rotation joints. They're always found before a 0x04 command so that all children will rotate around that point. While they don't have a polygon pointer, they still use the x,y and z coordinates. The reason why you see a few 0x13 that look completely empty is that many parts in the Goomba must be rotating around the center, at coord 0,0,0.

About that 0x14 command, it's a very interesting find! I managed to achieve billboarding in TT64 and was looking for a way to know which object use billboarding. I was a little disappointed to find that simple objects like trees and coins don't use the 0x14 command. But what I just found solves the problem: the 0x21 behavior script command sets the whole object to billboarding!

The only problem is that TT64 doesn't currently read behavior scripts when loading objects. I guess it'll have to do it eventually anyway giving the progress that was made regarding behavior scripts.
Stevoisiak
Member
Level: 36


Posts: 104/283
EXP: 302461
For next: 5649

Since: 11-22-07

From: New York, Long Island

Since last post: 8.0 years
Last activity: 2.0 years

Posted on 08-04-08 09:31:33 AM Link | Quote
Originally posted by VL-Tone

About that 0x14 command, it's a very interesting find! I managed to achieve billboarding in TT64 and was looking for a way to know which object use billboarding. I was a little disappointed to find that simple objects like trees and coins don't use the 0x14 command. But what I just found solves the problem: the 0x21 behavior script command sets the whole object to billboarding!

Billboarding? In Mario 64? Do you mean that there are objects that use billboarding in SM64? Also, for the billboarding scripts, why not just make special cases for certain objects?
messiaen
Catgirl
Level: 65


Posts: 190/1085
EXP: 2271208
For next: 64420

Since: 11-20-07


Since last post: 4.0 years
Last activity: 3.0 years

Posted on 08-04-08 10:22:33 AM Link | Quote
Trees, Mr. I and the flames are examples of objects which use this kind of effect. Since Mario64 is vey low-polygonish, this is a good trick to cut the number of polygons.

In the Goomba, it is used in the body. Rather than using a complex 3D structure such as the head, it's just a simple square (formed by two triangles) with a texture applied and the billboarding effect:

200FEC: 1400 0000 0000 0000 <-- Enable Billboarding for next
200FF4: 0400 0000
200FF8: 1504 0000 0801 B690 <-- Body (not animated). Uses texture #382.
Stevoisiak
Member
Level: 36


Posts: 105/283
EXP: 302461
For next: 5649

Since: 11-22-07

From: New York, Long Island

Since last post: 8.0 years
Last activity: 2.0 years

Posted on 08-04-08 10:52:04 AM Link | Quote
Originally posted by messiaen
Trees, Mr. I and the flames are examples of objects which use this kind of effect. Since Mario64 is vey low-polygonish, this is a good trick to cut the number of polygons.

In the Goomba, it is used in the body. Rather than using a complex 3D structure such as the head, it's just a simple square (formed by two triangles) with a texture applied and the billboarding effect:

200FEC: 1400 0000 0000 0000 <-- Enable Billboarding for next
200FF4: 0400 0000
200FF8: 1504 0000 0801 B690 <-- Body (not animated). Uses texture #382.


Oh yeah. I forgot about the goomba. But the 2D objects also use billboarding?
uberoe
User
Level: 10


Posts: 11/17
EXP: 4135
For next: 279

Since: 05-31-09


Since last post: 8.0 years
Last activity: 8.0 years

Posted on 06-23-09 02:12:19 AM (last edited by uberoe at 06-25-09 03:38 PM) Link | Quote
***Fly Guy Geo Layout Deconstruction
00200DE8 [ 16 00 00 01 00 96 00 64 ]<-- Sets shadow
00200DF0 [ 04 00 00 00 ]
00200DF4 [ 1D 00 00 00 00 00 40 00 ]<-- Scales Polygons
00200DFC [ 04 00 00 00 ]
00200E00 [ 13 01 00 00 00 00 00 00 00 00 00 00 ]
00200E0C [ 04 00 00 00 ]
00200E10 [ 13 01 00 00 00 00 00 00 08 01 17 10 ]<-- Body
00200E1C [ 04 00 00 00 ]
00200E20 [ 13 01 FF D3 FF EC FF C9 00 00 00 00 ]<-- Right Foot position (x,y,z)
00200E2C [ 04 00 00 00 ]
00200E30 [ 13 01 00 00 00 00 00 00 08 01 08 40 ]<-- Right Foot
00200E3C [ 05 00 00 00 ]
00200E40 [ 13 01 FF D3 FF EC 00 37 00 00 00 00 ]<-- Left Foot position (x,y,z)
00200E4C [ 04 00 00 00 ]
00200E50 [ 13 01 00 00 00 00 00 00 08 01 09 68 ]<-- Left Foot
00200E5C [ 05 00 00 00 ]
00200E60 [ 13 01 00 FA 00 00 00 00 00 00 00 00 ]<-- Body (Head,Arms,etc)?
00200E6C [ 04 00 00 00 ]
00200E70 [ 13 05 00 00 00 00 00 00 08 01 0B 80 ]<-- Propeller ontop of head
00200E7C [ 13 01 00 00 00 00 00 00 00 00 00 00 ]
00200E88 [ 05 00 00 00 ]
00200E8C [ 05 00 00 00 ]
00200E90 [ 05 00 00 00 ]
00200E94 [ 05 00 00 00 ]
00200E98 [ 05 00 00 00 ]
00200E9C [ 01 00 00 00 ]

***Hears a little video of the feet replaced with yoshi's

<object width="300" height="300"><embed src="http://www.youtube.com/v/co7a4pUF8AI&hl=en&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

***firts try at a new enemy

Photobucket
minimaster58
Member
Level: 20


Posts: 27/75
EXP: 36974
For next: 5465

Since: 01-26-10


Since last post: 8.0 years
Last activity: 8.0 years

Posted on 02-06-10 11:25:58 AM Link | Quote
So one day we can make Para Goombas?
Mr. Game
Keep practicing, kid.
Level: 13


Posts: 18/30
EXP: 9355
For next: 912

Since: 01-25-10


Since last post: 8.0 years
Last activity: 8.0 years

Posted on 02-07-10 12:23:21 PM Link | Quote
Originally posted by minimaster58
So one day we can make Para Goombas?

I think that's possible.......
VideoGuy
Member
Level: 21


Posts: 77/84
EXP: 45555
For next: 4388

Since: 05-10-09


Since last post: 8.0 years
Last activity: 6.0 years

Posted on 02-07-10 01:54:49 PM Link | Quote
One day we'll be able to do anything we want to SM64. Just look at what they've done with SMW. But we'll need to get an object geometry importer first, instead of just the level one we have now.
Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Goomba Geo Layout Deconstruction New poll - New thread - New reply




Rusted Logic

Acmlmboard - commit 220d144 [2018-11-04]
©2000-2018 Acmlm, Xkeeper, Inuyasha, et al.

32 database queries, 3 query cache hits.
Query execution time: 0.230918 seconds
Script execution time: 0.022959 seconds
Total render time: 0.253878 seconds