Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
Views: 88,489,612
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search 04-26-24 08:48 PM
Guest: Register | Login

Main - Posts by segwayspeedracer1


segwayspeedracer1
Posted on 11-08-17 12:45 AM, in Super Mario Kart: Graphic Assignments / Mirroring (rev. 14 of 11-13-17 04:05 AM) Link | Quote | ID: 165970

Newcomer
Level: 5

Posts: 1/4
EXP: 388
Next: 141

Since: 11-08-17

Last post: 2351 days
Last view: 2335 days
Anyone have any interest in discovering how to remove / alter the forced mirroring of the front and back driver sprites?

I'm trying to change this sprite:


Into this sprite:




HNGNGHGH I"M SO CLOSE, but after three straight days on this, I've got a busy week and can't be on this for a few days. My notes, some newly discovered as far as I'm aware, are below:



INFORMATION AND NOTES:

xDCB9 to xDCF4: Specific tile instructions (such as clearing unused tiles for far-away drivers and mirroring tiles)

I found that xDCD6 to xDCDC the following code

00 20 00 60 20 20 20 60. These specifically mess with the tiles of forward and backward facing drivers at 100% view. I'm almost certain 60 is directly related to mirroring, but the best I can find is how to change the mirroring or make the tile pull from a new graphic (5 or 6 tiles away.. hard to fine tune). I can't find a way to disable the mirroring yet.

------------

x99b7: CPU Driver Engine Sounds.

78 00 78 00 79 00 7B 00 79 00 7A 00 7A 00 7B 00

79 is bowser/dk noise, 7a is toad/koopa, 75 is mario/luigi noise, 7b is a yoshi/peach noise. This doesn't change the player's sound, just the sound of cpu player when driving by them

--------------------

x9c31 to x9c3c Terrain sounds.

78 00 78 00 79 00 7B 00 79 00 7A 00 7A 00 7B 00

Change the sounds that drivers make when driving through the terrain. I made the sand and ice terrain sound like grass! Good news for players who want for Mario Circuit to have grass instead of sand. I wasn't trying to find this but I'm put a note here.

---------------------

x9090 to x91F8: Graphic assignment per driver direction and distance (does not include luigi)

00 44 02 84 04 84 06 84 08 84 0A 84 0C 84 0E 84
0E 84 10 84 10 84 12 84 12 84 14 84 14 84 16 44
18 44 1A 84 1C 84 1E 84 20 84 22 84 24 84 26 84
26 84 28 84 28 84 2A 84 2A 84 2C 84 2C 84 2E 44
30 44 32 84 34 84 36 84 38 84 3A 84 3C 84 3E 84
3E 84 40 84 40 84 42 84 42 84 44 84 44 84 46 44
48 43 48 43 4A 63 4A 63 4C 63 4C 63 4E 63 4E 63
50 63 50 63 52 63 52 63 54 63 54 63 56 43 56 43
58 43 58 43 5A 63 5A 63 5C 63 5C 63 5E 63 5E 63
60 63 60 63 62 63 62 63 64 63 64 63 66 43 66 43
68 42 68 42 68 42 68 42 6A 42 6A 42 6A 42 6A 42
6C 42 6C 42 6C 42 6C 42 6E 42 6E 42 6E 42 6E 42
70 42 70 42 70 42 70 42 72 42 72 42 72 42 72 42
74 42 74 42 74 42 74 42 76 42 76 42 76 42 76 42
78 42 78 42 78 42 78 42 7A 42 7A 42 7A 42 7A 42
7C 42 7C 42 7C 42 7C 42 7E 42 7E 42 7E 42 7E 42
80 41 80 41 80 41 80 41 82 41 82 41 82 41 82 41
82 41 82 41 82 41 82 41 84 41 84 41 84 41 84 41
86 21 86 21 86 21 86 21 88 21 88 21 88 21 88 21
88 21 88 21 88 21 88 21 86 21 86 21 86 21 86 21
8A 21 8A 21 8A 21 8A 21 8C 21 8C 21 8C 21 8C 21
8C 21 8C 21 8C 21 8C 21 8A 21 8A 21 8A 21 8A 21
8E 84 90 82 92 82 94 84 96

SPECIAL NOTES:

DEFINITIONS:

Offset determines the angle, then distance of the driver. The very first offset at x9090 is the closest driver sprite facing forward, then spins clockwise for a full 180, then ends facing forward. Once a full 180 rotation is complete, then the next furthest distance is loaded facing forward.



FIRST BYTE: Graphic. Graphic is literally the 4x4 graphic tile area that the game assigns to the angle of driver. The assignments aren't not as direct as I had hoped in the illustration above. For example, it appears graphic 00 is Mario facing away from you (90*), but immediately next on the sprite sheet is graphic 16, which is Mario facing towards you, the player (270*). From there, it goes in order of 02, 04, 06, 08, as the graphics of Mario rotate clockwise.

It's important to note that the same graphics are called for different angles (usually for drivers facing towards 250*-ish (slightly angled towards you, the player)). It looks like they did this because drivers facing towards the screen are much less likely to occur than towards the road.

SECOND BYTE: Size of Graphic. Size of Graphic lets the game know how big the graphic should be. I'm still working on this section... it's not as cleared cut as I would hope.

For a byte(?), say 84, it appears that the first number is the length of x, where 1x = 1/2 a tile. A tile is 8x8 pixels. So, 8x = 4 tiles, or the normal size of a close up driver.

Again, for byte 84, the second number is the length of y, where 1y = 1 tile. So, of 84, 4y = 4 tiles, or the normal height of a close up driver.

84 should be your standard 4x4 tile driver close up to the screen.

44 should be a call for half a graphic (where the sprite is still the same height, but half the width.

43 should call for half the width, and 3 tiles high of height (which does occur near the end of the sheet.)

82 should call for the full length, but only 2 tiles high, which if you look at the bottom of the mario sprite sheet, does occur for the graphics of mario looking down and behind him.

There's also 42, 41, 63, and 21, which I haven't had time to really verify but I'm feeling confident so far.

TABLE:

(first byte) (second byte)
offset | angle | graphic | size of graphic
--------------------------------------------
x9090 | 90* | 00 | 44
x9092 | 78.75* | 02 | 84
x9094 | 67.5* | 04 | 84
x9096 | 56.25* | 06 | 84
x9098 | 45* | 08 | 84

I will try and finish this table later...

-----------------------------------------------------------------

x91FA to x9291: Commands to offset (or shift) the driver graphics

When I say shifting, I'm not referring to the actual viewable graphics in YY CHR being moved, but what the game assigns as the graphics for that sprite. The order of the bytes in the Hex Editor still determine the angle of the player, and at what distance.

SPECIAL NOTES:

By increasing in increments of two values, the first letter shifts to the left horizontally by one tile. so 20 00, 40 00, 60 00, etc. (1,3,5,7,9,b,d,f pull up weird results.. where two sprites are overlayed on top of each other... this corrupts the palette data)

By increasing in increments of two values, last letter shifts graphics down by one tile (increments of 1 tend to offset both vertically and horizontally, but with no corrupted palette data.

Increasing the third letter by one value shifts entire graphic down by 2 whole sprites.

Second letter appears to do some wacky corruption, creating layers of different graphics. Such as, the first row belongs to one graphic, the second row belongs to an entirely different graphic, and then each row alternates back to the same graphic. This is always 0 in the default code.

---------------------------------------------------------------

x9292 to x92F1, Graphic Assignments for Luigi's head

it looks like its the same information as the x9090 area, but this deals exclusively with Luigi's head.. The large amount of FF's appear to be there because there's no body sprite for luigi, and there's some residual code expecting for their to be luigi's body space?

-------------------------------------------------------

x93F2 to x946D: Luigi head Graphic Offsets

Appears to be same as the x91FA but with Luigi head graphic offsets. I can't reliably figure out the meaning of each nybble yet.

------------------------------------------------------

xCE10

I haven't documented this well enough, but it's bounciness on the road. Certain values make the character bounce a lot, others have them slightly drifting above the road

------------------------------------------------------

xDA20

flips the size of the graphics. PC drivers are huge far away, tiny up close.

--------------------------------------------------------

I gotta double check my notes but there was an area with a lot of 99's that allowed Donkey Kong to use a star power up instead of a banana.. but it kept crashing the game so I'm not sure if it was PC item assignments or just a glitch

---------------


I originally used this post to ask a question about getting luigi a new body sprite. I realize that SMK basically has 8 heads and 7 bodies for its players. So, you can assign a player to be the "head only" character, and you can decide who's body the player gets to share. By default, Luigi's head is placed on Mario's body.

segwayspeedracer1
Posted on 11-13-17 11:54 PM, in Epic Edit - Super Mario Kart track editor Link | Quote | ID: 165972

Newcomer
Level: 5

Posts: 2/4
EXP: 388
Next: 141

Since: 11-08-17

Last post: 2351 days
Last view: 2335 days
Hey man keep up the great work with your program!! Its awesome and the compression part is really useful.

Im working to figure out how driver tiles are built, especially mirroring. Found a good chunk of new info I dont think is in your epic edit website.

http://acmlm.kafuka.org/board/thread.php?id=8817

segwayspeedracer1
Posted on 11-17-17 03:39 AM, in Epic Edit - Super Mario Kart track editor Link | Quote | ID: 165974

Newcomer
Level: 5

Posts: 3/4
EXP: 388
Next: 141

Since: 11-08-17

Last post: 2351 days
Last view: 2335 days
Not going to lie, I don't understand Github.. Like, would a "pull request", once approved, make changes to the SMK rom information? Or would it make changes to the Epic Edit software?

If its the former, I don't mind doing that. Sounds useful... I've just been over-modifying my forum posts. I don't know enough about programming to write anything for Epic Edit or I would!


segwayspeedracer1
Posted on 11-18-17 02:42 AM, in Epic Edit - Super Mario Kart track editor Link | Quote | ID: 165976

Newcomer
Level: 5

Posts: 4/4
EXP: 388
Next: 141

Since: 11-08-17

Last post: 2351 days
Last view: 2335 days
Ok no problem. Thanks for explaining the process. If I can uses BSNES on Mario Kart I can do this xD

Main - Posts by segwayspeedracer1

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.224 seconds. (335KB of memory used)
MySQL - queries: 47, rows: 63/63, time: 0.220 seconds.