(05-10-2016, 01:57 AM)Ashley Wrote: Has anyone done anything with the race result text in any capacity? I'm looking to edit DK's name, but thus far, haven't managed to find anything.
I don't think any tools support editing the names quite yet, but MK64 Pitstop may support it in the future. Fortunately, these names are just stored as ASCII in the ROM starting at offset 0xF09CC ("D.K." is at 0xF09EC) and can be replaced with a hex editor or an assembler. You'll need to update the ROM checksums since this data is within the first 1MB.
(05-10-2016, 01:57 AM)Ashley Wrote:
Has anyone done anything with the race result text in any capacity? I'm looking to edit DK's name, but thus far, haven't managed to find anything.
I don't think any tools support editing the names quite yet, but MK64 Pitstop may support it in the future. Fortunately, these names are just stored as ASCII in the ROM starting at offset 0xF09CC ("D.K." is at 0xF09EC) and can be replaced with a hex editor or an assembler. You'll need to update the ROM checksums since this data is within the first 1MB.
As an example, I replaced "D.K." with "SHYGOO":
Thanks a billion, I didn't think I'd get such a prompt informative reply.
(05-10-2016, 02:24 AM)queueRAM Wrote: I don't think any tools support editing the names quite yet, but MK64 Pitstop may support it in the future.
Yep, can confirm. I've already written a text editor that will compress the existing strings in the text bank so you can add more characters than exist per entry. This means that you can have character names longer than 7 characters.
Still trying to scrounge up the time to finish the next version of the program (which will have the text editing), but I think it'll be by next sunday.
I have been spending more time digging through the kart texture tables. Turns out there are some higher order tables that provide more structure to them. I'm attaching an updated sm64.karts.asm file which clearly shows the relationship in assembly, but I'm also going to briefly describe it here. There are 4 top-level tables:
800DDE34/DEA34: table of wheel palette pointers
This table has two rows, each row containing the pointers to tables for each of 8 karts (16 pointers total).
The table these pointers point to each contain 9 segmented addresses (one for each angle) to wheel palettes. The first set for each kart is unique and points to a block 0x2A00 bytes long (84 wheel palettes 0x80 bytes each). The second set are the wheel palette for the spin textures and some are shared so there are only 5 unique blocks, each 0x2800 bytes (80 wheel palettes 0x80 bytes each).
800E1EE0/E2AE0: table of kart pointer tables
There are two rows in the table, each row containing a pointer to another table for each of 8 karts (16 pointers total). Each table that is pointed to contains 9 pointers to kart texture tables. The kart texture tables for the first row of the original table contain 35 segmented addresses of the CI encoded kart textures. The kart texture tables for the second row of the original contain 20 segmented addresses of the CI encoded kart textures.
800E2320/E2F20: table of crashing kart tables
This table takes the same form as the previous second level table. It contains 1 table pointer for each kart. Each table that is pointed to contains 32 segmented addresses of the CI encoded kart textures for when the kart crashes.
800E2340/E2F40: kart palette table
Simple table containing the segmented addresses for the palettes of each of the 8 karts. Each palette is 0x180 bytes in length. For reference, i've decoded the segmented addresses in the table: Idx Kart Segmented ROM
------------------------------
00 Mario 0F12D430 2728A0
01 Luigi 0F09ABFC 1E006C
02 Yoshi 0F1C4958 309DC8
03 Toad 0F386858 4CBCC8
04 D.K. 0F438874 57DCE4
05 Wario 0F2F5DEC 43B25C
06 Peach 0F258AC8 39DF38
07 Bowser 0F4F8C88 63E0F8
Remaining Unknown data in Segment 0F
I could not yet decode the data at DEA74-DEABF. Here is a listing with my notes: // 800DDE74/DEA74 - 800DDEBF/DEABF
800DDE74/DEA74: 00000060 00000080 000000C0 00000100
800DDE84/DEA84: 00000120 00000180 00000200 00000220
// U32s read in function 80026A48 and added to A0->0x240
800DDE94/DEA94: 00000240 00000000 41100000 40E00000
800DDEA4/DEAA4: 40A00000 00000000 00000000
// 0x41100000 = 9.0, 0x40E00000 = 7.0, 0x40A00000 = 5.0
800DDEB0/DEAB0: 06C0 06E0 06E0 0680 07C0 0700 0680 0910
// U16s, passed to osInvalDCache and osPiStartDma in functions 80027040 and 80027560
(29-11-2016, 08:02 AM)Nick Nelson Wrote: I thought I would post this here. I was able to use the notes from queueRAM and shygoo to help me with this project, so I just wanted to thank them!
Thank you for posting this - it is absolutely beautiful! I really appreciate that you posted the source as well - very nice GUI and HUD makes every well polished. I think I'm going to spend some time studying your NEAT implementation and the neural network paper you cited. Was there anything that you learned about MK64 objects structures or level data along the way that would be useful to share here as well?
Mario Kart 64 Hacking General Discussion«1 ...
1314151617»