match npc sprites

This commit is contained in:
Alex Bates 2020-11-11 13:52:04 +00:00
parent 87023d8be2
commit 87cc5ed999
10 changed files with 447 additions and 244 deletions

1
.gitignore vendored
View File

@ -23,3 +23,4 @@ settings.mk
/bin /bin
/img /img
/msg /msg
/sprite

View File

@ -18,4 +18,7 @@
"build": true, "build": true,
"docs/doxygen": true, "docs/doxygen": true,
}, },
"python.autoComplete.extraPaths": [
"./tools"
],
} }

View File

@ -35,7 +35,8 @@ LD_SCRIPT := $(TARGET).ld
LD_MAP := $(BUILD_DIR)/$(TARGET).map LD_MAP := $(BUILD_DIR)/$(TARGET).map
ASSETS_BIN := $(BUILD_DIR)/bin/assets/assets.bin ASSETS_BIN := $(BUILD_DIR)/bin/assets/assets.bin
MSG_BIN := $(BUILD_DIR)/msg.bin MSG_BIN := $(BUILD_DIR)/msg.bin
GENERATED_HEADERS := include/ld_addrs.h NPC_BIN := $(BUILD_DIR)/sprite/npc.bin
GENERATED_HEADERS := include/ld_addrs.h include/npc_animations.h
### Tools ### ### Tools ###
@ -99,14 +100,14 @@ submodules:
git submodule update --init --recursive git submodule update --init --recursive
split: split:
rm -rf bin img rm -rf bin msg img sprite
$(SPLAT) --modes bin Yay0 PaperMarioMapFS PaperMarioMessages img $(SPLAT) --modes ld bin Yay0 PaperMarioMapFS PaperMarioMessages img PaperMarioNpcSprites
split-%: split-%:
$(SPLAT) --modes $* --verbose $(SPLAT) --modes ld $* --verbose
split-all: split-all:
rm -rf bin img rm -rf bin msg img sprite
$(SPLAT) --modes all $(SPLAT) --modes all
test: $(ROM) test: $(ROM)
@ -198,11 +199,24 @@ $(MSG_BIN): $(MESSAGES)
@echo "building $@" @echo "building $@"
@$(PYTHON) tools/compile_messages.py $@ /dev/null $(MESSAGES) @$(PYTHON) tools/compile_messages.py $@ /dev/null $(MESSAGES)
$(MSG_BIN:.bin=.o): $(MSG_BIN) $(MSG_BIN:.bin=.o): $(MSG_BIN)
@mkdir -p $(shell dirname $@)
$(LD) -r -b binary -o $@ $< $(LD) -r -b binary -o $@ $<
$(LD_SCRIPT): $(SPLAT_YAML) # Sprites
$(foreach npc, $(NPC_SPRITES), $(eval sprite/npc/$(npc): $(shell find sprite/npc/$(npc) -type f))) # dependencies
NPC_DIRS := $(foreach npc, $(NPC_SPRITES), $(BUILD_DIR)/sprite/npc/$(npc))
$(BUILD_DIR)/sprite/npc/%: sprite/npc/%
@mkdir -p $(shell dirname $@) @mkdir -p $(shell dirname $@)
$(PYTHON) tools/compile_npc_sprite.py $@ $<
$(NPC_BIN): $(foreach dir, $(NPC_DIRS), $(dir).Yay0) tools/compile_npc_sprites.py
@mkdir -p $(shell dirname $@)
@echo "building $@"
@$(PYTHON) tools/compile_npc_sprites.py $@ $(foreach dir, $(NPC_DIRS), $(dir).Yay0)
$(NPC_BIN:.bin=.o): $(NPC_BIN)
$(LD) -r -b binary -o $@ $<
include/npc_animations.h: $(NPC_DIRS)
@echo "TODO"
$(LD_SCRIPT): $(SPLAT_YAML)
$(SPLAT) --modes ld $(SPLAT) --modes ld
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)

View File

@ -58,5 +58,7 @@ ASSETS := \
MESSAGES := $(shell find msg -type f -name "*.msg") MESSAGES := $(shell find msg -type f -name "*.msg")
NPC_SPRITES := world_goombario world_kooper world_bombette world_parakarry world_bow world_watt world_sushi world_lakilester battle_goombario battle_kooper battle_bombette battle_parakarry battle_bow battle_watt battle_sushi battle_lakilester kooper_without_shell world_eldstar world_mamar world_skolar world_muskular world_misstar world_klevar world_kalmar battle_eldstar battle_mamar battle_skolar battle_muskular battle_misstar battle_klevar battle_kalmar twink jr_troopa spiked_jr_troopa spiked_para_jr_troopa mage_jr_troopa para_jr_troopa goomba spiked_goomba paragoomba koopa_troopa para_troopa fuzzy bob_omb bullet_bill bill_blaster monty_mole cleft pokey battle_bandit buzzy_beetle swooper stone_chomp putrid_piranha piranha_plant sentinel world_clubba battle_clubba shy_guy groove_guy sky_guy pyro_guy spy_guy medi_guy fuzzipede jungle_guy heart_plant hurt_plant m_bush bubble kent_c_koopa dayzee lakitu spiny bzzap ruff_puff spike_top duplighost albino_dino blooper baby_blooper gulpit dry_bones thrown_bone bony_beetle magikoopa flying_magikoopa world_koopatrol koopatrol hammer_bros bush_basic bush_blocky bush_dry bush_leafy bush_matted world_kammy battle_kammy goomba_bros goomba_king spiky_goomnut dark_toad koopa_bros buzzar tutankoopa chain_chomp world_tubba battle_tubba tubbas_heart big_lantern_ghost shy_squad_guy marshal_guy stilt_guy stilt_guy_unfold shy_stack_guy shy_stack_unfold shy_stack_damage shy_stack_rock general_guy general_guy_bomb tank_guy lava_piranha_head petit_piranha lava_bud huff_n_puff tuff_puff monstar crystal_king world_bowser battle_bowser luigi toad three_sisters vanna_t toad_kid toad_guard harry_t toad_minister postmaster conductor_toad train_station_toad fishmael artist_toad koopa koopa_without_shell world_bob_omb whacka dryite mouser boo yoshi yoshi_kid raven bubulb penguin shiver_toad world_bandit goompapa goombaria goomama goompa goomma the_master chan lee merlon chet_rippo rowf minh_t russ_t tayce_t fice_t bartender chanterelle rip_cheato chuck_quizmo merluvlee merlar merlow star_kid kolorado_wife koopa_koot kolorado battle_kolorado archeologist nomadimouse world_merlee battle_merlee disguised_moustafa moustafa oaklie bootler yakkey gourmet_guy village_leader leaders_friend rafael_raven tolielup gate_flower petunia posie lily rosie sun lakilulu ninji mayor_penguin mayor_penguin_wife penguin_patrol herringway merle star_rod fire coin parade_peach parade_koopas parade_burnt_bowser parade_luigi parade_partners parade_yoshis parada_kolorados parade_chicks parade_ice_show parade_toads parade_batons parade_drums parade_flags parade_horns parade_tubba_balloon parade_wizards parade_mario parade_shy_guys parade_twink leaf
# Image settings # Image settings
$(BUILD_DIR)/img/battle/text_action_command_ratings.ia4.png: IMG_FLAGS = --flip-y $(BUILD_DIR)/img/battle/text_action_command_ratings.ia4.png: IMG_FLAGS = --flip-y

115
tools/compile_npc_sprite.py Executable file
View File

@ -0,0 +1,115 @@
#! /usr/bin/python3
from sys import argv, path
from pathlib import Path
import os
path.append(os.path.join(os.path.dirname(__file__), "n64splat"))
from n64splat.segtypes.PaperMarioNpcSprites import Sprite
from convert_image import pack_color, iter_in_groups
if __name__ == "__main__":
if len(argv) != 3:
print("usage: compile_npc_sprite.py [OUTBIN] [DIR]")
exit(1)
_, outfile, sprite_dir = argv
try:
sprite = Sprite.from_dir(Path(sprite_dir))
except AssertionError as e:
print("error:", e)
exit(1)
with open(outfile, "wb") as f:
f.seek(0x10) # leave space for header
# leave space for animation offset list
f.seek((len(sprite.animations) + 1) * 4, 1)
animation_offsets = []
# write animations
for i, components in enumerate(sprite.animations):
animation_offsets.append(f.tell())
# leave space for component offset list
f.seek((len(components) + 1) * 4, 1)
component_offsets = []
for comp in components:
offset = f.tell()
for command in comp.commands:
f.write(command.to_bytes(2, byteorder="big"))
f.seek(f.tell() % 4, 1)
component_offsets.append(f.tell())
f.write(offset.to_bytes(4, byteorder="big"))
f.write((len(comp.commands) * 2).to_bytes(2, byteorder="big"))
f.write(comp.x.to_bytes(2, byteorder="big"))
f.write(comp.y.to_bytes(2, byteorder="big"))
f.write(comp.z.to_bytes(2, byteorder="big"))
next_anim = f.tell()
# write component offset list
f.seek(animation_offsets[i])
component_offsets.append(-1)
for offset in component_offsets:
f.write(offset.to_bytes(4, byteorder="big", signed=True))
f.seek(next_anim)
# palettes start 8-byte aligned
if (f.tell() & 7) == 4:
f.seek(4, 1)
# write palettes
palette_offsets = []
for i, palette in enumerate(sprite.palettes):
palette_offsets.append(f.tell())
for rgba in palette:
if rgba[3] not in (0, 0xFF):
print("error: translucent pixels not allowed in palette {sprite.palette_names[i]}")
exit(1)
color = pack_color(*rgba)
f.write(color.to_bytes(2, byteorder="big"))
# write images/rasters
image_offsets = []
for image in sprite.images:
offset = f.tell()
for a, b in iter_in_groups(image.raster, 2):
byte = (a << 4) | b
f.write(byte.to_bytes(1, byteorder="big"))
image_offsets.append(f.tell())
f.write(offset.to_bytes(4, byteorder="big"))
f.write(bytes([image.width, image.height, image.palette_index, 0xFF]))
# write image offset list
image_offset_list_offset = f.tell()
image_offsets.append(-1)
for offset in image_offsets:
f.write(offset.to_bytes(4, byteorder="big", signed=True))
# write palette offset list
palette_offset_list_offset = f.tell()
palette_offsets.append(-1)
for offset in palette_offsets:
f.write(offset.to_bytes(4, byteorder="big", signed=True))
# write header
f.seek(0)
f.write(image_offset_list_offset.to_bytes(4, byteorder="big"))
f.write(palette_offset_list_offset.to_bytes(4, byteorder="big"))
f.write(sprite.max_components.to_bytes(4, byteorder="big"))
f.write(sprite.num_variations.to_bytes(4, byteorder="big"))
# write animation offset list
animation_offsets.append(-1)
for offset in animation_offsets:
f.write(offset.to_bytes(4, byteorder="big", signed=True))

32
tools/compile_npc_sprites.py Executable file
View File

@ -0,0 +1,32 @@
#! /usr/bin/python3
from sys import argv
if __name__ == "__main__":
if len(argv) < 4:
print("usage: compile_npc_sprites.py [OUTBIN] [INFILES]")
exit(1)
_, outfile, *infiles = argv
with open(outfile, "wb") as f:
offsets = []
f.seek(4 * (len(infiles) + 1))
for filename in infiles:
with open(filename, "rb") as spritef:
offsets.append(f.tell())
f.write(spritef.read())
# align
while f.tell() % 8 != 0:
f.write(bytes([0]))
print(f"{0x19E67B8 + f.tell():X}")
offsets.append(f.tell())
f.seek(0)
for offset in offsets:
f.write(offset.to_bytes(4, byteorder="big"))

@ -1 +1 @@
Subproject commit 6106762b0561e40a640c11852a17bb87963c7ba8 Subproject commit 0ff02cd4734c26c7ae03aee4a0374a774b3b097b

0
tools/sort_symbol_addrs.py Normal file → Executable file
View File

View File

@ -7022,241 +7022,277 @@ segments:
- [0x19E5758, "Yay0"] - [0x19E5758, "Yay0"]
- [0x19E5950, "Yay0"] - [0x19E5950, "Yay0"]
- [0x19E62A0, "Yay0"] - [0x19E62A0, "Yay0"]
- [0x19E67B2, "bin"] - start: 0x19E67B8
- [0x19E6B60, "Yay0"] type: PaperMarioNpcSprites
- [0x19E7528, "Yay0"] files:
- [0x19E9778, "Yay0"] - name: world_goombario
- [0x19EAF38, "Yay0"] frames:
- [0x19EC4E0, "Yay0"] - walk1
- [0x19EDD30, "Yay0"] - still
- [0x19EEB18, "Yay0"] - walk2
- [0x19F0070, "Yay0"] - pain
- [0x19F15A0, "Yay0"] - headbonk
- [0x19F26D8, "Yay0"] - still_copy1
- [0x19F5390, "Yay0"] - still_copy2
- [0x19F7398, "Yay0"] - jump
- [0x19FA128, "Yay0"] - talk1
- [0x19FCAE8, "Yay0"] - talk2
- [0x19FED70, "Yay0"] - jump_copy
- [0x1A00958, "Yay0"] - fall
- [0x1A02D00, "Yay0"] - happy1
- [0x1A04400, "Yay0"] - happy2
- [0x1A05550, "Yay0"] - read_paper
- [0x1A06390, "Yay0"] palettes:
- [0x1A06F98, "Yay0"] - default
- [0x1A07B68, "Yay0"] - poisoned
- [0x1A0A0A0, "Yay0"] - inactive
- [0x1A0ACC8, "Yay0"] - electrified
- [0x1A0B780, "Yay0"] - burnt
- [0x1A0BBE0, "Yay0"] animations:
- [0x1A0C000, "Yay0"] - still
- [0x1A0C438, "Yay0"] - idle
- [0x1A0C860, "Yay0"] - walk
- [0x1A0D1E8, "Yay0"] - run
- [0x1A0D5B0, "Yay0"] - jump
- [0x1A0D970, "Yay0"] - fall
- [0x1A0EF00, "Yay0"] - headbonk # centered at 0,0,0 rather than at base of sprite
- [0x1A13920, "Yay0"] - pain
- [0x1A15850, "Yay0"] - talk
- [0x1A183F8, "Yay0"] - celebrate
- [0x1A1A608, "Yay0"] - read_paper
- [0x1A1C5E8, "Yay0"] - world_kooper
- [0x1A1D6D0, "Yay0"] - world_bombette
- [0x1A1E478, "Yay0"] - world_parakarry
- [0x1A1F370, "Yay0"] - world_bow
- [0x1A226B0, "Yay0"] - world_watt
- [0x1A249B8, "Yay0"] - world_sushi
- [0x1A25E78, "Yay0"] - world_lakilester
- [0x1A27FF0, "Yay0"] - battle_goombario
- [0x1A28BE0, "Yay0"] - battle_kooper
- [0x1A29680, "Yay0"] - battle_bombette
- [0x1A2BC68, "Yay0"] - battle_parakarry
- [0x1A2E120, "Yay0"] - battle_bow
- [0x1A2F3F8, "Yay0"] - battle_watt
- [0x1A31D18, "Yay0"] - battle_sushi
- [0x1A33AB0, "Yay0"] - battle_lakilester
- [0x1A35BB8, "Yay0"] - kooper_without_shell
- [0x1A369A8, "Yay0"] - world_eldstar
- [0x1A39600, "Yay0"] - world_mamar
- [0x1A3B018, "Yay0"] - world_skolar
- [0x1A3C310, "Yay0"] - world_muskular
- [0x1A3FCC8, "Yay0"] - world_misstar
- [0x1A423D8, "Yay0"] - world_klevar
- [0x1A449C0, "Yay0"] - world_kalmar
- [0x1A46568, "Yay0"] - battle_eldstar
- [0x1A49340, "Yay0"] - battle_mamar
- [0x1A4AC88, "Yay0"] - battle_skolar
- [0x1A4D7E8, "Yay0"] - battle_muskular
- [0x1A4E028, "Yay0"] - battle_misstar
- [0x1A4FA60, "Yay0"] - battle_klevar
- [0x1A531D0, "Yay0"] - battle_kalmar
- [0x1A53D48, "Yay0"] - twink
- [0x1A56C80, "Yay0"] - jr_troopa
- [0x1A58F58, "Yay0"] - spiked_jr_troopa
- [0x1A5A5A8, "Yay0"] - spiked_para_jr_troopa
- [0x1A62B40, "Yay0"] - mage_jr_troopa
- [0x1A641F8, "Yay0"] - para_jr_troopa
- [0x1A666F0, "Yay0"] - goomba
- [0x1A68870, "Yay0"] - spiked_goomba
- [0x1A6C630, "Yay0"] - paragoomba
- [0x1A6D5A0, "Yay0"] - koopa_troopa
- [0x1A6EF50, "Yay0"] - para_troopa
- [0x1A70FF0, "Yay0"] - fuzzy
- [0x1A74FC0, "Yay0"] - bob_omb
- [0x1A78A40, "Yay0"] - bullet_bill
- [0x1A79900, "Yay0"] - bill_blaster
- [0x1A7D798, "Yay0"] - monty_mole
- [0x1A7EEA0, "Yay0"] - cleft
- [0x1A7EFD8, "Yay0"] - pokey
- [0x1A83450, "Yay0"] - battle_bandit
- [0x1A85668, "Yay0"] - buzzy_beetle
- [0x1A87958, "Yay0"] - swooper
- [0x1A8BF98, "Yay0"] - stone_chomp
- [0x1A8FE28, "Yay0"] - putrid_piranha
- [0x1A93EA0, "Yay0"] - piranha_plant
- [0x1A94188, "Yay0"] - sentinel
- [0x1A94480, "Yay0"] - world_clubba
- [0x1A946A8, "Yay0"] - battle_clubba
- [0x1A94A00, "Yay0"] - shy_guy
- [0x1A94C58, "Yay0"] - groove_guy
- [0x1A98D98, "Yay0"] - sky_guy
- [0x1A9BA80, "Yay0"] - pyro_guy
- [0x1A9DB68, "Yay0"] - spy_guy
- [0x1AA0048, "Yay0"] - medi_guy
- [0x1AA0698, "Yay0"] - fuzzipede
- [0x1AA1008, "Yay0"] - jungle_guy
- [0x1AA6D58, "Yay0"] - heart_plant
- [0x1AAD600, "Yay0"] - hurt_plant
- [0x1AB1BF0, "Yay0"] - m_bush
- [0x1AB2368, "Yay0"] - bubble
- [0x1ABA290, "Yay0"] - kent_c_koopa
- [0x1AC14A8, "Yay0"] - dayzee
- [0x1AC3910, "Yay0"] - lakitu
- [0x1ACBC98, "Yay0"] - spiny
- [0x1ACE058, "Yay0"] - bzzap
- [0x1ACF910, "Yay0"] - ruff_puff
- [0x1AD06D8, "Yay0"] - spike_top
- [0x1AD0B98, "Yay0"] - duplighost
- [0x1AD1E90, "Yay0"] - albino_dino
- [0x1AD2348, "Yay0"] - blooper
- [0x1AD27F8, "Yay0"] - baby_blooper
- [0x1AD28A8, "Yay0"] - gulpit
- [0x1AD44F0, "Yay0"] - dry_bones
- [0x1AD4758, "Yay0"] - thrown_bone
- [0x1AD57C0, "Yay0"] - bony_beetle
- [0x1AD9D50, "Yay0"] - magikoopa
- [0x1ADA498, "Yay0"] - flying_magikoopa
- [0x1ADCFC0, "Yay0"] - world_koopatrol
- [0x1AE2168, "Yay0"] - koopatrol
- [0x1AE2EA0, "Yay0"] - hammer_bros
- [0x1AE6A58, "Yay0"] - bush_basic
- [0x1AEB778, "Yay0"] - bush_blocky
- [0x1AF4958, "Yay0"] - bush_dry
- [0x1AFCB18, "Yay0"] - bush_leafy
- [0x1AFF748, "Yay0"] - bush_matted
- [0x1B00640, "Yay0"] - world_kammy
- [0x1B01390, "Yay0"] - battle_kammy
- [0x1B01C08, "Yay0"] - goomba_bros
- [0x1B02128, "Yay0"] - goomba_king
- [0x1B02970, "Yay0"] - spiky_goomnut
- [0x1B03118, "Yay0"] - dark_toad
- [0x1B03C18, "Yay0"] - koopa_bros
- [0x1B045E8, "Yay0"] - buzzar
- [0x1B04FC0, "Yay0"] - tutankoopa
- [0x1B05998, "Yay0"] - chain_chomp
- [0x1B06C88, "Yay0"] - world_tubba
- [0x1B07C48, "Yay0"] - battle_tubba
- [0x1B09440, "Yay0"] - tubbas_heart
- [0x1B0B290, "Yay0"] - big_lantern_ghost
- [0x1B0B9A0, "Yay0"] - shy_squad_guy
- [0x1B0C548, "Yay0"] - marshal_guy
- [0x1B0CAC0, "Yay0"] - stilt_guy
- [0x1B0D130, "Yay0"] - stilt_guy_unfold
- [0x1B0EB80, "Yay0"] - shy_stack_guy
- [0x1B10CC0, "Yay0"] - shy_stack_unfold
- [0x1B129A0, "Yay0"] - shy_stack_damage
- [0x1B13548, "Yay0"] - shy_stack_rock
- [0x1B16420, "Yay0"] - general_guy
- [0x1B17128, "Yay0"] - general_guy_bomb
- [0x1B17840, "Yay0"] - tank_guy
- [0x1B19318, "Yay0"] - lava_piranha_head
- [0x1B1A030, "Yay0"] - petit_piranha
- [0x1B1B8C8, "Yay0"] - lava_bud
- [0x1B1BC88, "Yay0"] - huff_n_puff
- [0x1B1C7A0, "Yay0"] - tuff_puff
- [0x1B1CD28, "Yay0"] - monstar
- [0x1B21C48, "Yay0"] - crystal_king
- [0x1B23290, "Yay0"] - world_bowser
- [0x1B253E0, "Yay0"] - battle_bowser
- [0x1B26660, "Yay0"] - luigi
- [0x1B283F8, "Yay0"] - toad
- [0x1B29C60, "Yay0"] - three_sisters
- [0x1B2A688, "Yay0"] - vanna_t
- [0x1B2B3E8, "Yay0"] - toad_kid
- [0x1B2C8D8, "Yay0"] - toad_guard
- [0x1B2D7B0, "Yay0"] - harry_t
- [0x1B2E328, "Yay0"] - toad_minister
- [0x1B2ED60, "Yay0"] - postmaster
- [0x1B2FA18, "Yay0"] - conductor_toad
- [0x1B31A18, "Yay0"] - train_station_toad
- [0x1B33000, "Yay0"] - fishmael
- [0x1B34098, "Yay0"] - artist_toad
- [0x1B34928, "Yay0"] - koopa
- [0x1B34C00, "Yay0"] - koopa_without_shell
- [0x1B35480, "Yay0"] - world_bob_omb
- [0x1B36440, "Yay0"] - whacka
- [0x1B38748, "Yay0"] - dryite
- [0x1B39A98, "Yay0"] - mouser
- [0x1B3A2E8, "Yay0"] - boo
- [0x1B3A818, "Yay0"] - yoshi
- [0x1B3C488, "Yay0"] - yoshi_kid
- [0x1B3CAC8, "Yay0"] - raven
- [0x1B3D0A0, "Yay0"] - bubulb
- [0x1B3D920, "Yay0"] - penguin
- [0x1B3F060, "Yay0"] - shiver_toad
- [0x1B40048, "Yay0"] - world_bandit
- [0x1B40720, "Yay0"] - goompapa
- [0x1B49570, "Yay0"] - goombaria
- [0x1B4C3E8, "Yay0"] - goomama
- [0x1B4DEA0, "Yay0"] - goompa
- [0x1B4FD98, "Yay0"] - goomma
- [0x1B50CD8, "Yay0"] - the_master
- [0x1B51B08, "Yay0"] - chan
- [0x1B54258, "Yay0"] - lee
- [0x1B580A0, "Yay0"] - merlon
- [0x1B5A248, "Yay0"] - chet_rippo
- [0x1B5BB88, "Yay0"] - rowf
- [0x1B5CC90, "Yay0"] - minh_t
- [0x1B5E968, "Yay0"] - russ_t
- [0x1B5ED88, "Yay0"] - tayce_t
- [0x1B608C0, "Yay0"] - fice_t
- [0x1B625F8, "Yay0"] - bartender
- [0x1B633D0, "Yay0"] - chanterelle
- [0x1B64878, "Yay0"] - rip_cheato
- [0x1B657E0, "Yay0"] - chuck_quizmo
- [0x1B65A08, "Yay0"] - merluvlee
- [0x1B65E50, "Yay0"] - merlar
- [0x1B66238, "Yay0"] - merlow
- [0x1B69580, "Yay0"] - star_kid
- [0x1B6C318, "Yay0"] - kolorado_wife
- [0x1B6DD98, "Yay0"] - koopa_koot
- [0x1B6F150, "Yay0"] - kolorado
- [0x1B71618, "Yay0"] - battle_kolorado
- [0x1B72890, "Yay0"] - archeologist
- [0x1B73B08, "Yay0"] - nomadimouse
- [0x1B747B8, "Yay0"] - world_merlee
- [0x1B76E30, "Yay0"] - battle_merlee
- [0x1B78EC0, "Yay0"] - disguised_moustafa
- [0x1B79A20, "Yay0"] - moustafa
- [0x1B79F08, "Yay0"] - oaklie
- [0x1B7AA08, "Yay0"] - bootler
- [0x1B7B008, "Yay0"] - yakkey
- [0x1B7BB50, "Yay0"] - gourmet_guy
- [0x1B7EC68, "Yay0"] - village_leader
- [0x1B7FF48, "Yay0"] - leaders_friend
- [0x1B81E88, "Yay0"] - rafael_raven
- [0x1B82058, "Yay0"] - tolielup
- [0x1B82202, "bin"] - gate_flower
- petunia
- posie
- lily
- rosie
- sun
- lakilulu
- ninji
- mayor_penguin
- mayor_penguin_wife
- penguin_patrol
- herringway
- merle
- star_rod
- fire
- coin
- parade_peach
- parade_koopas
- parade_burnt_bowser
- parade_luigi
- parade_partners
- parade_yoshis
- parada_kolorados
- parade_chicks
- parade_ice_show
- parade_toads
- parade_batons
- parade_drums
- parade_flags
- parade_horns
- parade_tubba_balloon
- parade_wizards
- parade_mario
- parade_shy_guys
- parade_twink
- leaf
- [0x1B82208, bin]
- start: 0x1B83000 - start: 0x1B83000
type: PaperMarioMessages type: PaperMarioMessages
files: files: