Register - Login
Views: 91459279
Main - Memberlist - Active users - Calendar - Wiki - IRC Chat - Online users
Ranks - Rules/FAQ - Stats - Latest Posts - Color Chart - Smilies
05-25-18 07:44:46 PM

Jul - SM64 Hacking (Archive) - Mario 64 Level Importer New poll - New thread - New reply
Pages: 1 2 3 4 5 6 7 8 9 10 ... 42 43 44 45 46 47 48 49 50 51 52 53 54 55Next newer thread | Next older thread
DarkSpacer
Member
Level: 29


Posts: 96/184
EXP: 136365
For next: 11520

Since: 03-23-10


Since last post: 1.0 years
Last activity: 1.0 years

Posted on 07-03-11 08:09:01 PM Link | Quote
I don't think it's that...the star acts like I've selected it and the Save text turns red like normal...and the selector turns blue the instant I put my mouse over it...

BTW the one tree that works has ALL of the Act stars selected.
dsx9069
Member
Level: 13


Posts: 24/30
EXP: 8276
For next: 1991

Since: 06-14-11

From: NY, USA

Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-04-11 06:28:10 AM (last edited by dsx9069 at 07-04-11 07:43 PM) Link | Quote
I'm not totally sure if this question belongs in another thread, but...

How do I find the exact address of a "RAM segment"? I've been going through VL-Tone's docs and keep seeing command structures that end in a "RAM segment" and offset. Are these segments also referred to as ROMbanks? I was looking at Mario's geo-layout data and wanted to locate segment 17h(23 dec), accessed by the jump instruction 02 01 00 00 17 00 2C E0.
MarIO0
Member
Level: 15


Posts: 27/43
EXP: 15916
For next: 468

Since: 09-03-09


Since last post: 5.0 years
Last activity: 4.0 years

Posted on 07-05-11 08:20:39 AM (last edited by MarIO0 at 07-05-11 08:21 AM) Link | Quote
Originally posted by dsx9069
I'm not totally sure if this question belongs in another thread, but...

How do I find the exact address of a "RAM segment"? I've been going through VL-Tone's docs and keep seeing command structures that end in a "RAM segment" and offset. Are these segments also referred to as ROMbanks? I was looking at Mario's geo-layout data and wanted to locate segment 17h(23 dec), accessed by the jump instruction 02 01 00 00 17 00 2C E0.


RAM segments and ROM banks aren't exactly the same, but closely related.
- A ROM bank is a chunk of the ROM which contains resources (and can be loaded using the 0x17, 0x18 or 0x1A commands).
- A segment address is an identifier which is given to a ROM bank.

Now, on the question: How to find the offset corresponding to a segment? You have to find the command that associated this RAM segment to a ROM bank. If you have a script command dump, you'll find it here. But you probably don't, so here's a trick.

As I said before, the ROM banks are loaded with the 0x17, 0x18 and 0x1A commands. If you look at the documentation and replace the known data, you'll find out that your instruction can be:



170C0017 XXXXXXXX XXXXXXXX
180C0017 XXXXXXXX XXXXXXXX
1A0C0017 XXXXXXXX XXXXXXXX



So open an hex editor and try to find bytes with this format. I did this for you, and here's the only result:

17 0C 00 17 00 12 79 B0 00 12 A7 E0


So, segment 0x17 represents a bank that starts at ROM offset 0x1279B0 and ends at ROM offset 0x12A7E0.

Hope this was useful!
dsx9069
Member
Level: 13


Posts: 25/30
EXP: 8276
For next: 1991

Since: 06-14-11

From: NY, USA

Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-06-11 08:10:18 AM Link | Quote
Originally posted by MarIO0
Originally posted by dsx9069
I'm not totally sure if this question belongs in another thread, but...

How do I find the exact address of a "RAM segment"? I've been going through VL-Tone's docs and keep seeing command structures that end in a "RAM segment" and offset. Are these segments also referred to as ROMbanks? I was looking at Mario's geo-layout data and wanted to locate segment 17h(23 dec), accessed by the jump instruction 02 01 00 00 17 00 2C E0.


RAM segments and ROM banks aren't exactly the same, but closely related.
- A ROM bank is a chunk of the ROM which contains resources (and can be loaded using the 0x17, 0x18 or 0x1A commands).
- A segment address is an identifier which is given to a ROM bank.

Now, on the question: How to find the offset corresponding to a segment? You have to find the command that associated this RAM segment to a ROM bank. If you have a script command dump, you'll find it here. But you probably don't, so here's a trick.

As I said before, the ROM banks are loaded with the 0x17, 0x18 and 0x1A commands. If you look at the documentation and replace the known data, you'll find out that your instruction can be:



170C0017 XXXXXXXX XXXXXXXX
180C0017 XXXXXXXX XXXXXXXX
1A0C0017 XXXXXXXX XXXXXXXX



So open an hex editor and try to find bytes with this format. I did this for you, and here's the only result:

17 0C 00 17 00 12 79 B0 00 12 A7 E0


So, segment 0x17 represents a bank that starts at ROM offset 0x1279B0 and ends at ROM offset 0x12A7E0.

Hope this was useful!


Yes, this is VERY useful to me. Dudaw had told me about how to find it using TT64, but your trick incorporates what I've read from VL-Tone's docs and everything is making more sense to me.

On another note, has VL-Tone ever compiled a doc about collision data associated with objects? This would be useful in cases where I change the size of, let's say, goombas or bomb-omb's from the 1D scale command in their geo-layout data.
MarIO0
Member
Level: 15


Posts: 28/43
EXP: 15916
For next: 468

Since: 09-03-09


Since last post: 5.0 years
Last activity: 4.0 years

Posted on 07-06-11 11:34:32 AM (last edited by MarIO0 at 07-06-11 11:35 AM) Link | Quote
It's documented in this post: http://acmlm.no-ip.org/board/thread.php?id=1657&page=4

But it's pretty simple, basically:


0x0041: Specifies the end of the terrain data. It's followed by 2 bytes, I don't know what they mean.

0x0040: Loads vertices.
First there's 2 bytes which specifies the number of vertices. Each vertice has 6 bytes which mean:
2 bytes: X coordinate.
2 bytes: Y coordinate.
2 bytes: Z coordinate.

0x000E, 0x002C, 0x0024, 0x0025, 0x0027, 0x002D: Defines a chunk of terrain with extra data.
First there's 2 bytes which specifies the number of triangles. Each triangle has 8 bytes which mean:
2 bytes: 1st vertex index
2 bytes: 2nd vertex index
2 bytes: 3rd vertex index
2 bytes: Extra data (I think it usually means a direction).

All other types: Defines a chunk of terrain.
First there's 2 bytes which specifies the number of triangles. Each triangle has 6 bytes which mean:
2 bytes: 1st vertex index
2 bytes: 2nd vertex index
2 bytes: 3rd vertex index



The type of the terrain depends on the opcode used to define it. I think there's a list on Dudaw's homepage.
MarIO0
Member
Level: 15


Posts: 29/43
EXP: 15916
For next: 468

Since: 09-03-09


Since last post: 5.0 years
Last activity: 4.0 years

Posted on 07-06-11 12:01:15 PM Link | Quote
Oh, and a small correction: Banks can also be loaded using the 0x0010 (Load bank and call level script) opcode.
DarkSpacer
Member
Level: 29


Posts: 97/184
EXP: 136365
For next: 11520

Since: 03-23-10


Since last post: 1.0 years
Last activity: 1.0 years

Posted on 07-06-11 08:11:32 PM (last edited by DarkSpacer at 07-06-11 08:27 PM) Link | Quote
One thing that IS slow in that interface is that the star takes a while to actually select after you click, and then it just selects the star under your cursor regardless of which star you actually clicked.

ANYWAY,

What I've learned so far by having s--er, messing with the ROM:

dsx, you were right about Toad. I used the Pink Bomb-Omb model and (besides it being totally screwed up) it did not appear to run the transparency code. I think I've done that before, but...everyone forgets these things...

And the message "Tough luck, Mario! Princess Toadstool isn't here...bwa ha ha!!" seems to play the Bowser laugh sound at runtime regardless of what model/behavior says it.


I tried to mess with Eyerock, but he doesn't appear at all.

And I'm just selecting ALL of the act stars for now, since that's the only thing that seems to work.


EDIT: Once I get a large number of findings, I'll make a YouTube video showing my findings and my theories.

EDIT 2:

Originally posted by dsx9069
Well, I tried to look for that object that looks like a grayed out chest or something (for Eyerok), but I can't seem to find it in the SSL object bank (it's an area 3 object, so maybe that's why?).


I know what you mean now. The starting position of Eyerok looks like a chest when untextured. Well who says the object is read like that? None of the objects read so that they look like they're supposed to in TT64. If I were to wager, look for either a cube with a ridiculous amount of polygons or duplication code or something in the shape of a hand or...gosh darnit, man, stop trusting Eyerok. He's so sneaky he won't even show up when I tell him to...
dsx9069
Member
Level: 13


Posts: 26/30
EXP: 8276
For next: 1991

Since: 06-14-11

From: NY, USA

Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-08-11 08:32:34 AM (last edited by dsx9069 at 07-08-11 08:33 AM) Link | Quote
Originally posted by DarkSpacer
dsx, you were right about Toad. I used the Pink Bomb-Omb model and (besides it being totally screwed up) it did not appear to run the transparency code. I think I've done that before, but...everyone forgets these things...


Toad's geometry layout starts at ROM address 0x1E4FD4 with the following data:

20 00 03 E8
04 00 00 00
16 00 00 00 00 96 00 64
04 00 00 00
1D 00 00 00 00 00 40 00
04 00 00 00
18 00 00 0A 80 29 D9 24 <-- Transparency Code
0E 00 00 02 80 29 DB 48
04 00 00 00
02 01 00 00 0D 00 01 14
02 01 00 00 0D 00 02 7C
05 00 00 00
05 00 00 00
05 00 00 00
05 00 00 00
01 00 00 00

Where I indicated the transparency location, switch "18 00 00 0A 80 29 D9 24" with "04 00 00 00 05 00 00 00". This should make it so that Toad's model is always visible wherever Mario is. Here is a screenshot showing the result:




NOW the challenge is finding a behavior (or modifying an existing one) that won't distort Toad when you turn him into a baddy I need to do this to complete my new level.
DarkSpacer
Member
Level: 29


Posts: 98/184
EXP: 136365
For next: 11520

Since: 03-23-10


Since last post: 1.0 years
Last activity: 1.0 years

Posted on 07-08-11 03:52:17 PM Link | Quote
I know that Dudaw12 managed to do that in his hack "SM64 Wacky Worlds"...Maybe you should ask him.

(Ikachan is IN MY WAY!)

Um...yah. Way off topic...*waits for Metal Man's metal Ban Hammer of doom*

[/useless stuff]
dsx9069
Member
Level: 13


Posts: 27/30
EXP: 8276
For next: 1991

Since: 06-14-11

From: NY, USA

Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-10-11 12:53:53 PM (last edited by dsx9069 at 07-10-11 01:13 PM) Link | Quote
Originally posted by DarkSpacer
I know that Dudaw12 managed to do that in his hack "SM64 Wacky Worlds"...Maybe you should ask him.


I'm not sure what you mean by that. It's one thing to change body parts around between two models that have the same number of nodes...it's another thing to give Toad a behavior that belongs to a model with less nodes...

I would need to know exactly what most of the behavior script codes do (individually). Unfortunately, in the current version of VL-Tone's SM64 behaviors doc (available in one of MM88's threads), most of these codes are undocumented. Only few, like the one that creates sub-objects, are documented.

Nonetheless, I'll ask Dudaw about this.

EDIT: I am also aware of the animation pointer which is a 0x27 command. In fact, it was this particular code that I was playing around with. In one of my attempts to create a goomba-walking Toad, I managed to have Toad's model stay in tact during the animation, but he was somewhat offset from his central coordinates, and he was facing the wrong way.
Dudaw
Member
Level: 16


Posts: 34/49
EXP: 17809
For next: 2447

Since: 01-06-11


Since last post: 5.0 years
Last activity: 1.0 years

Posted on 07-10-11 09:30:56 PM (last edited by Dudaw at 07-10-11 09:42 PM) Link | Quote
Originally posted by dsx9069
Originally posted by DarkSpacer
NOW the challenge is finding a behavior (or modifying an existing one) that won't distort Toad when you turn him into a baddy I need to do this to complete my new level.



I don't get what you mean by "distort."
Are you talking about the transparency, or the animation?

Anyway, I'm not sure, but I think that 0x18 function you replaced may be used for the animation of Toad.
A nice workaround for making Toad opaque at all times would be to simply replace these commands in the geo layout:
0x001E5014 (transparent)
0x001E500C (opaque)

Same goes for Princess Peach.
dsx9069
Member
Level: 13


Posts: 28/30
EXP: 8276
For next: 1991

Since: 06-14-11

From: NY, USA

Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-12-11 06:57:21 PM (last edited by dsx9069 at 07-12-11 06:58 PM) Link | Quote
Originally posted by Dudaw
Originally posted by dsx9069
Originally posted by DarkSpacer
NOW the challenge is finding a behavior (or modifying an existing one) that won't distort Toad when you turn him into a baddy I need to do this to complete my new level.



I don't get what you mean by "distort."
Are you talking about the transparency, or the animation?

Anyway, I'm not sure, but I think that 0x18 function you replaced may be used for the animation of Toad.
A nice workaround for making Toad opaque at all times would be to simply replace these commands in the geo layout:
0x001E5014 (transparent)
0x001E500C (opaque)

Same goes for Princess Peach.


Aaahh, ok. When I said "distort", I meant that Toad's model looks weird when using, say, the "Goomba Walk" behavior. The same thing happens to an object with Mario's model and the "Goomba Walk" behavior. The behavior script has an animation code that seems to affect specific nodes of any given model, so that the "Goomba Walk" behavior animates only part of Toad's model (and not even correctly). I will post a screenshot shortly demonstrating what I'm describing.
MarIO0
Member
Level: 15


Posts: 30/43
EXP: 15916
For next: 468

Since: 09-03-09


Since last post: 5.0 years
Last activity: 4.0 years

Posted on 07-13-11 04:57:20 PM Link | Quote
Originally posted by dsx9069
Originally posted by DarkSpacer
I know that Dudaw12 managed to do that in his hack "SM64 Wacky Worlds"...Maybe you should ask him.


I'm not sure what you mean by that. It's one thing to change body parts around between two models that have the same number of nodes...it's another thing to give Toad a behavior that belongs to a model with less nodes...

I would need to know exactly what most of the behavior script codes do (individually). Unfortunately, in the current version of VL-Tone's SM64 behaviors doc (available in one of MM88's threads), most of these codes are undocumented. Only few, like the one that creates sub-objects, are documented.

Nonetheless, I'll ask Dudaw about this.

EDIT: I am also aware of the animation pointer which is a 0x27 command. In fact, it was this particular code that I was playing around with. In one of my attempts to create a goomba-walking Toad, I managed to have Toad's model stay in tact during the animation, but he was somewhat offset from his central coordinates, and he was facing the wrong way.


Most common behavior script commands are documented, with VL-Tone doc + Cellar Dweller's doc you pretty much have it. But you must be aware that a lot of behavior scripts just call a function in game code (MIPS).

As for the behavior changing thing, it's not strange at all that Toad is distorted, since other models likely don't have the same internal structure.You may want to try some more behaviors, but it'd be rare to get it working perfectly.
MarIO0
Member
Level: 15


Posts: 31/43
EXP: 15916
For next: 468

Since: 09-03-09


Since last post: 5.0 years
Last activity: 4.0 years

Posted on 07-13-11 09:32:50 PM Link | Quote
Also, have a look at http://www.youtube.com/results?search_query=yoshielectron+toad
Specially http://www.youtube.com/watch?v=gEdU4vbnFbU

The distortion is most likely caused by the enemy moving some part of its body. Assigning a behaviour which does not move parts of the body (the shyguy is probably one of those) will likely work.
Dudaw
Member
Level: 16


Posts: 35/49
EXP: 17809
For next: 2447

Since: 01-06-11


Since last post: 5.0 years
Last activity: 1.0 years

Posted on 07-14-11 11:40:40 PM (last edited by Dudaw at 07-14-11 11:44 PM) Link | Quote
Originally posted by dsx9069
Aaahh, ok. When I said "distort", I meant that Toad's model looks weird when using, say, the "Goomba Walk" behavior. The same thing happens to an object with Mario's model and the "Goomba Walk" behavior. The behavior script has an animation code that seems to affect specific nodes of any given model, so that the "Goomba Walk" behavior animates only part of Toad's model (and not even correctly). I will post a screenshot shortly demonstrating what I'm describing.


See this list:
http://sites.google.com/site/4thstudios/list-of-animation-commands

The 0x27 behavior commands are simply segmented pointers... To more segmented pointers... To probably more segmented pointers.
But essentially, those pointers directly called by the 0x27 commands pertain to each of the animations of a specific model.

You can easily "swap out" some of the 0x27 commands to make a Goomba animate like a Koopa, for example.
Just be aware that some behavior functions have special instructions that change animations at certain times.
If that's the case, then swapping the 0x27 commands could eventually crash the game or lead to a glitchy graphic.

This thread shouldn't be overlooked either:
http://jul.rustedlogic.net/thread.php?id=13444
JPaul

Level: 7


Posts: 3/7
EXP: 926
For next: 522

Since: 07-18-11


Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-19-11 07:48:59 PM Link | Quote
Any chance of a linux port? (Wine isn't working for this specific program!)
Lyskar
12210
-The Chaos within trumps the Chaos without-
Level: 184


Posts: 9645/12211
EXP: 85122246
For next: 997164

Since: 07-03-07

From: 52-2-88-7

Since last post: 3.0 years
Last activity: 3.0 years

Posted on 07-19-11 08:38:34 PM Link | Quote
I wouldn't say it is impossible so much as improbable. Messaien has limited time. It's more likely to be possible to try and work around Linux incompatibility than otherwise.
Joe
Common spammer
🗿
Level: 105


Posts: 2205/3302
EXP: 11924830
For next: 337430

Since: 08-02-07

From: Pororoca

Since last post: 6 days
Last activity: 2 days

Posted on 07-19-11 09:42:19 PM Link | Quote
Originally posted by JPaul
(Wine isn't working for this specific program!)
Sometimes it is possible to fix this with the appropriate DLL files and a program-specific configuration. Try running Wine through a terminal. The error messages can help you find the DLL files that might fix the problem.
JPaul

Level: 7


Posts: 5/7
EXP: 926
For next: 522

Since: 07-18-11


Since last post: 6.0 years
Last activity: 6.0 years

Posted on 07-19-11 09:43:40 PM (last edited by JPaul at 07-20-11 01:13 AM) Link | Quote
.net framework and wine isn't the best of a mix.

EDIT: Thanks for the suggestion, I haven't tried that with this specific program yet.
I still think it's dotnet related, though.

EDIT: Got it working with Mono!
DarkSpacer
Member
Level: 29


Posts: 100/184
EXP: 136365
For next: 11520

Since: 03-23-10


Since last post: 1.0 years
Last activity: 1.0 years

Posted on 07-23-11 04:28:44 PM (last edited by DarkSpacer at 07-23-11 04:29 PM) Link | Quote
This video dosen't strictly deal with my screwing th--WITH the rom, but I've been working on it.
Pages: 1 2 3 4 5 6 7 8 9 10 ... 42 43 44 45 46 47 48 49 50 51 52 53 54 55Next newer thread | Next older thread
Jul - SM64 Hacking (Archive) - Mario 64 Level Importer New poll - New thread - New reply




Rusted Logic

Acmlmboard - commit 5d36857 [2018-03-03]
©2000-2018 Acmlm, Xkeeper, Inuyasha, et al.

30 database queries, 12 query cache hits.
Query execution time: 0.180301 seconds
Script execution time: 0.035260 seconds
Total render time: 0.215561 seconds
Memory used: 1310720