Register - Login
Views: 99798336
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-03-22 06:06:34 AM
Jul - Posts by messiaen
Pages: 1 2 3 4 5 6 7 8 9 10 11 ... 45 46 47 48 49 50 51 52 53 54
messiaen
Catgirl
Level: 68


Posts: 123/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-05-08 08:13:17 PM, in Behaviour Scripts (last edited by messiaen at 06-06-08 10:59 AM) Link
I'm assuming that by Blaster you mean the "Bullet Bill Cannon" (Behav 0x600) behavior.
Looking at it, it is just a standard "solid" behavior. This one will crash in levels other than Whomp's Fortress because it uses a collision pointer:

21A408/000608 2A 00 00 00 07 01 02 60 - Points to Offset 0x10260 of current Bank 0x07.

On top of it, there is another object which uses behavior 0x179C (Bullet Bill) and actually spawns the object itself.

I tried using the 0x179C Behavior with the Bird model (ID 54) and I got a Bird shooter . I tried with other objects, and the effect is the same.

So probably you just chose the wrong behavior (0x0600 instead of 0x179C).

---

I'm almost sure this is one of the Bowser Key behaviors:

ROM Addr: 0021B92C Hex Behav: 13001B2C
>>>>>>>>>>Unused Behavior?
21B92C/001B2C 00 08 00 00
21B930/001B30 11 01 00 09
21B934/001B34 2D 00 00 00
21B938/001B38 27 26 00 00 03 01 C2 B0 -- turns the key animation
21B940/001B40 28 00 00 00
21B944/001B44 08 00 00 00
21B948/001B48 0C 00 00 00 80 2B 93 5C -- makes the key disappear after it is turned
21B950/001B50 09 00 00 00

This was easy to find, I just searched for pointers to Bank 0x03, which hold many shared objects.
messiaen
Catgirl
Level: 68


Posts: 124/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-06-08 01:46:45 PM, in ToadsTool Suggestions Link
What about the possibility to manually input the behavior number instead of choosing it from the list? Since this would require some intimacy with behaviors, TT64 could prompt a confirmation box.

The reason I ask this is twofold: first, because of the "undefined behaviors" and, second, to make access to custom behaviors more easy. TT64 compiles the list of behaviors from objects used in the game, so if you have an unused behavior it won't show in the interface. To use it, you have manually change the behavior of a object in a hex editor, and then open TT64 behavior for a new "object combo" to be created.

Another option, but this probably needs a bit more work, is to actually read the bank 0x13 and compile the list of behaviors pointers from there.
messiaen
Catgirl
Level: 68


Posts: 125/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-07-08 04:52:25 PM, in Editing the RAM objects Link
Thanks for the updated list! However, I'm having a few problems working with the extended ROM.

Nemu doesn't open it, Project 64 "Debug" (Build 52) has a memory viewer, but doesn't have searching or dump features. I tried to "attach" Renegade64 to Project 64 and Mupen64, but got errors.
messiaen
Catgirl
Level: 68


Posts: 126/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-07-08 06:14:24 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! (last edited by messiaen at 06-07-08 05:11 PM) Link
Something I did a few days ago, Yoshi and Princess Toadstool in Bob-omb:

<object width="425" height="350"> <embed src="http://www.youtube.com/v/7vinSDNyY9k" type="application/x-shockwave-flash" width="425" height="350"> </embed> </object>

To correct Peach's transparency, I used yoshiman RAM object information, which says offset 0x17C = transparency. The equivalent in behavior coding is "10 3D 00 FF" [(17C - 88) / 4 = 3D, see behavior tread].

Here it uses Koopa behavior, so that's why the animations are so glitchy, but one of the "playing as peach" codes would work.
messiaen
Catgirl
Level: 68


Posts: 127/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-07-08 06:16:44 PM, in Behaviour Scripts (last edited by messiaen at 06-07-08 05:16 PM) Link
No, if you use this behavior in the bowser key model it will just automatically rotate and disappear in a few seconds, exactly how it is used in the game.

--

Index 3D = Transparency (Offset 0x17C). Used with 0x10 command, for instance:

Description: Fwoosh Blowing Wind
21E798/004998 10 3D 00 F0

Common values = F0, FE, FF
messiaen
Catgirl
Level: 68


Posts: 128/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-08-08 04:06:32 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! Link
Yes, this is an edit of the level script commands. I made this for testing purposes in my modified/expanded version of "Flatworld" (which is a linear version of the Bob-omb level script made by VL-Tone). Doing it in the actual Bob-omb would be like hell, because there would be a LOT of pointers to be updated.

Basically, I changed the 0x17 level commands so that the Geo Layout/Polygons of Yoshi and Peach (which are actually in the same ROM 'bank') are loaded and then inserted the respective 0x22 commands to set their model IDs.

Probably due to memory limitations, the level was crashing, so I removed one of the banks which contains almost all the objects from Bob-omb and all the respective 0x22 commands that point to them.

It is interesting that sometimes you can get more objects in a level without loading extra banks or swap existing ones, but just by adding 0x22 commands. For instance, in the Bob-omb level, objects such as the Green Pipe, the Palm Tree and the Castle Door are loaded, but since there isn't a 0x22 to configure them, they aren't available.

Also, if you are wondering the ROM equivalent of your "Play as ____ hacks", this is it:

25 0C 00 01 00 00 00 01 13 00 2E C0

This is the level script command that sets Mario model/behavior. The fourth byte is the Model ID, and the last four bytes the behavior pointer.
messiaen
Catgirl
Level: 68


Posts: 129/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-08-08 10:40:38 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! (last edited by messiaen at 06-09-08 07:54 PM) Link
I didn't swap the polygons/geo layout of any object, just the banks which load them, and then inserted the 0x22 commands which point to the Yoshi/Peach Geo Layout and assign a model ID. These commands can be found at the Castle Grounds level script with Toad's Tool64.

The problem is that while you can change the RAM segment in which a bank (a block of data) will be loaded, each bank has its internal pointers with a fixed ID. Peach's and Yoshi's geo layout are stored in a bank which uses ID 0x0C, and their polygons in bank 0x05. Bob-omb has already loaded banks which uses these IDs, so before changing the 0x17 commands so that it loads the Peach/Yoshi data, you have to get rid of everything (basically, 0x22 pointers and 0x24 objects) which point to these banks, otherwise the level will crash.

To add yet more trouble, the new 0x0C and 0x05 banks are bigger than the previous ones, so I had to remove another bank and all its objects for the level to work. Perhaps in a very lightweight level you will be able to even load Peach without removing anything, but you could still have troubles with banks IDs (nothing that a simple custom program can't fix).

I think the best thing you could do for now is to separate Yoshi's data from Peach's data in their bank, so you would have less troubles with memory.

Also, there are some very useful docs regarding ROM banks in the Hacking Docs thread.

Edit: Using the same procedure, here is Bowser in Bob-omb Battlefield.
messiaen
Catgirl
Level: 68


Posts: 130/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-09-08 08:15:59 PM, in Post your SM64 mods, patches and screenshots here! (NO ROM LINKS!) (last edited by messiaen at 06-23-08 06:18 PM) Link
Bowser and his children in Bob-omb

AND...

Rainbow Road! (well, sort of) .
messiaen
Catgirl
Level: 68


Posts: 131/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-10-08 08:00:56 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! Link
Yes, depending on the level you would have to remove a lot of banks, so while it is possible to load the Peach bank in all levels, I think you would get a very dull hack.

Maybe a more interesting alternative would be to actually replace Mario's geometry with Peach's, if you REALLY want to work that much just to make a playable Peach.
messiaen
Catgirl
Level: 68


Posts: 132/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-12-08 04:02:11 PM, in Flat Lethal Lava Land v0.2 Released (with sample level included!) Link
Unfortunately, no. The bank which holds the level geometry/collision data also contains polygons/collision for some of the objects used in the level, so you can't use this space for other things. That is, unless you did some major editing, but I don't think it is worth it.

I'm not sure where are the lava polygons loaded from, but like water they aren't part of the regular level geometry.

Also, I still haven't decided what to do with the second area. Right now, I'm using the same flat terrain setting of area 1 (instead of the original inside volcano area), so that you can use another set of 0x24 objects.

I have also created a few remodeled versions of the "Platform with Arrows" for a little personal project which will be released along with the empty setting of this Flat Lethal Lava Land.
messiaen
Catgirl
Level: 68


Posts: 133/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-12-08 08:17:30 PM, in Strange color code Link
I'm not 100% sure, but all these offsets seem to be just colors/lightning used by the 0x03 RSP command (check the dedicated thread). 8107EC93 seems to be the same, as there isn't any relevant change of pattern in the data.

However, many other texture/geometry settings are embodied in the polygons commands, so that specific offset could be used by some highly specific set of polygon commands, thus producing the effect you noticed. I changed a few values for this but didn't notice nothing striking.
messiaen
Catgirl
Level: 68


Posts: 134/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-12-08 08:31:51 PM, in Flat Lethal Lava Land v0.2 Released (with sample level included!) (last edited by messiaen at 06-22-08 07:34 PM) Link
You're right about lava, unlike water it is a just a regular type of collision. I'm not sure if works on all kinds of terrains, as I have only tested this on Bob-Omb Battlefield.

So, it is possible to change each chunk of collisions commands to 0001 (Lava), retexture it and get a lava effect. The problem is that collision data is grouped in BIG chunks, so everything would turn into lava, making the level impossible .

A better option would be to create some kind of "lava block", so you can selectively place it as lava.

Edit: I released version 0.1 of this. Read the first post for more information and download link. If you make a level with it, don't hesitate to post screenshots/patch here .
messiaen
Catgirl
Level: 68


Posts: 135/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-13-08 03:16:47 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! Link
I don't know much about Geometry Layout of complicated models, but what commands of the Peach layout did you change to get rid of transparency?

To correct it in my test hack, I just inserted "10 3D 00 FF" in the behavior of the Peach object, which is basically the same you do with a Gameshark code. Perhaps you could add the same to Mario's behavior?

I don't know if the following will help you, but transparent and semi-transparent polygons are rendered in different "drawing layers" (the second byte of the 0x15 Geo Layout command). From my experiments, each drawing layer can hold its own attributes. If you insert a object with different geometry settings (for instance, generate texture coordinates from normals) it will affect all the polygons in the same drawing layer when that object is visible.

By the way, I think rotation (you asked a few messages ago) is probably determined by the Animation data, not by the Geo Layout.
messiaen
Catgirl
Level: 68


Posts: 136/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-14-08 03:56:35 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! Link
Oh, wait! I forgot something important!

Some weeks ago I had the same problem when some custom models weren't showing in the game. It took me a while to figure what was wrong, but the solutions is quite simple: the level script is of course processed linearly, so you have to make sure that the model has been already been defined by the 0x22 command before any 0x24 command uses it, otherwise there won't be any polygons to draw. This is the same case, so you must place the 0x25 command after the 0x22 which defines the model you are going to use.

This is not an issue with the Mario Model (ID #01) because it is loaded all the time in one of the shared banks.

So, I tried it and now Peach works on Bob-omb:

Video

I tried also playing with Bowser in Bob-omb, but his animations are too glitchy.
messiaen
Catgirl
Level: 68


Posts: 137/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-17-08 07:48:56 PM, in Why a Peach 64 hack is not impossible, but would require a lot of work! (last edited by messiaen at 06-17-08 04:51 PM) Link
This is Flatworld . I just replaced Bank 0x07 with the regular Bob-omb bank, updated the Collision (0x2E) and Level Polygons pointers (0x1F) and used the original Bob-omb terrain Geo Layout. This way you can get a more flexible Bob-omb level script ready to be expanded (if you change the 0x00 load script commands).

But getting back to the original question, the procedure to get Peach in Flatworld is the same I described above:

- Load the banks which contains Peach's Geo Layout and Polygons (for reference, use SM64GeoLayoutPtrsAndPolys.txt) .
If you have a duplicate bank ID (which is the case for this), you'll have to replace banks.
- Since the objects of the replaced banks are no longer available, remove the 0x22 commands which points to them. At this point you don't have to worry about 0x24 objects, because your Flatworld is probably empty.
- Add the corresponding 0x22 Peach pointer (you can get this data from the Castle Grounds). You may want to get Yoshi as a bonus (it is in the same bank as Peach).
- If the game crashes, probably you don't have enough memory, so you'll have to choose another bank to remove and all its 0x22 object pointers. If the game still crashes after this, you'll have to check all your level script for any kind of errors.

I'm learning some C to write a program to help me creating collision for objects, but when I get around that I could try a Bank ID changer. That would be very helpful to attain flexibility so we can mix objects from many levels.
messiaen
Catgirl
Level: 68


Posts: 138/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-18-08 09:39:49 PM, in Help/Questions about Toad's Tool 64 and SM64 hacking Link
The problem is that the Tilting Bridge data (polygons/collision) is not loaded in Flatworld, it is in the middle of the Bob-omb level terrain bank. You would have to load the whole Bob-omb bank, which is a more complicated edit.

Also, when you say input, I hope you didn't inserted any bytes in the ROM, because if you do so it will probably crash. For now, think of replacing commands.

You might want do this little experiment:

Find a 0x22 command in TT64 which points to a model you surely don't want to use on Flatworld. See how TT64 displays the ROM Address of each command you are working with ? By now, may want to turn the "hexadecimal box" to make things easier.

Go to the ROM Address of the 0x22 command you chose and replace it with:

22 08 00 12 16 00 03 88

This is a pointer to the "Green Pipe". The polygon/collision is already loaded in Flatworld (and in Bob-omb), but since there isn't a 0x22 command to assign a model ID to it, you can't use it the level.

Open the ROM again in TT64 and the Green Pipe will be available for you .

You can try also going to the "Castle Grounds" Level and looking at which commands use "Bank ID h03", all these objects will work on Flatworld because the loaded Bank is the same. Example of objects are a variety of doors and trees.

For anyone else reading, if you want a little twist to your Bob-omb level, this simple edit you will get you a few different objects into the level.
messiaen
Catgirl
Level: 68


Posts: 140/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-20-08 04:18:37 AM, in Weird roms Link
Indeed, the scroller seems interesting. If it was on a European ROM, I would say it could be one of the trainers found at Dextrose.com, which were released almost ten years before TT64.
messiaen
Catgirl
Level: 68


Posts: 141/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-21-08 09:05:07 PM, in Main Level Scripts and Geo Layout Hacking (First screens + Level menu) (last edited by messiaen at 06-21-08 06:09 PM) Link
Before you start reading this thread, I encourage you to take a quick look at SM64MainLevelScripts.txt, as this is the relevante file if you want to understand it. The main SM64 Hacking Doc included in TT64 is also a must, and the "level_commands.txt" file from Cellar Dweller's Hacking Notes contains some additional information.

Level scripts in SM64 are responsible for a lot of things, not just initializing the levels but also the menus and intro screen. The fact that almost all of the major commands are already documented makes SM64 a very interesting game to hack, because you don't need direct contact with the code itself to make some interesting things.

The first relevant Level Script is found at 269EA0-26A3A0 and loaded to RAM Segment 0x14. Let's take a look at the first code:

269EA4/0004: 16 10 00 00 80 16 F0 00 00 21 F4 C0 00 26 9E A0 --Loads ASM code into RAM at 8016F000
269EB4/0014: 17 0C 00 13 00 21 9E 00 00 21 F4 C0 --Loads Behavior Scripts into segment 0x13
269EC0/0020: 17 0C 00 07 00 AE D7 14 00 AF A0 54 --Loads MIO0 data in current level segment, 0x07 (18 0C 00 07 00 26 A3 A0 00 26 F4 20 in compressed ROM)
269ECC/002C: 1D 04 00 00
269ED0/0030: 1F 08 01 00 14 00 02 D0 --Points to Geometry Layout script for menus. (In levels, used to point to the main level Geometry Layout)
269ED8/0038: 20 04 00 00 --Usually means end of area in a normal level script.

This is the first intro screen code. The part that interest us are the Banks loaded with command 0x17 (Load uncompressed data). A ROM Bank is block of data loaded into a RAM segment identified by an ID number (the fourth byte of the 0x17 command). While the Bank ID is an arbitrary number, there is a consistent pattern used in the game. Bank 0x0E holds level scripts, Bank 0x09 Level textures, Bank 0x0A Background textures, Bank 0x07 Polygons/Animation/Collision, Banks 0x05, 0x06 and 0x08 usually contains the objects used in each level.

If you want to try a simple hack, go to the Bank 0x07 for this first menu and nope (replace with 0's) all the vertex data from AED714 to AF55A5. You have erased the "Super Mario 64" polygons from the intro screen.

The next command of interest is the Geometry Layout pointer:
1F 08 01 00 14 00 02 D0 = Offset 0x2D0 of Bank 0x14 = 0x2D0 + 269EA0 = 26A170 - This is the Geo Layout JUST for the first screen.

There are still some undocumented Geo Layout commands, but here are the main ones for this menu:

0800 0000 00A0 0078 00A0 0078 <-- Initializes the display Width/Height ?
1800 0000 8016 F670
1800 0000 8016 F984

The 0x18 command is used to load things directly from the RAM, not polygon data like the 0x15 one, but instead it points to ASM. Sometimes it is used to load water/lava polygons and if I'm not mistaken even regular ones in the Castle Grounds. The third and fourth byte sometimes provides arguments, which probably will be interpreted by the ASM loaded. Sometimes it seems to be the Drawing Layer, but other times it seems very different.

I can't do much for this screen so lets move on with the level script. Here are other Geo Layout pointers:

1F 08 01 00 14 00 03 5C -> Second Screen (press start) Geo Layout

In this second screen Geo Layout, there are two 0x18 commands

18 00 00 00 80 16 FE 70 - ??
18 00 00 02 80 27 64 B0 - Places Mario Face on screen

If you want to get rid of Mario's face, get rid of that second 0x18 command. Here is a way to nope 0x18 commands: if you just fill with 0's, the game will crash, so instead you just replace it with the first one. You can also try changing that 0x18 with the following:

1F 08 01 00 14 00 03 B8 -> Game Over Geo Layout

18 00 00 00 80 16 FF FC - Place Game Over GFX at BG

Another interesting thing in main level script is the list of 0x00 "Load script commands". This is very important if you want to extend the level script you are working with. Also, you may want to try changing it (or the conditionals above) so that the first level loaded is not the Castle Grounds but something else. It turns out that the first camera animation / letter is not loaded in the Castle Grounds level script, but somewhere else before the "New game" starts.

So, there are just some ideas. Maybe in the future we can change the very beginning of these level scrips to load something else .
messiaen
Catgirl
Level: 68


Posts: 142/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-22-08 10:11:17 PM, in Main Level Scripts and Geo Layout Hacking (First screens + Level menu) (last edited by messiaen at 06-23-08 09:10 PM) Link
The basics of the model format understood and documented by VL-Tone, otherwise TT64 wouldn't exist. This isn't the polygon data but the vertex list. The polygon data is called by the "Geometry Layout", but in this case the command that loads doesn't point directly to the polygon data but to ASM which loads the polygon data.

However, finding the "entry-point" which loads the vertex data is not hard. I just looked for an 0xE7 command which initializes the RSP and I found it at AF8AB4.

The "Mario 64" is composed of 3 layers, each one called by a 0x06 Jump command.
Instead of erasing all the vertex data, you can also just nope each one of these jumps commands to get rid of the "Super Mario 64" text. Here is it without one of the layers:


This is, by the way, the procedure I used to make the "Flat" Lethal Lava Land (psss, has anybody tried it?)

Another combination of layers:


With some modifications you may even load another model instead of the "Super Mario 64" title screen. My first try:



The mushroom wouldn't fit on screen (too tall), so I changed a bit the Y values of its vertices, that why it is a bit messed up.

---
A video of the first screens without "Super Mario 64" and the "Mario Face". And a cool experimental level, of course .
messiaen
Catgirl
Level: 68


Posts: 143/1085
EXP: 2596326
For next: 132474

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 06-24-08 09:45:28 PM, in SM64 Water Hex Hacking (Geeky stuff) Link
Nice .

The polygon part will be a bit harder. As rstewart said a few messages ago, they are loaded with the 0x18 command in the level terrain Geo Layout. For instance, there are the 0x18 commands in the Castle Grounds, starting at offset 0x454DB4:

1800 0000 802D 01E0 -> This one is shared by other levels. I can't notice any different upon removing it.
1800 1601 802D 1B70 -> Waterfall polygons
1800 1601 802D 104C -> Main water area (under the bridge and near the start area)

These are pointers to ASM data. My guess is that the water polygons are in the middle of the 0x07 bank of a specific level, but they get called indirectly by that ASM data, instead of the usual 0x15 command.

Perhaps a close look at the polygons of semi-transparent objects (I'm thinking of the Boo enemy) will help us creating a more portable kind of water polygons.

It's been a long time since I last looked at this thread, but what was your approach to create the water box in Flatworld? A "water" 0x24 object would be interesting!
Pages: 1 2 3 4 5 6 7 8 9 10 11 ... 45 46 47 48 49 50 51 52 53 54
Jul - Posts by messiaen


Rusted Logic

Acmlmboard - commit 47be4dc [2021-08-23]
©2000-2022 Acmlm, Xkeeper, Kaito Sinclaire, et al.

29 database queries, 47 query cache hits.
Query execution time: 0.087562 seconds
Script execution time: 0.029438 seconds
Total render time: 0.117000 seconds