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
The Kins

Kodondo
Level: 38

Posts: 555/595
EXP: 354733
For next: 15714

Since: 03-15-04
From: Melbourne, VIC, Australia

Since last post: 2 days
Last activity: 9 hours
Posted on 08-20-05 04:16 PM Link | Quote
It's not Goombahead, but it's the first step on our road to creating freakish player characters that don't deserve to exist!

The next step is getting a "I want to die" voice sample into the game.
RT-55J

Ninji
Level: 23

Posts: 191/240
EXP: 65287
For next: 2436

Since: 12-29-04

Since last post: 9 hours
Last activity: 9 hours
Posted on 08-20-05 09:58 PM Link | Quote
Originally posted by The Kins
The next step is getting a "I want to die" voice sample into the game.

I believe that all the samples in the game are compressed using something called ADPCM.

Interesting note: The sound that a Boo makes is really Bowser's laugh played really fast.
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2002/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-20-05 10:27 PM Link | Quote
Originally posted by RT-55J

I believe that all the samples in the game are compressed using something called ADPCM.

Interesting note: The sound that a Boo makes is really Bowser's laugh played really fast.
Correct on the first, and prove it on the second.

By that I mean prove it for the rest of us, I believe it already.
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: 6415/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 08-21-05 12:37 AM Link | Quote
Also interesting is that Peach's voice sample in the game sounds different than the actual recording.
Originally posted by VL-Tone
Since you guys documented types for these objects using a sign as a basis, which used a specific parameter, it broke some objects that crashed when this parameter was used.

Hm... I bet the sign's parameter is a text pointer or some such.
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2008/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-21-05 12:48 AM Link | Quote
Originally posted by HyperHacker

Hm... I bet the sign's parameter is a text pointer or some such.
...or a table index. Who knows?

Comparison MP3 please.
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 156/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 08-21-05 06:13 AM Link | Quote
I think it's a table pointer, but I have not verified it. The text messages from friendly bob-ombs in the uncompressed object layout data are referred by a table pointer.

I would love to hear Bowser's laugh at "normal" speed, instead of the slowed down version in the game (or accelerated one for Boo's)

By the way anyone of you tried the ips patch for Mario with Peach's head? I know it's a little freakish, but it's very funny in action Anyway it's not like I spent much time on it, I was studying the data when I realized I could do this hack pretty easily from what I knew, but it was never like a goal to me.


(edited by VL-Tone on 08-20-05 09:14 PM)
(edited by VL-Tone on 08-20-05 09:18 PM)
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2010/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-21-05 03:09 PM Link | Quote
I did. Never tried to enter the castle though.
Cellar Dweller

Flurry
!!!
Level: 27

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

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 08-21-05 04:17 PM Link | Quote
I tried the patch. Mario's head turns into a large textured polygon inside the castle and all of the levels crashed PJ64. One level locked up Windows so tight that I had to press reset.

There is a command for setting/changing the transformation matrix. It works like the OpenGL functions glPushMatrix, glLoadMatrix, glMultMatrix, and glMatrixMode rolled into one.

01 GG 00 40 PP PP PP PP
|/ |/ |---/ |---------/
| | | |
| | | \- Pointer to the matrix
| | |
| | \- Size of matrix data; always 0x0040
| |
| \- Flags: 00000PLJ
| |---/|||
| | ||\- What matrix to update: 0=modelview 1=projection
| | ||
| | |\- Operation with current matrix: 0=multiply 1=replace
| | |
| | \- What to do with current matrix: 0=discard 1=push
| |
| \- Ignored
|
\- Matrix command: 0x01


The matrix pointed to by the matrix command is 64 bytes long. The matrix is composed of 16 32-bit signed fixed point scalars. All of the whole parts of the scalars are in the first half of the matrix data, and all of the fractional parts are in the second half. Within each half, the data is in the expected order.

There is also a command to pop matrices.

bd 00 00 00 00 00 00 GG
|/ |---------------/ |/
| | |
| | \- Flags: 0000000J
| | |-----/|
| | | |
| | | \- What matrix stack to pop: 0=modelview 1=projection
| | |
| | \- Ignored
| |
| \- Ignored
|
\- Pop Matrix command: 0xbd


Don't bother pushing/popping the projection matrix. Its stack is only 1 level. To enlarge peach's head, you would not need to change it anyway.

I also found out how the addresses work. The RSP has a lookup table of 16 base pointers into main memory. The first byte of a pointer in a command is used as an index into the table, and the last 24 bits of the pointer in the command are added to the base pointer from the table to obtain the location of the resource pointed to in the command.

There is a command to set the base pointers (among other things).
bc SS SS 06 BB BB BB BB
|/ |---/ |/ |---------/
| | | |
| | | \- Base pointer into RAM (ie the 32 bits of data)
| | |
| | \- Area of the RSP's RAM to place the data: 0x06=Segment table
| |
| \- Table index *4 (ie an offset into the segment memory area)
|
\- General command to load 32-bits of data into the RSP data memory: 0xbc


You probably will not see this command in the ROM, as I suspect that it is generated at runtime.
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: 6452/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 08-21-05 09:32 PM Link | Quote
Daaaaaaaamn! Where are you getting this?
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2016/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-21-05 09:57 PM Link | Quote
Probably a dissembler and a lot of OpenGL kno-how.

Originally posted by Cellar Dweller
It works like the OpenGL functions glPushMatrix, glLoadMatrix, glMultMatrix, and glMatrixMode rolled into one.


Yeah, seems like he just recognized those functions.
Keitaro

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

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

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

Since last post: 2 days
Last activity: 2 days
Posted on 08-22-05 06:52 AM Link | Quote
I just noticed you guys touching base on sound. Been there and back again, I have the sample format completely figured out thanks to the help of a few tools I used to my advantage...I can extract, and more or less insert (I'm pretty sure ) any instrument or other sample from the game (and actualy have ), along with a .h file containing loop and envelope data, as well as stuff such as the proper playback frequency. So yeah. Don't waste too much time with sound--I got it covered
Cellar Dweller

Flurry
!!!
Level: 27

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

Since: 03-15-04
From: Arkansas

Since last post: 16 days
Last activity: 34 min.
Posted on 08-22-05 02:27 PM Link | Quote
As I stated earlier in the thread, I have been refering to other files, and they fall into the same catagory as warez and ROMs. Some of the files are documents, which contain overall functional descriptions, and some are C header files, one which contans C preprocessor macros that create the commands by shifting the parameters onto the right places. I use the docs for general information, and I trace through the macros to get the exact bit layout. Finally, I write a description of the command that is intended for a different group.

Many of the commands at the API level are actually wrappers for other commands at the binary level.

I obtained the information from a site run by a USF ripper shortly after this thread was started. After VL-Tone posted his information, I had correctly figured that the docs that I had recently obtaned would provide more information on the format.

Also, the N64 doesn't use OpenGL for an API, but an API that is tied to the hardware.

Now, I really should work on a function scanner.....
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2020/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-22-05 02:55 PM Link | Quote
Originally posted by Cellar Dweller

Also, the N64 doesn't use OpenGL for an API, but an API that is tied to the hardware.
*Kawa-oneechan has a flashback to way earlier in the thread.

It was -based- on OpenGL. We went over that before.

Edit: Looks more like OpenGL than, say, DX.


(edited by Kawa-oneechan on 08-22-05 05:56 AM)
RT-55J

Ninji
Level: 23

Posts: 192/240
EXP: 65287
For next: 2436

Since: 12-29-04

Since last post: 9 hours
Last activity: 9 hours
Posted on 08-22-05 10:15 PM Link | Quote
Originally posted by Kawa-oneechan
Correct on the first, and prove it on the second.

By that I mean prove it for the rest of us, I believe it already.

Clicky!
Kyoufu Kawa
I'm not bad. I'm just drawn that way.
Level: 70

Posts: 2029/2481
EXP: 3008456
For next: 7355

Since: 03-19-04
From: Catgirl Central

Since last post: 14 hours
Last activity: 13 hours
Posted on 08-22-05 10:18 PM Link | Quote
Originally posted by RT-55J

Clicky!
Holy mother of wankage, that's cool to hear.
Sukasa

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

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

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

Since last post: 6 days
Last activity: 1 day
Posted on 08-23-05 04:14 AM Link | Quote
Interesting. Which one is do you guys think is closest to Charles Martinet's original voice? (Well, either him or Leslie Swan from what I remember from the credits)
Keitaro

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

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

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

Since last post: 2 days
Last activity: 2 days
Posted on 08-23-05 07:40 AM Link | Quote
Um. None of them. Because he changes his voice to do the rolls. Artificialy changing the pitch won't do a thing for it
Sukasa

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

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

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

Since last post: 6 days
Last activity: 1 day
Posted on 08-23-05 10:14 PM Link | Quote
umm... I wasn't clear enough. My bad. I meant the original recording, before it's playback speed/pitch was altered.
VL-Tone

Red Cheep-cheep
Level: 23

Posts: 159/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 08-24-05 03:33 AM Link | Quote
Cellar Dweller, I've warned people about the head patch only working outside the castle, this is because it's the only place Peach's geometry is loaded. Maybe I should have been more clear that it could crash the game, though I didn't know Windows could lock because of an emu.

Anyway great info you got there, as usual I guess I should try to find these docs, but I try to keep my reverse-engineer "clean". I don't know... everything I found until now has been without the docs (earlier info you posted confirmed things I already figured out), and some of these routines are probably patented, so it doesn't matter that I own the SM64 ROM, they could sue my butt off if I publish an editor based on trade-secrets. I think they tolerate what we are doing, but we shouldn't push our luck too far...

But as for the commands you described, do you have any concrete example of them in the game?

As for the "Area of the RSP's RAM to place the data: 0x06=Segment table" I think it's what I referred (incorrectly) as RAM banks. For example, Mario's geometry is loaded in "bank" 04.

RT-55J thanks for the sample Was it part of a mailbag entry on TMK? If so can you link it?


(edited by VL-Tone on 08-23-05 06:34 PM)
stag019

Snifit
Level: 23

Posts: 280/299
EXP: 62259
For next: 5464

Since: 06-10-05
From: C:\Documents and Settings\stag019\Desktop

Since last post: 9 days
Last activity: 7 hours
Posted on 08-24-05 05:22 AM Link | Quote
Well, I'm back from vacation, and I have to say, you're finally getting somewhere again! Maybe I should just leave this topic alone, and it'll get even further.


(edited by stag019 on 09-03-05 07:55 PM)
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.031 seconds.