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


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-13-08 06:41:44 PM, in Half-Precision Floats to Hexadecimal ? Link
Thanks for your input. I don't have a background in computer science/programming, and while understanding conversions between binary/decimal/hex isn't very difficult, floats are still a mystery to me. For now, my initial aim is to understand how to represent simple integers in this 16-bit format. This is used for texture coordinates in Mario 64.

I probably will need to read much more about this, but let's see if a understood a bit of this. I want to find the decimal value of the 50DE (hex) 16-bit float. That in binary is "101000011011110" according to my Windows calculator .

This is the format used ("s10e5" ):

Sign bit: 1
Exponent width: 5
Significand precision: 10 (11 implicit)

1|01000|011011110

Did I do something wrong, why there is one missing bit? How do I proceed now to get my decimal value?
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-13-08 09:17:56 PM, in Behaviour Scripts (last edited by messiaen at 05-13-08 08:56 PM) Link
Uhh, getting back to behaviors, the index "43" is very intriguing (just to remember, 0x88 + index[hex] x 4 = RAM offset).

It is surely related to drawing/disappear distance, and when set on maximum value (I'm guessing it is a float), objects will be viewed all the time. This is one example:

0E 43 7B FF

However, I absolutely don't get why it has effects also on collision. For my custom platforms behavior, which are basically a call to 803839CC and a 0x2A collision pointer, if I don't set this the Goomba's won't be able to walk on it. Also, for my Mushroom Platform, the collision actually doesn't work without it. And what is more surprising is that it won't give the drawing/disappear effect UNLESS I remove a 0x0D command whose use is yet unkown from the Mushroom Platform Geo Layout. Now that is a very random discovery, but it shows how much related things are.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-14-08 01:23:55 PM, in Behaviour Scripts (last edited by messiaen at 05-14-08 02:39 PM) Link
Thanks James, your point is absolutely relevant to this issue. So, I have a lot of tests to do concerning the interaction between geo layouts/distance settings/0x1E behavior command/collision.

For sure, I know now that if I want the solidity to work with ground moving enemies I have to make sure that the object is drawn all the time, using maximum (4BFF float) distance settings.

I'll try to find another emulator/plugin for RAM viewing which works with the extended ROM. Something I want to check is ROM Banks loaded with the 0x17 "load uncompressed data" command. If the ID of the ROM Bank determines a fixed place to begin storing data in the RAM, then loading custom assembly could be easy (especially in Flatworld), and executing it would be done by a behavior.


--

One small discovery: it seems that the "10 05 00 00" variable needs to be set for the 0x23 collision sphere to work. Remove that value from Mario and you won't be affected by enemies, won't grab coins, etc. Most objects which rely on this kind of collision use this.

Also, the behavior bank and probably other shared banks are just loaded once from the ROM. When you enter a level, the bank is read from the RAM, so if you change it in the Castle Grounds using NEMU or Gameshark, the changes will take effect when you die/change level. So, it is way easier to test behaviors parameters using a RAM viewer instead of ROM hacking.

In my Super Mario (U).z64 non-extended ROM, the behavior bank is loaded at 00EB180 in RAM.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-16-08 09:58:26 AM, in Half-Precision Floats to Hexadecimal ? (last edited by messiaen at 05-16-08 09:03 AM) Link
Thanks for the help, I am beggining to understand this.

I am trying to calculate a few numbers but I still have some questions. I picked a few hex values from Wikipedia and tried to reach the decimal result. This one is quite easy:

Hex: 3C00
Binary: 0 | 01111 | 0000000000
Sign = 0 (Positive)
Exponent: 01111 = 15 ; (15 - 15) bias = 0 ; 2^0 = 1
Significand = 0 + 1 (implicit bit) = 1.

Final decimal result: 1 (exp) * 1 (significand) = 1

This one should come at 65504 (max value), but I'm not sure what is going wrong, because after (Exp) * (Sig) I don't get 65504.

Hex: 7BFF
0 | 11110 | 1111111111
Sign = 0 (Positive)
Exponent: (14 - 15) = 2 ^ (-1) = 0.2
Significand: 1023 / 1024 = 0.9990234375 + 1 (is this the "implicit bit"?) = 1.9990234375

messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-16-08 11:33:46 AM, in Brainstorming ideas for Mushroom Battlefield (last edited by messiaen at 05-22-08 06:42 PM) Link
I think falling for stars would be too frustating and random. But your idea reminded me that I could use the flying cap in the level, especially combined with more challenges. I like the idea of an act in which you have to do a bunch of small tasks in order to get to the star. Flying around for something could be a nice climax for that.

---

Edit: I managed to get a "Flatworld" version of Lethal Lava Land, so I have a template from which to start yet another level. It is not actually Flatworld, but Lethal Lava Land without terrain polygons / level collision, so you have just the lava and objects from that level to place around. It will be easy to insert my custom geometry (blocks) in the level, because I won't use the second area (inside the volcano), so there is plenty of free space.

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

You can go under the lava because there are still some collision holes, but these will be okay when I move up the main big collision plane so that it gets just a little below the "Y" level of the lava polygons.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-16-08 12:13:00 PM, in Half-Precision Floats to Hexadecimal ? Link
Ouch, I think I missed a bit when converting the exponent from bin -> dec.

Now I gotta figure what is the easiest way to start from decimal and go to this especific float format hex. For instance, what about if I want to find the hex values for integers such as 2, 3, 4 ? This is what the calculator in my first post does, but only for 32 and 64-bit floats.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-16-08 12:57:00 PM, in Adobe Director 11 released March 25th. (last edited by messiaen at 06-09-08 03:47 PM) Link
If you can't find a solution for the next version, maybe you could make TT64 decode only the polygons for the level displayed. That would be just a few extra seconds of loading time, which is not annoying at all.

Edit: Probably this is not something simple to do, as TT64 seems to compile all the polygon information as a "master index".
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-17-08 02:48:13 PM, in ToadsTool Suggestions (last edited by messiaen at 05-17-08 12:26 PM) Link
These are (probably) RAM attributes which can't be changed with Toad's Tool ROM editing features. Read the Editing RAM objects thread and you will probably find there the information you need to create a Gameshark code that does that.

Now if you mean actually editing the polygons of Mario, then read the Mario Geo Layout Deconstruction thread and, if you still have motivation to do the manual hex editing, good luck!

If you are new here, the FAQ should not be missed.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-17-08 04:08:48 PM, in Changing SM64 text fonts (last edited by messiaen at 05-17-08 01:10 PM) Link
Hi, I was corrupting some data in the ROM and I found what seems to be the "fonts" used for displaying text in the game.

The data is at 808A56-80A156 (in the middle of the first decompressed MI00 file of the extended ROM).

I never did any kind of graphics hacking so I don't know the format of this, but there are very few values so this should be simple to figure.

So, if anyone feels like working on this, go ahead and post your discoveries.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-17-08 05:53:14 PM, in Half-Precision Floats to Hexadecimal ? (last edited by messiaen at 05-17-08 03:27 PM) Link
Thank you SO much, I tested it and indeed this is the format used. Anyway, there is also data stored in floats, so knowledge of these should be useful too.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-18-08 12:57:53 AM, in Behaviour Scripts Link
Great! So you changed the ASM code of the Goomba 0x0C calls? If so, what is the address of this particular JAL call? This may open an interesting possibility. If you NOP that from the code, and add instead a behavior variable that writes to offset 0x198
(this would be index 44, as 198 - 88 / 4 = 44), this could make it more flexible, so you could set the number of coins by a behaviour code. This is where the 0x04 behavior jump comes very handy, because you can make a very small behaviour which sets the variable and them jumps to the regular code. This is used in the Whomp King behavior.

Also, did you tried altering the behaviour bank loaded on ROM at 0xEB180 in RAM? This is interesting because it is possible to translate any behaviour ROM hack into a Gameshark code. This affects all levels/objects, not just the specific RAM object you are altering.

Besides, you may want this use trick for interesting videos: you can make most moving objects go at double speed if you run the 0x0C call inside the 0x08 loop two times. It is logical, since the instructions are doubled.

I really think you should start a ASM thread, it would be very instuctive if you could share a bit of what you already know.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-18-08 03:24:34 AM, in Behaviour Scripts Link
I don't know the differences between PAL and NTSC version, but even though the adresses are different, the code is the same, no? To begin with, I think that you could even use the non-extended ROM, because of its compatibilty with Nemu. Importing the code later to the extended version shouldn't be a problem.

Anyway, now that you talked about "initialization":

(From Goomba behavior)
21E558/004758 0C 00 00 00 80 2F F4 08
21E560/004760 08 00 00 00
21E564/004764 0C 00 00 00 80 2F F9 6C
21E56C/00476C 09 00 00 00

The 802FF408 must be the one you talk about, right? I guess this is run once, when you load the level, while 802FF96C is the one that controls movements/collision detection.

On the coin subject, take a look at the Small Whomp behavior:

21BDF0/001FF0 10 44 00 05

Since 0x198 (number of coins) = index 44, that should be it, however I changed the last byte to another value but still got 5 coins when I killed it. Bowser has "10 44 00 32". There are a lot of enemies who use this index, so if anyone could experiment that, it could be helpful.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-18-08 02:23:52 PM, in How old is too old for forums (last edited by messiaen at 05-18-08 11:35 AM) Link
From Google Answers:

“The average game player is 30 years old and has been playing games for 9.5 years”
“The average game buyer is 37 years old. In 2005, 95 percent of
computer game buyers and 84 percent of console game buyers were over
the age of 18.”

I was born in the eighties and played videogames from Atari to SNES then pretty much stopped following it except for recently playing emulators and ROM Hacking. Since you didn't lived this era of gaming (ops, now I feel old) it may surprise you that the average gamer may be older than you think, but it does make sense to me.

Welcome to the forum. It is always a good idea to spend some days, weeks, or whatetever time you need to feel what these forums are about and what kind of behaviors are not tolerated. I say this especially because of the ROM Hacking forums, which are essentialy technical content, and if you don't work on that you are missing the best of it.

Also, it seems that GuyPerfect is the youngest member of the forum. Now that is what I call a mature 8 year old! He has actualy cracked undocumented compression formats and even wrote editors for N64 games!
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-18-08 06:05:18 PM, in How old is too old for forums Link
Some people are actually forced to stay in the basment.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-18-08 11:31:41 PM, in Behaviour Scripts (last edited by messiaen at 05-18-08 08:54 PM) Link
Every behavior scripts start with "00 xx 00 00", xx values being 04, 05, 06, 08, 09, 0A, OB and 0C. This value affects some global properties of the object.

So, the behavior script at 0x09A4 is responsible fo spawning a coin? Makes sense, as it is very near the coin ones. I'll have to test this one later.

Also, the "Graphic ID" is the Model ID defined by the 0x22 Level Command Script. You can get a list of 0x22 commands and the Models ID in Toad's Tool 64 interface. Sometimes the same object (a Goomba for instance) can have a different ID in different levels.

This Model ID points to a "Geo Layout", a script that basically sets a few variables and which in turn points to the polygons (display lists).

Your Goomba into Bob-Omb video was really amazing. You can even set a infinite loop of objects (Goomba - Bob-omb - something - Goomba). Wait no further and create that ASM thread!
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-19-08 03:06:42 AM, in ASM hacking (last edited by messiaen at 05-19-08 11:03 AM) Link
Some useful reference:

N64 opcodes by Anarko
Dextrose.com - Assemblers/Disassembler and lots of tools for N64.
MIPS Registers
Programmed Instroduction to MIPS Assembly Language

Concerning emulators, Nemu has disassembler/RAM viewer features, so this is a must get. If you want to test the disassembler, use the RAM viewer and go to one of the adresses pointed by the 0x0C behavior command. For instance:

ROM Addr: 0021B098 Hex Behav: 13001298
Description: Multiple Coins
21B098/001298 00 08 00 00
21B09C/00129C 11 01 00 41
21B0A0/0012A0 35 00 00 00
21B0A4/0012A4 08 00 00 00
21B0A8/0012A8 0C 00 00 00 80 2A FC E4
21B0B0/0012B0 09 00 00 00

At RAM address 802AFCE4, the data will start with 27BD (ADDIU SP, SP, XXXX). Look for the next 27BD and you have the end of this code segment (is this right James?), usually precedeed by a NOP, a series of 0 bytes.

Edit: Renegade 64 seems a nice tool. It can attach to a running emulator view memory, assemble/disassemble plus other functions.
Also, this build of Project64 has debugging features.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-20-08 01:33:41 AM, in ASM hacking (last edited by messiaen at 05-20-08 09:03 AM) Link
Could you give some help concerning breakpoints? I couldn't figure out effective ways to use them in Nemu (remember I'm a absolute begginer in ASM!). I found what seems to be a very generic "Break on Opcode" function on the interface, but how can I set it to break on a specific instruction (example, one of the JALs after a conditional) ?

What I'm trying to do is supress traits of behaviors from some of the 0x0C calls. A few days ago I tried noping a few jump instructions and found the instruction (that is, the jump) responsible for displaying the Bob-Omb dialogue after he is thrown from the cliff and gets respawned at the top of the mountain, however probably there is a quicker way to find that using breakpoints.

Also, some commented code would be very nice .
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-20-08 02:08:59 PM, in Brainstorming ideas for Mushroom Battlefield Link
While I'm not against the idea of a team hack, it would be frustrating to do the hard work and leave the fun part - creating the level in TT64 after everything is set and working - to someone else.

I'm beggining to design the main level terrain for the mushroom level, because I'm getting tired of that "Flatworld" look . Using 0x24 objects is too limited, so this will be pure polygon editing. It will be something simple to add more interest.

Also, here is a screenshot of one Koopa Shell experiment:




Just a simple-as-it-can-get track that I did to test how the shell behaves on a few collision terrains. The timer is just for entertainment purposes . It is triggered by a specific collision (#33) which is used in the Peach Slide. There is another one to stop it (#34), however it will behave exactly like the Peach Slide, including spawning a star at the same X,Y,Z position of that level.
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-20-08 04:16:48 PM, in Behaviour Scripts Link
One old post from Cellar Dweller concerning behavior commands 0x08/0x09:

"I discovered/verified a few things about the behavior scripts. First, the commands between the 0x08 and 0x09 commands get execuited repeatedly during gameplay. The 0x08 command puts the current script position on a stack and the 0x09 command jumps back to the command after the 0x08 command without popping the stack. (Actually, the 0x09 command pops the address off the stack, but then pushes it right back on.) The 0x09 command also halts the interpeter until later, probably the next frame.

The 0x0c command just calls a function.

Address in the ranges of 0x802461dc - 0x80328960 and 0x8037893c - 0x80384678 are functions. There are almost certainly some more functions outside these ranges as these are the bounds of the two main blocks of them recorded in my notes.

I canged the function pointer in the last 0x0c command in the "Collectable coin" behavior script to a stub function. The result was some coins not spinning and not being collectable. The stub function I used was 0x8028b704 which is actually the address of the return instruction of the preceding function in memory."
messiaen
Catgirl
Level: 68


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

Since: 11-20-07


Since last post: 8.1 years
Last activity: 7.2 years

Posted on 05-20-08 09:27:02 PM, in ASM hacking Link
Thanks James, that was very helpful! I didn't known that I had to right-click in order to enable the watch on a specific memory .

I looked at the RAM Editing thread and things are getting clearer regarding the "RAM objects". Your RAM map for them will certainly be very useful.

I'll spend a few days playing with breakpoints and trying to understand some of the opcodes.
Pages: 1 2 3 4 5 6 7 8 9 10 ... 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.

28 database queries, 48 query cache hits.
Query execution time: 0.066510 seconds
Script execution time: 0.027845 seconds
Total render time: 0.094355 seconds