Mario vs. Donkey Kong 2: March of the Minis:Notes

From Data Crystal
Revision as of 15:00, 14 February 2021 by Hiccup (talk | contribs)
Jump to navigation Jump to search

Hiccup's Notes

Level 1-1

note for self: bit 0 is the rightmost bit.

research was done with USA rev 0 ROM.

the order  object instances are in their respective array defines their location in the levels' "grid". object instances can be half-way between two "grid points" - they don't have to fit 1:1 with a "square".

background, titleset and music is per world, not per level.
the tile "patterns" used for each world are in the floorXX_patterns.bin files (where XX is the world id)

0x0-0x35 seems to be a header or array of dummy/control objects.

starting at 0x30, at the latest, is the array of interactive objects. the last instance in this array in 1-1 seems to be at 0x7B6.
instances are pairs of bytes. first byte is object type. second byte is parameter.
object types:
	01 = nothing?
	02 = nothing?
	03 = mini mario
			D = is mini mario direction
				0 = right
				1 = left
			T = mini mario type
				0 = normal
				1 = gold
	04 = crash
	05 = nothing?
	2B = nothing? (used)
	B1 = nothing?
	B2 = glitchy
		enemy that catches mini mario when touched? (glitchy graphics in setup i tried it)
	B3 = nothing?
	B4 = starman powerup
		unused, but haven't checked if its offscreen in some level or anything
		no obvious parameters
	B4 = bouncing fireball
		maybe the one spawned by fire mario. don't know if its placed in a level or not.
	B5 = yellow spring
	6A = piranha plant
		files: 	data\anims\pirahna_plant1_anim.bin
			30	0110000		up	?
			68	1101000		down	?
			60	1100000		right	?
			70	1110000		up	?
			38	0111000		up	fireball
			18	0011000		up	no fireball
			08	0001000		down	no fireball
	73 = bouncing candle [world 4]
	9F = blue spring
	FF = nothing?
0x7b0-0x7ff in 1-1 is part of the array of tile objects. the first instance in this arrway in 1-1 seems to be at 0x7B8.
its not clear how many bytes makes up an instance, but the first byte of each instance seems to describe the object type. 
object types:
	see /tile_objs/

roughly 0x16b8-0x1a77 in 1-1 seems to be the array of collision tiles.

some kind of object array
	2B = goal

VGamer78's Notes

Level 1-9

Alright so we will be look at 1-9 as a guide. As of right now, I barely know anything but I will tell
you what I have learned so far.

The first few lines of code I believe is the header data for the level. The only thing I understand from it
so far is the sprite data. In level 1-9 you should see some lines of code in a hex editor that look like this :

03 00 00 00 96 00 00 00 9C 00 00 00 A6 00 00 00 AE 00 00 00 B5 00 00 00 

All of this is the sprite data in the level. If the sprite you are trying to put in a level isn't one
of these values, the sprite will be invisible in the level. It seems like the sprite values count in 8
bytes. Meaning the six 0's after each value has to be that way. In case if you are wondering what each value

03 is for Mini Mario
96 is for the elevator platform itself (yes it's a sprite)
9C is for Shy Guy's
A6 is for Hammers
AE is for Toss/Circus Kong
B5 is for the Yellow Springboard

As of right now, I don't know how you can add more sprite data to a level since what I have tried has
crashed the game so far. But we will be looking at two things you can do if you want to edit the sprites.
After the header data, you will see a bunch of 00's. All of this is where the sprites are stored in levels.
This is usually very long and will go on until you see things such as 1B a few 00's and then 1B again and so on.
For how sprites work in the levels themselves all I know is that it goes by XX (sprite number itself) and the value
after that is it's facing position. 00 is facing right and 80 is facing left. When scrolling in the level data
for 1-9, the first sprite you should find is is A6 00, which is the hammer powerup. If we were to change
this to 9C 00, it will become a Shy Guy. We could also use this sprite as a guide if we wanted to add
another sprite next to it in a level. The 00 00's next to this can have sprites on them, they just are empty.
You will notice that all of the levels in the sprite section of the data has a lot of 00 00's since all levels
have more sprite positions without sprites instead of vice versa.

If we want to add a sprite from another level here, we are able to but there are things we need to consider.
The method we will have to do is replace a sprite slot with the one we want. If we want to replace the
Circus/Toss Kong with the Capture Kong in the level. What we would need to do is change the AE 00 00 00
to B2 00 00 00 in the sprite header data section. When we do this the Circus/Toss Kong's in the level will
now be invisible if we were to test the level. What we could do is either get rid of the Circus/Toss Kong's
in the level or replace them with Capture Kong's.

Sprite IDs

03 - Mini Mario
63 - Bob-omb (From the Shy Guy Minigame)
65 - Spark (no generator)
66 - Oil Drum (Jumps up and down) unused?
67 - Fireball
68 - Thwomp
69 - Crab
6A - Piranha Plant (Mouth Open)
6B - Piranha Plant's Fireball
6C - crashes game
6D - Blooper
6E - Bomb-fish (From Special Kit 3)
6F - Podoboo
73 - Candle
74 - Snapjaw
75 - Vertical Snapjaw
76 - Jumpstand?
96 - Elevator Platform
97 - Donut Block (Doesn't Fall?)
98 - Water/Lava Platform
9A - Bomb Block
9B - Bomb (From Gray Blocks)
9C - Shy Guy
9D - Small Brown Barrel??
9E - Brown Box
9F - Blue Springboard
A2 - Balance Board Platform
A4 - Vertical Facing Yellow Switch Door
A5 - Yellow Switch Button
A6 - Hammers
A7 - Vertical Facing Switch Door
A8 - Yellow Switch Button
A9 - Vertical Facing Yellow Switch Door (Again?)
AA - Yellow Switch Button (Again?)
AB - Yellow Switch Door
AC - Yellow Switch Door (Again..)
AD - Yellow Switch Door (Again?)
AE - Toss Kong
B2 - Capture Kong
B3 - Weird Brown Egg
B4 - Starman powerup (Gives you the blue shield ability) * unused
B5 - Yellow Springboard
B7 - Gray Shy Guy
B8 - Firebar
B9 - Crush Kong
BA - Cool Kong
BB - Lift Platform (From Floor 6 and 8)
BF - Kong Thwomp
C0 - Donut Block
C1 - Phantom Guy (Yellow)
C2 - Boo (unused)
C3 - Skeleton Guy
C4 - Blue Shy Guy (Shoots a Snifit Bullet sometimes)
C5 - Snifit
C9 - Starman (unused)
D0 - Blue Shield (From DK Basement Stage 2)

TheMarioVariable's Notes

Note: European ROM was used

Level Format

Hex Header

These are always found at the very beginning of every level file. These codes are needed to load primary files.

0x00 = Unknown (always set on 0A 00 00 00)
0x04 = Loads actor values (always set on 14 00 00 00)
0x08 = Loads tileset values
0x0C = Links to hex that loads level size values
0x10 = Links to hex that loads level special features (pipes, water, etc)

Example from Room G-1


Internal Data for Mario vs. Donkey Kong 2: March of the Minis

ROM MapRAM MapText TableNotesTutorials