commit 04732af90b0b47997c8c3a3e31fb27ed082639a5
parent a7c423cb43b94a759d100e989ccf7c104d757aa1
Author: n64 <>
Date: Sun, 1 Dec 2019 21:52:26 -0500
refresh 4
Diffstat:
732 files changed, 23300 insertions(+), 39010 deletions(-)
diff --git a/CHANGES b/CHANGES
@@ -1,3 +1,33 @@
+Refresh #4
+1.) Label screen_transition.c (#737)
+2.) Revamp macros (#738)
+3.) Simplify the cake makefile logic (#739)
+4.) Move zbuffer to C (#742)
+5.) Audio blob endian/64-bit fixes (#740)
+6.) Ub fixes (#745)
+7.) process_level_music_dynamics: slightly better stack and regalloc (#746)
+8.) move level order specific definitions out to levels/level_defines.h (#743)
+9.) Renamed some mislabelled sound effects (#748)
+10.) Very minor white space fixes in Mario.c (#752)
+11.) Renamed GRAVITY to OBJ_PHYSICS (#755)
+12.) Use defined macros instead of literal values for interactions in behavior_data.c (#754)
+13.) iQue Player console detection + full support (#756)
+14.) Fix Goddard Mario head for little endian etc. (#757)
+15.) Small bits of audio doc (#749)
+16.) Update diff script (#750)
+17.) Nicer format for course/dialog text, enum for dialog IDs (#753)
+18.) first-diff: store most recent mtime during check (#759)
+19.) Use Lights1 struct for light values (#760)
+20.) Detect mips64-elf in diff.py (#761)
+21.) Name display lists in gd renderer.c (#764)
+22.) Document a variety of PU type crashes. (#765)
+23.) Label object_behaviors. (#716)
+24.) Update swoop.inc.c (#767)
+25.) Label tilting_pyramid.inc.c (#768)
+26.) Label red_coin.inc.c (#770)
+27.) Use more level defines (#758)
+28.) Named Mario actions 6, 7, and 8 and noted causes of hands-free holding glitch (#769)
+
Refresh #3
1.) Small bits of sound sample labelling
2.) Append 'b' to fopen calls in n64graphics to satisfy Windows
diff --git a/Doxyfile b/Doxyfile
@@ -2089,7 +2089,7 @@ INCLUDE_FILE_PATTERNS =
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-PREDEFINED = NON_MATCHING
+PREDEFINED = NON_MATCHING AVOID_UB
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
diff --git a/Jenkinsfile b/Jenkinsfile
@@ -27,16 +27,6 @@ pipeline {
sh 'make -j4 VERSION=us'
}
}
- stage('Build J Source, NON_MATCHING') {
- steps {
- sh 'make -j4 VERSION=jp NON_MATCHING=1'
- }
- }
- stage('Build U Source, NON_MATCHING') {
- steps {
- sh 'make -j4 VERSION=us NON_MATCHING=1'
- }
- }
}
environment {
QEMU_IRIX = credentials('qemu-irix')
diff --git a/Makefile b/Makefile
@@ -6,29 +6,31 @@ default: all
### Build Options ###
+# These options can either be changed by modifying the makefile, or
+# by building with 'make SETTING=value'. 'make clean' may be required.
+
# Version of the game to build
VERSION ?= us
# Graphics microcode used
GRUCODE ?= f3d_old
# If COMPARE is 1, check the output sha1sum when building 'all'
COMPARE ?= 1
-# If NON_MATCHING is 1, define the NON_MATCHING macro when building
+# If NON_MATCHING is 1, define the NON_MATCHING and AVOID_UB macros when building (recommended)
NON_MATCHING ?= 0
-# If ENDIAN_IND is 1, enable non-matching code changes that try to ensure
-# endianness independence
-ENDIAN_IND ?= 0
+# Build for the N64 (turn this off for ports)
+TARGET_N64 ?= 1
# Release
ifeq ($(VERSION),jp)
- VERSION_CFLAGS := -DVERSION_JP=1
+ VERSION_CFLAGS := -DVERSION_JP
VERSION_ASFLAGS := --defsym VERSION_JP=1
GRUCODE_CFLAGS := -DF3D_OLD
GRUCODE_ASFLAGS := --defsym F3D_OLD=1
TARGET := sm64.jp
else
ifeq ($(VERSION),us)
- VERSION_CFLAGS := -DVERSION_US=1
+ VERSION_CFLAGS := -DVERSION_US
VERSION_ASFLAGS := --defsym VERSION_US=1
GRUCODE_CFLAGS := -DF3D_OLD
GRUCODE_ASFLAGS := --defsym F3D_OLD=1
@@ -36,7 +38,7 @@ ifeq ($(VERSION),us)
else
ifeq ($(VERSION),eu)
$(warning Building EU is experimental and is prone to breaking. Try at your own risk.)
- VERSION_CFLAGS := -DVERSION_EU=1
+ VERSION_CFLAGS := -DVERSION_EU
VERSION_ASFLAGS := --defsym VERSION_EU=1
GRUCODE_CFLAGS := -DF3D_NEW
GRUCODE_ASFLAGS := --defsym F3D_NEW=1
@@ -50,13 +52,13 @@ endif
# Microcode
ifeq ($(GRUCODE),f3dex) # Fast3DEX
- GRUCODE_CFLAGS := -DF3DEX_GBI=1
+ GRUCODE_CFLAGS := -DF3DEX_GBI
GRUCODE_ASFLAGS := --defsym F3DEX_GBI_SHARED=1 --defsym F3DEX_GBI=1
TARGET := $(TARGET).f3dex
COMPARE := 0
else
ifeq ($(GRUCODE), f3dex2) # Fast3DEX2
- GRUCODE_CFLAGS := -DF3DEX_GBI_2=1
+ GRUCODE_CFLAGS := -DF3DEX_GBI_2
GRUCODE_ASFLAGS := --defsym F3DEX_GBI_SHARED=1 --defsym F3DEX_GBI_2=1
TARGET := $(TARGET).f3dex2
COMPARE := 0
@@ -69,7 +71,7 @@ ifeq ($(GRUCODE),f3d_new) # Fast3D 2.0H (Shindou)
else
ifeq ($(GRUCODE),f3dzex) # Fast3DZEX (2.0J / Animal Forest - Dōbutsu no Mori)
$(warning Fast3DZEX is experimental. Try at your own risk.)
- GRUCODE_CFLAGS := -DF3DEX_GBI_2=1
+ GRUCODE_CFLAGS := -DF3DEX_GBI_2
GRUCODE_ASFLAGS := --defsym F3DEX_GBI_SHARED=1 --defsym F3DZEX_GBI=1
TARGET := $(TARGET).f3dzex
COMPARE := 0
@@ -78,13 +80,12 @@ endif
endif
endif
-ifeq ($(NON_MATCHING),1)
- VERSION_CFLAGS := $(VERSION_CFLAGS) -DNON_MATCHING=1
- COMPARE := 0
+ifeq ($(TARGET_N64),0)
+ NON_MATCHING := 1
endif
-ifeq ($(ENDIAN_IND),1)
- VERSION_CFLAGS := $(VERSION_CFLAGS) -DENDIAN_IND=1
+ifeq ($(NON_MATCHING),1)
+ VERSION_CFLAGS := $(VERSION_CFLAGS) -DNON_MATCHING -DAVOID_UB
COMPARE := 0
endif
@@ -132,8 +133,8 @@ ACTOR_DIR := actors
LEVEL_DIRS := $(patsubst levels/%,%,$(dir $(wildcard levels/*/header.h)))
# Directories containing source files
-SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels text bin data assets
-ASM_DIRS := asm lib sound
+SRC_DIRS := src src/engine src/game src/audio src/menu src/buffers actors levels bin data assets
+ASM_DIRS := asm lib
BIN_DIRS := bin bin/$(VERSION)
ULTRA_SRC_DIRS := lib/src lib/src/math
@@ -191,10 +192,10 @@ GODDARD_O_FILES := $(foreach file,$(GODDARD_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
# Automatic dependency files
DEP_FILES := $(O_FILES:.o=.d) $(ULTRA_O_FILES:.o=.d) $(GODDARD_O_FILES:.o=.d) $(BUILD_DIR)/$(LD_SCRIPT).d
-# Files with NON_MATCHING ifdefs
-NON_MATCHING_C_FILES != grep -rl NON_MATCHING $(wildcard src/audio/*.c) $(wildcard src/game/*.c)
-NON_MATCHING_O_FILES = $(foreach file,$(NON_MATCHING_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
-NON_MATCHING_DEP = $(BUILD_DIR)/src/audio/non_matching_dep
+# Files with GLOBAL_ASM blocks
+GLOBAL_ASM_C_FILES != grep -rl 'GLOBAL_ASM(' $(wildcard src/audio/*.c) $(wildcard src/game/*.c)
+GLOBAL_ASM_O_FILES = $(foreach file,$(GLOBAL_ASM_C_FILES),$(BUILD_DIR)/$(file:.c=.o))
+GLOBAL_ASM_DEP = $(BUILD_DIR)/src/audio/non_matching_dep
# Segment elf files
SEG_FILES := $(SEGMENT_ELF_FILES) $(ACTOR_ELF_FILES) $(LEVEL_ELF_FILES)
@@ -218,23 +219,29 @@ endif
AS := $(CROSS)as
CC := $(QEMU_IRIX) -silent -L $(IRIX_ROOT) $(IRIX_ROOT)/usr/bin/cc
-CPP := cpp -P
+CPP := cpp -P -Wno-trigraphs
LD := $(CROSS)ld
AR := $(CROSS)ar
OBJDUMP := $(CROSS)objdump
OBJCOPY := $(CROSS)objcopy
PYTHON := python3
-INCLUDE_CFLAGS := -I include -I include/libc -I $(BUILD_DIR) -I $(BUILD_DIR)/include -I src -I .
+ifeq ($(TARGET_N64),1)
+ TARGET_CFLAGS := -nostdinc -I include/libc -DTARGET_N64
+ CC_CFLAGS := -fno-builtin
+endif
+
+INCLUDE_CFLAGS := -I include -I $(BUILD_DIR) -I $(BUILD_DIR)/include -I src -I .
# Check code syntax with host compiler
-CC_CHECK := gcc -fsyntax-only -fsigned-char -nostdinc -fno-builtin $(INCLUDE_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -DNON_MATCHING $(VERSION_CFLAGS) $(GRUCODE_CFLAGS) -DTARGET_N64
+CC_CHECK := gcc -fsyntax-only -fsigned-char $(CC_CFLAGS) $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) -std=gnu90 -Wall -Wextra -Wno-format-security -DNON_MATCHING -DAVOID_UB $(VERSION_CFLAGS) $(GRUCODE_CFLAGS)
ASFLAGS := -march=vr4300 -mabi=32 -I include -I $(BUILD_DIR) $(VERSION_ASFLAGS) $(GRUCODE_ASFLAGS)
-CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn $(OPT_FLAGS) -signed $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(MIPSISET) $(GRUCODE_CFLAGS) -DTARGET_N64
+CFLAGS = -Wab,-r4300_mul -non_shared -G 0 -Xcpluscomm -Xfullwarn -signed $(OPT_FLAGS) $(TARGET_CFLAGS) $(INCLUDE_CFLAGS) $(VERSION_CFLAGS) $(MIPSISET) $(GRUCODE_CFLAGS)
OBJCOPYFLAGS := --pad-to=0x800000 --gap-fill=0xFF
SYMBOL_LINKING_FLAGS := $(addprefix -R ,$(SEG_FILES))
LDFLAGS := -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(SYMBOL_LINKING_FLAGS)
+ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
ifeq ($(shell getconf LONG_BIT), 32)
# Work around memory allocation bug in QEMU
@@ -306,21 +313,26 @@ $(BUILD_DIR)/include/text_strings.h: include/text_strings.h.in
$(BUILD_DIR)/include/text_menu_strings.h: include/text_menu_strings.h.in
$(TEXTCONV) charmap_menu.txt $< $@
-$(BUILD_DIR)/text/%.inc.c: text/$(VERSION)/%.c.in
- $(TEXTCONV) charmap.txt $< $@
-
ifeq ($(VERSION),eu)
-SRC_DIRS += text/de text/en text/fr
+TEXT_DIRS := text/de text/us text/fr
+
# EU encoded text inserted into individual segment 0x19 files
-$(BUILD_DIR)/bin/$(VERSION)/translation_de.o: $(BUILD_DIR)/text/de/dialog.inc.c $(BUILD_DIR)/text/de/level.inc.c $(BUILD_DIR)/text/de/star.inc.c
-$(BUILD_DIR)/bin/$(VERSION)/translation_en.o: $(BUILD_DIR)/text/en/dialog.inc.c $(BUILD_DIR)/text/en/level.inc.c $(BUILD_DIR)/text/en/star.inc.c
-$(BUILD_DIR)/bin/$(VERSION)/translation_fr.o: $(BUILD_DIR)/text/fr/dialog.inc.c $(BUILD_DIR)/text/fr/level.inc.c $(BUILD_DIR)/text/fr/star.inc.c
+$(BUILD_DIR)/bin/eu/translation_en.o: $(BUILD_DIR)/text/us/define_text.inc.c
+$(BUILD_DIR)/bin/eu/translation_de.o: $(BUILD_DIR)/text/de/define_text.inc.c
+$(BUILD_DIR)/bin/eu/translation_fr.o: $(BUILD_DIR)/text/fr/define_text.inc.c
+
else
+TEXT_DIRS := text/$(VERSION)
+
# non-EU encoded text inserted into segment 0x02
-$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/debug.inc.c $(BUILD_DIR)/text/dialog.inc.c $(BUILD_DIR)/text/level.inc.c $(BUILD_DIR)/text/star.inc.c
+$(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c
endif
-ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_ASM_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
+$(BUILD_DIR)/text/%/define_text.inc.c: text/define_text.inc.c text/%/courses.h text/%/dialogs.h
+ $(CPP) $(VERSION_CFLAGS) $< -o $@ -I text/$*/
+ $(TEXTCONV) charmap.txt $@ $@
+
+ALL_DIRS := $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS) $(GODDARD_SRC_DIRS) $(ULTRA_SRC_DIRS) $(ULTRA_ASM_DIRS) $(ULTRA_BIN_DIRS) $(BIN_DIRS) $(TEXTURE_DIRS) $(TEXT_DIRS) $(SOUND_SAMPLE_DIRS) $(addprefix levels/,$(LEVEL_DIRS)) include) $(MIO0_DIR) $(addprefix $(MIO0_DIR)/,$(VERSION)) $(SOUND_BIN_DIR) $(SOUND_BIN_DIR)/sequences/$(VERSION)
# Make sure build directory exists before compiling anything
DUMMY != mkdir -p $(ALL_DIRS)
@@ -390,17 +402,24 @@ $(BUILD_DIR)/%.table: %.aiff
$(BUILD_DIR)/%.aifc: $(BUILD_DIR)/%.table %.aiff
$(VADPCM_ENC) -c $^ $@
-$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS)
- $(PYTHON) tools/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/sound_data.tbl $(VERSION_CFLAGS)
+$(ENDIAN_BITWIDTH): tools/determine-endian-bitwidth.c
+ $(CC) -c $(CFLAGS) -o $@.dummy2 $< 2>$@.dummy1; true
+ grep -o 'msgbegin --endian .* --bitwidth .* msgend' $@.dummy1 > $@.dummy2
+ head -n1 <$@.dummy2 | cut -d' ' -f2-5 > $@
+ @rm $@.dummy1
+ @rm $@.dummy2
+
+$(SOUND_BIN_DIR)/sound_data.ctl: sound/sound_banks/ $(SOUND_BANK_FILES) $(SOUND_SAMPLE_AIFCS) $(ENDIAN_BITWIDTH)
+ $(PYTHON) tools/assemble_sound.py $(BUILD_DIR)/sound/samples/ sound/sound_banks/ $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/sound_data.tbl $(VERSION_CFLAGS) $$(cat $(ENDIAN_BITWIDTH))
$(SOUND_BIN_DIR)/sound_data.tbl: $(SOUND_BIN_DIR)/sound_data.ctl
- touch $@
+ @true
-$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json sound/sequences/ sound/sequences/$(VERSION)/ $(SOUND_SEQUENCE_FILES)
- $(PYTHON) tools/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(VERSION_CFLAGS)
+$(SOUND_BIN_DIR)/sequences.bin: $(SOUND_BANK_FILES) sound/sequences.json sound/sequences/ sound/sequences/$(VERSION)/ $(SOUND_SEQUENCE_FILES) $(ENDIAN_BITWIDTH)
+ $(PYTHON) tools/assemble_sound.py --sequences $@ $(SOUND_BIN_DIR)/bank_sets sound/sound_banks/ sound/sequences.json $(SOUND_SEQUENCE_FILES) $(VERSION_CFLAGS) $$(cat $(ENDIAN_BITWIDTH))
$(SOUND_BIN_DIR)/bank_sets: $(SOUND_BIN_DIR)/sequences.bin
- touch $@
+ @true
$(SOUND_BIN_DIR)/%.m64: $(SOUND_BIN_DIR)/%.o
$(OBJCOPY) -j .rodata $< -O binary $@
@@ -411,6 +430,11 @@ $(SOUND_BIN_DIR)/%.o: $(SOUND_BIN_DIR)/%.s
$(SOUND_BIN_DIR)/%.s: $(SOUND_BIN_DIR)/%
printf ".section .data\n\n.incbin \"$<\"\n" > $@
+$(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h
+
+$(BUILD_DIR)/include/level_headers.h: levels/level_headers.h.in
+ $(CPP) -I . levels/level_headers.h.in | $(PYTHON) tools/output_level_headers.py > $(BUILD_DIR)/include/level_headers.h
+
$(BUILD_DIR)/assets/mario_anim_data.c: $(wildcard assets/anims/*.inc.c)
$(PYTHON) tools/mario_anims_converter.py > $@
@@ -420,7 +444,6 @@ $(BUILD_DIR)/assets/demo_data.c: assets/demo_data.json $(wildcard assets/demos/*
# Source code
$(BUILD_DIR)/src/goddard/%.o: OPT_FLAGS := -g
$(BUILD_DIR)/src/goddard/%.o: MIPSISET := -mips1
-$(NON_MATCHING_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
$(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0
$(BUILD_DIR)/src/audio/load.o: OPT_FLAGS := -O2 -framepointer -Wo,-loopunroll,0
$(BUILD_DIR)/lib/src/%.o: OPT_FLAGS :=
@@ -438,16 +461,20 @@ $(BUILD_DIR)/lib/src/_Ldtob.o: OPT_FLAGS := -O3
$(BUILD_DIR)/lib/src/_Printf.o: OPT_FLAGS := -O3
endif
-# Rebuild files with '#ifdef NON_MATCHING' when that macro changes.
-$(NON_MATCHING_O_FILES): $(NON_MATCHING_DEP).$(NON_MATCHING)
-$(NON_MATCHING_DEP).$(NON_MATCHING):
- @rm -f $(NON_MATCHING_DEP).*
+ifeq ($(NON_MATCHING),0)
+$(GLOBAL_ASM_O_FILES): CC := $(PYTHON) tools/asm_processor/build.py $(CC) -- $(AS) $(ASFLAGS) --
+endif
+
+# Rebuild files with 'GLOBAL_ASM' if the NON_MATCHING flag changes.
+$(GLOBAL_ASM_O_FILES): $(GLOBAL_ASM_DEP).$(NON_MATCHING)
+$(GLOBAL_ASM_DEP).$(NON_MATCHING):
+ @rm -f $(GLOBAL_ASM_DEP).*
touch $@
$(BUILD_DIR)/lib/src/math/%.o: lib/src/math/%.c
@$(CC_CHECK) -MMD -MP -MT $@ -MF $(BUILD_DIR)/lib/src/math/$*.d $<
$(CC) -c $(CFLAGS) -o $@ $<
- tools/patch_libultra_math $@ || rm $@
+ tools/patch_libultra_math $@
$(BUILD_DIR)/%.o: %.c
@$(CC_CHECK) -MMD -MP -MT $@ -MF $(BUILD_DIR)/$*.d $<
@@ -462,7 +489,7 @@ $(BUILD_DIR)/%.o: %.s
$(AS) $(ASFLAGS) -MD $(BUILD_DIR)/$*.d -o $@ $<
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT)
- $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
+ $(CPP) $(VERSION_CFLAGS) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
$(BUILD_DIR)/libultra.a: $(ULTRA_O_FILES)
$(AR) rcs -o $@ $(ULTRA_O_FILES)
@@ -483,7 +510,7 @@ $(BUILD_DIR)/$(TARGET).objdump: $(ELF)
.PHONY: all clean distclean default diff test load libultra
-.PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/%
+.PRECIOUS: $(BUILD_DIR)/bin/%.elf $(SOUND_BIN_DIR)/%.ctl $(SOUND_BIN_DIR)/%.tbl $(SOUND_SAMPLE_TABLES) $(SOUND_BIN_DIR)/%.s $(BUILD_DIR)/%
.DELETE_ON_ERROR:
# Remove built-in rules, to improve performance
diff --git a/Makefile.split b/Makefile.split
@@ -135,70 +135,39 @@ $(BUILD_DIR)/actors/common1.elf: SEGMENT_ADDRESS := 0x03000000
# Level Rules
# --------------------------------------
-# Using these rules:
-# When defining a level, define the 3 variables needed and copy the rules
-# as-is.
+$(BUILD_DIR)/levels/%/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
+
# TODO: Generate these rules from the level configs?
define level_rules =
- $(1)_SEG7_FILES := $$(patsubst %.png,%.inc.c,$$(notdir $$(wildcard levels/$(1)/*.png)))
- $$(BUILD_DIR)/levels/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/levels/$(1)/,$$($(1)_SEG7_FILES))
- $$(BUILD_DIR)/levels/$(1)/leveldata.elf: SEGMENT_ADDRESS := $(2)
- $$(BUILD_DIR)/levels/$(1)/leveldata.elf: TEXTURE_BIN := $(3)
+ $(1)_SEG7_FILES := $$(patsubst %.png,%.inc.c,$$(wildcard levels/$(1)/*.png))
+ $$(BUILD_DIR)/levels/$(1)/leveldata.o: $$(addprefix $$(BUILD_DIR)/,$$($(1)_SEG7_FILES))
+ $$(BUILD_DIR)/levels/$(1)/leveldata.elf: TEXTURE_BIN := $(2)
endef
-$(eval $(call level_rules,bbh,0x07000000,spooky)) # BBH (Big Boo's Haunt)
-$(eval $(call level_rules,ccm,0x07000000,snow)) # CCM (Cool Cool Mountain)
-$(eval $(call level_rules,castle_inside,0x07000000,inside)) # Castle Inside (Inside Princess Peach's Castle)
-$(eval $(call level_rules,hmc,0x07000000,cave))# HMC (Hazy Maze Cave)
-$(eval $(call level_rules,ssl,0x07000000,generic)) # SSL (Shifting Sand Land)
-$(eval $(call level_rules,bob,0x07000000,generic)) # BOB (Bob-Omb Battlefield)
-$(eval $(call level_rules,sl,0x07000000,snow)) # SL (Snowman's Land)
-$(eval $(call level_rules,wdw,0x07000000,grass)) # WDW (Wet Dry World)
-$(eval $(call level_rules,jrb,0x07000000,water)) # JRB (Jolly Roger Bay)
-$(eval $(call level_rules,thi,0x07000000,grass)) # THI (Tiny Huge Island)
-$(eval $(call level_rules,ttc,0x07000000,machine)) # TTC (Tick Tock Clock)
-$(eval $(call level_rules,rr,0x07000000,sky)) # RR (Rainbow Ride)
-$(eval $(call level_rules,castle_grounds,0x07000000,outside)) # Castle Grounds (Outside Princess Peach's Castle)
-$(eval $(call level_rules,bitdw,0x07000000,sky)) # BitDW (Bowser in the Dark World)
-$(eval $(call level_rules,vcutm,0x07000000,outside)) # VCUTM (Vanish Cap under the Moat)
-$(eval $(call level_rules,bitfs,0x07000000,sky)) # BITFS (Bowser in the Fire Sea)
-$(eval $(call level_rules,sa,0x07000000,inside)) # SA (The Secret Aquarium)
-$(eval $(call level_rules,bits,0x07000000,sky)) # BITS (Bowser in the Sky)
-$(eval $(call level_rules,lll,0x07000000,fire)) # LLL (Lethal Lava Land)
-$(eval $(call level_rules,ddd,0x07000000,water)) # DDD (Dire Dire Docks)
-$(eval $(call level_rules,wf,0x07000000,grass)) # WF (Whomp's Fortress)
-$(eval $(call level_rules,castle_courtyard,0x07000000,outside)) # Castle Courtyard (The Courtyard of Princess Peach's Castle)
-$(eval $(call level_rules,pss,0x07000000,mountain)) # PSS (The Princess's Secret Slide)
-$(eval $(call level_rules,cotmc,0x07000000,cave)) # COTMC (Cavern of the Metal Cap)
-$(eval $(call level_rules,totwc,0x07000000,sky)) # TOTWC (Tower of the Wing Cap)
-$(eval $(call level_rules,bowser_1,0x07000000,generic)) # BOWSER_1 (Bowser in the Dark World [Boss Area])
-$(eval $(call level_rules,wmotr,0x07000000,generic)) # WMOTR (Wing Mario over the Rainbow)
-$(eval $(call level_rules,bowser_2,0x07000000,fire)) # BOWSER_2 (Bowser in the Fire Sea [Boss Area])
-$(eval $(call level_rules,bowser_3,0x07000000,generic)) # BOWSER_3 (Bowser in the Sky [Boss Area])
-$(eval $(call level_rules,totwc,0x07000000,sky)) # TOTWC (Tower of the Wing Cap)
-$(eval $(call level_rules,ttm,0x07000000,mountain)) # TTM (Tall Tall Mountain)
-$(eval $(call level_rules,intro,0x07000000,generic)) # Intro (Super Mario 64 Logo)
-$(eval $(call level_rules,menu,0x07000000,generic)) # Menu (File Select)
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),distclean)
+$(BUILD_DIR)/level_rules.mk: levels/level_rules.mk levels/level_defines.h
+ $(CPP) $(VERSION_CFLAGS) -I . -o $@ $<
+include $(BUILD_DIR)/level_rules.mk
+endif
+endif
+
+# --------------------------------------
+# Extra Level Rules
+# --------------------------------------
+$(eval $(call level_rules,intro,generic)) # Intro (Super Mario 64 Logo)
+$(eval $(call level_rules,menu,generic)) # Menu (File Select)
-# Ending cake texture override
-ifeq ($(VERSION),eu)
-ending_SEG7_FILES := $(patsubst %.png,%.inc.c,$(notdir $(wildcard levels/ending/eu*.png levels/ending/*eu.png)))
-$(BUILD_DIR)/levels/ending/leveldata.o: $(addprefix $(BUILD_DIR)/levels/ending/,$(ending_SEG7_FILES))
-$(BUILD_DIR)/levels/ending/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
-$(BUILD_DIR)/levels/ending/leveldata.elf: TEXTURE_BIN := generic
+# --------------------------------------
+# Cake Texture Rules
+# --------------------------------------
+# Ending cake textures are generated in a special way
$(BUILD_DIR)/levels/ending/cake_eu.inc.c: levels/ending/cake_eu.png
$(SKYCONV) --type cake-eu --split $^ $(BUILD_DIR)/levels/ending
-else
-ending_SEG7_FILES := cake.inc.c
-$(BUILD_DIR)/levels/ending/leveldata.o: $(BUILD_DIR)/levels/ending/cake.inc.c
-$(BUILD_DIR)/levels/ending/leveldata.elf: SEGMENT_ADDRESS := 0x07000000
-$(BUILD_DIR)/levels/ending/leveldata.elf: TEXTURE_BIN := generic
-
$(BUILD_DIR)/levels/ending/cake.inc.c: levels/ending/cake.png
$(SKYCONV) --type cake --split $^ $(BUILD_DIR)/levels/ending
-endif
# --------------------------------------
# Texture Bin Rules
@@ -257,9 +226,9 @@ $(BUILD_DIR)/bin/mountain.elf: SEGMENT_ADDRESS := 0x09000000
$(BUILD_DIR)/bin/grass.elf: SEGMENT_ADDRESS := 0x09000000
# EU segment 19 translations
-$(BUILD_DIR)/bin/$(VERSION)/translation_de.elf: SEGMENT_ADDRESS := 0x19000000
-$(BUILD_DIR)/bin/$(VERSION)/translation_en.elf: SEGMENT_ADDRESS := 0x19000000
-$(BUILD_DIR)/bin/$(VERSION)/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000
+$(BUILD_DIR)/bin/eu/translation_de.elf: SEGMENT_ADDRESS := 0x19000000
+$(BUILD_DIR)/bin/eu/translation_en.elf: SEGMENT_ADDRESS := 0x19000000
+$(BUILD_DIR)/bin/eu/translation_fr.elf: SEGMENT_ADDRESS := 0x19000000
# --------------------------------------
# Skybox Rules
diff --git a/actors/amp/model.inc.c b/actors/amp/model.inc.c
@@ -166,14 +166,10 @@ const Gfx amp_seg8_dl_08002E58[] = {
};
// 0x08002EC8
-static const Ambient amp_seg8_light_08002EC8 = {
- {{0x33, 0x3f, 0x00}, 0, {0x33, 0x3f, 0x00}, 0}
-};
-
-// 0x08002ED0
-static const Light amp_seg8_light_08002ED0 = {
- {{0xcf, 0xff, 0x00}, 0, {0xcf, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 amp_seg8_lights_08002EC8 = gdSPDefLights1(
+ 0x33, 0x3f, 0x00,
+ 0xcf, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// //! Another malformed entry: Vertex interpreted as light
// 0x08002EE0
@@ -401,8 +397,8 @@ static const Vtx amp_seg8_vertex_080038D0[] = {
// 0x08003910 - 0x08003940
const Gfx amp_seg8_dl_08003910[] = {
- gsSPLight(&_seg8_light_08002ED0, 1),
- gsSPLight(&_seg8_light_08002EC8, 2),
+ gsSPLight(&_seg8_lights_08002EC8.l, 1),
+ gsSPLight(&_seg8_lights_08002EC8.a, 2),
gsSPVertex(amp_seg8_vertex_08002EE0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -410,8 +406,8 @@ const Gfx amp_seg8_dl_08003910[] = {
// 0x08003940 - 0x08003970
const Gfx amp_seg8_dl_08003940[] = {
- gsSPLight(&_seg8_light_08002ED0, 1),
- gsSPLight(&_seg8_light_08002EC8, 2),
+ gsSPLight(&_seg8_lights_08002EC8.l, 1),
+ gsSPLight(&_seg8_lights_08002EC8.a, 2),
gsSPVertex(amp_seg8_vertex_08002F40, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -419,8 +415,8 @@ const Gfx amp_seg8_dl_08003940[] = {
// 0x08003970 - 0x080039A0
const Gfx amp_seg8_dl_08003970[] = {
- gsSPLight(&_seg8_light_08002ED0, 1),
- gsSPLight(&_seg8_light_08002EC8, 2),
+ gsSPLight(&_seg8_lights_08002EC8.l, 1),
+ gsSPLight(&_seg8_lights_08002EC8.a, 2),
gsSPVertex(amp_seg8_vertex_08002FA0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -428,8 +424,8 @@ const Gfx amp_seg8_dl_08003970[] = {
// 0x080039A0 - 0x080039D0
const Gfx amp_seg8_dl_080039A0[] = {
- gsSPLight(&_seg8_light_08002ED0, 1),
- gsSPLight(&_seg8_light_08002EC8, 2),
+ gsSPLight(&_seg8_lights_08002EC8.l, 1),
+ gsSPLight(&_seg8_lights_08002EC8.a, 2),
gsSPVertex(amp_seg8_vertex_08003000, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/bird/model.inc.c b/actors/bird/model.inc.c
@@ -1,34 +1,22 @@
// Birds
// 0x05000000
-static const Ambient birds_seg5_light_05000000 = {
- {{0x07, 0x24, 0x2c}, 0, {0x07, 0x24, 0x2c}, 0}
-};
-
-// 0x05000008
-static const Light birds_seg5_light_05000008 = {
- {{0x1d, 0x91, 0xb0}, 0, {0x1d, 0x91, 0xb0}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 birds_seg5_lights_05000000 = gdSPDefLights1(
+ 0x07, 0x24, 0x2c,
+ 0x1d, 0x91, 0xb0, 0x28, 0x28, 0x28
+);
// 0x05000018
-static const Ambient birds_seg5_light_05000018 = {
- {{0x33, 0x27, 0x0d}, 0, {0x33, 0x27, 0x0d}, 0}
-};
-
-// 0x05000020
-static const Light birds_seg5_light_05000020 = {
- {{0xce, 0x9d, 0x34}, 0, {0xce, 0x9d, 0x34}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 birds_seg5_lights_05000018 = gdSPDefLights1(
+ 0x33, 0x27, 0x0d,
+ 0xce, 0x9d, 0x34, 0x28, 0x28, 0x28
+);
// 0x05000030
-static const Ambient birds_seg5_light_05000030 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05000038
-static const Light birds_seg5_light_05000038 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 birds_seg5_lights_05000030 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05000048
static const Vtx birds_seg5_vertex_05000048[] = {
@@ -150,8 +138,8 @@ static const Vtx birds_seg5_vertex_050004C8[] = {
// 0x05000528 - 0x05000598
const Gfx birds_seg5_dl_05000528[] = {
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_05000048, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 5, 3, 6, 0x0),
@@ -163,16 +151,16 @@ const Gfx birds_seg5_dl_05000528[] = {
// 0x05000598 - 0x05000600
const Gfx birds_seg5_dl_05000598[] = {
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_050000D8, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_05000108, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_05000138, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
@@ -180,8 +168,8 @@ const Gfx birds_seg5_dl_05000598[] = {
// 0x05000600 - 0x05000670
const Gfx birds_seg5_dl_05000600[] = {
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_05000168, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 5, 3, 6, 0x0),
@@ -193,8 +181,8 @@ const Gfx birds_seg5_dl_05000600[] = {
// 0x05000670 - 0x050007E0
const Gfx birds_seg5_dl_05000670[] = {
- gsSPLight(&birds_seg5_light_05000008, 1),
- gsSPLight(&birds_seg5_light_05000000, 2),
+ gsSPLight(&birds_seg5_lights_05000000.l, 1),
+ gsSPLight(&birds_seg5_lights_05000000.a, 2),
gsSPVertex(birds_seg5_vertex_050001F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 1, 9, 10, 0x0),
@@ -210,16 +198,16 @@ const Gfx birds_seg5_dl_05000670[] = {
gsSP1Triangle( 7, 6, 15, 0x0),
gsSPVertex(birds_seg5_vertex_050003F8, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&birds_seg5_light_05000038, 1),
- gsSPLight(&birds_seg5_light_05000030, 2),
+ gsSPLight(&birds_seg5_lights_05000030.l, 1),
+ gsSPLight(&birds_seg5_lights_05000030.a, 2),
gsSPVertex(birds_seg5_vertex_05000428, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 0, 7, 0x0, 7, 8, 6, 0x0),
gsSP2Triangles( 9, 7, 2, 0x0, 2, 7, 0, 0x0),
gsSP2Triangles( 2, 3, 9, 0x0, 7, 9, 8, 0x0),
gsSP1Triangle( 5, 4, 1, 0x0),
- gsSPLight(&birds_seg5_light_05000020, 1),
- gsSPLight(&birds_seg5_light_05000018, 2),
+ gsSPLight(&birds_seg5_lights_05000018.l, 1),
+ gsSPLight(&birds_seg5_lights_05000018.a, 2),
gsSPVertex(birds_seg5_vertex_050004C8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP1Triangle( 1, 3, 5, 0x0),
diff --git a/actors/blargg/model.inc.c b/actors/blargg/model.inc.c
@@ -1,54 +1,34 @@
// Blargg (Unused)
-// Unreferenced light
-UNUSED static const Ambient blargg_light_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light blargg_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 blargg_lights_unused = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004740
-static const Ambient blargg_seg5_light_05004740 = {
- {{0x3f, 0x0d, 0x05}, 0, {0x3f, 0x0d, 0x05}, 0}
-};
-
-// 0x05004748
-static const Light blargg_seg5_light_05004748 = {
- {{0xff, 0x36, 0x16}, 0, {0xff, 0x36, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blargg_seg5_lights_05004740 = gdSPDefLights1(
+ 0x3f, 0x0d, 0x05,
+ 0xff, 0x36, 0x16, 0x28, 0x28, 0x28
+);
// 0x05004758
-static const Ambient blargg_seg5_light_05004758 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// 0x05004760
-static const Light blargg_seg5_light_05004760 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blargg_seg5_lights_05004758 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05004770
-static const Ambient blargg_seg5_light_05004770 = {
- {{0x3f, 0x0a, 0x06}, 0, {0x3f, 0x0a, 0x06}, 0}
-};
-
-// 0x05004778
-static const Light blargg_seg5_light_05004778 = {
- {{0xff, 0x2a, 0x1a}, 0, {0xff, 0x2a, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blargg_seg5_lights_05004770 = gdSPDefLights1(
+ 0x3f, 0x0a, 0x06,
+ 0xff, 0x2a, 0x1a, 0x28, 0x28, 0x28
+);
// 0x05004788
-static const Ambient blargg_seg5_light_05004788 = {
- {{0x3f, 0x0b, 0x07}, 0, {0x3f, 0x0b, 0x07}, 0}
-};
-
-// 0x05004790
-static const Light blargg_seg5_light_05004790 = {
- {{0xff, 0x2e, 0x1f}, 0, {0xff, 0x2e, 0x1f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blargg_seg5_lights_05004788 = gdSPDefLights1(
+ 0x3f, 0x0b, 0x07,
+ 0xff, 0x2e, 0x1f, 0x28, 0x28, 0x28
+);
// 0x050047A0
static const Vtx blargg_seg5_vertex_050047A0[] = {
@@ -403,8 +383,8 @@ static const Vtx blargg_seg5_vertex_050057E0[] = {
// 0x050058D0 - 0x05005A60
const Gfx blargg_seg5_dl_050058D0[] = {
- gsSPLight(&blargg_seg5_light_05004760, 1),
- gsSPLight(&blargg_seg5_light_05004758, 2),
+ gsSPLight(&blargg_seg5_lights_05004758.l, 1),
+ gsSPLight(&blargg_seg5_lights_05004758.a, 2),
gsSPVertex(blargg_seg5_vertex_050047A0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -418,8 +398,8 @@ const Gfx blargg_seg5_dl_050058D0[] = {
gsSPVertex(blargg_seg5_vertex_050049A0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&blargg_seg5_light_05004748, 1),
- gsSPLight(&blargg_seg5_light_05004740, 2),
+ gsSPLight(&blargg_seg5_lights_05004740.l, 1),
+ gsSPLight(&blargg_seg5_lights_05004740.a, 2),
gsSPVertex(blargg_seg5_vertex_05004A20, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -438,8 +418,8 @@ const Gfx blargg_seg5_dl_050058D0[] = {
// 0x05005A60 - 0x05005D00
const Gfx blargg_seg5_dl_05005A60[] = {
- gsSPLight(&blargg_seg5_light_05004760, 1),
- gsSPLight(&blargg_seg5_light_05004758, 2),
+ gsSPLight(&blargg_seg5_lights_05004758.l, 1),
+ gsSPLight(&blargg_seg5_lights_05004758.a, 2),
gsSPVertex(blargg_seg5_vertex_05004BE0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -453,8 +433,8 @@ const Gfx blargg_seg5_dl_05005A60[] = {
gsSPVertex(blargg_seg5_vertex_05004DE0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&blargg_seg5_light_05004778, 1),
- gsSPLight(&blargg_seg5_light_05004770, 2),
+ gsSPLight(&blargg_seg5_lights_05004770.l, 1),
+ gsSPLight(&blargg_seg5_lights_05004770.a, 2),
gsSPVertex(blargg_seg5_vertex_05004E60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 2, 6, 7, 0x0, 2, 7, 8, 0x0),
@@ -492,8 +472,8 @@ const Gfx blargg_seg5_dl_05005A60[] = {
// 0x05005D00 - 0x05005EB8
const Gfx blargg_seg5_dl_05005D00[] = {
- gsSPLight(&blargg_seg5_light_05004790, 1),
- gsSPLight(&blargg_seg5_light_05004788, 2),
+ gsSPLight(&blargg_seg5_lights_05004788.l, 1),
+ gsSPLight(&blargg_seg5_lights_05004788.a, 2),
gsSPVertex(blargg_seg5_vertex_050053E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/blue_coin_switch/model.inc.c b/actors/blue_coin_switch/model.inc.c
@@ -1,14 +1,10 @@
// Blue Coin Switch
// 0x08000000
-static const Ambient blue_coin_switch_seg8_light_08000000 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x08000008
-static const Light blue_coin_switch_seg8_light_08000008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blue_coin_switch_seg8_lights_08000000 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08000018
ALIGNED8 static const u8 blue_coin_switch_seg8_texture_08000018[] = {
@@ -53,8 +49,8 @@ const Gfx blue_coin_switch_seg8_dl_08000D58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_coin_switch_seg8_texture_08000018),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&blue_coin_switch_seg8_light_08000008, 1),
- gsSPLight(&blue_coin_switch_seg8_light_08000000, 2),
+ gsSPLight(&blue_coin_switch_seg8_lights_08000000.l, 1),
+ gsSPLight(&blue_coin_switch_seg8_lights_08000000.a, 2),
gsSPVertex(blue_coin_switch_seg8_vertex_08000C18, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/actors/blue_fish/model.inc.c b/actors/blue_fish/model.inc.c
@@ -1,14 +1,10 @@
// Blue Fish
// 0x0301B5C8
-static const Ambient blue_fish_seg3_light_0301B5C8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0301B5D0
-static const Light blue_fish_seg3_light_0301B5D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 blue_fish_seg3_lights_0301B5C8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0301B5E0
ALIGNED8 static const u8 blue_fish_seg3_texture_0301B5E0[] = {
@@ -38,8 +34,8 @@ const Gfx blue_fish_seg3_dl_0301BEC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&blue_fish_seg3_light_0301B5D0, 1),
- gsSPLight(&blue_fish_seg3_light_0301B5C8, 2),
+ gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),
+ gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),
gsSPVertex(blue_fish_seg3_vertex_0301BDE0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 5, 0, 3, 0x0, 2, 6, 0, 0x0),
@@ -90,8 +86,8 @@ const Gfx blue_fish_seg3_dl_0301C0A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, blue_fish_seg3_texture_0301B5E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&blue_fish_seg3_light_0301B5D0, 1),
- gsSPLight(&blue_fish_seg3_light_0301B5C8, 2),
+ gsSPLight(&blue_fish_seg3_lights_0301B5C8.l, 1),
+ gsSPLight(&blue_fish_seg3_lights_0301B5C8.a, 2),
gsSPVertex(blue_fish_seg3_vertex_0301C018, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 4, 5, 2, 0x0, 2, 5, 6, 0x0),
diff --git a/actors/bobomb/model.inc.c b/actors/bobomb/model.inc.c
@@ -168,34 +168,22 @@ const Gfx bobomb_seg8_dl_08022D78[] = {
};
// 0x08022DE8
-static const Ambient bobomb_seg8_light_08022DE8 = {
- {{0x3f, 0x26, 0x04}, 0, {0x3f, 0x26, 0x04}, 0}
-};
-
-// 0x08022DF0
-static const Light bobomb_seg8_light_08022DF0 = {
- {{0xff, 0x99, 0x12}, 0, {0xff, 0x99, 0x12}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bobomb_seg8_lights_08022DE8 = gdSPDefLights1(
+ 0x3f, 0x26, 0x04,
+ 0xff, 0x99, 0x12, 0x28, 0x28, 0x28
+);
// 0x08022E00
-static const Ambient bobomb_seg8_light_08022E00 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
+static const Lights1 bobomb_seg8_lights_08022E00 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
-// 0x08022E08
-static const Light bobomb_seg8_light_08022E08 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient bobomb_light_1 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light bobomb_light_2 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+static const Lights1 bobomb_lights_unused = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x08022E30
static const Vtx bobomb_seg8_vertex_08022E30[] = {
@@ -291,8 +279,8 @@ static const Vtx bobomb_seg8_vertex_08023190[] = {
// 0x08023270 - 0x08023378
const Gfx bobomb_seg8_dl_08023270[] = {
- gsSPLight(&bobomb_seg8_light_08022DF0, 1),
- gsSPLight(&bobomb_seg8_light_08022DE8, 2),
+ gsSPLight(&bobomb_seg8_lights_08022DE8.l, 1),
+ gsSPLight(&bobomb_seg8_lights_08022DE8.a, 2),
gsSPVertex(bobomb_seg8_vertex_08022E30, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -314,8 +302,8 @@ const Gfx bobomb_seg8_dl_08023270[] = {
// 0x08023378 - 0x08023480
const Gfx bobomb_seg8_dl_08023378[] = {
- gsSPLight(&bobomb_seg8_light_08022DF0, 1),
- gsSPLight(&bobomb_seg8_light_08022DE8, 2),
+ gsSPLight(&bobomb_seg8_lights_08022DE8.l, 1),
+ gsSPLight(&bobomb_seg8_lights_08022DE8.a, 2),
gsSPVertex(bobomb_seg8_vertex_08022F70, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -337,8 +325,8 @@ const Gfx bobomb_seg8_dl_08023378[] = {
// 0x08023480 - 0x08023528
const Gfx bobomb_seg8_dl_08023480[] = {
- gsSPLight(&bobomb_seg8_light_08022E08, 1),
- gsSPLight(&bobomb_seg8_light_08022E00, 2),
+ gsSPLight(&bobomb_seg8_lights_08022E00.l, 1),
+ gsSPLight(&bobomb_seg8_lights_08022E00.a, 2),
gsSPVertex(bobomb_seg8_vertex_080230B0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 4, 3, 5, 0x0),
diff --git a/actors/bomb/model.inc.c b/actors/bomb/model.inc.c
@@ -1,14 +1,10 @@
// Bomb
// 0x06057AA8
-static const Ambient bomb_seg6_light_06057AA8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06057AB0
-static const Light bomb_seg6_light_06057AB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bomb_seg6_lights_06057AA8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06057AC0
ALIGNED8 static const u8 bomb_seg6_texture_06057AC0[] = {
@@ -177,8 +173,8 @@ const Gfx bomb_seg6_dl_0605A8A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bomb_seg6_texture_06059AC0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bomb_seg6_light_06057AB0, 1),
- gsSPLight(&bomb_seg6_light_06057AA8, 2),
+ gsSPLight(&bomb_seg6_lights_06057AA8.l, 1),
+ gsSPLight(&bomb_seg6_lights_06057AA8.a, 2),
gsSPVertex(bomb_seg6_vertex_0605A340, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/boo/model.inc.c b/actors/boo/model.inc.c
@@ -1,14 +1,10 @@
// Boo
// 0x05009B28
-static const Ambient boo_seg5_light_05009B28 = {
- {{0x97, 0x9a, 0xff}, 0, {0x97, 0x9a, 0xff}, 0}
-};
-
-// 0x05009B30
-static const Light boo_seg5_light_05009B30 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 boo_seg5_lights_05009B28 = gdSPDefLights1(
+ 0x97, 0x9a, 0xff,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05009B40
ALIGNED8 static const u8 boo_seg5_texture_05009B40[] = {
@@ -265,8 +261,8 @@ const Gfx boo_seg5_dl_0500BEE0[] = {
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&boo_seg5_light_05009B30, 1),
- gsSPLight(&boo_seg5_light_05009B28, 2),
+ gsSPLight(&boo_seg5_lights_05009B28.l, 1),
+ gsSPLight(&boo_seg5_lights_05009B28.a, 2),
gsSPVertex(boo_seg5_vertex_0500B340, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -338,7 +334,7 @@ const Gfx boo_seg5_dl_0500BFA0[] = {
const Gfx boo_seg5_dl_0500C1B0[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
diff --git a/actors/boo_castle/model.inc.c b/actors/boo_castle/model.inc.c
@@ -1,14 +1,10 @@
// Boo (Castle)
// 0x06015658
-static const Ambient boo_castle_seg6_light_06015658 = {
- {{0x97, 0x9a, 0xff}, 0, {0x97, 0x9a, 0xff}, 0}
-};
-
-// 0x06015660
-static const Light boo_castle_seg6_light_06015660 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 boo_castle_seg6_lights_06015658 = gdSPDefLights1(
+ 0x97, 0x9a, 0xff,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06015670
ALIGNED8 static const u8 boo_castle_seg6_texture_06015670[] = {
@@ -265,8 +261,8 @@ const Gfx boo_castle_seg6_dl_06017A10[] = {
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&boo_castle_seg6_light_06015660, 1),
- gsSPLight(&boo_castle_seg6_light_06015658, 2),
+ gsSPLight(&boo_castle_seg6_lights_06015658.l, 1),
+ gsSPLight(&boo_castle_seg6_lights_06015658.a, 2),
gsSPVertex(boo_castle_seg6_vertex_06016E70, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -338,7 +334,7 @@ const Gfx boo_castle_seg6_dl_06017AD0[] = {
const Gfx boo_castle_seg6_dl_06017CE0[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_BLENDRGBFADEA, G_CC_BLENDRGBFADEA),
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
diff --git a/actors/book/model.inc.c b/actors/book/model.inc.c
@@ -3,14 +3,10 @@
// This actor file requires including actor bookend because of bookend_seg5_texture_05000C60
// 0x05002558
-static const Ambient book_seg5_light_05002558 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05002560
-static const Light book_seg5_light_05002560 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 book_seg5_lights_05002558 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05002570
ALIGNED8 static const u8 book_seg5_texture_05002570[] = {
@@ -54,8 +50,8 @@ const Gfx book_seg5_dl_05002EF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000C60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&book_seg5_light_05002560, 1),
- gsSPLight(&book_seg5_light_05002558, 2),
+ gsSPLight(&book_seg5_lights_05002558.l, 1),
+ gsSPLight(&book_seg5_lights_05002558.a, 2),
gsSPVertex(book_seg5_vertex_05002D70, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/bookend/model.inc.c b/actors/bookend/model.inc.c
@@ -1,44 +1,28 @@
// Bookend
-// Unreferenced Light
-UNUSED static const Ambient bookend_light_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Light bookend_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Ambient bookend_light_3 = {
- {{0x03, 0x19, 0x09}, 0, {0x03, 0x19, 0x09}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Light bookend_light_4 = {
- {{0x0c, 0x66, 0x26}, 0, {0x0c, 0x66, 0x26}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Ambient bookend_light_5 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Light bookend_light_6 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Ambient bookend_light_7 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced Light
-UNUSED static const Light bookend_light_8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 bookend_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 bookend_lights_unused2 = gdSPDefLights1(
+ 0x03, 0x19, 0x09,
+ 0x0c, 0x66, 0x26, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 bookend_lights_unused3 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 bookend_lights_unused4 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000060
ALIGNED8 static const u8 bookend_seg5_texture_05000060[] = {
@@ -66,14 +50,10 @@ ALIGNED8 static const u8 bookend_seg5_texture_05001060[] = {
};
// 0x05001860
-static const Ambient bookend_seg5_light_05001860 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001868
-static const Light bookend_seg5_light_05001868 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_05001860 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001878
static const Vtx bookend_seg5_vertex_05001878[] = {
@@ -96,8 +76,8 @@ const Gfx bookend_seg5_dl_050018F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000060),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_05001868, 1),
- gsSPLight(&bookend_seg5_light_05001860, 2),
+ gsSPLight(&bookend_seg5_lights_05001860.l, 1),
+ gsSPLight(&bookend_seg5_lights_05001860.a, 2),
gsSPVertex(bookend_seg5_vertex_05001878, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -136,14 +116,10 @@ const Gfx bookend_seg5_dl_05001978[] = {
};
// 0x05001A08
-static const Ambient bookend_seg5_light_05001A08 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001A10
-static const Light bookend_seg5_light_05001A10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_05001A08 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001A20
static const Vtx bookend_seg5_vertex_05001A20[] = {
@@ -166,8 +142,8 @@ const Gfx bookend_seg5_dl_05001AA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000060),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_05001A10, 1),
- gsSPLight(&bookend_seg5_light_05001A08, 2),
+ gsSPLight(&bookend_seg5_lights_05001A08.l, 1),
+ gsSPLight(&bookend_seg5_lights_05001A08.a, 2),
gsSPVertex(bookend_seg5_vertex_05001A20, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -206,14 +182,10 @@ const Gfx bookend_seg5_dl_05001B20[] = {
};
// 0x05001BB0
-static const Ambient bookend_seg5_light_05001BB0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001BB8
-static const Light bookend_seg5_light_05001BB8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_05001BB0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001BC8
static const Vtx bookend_seg5_vertex_05001BC8[] = {
@@ -244,8 +216,8 @@ const Gfx bookend_seg5_dl_05001CC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000860),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_05001BB8, 1),
- gsSPLight(&bookend_seg5_light_05001BB0, 2),
+ gsSPLight(&bookend_seg5_lights_05001BB0.l, 1),
+ gsSPLight(&bookend_seg5_lights_05001BB0.a, 2),
gsSPVertex(bookend_seg5_vertex_05001BC8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -283,14 +255,10 @@ const Gfx bookend_seg5_dl_05001D68[] = {
};
// 0x05001DE0
-static const Ambient bookend_seg5_light_05001DE0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001DE8
-static const Light bookend_seg5_light_05001DE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_05001DE0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001DF8
static const Vtx bookend_seg5_vertex_05001DF8[] = {
@@ -321,8 +289,8 @@ const Gfx bookend_seg5_dl_05001EF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000860),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_05001DE8, 1),
- gsSPLight(&bookend_seg5_light_05001DE0, 2),
+ gsSPLight(&bookend_seg5_lights_05001DE0.l, 1),
+ gsSPLight(&bookend_seg5_lights_05001DE0.a, 2),
gsSPVertex(bookend_seg5_vertex_05001DF8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -360,14 +328,10 @@ const Gfx bookend_seg5_dl_05001F98[] = {
};
// 0x05002010
-static const Ambient bookend_seg5_light_05002010 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05002018
-static const Light bookend_seg5_light_05002018 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_05002010 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05002028
static const Vtx bookend_seg5_vertex_05002028[] = {
@@ -390,8 +354,8 @@ const Gfx bookend_seg5_dl_050020E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000460),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_05002018, 1),
- gsSPLight(&bookend_seg5_light_05002010, 2),
+ gsSPLight(&bookend_seg5_lights_05002010.l, 1),
+ gsSPLight(&bookend_seg5_lights_05002010.a, 2),
gsSPVertex(bookend_seg5_vertex_05002028, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -417,14 +381,10 @@ const Gfx bookend_seg5_dl_05002140[] = {
};
// 0x050021B0
-static const Ambient bookend_seg5_light_050021B0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x050021B8
-static const Light bookend_seg5_light_050021B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bookend_seg5_lights_050021B0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050021C8
static const Vtx bookend_seg5_vertex_050021C8[] = {
@@ -447,8 +407,8 @@ const Gfx bookend_seg5_dl_05002288[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bookend_seg5_texture_05000460),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bookend_seg5_light_050021B8, 1),
- gsSPLight(&bookend_seg5_light_050021B0, 2),
+ gsSPLight(&bookend_seg5_lights_050021B0.l, 1),
+ gsSPLight(&bookend_seg5_lights_050021B0.a, 2),
gsSPVertex(bookend_seg5_vertex_050021C8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/bowser/model.inc.c b/actors/bowser/model.inc.c
@@ -148,34 +148,22 @@ ALIGNED8 static const u8 bowser_seg6_texture_06037C38[] = {
};
// 0x06038C38
-static const Ambient bowser_seg6_light_06038C38 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06038C40
-static const Light bowser_seg6_light_06038C40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient bowser_light_1 = {
- {{0x33, 0x31, 0x00}, 0, {0x33, 0x31, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light bowser_light_2 = {
- {{0xce, 0xc7, 0x00}, 0, {0xce, 0xc7, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient bowser_light_3 = {
- {{0x34, 0x34, 0x00}, 0, {0x34, 0x34, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light bowser_light_4 = {
- {{0xd2, 0xd2, 0x00}, 0, {0xd2, 0xd2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bowser_seg6_lights_06038C38 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 bowser_lights_unused1 = gdSPDefLights1(
+ 0x33, 0x31, 0x00,
+ 0xce, 0xc7, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 bowser_lights_unused2 = gdSPDefLights1(
+ 0x34, 0x34, 0x00,
+ 0xd2, 0xd2, 0x00, 0x28, 0x28, 0x28
+);
// 0x06038C80
static const Vtx bowser_seg6_vertex_06038C80[] = {
@@ -279,8 +267,8 @@ const Gfx bowser_seg6_dl_06039110[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_06038C80, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -451,8 +439,8 @@ const Gfx bowser_seg6_dl_06039808[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_06039368, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -683,8 +671,8 @@ const Gfx bowser_seg6_dl_0603A210[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_06039A60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 2, 1, 5, 0x0),
@@ -959,8 +947,8 @@ const Gfx bowser_seg6_dl_0603AED8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603A568, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 5, 8, 0x0),
@@ -1144,8 +1132,8 @@ const Gfx bowser_seg6_dl_0603B718[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603B288, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 5, 3, 4, 0x0),
@@ -1322,8 +1310,8 @@ const Gfx bowser_seg6_dl_0603BDF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603B948, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 6, 5, 0x0),
@@ -1495,8 +1483,8 @@ const Gfx bowser_seg6_dl_0603C500[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603C050, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 7, 0x0, 3, 7, 4, 0x0),
@@ -1730,8 +1718,8 @@ const Gfx bowser_seg6_dl_0603CF28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603C758, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 5, 0, 4, 0x0, 0, 2, 6, 0x0),
@@ -2021,8 +2009,8 @@ const Gfx bowser_seg6_dl_0603DC70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603D280, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 8, 0x0),
@@ -2211,8 +2199,8 @@ const Gfx bowser_seg6_dl_0603E500[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603E030, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2690,8 +2678,8 @@ const Gfx bowser_seg6_dl_0603FBA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06023C38),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_0603E718, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -3404,8 +3392,8 @@ const Gfx bowser_seg6_dl_06041A28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06028438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_060402D8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -3961,8 +3949,8 @@ const Gfx bowser_seg6_dl_06042EE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06020C38),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_06042660, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 6, 7, 3, 0x0),
@@ -4119,8 +4107,8 @@ const Gfx bowser_seg6_dl_06043548[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_seg6_texture_06022438),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_seg6_light_06038C40, 1),
- gsSPLight(&bowser_seg6_light_06038C38, 2),
+ gsSPLight(&bowser_seg6_lights_06038C38.l, 1),
+ gsSPLight(&bowser_seg6_lights_06038C38.a, 2),
gsSPVertex(bowser_seg6_vertex_06043278, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 0, 5, 1, 0x0),
diff --git a/actors/bowser_key/model.inc.c b/actors/bowser_key/model.inc.c
@@ -1,14 +1,10 @@
// Bowser Key
-// 0x030156E0, solid color brown
-static const Ambient bowser_key_amb_light = {
- {{0x3f, 0x2c, 0x00}, 0, {0x3f, 0x2c, 0x00}, 0}
-};
-
-// 0x030156E8, solid color orange
-static const Light bowser_key_diff_light = {
- {{0xff, 0xb2, 0x00}, 0, {0xff, 0xb2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x030156E0, ambient color brown - light color orange
+static const Lights1 bowser_key_lights = gdSPDefLights1(
+ 0x3f, 0x2c, 0x00,
+ 0xff, 0xb2, 0x00, 0x28, 0x28, 0x28
+);
// 0x030156F8
static const Vtx bowser_key_dl_vertex_group1[] = {
@@ -236,8 +232,8 @@ static const Vtx bowser_key_dl_vertex_group12[] = {
// 0x030161F8 - 0x03016530
const Gfx bowser_key_dl[] = {
- gsSPLight(&bowser_key_diff_light, 1),
- gsSPLight(&bowser_key_amb_light, 2),
+ gsSPLight(&bowser_key_lights.l, 1),
+ gsSPLight(&bowser_key_lights.a, 2),
gsSPVertex(bowser_key_dl_vertex_group1, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/breakable_box/model.inc.c b/actors/breakable_box/model.inc.c
@@ -1,14 +1,10 @@
// Breakable Box
// 0x08011A78
-static const Ambient breakable_box_seg8_light_08011A78 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x08011A80
-static const Light breakable_box_seg8_light_08011A80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 breakable_box_seg8_lights_08011A80 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08011A90
ALIGNED8 static const u8 breakable_box_seg8_texture_08011A90[] = {
@@ -56,8 +52,8 @@ static const Vtx breakable_box_seg8_vertex_08012B80[] = {
// 0x08012C30 - 0x08012CD8
const Gfx breakable_box_seg8_dl_08012C30[] = {
- gsSPLight(&breakable_box_seg8_light_08011A80, 1),
- gsSPLight(&breakable_box_seg8_light_08011A78, 2),
+ gsSPLight(&breakable_box_seg8_lights_08011A80.l, 1),
+ gsSPLight(&breakable_box_seg8_lights_08011A80.a, 2),
gsSPVertex(breakable_box_seg8_vertex_08012A90, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/bub/model.inc.c b/actors/bub/model.inc.c
@@ -1,24 +1,16 @@
// Bub
// 0x0600E278
-static const Ambient bub_seg6_light_0600E278 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0600E280
-static const Light bub_seg6_light_0600E280 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bub_seg6_lights_0600E280 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600E290
-static const Ambient bub_seg6_light_0600E290 = {
- {{0x3f, 0x1d, 0x25}, 0, {0x3f, 0x1d, 0x25}, 0}
-};
-
-// 0x0600E298
-static const Light bub_seg6_light_0600E298 = {
- {{0xff, 0x75, 0x94}, 0, {0xff, 0x75, 0x94}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bub_seg6_lights_0600E290 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x25,
+ 0xff, 0x75, 0x94, 0x28, 0x28, 0x28
+);
// 0x0600E2A8
ALIGNED8 static const u8 bub_seg6_texture_0600E2A8[] = {
@@ -171,8 +163,8 @@ const Gfx bub_seg6_dl_06011848[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600E2A8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bub_seg6_light_0600E280, 1),
- gsSPLight(&bub_seg6_light_0600E278, 2),
+ gsSPLight(&bub_seg6_lights_0600E280.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E280.a, 2),
gsSPVertex(bub_seg6_vertex_060112A8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
@@ -230,8 +222,8 @@ const Gfx bub_seg6_dl_06011968[] = {
// 0x06011A50 - 0x06011B28
const Gfx bub_seg6_dl_06011A50[] = {
- gsSPLight(&bub_seg6_light_0600E298, 1),
- gsSPLight(&bub_seg6_light_0600E290, 2),
+ gsSPLight(&bub_seg6_lights_0600E290.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E290.a, 2),
gsSPVertex(bub_seg6_vertex_06011718, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 1, 3, 4, 0x0),
@@ -240,8 +232,8 @@ const Gfx bub_seg6_dl_06011A50[] = {
gsSP2Triangles( 8, 9, 10, 0x0, 8, 5, 0, 0x0),
gsSP2Triangles( 0, 11, 8, 0x0, 8, 10, 5, 0x0),
gsSP2Triangles( 5, 10, 6, 0x0, 10, 9, 6, 0x0),
- gsSPLight(&bub_seg6_light_0600E280, 1),
- gsSPLight(&bub_seg6_light_0600E278, 2),
+ gsSPLight(&bub_seg6_lights_0600E280.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E280.a, 2),
gsSPVertex(bub_seg6_vertex_060117D8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 5, 0x0, 2, 5, 6, 0x0),
@@ -292,8 +284,8 @@ const Gfx bub_seg6_dl_06011C58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bub_seg6_light_0600E280, 1),
- gsSPLight(&bub_seg6_light_0600E278, 2),
+ gsSPLight(&bub_seg6_lights_0600E280.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E280.a, 2),
gsSPVertex(bub_seg6_vertex_06011BD8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 5, 6, 0x0),
@@ -336,8 +328,8 @@ const Gfx bub_seg6_dl_06011DC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bub_seg6_light_0600E280, 1),
- gsSPLight(&bub_seg6_light_0600E278, 2),
+ gsSPLight(&bub_seg6_lights_0600E280.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E280.a, 2),
gsSPVertex(bub_seg6_vertex_06011D50, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 2, 4, 0, 0x0, 3, 2, 1, 0x0),
@@ -379,8 +371,8 @@ const Gfx bub_seg6_dl_06011F18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bub_seg6_texture_0600EAA8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bub_seg6_light_0600E280, 1),
- gsSPLight(&bub_seg6_light_0600E278, 2),
+ gsSPLight(&bub_seg6_lights_0600E280.l, 1),
+ gsSPLight(&bub_seg6_lights_0600E280.a, 2),
gsSPVertex(bub_seg6_vertex_06011EA8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 0, 5, 6, 0x0),
diff --git a/actors/bubba/model.inc.c b/actors/bubba/model.inc.c
@@ -34,34 +34,22 @@ ALIGNED8 static const u8 bubba_seg5_texture_05002408[] = {
};
// 0x05004408
-static const Ambient bubba_seg5_light_05004408 = {
- {{0x48, 0x31, 0x2a}, 0, {0x48, 0x31, 0x2a}, 0}
-};
-
-// 0x05004410
-static const Light bubba_seg5_light_05004410 = {
- {{0xf1, 0xa6, 0x8c}, 0, {0xf1, 0xa6, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004408 = gdSPDefLights1(
+ 0x48, 0x31, 0x2a,
+ 0xf1, 0xa6, 0x8c, 0x28, 0x28, 0x28
+);
// 0x05004420
-static const Ambient bubba_seg5_light_05004420 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x05004428
-static const Light bubba_seg5_light_05004428 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004420 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004438
-static const Ambient bubba_seg5_light_05004438 = {
- {{0x10, 0x07, 0x08}, 0, {0x10, 0x07, 0x08}, 0}
-};
-
-// 0x05004440
-static const Light bubba_seg5_light_05004440 = {
- {{0x36, 0x1a, 0x1c}, 0, {0x36, 0x1a, 0x1c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004438 = gdSPDefLights1(
+ 0x10, 0x07, 0x08,
+ 0x36, 0x1a, 0x1c, 0x28, 0x28, 0x28
+);
// 0x05004450
static const Vtx bubba_seg5_vertex_05004450[] = {
@@ -199,8 +187,8 @@ const Gfx bubba_seg5_dl_05004A40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05000008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bubba_seg5_light_05004410, 1),
- gsSPLight(&bubba_seg5_light_05004408, 2),
+ gsSPLight(&bubba_seg5_lights_05004408.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004408.a, 2),
gsSPVertex(bubba_seg5_vertex_05004450, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 1, 3, 0x0, 5, 1, 4, 0x0),
@@ -213,8 +201,8 @@ const Gfx bubba_seg5_dl_05004AA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001408),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bubba_seg5_light_05004428, 1),
- gsSPLight(&bubba_seg5_light_05004420, 2),
+ gsSPLight(&bubba_seg5_lights_05004420.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004420.a, 2),
gsSPVertex(bubba_seg5_vertex_050044C0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 5, 0, 4, 0x0),
@@ -274,8 +262,8 @@ const Gfx bubba_seg5_dl_05004C40[] = {
// 0x05004D48 - 0x05004E80
const Gfx bubba_seg5_dl_05004D48[] = {
- gsSPLight(&bubba_seg5_light_05004410, 1),
- gsSPLight(&bubba_seg5_light_05004408, 2),
+ gsSPLight(&bubba_seg5_lights_05004408.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004408.a, 2),
gsSPVertex(bubba_seg5_vertex_05004870, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 4, 6, 5, 0x0),
@@ -284,16 +272,16 @@ const Gfx bubba_seg5_dl_05004D48[] = {
gsSP2Triangles(10, 11, 7, 0x0, 3, 7, 0, 0x0),
gsSP2Triangles( 0, 11, 1, 0x0, 6, 10, 9, 0x0),
gsSP2Triangles(12, 10, 6, 0x0, 12, 11, 10, 0x0),
- gsSPLight(&bubba_seg5_light_05004440, 1),
- gsSPLight(&bubba_seg5_light_05004438, 2),
+ gsSPLight(&bubba_seg5_lights_05004438.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004438.a, 2),
gsSPVertex(bubba_seg5_vertex_05004940, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 7, 0x0, 5, 6, 3, 0x0),
gsSP2Triangles( 3, 8, 4, 0x0, 7, 6, 5, 0x0),
gsSP2Triangles( 8, 2, 1, 0x0, 8, 1, 0, 0x0),
gsSP1Triangle( 4, 8, 0, 0x0),
- gsSPLight(&bubba_seg5_light_05004428, 1),
- gsSPLight(&bubba_seg5_light_05004420, 2),
+ gsSPLight(&bubba_seg5_lights_05004420.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004420.a, 2),
gsSPVertex(bubba_seg5_vertex_050049D0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 5, 3, 0x0),
@@ -328,34 +316,22 @@ const Gfx bubba_seg5_dl_05004E80[] = {
};
// 0x05004F30
-static const Ambient bubba_seg5_light_05004F30 = {
- {{0x48, 0x31, 0x2a}, 0, {0x48, 0x31, 0x2a}, 0}
-};
-
-// 0x05004F38
-static const Light bubba_seg5_light_05004F38 = {
- {{0xf1, 0xa6, 0x8c}, 0, {0xf1, 0xa6, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004F30 = gdSPDefLights1(
+ 0x48, 0x31, 0x2a,
+ 0xf1, 0xa6, 0x8c, 0x28, 0x28, 0x28
+);
// 0x05004F48
-static const Ambient bubba_seg5_light_05004F48 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x05004F50
-static const Light bubba_seg5_light_05004F50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004F50 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004F60
-static const Ambient bubba_seg5_light_05004F60 = {
- {{0x0a, 0x07, 0x08}, 0, {0x0a, 0x07, 0x08}, 0}
-};
-
-// 0x05004F68
-static const Light bubba_seg5_light_05004F68 = {
- {{0x22, 0x1a, 0x1c}, 0, {0x22, 0x1a, 0x1c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bubba_seg5_lights_05004F60 = gdSPDefLights1(
+ 0x0a, 0x07, 0x08,
+ 0x22, 0x1a, 0x1c, 0x28, 0x28, 0x28
+);
// 0x05004F78
static const Vtx bubba_seg5_vertex_05004F78[] = {
@@ -490,8 +466,8 @@ const Gfx bubba_seg5_dl_05005538[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05000008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bubba_seg5_light_05004F38, 1),
- gsSPLight(&bubba_seg5_light_05004F30, 2),
+ gsSPLight(&bubba_seg5_lights_05004F30.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004F30.a, 2),
gsSPVertex(bubba_seg5_vertex_05004F78, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 4, 0, 5, 0x0, 5, 0, 2, 0x0),
@@ -504,8 +480,8 @@ const Gfx bubba_seg5_dl_050055A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bubba_seg5_texture_05001408),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bubba_seg5_light_05004F50, 1),
- gsSPLight(&bubba_seg5_light_05004F48, 2),
+ gsSPLight(&bubba_seg5_lights_05004F50.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004F50.a, 2),
gsSPVertex(bubba_seg5_vertex_05004FE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 6, 5, 0, 0x0),
@@ -565,8 +541,8 @@ const Gfx bubba_seg5_dl_05005738[] = {
// 0x05005840 - 0x05005978
const Gfx bubba_seg5_dl_05005840[] = {
- gsSPLight(&bubba_seg5_light_05004F38, 1),
- gsSPLight(&bubba_seg5_light_05004F30, 2),
+ gsSPLight(&bubba_seg5_lights_05004F30.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004F30.a, 2),
gsSPVertex(bubba_seg5_vertex_05005368, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 5, 2, 1, 0x0, 1, 6, 5, 0x0),
@@ -575,16 +551,16 @@ const Gfx bubba_seg5_dl_05005840[] = {
gsSP2Triangles(11, 6, 1, 0x0, 9, 10, 8, 0x0),
gsSP2Triangles(12, 5, 9, 0x0, 7, 5, 12, 0x0),
gsSP2Triangles( 9, 8, 12, 0x0, 0, 11, 1, 0x0),
- gsSPLight(&bubba_seg5_light_05004F68, 1),
- gsSPLight(&bubba_seg5_light_05004F60, 2),
+ gsSPLight(&bubba_seg5_lights_05004F60.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004F60.a, 2),
gsSPVertex(bubba_seg5_vertex_05005438, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 6, 4, 3, 0x0),
gsSP2Triangles( 3, 7, 6, 0x0, 3, 8, 7, 0x0),
gsSP2Triangles( 7, 8, 0, 0x0, 8, 1, 0, 0x0),
gsSP1Triangle( 8, 2, 1, 0x0),
- gsSPLight(&bubba_seg5_light_05004F50, 1),
- gsSPLight(&bubba_seg5_light_05004F48, 2),
+ gsSPLight(&bubba_seg5_lights_05004F50.l, 1),
+ gsSPLight(&bubba_seg5_lights_05004F50.a, 2),
gsSPVertex(bubba_seg5_vertex_050054C8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 6, 0, 0x0),
diff --git a/actors/bullet_bill/model.inc.c b/actors/bullet_bill/model.inc.c
@@ -1,14 +1,10 @@
// Bullet Bill
// 0x0500BA90
-static const Ambient bullet_bill_seg5_light_0500BA90 = {
- {{0x06, 0x07, 0x14}, 0, {0x06, 0x07, 0x14}, 0}
-};
-
-// 0x0500BA98
-static const Light bullet_bill_seg5_light_0500BA98 = {
- {{0x19, 0x1c, 0x52}, 0, {0x19, 0x1c, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bullet_bill_seg5_lights_0500BA90 = gdSPDefLights1(
+ 0x06, 0x07, 0x14,
+ 0x19, 0x1c, 0x52, 0x28, 0x28, 0x28
+);
// 0x0500BAA8
ALIGNED8 static const u8 bullet_bill_seg5_texture_0500BAA8[] = {
@@ -259,8 +255,8 @@ const Gfx bullet_bill_seg5_dl_0500E5E8[] = {
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bullet_bill_seg5_light_0500BA98, 1),
- gsSPLight(&bullet_bill_seg5_light_0500BA90, 2),
+ gsSPLight(&bullet_bill_seg5_lights_0500BA90.l, 1),
+ gsSPLight(&bullet_bill_seg5_lights_0500BA90.a, 2),
gsSPVertex(bullet_bill_seg5_vertex_0500DAA8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -332,7 +328,7 @@ const Gfx bullet_bill_seg5_dl_0500E730[] = {
const Gfx bullet_bill_seg5_dl_0500E8A8[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_BLENDRGBA, G_CC_BLENDRGBA),
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),
diff --git a/actors/bully/model.inc.c b/actors/bully/model.inc.c
@@ -60,44 +60,28 @@ const Gfx bully_seg5_dl_05000398[] = {
};
// 0x05000408
-static const Ambient bully_seg5_light_05000408 = {
- {{0x00, 0x38, 0x00}, 0, {0x00, 0x38, 0x00}, 0}
-};
-
-// 0x05000410
-static const Light bully_seg5_light_05000410 = {
- {{0x00, 0xe3, 0x00}, 0, {0x00, 0xe3, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bully_seg5_lights_05000408 = gdSPDefLights1(
+ 0x00, 0x38, 0x00,
+ 0x00, 0xe3, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000420
-static const Ambient bully_seg5_light_05000420 = {
- {{0x00, 0x3f, 0x00}, 0, {0x00, 0x3f, 0x00}, 0}
-};
-
-// 0x05000428
-static const Light bully_seg5_light_05000428 = {
- {{0x00, 0xff, 0x00}, 0, {0x00, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bully_seg5_lights_05000420 = gdSPDefLights1(
+ 0x00, 0x3f, 0x00,
+ 0x00, 0xff, 0x00, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Ambient bully_light_1 = {
- {{0x3f, 0x29, 0x00}, 0, {0x3f, 0x29, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light bully_light_2 = {
- {{0xff, 0xa5, 0x00}, 0, {0xff, 0xa5, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 bully_lights_unused = gdSPDefLights1(
+ 0x3f, 0x29, 0x00,
+ 0xff, 0xa5, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000450
-static const Ambient bully_seg5_light_05000450 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x05000458
-static const Light bully_seg5_light_05000458 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 bully_seg5_lights_05000450 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// //! There's another malformed light entry here.
// 0x05000468
@@ -339,8 +323,8 @@ static const Vtx bully_seg5_vertex_05003608[] = {
// 0x05003708 - 0x050037A0
const Gfx bully_seg5_dl_05003708[] = {
- gsSPLight(&bully_seg5_light_05000410, 1),
- gsSPLight(&bully_seg5_light_05000408, 2),
+ gsSPLight(&bully_seg5_lights_05000408.l, 1),
+ gsSPLight(&bully_seg5_lights_05000408.a, 2),
gsSPVertex(bully_seg5_vertex_05002C68, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 1, 5, 6, 0x0),
@@ -355,8 +339,8 @@ const Gfx bully_seg5_dl_05003708[] = {
// 0x050037A0 - 0x05003838
const Gfx bully_seg5_dl_050037A0[] = {
- gsSPLight(&bully_seg5_light_05000428, 1),
- gsSPLight(&bully_seg5_light_05000420, 2),
+ gsSPLight(&bully_seg5_lights_05000420.l, 1),
+ gsSPLight(&bully_seg5_lights_05000420.a, 2),
gsSPVertex(bully_seg5_vertex_05002D88, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 3, 1, 0, 0x0, 5, 6, 7, 0x0),
@@ -372,7 +356,7 @@ const Gfx bully_seg5_dl_050037A0[] = {
// 0x05003838 - 0x05003878
const Gfx bully_seg5_dl_05003838[] = {
gsSPLight(bully_seg5_texture_05000468 + 0x8, 1), // yet another malformed light...
- gsSPLight(bully_seg5_texture_05000468 + 0x0, 2),
+ gsSPLight(bully_seg5_texture_05000468, 2),
gsSPVertex(bully_seg5_vertex_05002EA8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 5, 0, 0x0),
@@ -381,8 +365,8 @@ const Gfx bully_seg5_dl_05003838[] = {
// 0x05003878 - 0x05003C50
const Gfx bully_seg5_dl_05003878[] = {
- gsSPLight(&bully_seg5_light_05000458, 1),
- gsSPLight(&bully_seg5_light_05000450, 2),
+ gsSPLight(&bully_seg5_lights_05000450.l, 1),
+ gsSPLight(&bully_seg5_lights_05000450.a, 2),
gsSPVertex(bully_seg5_vertex_05002F08, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
diff --git a/actors/cannon_barrel/model.inc.c b/actors/cannon_barrel/model.inc.c
@@ -1,24 +1,16 @@
// Cannon Barrel
// 0x08005878
-static const Ambient cannon_barrel_seg8_light_08005878 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x08005880
-static const Light cannon_barrel_seg8_light_08005880 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cannon_barrel_seg8_lights_08005878 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08005890
-static const Ambient cannon_barrel_seg8_light_08005890 = {
- {{0x00, 0x00, 0x0f}, 0, {0x00, 0x00, 0x0f}, 0}
-};
-
-// 0x08005898
-static const Light cannon_barrel_seg8_light_08005898 = {
- {{0x00, 0x00, 0x32}, 0, {0x00, 0x00, 0x32}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cannon_barrel_seg8_lights_08005890 = gdSPDefLights1(
+ 0x00, 0x00, 0x0f,
+ 0x00, 0x00, 0x32, 0x28, 0x28, 0x28
+);
// 0x080058A8
ALIGNED8 static const u8 cannon_barrel_seg8_texture_080058A8[] = {
@@ -100,8 +92,8 @@ const Gfx cannon_barrel_seg8_dl_08006408[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_barrel_seg8_texture_080058A8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cannon_barrel_seg8_light_08005880, 1),
- gsSPLight(&cannon_barrel_seg8_light_08005878, 2),
+ gsSPLight(&cannon_barrel_seg8_lights_08005878.l, 1),
+ gsSPLight(&cannon_barrel_seg8_lights_08005878.a, 2),
gsSPVertex(cannon_barrel_seg8_vertex_080060A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 1, 4, 0x0),
@@ -116,8 +108,8 @@ const Gfx cannon_barrel_seg8_dl_08006408[] = {
// 0x080064C0 - 0x08006660
const Gfx cannon_barrel_seg8_dl_080064C0[] = {
- gsSPLight(&cannon_barrel_seg8_light_08005898, 1),
- gsSPLight(&cannon_barrel_seg8_light_08005890, 2),
+ gsSPLight(&cannon_barrel_seg8_lights_08005890.l, 1),
+ gsSPLight(&cannon_barrel_seg8_lights_08005890.a, 2),
gsSPVertex(cannon_barrel_seg8_vertex_080061A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 4, 0x0, 6, 4, 3, 0x0),
diff --git a/actors/cannon_base/model.inc.c b/actors/cannon_base/model.inc.c
@@ -1,24 +1,16 @@
// Cannon Base
// 0x08004988
-static const Ambient cannon_base_seg8_light_08004988 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x08004990
-static const Light cannon_base_seg8_light_08004990 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cannon_base_seg8_lights_08004988 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x080049A0
-static const Ambient cannon_base_seg8_light_080049A0 = {
- {{0x0e, 0x10, 0x4c}, 0, {0x0e, 0x10, 0x4c}, 0}
-};
-
-// 0x080049A8
-static const Light cannon_base_seg8_light_080049A8 = {
- {{0x30, 0x37, 0xff}, 0, {0x30, 0x37, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cannon_base_seg8_lights_080049A0 = gdSPDefLights1(
+ 0x0e, 0x10, 0x4c,
+ 0x30, 0x37, 0xff, 0x28, 0x28, 0x28
+);
// 0x080049B8
ALIGNED8 static const u8 cannon_base_seg8_texture_080049B8[] = {
@@ -124,8 +116,8 @@ const Gfx cannon_base_seg8_dl_08005658[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_base_seg8_texture_080049B8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cannon_base_seg8_light_08004990, 1),
- gsSPLight(&cannon_base_seg8_light_08004988, 2),
+ gsSPLight(&cannon_base_seg8_lights_08004988.l, 1),
+ gsSPLight(&cannon_base_seg8_lights_08004988.a, 2),
gsSPVertex(cannon_base_seg8_vertex_080051B8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 2, 5, 0x0, 0, 5, 3, 0x0),
@@ -136,8 +128,8 @@ const Gfx cannon_base_seg8_dl_08005658[] = {
// 0x080056D0 - 0x080057F8
const Gfx cannon_base_seg8_dl_080056D0[] = {
- gsSPLight(&cannon_base_seg8_light_080049A8, 1),
- gsSPLight(&cannon_base_seg8_light_080049A0, 2),
+ gsSPLight(&cannon_base_seg8_lights_080049A0.l, 1),
+ gsSPLight(&cannon_base_seg8_lights_080049A0.a, 2),
gsSPVertex(cannon_base_seg8_vertex_08005278, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/cannon_lid/model.inc.c b/actors/cannon_lid/model.inc.c
@@ -1,14 +1,10 @@
// Cannon Lid
// 0x08004040
-static const Ambient cannon_lid_seg8_light_08004040 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x08004048
-static const Light cannon_lid_seg8_light_08004048 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cannon_lid_seg8_lights_08004040 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08004058
ALIGNED8 static const u8 cannon_lid_seg8_texture_08004058[] = {
@@ -28,8 +24,8 @@ const Gfx cannon_lid_seg8_dl_08004898[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cannon_lid_seg8_texture_08004058),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cannon_lid_seg8_light_08004048, 1),
- gsSPLight(&cannon_lid_seg8_light_08004040, 2),
+ gsSPLight(&cannon_lid_seg8_lights_08004040.l, 1),
+ gsSPLight(&cannon_lid_seg8_lights_08004040.a, 2),
gsSPVertex(cannon_lid_seg8_vertex_08004858, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/capswitch/model.inc.c b/actors/capswitch/model.inc.c
@@ -1,64 +1,40 @@
// Capswitch
// 0x05001BB8
-static const Ambient capswitch_seg5_light_05001BB8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05001BC0
-static const Light capswitch_seg5_light_05001BC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001BB8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001BD0
-static const Ambient capswitch_seg5_light_05001BD0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05001BD8
-static const Light capswitch_seg5_light_05001BD8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001BD0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001BE8
-static const Ambient capswitch_seg5_light_05001BE8 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x05001BF0
-static const Light capswitch_seg5_light_05001BF0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001BE8 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05001C00
-static const Ambient capswitch_seg5_light_05001C00 = {
- {{0x01, 0x2a, 0x09}, 0, {0x01, 0x2a, 0x09}, 0}
-};
-
-// 0x05001C08
-static const Light capswitch_seg5_light_05001C08 = {
- {{0x07, 0xa9, 0x25}, 0, {0x07, 0xa9, 0x25}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001C00 = gdSPDefLights1(
+ 0x01, 0x2a, 0x09,
+ 0x07, 0xa9, 0x25, 0x28, 0x28, 0x28
+);
// 0x05001C18
-static const Ambient capswitch_seg5_light_05001C18 = {
- {{0x00, 0x00, 0x3f}, 0, {0x00, 0x00, 0x3f}, 0}
-};
-
-// 0x05001C20
-static const Light capswitch_seg5_light_05001C20 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001C18 = gdSPDefLights1(
+ 0x00, 0x00, 0x3f,
+ 0x00, 0x00, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001C30
-static const Ambient capswitch_seg5_light_05001C30 = {
- {{0x3f, 0x25, 0x02}, 0, {0x3f, 0x25, 0x02}, 0}
-};
-
-// 0x05001C38
-static const Light capswitch_seg5_light_05001C38 = {
- {{0xff, 0x96, 0x08}, 0, {0xff, 0x96, 0x08}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 capswitch_seg5_lights_05001C30 = gdSPDefLights1(
+ 0x3f, 0x25, 0x02,
+ 0xff, 0x96, 0x08, 0x28, 0x28, 0x28
+);
// 0x05001C48
ALIGNED8 static const u8 capswitch_seg5_texture_05001C48[] = {
@@ -91,8 +67,8 @@ const Gfx capswitch_seg5_dl_05002D88[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, capswitch_seg5_texture_05001C48),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&capswitch_seg5_light_05001BC0, 1),
- gsSPLight(&capswitch_seg5_light_05001BB8, 2),
+ gsSPLight(&capswitch_seg5_lights_05001BB8.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001BB8.a, 2),
gsSPVertex(capswitch_seg5_vertex_05002CC8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 5, 4, 0, 0x0),
@@ -158,8 +134,8 @@ const Gfx capswitch_seg5_dl_05003020[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, capswitch_seg5_texture_05002C48),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 4 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&capswitch_seg5_light_05001BD8, 1),
- gsSPLight(&capswitch_seg5_light_05001BD0, 2),
+ gsSPLight(&capswitch_seg5_lights_05001BD0.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001BD0.a, 2),
gsSPVertex(capswitch_seg5_vertex_05002E60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
@@ -234,32 +210,32 @@ const Gfx capswitch_seg5_dl_05003280[] = {
// 0x05003350 - 0x05003370
const Gfx capswitch_seg5_dl_05003350[] = {
- gsSPLight(&capswitch_seg5_light_05001BF0, 1),
- gsSPLight(&capswitch_seg5_light_05001BE8, 2),
+ gsSPLight(&capswitch_seg5_lights_05001BE8.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001BE8.a, 2),
gsSPDisplayList(capswitch_seg5_dl_05003280),
gsSPEndDisplayList(),
};
// 0x05003370 - 0x05003390
const Gfx capswitch_seg5_dl_05003370[] = {
- gsSPLight(&capswitch_seg5_light_05001C08, 1),
- gsSPLight(&capswitch_seg5_light_05001C00, 2),
+ gsSPLight(&capswitch_seg5_lights_05001C00.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001C00.a, 2),
gsSPDisplayList(capswitch_seg5_dl_05003280),
gsSPEndDisplayList(),
};
// 0x05003390 - 0x050033B0
const Gfx capswitch_seg5_dl_05003390[] = {
- gsSPLight(&capswitch_seg5_light_05001C20, 1),
- gsSPLight(&capswitch_seg5_light_05001C18, 2),
+ gsSPLight(&capswitch_seg5_lights_05001C18.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001C18.a, 2),
gsSPDisplayList(capswitch_seg5_dl_05003280),
gsSPEndDisplayList(),
};
// 0x050033B0 - 0x050033D0
const Gfx capswitch_seg5_dl_050033B0[] = {
- gsSPLight(&capswitch_seg5_light_05001C38, 1),
- gsSPLight(&capswitch_seg5_light_05001C30, 2),
+ gsSPLight(&capswitch_seg5_lights_05001C30.l, 1),
+ gsSPLight(&capswitch_seg5_lights_05001C30.a, 2),
gsSPDisplayList(capswitch_seg5_dl_05003280),
gsSPEndDisplayList(),
};
diff --git a/actors/chain_chomp/model.inc.c b/actors/chain_chomp/model.inc.c
@@ -1,36 +1,22 @@
// Chain Chomp
-
-// These 6 lights are unreferenced.
// 0x06021388
-static const Ambient chain_chomp_seg6_light_06021388 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06021390
-static const Light chain_chomp_seg6_light_06021390 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+UNUSED static const Lights1 chain_chomp_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060213A0
-static const Ambient chain_chomp_seg6_light_060213A0 = {
- {{0x03, 0x03, 0x05}, 0, {0x03, 0x03, 0x05}, 0}
-};
-
-// 0x060213A8
-static const Light chain_chomp_seg6_light_060213A8 = {
- {{0x0d, 0x0f, 0x16}, 0, {0x0d, 0x0f, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+UNUSED static const Lights1 chain_chomp_lights_unused2 = gdSPDefLights1(
+ 0x03, 0x03, 0x05,
+ 0x0d, 0x0f, 0x16, 0x28, 0x28, 0x28
+);
// 0x060213B8
-static const Ambient chain_chomp_seg6_light_060213B8 = {
- {{0x25, 0x00, 0x00}, 0, {0x25, 0x00, 0x00}, 0}
-};
-
-// 0x060213C0
-static const Light chain_chomp_seg6_light_060213C0 = {
- {{0x96, 0x00, 0x00}, 0, {0x96, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+UNUSED static const Lights1 chain_chomp_lights_unused3 = gdSPDefLights1(
+ 0x25, 0x00, 0x00,
+ 0x96, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x060213D0
ALIGNED8 static const u8 chain_chomp_seg6_texture_060213D0[] = {
@@ -380,14 +366,10 @@ const Gfx chain_chomp_seg6_dl_06024940[] = {
};
// 0x060249D0
-static const Ambient chain_chomp_seg6_light_060249D0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x060249D8
-static const Light chain_chomp_seg6_light_060249D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chain_chomp_seg6_lights_060249D0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060249E8
static const Vtx chain_chomp_seg6_vertex_060249E8[] = {
@@ -410,8 +392,8 @@ const Gfx chain_chomp_seg6_dl_06024AA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chain_chomp_seg6_texture_060233D0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chain_chomp_seg6_light_060249D8, 1),
- gsSPLight(&chain_chomp_seg6_light_060249D0, 2),
+ gsSPLight(&chain_chomp_seg6_lights_060249D0.l, 1),
+ gsSPLight(&chain_chomp_seg6_lights_060249D0.a, 2),
gsSPVertex(chain_chomp_seg6_vertex_060249E8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/chair/model.inc.c b/actors/chair/model.inc.c
@@ -1,14 +1,10 @@
// Chair
-// Unreferenced light
-UNUSED static const Ambient chair_light_1 = {
- {{0x19, 0x0d, 0x06}, 0, {0x19, 0x0d, 0x06}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chair_light_2 = {
- {{0x64, 0x36, 0x1a}, 0, {0x64, 0x36, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 chair_lights_unused = gdSPDefLights1(
+ 0x19, 0x0d, 0x06,
+ 0x64, 0x36, 0x1a, 0x28, 0x28, 0x28
+);
// 0x05003060
ALIGNED8 static const u8 chair_seg5_texture_05003060[] = {
@@ -32,14 +28,10 @@ ALIGNED8 static const u8 chair_seg5_texture_05004460[] = {
};
// 0x05004C60
-static const Ambient chair_seg5_light_05004C60 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x05004C68
-static const Light chair_seg5_light_05004C68 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chair_seg5_lights_05004C60 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05004C78
static const Vtx chair_seg5_vertex_05004C78[] = {
@@ -82,8 +74,8 @@ const Gfx chair_seg5_dl_05004E38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003060),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chair_seg5_light_05004C68, 1),
- gsSPLight(&chair_seg5_light_05004C60, 2),
+ gsSPLight(&chair_seg5_lights_05004C60.l, 1),
+ gsSPLight(&chair_seg5_lights_05004C60.a, 2),
gsSPVertex(chair_seg5_vertex_05004C78, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -115,14 +107,10 @@ const Gfx chair_seg5_dl_05004EE8[] = {
};
// 0x05004F58
-static const Ambient chair_seg5_light_05004F58 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x05004F60
-static const Light chair_seg5_light_05004F60 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chair_seg5_lights_05004F58 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05004F70
static const Vtx chair_seg5_vertex_05004F70[] = {
@@ -161,8 +149,8 @@ const Gfx chair_seg5_dl_050050F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05004060),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chair_seg5_light_05004F60, 1),
- gsSPLight(&chair_seg5_light_05004F58, 2),
+ gsSPLight(&chair_seg5_lights_05004F58.l, 1),
+ gsSPLight(&chair_seg5_lights_05004F58.a, 2),
gsSPVertex(chair_seg5_vertex_05004F70, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -193,14 +181,10 @@ const Gfx chair_seg5_dl_05005190[] = {
};
// 0x05005200
-static const Ambient chair_seg5_light_05005200 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x05005208
-static const Light chair_seg5_light_05005208 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chair_seg5_lights_05005200 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05005218
static const Vtx chair_seg5_vertex_05005218[] = {
@@ -237,8 +221,8 @@ const Gfx chair_seg5_dl_05005378[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003860),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chair_seg5_light_05005208, 1),
- gsSPLight(&chair_seg5_light_05005200, 2),
+ gsSPLight(&chair_seg5_lights_05005200.l, 1),
+ gsSPLight(&chair_seg5_lights_05005200.a, 2),
gsSPVertex(chair_seg5_vertex_05005218, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -269,14 +253,10 @@ const Gfx chair_seg5_dl_05005408[] = {
};
// 0x05005478
-static const Ambient chair_seg5_light_05005478 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x05005480
-static const Light chair_seg5_light_05005480 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chair_seg5_lights_05005478 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05005490
static const Vtx chair_seg5_vertex_05005490[] = {
@@ -313,8 +293,8 @@ const Gfx chair_seg5_dl_050055F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chair_seg5_texture_05003860),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chair_seg5_light_05005480, 1),
- gsSPLight(&chair_seg5_light_05005478, 2),
+ gsSPLight(&chair_seg5_lights_05005478.l, 1),
+ gsSPLight(&chair_seg5_lights_05005478.a, 2),
gsSPVertex(chair_seg5_vertex_05005490, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/checkerboard_platform/model.inc.c b/actors/checkerboard_platform/model.inc.c
@@ -1,14 +1,10 @@
// Checkerboard Platform
// 0x0800C828
-static const Ambient checkerboard_platform_seg8_light_0800C828 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0800C830
-static const Light checkerboard_platform_seg8_light_0800C830 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 checkerboard_platform_seg8_lights_0800C828 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0800C840
ALIGNED8 static const u8 checkerboard_platform_seg8_texture_0800C840[] = {
@@ -57,8 +53,8 @@ const Gfx checkerboard_platform_seg8_dl_0800D5C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, checkerboard_platform_seg8_texture_0800C840),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&checkerboard_platform_seg8_light_0800C830, 1),
- gsSPLight(&checkerboard_platform_seg8_light_0800C828, 2),
+ gsSPLight(&checkerboard_platform_seg8_lights_0800C828.l, 1),
+ gsSPLight(&checkerboard_platform_seg8_lights_0800C828.a, 2),
gsSPVertex(checkerboard_platform_seg8_vertex_0800D440, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/actors/chillychief/model.inc.c b/actors/chillychief/model.inc.c
@@ -1,44 +1,28 @@
// Chilly Chief (Chill Bully)
// 0x06000000
-static const Ambient chilly_chief_seg6_light_06000000 = {
- {{0x00, 0x38, 0x00}, 0, {0x00, 0x38, 0x00}, 0}
-};
-
-// 0x06000008
-static const Light chilly_chief_seg6_light_06000008 = {
- {{0x00, 0xe3, 0x00}, 0, {0x00, 0xe3, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chilly_chief_seg6_lights_06000000 = gdSPDefLights1(
+ 0x00, 0x38, 0x00,
+ 0x00, 0xe3, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000018
-static const Ambient chilly_chief_seg6_light_06000018 = {
- {{0x00, 0x3f, 0x00}, 0, {0x00, 0x3f, 0x00}, 0}
-};
-
-// 0x06000020
-static const Light chilly_chief_seg6_light_06000020 = {
- {{0x00, 0xff, 0x00}, 0, {0x00, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chilly_chief_seg6_lights_06000018 = gdSPDefLights1(
+ 0x00, 0x3f, 0x00,
+ 0x00, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000030
-static const Ambient chilly_chief_seg6_light_06000030 = {
- {{0x3f, 0x29, 0x00}, 0, {0x3f, 0x29, 0x00}, 0}
-};
-
-// 0x06000038
-static const Light chilly_chief_seg6_light_06000038 = {
- {{0xff, 0xa5, 0x00}, 0, {0xff, 0xa5, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chilly_chief_seg6_lights_06000030 = gdSPDefLights1(
+ 0x3f, 0x29, 0x00,
+ 0xff, 0xa5, 0x00, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Ambient chillychief_light_1 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chillychief_light_2 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 chillychief_lights_unused = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000060
ALIGNED8 static const u8 chilly_chief_seg6_texture_06000060[] = {
@@ -122,8 +106,8 @@ static const Vtx chilly_chief_seg6_vertex_06002AA0[] = {
// 0x06002B30 - 0x06002BC8
const Gfx chilly_chief_seg6_dl_06002B30[] = {
- gsSPLight(&chilly_chief_seg6_light_06000008, 1),
- gsSPLight(&chilly_chief_seg6_light_06000000, 2),
+ gsSPLight(&chilly_chief_seg6_lights_06000000.l, 1),
+ gsSPLight(&chilly_chief_seg6_lights_06000000.a, 2),
gsSPVertex(chilly_chief_seg6_vertex_06002860, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 1, 5, 6, 0x0),
@@ -138,8 +122,8 @@ const Gfx chilly_chief_seg6_dl_06002B30[] = {
// 0x06002BC8 - 0x06002C60
const Gfx chilly_chief_seg6_dl_06002BC8[] = {
- gsSPLight(&chilly_chief_seg6_light_06000020, 1),
- gsSPLight(&chilly_chief_seg6_light_06000018, 2),
+ gsSPLight(&chilly_chief_seg6_lights_06000018.l, 1),
+ gsSPLight(&chilly_chief_seg6_lights_06000018.a, 2),
gsSPVertex(chilly_chief_seg6_vertex_06002980, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 3, 1, 0, 0x0, 5, 6, 7, 0x0),
@@ -154,8 +138,8 @@ const Gfx chilly_chief_seg6_dl_06002BC8[] = {
// 0x06002C60 - 0x06002C98
const Gfx chilly_chief_seg6_dl_06002C60[] = {
- gsSPLight(&chilly_chief_seg6_light_06000038, 1),
- gsSPLight(&chilly_chief_seg6_light_06000030, 2),
+ gsSPLight(&chilly_chief_seg6_lights_06000030.l, 1),
+ gsSPLight(&chilly_chief_seg6_lights_06000030.a, 2),
gsSPVertex(chilly_chief_seg6_vertex_06002AA0, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
diff --git a/actors/chuckya/model.inc.c b/actors/chuckya/model.inc.c
@@ -1,74 +1,46 @@
// Chuckya
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_1 = {
- {{0x26, 0x00, 0x27}, 0, {0x26, 0x00, 0x27}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_2 = {
- {{0x9a, 0x00, 0x9c}, 0, {0x9a, 0x00, 0x9c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_3 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_4 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_5 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_6 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_7 = {
- {{0x0e, 0x0e, 0x0e}, 0, {0x0e, 0x0e, 0x0e}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_8 = {
- {{0x39, 0x39, 0x39}, 0, {0x39, 0x39, 0x39}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_9 = {
- {{0x39, 0x20, 0x00}, 0, {0x39, 0x20, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_10 = {
- {{0xe4, 0x83, 0x00}, 0, {0xe4, 0x83, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_11 = {
- {{0x3f, 0x27, 0x00}, 0, {0x3f, 0x27, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_12 = {
- {{0xff, 0x9e, 0x00}, 0, {0xff, 0x9e, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient chuckya_light_13 = {
- {{0x15, 0x14, 0x16}, 0, {0x15, 0x14, 0x16}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light chuckya_light_14 = {
- {{0x57, 0x53, 0x58}, 0, {0x57, 0x53, 0x58}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused1 = gdSPDefLights1(
+ 0x26, 0x00, 0x27,
+ 0x9a, 0x00, 0x9c, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused3 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused4 = gdSPDefLights1(
+ 0x0e, 0x0e, 0x0e,
+ 0x39, 0x39, 0x39, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused5 = gdSPDefLights1(
+ 0x39, 0x20, 0x00,
+ 0xe4, 0x83, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused6 = gdSPDefLights1(
+ 0x3f, 0x27, 0x00,
+ 0xff, 0x9e, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 chuckya_lights_unused7 = gdSPDefLights1(
+ 0x15, 0x14, 0x16,
+ 0x57, 0x53, 0x58, 0x28, 0x28, 0x28
+);
// 0x08006778
ALIGNED8 static const u8 chuckya_seg8_texture_08006778[] = {
@@ -364,14 +336,10 @@ const Gfx chuckya_seg8_dl_0800A5F8[] = {
};
// 0x0800A668
-static const Ambient chuckya_seg8_light_0800A668 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0800A670
-static const Light chuckya_seg8_light_0800A670 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chuckya_seg8_lights_0800A668 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0800A680
static const Vtx chuckya_seg8_vertex_0800A680[] = {
@@ -390,8 +358,8 @@ const Gfx chuckya_seg8_dl_0800A700[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, chuckya_seg8_texture_08006778),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&chuckya_seg8_light_0800A670, 1),
- gsSPLight(&chuckya_seg8_light_0800A668, 2),
+ gsSPLight(&chuckya_seg8_lights_0800A668.l, 1),
+ gsSPLight(&chuckya_seg8_lights_0800A668.a, 2),
gsSPVertex(chuckya_seg8_vertex_0800A680, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -417,14 +385,10 @@ const Gfx chuckya_seg8_dl_0800A758[] = {
};
// 0x0800A7C8
-static const Ambient chuckya_seg8_light_0800A7C8 = {
- {{0x29, 0x29, 0x29}, 0, {0x29, 0x29, 0x29}, 0}
-};
-
-// 0x0800A7D0
-static const Light chuckya_seg8_light_0800A7D0 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chuckya_seg8_lights_0800A7C8 = gdSPDefLights1(
+ 0x29, 0x29, 0x29,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
// 0x0800A7E0
static const Vtx chuckya_seg8_vertex_0800A7E0[] = {
@@ -441,8 +405,8 @@ static const Vtx chuckya_seg8_vertex_0800A7E0[] = {
// 0x0800A870 - 0x0800A8D0
const Gfx chuckya_seg8_dl_0800A870[] = {
- gsSPLight(&chuckya_seg8_light_0800A7D0, 1),
- gsSPLight(&chuckya_seg8_light_0800A7C8, 2),
+ gsSPLight(&chuckya_seg8_lights_0800A7C8.l, 1),
+ gsSPLight(&chuckya_seg8_lights_0800A7C8.a, 2),
gsSPVertex(chuckya_seg8_vertex_0800A7E0, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 5, 6, 2, 0x0),
@@ -460,14 +424,10 @@ const Gfx chuckya_seg8_dl_0800A8D0[] = {
};
// 0x0800A8F0
-static const Ambient chuckya_seg8_light_0800A8F0 = {
- {{0x4c, 0x4c, 0x00}, 0, {0x4c, 0x4c, 0x00}, 0}
-};
-
-// 0x0800A8F8
-static const Light chuckya_seg8_light_0800A8F8 = {
- {{0xff, 0xff, 0x00}, 0, {0xff, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chuckya_seg8_lights_0800A8F0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x00,
+ 0xff, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// 0x0800A908
static const Vtx chuckya_seg8_vertex_0800A908[] = {
@@ -480,8 +440,8 @@ static const Vtx chuckya_seg8_vertex_0800A908[] = {
// 0x0800A958 - 0x0800A998
const Gfx chuckya_seg8_dl_0800A958[] = {
- gsSPLight(&chuckya_seg8_light_0800A8F8, 1),
- gsSPLight(&chuckya_seg8_light_0800A8F0, 2),
+ gsSPLight(&chuckya_seg8_lights_0800A8F0.l, 1),
+ gsSPLight(&chuckya_seg8_lights_0800A8F0.a, 2),
gsSPVertex(chuckya_seg8_vertex_0800A908, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 0, 4, 1, 0x0),
@@ -497,14 +457,10 @@ const Gfx chuckya_seg8_dl_0800A998[] = {
};
// 0x0800A9B8
-static const Ambient chuckya_seg8_light_0800A9B8 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x0800A9C0
-static const Light chuckya_seg8_light_0800A9C0 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 chuckya_seg8_lights_0800A9B8 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x32, 0x32, 0x32, 0x28, 0x28, 0x28
+);
// 0x0800A9D0
static const Vtx chuckya_seg8_vertex_0800A9D0[] = {
@@ -542,8 +498,8 @@ static const Vtx chuckya_seg8_vertex_0800AAC0[] = {
// 0x0800AB70 - 0x0800ABE8
const Gfx chuckya_seg8_dl_0800AB70[] = {
- gsSPLight(&chuckya_seg8_light_0800A9C0, 1),
- gsSPLight(&chuckya_seg8_light_0800A9B8, 2),
+ gsSPLight(&chuckya_seg8_lights_0800A9B8.l, 1),
+ gsSPLight(&chuckya_seg8_lights_0800A9B8.a, 2),
gsSPVertex(chuckya_seg8_vertex_0800A9D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/clam_shell/model.inc.c b/actors/clam_shell/model.inc.c
@@ -1,24 +1,16 @@
// Clam Shell
-// Unreferenced light
-UNUSED static const Ambient clam_shell_light_1 = {
- {{0x1b, 0x23, 0x30}, 0, {0x1b, 0x23, 0x30}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light clam_shell_light_2 = {
- {{0x6d, 0x8f, 0xc3}, 0, {0x6d, 0x8f, 0xc3}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient clam_shell_light_3 = {
- {{0x18, 0x28, 0x38}, 0, {0x18, 0x28, 0x38}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light clam_shell_light_4 = {
- {{0x60, 0xa2, 0xe2}, 0, {0x60, 0xa2, 0xe2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 clam_shell_lights_unused1 = gdSPDefLights1(
+ 0x1b, 0x23, 0x30,
+ 0x6d, 0x8f, 0xc3, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 clam_shell_lights_unused2 = gdSPDefLights1(
+ 0x18, 0x28, 0x38,
+ 0x60, 0xa2, 0xe2, 0x28, 0x28, 0x28
+);
// 0x05000030
ALIGNED8 static const u8 clam_shell_seg5_texture_05000030[] = {
@@ -31,14 +23,10 @@ ALIGNED8 static const u8 clam_shell_seg5_texture_05000830[] = {
};
// 0x05001030
-static const Ambient clam_shell_seg5_light_05001030 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001038
-static const Light clam_shell_seg5_light_05001038 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 clam_shell_seg5_lights_05001030 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001048
static const Vtx clam_shell_seg5_vertex_05001048[] = {
@@ -75,8 +63,8 @@ const Gfx clam_shell_seg5_dl_050011A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000030),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&clam_shell_seg5_light_05001038, 1),
- gsSPLight(&clam_shell_seg5_light_05001030, 2),
+ gsSPLight(&clam_shell_seg5_lights_05001030.l, 1),
+ gsSPLight(&clam_shell_seg5_lights_05001030.a, 2),
gsSPVertex(clam_shell_seg5_vertex_05001048, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 4, 5, 3, 0x0, 4, 0, 6, 0x0),
@@ -120,14 +108,10 @@ const Gfx clam_shell_seg5_dl_050012B8[] = {
};
// 0x05001320
-static const Ambient clam_shell_seg5_light_05001320 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05001328
-static const Light clam_shell_seg5_light_05001328 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 clam_shell_seg5_lights_05001320 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001338
static const Vtx clam_shell_seg5_vertex_05001338[] = {
@@ -162,8 +146,8 @@ const Gfx clam_shell_seg5_dl_05001478[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, clam_shell_seg5_texture_05000030),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&clam_shell_seg5_light_05001328, 1),
- gsSPLight(&clam_shell_seg5_light_05001320, 2),
+ gsSPLight(&clam_shell_seg5_lights_05001320.l, 1),
+ gsSPLight(&clam_shell_seg5_lights_05001320.a, 2),
gsSPVertex(clam_shell_seg5_vertex_05001338, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 5, 6, 0x0),
diff --git a/actors/cyan_fish/model.inc.c b/actors/cyan_fish/model.inc.c
@@ -8,15 +8,10 @@ ALIGNED8 static const u8 cyan_fish_seg6_texture_0600D468[] = {
#include "actors/cyan_fish/cyan_fish.rgba16.inc.c"
};
-// 0x0600DC68
-static const Ambient cyan_fish_seg6_light_0600DC68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600DC70
-static const Light cyan_fish_seg6_light_0600DC70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cyan_fish_seg6_lights_0600DC68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600DC80
static const Vtx cyan_fish_seg6_vertex_0600DC80[] = {
@@ -37,8 +32,8 @@ const Gfx cyan_fish_seg6_dl_0600DD20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cyan_fish_seg6_light_0600DC70, 1),
- gsSPLight(&cyan_fish_seg6_light_0600DC68, 2),
+ gsSPLight(&cyan_fish_seg6_lights_0600DC68.l, 1),
+ gsSPLight(&cyan_fish_seg6_lights_0600DC68.a, 2),
gsSPVertex(cyan_fish_seg6_vertex_0600DC80, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 4, 0, 3, 0x0),
@@ -68,14 +63,10 @@ const Gfx cyan_fish_seg6_dl_0600DDD8[] = {
};
// 0x0600DE38
-static const Ambient cyan_fish_seg6_light_0600DE38 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600DE40
-static const Light cyan_fish_seg6_light_0600DE40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cyan_fish_seg6_lights_0600DE38 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600DE50
static const Vtx cyan_fish_seg6_vertex_0600DE50[] = {
@@ -90,8 +81,8 @@ const Gfx cyan_fish_seg6_dl_0600DE90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cyan_fish_seg6_light_0600DE40, 1),
- gsSPLight(&cyan_fish_seg6_light_0600DE38, 2),
+ gsSPLight(&cyan_fish_seg6_lights_0600DE38.l, 1),
+ gsSPLight(&cyan_fish_seg6_lights_0600DE38.a, 2),
gsSPVertex(cyan_fish_seg6_vertex_0600DE50, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSPEndDisplayList(),
@@ -116,14 +107,10 @@ const Gfx cyan_fish_seg6_dl_0600DED8[] = {
};
// 0x0600DF48
-static const Ambient cyan_fish_seg6_light_0600DF48 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600DF50
-static const Light cyan_fish_seg6_light_0600DF50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 cyan_fish_seg6_lights_0600DF48 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600DF60
static const Vtx cyan_fish_seg6_vertex_0600DF60[] = {
@@ -140,8 +127,8 @@ const Gfx cyan_fish_seg6_dl_0600DFC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cyan_fish_seg6_texture_0600D468),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cyan_fish_seg6_light_0600DF50, 1),
- gsSPLight(&cyan_fish_seg6_light_0600DF48, 2),
+ gsSPLight(&cyan_fish_seg6_lights_0600DF48.l, 1),
+ gsSPLight(&cyan_fish_seg6_lights_0600DF48.a, 2),
gsSPVertex(cyan_fish_seg6_vertex_0600DF60, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 0, 3, 1, 0x0),
diff --git a/actors/dirt/model.inc.c b/actors/dirt/model.inc.c
@@ -1,44 +1,28 @@
// Dirt
// 0x0302BD68
-static const Ambient dirt_seg3_light_0302BD68 = {
- {{0x3f, 0x19, 0x19}, 0, {0x3f, 0x19, 0x19}, 0}
-};
-
-// 0x0302BD70
-static const Light dirt_seg3_light_0302BD70 = {
- {{0xff, 0x64, 0x64}, 0, {0xff, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dirt_seg3_lights_0302BD68 = gdSPDefLights1(
+ 0x3f, 0x19, 0x19,
+ 0xff, 0x64, 0x64, 0x28, 0x28, 0x28
+);
// 0x0302BD80
-static const Ambient dirt_seg3_light_0302BD80 = {
- {{0x19, 0x3f, 0x19}, 0, {0x19, 0x3f, 0x19}, 0}
-};
-
-// 0x0302BD88
-static const Light dirt_seg3_light_0302BD88 = {
- {{0x64, 0xff, 0x64}, 0, {0x64, 0xff, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dirt_seg3_lights_0302BD80 = gdSPDefLights1(
+ 0x19, 0x3f, 0x19,
+ 0x64, 0xff, 0x64, 0x28, 0x28, 0x28
+);
// 0x0302BD98
-static const Ambient dirt_seg3_light_0302BD98 = {
- {{0x19, 0x19, 0x3f}, 0, {0x19, 0x19, 0x3f}, 0}
-};
-
-// 0x0302BDA0
-static const Light dirt_seg3_light_0302BDA0 = {
- {{0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dirt_seg3_lights_0302BD98 = gdSPDefLights1(
+ 0x19, 0x19, 0x3f,
+ 0x64, 0x64, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302BDB0
-static const Ambient dirt_seg3_light_0302BDB0 = {
- {{0x3f, 0x3f, 0x19}, 0, {0x3f, 0x3f, 0x19}, 0}
-};
-
-// 0x0302BDB8
-static const Light dirt_seg3_light_0302BDB8 = {
- {{0xff, 0xff, 0x64}, 0, {0xff, 0xff, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dirt_seg3_lights_0302BDB0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x19,
+ 0xff, 0xff, 0x64, 0x28, 0x28, 0x28
+);
// 0x0302BDC8
static const Vtx dirt_seg3_vertex_0302BDC8[] = {
@@ -136,32 +120,32 @@ const Gfx dirt_seg3_dl_0302C238[] = {
// 0x0302C298 - 0x0302C2B8
const Gfx dirt_seg3_dl_0302C298[] = {
- gsSPLight(&dirt_seg3_light_0302BD70, 1),
- gsSPLight(&dirt_seg3_light_0302BD68, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD68.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD68.a, 2),
gsSPDisplayList(dirt_seg3_dl_0302C238),
gsSPEndDisplayList(),
};
// 0x0302C2B8 - 0x0302C2D8
const Gfx dirt_seg3_dl_0302C2B8[] = {
- gsSPLight(&dirt_seg3_light_0302BD88, 1),
- gsSPLight(&dirt_seg3_light_0302BD80, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD80.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD80.a, 2),
gsSPDisplayList(dirt_seg3_dl_0302C238),
gsSPEndDisplayList(),
};
// 0x0302C2D8 - 0x0302C2F8
const Gfx dirt_seg3_dl_0302C2D8[] = {
- gsSPLight(&dirt_seg3_light_0302BDA0, 1),
- gsSPLight(&dirt_seg3_light_0302BD98, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD98.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD98.a, 2),
gsSPDisplayList(dirt_seg3_dl_0302C238),
gsSPEndDisplayList(),
};
// 0x0302C2F8 - 0x0302C318
const Gfx dirt_seg3_dl_0302C2F8[] = {
- gsSPLight(&dirt_seg3_light_0302BDB8, 1),
- gsSPLight(&dirt_seg3_light_0302BDB0, 2),
+ gsSPLight(&dirt_seg3_lights_0302BDB0.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BDB0.a, 2),
gsSPDisplayList(dirt_seg3_dl_0302C238),
gsSPEndDisplayList(),
};
@@ -180,8 +164,8 @@ const Gfx dirt_seg3_dl_0302C318[] = {
// 0x0302C378 - 0x0302C3B0
const Gfx dirt_seg3_dl_0302C378[] = {
- gsSPLight(&dirt_seg3_light_0302BD70, 1),
- gsSPLight(&dirt_seg3_light_0302BD68, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD68.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD68.a, 2),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
@@ -191,8 +175,8 @@ const Gfx dirt_seg3_dl_0302C378[] = {
// 0x0302C3B0 - 0x0302C3E8
const Gfx dirt_seg3_dl_0302C3B0[] = {
- gsSPLight(&dirt_seg3_light_0302BD88, 1),
- gsSPLight(&dirt_seg3_light_0302BD80, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD80.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD80.a, 2),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
@@ -202,8 +186,8 @@ const Gfx dirt_seg3_dl_0302C3B0[] = {
// 0x0302C3E8 - 0x0302C420
const Gfx dirt_seg3_dl_0302C3E8[] = {
- gsSPLight(&dirt_seg3_light_0302BDA0, 1),
- gsSPLight(&dirt_seg3_light_0302BD98, 2),
+ gsSPLight(&dirt_seg3_lights_0302BD98.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BD98.a, 2),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
@@ -213,8 +197,8 @@ const Gfx dirt_seg3_dl_0302C3E8[] = {
// 0x0302C420 - 0x0302C458
const Gfx dirt_seg3_dl_0302C420[] = {
- gsSPLight(&dirt_seg3_light_0302BDB8, 1),
- gsSPLight(&dirt_seg3_light_0302BDB0, 2),
+ gsSPLight(&dirt_seg3_lights_0302BDB0.l, 1),
+ gsSPLight(&dirt_seg3_lights_0302BDB0.a, 2),
gsSPClearGeometryMode(G_CULL_BACK),
gsSPVertex(dirt_seg3_vertex_0302C098, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
diff --git a/actors/door/model.inc.c b/actors/door/model.inc.c
@@ -1,24 +1,16 @@
// Door
// 0x03009CE0
-static const Ambient door_seg3_light_03009CE0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x03009CE8
-static const Light door_seg3_light_03009CE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 door_seg3_lights_03009CE0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x03009CF8
-static const Ambient door_seg3_light_03009CF8 = {
- {{0x3f, 0x3f, 0x00}, 0, {0x3f, 0x3f, 0x00}, 0}
-};
-
-// 0x03009D00
-static const Light door_seg3_light_03009D00 = {
- {{0xff, 0xff, 0x00}, 0, {0xff, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 door_seg3_lights_03009CF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x00,
+ 0xff, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// 0x03009D10
ALIGNED8 static const u8 door_seg3_texture_03009D10[] = {
@@ -159,8 +151,8 @@ const Gfx door_seg3_dl_03013C10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_0300AD10),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPVertex(door_seg3_vertex_03013910, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -177,8 +169,8 @@ const Gfx door_seg3_dl_03013C10[] = {
// 0x03013CC8 - 0x03013D78
const Gfx door_seg3_dl_03013CC8[] = {
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPVertex(door_seg3_vertex_03013A90, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 5, 2, 4, 0x0),
@@ -194,8 +186,8 @@ const Gfx door_seg3_dl_03013CC8[] = {
// 0x03013D78 - 0x03013E28
const Gfx door_seg3_dl_03013D78[] = {
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPVertex(door_seg3_vertex_03013B50, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 0, 5, 1, 0x0),
@@ -285,16 +277,16 @@ const Gfx door_seg3_dl_03014020[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03009D10),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPVertex(door_seg3_vertex_03013F20, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPVertex(door_seg3_vertex_03013FA0, 8, 0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
@@ -342,8 +334,8 @@ const Gfx door_seg3_dl_030141C0[] = {
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPEndDisplayList(),
};
@@ -454,8 +446,8 @@ const Gfx door_seg3_dl_03014470[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, door_seg3_texture_03013510),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPEndDisplayList(),
};
@@ -579,8 +571,8 @@ const Gfx door_seg3_dl_03014888[] = {
// 0x030149C0 - 0x03014A20
const Gfx door_seg3_dl_030149C0[] = {
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPVertex(door_seg3_vertex_03014558, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -628,8 +620,8 @@ const Gfx door_seg3_dl_03014A80[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014888),
};
@@ -654,8 +646,8 @@ const Gfx door_seg3_dl_03014B30[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014888),
};
@@ -680,8 +672,8 @@ const Gfx door_seg3_dl_03014BE0[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014888),
};
@@ -706,8 +698,8 @@ const Gfx door_seg3_dl_03014C90[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014888),
};
@@ -732,8 +724,8 @@ const Gfx door_seg3_dl_03014D40[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsSPSetGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014888),
};
@@ -763,8 +755,8 @@ static const Vtx door_seg3_vertex_03014E70[] = {
// 0x03014EF0 - 0x03014F30
const Gfx door_seg3_dl_03014EF0[] = {
- gsSPLight(&door_seg3_light_03009CE8, 1),
- gsSPLight(&door_seg3_light_03009CE0, 2),
+ gsSPLight(&door_seg3_lights_03009CE0.l, 1),
+ gsSPLight(&door_seg3_lights_03009CE0.a, 2),
gsSPVertex(door_seg3_vertex_03014DF0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -803,8 +795,8 @@ const Gfx door_seg3_dl_03014F98[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014F30),
};
@@ -821,8 +813,8 @@ const Gfx door_seg3_dl_03015008[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014F30),
};
@@ -839,8 +831,8 @@ const Gfx door_seg3_dl_03015078[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014F30),
};
@@ -857,8 +849,8 @@ const Gfx door_seg3_dl_030150E8[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014F30),
};
@@ -875,7 +867,7 @@ const Gfx door_seg3_dl_03015158[] = {
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
- gsSPLight(&door_seg3_light_03009D00, 1),
- gsSPLight(&door_seg3_light_03009CF8, 2),
+ gsSPLight(&door_seg3_lights_03009CF8.l, 1),
+ gsSPLight(&door_seg3_lights_03009CF8.a, 2),
gsSPBranchList(door_seg3_dl_03014F30),
};
diff --git a/actors/dorrie/model.inc.c b/actors/dorrie/model.inc.c
@@ -16,14 +16,10 @@ ALIGNED8 static const u8 dorrie_seg6_texture_0600ADA0[] = {
};
// 0x0600B5A0
-static const Ambient dorrie_seg6_light_0600B5A0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600B5A8
-static const Light dorrie_seg6_light_0600B5A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600B5A0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600B5B8
static const Vtx dorrie_seg6_vertex_0600B5B8[] = {
@@ -97,8 +93,8 @@ const Gfx dorrie_seg6_dl_0600B8E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_0600ADA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600B5A8, 1),
- gsSPLight(&dorrie_seg6_light_0600B5A0, 2),
+ gsSPLight(&dorrie_seg6_lights_0600B5A0.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600B5A0.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600B5B8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 3, 4, 0x0),
@@ -171,14 +167,10 @@ const Gfx dorrie_seg6_dl_0600BAF8[] = {
};
// 0x0600BBC0
-static const Ambient dorrie_seg6_light_0600BBC0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600BBC8
-static const Light dorrie_seg6_light_0600BBC8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600BBC0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600BBD8
static const Vtx dorrie_seg6_vertex_0600BBD8[] = {
@@ -238,8 +230,8 @@ const Gfx dorrie_seg6_dl_0600BE68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_0600ADA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600BBC8, 1),
- gsSPLight(&dorrie_seg6_light_0600BBC0, 2),
+ gsSPLight(&dorrie_seg6_lights_0600BBC0.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600BBC0.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600BBD8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 0, 5, 1, 0x0),
@@ -306,14 +298,10 @@ const Gfx dorrie_seg6_dl_0600C030[] = {
};
// 0x0600C0F8
-static const Ambient dorrie_seg6_light_0600C0F8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600C100
-static const Light dorrie_seg6_light_0600C100 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600C0F8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600C110
static const Vtx dorrie_seg6_vertex_0600C110[] = {
@@ -360,8 +348,8 @@ const Gfx dorrie_seg6_dl_0600C310[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600C100, 1),
- gsSPLight(&dorrie_seg6_light_0600C0F8, 2),
+ gsSPLight(&dorrie_seg6_lights_0600C0F8.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600C0F8.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600C110, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 7, 0x0, 4, 8, 7, 0x0),
@@ -411,14 +399,10 @@ const Gfx dorrie_seg6_dl_0600C468[] = {
};
// 0x0600C510
-static const Ambient dorrie_seg6_light_0600C510 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600C518
-static const Light dorrie_seg6_light_0600C518 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600C510 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600C528
static const Vtx dorrie_seg6_vertex_0600C528[] = {
@@ -472,8 +456,8 @@ const Gfx dorrie_seg6_dl_0600C758[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600C518, 1),
- gsSPLight(&dorrie_seg6_light_0600C510, 2),
+ gsSPLight(&dorrie_seg6_lights_0600C510.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600C510.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600C528, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 4, 6, 0x0),
@@ -524,14 +508,10 @@ const Gfx dorrie_seg6_dl_0600C8B8[] = {
};
// 0x0600C960
-static const Ambient dorrie_seg6_light_0600C960 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600C968
-static const Light dorrie_seg6_light_0600C968 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600C960 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600C978
static const Vtx dorrie_seg6_vertex_0600C978[] = {
@@ -629,8 +609,8 @@ const Gfx dorrie_seg6_dl_0600CDE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600C968, 1),
- gsSPLight(&dorrie_seg6_light_0600C960, 2),
+ gsSPLight(&dorrie_seg6_lights_0600C960.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600C960.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600C978, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 0, 0x0),
@@ -691,14 +671,10 @@ const Gfx dorrie_seg6_dl_0600CFD0[] = {
};
// 0x0600D078
-static const Ambient dorrie_seg6_light_0600D078 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600D080
-static const Light dorrie_seg6_light_0600D080 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600D078 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600D090
static const Vtx dorrie_seg6_vertex_0600D090[] = {
@@ -756,8 +732,8 @@ const Gfx dorrie_seg6_dl_0600D300[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600D080, 1),
- gsSPLight(&dorrie_seg6_light_0600D078, 2),
+ gsSPLight(&dorrie_seg6_lights_0600D078.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600D078.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600D090, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 0, 0x0),
@@ -806,14 +782,10 @@ const Gfx dorrie_seg6_dl_0600D440[] = {
};
// 0x0600D4E8
-static const Ambient dorrie_seg6_light_0600D4E8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600D4F0
-static const Light dorrie_seg6_light_0600D4F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600D4E8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600D500
static const Vtx dorrie_seg6_vertex_0600D500[] = {
@@ -846,8 +818,8 @@ const Gfx dorrie_seg6_dl_0600D620[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600D4F0, 1),
- gsSPLight(&dorrie_seg6_light_0600D4E8, 2),
+ gsSPLight(&dorrie_seg6_lights_0600D4E8.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600D4E8.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600D500, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 3, 4, 1, 0x0),
@@ -887,14 +859,10 @@ const Gfx dorrie_seg6_dl_0600D6D8[] = {
};
// 0x0600D780
-static const Ambient dorrie_seg6_light_0600D780 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600D788
-static const Light dorrie_seg6_light_0600D788 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600D780 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600D798
static const Vtx dorrie_seg6_vertex_0600D798[] = {
@@ -913,8 +881,8 @@ const Gfx dorrie_seg6_dl_0600D818[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600D788, 1),
- gsSPLight(&dorrie_seg6_light_0600D780, 2),
+ gsSPLight(&dorrie_seg6_lights_0600D780.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600D780.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600D798, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 2, 1, 5, 0x0, 2, 6, 3, 0x0),
@@ -951,14 +919,10 @@ const Gfx dorrie_seg6_dl_0600D8B0[] = {
};
// 0x0600D958
-static const Ambient dorrie_seg6_light_0600D958 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600D960
-static const Light dorrie_seg6_light_0600D960 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600D958 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600D970
static const Vtx dorrie_seg6_vertex_0600D970[] = {
@@ -977,8 +941,8 @@ const Gfx dorrie_seg6_dl_0600D9F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600D960, 1),
- gsSPLight(&dorrie_seg6_light_0600D958, 2),
+ gsSPLight(&dorrie_seg6_lights_0600D958.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600D958.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600D970, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 1, 5, 3, 0x0, 2, 1, 4, 0x0),
@@ -1015,14 +979,10 @@ const Gfx dorrie_seg6_dl_0600DA88[] = {
};
// 0x0600DB30
-static const Ambient dorrie_seg6_light_0600DB30 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600DB38
-static const Light dorrie_seg6_light_0600DB38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600DB30 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600DB48
static const Vtx dorrie_seg6_vertex_0600DB48[] = {
@@ -1041,8 +1001,8 @@ const Gfx dorrie_seg6_dl_0600DBC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600DB38, 1),
- gsSPLight(&dorrie_seg6_light_0600DB30, 2),
+ gsSPLight(&dorrie_seg6_lights_0600DB30.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600DB30.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600DB48, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 1, 3, 4, 0x0),
@@ -1079,14 +1039,10 @@ const Gfx dorrie_seg6_dl_0600DC60[] = {
};
// 0x0600DD08
-static const Ambient dorrie_seg6_light_0600DD08 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0600DD10
-static const Light dorrie_seg6_light_0600DD10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 dorrie_seg6_lights_0600DD08 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600DD20
static const Vtx dorrie_seg6_vertex_0600DD20[] = {
@@ -1105,8 +1061,8 @@ const Gfx dorrie_seg6_dl_0600DDA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, dorrie_seg6_texture_06009DA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&dorrie_seg6_light_0600DD10, 1),
- gsSPLight(&dorrie_seg6_light_0600DD08, 2),
+ gsSPLight(&dorrie_seg6_lights_0600DD08.l, 1),
+ gsSPLight(&dorrie_seg6_lights_0600DD08.a, 2),
gsSPVertex(dorrie_seg6_vertex_0600DD20, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 0, 4, 5, 0x0, 0, 6, 3, 0x0),
diff --git a/actors/exclamation_box/model.inc.c b/actors/exclamation_box/model.inc.c
@@ -1,14 +1,10 @@
// Exclamation Box
// 0x08012E10
-static const Ambient exclamation_box_seg8_light_08012E10 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x08012E18
-static const Light exclamation_box_seg8_light_08012E18 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_seg8_lights_08012E10 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08012E28
ALIGNED8 static const u8 exclamation_box_seg8_texture_08012E28[] = {
@@ -84,8 +80,8 @@ static const Vtx exclamation_box_seg8_vertex_08018F28[] = {
// 0x08018FA8 - 0x08019008
const Gfx exclamation_box_seg8_dl_08018FA8[] = {
- gsSPLight(&exclamation_box_seg8_light_08012E18, 1),
- gsSPLight(&exclamation_box_seg8_light_08012E10, 2),
+ gsSPLight(&exclamation_box_seg8_lights_08012E10.l, 1),
+ gsSPLight(&exclamation_box_seg8_lights_08012E10.a, 2),
gsSPVertex(exclamation_box_seg8_vertex_08018E28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -153,8 +149,8 @@ static const Vtx exclamation_box_seg8_vertex_080191A0[] = {
// 0x08019220 - 0x08019280
const Gfx exclamation_box_seg8_dl_08019220[] = {
- gsSPLight(&exclamation_box_seg8_light_08012E18, 1),
- gsSPLight(&exclamation_box_seg8_light_08012E10, 2),
+ gsSPLight(&exclamation_box_seg8_lights_08012E10.l, 1),
+ gsSPLight(&exclamation_box_seg8_lights_08012E10.a, 2),
gsSPVertex(exclamation_box_seg8_vertex_080190A0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/exclamation_box_outline/model.inc.c b/actors/exclamation_box_outline/model.inc.c
@@ -1,44 +1,28 @@
// Exclamation Box Outline
// 0x08024CB8
-static const Ambient exclamation_box_outline_seg8_light_08024CB8 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x08024CC0
-static const Light exclamation_box_outline_seg8_light_08024CC0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_outline_seg8_lights_08024CB8 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x08024CD0
-static const Ambient exclamation_box_outline_seg8_light_08024CD0 = {
- {{0x00, 0x7f, 0x00}, 0, {0x00, 0x7f, 0x00}, 0}
-};
-
-// 0x08024CD8
-static const Light exclamation_box_outline_seg8_light_08024CD8 = {
- {{0x00, 0xff, 0x00}, 0, {0x00, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_outline_seg8_lights_08024CD0 = gdSPDefLights1(
+ 0x00, 0x7f, 0x00,
+ 0x00, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// 0x08024CE8
-static const Ambient exclamation_box_outline_seg8_light_08024CE8 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x08024CF0
-static const Light exclamation_box_outline_seg8_light_08024CF0 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_outline_seg8_lights_08024CE8 = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x28, 0x28, 0x28
+);
// 0x08024D00
-static const Ambient exclamation_box_outline_seg8_light_08024D00 = {
- {{0x7f, 0x6a, 0x00}, 0, {0x7f, 0x6a, 0x00}, 0}
-};
-
-// 0x08024D08
-static const Light exclamation_box_outline_seg8_light_08024D08 = {
- {{0xff, 0xd4, 0x00}, 0, {0xff, 0xd4, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_outline_seg8_lights_08024D00 = gdSPDefLights1(
+ 0x7f, 0x6a, 0x00,
+ 0xff, 0xd4, 0x00, 0x28, 0x28, 0x28
+);
// 0x08024D18
static const Vtx exclamation_box_outline_seg8_vertex_08024D18[] = {
@@ -110,32 +94,32 @@ const Gfx exclamation_box_outline_seg8_dl_08024F58[] = {
// 0x08024F88 - 0x08024FA8
const Gfx exclamation_box_outline_seg8_dl_08024F88[] = {
gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CC0, 1),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CB8, 2),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CB8.l, 1),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CB8.a, 2),
gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),
};
// 0x08024FA8 - 0x08024FC8
const Gfx exclamation_box_outline_seg8_dl_08024FA8[] = {
gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CD8, 1),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CD0, 2),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CD0.l, 1),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CD0.a, 2),
gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),
};
// 0x08024FC8 - 0x08024FE8
const Gfx exclamation_box_outline_seg8_dl_08024FC8[] = {
gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CF0, 1),
- gsSPLight(&exclamation_box_outline_seg8_light_08024CE8, 2),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CE8.l, 1),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024CE8.a, 2),
gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),
};
// 0x08024FE8 - 0x08025008
const Gfx exclamation_box_outline_seg8_dl_08024FE8[] = {
gsSPDisplayList(exclamation_box_outline_seg8_dl_08024F30),
- gsSPLight(&exclamation_box_outline_seg8_light_08024D08, 1),
- gsSPLight(&exclamation_box_outline_seg8_light_08024D00, 2),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024D00.l, 1),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08024D00.a, 2),
gsSPBranchList(exclamation_box_outline_seg8_dl_08024F58),
};
@@ -209,14 +193,10 @@ const Gfx exclamation_box_outline_seg8_dl_080259F8[] = {
};
// 0x08025A68
-static const Ambient exclamation_box_outline_seg8_light_08025A68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x08025A70
-static const Light exclamation_box_outline_seg8_light_08025A70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 exclamation_box_outline_seg8_lights_08025A68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08025A80
ALIGNED8 static const u8 exclamation_box_outline_seg8_texture_08025A80[] = {
@@ -236,8 +216,8 @@ const Gfx exclamation_box_outline_seg8_dl_08025EC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, exclamation_box_outline_seg8_texture_08025A80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&exclamation_box_outline_seg8_light_08025A70, 1),
- gsSPLight(&exclamation_box_outline_seg8_light_08025A68, 2),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08025A68.l, 1),
+ gsSPLight(&exclamation_box_outline_seg8_lights_08025A68.a, 2),
gsSPVertex(exclamation_box_outline_seg8_vertex_08025E80, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/eyerok/model.inc.c b/actors/eyerok/model.inc.c
@@ -1,14 +1,10 @@
// Eyerok
-// Unreferenced light
-UNUSED static const Ambient eyerok_light_1 = {
- {{0x3f, 0x2a, 0x16}, 0, {0x3f, 0x2a, 0x16}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light eyerok_light_2 = {
- {{0xff, 0xa9, 0x5b}, 0, {0xff, 0xa9, 0x5b}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 eyerok_lights_unused = gdSPDefLights1(
+ 0x3f, 0x2a, 0x16,
+ 0xff, 0xa9, 0x5b, 0x28, 0x28, 0x28
+);
// 0x05008D40
ALIGNED8 static const u8 eyerok_seg5_texture_05008D40[] = {
@@ -36,14 +32,10 @@ ALIGNED8 static const u8 eyerok_seg5_texture_0500AD40[] = {
};
// 0x0500B540
-static const Ambient eyerok_seg5_light_0500B540 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B548
-static const Light eyerok_seg5_light_0500B548 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500B540 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B558
static const Vtx eyerok_seg5_vertex_0500B558[] = {
@@ -80,8 +72,8 @@ const Gfx eyerok_seg5_dl_0500B6B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500B548, 1),
- gsSPLight(&eyerok_seg5_light_0500B540, 2),
+ gsSPLight(&eyerok_seg5_lights_0500B540.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500B540.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500B558, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
@@ -112,14 +104,10 @@ const Gfx eyerok_seg5_dl_0500B748[] = {
};
// 0x0500B7B8
-static const Ambient eyerok_seg5_light_0500B7B8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B7C0
-static const Light eyerok_seg5_light_0500B7C0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500B7B8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B7D0
static const Vtx eyerok_seg5_vertex_0500B7D0[] = {
@@ -156,8 +144,8 @@ const Gfx eyerok_seg5_dl_0500B930[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500B7C0, 1),
- gsSPLight(&eyerok_seg5_light_0500B7B8, 2),
+ gsSPLight(&eyerok_seg5_lights_0500B7B8.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500B7B8.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500B7D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -188,14 +176,10 @@ const Gfx eyerok_seg5_dl_0500B9C0[] = {
};
// 0x0500BA30
-static const Ambient eyerok_seg5_light_0500BA30 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BA38
-static const Light eyerok_seg5_light_0500BA38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500BA30 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BA48
static const Vtx eyerok_seg5_vertex_0500BA48[] = {
@@ -236,8 +220,8 @@ const Gfx eyerok_seg5_dl_0500BBE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500BA38, 1),
- gsSPLight(&eyerok_seg5_light_0500BA30, 2),
+ gsSPLight(&eyerok_seg5_lights_0500BA30.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500BA30.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500BA48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -269,14 +253,10 @@ const Gfx eyerok_seg5_dl_0500BC88[] = {
};
// 0x0500BCF8
-static const Ambient eyerok_seg5_light_0500BCF8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BD00
-static const Light eyerok_seg5_light_0500BD00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500BCF8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BD10
static const Vtx eyerok_seg5_vertex_0500BD10[] = {
@@ -313,8 +293,8 @@ const Gfx eyerok_seg5_dl_0500BE70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500BD00, 1),
- gsSPLight(&eyerok_seg5_light_0500BCF8, 2),
+ gsSPLight(&eyerok_seg5_lights_0500BCF8.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500BCF8.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500BD10, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -345,14 +325,10 @@ const Gfx eyerok_seg5_dl_0500BF00[] = {
};
// 0x0500BF70
-static const Ambient eyerok_seg5_light_0500BF70 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BF78
-static const Light eyerok_seg5_light_0500BF78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500BF70 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BF88
static const Vtx eyerok_seg5_vertex_0500BF88[] = {
@@ -379,8 +355,8 @@ const Gfx eyerok_seg5_dl_0500C088[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500BF78, 1),
- gsSPLight(&eyerok_seg5_light_0500BF70, 2),
+ gsSPLight(&eyerok_seg5_lights_0500BF70.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500BF70.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500BF88, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -408,14 +384,10 @@ const Gfx eyerok_seg5_dl_0500C100[] = {
};
// 0x0500C170
-static const Ambient eyerok_seg5_light_0500C170 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C178
-static const Light eyerok_seg5_light_0500C178 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500C170 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C188
static const Vtx eyerok_seg5_vertex_0500C188[] = {
@@ -452,8 +424,8 @@ const Gfx eyerok_seg5_dl_0500C2E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500C178, 1),
- gsSPLight(&eyerok_seg5_light_0500C170, 2),
+ gsSPLight(&eyerok_seg5_lights_0500C170.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500C170.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500C188, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -484,14 +456,10 @@ const Gfx eyerok_seg5_dl_0500C378[] = {
};
// 0x0500C3E8
-static const Ambient eyerok_seg5_light_0500C3E8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C3F0
-static const Light eyerok_seg5_light_0500C3F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500C3E8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C400
static const Vtx eyerok_seg5_vertex_0500C400[] = {
@@ -532,8 +500,8 @@ const Gfx eyerok_seg5_dl_0500C5A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500C3F0, 1),
- gsSPLight(&eyerok_seg5_light_0500C3E8, 2),
+ gsSPLight(&eyerok_seg5_lights_0500C3E8.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500C3E8.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500C400, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -565,14 +533,10 @@ const Gfx eyerok_seg5_dl_0500C640[] = {
};
// 0x0500C6B0
-static const Ambient eyerok_seg5_light_0500C6B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C6B8
-static const Light eyerok_seg5_light_0500C6B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 eyerok_seg5_lights_0500C6B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C6C8
static const Vtx eyerok_seg5_vertex_0500C6C8[] = {
@@ -613,8 +577,8 @@ const Gfx eyerok_seg5_dl_0500C868[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, eyerok_seg5_texture_05008D40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&eyerok_seg5_light_0500C6B8, 1),
- gsSPLight(&eyerok_seg5_light_0500C6B0, 2),
+ gsSPLight(&eyerok_seg5_lights_0500C6B0.l, 1),
+ gsSPLight(&eyerok_seg5_lights_0500C6B0.a, 2),
gsSPVertex(eyerok_seg5_vertex_0500C6C8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/flyguy/model.inc.c b/actors/flyguy/model.inc.c
@@ -18,75 +18,47 @@ ALIGNED8 static const u8 flyguy_seg8_texture_0800F888[] = {
#include "actors/flyguy/flyguy_propeller.ia16.inc.c"
};
-// Unreferenced light
-UNUSED static const Ambient flyguy_light_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light flyguy_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 flyguy_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x080100A0
-static const Ambient flyguy_seg8_light_080100A0 = {
- {{0x00, 0x1f, 0x33}, 0, {0x00, 0x1f, 0x33}, 0}
-};
-
-// 0x080100A8
-static const Light flyguy_seg8_light_080100A8 = {
- {{0x02, 0x7f, 0xcc}, 0, {0x02, 0x7f, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_080100A0 = gdSPDefLights1(
+ 0x00, 0x1f, 0x33,
+ 0x02, 0x7f, 0xcc, 0x28, 0x28, 0x28
+);
// 0x080100B8
-static const Ambient flyguy_seg8_light_080100B8 = {
- {{0x3f, 0x32, 0x08}, 0, {0x3f, 0x32, 0x08}, 0}
-};
-
-// 0x080100C0
-static const Light flyguy_seg8_light_080100C0 = {
- {{0xff, 0xc8, 0x23}, 0, {0xff, 0xc8, 0x23}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient flyguy_light_3 = {
- {{0x3a, 0x2f, 0x04}, 0, {0x3a, 0x2f, 0x04}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light flyguy_light_4 = {
- {{0xe8, 0xbd, 0x13}, 0, {0xe8, 0xbd, 0x13}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient flyguy_light_5 = {
- {{0x2c, 0x00, 0x00}, 0, {0x2c, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light flyguy_light_6 = {
- {{0xb2, 0x00, 0x00}, 0, {0xb2, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient flyguy_light_7 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light flyguy_light_8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient flyguy_light_9 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light flyguy_light_10 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_080100B8 = gdSPDefLights1(
+ 0x3f, 0x32, 0x08,
+ 0xff, 0xc8, 0x23, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 flyguy_lights_unused2 = gdSPDefLights1(
+ 0x3a, 0x2f, 0x04,
+ 0xe8, 0xbd, 0x13, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 flyguy_lights_unused3 = gdSPDefLights1(
+ 0x2c, 0x00, 0x00,
+ 0xb2, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 flyguy_lights_unused4 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 flyguy_lights_unused5 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x08010130
static const Vtx flyguy_seg8_vertex_08010130[] = {
@@ -239,8 +211,8 @@ static const Vtx flyguy_seg8_vertex_08010770[] = {
// 0x08010840 - 0x08010968
const Gfx flyguy_seg8_dl_08010840[] = {
- gsSPLight(&flyguy_seg8_light_080100A8, 1),
- gsSPLight(&flyguy_seg8_light_080100A0, 2),
+ gsSPLight(&flyguy_seg8_lights_080100A0.l, 1),
+ gsSPLight(&flyguy_seg8_lights_080100A0.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010130, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
@@ -266,8 +238,8 @@ const Gfx flyguy_seg8_dl_08010840[] = {
// 0x08010968 - 0x08010A90
const Gfx flyguy_seg8_dl_08010968[] = {
- gsSPLight(&flyguy_seg8_light_080100A8, 1),
- gsSPLight(&flyguy_seg8_light_080100A0, 2),
+ gsSPLight(&flyguy_seg8_lights_080100A0.l, 1),
+ gsSPLight(&flyguy_seg8_lights_080100A0.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010460, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -293,8 +265,8 @@ const Gfx flyguy_seg8_dl_08010968[] = {
// 0x08010A90 - 0x08010AE0
const Gfx flyguy_seg8_dl_08010A90[] = {
- gsSPLight(&flyguy_seg8_light_080100C0, 1),
- gsSPLight(&flyguy_seg8_light_080100B8, 2),
+ gsSPLight(&flyguy_seg8_lights_080100B8.l, 1),
+ gsSPLight(&flyguy_seg8_lights_080100B8.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010770, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 0, 2, 0x0, 7, 8, 9, 0x0),
@@ -303,14 +275,10 @@ const Gfx flyguy_seg8_dl_08010A90[] = {
};
// 0x08010AE0
-static const Ambient flyguy_seg8_light_08010AE0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x08010AE8
-static const Light flyguy_seg8_light_08010AE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_08010AE0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08010AF8
static const Vtx flyguy_seg8_vertex_08010AF8[] = {
@@ -325,8 +293,8 @@ const Gfx flyguy_seg8_dl_08010B38[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800F888),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&flyguy_seg8_light_08010AE8, 1),
- gsSPLight(&flyguy_seg8_light_08010AE0, 2),
+ gsSPLight(&flyguy_seg8_lights_08010AE0.l, 1),
+ gsSPLight(&flyguy_seg8_lights_08010AE0.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010AF8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -351,34 +319,22 @@ const Gfx flyguy_seg8_dl_08010B80[] = {
};
// 0x08010BF0
-static const Ambient flyguy_seg8_light_08010BF0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x08010BF8
-static const Light flyguy_seg8_light_08010BF8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_08010BF0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08010C08
-static const Ambient flyguy_seg8_light_08010C08 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x08010C10
-static const Light flyguy_seg8_light_08010C10 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_08010C08 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x08010C20
-static const Ambient flyguy_seg8_light_08010C20 = {
- {{0x62, 0x00, 0x13}, 0, {0x62, 0x00, 0x13}, 0}
-};
-
-// 0x08010C28
-static const Light flyguy_seg8_light_08010C28 = {
- {{0xc4, 0x00, 0x26}, 0, {0xc4, 0x00, 0x26}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 flyguy_seg8_lights_08010C20 = gdSPDefLights1(
+ 0x62, 0x00, 0x13,
+ 0xc4, 0x00, 0x26, 0x28, 0x28, 0x28
+);
// 0x08010C38
static const Vtx flyguy_seg8_vertex_08010C38[] = {
@@ -544,8 +500,8 @@ const Gfx flyguy_seg8_dl_080113A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800F088),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&flyguy_seg8_light_08010BF8, 1),
- gsSPLight(&flyguy_seg8_light_08010BF0, 2),
+ gsSPLight(&flyguy_seg8_lights_08010BF0.l, 1),
+ gsSPLight(&flyguy_seg8_lights_08010BF0.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010C38, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 1, 0, 0x0, 2, 5, 0, 0x0),
@@ -559,12 +515,12 @@ const Gfx flyguy_seg8_dl_08011420[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, flyguy_seg8_texture_0800E088),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&flyguy_seg8_light_08010C10, 1),
- gsSPLight(&flyguy_seg8_light_08010C08, 2),
+ gsSPLight(&flyguy_seg8_lights_08010C08.l, 1),
+ gsSPLight(&flyguy_seg8_lights_08010C08.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010CC8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&flyguy_seg8_light_08010C28, 1),
- gsSPLight(&flyguy_seg8_light_08010C20, 2),
+ gsSPLight(&flyguy_seg8_lights_08010C20.l, 1),
+ gsSPLight(&flyguy_seg8_lights_08010C20.a, 2),
gsSPVertex(flyguy_seg8_vertex_08010D28, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 5, 3, 0x0, 1, 4, 2, 0x0),
@@ -613,8 +569,8 @@ const Gfx flyguy_seg8_dl_08011420[] = {
// 0x080116D0 - 0x08011710
const Gfx flyguy_seg8_dl_080116D0[] = {
- gsSPLight(&flyguy_seg8_light_08010C10, 1),
- gsSPLight(&flyguy_seg8_light_08010C08, 2),
+ gsSPLight(&flyguy_seg8_lights_08010C08.l, 1),
+ gsSPLight(&flyguy_seg8_lights_08010C08.a, 2),
gsSPVertex(flyguy_seg8_vertex_08011348, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 1, 5, 4, 0x0),
diff --git a/actors/goomba/model.inc.c b/actors/goomba/model.inc.c
@@ -1,64 +1,40 @@
// Goomba
-// Unreferenced light
-UNUSED static const Ambient goomba_light_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light goomba_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient goomba_light_3 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light goomba_light_4 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 goomba_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 goomba_lights_unused2 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x080194D0
-static const Ambient goomba_seg8_light_080194D0 = {
- {{0x15, 0x0b, 0x04}, 0, {0x15, 0x0b, 0x04}, 0}
-};
-
-// 0x080194D8
-static const Light goomba_seg8_light_080194D8 = {
- {{0x54, 0x2e, 0x10}, 0, {0x54, 0x2e, 0x10}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 goomba_seg8_lights_080194D0 = gdSPDefLights1(
+ 0x15, 0x0b, 0x04,
+ 0x54, 0x2e, 0x10, 0x28, 0x28, 0x28
+);
// 0x080194E8
-static const Ambient goomba_seg8_light_080194E8 = {
- {{0x18, 0x0d, 0x04}, 0, {0x18, 0x0d, 0x04}, 0}
-};
-
-// 0x080194F0
-static const Light goomba_seg8_light_080194F0 = {
- {{0x61, 0x34, 0x13}, 0, {0x61, 0x34, 0x13}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 goomba_seg8_lights_080194E8 = gdSPDefLights1(
+ 0x18, 0x0d, 0x04,
+ 0x61, 0x34, 0x13, 0x28, 0x28, 0x28
+);
// 0x08019500
-static const Ambient goomba_seg8_light_08019500 = {
- {{0x1d, 0x10, 0x08}, 0, {0x1d, 0x10, 0x08}, 0}
-};
-
-// 0x08019508
-static const Light goomba_seg8_light_08019508 = {
- {{0x77, 0x42, 0x20}, 0, {0x77, 0x42, 0x20}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 goomba_seg8_lights_08019500 = gdSPDefLights1(
+ 0x1d, 0x10, 0x08,
+ 0x77, 0x42, 0x20, 0x28, 0x28, 0x28
+);
// 0x08019518
-static const Ambient goomba_seg8_light_08019518 = {
- {{0x37, 0x2d, 0x13}, 0, {0x37, 0x2d, 0x13}, 0}
-};
-
-// 0x08019520
-static const Light goomba_seg8_light_08019520 = {
- {{0xde, 0xb4, 0x4e}, 0, {0xde, 0xb4, 0x4e}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 goomba_seg8_lights_08019518 = gdSPDefLights1(
+ 0x37, 0x2d, 0x13,
+ 0xde, 0xb4, 0x4e, 0x28, 0x28, 0x28
+);
// 0x08019530
ALIGNED8 static const u8 goomba_seg8_texture_08019530[] = {
@@ -76,14 +52,10 @@ ALIGNED8 static const u8 goomba_seg8_texture_0801A530[] = {
};
// 0x0801AD30
-static const Ambient goomba_seg8_light_0801AD30 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0801AD38
-static const Light goomba_seg8_light_0801AD38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 goomba_seg8_lights_0801AD30 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0801AD48
static const Vtx goomba_seg8_vertex_0801AD48[] = {
@@ -201,8 +173,8 @@ static const Vtx goomba_seg8_vertex_0801B238[] = {
// 0x0801B2E8 - 0x0801B560
const Gfx goomba_seg8_dl_0801B2E8[] = {
- gsSPLight(&goomba_seg8_light_0801AD38, 1),
- gsSPLight(&goomba_seg8_light_0801AD30, 2),
+ gsSPLight(&goomba_seg8_lights_0801AD30.l, 1),
+ gsSPLight(&goomba_seg8_lights_0801AD30.a, 2),
gsSPVertex(goomba_seg8_vertex_0801AD48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 5, 4, 0x0, 5, 7, 3, 0x0),
@@ -800,8 +772,8 @@ static const Vtx goomba_seg8_vertex_0801CDF0[] = {
// 0x0801CE20 - 0x0801CF78
const Gfx goomba_seg8_dl_0801CE20[] = {
- gsSPLight(&goomba_seg8_light_080194D8, 1),
- gsSPLight(&goomba_seg8_light_080194D0, 2),
+ gsSPLight(&goomba_seg8_lights_080194D0.l, 1),
+ gsSPLight(&goomba_seg8_lights_080194D0.a, 2),
gsSPVertex(goomba_seg8_vertex_0801B700, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -829,8 +801,8 @@ const Gfx goomba_seg8_dl_0801CE20[] = {
// 0x0801CF78 - 0x0801D0D0
const Gfx goomba_seg8_dl_0801CF78[] = {
- gsSPLight(&goomba_seg8_light_080194F0, 1),
- gsSPLight(&goomba_seg8_light_080194E8, 2),
+ gsSPLight(&goomba_seg8_lights_080194E8.l, 1),
+ gsSPLight(&goomba_seg8_lights_080194E8.a, 2),
gsSPVertex(goomba_seg8_vertex_0801BA50, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 2, 0x0),
@@ -858,8 +830,8 @@ const Gfx goomba_seg8_dl_0801CF78[] = {
// 0x0801D0D0 - 0x0801D360
const Gfx goomba_seg8_dl_0801D0D0[] = {
- gsSPLight(&goomba_seg8_light_08019508, 1),
- gsSPLight(&goomba_seg8_light_08019500, 2),
+ gsSPLight(&goomba_seg8_lights_08019500.l, 1),
+ gsSPLight(&goomba_seg8_lights_08019500.a, 2),
gsSPVertex(goomba_seg8_vertex_0801BDC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -910,8 +882,8 @@ const Gfx goomba_seg8_dl_0801D0D0[] = {
// 0x0801D360 - 0x0801D760
const Gfx goomba_seg8_dl_0801D360[] = {
- gsSPLight(&goomba_seg8_light_08019520, 1),
- gsSPLight(&goomba_seg8_light_08019518, 2),
+ gsSPLight(&goomba_seg8_lights_08019518.l, 1),
+ gsSPLight(&goomba_seg8_lights_08019518.a, 2),
gsSPVertex(goomba_seg8_vertex_0801C620, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 1, 0x0, 4, 1, 0, 0x0),
@@ -985,6 +957,6 @@ const Gfx goomba_seg8_dl_0801D360[] = {
// 0x0801D760 - 0x0801D770
const Gfx goomba_seg8_dl_0801D760[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPEndDisplayList(),
};
diff --git a/actors/haunted_cage/model.inc.c b/actors/haunted_cage/model.inc.c
@@ -1,24 +1,16 @@
// Haunted Cage
// 0x0500C258
-static const Ambient haunted_cage_seg5_light_0500C258 = {
- {{0x39, 0x0c, 0x0e}, 0, {0x39, 0x0c, 0x0e}, 0}
-};
-
-// 0x0500C260
-static const Light haunted_cage_seg5_light_0500C260 = {
- {{0x90, 0x1e, 0x25}, 0, {0x90, 0x1e, 0x25}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 haunted_cage_seg5_lights_0500C258 = gdSPDefLights1(
+ 0x39, 0x0c, 0x0e,
+ 0x90, 0x1e, 0x25, 0x28, 0x28, 0x28
+);
// 0x0500C270
-static const Ambient haunted_cage_seg5_light_0500C270 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x0500C278
-static const Light haunted_cage_seg5_light_0500C278 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 haunted_cage_seg5_lights_0500C270 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x0500C288
ALIGNED8 static const u8 haunted_cage_seg5_texture_0500C288[] = {
@@ -270,8 +262,8 @@ const Gfx haunted_cage_seg5_dl_0500F4C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500D288),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&haunted_cage_seg5_light_0500C260, 1),
- gsSPLight(&haunted_cage_seg5_light_0500C258, 2),
+ gsSPLight(&haunted_cage_seg5_lights_0500C258.l, 1),
+ gsSPLight(&haunted_cage_seg5_lights_0500C258.a, 2),
gsSPVertex(haunted_cage_seg5_vertex_0500EA88, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -282,8 +274,8 @@ const Gfx haunted_cage_seg5_dl_0500F4C8[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(haunted_cage_seg5_vertex_0500EC68, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&haunted_cage_seg5_light_0500C278, 1),
- gsSPLight(&haunted_cage_seg5_light_0500C270, 2),
+ gsSPLight(&haunted_cage_seg5_lights_0500C270.l, 1),
+ gsSPLight(&haunted_cage_seg5_lights_0500C270.a, 2),
gsSPVertex(haunted_cage_seg5_vertex_0500ECC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 3, 9, 4, 0x0),
@@ -369,14 +361,10 @@ const Gfx haunted_cage_seg5_dl_0500F7D8[] = {
};
// 0x0500F888
-static const Ambient haunted_cage_seg5_light_0500F888 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0500F890
-static const Light haunted_cage_seg5_light_0500F890 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 haunted_cage_seg5_lights_0500F888 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500F8A0
static const Vtx haunted_cage_seg5_vertex_0500F8A0[] = {
@@ -437,8 +425,8 @@ const Gfx haunted_cage_seg5_dl_0500FB40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500D688),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&haunted_cage_seg5_light_0500F890, 1),
- gsSPLight(&haunted_cage_seg5_light_0500F888, 2),
+ gsSPLight(&haunted_cage_seg5_lights_0500F888.l, 1),
+ gsSPLight(&haunted_cage_seg5_lights_0500F888.a, 2),
gsSPVertex(haunted_cage_seg5_vertex_0500F8A0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -475,14 +463,10 @@ const Gfx haunted_cage_seg5_dl_0500FC28[] = {
};
// 0x0500FC98
-static const Ambient haunted_cage_seg5_light_0500FC98 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// 0x0500FCA0
-static const Light haunted_cage_seg5_light_0500FCA0 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 haunted_cage_seg5_lights_0500FC98 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x0500FCB0
static const Vtx haunted_cage_seg5_vertex_0500FCB0[] = {
@@ -557,8 +541,8 @@ const Gfx haunted_cage_seg5_dl_0500FFF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, haunted_cage_seg5_texture_0500DA88),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&haunted_cage_seg5_light_0500FCA0, 1),
- gsSPLight(&haunted_cage_seg5_light_0500FC98, 2),
+ gsSPLight(&haunted_cage_seg5_lights_0500FC98.l, 1),
+ gsSPLight(&haunted_cage_seg5_lights_0500FC98.a, 2),
gsSPVertex(haunted_cage_seg5_vertex_0500FCB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/heave_ho/model.inc.c b/actors/heave_ho/model.inc.c
@@ -1,74 +1,46 @@
// Heave Ho
-// Unreferenced light
-UNUSED static const Ambient heave_ho_light_1 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light heave_ho_light_2 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient heave_ho_light_3 = {
- {{0x3f, 0x38, 0x00}, 0, {0x3f, 0x38, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light heave_ho_light_4 = {
- {{0xff, 0xe3, 0x00}, 0, {0xff, 0xe3, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient heave_ho_light_5 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light heave_ho_light_6 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+static const Lights1 heave_ho_lights_unused1 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+static const Lights1 heave_ho_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x38, 0x00,
+ 0xff, 0xe3, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+static const Lights1 heave_ho_lights_unused3 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0500E968
-static const Ambient heave_ho_seg5_light_0500E968 = {
- {{0x14, 0x14, 0x15}, 0, {0x14, 0x14, 0x15}, 0}
-};
-
-// 0x0500E970
-static const Light heave_ho_seg5_light_0500E970 = {
- {{0x50, 0x50, 0x54}, 0, {0x50, 0x50, 0x54}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_0500E968 = gdSPDefLights1(
+ 0x14, 0x14, 0x15,
+ 0x50, 0x50, 0x54, 0x28, 0x28, 0x28
+);
// 0x0500E980
-static const Ambient heave_ho_seg5_light_0500E980 = {
- {{0x73, 0x3f, 0x32}, 0, {0x73, 0x3f, 0x32}, 0}
-};
-
-// 0x0500E988
-static const Light heave_ho_seg5_light_0500E988 = {
- {{0xff, 0xe0, 0x85}, 0, {0xff, 0xe0, 0x85}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient heave_ho_light_7 = {
- {{0x3b, 0x38, 0x21}, 0, {0x3b, 0x38, 0x21}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light heave_ho_light_8 = {
- {{0xec, 0xe3, 0x84}, 0, {0xec, 0xe3, 0x84}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient heave_ho_light_9 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light heave_ho_light_10 = {
- {{0xc8, 0xc8, 0xc8}, 0, {0xc8, 0xc8, 0xc8}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_0500E980 = gdSPDefLights1(
+ 0x73, 0x3f, 0x32,
+ 0xff, 0xe0, 0x85, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+static const Lights1 heave_ho_lights_unused4 = gdSPDefLights1(
+ 0x3b, 0x38, 0x21,
+ 0xec, 0xe3, 0x84, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+static const Lights1 heave_ho_lights_unused5 = gdSPDefLights1(
+ 0x32, 0x32, 0x32,
+ 0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28
+);
// 0x0500E9C8
ALIGNED8 static const u8 heave_ho_seg5_texture_0500E9C8[] = {
@@ -101,24 +73,16 @@ ALIGNED8 static const u8 heave_ho_seg5_texture_050113C8[] = {
};
// 0x05011BC8
-static const Ambient heave_ho_seg5_light_05011BC8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05011BD0
-static const Light heave_ho_seg5_light_05011BD0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05011BC8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05011BE0
-static const Ambient heave_ho_seg5_light_05011BE0 = {
- {{0x40, 0x00, 0x0d}, 0, {0x40, 0x00, 0x0d}, 0}
-};
-
-// 0x05011BE8
-static const Light heave_ho_seg5_light_05011BE8 = {
- {{0x81, 0x01, 0x1a}, 0, {0x81, 0x01, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05011BE0 = gdSPDefLights1(
+ 0x40, 0x00, 0x0d,
+ 0x81, 0x01, 0x1a, 0x28, 0x28, 0x28
+);
// 0x05011BF8
static const Vtx heave_ho_seg5_vertex_05011BF8[] = {
@@ -167,8 +131,8 @@ const Gfx heave_ho_seg5_dl_05011D98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_0500E9C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&heave_ho_seg5_light_05011BD0, 1),
- gsSPLight(&heave_ho_seg5_light_05011BC8, 2),
+ gsSPLight(&heave_ho_seg5_lights_05011BC8.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05011BC8.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05011BF8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -199,8 +163,8 @@ const Gfx heave_ho_seg5_dl_05011E28[] = {
// 0x05011E80 - 0x05011EC0
const Gfx heave_ho_seg5_dl_05011E80[] = {
- gsSPLight(&heave_ho_seg5_light_05011BE8, 1),
- gsSPLight(&heave_ho_seg5_light_05011BE0, 2),
+ gsSPLight(&heave_ho_seg5_lights_05011BE0.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05011BE0.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05011D38, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 5, 1, 0x0),
@@ -230,24 +194,16 @@ const Gfx heave_ho_seg5_dl_05011EC0[] = {
};
// 0x05011F50
-static const Ambient heave_ho_seg5_light_05011F50 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05011F58
-static const Light heave_ho_seg5_light_05011F58 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05011F50 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05011F68
-static const Ambient heave_ho_seg5_light_05011F68 = {
- {{0x4c, 0x00, 0x16}, 0, {0x4c, 0x00, 0x16}, 0}
-};
-
-// 0x05011F70
-static const Light heave_ho_seg5_light_05011F70 = {
- {{0x99, 0x00, 0x2d}, 0, {0x99, 0x00, 0x2d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05011F68 = gdSPDefLights1(
+ 0x4c, 0x00, 0x16,
+ 0x99, 0x00, 0x2d, 0x28, 0x28, 0x28
+);
// 0x05011F80
static const Vtx heave_ho_seg5_vertex_05011F80[] = {
@@ -280,8 +236,8 @@ const Gfx heave_ho_seg5_dl_050120A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050109C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&heave_ho_seg5_light_05011F58, 1),
- gsSPLight(&heave_ho_seg5_light_05011F50, 2),
+ gsSPLight(&heave_ho_seg5_lights_05011F50.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05011F50.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05011F80, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 7, 8, 9, 0x0),
@@ -291,8 +247,8 @@ const Gfx heave_ho_seg5_dl_050120A0[] = {
// 0x05012100 - 0x05012148
const Gfx heave_ho_seg5_dl_05012100[] = {
- gsSPLight(&heave_ho_seg5_light_05011F70, 1),
- gsSPLight(&heave_ho_seg5_light_05011F68, 2),
+ gsSPLight(&heave_ho_seg5_lights_05011F68.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05011F68.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012030, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 3, 5, 4, 0x0),
@@ -318,24 +274,16 @@ const Gfx heave_ho_seg5_dl_05012148[] = {
};
// 0x050121B0
-static const Ambient heave_ho_seg5_light_050121B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050121B8
-static const Light heave_ho_seg5_light_050121B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_050121B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050121C8
-static const Ambient heave_ho_seg5_light_050121C8 = {
- {{0x4c, 0x00, 0x16}, 0, {0x4c, 0x00, 0x16}, 0}
-};
-
-// 0x050121D0
-static const Light heave_ho_seg5_light_050121D0 = {
- {{0x99, 0x00, 0x2d}, 0, {0x99, 0x00, 0x2d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_050121C8 = gdSPDefLights1(
+ 0x4c, 0x00, 0x16,
+ 0x99, 0x00, 0x2d, 0x28, 0x28, 0x28
+);
// 0x050121E0
static const Vtx heave_ho_seg5_vertex_050121E0[] = {
@@ -368,8 +316,8 @@ const Gfx heave_ho_seg5_dl_05012300[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050109C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&heave_ho_seg5_light_050121B8, 1),
- gsSPLight(&heave_ho_seg5_light_050121B0, 2),
+ gsSPLight(&heave_ho_seg5_lights_050121B0.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_050121B0.a, 2),
gsSPVertex(heave_ho_seg5_vertex_050121E0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 7, 8, 9, 0x0),
@@ -379,8 +327,8 @@ const Gfx heave_ho_seg5_dl_05012300[] = {
// 0x05012360 - 0x050123A8
const Gfx heave_ho_seg5_dl_05012360[] = {
- gsSPLight(&heave_ho_seg5_light_050121D0, 1),
- gsSPLight(&heave_ho_seg5_light_050121C8, 2),
+ gsSPLight(&heave_ho_seg5_lights_050121C8.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_050121C8.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012290, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 2, 4, 0x0, 4, 3, 6, 0x0),
@@ -406,24 +354,16 @@ const Gfx heave_ho_seg5_dl_050123A8[] = {
};
// 0x05012410
-static const Ambient heave_ho_seg5_light_05012410 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05012418
-static const Light heave_ho_seg5_light_05012418 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05012410 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05012428
-static const Ambient heave_ho_seg5_light_05012428 = {
- {{0x5d, 0x6d, 0x65}, 0, {0x5d, 0x6d, 0x65}, 0}
-};
-
-// 0x05012430
-static const Light heave_ho_seg5_light_05012430 = {
- {{0xbb, 0xda, 0xcb}, 0, {0xbb, 0xda, 0xcb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05012428 = gdSPDefLights1(
+ 0x5d, 0x6d, 0x65,
+ 0xbb, 0xda, 0xcb, 0x28, 0x28, 0x28
+);
// 0x05012440
static const Vtx heave_ho_seg5_vertex_05012440[] = {
@@ -456,8 +396,8 @@ const Gfx heave_ho_seg5_dl_05012560[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_0500F1C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&heave_ho_seg5_light_05012418, 1),
- gsSPLight(&heave_ho_seg5_light_05012410, 2),
+ gsSPLight(&heave_ho_seg5_lights_05012410.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05012410.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012440, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -465,8 +405,8 @@ const Gfx heave_ho_seg5_dl_05012560[] = {
// 0x050125A8 - 0x050125F8
const Gfx heave_ho_seg5_dl_050125A8[] = {
- gsSPLight(&heave_ho_seg5_light_05012430, 1),
- gsSPLight(&heave_ho_seg5_light_05012428, 2),
+ gsSPLight(&heave_ho_seg5_lights_05012428.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05012428.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012480, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
@@ -530,14 +470,10 @@ const Gfx heave_ho_seg5_dl_050126E8[] = {
};
// 0x05012758
-static const Ambient heave_ho_seg5_light_05012758 = {
- {{0x93, 0x73, 0x7c}, 0, {0x93, 0x73, 0x7c}, 0}
-};
-
-// 0x05012760
-static const Light heave_ho_seg5_light_05012760 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 heave_ho_seg5_lights_05012758 = gdSPDefLights1(
+ 0x93, 0x73, 0x7c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05012770
static const Vtx heave_ho_seg5_vertex_05012770[] = {
@@ -552,8 +488,8 @@ const Gfx heave_ho_seg5_dl_050127B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, heave_ho_seg5_texture_050113C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&heave_ho_seg5_light_05012760, 1),
- gsSPLight(&heave_ho_seg5_light_05012758, 2),
+ gsSPLight(&heave_ho_seg5_lights_05012758.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_05012758.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012770, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSPEndDisplayList(),
@@ -1085,8 +1021,8 @@ static const Vtx heave_ho_seg5_vertex_05014128[] = {
// 0x05014188 - 0x05014560
const Gfx heave_ho_seg5_dl_05014188[] = {
- gsSPLight(&heave_ho_seg5_light_0500E970, 1),
- gsSPLight(&heave_ho_seg5_light_0500E968, 2),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05012868, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
@@ -1156,8 +1092,8 @@ const Gfx heave_ho_seg5_dl_05014188[] = {
// 0x05014560 - 0x050145D0
const Gfx heave_ho_seg5_dl_05014560[] = {
- gsSPLight(&heave_ho_seg5_light_0500E988, 1),
- gsSPLight(&heave_ho_seg5_light_0500E980, 2),
+ gsSPLight(&heave_ho_seg5_lights_0500E980.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_0500E980.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05013068, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 5, 7, 3, 0x0),
@@ -1169,8 +1105,8 @@ const Gfx heave_ho_seg5_dl_05014560[] = {
// 0x050145D0 - 0x050149A8
const Gfx heave_ho_seg5_dl_050145D0[] = {
- gsSPLight(&heave_ho_seg5_light_0500E970, 1),
- gsSPLight(&heave_ho_seg5_light_0500E968, 2),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05013128, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
@@ -1240,8 +1176,8 @@ const Gfx heave_ho_seg5_dl_050145D0[] = {
// 0x050149A8 - 0x05014D80
const Gfx heave_ho_seg5_dl_050149A8[] = {
- gsSPLight(&heave_ho_seg5_light_0500E970, 1),
- gsSPLight(&heave_ho_seg5_light_0500E968, 2),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_0500E968.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05013928, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
@@ -1311,8 +1247,8 @@ const Gfx heave_ho_seg5_dl_050149A8[] = {
// 0x05014D80 - 0x05014DD0
const Gfx heave_ho_seg5_dl_05014D80[] = {
- gsSPLight(&heave_ho_seg5_light_0500E988, 1),
- gsSPLight(&heave_ho_seg5_light_0500E980, 2),
+ gsSPLight(&heave_ho_seg5_lights_0500E980.l, 1),
+ gsSPLight(&heave_ho_seg5_lights_0500E980.a, 2),
gsSPVertex(heave_ho_seg5_vertex_05014128, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 0, 2, 5, 0x0),
diff --git a/actors/hoot/model.inc.c b/actors/hoot/model.inc.c
@@ -1,124 +1,76 @@
// Hoot
// 0x05000900
-static const Ambient hoot_seg5_light_05000900 = {
- {{0x30, 0x1b, 0x0f}, 0, {0x30, 0x1b, 0x0f}, 0}
-};
-
-// 0x05000908
-static const Light hoot_seg5_light_05000908 = {
- {{0xc0, 0x6e, 0x3d}, 0, {0xc0, 0x6e, 0x3d}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient hoot_light_1 = {
- {{0x37, 0x27, 0x0b}, 0, {0x37, 0x27, 0x0b}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000900 = gdSPDefLights1(
+ 0x30, 0x1b, 0x0f,
+ 0xc0, 0x6e, 0x3d, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Light hoot_light_2 = {
- {{0xdd, 0x9d, 0x2d}, 0, {0xdd, 0x9d, 0x2d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 hoot_lights_unused1 = gdSPDefLights1(
+ 0x37, 0x27, 0x0b,
+ 0xdd, 0x9d, 0x2d, 0x28, 0x28, 0x28
+);
// 0x05000930
-static const Ambient hoot_seg5_light_05000930 = {
- {{0x36, 0x26, 0x11}, 0, {0x36, 0x26, 0x11}, 0}
-};
-
-// 0x05000938
-static const Light hoot_seg5_light_05000938 = {
- {{0xdb, 0x99, 0x46}, 0, {0xdb, 0x99, 0x46}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000930 = gdSPDefLights1(
+ 0x36, 0x26, 0x11,
+ 0xdb, 0x99, 0x46, 0x28, 0x28, 0x28
+);
// 0x05000948
-static const Ambient hoot_seg5_light_05000948 = {
- {{0x06, 0x06, 0x06}, 0, {0x06, 0x06, 0x06}, 0}
-};
-
-// 0x05000950
-static const Light hoot_seg5_light_05000950 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000948 = gdSPDefLights1(
+ 0x06, 0x06, 0x06,
+ 0x19, 0x19, 0x19, 0x28, 0x28, 0x28
+);
// 0x05000960
-static const Ambient hoot_seg5_light_05000960 = {
- {{0x1d, 0x0a, 0x05}, 0, {0x1d, 0x0a, 0x05}, 0}
-};
-
-// 0x05000968
-static const Light hoot_seg5_light_05000968 = {
- {{0x77, 0x2a, 0x16}, 0, {0x77, 0x2a, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000960 = gdSPDefLights1(
+ 0x1d, 0x0a, 0x05,
+ 0x77, 0x2a, 0x16, 0x28, 0x28, 0x28
+);
// 0x05000978
-static const Ambient hoot_seg5_light_05000978 = {
- {{0x06, 0x06, 0x06}, 0, {0x06, 0x06, 0x06}, 0}
-};
-
-// 0x05000980
-static const Light hoot_seg5_light_05000980 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient hoot_light_3 = {
- {{0x39, 0x27, 0x0a}, 0, {0x39, 0x27, 0x0a}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light hoot_light_4 = {
- {{0xe6, 0x9d, 0x29}, 0, {0xe6, 0x9d, 0x29}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient hoot_light_5 = {
- {{0x1d, 0x06, 0x3b}, 0, {0x1d, 0x06, 0x3b}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light hoot_light_6 = {
- {{0x75, 0x18, 0xef}, 0, {0x75, 0x18, 0xef}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient hoot_light_7 = {
- {{0x3a, 0x29, 0x09}, 0, {0x3a, 0x29, 0x09}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light hoot_light_8 = {
- {{0xeb, 0xa6, 0x27}, 0, {0xeb, 0xa6, 0x27}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000978 = gdSPDefLights1(
+ 0x06, 0x06, 0x06,
+ 0x19, 0x19, 0x19, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 hoot_lights_unused2 = gdSPDefLights1(
+ 0x39, 0x27, 0x0a,
+ 0xe6, 0x9d, 0x29, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 hoot_lights_unused3 = gdSPDefLights1(
+ 0x1d, 0x06, 0x3b,
+ 0x75, 0x18, 0xef, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 hoot_lights_unused4 = gdSPDefLights1(
+ 0x3a, 0x29, 0x09,
+ 0xeb, 0xa6, 0x27, 0x28, 0x28, 0x28
+);
// 0x050009D8
-static const Ambient hoot_seg5_light_050009D8 = {
- {{0x18, 0x07, 0x03}, 0, {0x18, 0x07, 0x03}, 0}
-};
-
-// 0x050009E0
-static const Light hoot_seg5_light_050009E0 = {
- {{0x63, 0x1e, 0x0f}, 0, {0x63, 0x1e, 0x0f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_050009D8 = gdSPDefLights1(
+ 0x18, 0x07, 0x03,
+ 0x63, 0x1e, 0x0f, 0x28, 0x28, 0x28
+);
// 0x050009F0
-static const Ambient hoot_seg5_light_050009F0 = {
- {{0x3f, 0x3a, 0x09}, 0, {0x3f, 0x3a, 0x09}, 0}
-};
-
-// 0x050009F8
-static const Light hoot_seg5_light_050009F8 = {
- {{0xfe, 0xea, 0x26}, 0, {0xfe, 0xea, 0x26}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_050009F0 = gdSPDefLights1(
+ 0x3f, 0x3a, 0x09,
+ 0xfe, 0xea, 0x26, 0x28, 0x28, 0x28
+);
// 0x05000A08
-static const Ambient hoot_seg5_light_05000A08 = {
- {{0x13, 0x0d, 0x0b}, 0, {0x13, 0x0d, 0x0b}, 0}
-};
-
-// 0x05000A10
-static const Light hoot_seg5_light_05000A10 = {
- {{0x4d, 0x35, 0x2e}, 0, {0x4d, 0x35, 0x2e}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05000A08 = gdSPDefLights1(
+ 0x13, 0x0d, 0x0b,
+ 0x4d, 0x35, 0x2e, 0x28, 0x28, 0x28
+);
// 0x05000A20
ALIGNED8 static const u8 hoot_seg5_texture_05000A20[] = {
@@ -322,8 +274,8 @@ static const Vtx hoot_seg5_vertex_05001A90[] = {
// 0x05001B80 - 0x05001C00
const Gfx hoot_seg5_dl_05001B80[] = {
gsDPLoadTextureBlock(hoot_seg5_texture_05000A20, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
- gsSPLight(&hoot_seg5_light_050009E0, 1),
- gsSPLight(&hoot_seg5_light_050009D8, 2),
+ gsSPLight(&hoot_seg5_lights_050009D8.l, 1),
+ gsSPLight(&hoot_seg5_lights_050009D8.a, 2),
gsSPVertex(hoot_seg5_vertex_05001220, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -333,17 +285,17 @@ const Gfx hoot_seg5_dl_05001B80[] = {
// 0x05001C00 - 0x05001DF0
const Gfx hoot_seg5_dl_05001C00[] = {
- gsSPLight(&hoot_seg5_light_050009F8, 1),
- gsSPLight(&hoot_seg5_light_050009F0, 2),
+ gsSPLight(&hoot_seg5_lights_050009F0.l, 1),
+ gsSPLight(&hoot_seg5_lights_050009F0.a, 2),
gsSPVertex(hoot_seg5_vertex_05001310, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&hoot_seg5_light_05000A10, 1),
- gsSPLight(&hoot_seg5_light_05000A08, 2),
+ gsSPLight(&hoot_seg5_lights_05000A08.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000A08.a, 2),
gsSPVertex(hoot_seg5_vertex_050013D0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&hoot_seg5_light_050009E0, 1),
- gsSPLight(&hoot_seg5_light_050009D8, 2),
+ gsSPLight(&hoot_seg5_lights_050009D8.l, 1),
+ gsSPLight(&hoot_seg5_lights_050009D8.a, 2),
gsSPVertex(hoot_seg5_vertex_05001400, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -393,14 +345,10 @@ const Gfx hoot_seg5_dl_05001DF0[] = {
};
// 0x05001E38
-static const Ambient hoot_seg5_light_05001E38 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05001E40
-static const Light hoot_seg5_light_05001E40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05001E38 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05001E50
ALIGNED8 static const u8 hoot_seg5_texture_05001E50[] = {
@@ -438,8 +386,8 @@ const Gfx hoot_seg5_dl_05002EB0[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05001E40, 1),
- gsSPLight(&hoot_seg5_light_05001E38, 2),
+ gsSPLight(&hoot_seg5_lights_05001E38.l, 1),
+ gsSPLight(&hoot_seg5_lights_05001E38.a, 2),
gsSPVertex(hoot_seg5_vertex_05002E50, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -460,14 +408,10 @@ const Gfx hoot_seg5_dl_05002F10[] = {
};
// 0x05002F60
-static const Ambient hoot_seg5_light_05002F60 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05002F68
-static const Light hoot_seg5_light_05002F68 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05002F60 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x05002F78
@@ -495,8 +439,8 @@ const Gfx hoot_seg5_dl_05002FD8[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05002F68, 1),
- gsSPLight(&hoot_seg5_light_05002F60, 2),
+ gsSPLight(&hoot_seg5_lights_05002F60.l, 1),
+ gsSPLight(&hoot_seg5_lights_05002F60.a, 2),
gsSPVertex(hoot_seg5_vertex_05002F78, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -517,14 +461,10 @@ const Gfx hoot_seg5_dl_05003038[] = {
};
// 0x05003088
-static const Ambient hoot_seg5_light_05003088 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003090
-static const Light hoot_seg5_light_05003090 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05003088 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x050030A0
@@ -552,8 +492,8 @@ const Gfx hoot_seg5_dl_05003100[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05003090, 1),
- gsSPLight(&hoot_seg5_light_05003088, 2),
+ gsSPLight(&hoot_seg5_lights_05003088.l, 1),
+ gsSPLight(&hoot_seg5_lights_05003088.a, 2),
gsSPVertex(hoot_seg5_vertex_050030A0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -574,14 +514,10 @@ const Gfx hoot_seg5_dl_05003160[] = {
};
// 0x050031B0
-static const Ambient hoot_seg5_light_050031B0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x050031B8
-static const Light hoot_seg5_light_050031B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_050031B0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x050031C8
@@ -609,8 +545,8 @@ const Gfx hoot_seg5_dl_05003228[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_050031B8, 1),
- gsSPLight(&hoot_seg5_light_050031B0, 2),
+ gsSPLight(&hoot_seg5_lights_050031B0.l, 1),
+ gsSPLight(&hoot_seg5_lights_050031B0.a, 2),
gsSPVertex(hoot_seg5_vertex_050031C8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -631,14 +567,10 @@ const Gfx hoot_seg5_dl_05003288[] = {
};
// 0x050032D8
-static const Ambient hoot_seg5_light_050032D8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x050032E0
-static const Light hoot_seg5_light_050032E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_050032D8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x050032F0
@@ -666,8 +598,8 @@ const Gfx hoot_seg5_dl_05003350[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_050032E0, 1),
- gsSPLight(&hoot_seg5_light_050032D8, 2),
+ gsSPLight(&hoot_seg5_lights_050032D8.l, 1),
+ gsSPLight(&hoot_seg5_lights_050032D8.a, 2),
gsSPVertex(hoot_seg5_vertex_050032F0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -688,14 +620,10 @@ const Gfx hoot_seg5_dl_050033B0[] = {
};
// 0x05003400
-static const Ambient hoot_seg5_light_05003400 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003408
-static const Light hoot_seg5_light_05003408 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05003400 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x05003418
@@ -723,8 +651,8 @@ const Gfx hoot_seg5_dl_05003478[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05003408, 1),
- gsSPLight(&hoot_seg5_light_05003400, 2),
+ gsSPLight(&hoot_seg5_lights_05003400.l, 1),
+ gsSPLight(&hoot_seg5_lights_05003400.a, 2),
gsSPVertex(hoot_seg5_vertex_05003418, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -745,14 +673,10 @@ const Gfx hoot_seg5_dl_050034D8[] = {
};
// 0x05003528
-static const Ambient hoot_seg5_light_05003528 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003530
-static const Light hoot_seg5_light_05003530 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05003528 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x05003540
@@ -780,8 +704,8 @@ const Gfx hoot_seg5_dl_050035A0[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05003530, 1),
- gsSPLight(&hoot_seg5_light_05003528, 2),
+ gsSPLight(&hoot_seg5_lights_05003528.l, 1),
+ gsSPLight(&hoot_seg5_lights_05003528.a, 2),
gsSPVertex(hoot_seg5_vertex_05003540, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -802,14 +726,10 @@ const Gfx hoot_seg5_dl_05003600[] = {
};
// 0x05003650
-static const Ambient hoot_seg5_light_05003650 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003658
-static const Light hoot_seg5_light_05003658 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 hoot_seg5_lights_05003650 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! The vertex macro which calls this has too large of a size.
// 0x05003668
@@ -837,8 +757,8 @@ const Gfx hoot_seg5_dl_050036C8[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&hoot_seg5_light_05003658, 1),
- gsSPLight(&hoot_seg5_light_05003650, 2),
+ gsSPLight(&hoot_seg5_lights_05003650.l, 1),
+ gsSPLight(&hoot_seg5_lights_05003650.a, 2),
gsSPVertex(hoot_seg5_vertex_05003668, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -1231,8 +1151,8 @@ static const Vtx hoot_seg5_vertex_05004828[] = {
// 0x05004928 - 0x05004A98
const Gfx hoot_seg5_dl_05004928[] = {
- gsSPLight(&hoot_seg5_light_05000938, 1),
- gsSPLight(&hoot_seg5_light_05000930, 2),
+ gsSPLight(&hoot_seg5_lights_05000930.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000930.a, 2),
gsSPVertex(hoot_seg5_vertex_05003778, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1252,8 +1172,8 @@ const Gfx hoot_seg5_dl_05004928[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(hoot_seg5_vertex_05003B48, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&hoot_seg5_light_05000950, 1),
- gsSPLight(&hoot_seg5_light_05000948, 2),
+ gsSPLight(&hoot_seg5_lights_05000948.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000948.a, 2),
gsSPVertex(hoot_seg5_vertex_05003BA8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1266,8 +1186,8 @@ const Gfx hoot_seg5_dl_05004928[] = {
// 0x05004A98 - 0x05004B38
const Gfx hoot_seg5_dl_05004A98[] = {
- gsSPLight(&hoot_seg5_light_05000968, 1),
- gsSPLight(&hoot_seg5_light_05000960, 2),
+ gsSPLight(&hoot_seg5_lights_05000960.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000960.a, 2),
gsSPVertex(hoot_seg5_vertex_05003D58, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1275,8 +1195,8 @@ const Gfx hoot_seg5_dl_05004A98[] = {
gsSPVertex(hoot_seg5_vertex_05003E58, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&hoot_seg5_light_05000980, 1),
- gsSPLight(&hoot_seg5_light_05000978, 2),
+ gsSPLight(&hoot_seg5_lights_05000978.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000978.a, 2),
gsSPVertex(hoot_seg5_vertex_05003F18, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -1284,8 +1204,8 @@ const Gfx hoot_seg5_dl_05004A98[] = {
// 0x05004B38 - 0x05004CA8
const Gfx hoot_seg5_dl_05004B38[] = {
- gsSPLight(&hoot_seg5_light_05000950, 1),
- gsSPLight(&hoot_seg5_light_05000948, 2),
+ gsSPLight(&hoot_seg5_lights_05000948.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000948.a, 2),
gsSPVertex(hoot_seg5_vertex_05003F58, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1293,8 +1213,8 @@ const Gfx hoot_seg5_dl_05004B38[] = {
gsSPVertex(hoot_seg5_vertex_05004048, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&hoot_seg5_light_05000938, 1),
- gsSPLight(&hoot_seg5_light_05000930, 2),
+ gsSPLight(&hoot_seg5_lights_05000930.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000930.a, 2),
gsSPVertex(hoot_seg5_vertex_05004108, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1319,8 +1239,8 @@ const Gfx hoot_seg5_dl_05004B38[] = {
// 0x05004CA8 - 0x05004D48
const Gfx hoot_seg5_dl_05004CA8[] = {
- gsSPLight(&hoot_seg5_light_05000968, 1),
- gsSPLight(&hoot_seg5_light_05000960, 2),
+ gsSPLight(&hoot_seg5_lights_05000960.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000960.a, 2),
gsSPVertex(hoot_seg5_vertex_05004548, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1328,8 +1248,8 @@ const Gfx hoot_seg5_dl_05004CA8[] = {
gsSPVertex(hoot_seg5_vertex_05004648, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&hoot_seg5_light_05000980, 1),
- gsSPLight(&hoot_seg5_light_05000978, 2),
+ gsSPLight(&hoot_seg5_lights_05000978.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000978.a, 2),
gsSPVertex(hoot_seg5_vertex_05004708, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
@@ -1337,8 +1257,8 @@ const Gfx hoot_seg5_dl_05004CA8[] = {
// 0x05004D48 - 0x05004EC0
const Gfx hoot_seg5_dl_05004D48[] = {
- gsSPLight(&hoot_seg5_light_05000908, 1),
- gsSPLight(&hoot_seg5_light_05000900, 2),
+ gsSPLight(&hoot_seg5_lights_05000900.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000900.a, 2),
gsSPVertex(hoot_seg5_vertex_05004748, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 1, 4, 0x0, 7, 8, 9, 0x0),
@@ -1350,8 +1270,8 @@ const Gfx hoot_seg5_dl_05004D48[] = {
gsSP2Triangles( 2, 10, 12, 0x0, 6, 9, 8, 0x0),
gsSP2Triangles(11, 13, 7, 0x0, 5, 4, 1, 0x0),
gsSP1Triangle( 1, 8, 2, 0x0),
- gsSPLight(&hoot_seg5_light_05000968, 1),
- gsSPLight(&hoot_seg5_light_05000960, 2),
+ gsSPLight(&hoot_seg5_lights_05000960.l, 1),
+ gsSPLight(&hoot_seg5_lights_05000960.a, 2),
gsSPVertex(hoot_seg5_vertex_05004828, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 8, 4, 3, 0x0),
diff --git a/actors/impact_ring/model.inc.c b/actors/impact_ring/model.inc.c
@@ -49,7 +49,7 @@ const Gfx impact_ring_seg6_dl_0601EA88[] = {
// 0x0601EAC0 - 0x0601EB40
const Gfx impact_ring_seg6_dl_0601EAC0[] = {
gsDPPipeSync(),
- gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),
+ gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),
gsSPClearGeometryMode(G_LIGHTING | G_CULL_BACK),
gsDPSetTile(G_IM_FMT_IA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
diff --git a/actors/king_bobomb/model.inc.c b/actors/king_bobomb/model.inc.c
@@ -1,54 +1,34 @@
// King Bobomb
-// Unreferenced light
-UNUSED static const Ambient king_bobomb_light_1 = {
- {{0x36, 0x1e, 0x00}, 0, {0x36, 0x1e, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light king_bobomb_light_2 = {
- {{0xd9, 0x7a, 0x00}, 0, {0xd9, 0x7a, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient king_bobomb_light_3 = {
- {{0x00, 0x00, 0x3f}, 0, {0x00, 0x00, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light king_bobomb_light_4 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient king_bobomb_light_5 = {
- {{0x3c, 0x28, 0x00}, 0, {0x3c, 0x28, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light king_bobomb_light_6 = {
- {{0xf1, 0xa2, 0x00}, 0, {0xf1, 0xa2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient king_bobomb_light_7 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light king_bobomb_light_8 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient king_bobomb_light_9 = {
- {{0x06, 0x06, 0x06}, 0, {0x06, 0x06, 0x06}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light king_bobomb_light_10 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 king_bobomb_lights_unused1 = gdSPDefLights1(
+ 0x36, 0x1e, 0x00,
+ 0xd9, 0x7a, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 king_bobomb_lights_unused2 = gdSPDefLights1(
+ 0x00, 0x00, 0x3f,
+ 0x00, 0x00, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 king_bobomb_lights_unused3 = gdSPDefLights1(
+ 0x3c, 0x28, 0x00,
+ 0xf1, 0xa2, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 king_bobomb_lights_unused4 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 king_bobomb_lights_unused5 = gdSPDefLights1(
+ 0x06, 0x06, 0x06,
+ 0x19, 0x19, 0x19, 0x28, 0x28, 0x28
+);
// 0x05000078
ALIGNED8 static const u8 king_bobomb_seg5_texture_05000078[] = {
@@ -317,14 +297,10 @@ const Gfx king_bobomb_seg5_dl_0500A978[] = {
};
// 0x0500A9E8
-static const Ambient king_bobomb_seg5_light_0500A9E8 = {
- {{0x6f, 0x56, 0x11}, 0, {0x6f, 0x56, 0x11}, 0}
-};
-
-// 0x0500A9F0
-static const Light king_bobomb_seg5_light_0500A9F0 = {
- {{0xde, 0xad, 0x23}, 0, {0xde, 0xad, 0x23}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 king_bobomb_seg5_lights_0500A9E8 = gdSPDefLights1(
+ 0x6f, 0x56, 0x11,
+ 0xde, 0xad, 0x23, 0x28, 0x28, 0x28
+);
// 0x0500AA00
static const Vtx king_bobomb_seg5_vertex_0500AA00[] = {
@@ -364,8 +340,8 @@ static const Vtx king_bobomb_seg5_vertex_0500AB00[] = {
// 0x0500ABC0 - 0x0500AD08
const Gfx king_bobomb_seg5_dl_0500ABC0[] = {
- gsSPLight(&king_bobomb_seg5_light_0500A9F0, 1),
- gsSPLight(&king_bobomb_seg5_light_0500A9E8, 2),
+ gsSPLight(&king_bobomb_seg5_lights_0500A9E8.l, 1),
+ gsSPLight(&king_bobomb_seg5_lights_0500A9E8.a, 2),
gsSPVertex(king_bobomb_seg5_vertex_0500AA00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 6, 0x0),
@@ -400,14 +376,10 @@ const Gfx king_bobomb_seg5_dl_0500AD08[] = {
};
// 0x0500AD38
-static const Ambient king_bobomb_seg5_light_0500AD38 = {
- {{0x6f, 0x4f, 0x10}, 0, {0x6f, 0x4f, 0x10}, 0}
-};
-
-// 0x0500AD40
-static const Light king_bobomb_seg5_light_0500AD40 = {
- {{0xde, 0x9e, 0x20}, 0, {0xde, 0x9e, 0x20}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 king_bobomb_seg5_lights_0500AD38 = gdSPDefLights1(
+ 0x6f, 0x4f, 0x10,
+ 0xde, 0x9e, 0x20, 0x28, 0x28, 0x28
+);
// 0x0500AD50
static const Vtx king_bobomb_seg5_vertex_0500AD50[] = {
@@ -448,8 +420,8 @@ static const Vtx king_bobomb_seg5_vertex_0500AE50[] = {
// 0x0500AF20 - 0x0500B068
const Gfx king_bobomb_seg5_dl_0500AF20[] = {
- gsSPLight(&king_bobomb_seg5_light_0500AD40, 1),
- gsSPLight(&king_bobomb_seg5_light_0500AD38, 2),
+ gsSPLight(&king_bobomb_seg5_lights_0500AD38.l, 1),
+ gsSPLight(&king_bobomb_seg5_lights_0500AD38.a, 2),
gsSPVertex(king_bobomb_seg5_vertex_0500AD50, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 2, 0x0),
@@ -540,14 +512,10 @@ const Gfx king_bobomb_seg5_dl_0500B188[] = {
};
// 0x0500B200
-static const Ambient king_bobomb_seg5_light_0500B200 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0500B208
-static const Light king_bobomb_seg5_light_0500B208 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 king_bobomb_seg5_lights_0500B200 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B218
static const Vtx king_bobomb_seg5_vertex_0500B218[] = {
@@ -564,8 +532,8 @@ const Gfx king_bobomb_seg5_dl_0500B278[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05004878),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&king_bobomb_seg5_light_0500B208, 1),
- gsSPLight(&king_bobomb_seg5_light_0500B200, 2),
+ gsSPLight(&king_bobomb_seg5_lights_0500B200.l, 1),
+ gsSPLight(&king_bobomb_seg5_lights_0500B200.a, 2),
gsSPVertex(king_bobomb_seg5_vertex_0500B218, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 2, 3, 0, 0x0, 4, 5, 3, 0x0),
@@ -589,14 +557,10 @@ const Gfx king_bobomb_seg5_dl_0500B2D0[] = {
};
// 0x0500B330
-static const Ambient king_bobomb_seg5_light_0500B330 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B338
-static const Light king_bobomb_seg5_light_0500B338 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 king_bobomb_seg5_lights_0500B330 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B348
static const Vtx king_bobomb_seg5_vertex_0500B348[] = {
@@ -612,8 +576,8 @@ static const Vtx king_bobomb_seg5_vertex_0500B348[] = {
// 0x0500B3C8 - 0x0500B418
const Gfx king_bobomb_seg5_dl_0500B3C8[] = {
- gsSPLight(&king_bobomb_seg5_light_0500B338, 1),
- gsSPLight(&king_bobomb_seg5_light_0500B330, 2),
+ gsSPLight(&king_bobomb_seg5_lights_0500B330.l, 1),
+ gsSPLight(&king_bobomb_seg5_lights_0500B330.a, 2),
gsSPVertex(king_bobomb_seg5_vertex_0500B348, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 0, 0x0),
@@ -634,14 +598,10 @@ const Gfx king_bobomb_seg5_dl_0500B418[] = {
};
// 0x0500B458
-static const Ambient king_bobomb_seg5_light_0500B458 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B460
-static const Light king_bobomb_seg5_light_0500B460 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 king_bobomb_seg5_lights_0500B458 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B470
static const Vtx king_bobomb_seg5_vertex_0500B470[] = {
@@ -680,8 +640,8 @@ const Gfx king_bobomb_seg5_dl_0500B5F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, king_bobomb_seg5_texture_05006078),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&king_bobomb_seg5_light_0500B460, 1),
- gsSPLight(&king_bobomb_seg5_light_0500B458, 2),
+ gsSPLight(&king_bobomb_seg5_lights_0500B458.l, 1),
+ gsSPLight(&king_bobomb_seg5_lights_0500B458.a, 2),
gsSPVertex(king_bobomb_seg5_vertex_0500B470, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 5, 4, 3, 0x0),
diff --git a/actors/klepto/model.inc.c b/actors/klepto/model.inc.c
@@ -31,24 +31,16 @@ ALIGNED8 static const u8 klepto_seg5_texture_05003008[] = {
};
// 0x05003808
-static const Ambient klepto_seg5_light_05003808 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003810
-static const Light klepto_seg5_light_05003810 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05003808 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003820
-static const Ambient klepto_seg5_light_05003820 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05003828
-static const Light klepto_seg5_light_05003828 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05003820 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05003838
static const Vtx klepto_seg5_vertex_05003838[] = {
@@ -106,8 +98,8 @@ const Gfx klepto_seg5_dl_05003A68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05000808),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05003810, 1),
- gsSPLight(&klepto_seg5_light_05003808, 2),
+ gsSPLight(&klepto_seg5_lights_05003808.l, 1),
+ gsSPLight(&klepto_seg5_lights_05003808.a, 2),
gsSPVertex(klepto_seg5_vertex_05003838, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 4, 5, 2, 0x0),
@@ -132,8 +124,8 @@ const Gfx klepto_seg5_dl_05003AC0[] = {
// 0x05003B40 - 0x05003BD0
const Gfx klepto_seg5_dl_05003B40[] = {
- gsSPLight(&klepto_seg5_light_05003828, 1),
- gsSPLight(&klepto_seg5_light_05003820, 2),
+ gsSPLight(&klepto_seg5_lights_05003820.l, 1),
+ gsSPLight(&klepto_seg5_lights_05003820.a, 2),
gsSPVertex(klepto_seg5_vertex_050039B8, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 3, 0x0, 3, 6, 4, 0x0),
@@ -167,14 +159,10 @@ const Gfx klepto_seg5_dl_05003BD0[] = {
};
// 0x05003C58
-static const Ambient klepto_seg5_light_05003C58 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05003C60
-static const Light klepto_seg5_light_05003C60 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05003C58 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05003C70
static const Vtx klepto_seg5_vertex_05003C70[] = {
@@ -191,8 +179,8 @@ static const Vtx klepto_seg5_vertex_05003C70[] = {
// 0x05003D00 - 0x05003D80
const Gfx klepto_seg5_dl_05003D00[] = {
- gsSPLight(&klepto_seg5_light_05003C60, 1),
- gsSPLight(&klepto_seg5_light_05003C58, 2),
+ gsSPLight(&klepto_seg5_lights_05003C58.l, 1),
+ gsSPLight(&klepto_seg5_lights_05003C58.a, 2),
gsSPVertex(klepto_seg5_vertex_05003C70, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 2, 5, 0x0, 2, 4, 3, 0x0),
@@ -214,14 +202,10 @@ const Gfx klepto_seg5_dl_05003D80[] = {
};
// 0x05003DB0
-static const Ambient klepto_seg5_light_05003DB0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05003DB8
-static const Light klepto_seg5_light_05003DB8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05003DB0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003DC8
static const Vtx klepto_seg5_vertex_05003DC8[] = {
@@ -242,8 +226,8 @@ const Gfx klepto_seg5_dl_05003E68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05000008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05003DB8, 1),
- gsSPLight(&klepto_seg5_light_05003DB0, 2),
+ gsSPLight(&klepto_seg5_lights_05003DB0.l, 1),
+ gsSPLight(&klepto_seg5_lights_05003DB0.a, 2),
gsSPVertex(klepto_seg5_vertex_05003DC8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 5, 2, 1, 0x0, 2, 5, 3, 0x0),
@@ -273,14 +257,10 @@ const Gfx klepto_seg5_dl_05003F20[] = {
};
// 0x05003F80
-static const Ambient klepto_seg5_light_05003F80 = {
- {{0x07, 0x01, 0x01}, 0, {0x07, 0x01, 0x01}, 0}
-};
-
-// 0x05003F88
-static const Light klepto_seg5_light_05003F88 = {
- {{0x1e, 0x05, 0x04}, 0, {0x1e, 0x05, 0x04}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05003F80 = gdSPDefLights1(
+ 0x07, 0x01, 0x01,
+ 0x1e, 0x05, 0x04, 0x28, 0x28, 0x28
+);
// 0x05003F98
static const Vtx klepto_seg5_vertex_05003F98[] = {
@@ -300,8 +280,8 @@ static const Vtx klepto_seg5_vertex_05003F98[] = {
// 0x05004058 - 0x05004118
const Gfx klepto_seg5_dl_05004058[] = {
- gsSPLight(&klepto_seg5_light_05003F88, 1),
- gsSPLight(&klepto_seg5_light_05003F80, 2),
+ gsSPLight(&klepto_seg5_lights_05003F80.l, 1),
+ gsSPLight(&klepto_seg5_lights_05003F80.a, 2),
gsSPVertex(klepto_seg5_vertex_05003F98, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 0, 0x0),
@@ -327,14 +307,10 @@ const Gfx klepto_seg5_dl_05004118[] = {
};
// 0x05004148
-static const Ambient klepto_seg5_light_05004148 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004150
-static const Light klepto_seg5_light_05004150 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004148 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004160
static const Vtx klepto_seg5_vertex_05004160[] = {
@@ -349,8 +325,8 @@ const Gfx klepto_seg5_dl_050041A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05003008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004150, 1),
- gsSPLight(&klepto_seg5_light_05004148, 2),
+ gsSPLight(&klepto_seg5_lights_05004148.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004148.a, 2),
gsSPVertex(klepto_seg5_vertex_05004160, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSPEndDisplayList(),
@@ -375,14 +351,10 @@ const Gfx klepto_seg5_dl_050041E8[] = {
};
// 0x05004258
-static const Ambient klepto_seg5_light_05004258 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05004260
-static const Light klepto_seg5_light_05004260 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004258 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05004270
static const Vtx klepto_seg5_vertex_05004270[] = {
@@ -396,8 +368,8 @@ static const Vtx klepto_seg5_vertex_05004270[] = {
// 0x050042D0 - 0x05004330
const Gfx klepto_seg5_dl_050042D0[] = {
- gsSPLight(&klepto_seg5_light_05004260, 1),
- gsSPLight(&klepto_seg5_light_05004258, 2),
+ gsSPLight(&klepto_seg5_lights_05004258.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004258.a, 2),
gsSPVertex(klepto_seg5_vertex_05004270, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 0, 4, 3, 0x0),
@@ -417,14 +389,10 @@ const Gfx klepto_seg5_dl_05004330[] = {
};
// 0x05004360
-static const Ambient klepto_seg5_light_05004360 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05004368
-static const Light klepto_seg5_light_05004368 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004360 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05004378
static const Vtx klepto_seg5_vertex_05004378[] = {
@@ -438,8 +406,8 @@ static const Vtx klepto_seg5_vertex_05004378[] = {
// 0x050043D8 - 0x05004438
const Gfx klepto_seg5_dl_050043D8[] = {
- gsSPLight(&klepto_seg5_light_05004368, 1),
- gsSPLight(&klepto_seg5_light_05004360, 2),
+ gsSPLight(&klepto_seg5_lights_05004360.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004360.a, 2),
gsSPVertex(klepto_seg5_vertex_05004378, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 0, 4, 3, 0x0),
@@ -459,24 +427,16 @@ const Gfx klepto_seg5_dl_05004438[] = {
};
// 0x05004468
-static const Ambient klepto_seg5_light_05004468 = {
- {{0x02, 0x00, 0x00}, 0, {0x02, 0x00, 0x00}, 0}
-};
-
-// 0x05004470
-static const Light klepto_seg5_light_05004470 = {
- {{0x08, 0x00, 0x00}, 0, {0x08, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004468 = gdSPDefLights1(
+ 0x02, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05004480
-static const Ambient klepto_seg5_light_05004480 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05004488
-static const Light klepto_seg5_light_05004488 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004480 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05004498
static const Vtx klepto_seg5_vertex_05004498[] = {
@@ -524,16 +484,16 @@ static const Vtx klepto_seg5_vertex_05004648[] = {
// 0x05004698 - 0x050047C8
const Gfx klepto_seg5_dl_05004698[] = {
- gsSPLight(&klepto_seg5_light_05004470, 1),
- gsSPLight(&klepto_seg5_light_05004468, 2),
+ gsSPLight(&klepto_seg5_lights_05004468.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004468.a, 2),
gsSPVertex(klepto_seg5_vertex_05004498, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 3, 5, 6, 0x0),
gsSP2Triangles( 7, 8, 9, 0x0, 8, 7, 10, 0x0),
gsSP2Triangles( 8, 10, 9, 0x0, 0, 11, 1, 0x0),
gsSP1Triangle(11, 0, 2, 0x0),
- gsSPLight(&klepto_seg5_light_05004488, 1),
- gsSPLight(&klepto_seg5_light_05004480, 2),
+ gsSPLight(&klepto_seg5_lights_05004480.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004480.a, 2),
gsSPVertex(klepto_seg5_vertex_05004558, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 7, 4, 3, 0x0),
@@ -561,24 +521,16 @@ const Gfx klepto_seg5_dl_050047C8[] = {
};
// 0x050047F8
-static const Ambient klepto_seg5_light_050047F8 = {
- {{0x02, 0x00, 0x00}, 0, {0x02, 0x00, 0x00}, 0}
-};
-
-// 0x05004800
-static const Light klepto_seg5_light_05004800 = {
- {{0x08, 0x00, 0x00}, 0, {0x08, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_050047F8 = gdSPDefLights1(
+ 0x02, 0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05004810
-static const Ambient klepto_seg5_light_05004810 = {
- {{0x3f, 0x1d, 0x08}, 0, {0x3f, 0x1d, 0x08}, 0}
-};
-
-// 0x05004818
-static const Light klepto_seg5_light_05004818 = {
- {{0xff, 0x75, 0x21}, 0, {0xff, 0x75, 0x21}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004810 = gdSPDefLights1(
+ 0x3f, 0x1d, 0x08,
+ 0xff, 0x75, 0x21, 0x28, 0x28, 0x28
+);
// 0x05004828
static const Vtx klepto_seg5_vertex_05004828[] = {
@@ -626,16 +578,16 @@ static const Vtx klepto_seg5_vertex_050049D8[] = {
// 0x05004A28 - 0x05004B58
const Gfx klepto_seg5_dl_05004A28[] = {
- gsSPLight(&klepto_seg5_light_05004800, 1),
- gsSPLight(&klepto_seg5_light_050047F8, 2),
+ gsSPLight(&klepto_seg5_lights_050047F8.l, 1),
+ gsSPLight(&klepto_seg5_lights_050047F8.a, 2),
gsSPVertex(klepto_seg5_vertex_05004828, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 3, 5, 6, 0x0),
gsSP2Triangles( 7, 8, 9, 0x0, 8, 7, 10, 0x0),
gsSP2Triangles( 8, 10, 9, 0x0, 0, 11, 1, 0x0),
gsSP1Triangle(11, 0, 2, 0x0),
- gsSPLight(&klepto_seg5_light_05004818, 1),
- gsSPLight(&klepto_seg5_light_05004810, 2),
+ gsSPLight(&klepto_seg5_lights_05004810.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004810.a, 2),
gsSPVertex(klepto_seg5_vertex_050048E8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 7, 4, 3, 0x0),
@@ -663,14 +615,10 @@ const Gfx klepto_seg5_dl_05004B58[] = {
};
// 0x05004B88
-static const Ambient klepto_seg5_light_05004B88 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004B90
-static const Light klepto_seg5_light_05004B90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004B88 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004BA0
static const Vtx klepto_seg5_vertex_05004BA0[] = {
@@ -685,8 +633,8 @@ const Gfx klepto_seg5_dl_05004BE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004B90, 1),
- gsSPLight(&klepto_seg5_light_05004B88, 2),
+ gsSPLight(&klepto_seg5_lights_05004B88.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004B88.a, 2),
gsSPVertex(klepto_seg5_vertex_05004BA0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -711,14 +659,10 @@ const Gfx klepto_seg5_dl_05004C28[] = {
};
// 0x05004C98
-static const Ambient klepto_seg5_light_05004C98 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004CA0
-static const Light klepto_seg5_light_05004CA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004C98 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004CB0
static const Vtx klepto_seg5_vertex_05004CB0[] = {
@@ -733,8 +677,8 @@ const Gfx klepto_seg5_dl_05004CF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004CA0, 1),
- gsSPLight(&klepto_seg5_light_05004C98, 2),
+ gsSPLight(&klepto_seg5_lights_05004C98.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004C98.a, 2),
gsSPVertex(klepto_seg5_vertex_05004CB0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
@@ -759,14 +703,10 @@ const Gfx klepto_seg5_dl_05004D38[] = {
};
// 0x05004DA8
-static const Ambient klepto_seg5_light_05004DA8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004DB0
-static const Light klepto_seg5_light_05004DB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004DA8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004DC0
static const Vtx klepto_seg5_vertex_05004DC0[] = {
@@ -781,8 +721,8 @@ const Gfx klepto_seg5_dl_05004E00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004DB0, 1),
- gsSPLight(&klepto_seg5_light_05004DA8, 2),
+ gsSPLight(&klepto_seg5_lights_05004DA8.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004DA8.a, 2),
gsSPVertex(klepto_seg5_vertex_05004DC0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -807,14 +747,10 @@ const Gfx klepto_seg5_dl_05004E48[] = {
};
// 0x05004EB8
-static const Ambient klepto_seg5_light_05004EB8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004EC0
-static const Light klepto_seg5_light_05004EC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004EB8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004ED0
static const Vtx klepto_seg5_vertex_05004ED0[] = {
@@ -829,8 +765,8 @@ const Gfx klepto_seg5_dl_05004F10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004EC0, 1),
- gsSPLight(&klepto_seg5_light_05004EB8, 2),
+ gsSPLight(&klepto_seg5_lights_05004EB8.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004EB8.a, 2),
gsSPVertex(klepto_seg5_vertex_05004ED0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
@@ -855,14 +791,10 @@ const Gfx klepto_seg5_dl_05004F58[] = {
};
// 0x05004FC8
-static const Ambient klepto_seg5_light_05004FC8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05004FD0
-static const Light klepto_seg5_light_05004FD0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_05004FC8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004FE0
static const Vtx klepto_seg5_vertex_05004FE0[] = {
@@ -877,8 +809,8 @@ const Gfx klepto_seg5_dl_05005020[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_05004FD0, 1),
- gsSPLight(&klepto_seg5_light_05004FC8, 2),
+ gsSPLight(&klepto_seg5_lights_05004FC8.l, 1),
+ gsSPLight(&klepto_seg5_lights_05004FC8.a, 2),
gsSPVertex(klepto_seg5_vertex_05004FE0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -903,14 +835,10 @@ const Gfx klepto_seg5_dl_05005068[] = {
};
// 0x050050D8
-static const Ambient klepto_seg5_light_050050D8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x050050E0
-static const Light klepto_seg5_light_050050E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 klepto_seg5_lights_050050D8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050050F0
static const Vtx klepto_seg5_vertex_050050F0[] = {
@@ -925,8 +853,8 @@ const Gfx klepto_seg5_dl_05005130[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, klepto_seg5_texture_05002008),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&klepto_seg5_light_050050E0, 1),
- gsSPLight(&klepto_seg5_light_050050D8, 2),
+ gsSPLight(&klepto_seg5_lights_050050D8.l, 1),
+ gsSPLight(&klepto_seg5_lights_050050D8.a, 2),
gsSPVertex(klepto_seg5_vertex_050050F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/koopa/model.inc.c b/actors/koopa/model.inc.c
@@ -1,85 +1,53 @@
// Koopa (Small Koopa, Big Koopa [Koopa the Quick])
-// Unreferenced light
-UNUSED static const Ambient koopa_light_1 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light koopa_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 koopa_lights_unused1 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060025A0
-static const Ambient koopa_seg6_light_060025A0 = {
- {{0x00, 0x59, 0x00}, 0, {0x00, 0x59, 0x00}, 0}
-};
-
-// 0x060025A8
-static const Light koopa_seg6_light_060025A8 = {
- {{0x00, 0xb2, 0x00}, 0, {0x00, 0xb2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_060025A0 = gdSPDefLights1(
+ 0x00, 0x59, 0x00,
+ 0x00, 0xb2, 0x00, 0x28, 0x28, 0x28
+);
// 0x060025B8
-static const Ambient koopa_seg6_light_060025B8 = {
- {{0x70, 0x57, 0x00}, 0, {0x70, 0x57, 0x00}, 0}
-};
-
-// 0x060025C0
-static const Light koopa_seg6_light_060025C0 = {
- {{0xe0, 0xae, 0x00}, 0, {0xe0, 0xae, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_060025B8 = gdSPDefLights1(
+ 0x70, 0x57, 0x00,
+ 0xe0, 0xae, 0x00, 0x28, 0x28, 0x28
+);
// 0x060025D0
-static const Ambient koopa_seg6_light_060025D0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x060025D8
-static const Light koopa_seg6_light_060025D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_060025D0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Ambient koopa_light_3 = {
- {{0x59, 0x59, 0x59}, 0, {0x59, 0x59, 0x59}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light koopa_light_4 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 koopa_lights_unused2 = gdSPDefLights1(
+ 0x59, 0x59, 0x59,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x06002600
-static const Ambient koopa_seg6_light_06002600 = {
- {{0x00, 0x54, 0x00}, 0, {0x00, 0x54, 0x00}, 0}
-};
-
-// 0x06002608
-static const Light koopa_seg6_light_06002608 = {
- {{0x00, 0xa9, 0x00}, 0, {0x00, 0xa9, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06002600 = gdSPDefLights1(
+ 0x00, 0x54, 0x00,
+ 0x00, 0xa9, 0x00, 0x28, 0x28, 0x28
+);
// 0x06002618
-static const Ambient koopa_seg6_light_06002618 = {
- {{0x59, 0x59, 0x59}, 0, {0x59, 0x59, 0x59}, 0}
-};
-
-// 0x06002620
-static const Light koopa_seg6_light_06002620 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06002618 = gdSPDefLights1(
+ 0x59, 0x59, 0x59,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x06002630
-static const Ambient koopa_seg6_light_06002630 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06002638
-static const Light koopa_seg6_light_06002638 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06002630 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// //! There is a malformed light entry here pointing to this texture + 0x18.
// It results in the koopa actor 'wearing' what appears to be pink shorts
@@ -127,24 +95,16 @@ ALIGNED8 static const u8 koopa_seg6_texture_06005E48[] = {
};
// 0x06006E48
-static const Ambient koopa_seg6_light_06006E48 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06006E50
-static const Light koopa_seg6_light_06006E50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06006E48 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06006E60
-static const Ambient koopa_seg6_light_06006E60 = {
- {{0x67, 0x0b, 0x1a}, 0, {0x67, 0x0b, 0x1a}, 0}
-};
-
-// 0x06006E68
-static const Light koopa_seg6_light_06006E68 = {
- {{0xce, 0x16, 0x35}, 0, {0xce, 0x16, 0x35}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06006E60 = gdSPDefLights1(
+ 0x67, 0x0b, 0x1a,
+ 0xce, 0x16, 0x35, 0x28, 0x28, 0x28
+);
// 0x06006E78
static const Vtx koopa_seg6_vertex_06006E78[] = {
@@ -318,8 +278,8 @@ static const Vtx koopa_seg6_vertex_060075B8[] = {
// 0x06007658 - 0x060076B0
const Gfx koopa_seg6_dl_06007658[] = {
- gsSPLight(&koopa_seg6_light_06006E50, 1),
- gsSPLight(&koopa_seg6_light_06006E48, 2),
+ gsSPLight(&koopa_seg6_lights_06006E48.l, 1),
+ gsSPLight(&koopa_seg6_lights_06006E48.a, 2),
gsSPVertex(koopa_seg6_vertex_06006E78, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 4, 6, 0, 0x0),
@@ -392,12 +352,12 @@ const Gfx koopa_seg6_dl_06007850[] = {
// 0x06007970 - 0x06007A60
const Gfx koopa_seg6_dl_06007970[] = {
- gsSPLight(&koopa_seg6_light_06006E68, 1),
- gsSPLight(&koopa_seg6_light_06006E60, 2),
+ gsSPLight(&koopa_seg6_lights_06006E60.l, 1),
+ gsSPLight(&koopa_seg6_lights_06006E60.a, 2),
gsSPVertex(koopa_seg6_vertex_06007488, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&koopa_seg6_light_06006E50, 1),
- gsSPLight(&koopa_seg6_light_06006E48, 2),
+ gsSPLight(&koopa_seg6_lights_06006E48.l, 1),
+ gsSPLight(&koopa_seg6_lights_06006E48.a, 2),
gsSPVertex(koopa_seg6_vertex_060074B8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 7, 0x0, 4, 6, 5, 0x0),
@@ -460,24 +420,16 @@ const Gfx koopa_seg6_dl_06007B20[] = {
};
// 0x06007B48
-static const Ambient koopa_seg6_light_06007B48 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06007B50
-static const Light koopa_seg6_light_06007B50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06007B48 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06007B60
-static const Ambient koopa_seg6_light_06007B60 = {
- {{0x70, 0x57, 0x00}, 0, {0x70, 0x57, 0x00}, 0}
-};
-
-// 0x06007B68
-static const Light koopa_seg6_light_06007B68 = {
- {{0xe0, 0xae, 0x00}, 0, {0xe0, 0xae, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06007B60 = gdSPDefLights1(
+ 0x70, 0x57, 0x00,
+ 0xe0, 0xae, 0x00, 0x28, 0x28, 0x28
+);
// 0x06007B78
static const Vtx koopa_seg6_vertex_06007B78[] = {
@@ -576,8 +528,8 @@ const Gfx koopa_seg6_dl_06007FB8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06002E48),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&koopa_seg6_light_06007B50, 1),
- gsSPLight(&koopa_seg6_light_06007B48, 2),
+ gsSPLight(&koopa_seg6_lights_06007B48.l, 1),
+ gsSPLight(&koopa_seg6_lights_06007B48.a, 2),
gsSPVertex(koopa_seg6_vertex_06007B78, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 5, 4, 0x0),
@@ -607,13 +559,13 @@ const Gfx koopa_seg6_dl_06008050[] = {
// 0x060080F8 - 0x06008250
const Gfx koopa_seg6_dl_060080F8[] = {
- gsSPLight(&koopa_seg6_light_06007B68, 1),
- gsSPLight(&koopa_seg6_light_06007B60, 2),
+ gsSPLight(&koopa_seg6_lights_06007B60.l, 1),
+ gsSPLight(&koopa_seg6_lights_06007B60.a, 2),
gsSPVertex(koopa_seg6_vertex_06007CF8, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP1Triangle( 2, 4, 3, 0x0),
- gsSPLight(&koopa_seg6_light_06007B50, 1),
- gsSPLight(&koopa_seg6_light_06007B48, 2),
+ gsSPLight(&koopa_seg6_lights_06007B48.l, 1),
+ gsSPLight(&koopa_seg6_lights_06007B48.a, 2),
gsSPVertex(koopa_seg6_vertex_06007D48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 1, 3, 0x0, 2, 1, 5, 0x0),
@@ -655,24 +607,16 @@ const Gfx koopa_seg6_dl_06008250[] = {
};
// 0x060082C0
-static const Ambient koopa_seg6_light_060082C0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x060082C8
-static const Light koopa_seg6_light_060082C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_060082C0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060082D8
-static const Ambient koopa_seg6_light_060082D8 = {
- {{0x00, 0x64, 0x00}, 0, {0x00, 0x64, 0x00}, 0}
-};
-
-// 0x060082E0
-static const Light koopa_seg6_light_060082E0 = {
- {{0x00, 0xc8, 0x00}, 0, {0x00, 0xc8, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_060082D8 = gdSPDefLights1(
+ 0x00, 0x64, 0x00,
+ 0x00, 0xc8, 0x00, 0x28, 0x28, 0x28
+);
// 0x060082F0
static const Vtx koopa_seg6_vertex_060082F0[] = {
@@ -727,8 +671,8 @@ const Gfx koopa_seg6_dl_06008530[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003648),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&koopa_seg6_light_060082C8, 1),
- gsSPLight(&koopa_seg6_light_060082C0, 2),
+ gsSPLight(&koopa_seg6_lights_060082C0.l, 1),
+ gsSPLight(&koopa_seg6_lights_060082C0.a, 2),
gsSPVertex(koopa_seg6_vertex_060082F0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 4, 5, 3, 0x0),
@@ -755,8 +699,8 @@ const Gfx koopa_seg6_dl_060085E8[] = {
// 0x06008640 - 0x060086D0
const Gfx koopa_seg6_dl_06008640[] = {
- gsSPLight(&koopa_seg6_light_060082E0, 1),
- gsSPLight(&koopa_seg6_light_060082D8, 2),
+ gsSPLight(&koopa_seg6_lights_060082D8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060082D8.a, 2),
gsSPVertex(koopa_seg6_vertex_06008470, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 4, 0, 0x0, 1, 5, 2, 0x0),
@@ -787,24 +731,16 @@ const Gfx koopa_seg6_dl_060086D0[] = {
};
// 0x06008740
-static const Ambient koopa_seg6_light_06008740 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06008748
-static const Light koopa_seg6_light_06008748 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06008740 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06008758
-static const Ambient koopa_seg6_light_06008758 = {
- {{0x00, 0x64, 0x00}, 0, {0x00, 0x64, 0x00}, 0}
-};
-
-// 0x06008760
-static const Light koopa_seg6_light_06008760 = {
- {{0x00, 0xc8, 0x00}, 0, {0x00, 0xc8, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_seg6_lights_06008758 = gdSPDefLights1(
+ 0x00, 0x64, 0x00,
+ 0x00, 0xc8, 0x00, 0x28, 0x28, 0x28
+);
// 0x06008770
static const Vtx koopa_seg6_vertex_06008770[] = {
@@ -859,8 +795,8 @@ const Gfx koopa_seg6_dl_060089B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_seg6_texture_06003648),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&koopa_seg6_light_06008748, 1),
- gsSPLight(&koopa_seg6_light_06008740, 2),
+ gsSPLight(&koopa_seg6_lights_06008740.l, 1),
+ gsSPLight(&koopa_seg6_lights_06008740.a, 2),
gsSPVertex(koopa_seg6_vertex_06008770, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 4, 5, 3, 0x0),
@@ -887,8 +823,8 @@ const Gfx koopa_seg6_dl_06008A68[] = {
// 0x06008AC0 - 0x06008B50
const Gfx koopa_seg6_dl_06008AC0[] = {
- gsSPLight(&koopa_seg6_light_06008760, 1),
- gsSPLight(&koopa_seg6_light_06008758, 2),
+ gsSPLight(&koopa_seg6_lights_06008758.l, 1),
+ gsSPLight(&koopa_seg6_lights_06008758.a, 2),
gsSPVertex(koopa_seg6_vertex_060088F0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 0, 6, 0x0),
@@ -1806,8 +1742,8 @@ static const Vtx koopa_seg6_vertex_0600B5F0[] = {
// 0x0600B6E0 - 0x0600B838
const Gfx koopa_seg6_dl_0600B6E0[] = {
- gsSPLight(&koopa_seg6_light_060025A8, 1),
- gsSPLight(&koopa_seg6_light_060025A0, 2),
+ gsSPLight(&koopa_seg6_lights_060025A0.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025A0.a, 2),
gsSPVertex(koopa_seg6_vertex_06008BC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1835,8 +1771,8 @@ const Gfx koopa_seg6_dl_0600B6E0[] = {
// 0x0600B838 - 0x0600B8B8
const Gfx koopa_seg6_dl_0600B838[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_06008F60, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1849,8 +1785,8 @@ const Gfx koopa_seg6_dl_0600B838[] = {
// 0x0600B8B8 - 0x0600BA10
const Gfx koopa_seg6_dl_0600B8B8[] = {
- gsSPLight(&koopa_seg6_light_060025A8, 1),
- gsSPLight(&koopa_seg6_light_060025A0, 2),
+ gsSPLight(&koopa_seg6_lights_060025A0.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025A0.a, 2),
gsSPVertex(koopa_seg6_vertex_06009040, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1879,8 +1815,8 @@ const Gfx koopa_seg6_dl_0600B8B8[] = {
// 0x0600BA10 - 0x0600BA90
const Gfx koopa_seg6_dl_0600BA10[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_06009410, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1893,8 +1829,8 @@ const Gfx koopa_seg6_dl_0600BA10[] = {
// 0x0600BA90 - 0x0600BC18
const Gfx koopa_seg6_dl_0600BA90[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_060094F0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1928,8 +1864,8 @@ const Gfx koopa_seg6_dl_0600BA90[] = {
// 0x0600BC18 - 0x0600BC88
const Gfx koopa_seg6_dl_0600BC18[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_06009A30, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 2, 0x0),
@@ -1941,8 +1877,8 @@ const Gfx koopa_seg6_dl_0600BC18[] = {
// 0x0600BC88 - 0x0600BE10
const Gfx koopa_seg6_dl_0600BC88[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_06009AD0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1976,8 +1912,8 @@ const Gfx koopa_seg6_dl_0600BC88[] = {
// 0x0600BE10 - 0x0600BE80
const Gfx koopa_seg6_dl_0600BE10[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_0600A010, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 2, 0x0),
@@ -1989,8 +1925,8 @@ const Gfx koopa_seg6_dl_0600BE10[] = {
// 0x0600BE80 - 0x0600C240
const Gfx koopa_seg6_dl_0600BE80[] = {
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_0600A0B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 6, 7, 8, 0x0),
@@ -2041,8 +1977,8 @@ const Gfx koopa_seg6_dl_0600BE80[] = {
gsSP1Triangle(13, 14, 15, 0x0),
gsSPVertex(koopa_seg6_vertex_0600A990, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&koopa_seg6_light_060025D8, 1),
- gsSPLight(&koopa_seg6_light_060025D0, 2),
+ gsSPLight(&koopa_seg6_lights_060025D0.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025D0.a, 2),
gsSPVertex(koopa_seg6_vertex_0600A9C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 2, 9, 10, 0x0),
@@ -2065,8 +2001,8 @@ const Gfx koopa_seg6_dl_0600BE80[] = {
// 0x0600C240 - 0x0600C498
const Gfx koopa_seg6_dl_0600C240[] = {
- gsSPLight(&koopa_seg6_light_06002620, 1),
- gsSPLight(&koopa_seg6_light_06002618, 2),
+ gsSPLight(&koopa_seg6_lights_06002618.l, 1),
+ gsSPLight(&koopa_seg6_lights_06002618.a, 2),
gsSPVertex(koopa_seg6_vertex_0600AC90, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 5, 4, 0x0),
@@ -2087,8 +2023,8 @@ const Gfx koopa_seg6_dl_0600C240[] = {
gsSP2Triangles( 4, 7, 8, 0x0, 4, 8, 9, 0x0),
gsSP2Triangles( 3, 4, 9, 0x0, 0, 3, 10, 0x0),
gsSP1Triangle(11, 12, 7, 0x0),
- gsSPLight(&koopa_seg6_light_06002608, 1),
- gsSPLight(&koopa_seg6_light_06002600, 2),
+ gsSPLight(&koopa_seg6_lights_06002600.l, 1),
+ gsSPLight(&koopa_seg6_lights_06002600.a, 2),
gsSPVertex(koopa_seg6_vertex_0600AF60, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 6, 5, 1, 0x0),
@@ -2096,8 +2032,8 @@ const Gfx koopa_seg6_dl_0600C240[] = {
gsSP2Triangles( 3, 8, 9, 0x0, 4, 3, 9, 0x0),
gsSP2Triangles( 7, 2, 5, 0x0, 6, 0, 8, 0x0),
gsSP2Triangles( 8, 3, 6, 0x0, 6, 1, 0, 0x0),
- gsSPLight(&koopa_seg6_light_060025C0, 1),
- gsSPLight(&koopa_seg6_light_060025B8, 2),
+ gsSPLight(&koopa_seg6_lights_060025B8.l, 1),
+ gsSPLight(&koopa_seg6_lights_060025B8.a, 2),
gsSPVertex(koopa_seg6_vertex_0600B000, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 7, 8, 9, 0x0),
@@ -2115,8 +2051,8 @@ const Gfx koopa_seg6_dl_0600C240[] = {
// 0x0600C498 - 0x0600C6A0
const Gfx koopa_seg6_dl_0600C498[] = {
- gsSPLight(&koopa_seg6_light_06002638, 1),
- gsSPLight(&koopa_seg6_light_06002630, 2),
+ gsSPLight(&koopa_seg6_lights_06002630.l, 1),
+ gsSPLight(&koopa_seg6_lights_06002630.a, 2),
gsSPVertex(koopa_seg6_vertex_0600B190, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/koopa_flag/model.inc.c b/actors/koopa_flag/model.inc.c
@@ -1,34 +1,22 @@
// Koopa Flag
// 0x06000000
-static const Ambient koopa_flag_seg6_light_06000000 = {
- {{0x00, 0x1b, 0x00}, 0, {0x00, 0x1b, 0x00}, 0}
-};
-
-// 0x06000008
-static const Light koopa_flag_seg6_light_06000008 = {
- {{0x00, 0x6e, 0x00}, 0, {0x00, 0x6e, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_flag_seg6_lights_06000000 = gdSPDefLights1(
+ 0x00, 0x1b, 0x00,
+ 0x00, 0x6e, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000018
-static const Ambient koopa_flag_seg6_light_06000018 = {
- {{0x3f, 0x39, 0x15}, 0, {0x3f, 0x39, 0x15}, 0}
-};
-
-// 0x06000020
-static const Light koopa_flag_seg6_light_06000020 = {
- {{0xff, 0xe6, 0x57}, 0, {0xff, 0xe6, 0x57}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_flag_seg6_lights_06000018 = gdSPDefLights1(
+ 0x3f, 0x39, 0x15,
+ 0xff, 0xe6, 0x57, 0x28, 0x28, 0x28
+);
// 0x06000030
-static const Ambient koopa_flag_seg6_light_06000030 = {
- {{0x2b, 0x15, 0x01}, 0, {0x2b, 0x15, 0x01}, 0}
-};
-
-// 0x06000038
-static const Light koopa_flag_seg6_light_06000038 = {
- {{0xac, 0x54, 0x05}, 0, {0xac, 0x54, 0x05}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_flag_seg6_lights_06000030 = gdSPDefLights1(
+ 0x2b, 0x15, 0x01,
+ 0xac, 0x54, 0x05, 0x28, 0x28, 0x28
+);
// 0x06000048
ALIGNED8 static const u8 koopa_flag_seg6_texture_06000048[] = {
@@ -36,24 +24,16 @@ ALIGNED8 static const u8 koopa_flag_seg6_texture_06000048[] = {
};
// 0x06000848
-static const Ambient koopa_flag_seg6_light_06000848 = {
- {{0x37, 0x27, 0x07}, 0, {0x37, 0x27, 0x07}, 0}
-};
-
-// 0x06000850
-static const Light koopa_flag_seg6_light_06000850 = {
- {{0xdf, 0x9f, 0x1f}, 0, {0xdf, 0x9f, 0x1f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_flag_seg6_lights_06000848 = gdSPDefLights1(
+ 0x37, 0x27, 0x07,
+ 0xdf, 0x9f, 0x1f, 0x28, 0x28, 0x28
+);
// 0x06000860
-static const Ambient koopa_flag_seg6_light_06000860 = {
- {{0x14, 0x0a, 0x00}, 0, {0x14, 0x0a, 0x00}, 0}
-};
-
-// 0x06000868
-static const Light koopa_flag_seg6_light_06000868 = {
- {{0x50, 0x28, 0x00}, 0, {0x50, 0x28, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_flag_seg6_lights_06000860 = gdSPDefLights1(
+ 0x14, 0x0a, 0x00,
+ 0x50, 0x28, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000878
static const Vtx koopa_flag_seg6_vertex_06000878[] = {
@@ -80,13 +60,13 @@ static const Vtx koopa_flag_seg6_vertex_060008C8[] = {
// 0x06000968 - 0x06000A08
const Gfx koopa_flag_seg6_dl_06000968[] = {
- gsSPLight(&koopa_flag_seg6_light_06000850, 1),
- gsSPLight(&koopa_flag_seg6_light_06000848, 2),
+ gsSPLight(&koopa_flag_seg6_lights_06000848.l, 1),
+ gsSPLight(&koopa_flag_seg6_lights_06000848.a, 2),
gsSPVertex(koopa_flag_seg6_vertex_06000878, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP1Triangle( 3, 0, 2, 0x0),
- gsSPLight(&koopa_flag_seg6_light_06000868, 1),
- gsSPLight(&koopa_flag_seg6_light_06000860, 2),
+ gsSPLight(&koopa_flag_seg6_lights_06000860.l, 1),
+ gsSPLight(&koopa_flag_seg6_lights_06000860.a, 2),
gsSPVertex(koopa_flag_seg6_vertex_060008C8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 5, 0, 3, 0x0),
diff --git a/actors/koopa_shell/model.inc.c b/actors/koopa_shell/model.inc.c
@@ -1,44 +1,28 @@
// Koopa Shell
// 0x08026388
-static const Ambient koopa_shell_seg8_light_08026388 = {
- {{0x11, 0x33, 0x06}, 0, {0x11, 0x33, 0x06}, 0}
-};
-
-// 0x08026390
-static const Light koopa_shell_seg8_light_08026390 = {
- {{0x45, 0xcd, 0x1a}, 0, {0x45, 0xcd, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_08026388 = gdSPDefLights1(
+ 0x11, 0x33, 0x06,
+ 0x45, 0xcd, 0x1a, 0x28, 0x28, 0x28
+);
// 0x080263A0
-static const Ambient koopa_shell_seg8_light_080263A0 = {
- {{0x39, 0x0a, 0x07}, 0, {0x39, 0x0a, 0x07}, 0}
-};
-
-// 0x080263A8
-static const Light koopa_shell_seg8_light_080263A8 = {
- {{0xe4, 0x29, 0x1d}, 0, {0xe4, 0x29, 0x1d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_080263A0 = gdSPDefLights1(
+ 0x39, 0x0a, 0x07,
+ 0xe4, 0x29, 0x1d, 0x28, 0x28, 0x28
+);
// 0x080263B8
-static const Ambient koopa_shell_seg8_light_080263B8 = {
- {{0x21, 0x30, 0x39}, 0, {0x21, 0x30, 0x39}, 0}
-};
-
-// 0x080263C0
-static const Light koopa_shell_seg8_light_080263C0 = {
- {{0x84, 0xc3, 0xe5}, 0, {0x84, 0xc3, 0xe5}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_080263B8 = gdSPDefLights1(
+ 0x21, 0x30, 0x39,
+ 0x84, 0xc3, 0xe5, 0x28, 0x28, 0x28
+);
// 0x080263D0
-static const Ambient koopa_shell_seg8_light_080263D0 = {
- {{0x3e, 0x3f, 0x3e}, 0, {0x3e, 0x3f, 0x3e}, 0}
-};
-
-// 0x080263D8
-static const Light koopa_shell_seg8_light_080263D8 = {
- {{0xfa, 0xff, 0xf8}, 0, {0xfa, 0xff, 0xf8}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_080263D0 = gdSPDefLights1(
+ 0x3e, 0x3f, 0x3e,
+ 0xfa, 0xff, 0xf8, 0x28, 0x28, 0x28
+);
// 0x080263E8
static const Vtx koopa_shell_seg8_vertex_080263E8[] = {
@@ -385,51 +369,43 @@ const Gfx koopa_shell_seg8_dl_08027258[] = {
// 0x080273C8 - 0x08027420
const Gfx koopa_shell_seg8_dl_080273C8[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&koopa_shell_seg8_light_08026390, 1),
- gsSPLight(&koopa_shell_seg8_light_08026388, 2),
+ gsSPNumLights(NUMLIGHTS_1),
+ gsSPLight(&koopa_shell_seg8_lights_08026388.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_08026388.a, 2),
gsSPDisplayList(koopa_shell_seg8_dl_08027108),
- gsSPLight(&koopa_shell_seg8_light_080263C0, 1),
- gsSPLight(&koopa_shell_seg8_light_080263B8, 2),
+ gsSPLight(&koopa_shell_seg8_lights_080263B8.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_080263B8.a, 2),
gsSPDisplayList(koopa_shell_seg8_dl_08027170),
- gsSPLight(&koopa_shell_seg8_light_080263D8, 1),
- gsSPLight(&koopa_shell_seg8_light_080263D0, 2),
+ gsSPLight(&koopa_shell_seg8_lights_080263D0.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_080263D0.a, 2),
gsSPBranchList(koopa_shell_seg8_dl_08027258),
};
// 0x08027420 - 0x08027470
const Gfx koopa_shell_seg8_dl_08027420[] = {
gsDPPipeSync(),
- gsSPLight(&koopa_shell_seg8_light_080263A8, 1),
- gsSPLight(&koopa_shell_seg8_light_080263A0, 2),
+ gsSPLight(&koopa_shell_seg8_lights_080263A0.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_080263A0.a, 2),
gsSPDisplayList(koopa_shell_seg8_dl_08027108),
- gsSPLight(&koopa_shell_seg8_light_080263C0, 1),
- gsSPLight(&koopa_shell_seg8_light_080263B8, 2),
+ gsSPLight(&koopa_shell_seg8_lights_080263B8.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_080263B8.a, 2),
gsSPDisplayList(koopa_shell_seg8_dl_08027170),
- gsSPLight(&koopa_shell_seg8_light_080263D8, 1),
- gsSPLight(&koopa_shell_seg8_light_080263D0, 2),
+ gsSPLight(&koopa_shell_seg8_lights_080263D0.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_080263D0.a, 2),
gsSPBranchList(koopa_shell_seg8_dl_08027258),
};
// 0x08027470
-static const Ambient koopa_shell_seg8_light_08027470 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x08027478
-static const Light koopa_shell_seg8_light_08027478 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_08027470 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08027488
-static const Ambient koopa_shell_seg8_light_08027488 = {
- {{0x38, 0x2b, 0x00}, 0, {0x38, 0x2b, 0x00}, 0}
-};
-
-// 0x08027490
-static const Light koopa_shell_seg8_light_08027490 = {
- {{0xe0, 0xae, 0x00}, 0, {0xe0, 0xae, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 koopa_shell_seg8_lights_08027488 = gdSPDefLights1(
+ 0x38, 0x2b, 0x00,
+ 0xe0, 0xae, 0x00, 0x28, 0x28, 0x28
+);
// 0x080274A0
ALIGNED8 static const u8 koopa_shell_seg8_texture_080274A0[] = {
@@ -538,8 +514,8 @@ const Gfx koopa_shell_seg8_dl_080288E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, koopa_shell_seg8_texture_08027CA0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&koopa_shell_seg8_light_08027478, 1),
- gsSPLight(&koopa_shell_seg8_light_08027470, 2),
+ gsSPLight(&koopa_shell_seg8_lights_08027470.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_08027470.a, 2),
gsSPVertex(koopa_shell_seg8_vertex_080284A0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 5, 4, 0x0),
@@ -569,13 +545,13 @@ const Gfx koopa_shell_seg8_dl_08028978[] = {
// 0x08028A20 - 0x08028B78
const Gfx koopa_shell_seg8_dl_08028A20[] = {
- gsSPLight(&koopa_shell_seg8_light_08027490, 1),
- gsSPLight(&koopa_shell_seg8_light_08027488, 2),
+ gsSPLight(&koopa_shell_seg8_lights_08027488.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_08027488.a, 2),
gsSPVertex(koopa_shell_seg8_vertex_08028620, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP1Triangle( 2, 4, 3, 0x0),
- gsSPLight(&koopa_shell_seg8_light_08027478, 1),
- gsSPLight(&koopa_shell_seg8_light_08027470, 2),
+ gsSPLight(&koopa_shell_seg8_lights_08027470.l, 1),
+ gsSPLight(&koopa_shell_seg8_lights_08027470.a, 2),
gsSPVertex(koopa_shell_seg8_vertex_08028670, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 1, 3, 0x0, 2, 1, 5, 0x0),
diff --git a/actors/lakitu_cameraman/model.inc.c b/actors/lakitu_cameraman/model.inc.c
@@ -31,24 +31,16 @@ ALIGNED8 static const u8 lakitu_seg6_texture_06003800[] = {
};
// 0x06003A00
-static const Ambient lakitu_seg6_light_06003A00 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06003A08
-static const Light lakitu_seg6_light_06003A08 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06003A00 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06003A18
-static const Ambient lakitu_seg6_light_06003A18 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x06003A20
-static const Light lakitu_seg6_light_06003A20 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06003A18 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x06003A30
static const Vtx lakitu_seg6_vertex_06003A30[] = {
@@ -104,8 +96,8 @@ const Gfx lakitu_seg6_dl_06003C80[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lakitu_seg6_light_06003A08, 1),
- gsSPLight(&lakitu_seg6_light_06003A00, 2),
+ gsSPLight(&lakitu_seg6_lights_06003A00.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06003A00.a, 2),
gsSPVertex(lakitu_seg6_vertex_06003A30, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
@@ -128,8 +120,8 @@ const Gfx lakitu_seg6_dl_06003C80[] = {
// 0x06003DB0 - 0x06003E30
const Gfx lakitu_seg6_dl_06003DB0[] = {
- gsSPLight(&lakitu_seg6_light_06003A20, 1),
- gsSPLight(&lakitu_seg6_light_06003A18, 2),
+ gsSPLight(&lakitu_seg6_lights_06003A18.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06003A18.a, 2),
gsSPVertex(lakitu_seg6_vertex_06003BD0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 1, 5, 2, 0x0, 4, 0, 2, 0x0),
@@ -158,14 +150,10 @@ const Gfx lakitu_seg6_dl_06003E30[] = {
};
// 0x06003E98
-static const Ambient lakitu_seg6_light_06003E98 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06003EA0
-static const Light lakitu_seg6_light_06003EA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06003E98 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06003EB0
static const Vtx lakitu_seg6_vertex_06003EB0[] = {
@@ -282,8 +270,8 @@ const Gfx lakitu_seg6_dl_06004410[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lakitu_seg6_light_06003EA0, 1),
- gsSPLight(&lakitu_seg6_light_06003E98, 2),
+ gsSPLight(&lakitu_seg6_lights_06003E98.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06003E98.a, 2),
gsSPVertex(lakitu_seg6_vertex_06003EB0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 3, 5, 1, 0x0, 1, 6, 7, 0x0),
@@ -345,14 +333,10 @@ const Gfx lakitu_seg6_dl_06004680[] = {
};
// 0x060046E0
-static const Ambient lakitu_seg6_light_060046E0 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x060046E8
-static const Light lakitu_seg6_light_060046E8 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_060046E0 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x060046F8
static const Vtx lakitu_seg6_vertex_060046F8[] = {
@@ -375,8 +359,8 @@ static const Vtx lakitu_seg6_vertex_060046F8[] = {
// 0x060047E8 - 0x060048D8
const Gfx lakitu_seg6_dl_060047E8[] = {
- gsSPLight(&lakitu_seg6_light_060046E8, 1),
- gsSPLight(&lakitu_seg6_light_060046E0, 2),
+ gsSPLight(&lakitu_seg6_lights_060046E0.l, 1),
+ gsSPLight(&lakitu_seg6_lights_060046E0.a, 2),
gsSPVertex(lakitu_seg6_vertex_060046F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
@@ -395,14 +379,10 @@ const Gfx lakitu_seg6_dl_060047E8[] = {
};
// 0x060048D8
-static const Ambient lakitu_seg6_light_060048D8 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x060048E0
-static const Light lakitu_seg6_light_060048E0 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_060048D8 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x060048F0
static const Vtx lakitu_seg6_vertex_060048F0[] = {
@@ -425,8 +405,8 @@ static const Vtx lakitu_seg6_vertex_060048F0[] = {
// 0x060049E0 - 0x06004AD0
const Gfx lakitu_seg6_dl_060049E0[] = {
- gsSPLight(&lakitu_seg6_light_060048E0, 1),
- gsSPLight(&lakitu_seg6_light_060048D8, 2),
+ gsSPLight(&lakitu_seg6_lights_060048D8.l, 1),
+ gsSPLight(&lakitu_seg6_lights_060048D8.a, 2),
gsSPVertex(lakitu_seg6_vertex_060048F0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 3, 7, 4, 0x0),
@@ -445,14 +425,10 @@ const Gfx lakitu_seg6_dl_060049E0[] = {
};
// 0x06004AD0
-static const Ambient lakitu_seg6_light_06004AD0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06004AD8
-static const Light lakitu_seg6_light_06004AD8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06004AD0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06004AE8
static const Vtx lakitu_seg6_vertex_06004AE8[] = {
@@ -472,8 +448,8 @@ static const Vtx lakitu_seg6_vertex_06004AE8[] = {
// 0x06004BA8 - 0x06004BE8
const Gfx lakitu_seg6_dl_06004BA8[] = {
- gsSPLight(&lakitu_seg6_light_06004AD8, 1),
- gsSPLight(&lakitu_seg6_light_06004AD0, 2),
+ gsSPLight(&lakitu_seg6_lights_06004AD0.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06004AD0.a, 2),
gsSPVertex(lakitu_seg6_vertex_06004AE8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -522,44 +498,28 @@ const Gfx lakitu_seg6_dl_06004C88[] = {
};
// 0x06004CB0
-static const Ambient lakitu_seg6_light_06004CB0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06004CB8
-static const Light lakitu_seg6_light_06004CB8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06004CB0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06004CC8
-static const Ambient lakitu_seg6_light_06004CC8 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x06004CD0
-static const Light lakitu_seg6_light_06004CD0 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06004CC8 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x19, 0x19, 0x19, 0x28, 0x28, 0x28
+);
// 0x06004CE0
-static const Ambient lakitu_seg6_light_06004CE0 = {
- {{0x19, 0x22, 0x20}, 0, {0x19, 0x22, 0x20}, 0}
-};
-
-// 0x06004CE8
-static const Light lakitu_seg6_light_06004CE8 = {
- {{0x32, 0x44, 0x40}, 0, {0x32, 0x44, 0x40}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06004CE0 = gdSPDefLights1(
+ 0x19, 0x22, 0x20,
+ 0x32, 0x44, 0x40, 0x28, 0x28, 0x28
+);
// 0x06004CF8
-static const Ambient lakitu_seg6_light_06004CF8 = {
- {{0x18, 0x18, 0x18}, 0, {0x18, 0x18, 0x18}, 0}
-};
-
-// 0x06004D00
-static const Light lakitu_seg6_light_06004D00 = {
- {{0x30, 0x30, 0x30}, 0, {0x30, 0x30, 0x30}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06004CF8 = gdSPDefLights1(
+ 0x18, 0x18, 0x18,
+ 0x30, 0x30, 0x30, 0x28, 0x28, 0x28
+);
// 0x06004D10
static const Vtx lakitu_seg6_vertex_06004D10[] = {
@@ -670,8 +630,8 @@ const Gfx lakitu_seg6_dl_060051D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_seg6_texture_06003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lakitu_seg6_light_06004CB8, 1),
- gsSPLight(&lakitu_seg6_light_06004CB0, 2),
+ gsSPLight(&lakitu_seg6_lights_06004CB0.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06004CB0.a, 2),
gsSPVertex(lakitu_seg6_vertex_06004D10, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -679,8 +639,8 @@ const Gfx lakitu_seg6_dl_060051D0[] = {
// 0x06005218 - 0x06005360
const Gfx lakitu_seg6_dl_06005218[] = {
- gsSPLight(&lakitu_seg6_light_06004CD0, 1),
- gsSPLight(&lakitu_seg6_light_06004CC8, 2),
+ gsSPLight(&lakitu_seg6_lights_06004CC8.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06004CC8.a, 2),
gsSPVertex(lakitu_seg6_vertex_06004D50, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -691,8 +651,8 @@ const Gfx lakitu_seg6_dl_06005218[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(lakitu_seg6_vertex_06004F30, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&lakitu_seg6_light_06004CE8, 1),
- gsSPLight(&lakitu_seg6_light_06004CE0, 2),
+ gsSPLight(&lakitu_seg6_lights_06004CE0.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06004CE0.a, 2),
gsSPVertex(lakitu_seg6_vertex_06004F90, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 0, 7, 1, 0x0),
@@ -701,8 +661,8 @@ const Gfx lakitu_seg6_dl_06005218[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
- gsSPLight(&lakitu_seg6_light_06004D00, 1),
- gsSPLight(&lakitu_seg6_light_06004CF8, 2),
+ gsSPLight(&lakitu_seg6_lights_06004CF8.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06004CF8.a, 2),
gsSPVertex(lakitu_seg6_vertex_06005150, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 1, 6, 0x0),
@@ -728,65 +688,41 @@ const Gfx lakitu_seg6_dl_06005360[] = {
gsSPEndDisplayList(),
};
-// unreferenced light?
-UNUSED static const Ambient lakitu_cameraman_light_1 = {
- {{0x33, 0x1f, 0x0c}, 0, {0x33, 0x1f, 0x0c}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Light lakitu_cameraman_light_2 = {
- {{0xcc, 0x7f, 0x33}, 0, {0xcc, 0x7f, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_cameraman_lights_unused1 = gdSPDefLights1(
+ 0x33, 0x1f, 0x0c,
+ 0xcc, 0x7f, 0x33, 0x28, 0x28, 0x28
+);
// 0x060053F0
-static const Ambient lakitu_seg6_light_060053F0 = {
- {{0x29, 0x13, 0x06}, 0, {0x29, 0x13, 0x06}, 0}
-};
-
-// 0x060053F8
-static const Light lakitu_seg6_light_060053F8 = {
- {{0xa5, 0x4f, 0x1b}, 0, {0xa5, 0x4f, 0x1b}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Ambient lakitu_cameraman_light_3 = {
- {{0x06, 0x06, 0x06}, 0, {0x06, 0x06, 0x06}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Light lakitu_cameraman_light_4 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Ambient lakitu_cameraman_light_5 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Light lakitu_cameraman_light_6 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_060053F0 = gdSPDefLights1(
+ 0x29, 0x13, 0x06,
+ 0xa5, 0x4f, 0x1b, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_cameraman_lights_unused2 = gdSPDefLights1(
+ 0x06, 0x06, 0x06,
+ 0x19, 0x19, 0x19, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_cameraman_lights_unused3 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x06005438
-static const Ambient lakitu_seg6_light_06005438 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x06005440
-static const Light lakitu_seg6_light_06005440 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_seg6_lights_06005438 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
-// unreferenced light?
-UNUSED static const Ambient lakitu_cameraman_light_7 = {
- {{0x0d, 0x2c, 0x0b}, 0, {0x0d, 0x2c, 0x0b}, 0}
-};
-
-// unreferenced light?
-UNUSED static const Light lakitu_cameraman_light_8 = {
- {{0x34, 0xb2, 0x2c}, 0, {0x34, 0xb2, 0x2c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_cameraman_lights_unused4 = gdSPDefLights1(
+ 0x0d, 0x2c, 0x0b,
+ 0x34, 0xb2, 0x2c, 0x28, 0x28, 0x28
+);
// 0x06005468
static const Vtx lakitu_seg6_vertex_06005468[] = {
@@ -821,8 +757,8 @@ static const Vtx lakitu_seg6_vertex_06005568[] = {
// 0x06005598 - 0x060055E8
const Gfx lakitu_seg6_dl_06005598[] = {
- gsSPLight(&lakitu_seg6_light_060053F8, 1),
- gsSPLight(&lakitu_seg6_light_060053F0, 2),
+ gsSPLight(&lakitu_seg6_lights_060053F0.l, 1),
+ gsSPLight(&lakitu_seg6_lights_060053F0.a, 2),
gsSPVertex(lakitu_seg6_vertex_06005468, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 0, 2, 0x0, 7, 8, 9, 0x0),
@@ -832,8 +768,8 @@ const Gfx lakitu_seg6_dl_06005598[] = {
// 0x060055E8 - 0x06005610
const Gfx lakitu_seg6_dl_060055E8[] = {
- gsSPLight(&lakitu_seg6_light_06005440, 1),
- gsSPLight(&lakitu_seg6_light_06005438, 2),
+ gsSPLight(&lakitu_seg6_lights_06005438.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06005438.a, 2),
gsSPVertex(lakitu_seg6_vertex_06005538, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
@@ -841,8 +777,8 @@ const Gfx lakitu_seg6_dl_060055E8[] = {
// 0x06005610 - 0x06005638
const Gfx lakitu_seg6_dl_06005610[] = {
- gsSPLight(&lakitu_seg6_light_06005440, 1),
- gsSPLight(&lakitu_seg6_light_06005438, 2),
+ gsSPLight(&lakitu_seg6_lights_06005438.l, 1),
+ gsSPLight(&lakitu_seg6_lights_06005438.a, 2),
gsSPVertex(lakitu_seg6_vertex_06005568, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/lakitu_enemy/model.inc.c b/actors/lakitu_enemy/model.inc.c
@@ -1,34 +1,22 @@
// Lakitu Enemy
-// Unreferenced light
-UNUSED static const Ambient lakitu_enemy_light_1 = {
- {{0x33, 0x1f, 0x0c}, 0, {0x33, 0x1f, 0x0c}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light lakitu_enemy_light_2 = {
- {{0xcc, 0x7f, 0x33}, 0, {0xcc, 0x7f, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_enemy_lights_unused1 = gdSPDefLights1(
+ 0x33, 0x1f, 0x0c,
+ 0xcc, 0x7f, 0x33, 0x28, 0x28, 0x28
+);
// 0x0500ECB0
-static const Ambient lakitu_enemy_seg5_light_0500ECB0 = {
- {{0x29, 0x13, 0x06}, 0, {0x29, 0x13, 0x06}, 0}
-};
-
-// 0x0500ECB8
-static const Light lakitu_enemy_seg5_light_0500ECB8 = {
- {{0xa5, 0x4f, 0x1b}, 0, {0xa5, 0x4f, 0x1b}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient lakitu_enemy_light_3 = {
- {{0x0d, 0x2c, 0x0b}, 0, {0x0d, 0x2c, 0x0b}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_0500ECB0 = gdSPDefLights1(
+ 0x29, 0x13, 0x06,
+ 0xa5, 0x4f, 0x1b, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Light lakitu_enemy_light_4 = {
- {{0x34, 0xb2, 0x2c}, 0, {0x34, 0xb2, 0x2c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 lakitu_enemy_lights_unused2 = gdSPDefLights1(
+ 0x0d, 0x2c, 0x0b,
+ 0x34, 0xb2, 0x2c, 0x28, 0x28, 0x28
+);
// Unreferenced texture
// 0x0500ECE0
@@ -57,24 +45,16 @@ ALIGNED8 static const u8 lakitu_enemy_seg5_texture_05011CE0[] = {
};
// 0x050124E0
-static const Ambient lakitu_enemy_seg5_light_050124E0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050124E8
-static const Light lakitu_enemy_seg5_light_050124E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_050124E0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050124F8
-static const Ambient lakitu_enemy_seg5_light_050124F8 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x05012500
-static const Light lakitu_enemy_seg5_light_05012500 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_050124F8 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x05012510
static const Vtx lakitu_enemy_seg5_vertex_05012510[] = {
@@ -130,8 +110,8 @@ const Gfx lakitu_enemy_seg5_dl_05012760[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_050114E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lakitu_enemy_seg5_light_050124E8, 1),
- gsSPLight(&lakitu_enemy_seg5_light_050124E0, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_050124E0.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_050124E0.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_05012510, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
@@ -154,8 +134,8 @@ const Gfx lakitu_enemy_seg5_dl_05012760[] = {
// 0x05012890 - 0x05012910
const Gfx lakitu_enemy_seg5_dl_05012890[] = {
- gsSPLight(&lakitu_enemy_seg5_light_05012500, 1),
- gsSPLight(&lakitu_enemy_seg5_light_050124F8, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_050124F8.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_050124F8.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_050126B0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 1, 5, 2, 0x0, 4, 0, 2, 0x0),
@@ -184,14 +164,10 @@ const Gfx lakitu_enemy_seg5_dl_05012910[] = {
};
// 0x05012978
-static const Ambient lakitu_enemy_seg5_light_05012978 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05012980
-static const Light lakitu_enemy_seg5_light_05012980 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_05012978 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05012990
static const Vtx lakitu_enemy_seg5_vertex_05012990[] = {
@@ -308,8 +284,8 @@ const Gfx lakitu_enemy_seg5_dl_05012EF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lakitu_enemy_seg5_texture_05011CE0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lakitu_enemy_seg5_light_05012980, 1),
- gsSPLight(&lakitu_enemy_seg5_light_05012978, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_05012978.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_05012978.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_05012990, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 3, 5, 1, 0x0, 1, 6, 7, 0x0),
@@ -371,14 +347,10 @@ const Gfx lakitu_enemy_seg5_dl_05013160[] = {
};
// 0x050131C0
-static const Ambient lakitu_enemy_seg5_light_050131C0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050131C8
-static const Light lakitu_enemy_seg5_light_050131C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_050131C0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050131D8
static const Vtx lakitu_enemy_seg5_vertex_050131D8[] = {
@@ -398,8 +370,8 @@ static const Vtx lakitu_enemy_seg5_vertex_050131D8[] = {
// 0x05013298 - 0x050132D8
const Gfx lakitu_enemy_seg5_dl_05013298[] = {
- gsSPLight(&lakitu_enemy_seg5_light_050131C8, 1),
- gsSPLight(&lakitu_enemy_seg5_light_050131C0, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_050131C0.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_050131C0.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_050131D8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -448,14 +420,10 @@ const Gfx lakitu_enemy_seg5_dl_05013378[] = {
};
// 0x050133A0
-static const Ambient lakitu_enemy_seg5_light_050133A0 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x050133A8
-static const Light lakitu_enemy_seg5_light_050133A8 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_050133A0 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x050133B8
static const Vtx lakitu_enemy_seg5_vertex_050133B8[] = {
@@ -478,8 +446,8 @@ static const Vtx lakitu_enemy_seg5_vertex_050133B8[] = {
// 0x050134A8 - 0x05013598
const Gfx lakitu_enemy_seg5_dl_050134A8[] = {
- gsSPLight(&lakitu_enemy_seg5_light_050133A8, 1),
- gsSPLight(&lakitu_enemy_seg5_light_050133A0, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_050133A0.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_050133A0.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_050133B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 3, 7, 4, 0x0),
@@ -498,14 +466,10 @@ const Gfx lakitu_enemy_seg5_dl_050134A8[] = {
};
// 0x05013598
-static const Ambient lakitu_enemy_seg5_light_05013598 = {
- {{0x79, 0x55, 0x00}, 0, {0x79, 0x55, 0x00}, 0}
-};
-
-// 0x050135A0
-static const Light lakitu_enemy_seg5_light_050135A0 = {
- {{0xf2, 0xab, 0x00}, 0, {0xf2, 0xab, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 lakitu_enemy_seg5_lights_05013598 = gdSPDefLights1(
+ 0x79, 0x55, 0x00,
+ 0xf2, 0xab, 0x00, 0x28, 0x28, 0x28
+);
// 0x050135B0
static const Vtx lakitu_enemy_seg5_vertex_050135B0[] = {
@@ -528,8 +492,8 @@ static const Vtx lakitu_enemy_seg5_vertex_050135B0[] = {
// 0x050136A0 - 0x05013790
const Gfx lakitu_enemy_seg5_dl_050136A0[] = {
- gsSPLight(&lakitu_enemy_seg5_light_050135A0, 1),
- gsSPLight(&lakitu_enemy_seg5_light_05013598, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_05013598.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_05013598.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_050135B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
@@ -566,8 +530,8 @@ static const Vtx lakitu_enemy_seg5_vertex_05013790[] = {
// 0x05013860 - 0x050138B0
const Gfx lakitu_enemy_seg5_dl_05013860[] = {
- gsSPLight(&lakitu_enemy_seg5_light_0500ECB8, 1),
- gsSPLight(&lakitu_enemy_seg5_light_0500ECB0, 2),
+ gsSPLight(&lakitu_enemy_seg5_lights_0500ECB0.l, 1),
+ gsSPLight(&lakitu_enemy_seg5_lights_0500ECB0.a, 2),
gsSPVertex(lakitu_enemy_seg5_vertex_05013790, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 0, 2, 0x0, 7, 8, 9, 0x0),
@@ -577,6 +541,6 @@ const Gfx lakitu_enemy_seg5_dl_05013860[] = {
// 0x050138B0 - 0x050138C0
const Gfx lakitu_enemy_seg5_dl_050138B0[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPEndDisplayList(),
};
diff --git a/actors/mad_piano/model.inc.c b/actors/mad_piano/model.inc.c
@@ -1,44 +1,28 @@
// Mad Piano
-// Unreferenced light
-UNUSED static const Ambient mad_piano_light_1 = {
- {{0x05, 0x04, 0x08}, 0, {0x05, 0x04, 0x08}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mad_piano_light_2 = {
- {{0x14, 0x13, 0x20}, 0, {0x14, 0x13, 0x20}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient mad_piano_light_3 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mad_piano_light_4 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient mad_piano_light_5 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mad_piano_light_6 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient mad_piano_light_7 = {
- {{0x30, 0x00, 0x00}, 0, {0x30, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mad_piano_light_8 = {
- {{0xc3, 0x00, 0x00}, 0, {0xc3, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 mad_piano_lights_unused1 = gdSPDefLights1(
+ 0x05, 0x04, 0x08,
+ 0x14, 0x13, 0x20, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 mad_piano_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 mad_piano_lights_unused3 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 mad_piano_lights_unused4 = gdSPDefLights1(
+ 0x30, 0x00, 0x00,
+ 0xc3, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05006AF0
ALIGNED8 static const u8 mad_piano_seg5_texture_05006AF0[] = {
@@ -71,14 +55,10 @@ ALIGNED8 static const u8 mad_piano_seg5_texture_050082F0[] = {
};
// 0x050086F0
-static const Ambient mad_piano_seg5_light_050086F0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x050086F8
-static const Light mad_piano_seg5_light_050086F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mad_piano_seg5_lights_050086F0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05008708
static const Vtx mad_piano_seg5_vertex_05008708[] = {
@@ -175,8 +155,8 @@ const Gfx mad_piano_seg5_dl_05008B68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050072F0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mad_piano_seg5_light_050086F8, 1),
- gsSPLight(&mad_piano_seg5_light_050086F0, 2),
+ gsSPLight(&mad_piano_seg5_lights_050086F0.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_050086F0.a, 2),
gsSPVertex(mad_piano_seg5_vertex_05008708, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 2, 6, 0x0, 0, 7, 8, 0x0),
@@ -231,44 +211,28 @@ const Gfx mad_piano_seg5_dl_05008CB0[] = {
};
// 0x05008D40
-static const Ambient mad_piano_seg5_light_05008D40 = {
- {{0x3d, 0x3d, 0x3d}, 0, {0x3d, 0x3d, 0x3d}, 0}
-};
-
-// 0x05008D48
-static const Light mad_piano_seg5_light_05008D48 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mad_piano_seg5_lights_05008D40 = gdSPDefLights1(
+ 0x3d, 0x3d, 0x3d,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
// 0x05008D58
-static const Ambient mad_piano_seg5_light_05008D58 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x05008D60
-static const Light mad_piano_seg5_light_05008D60 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mad_piano_seg5_lights_05008D58 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05008D70
-static const Ambient mad_piano_seg5_light_05008D70 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x05008D78
-static const Light mad_piano_seg5_light_05008D78 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mad_piano_seg5_lights_05008D70 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x7f, 0x7f, 0x7f, 0x28, 0x28, 0x28
+);
// 0x05008D88
-static const Ambient mad_piano_seg5_light_05008D88 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x05008D90
-static const Light mad_piano_seg5_light_05008D90 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mad_piano_seg5_lights_05008D88 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05008DA0
static const Vtx mad_piano_seg5_vertex_05008DA0[] = {
@@ -446,16 +410,16 @@ const Gfx mad_piano_seg5_dl_05009590[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050072F0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mad_piano_seg5_light_05008D48, 1),
- gsSPLight(&mad_piano_seg5_light_05008D40, 2),
+ gsSPLight(&mad_piano_seg5_lights_05008D40.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_05008D40.a, 2),
gsSPVertex(mad_piano_seg5_vertex_05008DA0, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 7, 9, 0x0),
gsSP2Triangles(11, 9, 1, 0x0, 0, 12, 11, 0x0),
gsSP1Triangle( 0, 11, 1, 0x0),
- gsSPLight(&mad_piano_seg5_light_05008D60, 1),
- gsSPLight(&mad_piano_seg5_light_05008D58, 2),
+ gsSPLight(&mad_piano_seg5_lights_05008D58.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_05008D58.a, 2),
gsSPVertex(mad_piano_seg5_vertex_05008E70, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -500,8 +464,8 @@ const Gfx mad_piano_seg5_dl_050097B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_050082F0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mad_piano_seg5_light_05008D78, 1),
- gsSPLight(&mad_piano_seg5_light_05008D70, 2),
+ gsSPLight(&mad_piano_seg5_lights_05008D70.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_05008D70.a, 2),
gsSPVertex(mad_piano_seg5_vertex_050093F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -512,8 +476,8 @@ const Gfx mad_piano_seg5_dl_050097F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mad_piano_seg5_texture_05007EF0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mad_piano_seg5_light_05008D48, 1),
- gsSPLight(&mad_piano_seg5_light_05008D40, 2),
+ gsSPLight(&mad_piano_seg5_lights_05008D40.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_05008D40.a, 2),
gsSPVertex(mad_piano_seg5_vertex_05009430, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -532,8 +496,8 @@ const Gfx mad_piano_seg5_dl_05009840[] = {
// 0x05009888 - 0x050098E8
const Gfx mad_piano_seg5_dl_05009888[] = {
- gsSPLight(&mad_piano_seg5_light_05008D90, 1),
- gsSPLight(&mad_piano_seg5_light_05008D88, 2),
+ gsSPLight(&mad_piano_seg5_lights_05008D88.l, 1),
+ gsSPLight(&mad_piano_seg5_lights_05008D88.a, 2),
gsSPVertex(mad_piano_seg5_vertex_050094F0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 2, 5, 4, 0x0),
diff --git a/actors/manta/model.inc.c b/actors/manta/model.inc.c
@@ -1,34 +1,22 @@
// Manta Ray
// 0x05001758
-static const Ambient manta_seg5_light_05001758 = {
- {{0x31, 0x3b, 0x3b}, 0, {0x31, 0x3b, 0x3b}, 0}
-};
-
-// 0x05001760
-static const Light manta_seg5_light_05001760 = {
- {{0xc6, 0xee, 0xed}, 0, {0xc6, 0xee, 0xed}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 manta_seg5_lights_05001758 = gdSPDefLights1(
+ 0x31, 0x3b, 0x3b,
+ 0xc6, 0xee, 0xed, 0x28, 0x28, 0x28
+);
// 0x05001770
-static const Ambient manta_seg5_light_05001770 = {
- {{0x00, 0x16, 0x18}, 0, {0x00, 0x16, 0x18}, 0}
-};
+static const Lights1 manta_seg5_lights_05001770 = gdSPDefLights1(
+ 0x00, 0x16, 0x18,
+ 0x03, 0x5b, 0x63, 0x28, 0x28, 0x28
+);
-// 0x05001778
-static const Light manta_seg5_light_05001778 = {
- {{0x03, 0x5b, 0x63}, 0, {0x03, 0x5b, 0x63}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient manta_light_1 = {
- {{0x3f, 0x3f, 0x35}, 0, {0x3f, 0x3f, 0x35}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light manta_light_2 = {
- {{0xff, 0xff, 0xd7}, 0, {0xff, 0xff, 0xd7}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+static const Lights1 manta_lights_unused = gdSPDefLights1(
+ 0x3f, 0x3f, 0x35,
+ 0xff, 0xff, 0xd7, 0x28, 0x28, 0x28
+);
// 0x050017A0
ALIGNED8 static const u8 manta_seg5_texture_050017A0[] = {
@@ -1049,13 +1037,13 @@ static const Vtx manta_seg5_vertex_05006A88[] = {
// 0x05006B08 - 0x05006B70
const Gfx manta_seg5_dl_05006B08[] = {
- gsSPLight(&manta_seg5_light_05001778, 1),
- gsSPLight(&manta_seg5_light_05001770, 2),
+ gsSPLight(&manta_seg5_lights_05001770.l, 1),
+ gsSPLight(&manta_seg5_lights_05001770.a, 2),
gsSPVertex(manta_seg5_vertex_05006808, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 1, 0, 5, 0x0),
- gsSPLight(&manta_seg5_light_05001760, 1),
- gsSPLight(&manta_seg5_light_05001758, 2),
+ gsSPLight(&manta_seg5_lights_05001758.l, 1),
+ gsSPLight(&manta_seg5_lights_05001758.a, 2),
gsSPVertex(manta_seg5_vertex_05006868, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -1063,15 +1051,15 @@ const Gfx manta_seg5_dl_05006B08[] = {
// 0x05006B70 - 0x05006C08
const Gfx manta_seg5_dl_05006B70[] = {
- gsSPLight(&manta_seg5_light_05001778, 1),
- gsSPLight(&manta_seg5_light_05001770, 2),
+ gsSPLight(&manta_seg5_lights_05001770.l, 1),
+ gsSPLight(&manta_seg5_lights_05001770.a, 2),
gsSPVertex(manta_seg5_vertex_050068C8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 1, 7, 2, 0x0),
gsSP2Triangles( 5, 1, 0, 0x0, 5, 0, 3, 0x0),
gsSP2Triangles( 6, 7, 1, 0x0, 6, 1, 5, 0x0),
- gsSPLight(&manta_seg5_light_05001760, 1),
- gsSPLight(&manta_seg5_light_05001758, 2),
+ gsSPLight(&manta_seg5_lights_05001758.l, 1),
+ gsSPLight(&manta_seg5_lights_05001758.a, 2),
gsSPVertex(manta_seg5_vertex_05006948, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 3, 0x0),
@@ -1080,15 +1068,15 @@ const Gfx manta_seg5_dl_05006B70[] = {
// 0x05006C08 - 0x05006CA0
const Gfx manta_seg5_dl_05006C08[] = {
- gsSPLight(&manta_seg5_light_05001778, 1),
- gsSPLight(&manta_seg5_light_05001770, 2),
+ gsSPLight(&manta_seg5_lights_05001770.l, 1),
+ gsSPLight(&manta_seg5_lights_05001770.a, 2),
gsSPVertex(manta_seg5_vertex_050069C8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 1, 7, 2, 0x0),
gsSP2Triangles( 5, 8, 9, 0x0, 5, 9, 3, 0x0),
gsSP2Triangles( 6, 10, 11, 0x0, 6, 11, 5, 0x0),
- gsSPLight(&manta_seg5_light_05001760, 1),
- gsSPLight(&manta_seg5_light_05001758, 2),
+ gsSPLight(&manta_seg5_lights_05001758.l, 1),
+ gsSPLight(&manta_seg5_lights_05001758.a, 2),
gsSPVertex(manta_seg5_vertex_05006A88, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 3, 0x0),
diff --git a/actors/mario/model.inc.c b/actors/mario/model.inc.c
@@ -1,64 +1,40 @@
// Mario
-// 0x04000000 # solid color dark blue - butt, left thigh, right thigh - all polys
-static const Ambient mario_amb_light_group1 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x04000008 # solid color light blue - butt, left thigh, right thigh - all polys
-static const Light mario_diff_light_group1 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x04000018 # solid color dark red - left & right arm, torso (tshirt part), caps - all polys
-static const Ambient mario_amb_light_group2 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x04000020 # solid color light red - left & right arm, torso (tshirt part), caps - all polys
-static const Light mario_diff_light_group2 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x04000030 # solid color gray - metal butt & left thigh - normal left & right hand closed & open (with cap too) and all wings - all polys
-static const Ambient mario_amb_light_group3 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x04000038 # solid color white - metal butt & left thigh - normal left & right hand closed & open (with cap too) and all wings - all polys
-static const Light mario_diff_light_group3 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x04000048 # solid color dark brown 1 - foot - all polys
-static const Ambient mario_amb_light_group4 = {
- {{0x39, 0x0e, 0x07}, 0, {0x39, 0x0e, 0x07}, 0}
-};
-
-// 0x04000050 # solid color light brown 1 - foot - all polys
-static const Light mario_diff_light_group4 = {
- {{0x72, 0x1c, 0x0e}, 0, {0x72, 0x1c, 0x0e}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x04000060 # solid color dark skin - face (cap on and off dls) - all polys
-static const Ambient mario_amb_light_group5 = {
- {{0x7f, 0x60, 0x3c}, 0, {0x7f, 0x60, 0x3c}, 0}
-};
-
-// 0x04000068 # solid color light skin - face (cap on and off dls) - all polys
-static const Light mario_diff_light_group5 = {
- {{0xfe, 0xc1, 0x79}, 0, {0xfe, 0xc1, 0x79}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x04000078 # solid color dark brown 2 - hair - all polys
-static const Ambient mario_amb_light_group6 = {
- {{0x39, 0x03, 0x00}, 0, {0x39, 0x03, 0x00}, 0}
-};
-
-// 0x04000080 # solid color light brown 2 - hair - all polys
-static const Light mario_diff_light_group6 = {
- {{0x73, 0x06, 0x00}, 0, {0x73, 0x06, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x04000000 # solid color blue - butt, left thigh, right thigh - all poly types
+static const Lights1 mario_blue_lights_group = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x04000018 # solid color red - left & right arm, torso (tshirt part), caps - all poly types
+static const Lights1 mario_red_lights_group = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x04000030 # solid color white - metal butt & left thigh - normal left & right hand closed & open (with cap too) and all wings - all poly types
+static const Lights1 mario_white_lights_group = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x04000048 # solid color brown 1 - foot - all poly types
+static const Lights1 mario_brown1_lights_group = gdSPDefLights1(
+ 0x39, 0x0e, 0x07,
+ 0x72, 0x1c, 0x0e, 0x28, 0x28, 0x28
+);
+
+// 0x04000060 # solid color beige skin - face (cap on and off dls) - all poly types
+static const Lights1 mario_beige_lights_group = gdSPDefLights1(
+ 0x7f, 0x60, 0x3c,
+ 0xfe, 0xc1, 0x79, 0x28, 0x28, 0x28
+);
+
+// 0x04000078 # solid color brown 2 - hair - all poly types
+static const Lights1 mario_brown2_lights_group = gdSPDefLights1(
+ 0x39, 0x03, 0x00,
+ 0x73, 0x06, 0x00, 0x28, 0x28, 0x28
+);
// 0x04000090
ALIGNED8 static const u8 mario_texture_metal[] = {
@@ -405,8 +381,8 @@ const Gfx mario_butt_dl[] = {
const Gfx mario_butt[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_butt_dl),
gsSPEndDisplayList(),
};
@@ -418,8 +394,8 @@ const Gfx mario_metal_butt[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_butt_dl),
gsSPEndDisplayList(),
};
@@ -523,8 +499,8 @@ const Gfx mario_left_arm_shared_dl[] = {
// 0x0400D1D8 - 0x0400D1F8
const Gfx mario_left_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_left_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -675,8 +651,8 @@ const Gfx mario_left_hand_closed_shared_dl[] = {
// 0x0400D8F0 - 0x0400D910
const Gfx mario_left_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_left_hand_closed_shared_dl),
gsSPEndDisplayList(),
};
@@ -784,8 +760,8 @@ const Gfx mario_right_arm_shared_dl[] = {
// 0x0400DDE8 - 0x0400DE08
const Gfx mario_right_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_right_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -921,8 +897,8 @@ const Gfx mario_right_hand_closed_dl[] = {
// 0x0400E458 - 0x0400E478
const Gfx mario_right_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_right_hand_closed_dl),
gsSPEndDisplayList(),
};
@@ -1003,8 +979,8 @@ const Gfx mario_left_thigh_dl[] = {
const Gfx mario_left_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -1016,8 +992,8 @@ const Gfx mario_metal_left_thigh[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -1115,8 +1091,8 @@ const Gfx mario_left_foot_shared_dl[] = {
// 0x0400ECA0 - 0x0400ECC0
const Gfx mario_left_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_left_foot_shared_dl),
gsSPEndDisplayList(),
};
@@ -1184,8 +1160,8 @@ const Gfx mario_right_thigh_shared_dl[] = {
// 0x0400EFB8 - 0x0400EFD8
const Gfx mario_right_thigh[] = {
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_right_thigh_shared_dl),
gsSPEndDisplayList(),
};
@@ -1300,8 +1276,8 @@ const Gfx mario_right_foot_dl[] = {
// 0x0400F4E8 - 0x0400F528
const Gfx mario_right_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_right_foot_dl),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -1613,8 +1589,8 @@ const Gfx mario_tshirt_shared_dl[] = {
// 0x04010348 - 0x04010370
const Gfx mario_torso_dl[] = {
gsSPDisplayList(mario_pants_overalls_shared_dl),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_tshirt_shared_dl),
gsSPEndDisplayList(),
};
@@ -2104,11 +2080,11 @@ const Gfx mario_face_back_hair_cap_on_dl[] = {
// 0x04011960 - 0x040119A0
const Gfx mario_face_cap_on_dl[] = {
gsSPDisplayList(mario_face_part_cap_on_dl),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_face_cap_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_face_back_hair_cap_on_dl),
gsSPEndDisplayList(),
};
@@ -2129,8 +2105,8 @@ const Gfx mario_cap_on_eyes_front[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2163,8 +2139,8 @@ const Gfx mario_cap_on_eyes_half_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2197,8 +2173,8 @@ const Gfx mario_cap_on_eyes_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2231,8 +2207,8 @@ const Gfx mario_cap_on_eyes_right[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2265,8 +2241,8 @@ const Gfx mario_cap_on_eyes_left[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2299,8 +2275,8 @@ const Gfx mario_cap_on_eyes_up[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2333,8 +2309,8 @@ const Gfx mario_cap_on_eyes_down[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2367,8 +2343,8 @@ const Gfx mario_cap_on_eyes_dead[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_hair_sideburn),
gsDPLoadSync(),
@@ -2397,25 +2373,17 @@ const Gfx mario_metal_cap_on_shared_dl[] = {
gsSPEndDisplayList(),
};
-// Unreferenced light
-UNUSED static const Ambient mario_light_1 = {
- {{0x3f, 0x30, 0x1e}, 0, {0x3f, 0x30, 0x1e}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mario_light_2 = {
- {{0xfe, 0xc1, 0x79}, 0, {0xfe, 0xc1, 0x79}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 mario_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x30, 0x1e,
+ 0xfe, 0xc1, 0x79, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Ambient mario_light_3 = {
- {{0x1c, 0x01, 0x00}, 0, {0x1c, 0x01, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light mario_light_4 = {
- {{0x73, 0x06, 0x00}, 0, {0x73, 0x06, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 mario_lights_unused2 = gdSPDefLights1(
+ 0x1c, 0x01, 0x00,
+ 0x73, 0x06, 0x00, 0x28, 0x28, 0x28
+);
// 0x04012190
static const Vtx mario_eyes_cap_off_dl_vertex[] = {
@@ -2924,8 +2892,8 @@ const Gfx mario_face_hair_cap_off_dl[] = {
// 0x040139C0 - 0x040139E8
const Gfx mario_face_cap_off_dl[] = {
gsSPDisplayList(mario_face_part_cap_off_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_face_hair_cap_off_dl),
gsSPEndDisplayList(),
};
@@ -2942,8 +2910,8 @@ const Gfx mario_cap_off_eyes_front[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -2972,8 +2940,8 @@ const Gfx mario_cap_off_eyes_half_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3002,8 +2970,8 @@ const Gfx mario_cap_off_eyes_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3032,8 +3000,8 @@ const Gfx mario_cap_off_eyes_right[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3062,8 +3030,8 @@ const Gfx mario_cap_off_eyes_left[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3092,8 +3060,8 @@ const Gfx mario_cap_off_eyes_up[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3122,8 +3090,8 @@ const Gfx mario_cap_off_eyes_down[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3152,8 +3120,8 @@ const Gfx mario_cap_off_eyes_dead[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -3302,8 +3270,8 @@ const Gfx mario_medium_poly_butt_dl[] = {
const Gfx mario_medium_poly_butt[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_butt_dl),
gsSPEndDisplayList(),
};
@@ -3315,8 +3283,8 @@ const Gfx mario_metal_medium_poly_butt[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_butt_dl),
gsSPEndDisplayList(),
};
@@ -3354,8 +3322,8 @@ const Gfx mario_medium_poly_left_arm_shared_dl[] = {
// 0x04014840 - 0x04014860
const Gfx mario_medium_poly_left_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_left_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -3476,8 +3444,8 @@ const Gfx mario_medium_poly_left_hand_closed_shared_dl[] = {
// 0x04014DC0 - 0x04014DE0
const Gfx mario_medium_poly_left_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_left_hand_closed_shared_dl),
gsSPEndDisplayList(),
};
@@ -3515,8 +3483,8 @@ const Gfx mario_medium_poly_right_arm_shared_dl[] = {
// 0x04014F40 - 0x04014F60
const Gfx mario_medium_poly_right_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_right_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -3638,8 +3606,8 @@ const Gfx mario_medium_poly_right_hand_closed_dl[] = {
// 0x040154E0 - 0x04015500
const Gfx mario_medium_poly_right_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_right_hand_closed_dl),
gsSPEndDisplayList(),
};
@@ -3691,8 +3659,8 @@ const Gfx mario_medium_poly_left_thigh_dl[] = {
const Gfx mario_medium_poly_left_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -3704,8 +3672,8 @@ const Gfx mario_metal_medium_poly_left_thigh[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -3799,8 +3767,8 @@ const Gfx mario_medium_poly_left_foot_shared_dl[] = {
// 0x04015B60 - 0x04015B80
const Gfx mario_medium_poly_left_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_left_foot_shared_dl),
gsSPEndDisplayList(),
};
@@ -3840,8 +3808,8 @@ const Gfx mario_medium_poly_right_thigh_shared_dl[] = {
// 0x04015D00 - 0x04015D20
const Gfx mario_medium_poly_right_thigh[] = {
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_right_thigh_shared_dl),
gsSPEndDisplayList(),
};
@@ -3929,8 +3897,8 @@ const Gfx mario_medium_poly_right_foot_dl[] = {
// 0x040160C8 - 0x04016108
const Gfx mario_medium_poly_right_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_right_foot_dl),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -4113,8 +4081,8 @@ const Gfx mario_medium_poly_tshirt_shared_dl[] = {
// 0x040168A0 - 0x040168C8
const Gfx mario_medium_poly_torso_dl[] = {
gsSPDisplayList(mario_medium_poly_pants_overalls_shared_dl),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_medium_poly_tshirt_shared_dl),
gsSPEndDisplayList(),
};
@@ -4181,8 +4149,8 @@ const Gfx mario_low_poly_butt_dl[] = {
const Gfx mario_low_poly_butt[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_butt_dl),
gsSPEndDisplayList(),
};
@@ -4194,8 +4162,8 @@ const Gfx mario_metal_low_poly_butt[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_butt_dl),
gsSPEndDisplayList(),
};
@@ -4228,8 +4196,8 @@ const Gfx mario_low_poly_left_arm_shared_dl[] = {
// 0x04016C70 - 0x04016C90
const Gfx mario_low_poly_left_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_left_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -4285,8 +4253,8 @@ const Gfx mario_low_poly_left_hand_closed_shared_dl[] = {
// 0x04016E80 - 0x04016EA0
const Gfx mario_low_poly_left_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_left_hand_closed_shared_dl),
gsSPEndDisplayList(),
};
@@ -4319,8 +4287,8 @@ const Gfx mario_low_poly_right_arm_shared_dl[] = {
// 0x04016FB0 - 0x04016FD0
const Gfx mario_low_poly_right_arm[] = {
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_right_arm_shared_dl),
gsSPEndDisplayList(),
};
@@ -4376,8 +4344,8 @@ const Gfx mario_low_poly_right_hand_closed_dl[] = {
// 0x040171C0 - 0x040171E0
const Gfx mario_low_poly_right_hand_closed[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_right_hand_closed_dl),
gsSPEndDisplayList(),
};
@@ -4426,8 +4394,8 @@ const Gfx mario_low_poly_left_thigh_dl[] = {
const Gfx mario_low_poly_left_thigh[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -4439,8 +4407,8 @@ const Gfx mario_metal_low_poly_left_thigh[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_left_thigh_dl),
gsSPEndDisplayList(),
};
@@ -4507,8 +4475,8 @@ const Gfx mario_low_poly_left_foot_shared_dl[] = {
// 0x040176A8 - 0x040176C8
const Gfx mario_low_poly_left_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_left_foot_shared_dl),
gsSPEndDisplayList(),
};
@@ -4545,8 +4513,8 @@ const Gfx mario_low_poly_right_thigh_shared_dl[] = {
// 0x04017818 - 0x04017838
const Gfx mario_low_poly_right_thigh[] = {
- gsSPLight(&mario_diff_light_group1, 1),
- gsSPLight(&mario_amb_light_group1, 2),
+ gsSPLight(&mario_blue_lights_group.l, 1),
+ gsSPLight(&mario_blue_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_right_thigh_shared_dl),
gsSPEndDisplayList(),
};
@@ -4613,8 +4581,8 @@ const Gfx mario_low_poly_right_foot_dl[] = {
// 0x04017AD8 - 0x04017B18
const Gfx mario_low_poly_right_foot[] = {
- gsSPLight(&mario_diff_light_group4, 1),
- gsSPLight(&mario_amb_light_group4, 2),
+ gsSPLight(&mario_brown1_lights_group.l, 1),
+ gsSPLight(&mario_brown1_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_right_foot_dl),
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -4716,8 +4684,8 @@ const Gfx mario_low_poly_tshirt_shared_dl[] = {
// 0x04017E78 - 0x04017EA0
const Gfx mario_low_poly_torso_dl[] = {
gsSPDisplayList(mario_low_poly_pants_overalls_shared_dl),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_tshirt_shared_dl),
gsSPEndDisplayList(),
};
@@ -4886,11 +4854,11 @@ const Gfx mario_low_poly_face_back_hair_cap_on_dl[] = {
// 0x04018420 - 0x04018460
const Gfx mario_low_poly_face_cap_on_dl[] = {
gsSPDisplayList(mario_low_poly_face_part_cap_on_dl),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_face_cap_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_face_back_hair_cap_on_dl),
gsSPEndDisplayList(),
};
@@ -4911,8 +4879,8 @@ const Gfx mario_low_poly_cap_on_eyes_front[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -4941,8 +4909,8 @@ const Gfx mario_low_poly_cap_on_eyes_half_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -4971,8 +4939,8 @@ const Gfx mario_low_poly_cap_on_eyes_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5001,8 +4969,8 @@ const Gfx mario_low_poly_cap_on_eyes_right[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5031,8 +4999,8 @@ const Gfx mario_low_poly_cap_on_eyes_left[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5061,8 +5029,8 @@ const Gfx mario_low_poly_cap_on_eyes_up[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5091,8 +5059,8 @@ const Gfx mario_low_poly_cap_on_eyes_down[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5121,8 +5089,8 @@ const Gfx mario_low_poly_cap_on_eyes_dead[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_eyes_cap_on_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5255,8 +5223,8 @@ const Gfx mario_low_poly_face_hair_cap_off_dl[] = {
// 0x04018F68 - 0x04018F90
const Gfx mario_low_poly_face_cap_off_dl[] = {
gsSPDisplayList(mario_low_poly_face_part_cap_off_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_face_hair_cap_off_dl),
gsSPEndDisplayList(),
};
@@ -5273,8 +5241,8 @@ const Gfx mario_low_poly_cap_off_eyes_front[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_front),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5299,8 +5267,8 @@ const Gfx mario_low_poly_cap_off_eyes_half_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_half_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5325,8 +5293,8 @@ const Gfx mario_low_poly_cap_off_eyes_closed[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_closed),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5351,8 +5319,8 @@ const Gfx mario_low_poly_cap_off_eyes_right[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_right),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5377,8 +5345,8 @@ const Gfx mario_low_poly_cap_off_eyes_left[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_left),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5403,8 +5371,8 @@ const Gfx mario_low_poly_cap_off_eyes_up[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_up),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5429,8 +5397,8 @@ const Gfx mario_low_poly_cap_off_eyes_down[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_down),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5455,8 +5423,8 @@ const Gfx mario_low_poly_cap_off_eyes_dead[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_eyes_dead),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group5, 1),
- gsSPLight(&mario_amb_light_group5, 2),
+ gsSPLight(&mario_beige_lights_group.l, 1),
+ gsSPLight(&mario_beige_lights_group.a, 2),
gsSPDisplayList(mario_low_poly_mario_eyes_cap_off_dl),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_mustache),
gsDPLoadSync(),
@@ -5631,8 +5599,8 @@ const Gfx mario_left_hand_open_shared_dl[] = {
// 0x04019CA0 - 0x04019CC0
const Gfx mario_left_hand_open[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_left_hand_open_shared_dl),
gsSPEndDisplayList(),
};
@@ -5790,8 +5758,8 @@ const Gfx mario_right_hand_open_dl[] = {
// 0x0401A428 - 0x0401A448
const Gfx mario_right_hand_open[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_right_hand_open_dl),
gsSPEndDisplayList(),
};
@@ -6040,11 +6008,11 @@ const Gfx mario_right_hand_cap_bottom_dl[] = {
// 0x0401AF20 - 0x0401AF60
const Gfx mario_right_hand_cap_dl[] = {
gsSPDisplayList(mario_right_hand_cap_top_dl),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_right_hand_cap_hand_position_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_right_hand_cap_bottom_dl),
gsSPEndDisplayList(),
};
@@ -6098,8 +6066,8 @@ const Gfx mario_right_hand_cap_wings_intial_dl[] = {
gsSPClearGeometryMode(G_CULL_BACK | G_SHADING_SMOOTH),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
@@ -6433,8 +6401,8 @@ const Gfx mario_right_hand_peace_shared_dl[] = {
// 0x0401BF30 - 0x0401BF50
const Gfx mario_right_hand_peace[] = {
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_right_hand_peace_shared_dl),
gsSPEndDisplayList(),
};
@@ -6571,8 +6539,8 @@ const Gfx mario_cap_unused_base_bottom_dl[] = {
// 0x0401C510 - 0x0401C538
const Gfx mario_cap_unused_base_dl[] = {
gsSPDisplayList(mario_cap_unused_base_top_dl),
- gsSPLight(&mario_diff_light_group6, 1),
- gsSPLight(&mario_amb_light_group6, 2),
+ gsSPLight(&mario_brown2_lights_group.l, 1),
+ gsSPLight(&mario_brown2_lights_group.a, 2),
gsSPDisplayList(mario_cap_unused_base_bottom_dl),
gsSPEndDisplayList(),
};
@@ -6631,8 +6599,8 @@ const Gfx mario_cap_wings_unused_intial_dl[] = {
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPEndDisplayList(),
};
@@ -6657,8 +6625,8 @@ const Gfx mario_cap_unused_dl[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_m_logo),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_diff_light_group2, 1),
- gsSPLight(&mario_amb_light_group2, 2),
+ gsSPLight(&mario_red_lights_group.l, 1),
+ gsSPLight(&mario_red_lights_group.a, 2),
gsSPDisplayList(mario_cap_unused_m_logo_dl),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
@@ -6674,8 +6642,8 @@ const Gfx mario_metal_cap_unused_dl[] = {
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
gsDPLoadTextureBlock(mario_texture_metal, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsSPDisplayList(mario_cap_unused_m_logo_dl),
gsSPDisplayList(mario_cap_unused_base_top_dl),
gsSPDisplayList(mario_cap_unused_base_bottom_dl),
@@ -6756,8 +6724,8 @@ const Gfx mario_cap_wings[] = {
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
@@ -6783,8 +6751,8 @@ const Gfx mario_cap_wings_transparent[] = {
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
@@ -6810,8 +6778,8 @@ const Gfx mario_metal_cap_wings[] = {
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (64 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPLight(&mario_diff_light_group3, 1),
- gsSPLight(&mario_amb_light_group3, 2),
+ gsSPLight(&mario_white_lights_group.l, 1),
+ gsSPLight(&mario_white_lights_group.a, 2),
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_texture_metal_wings_half_1),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
diff --git a/actors/mario_cap/model.inc.c b/actors/mario_cap/model.inc.c
@@ -1,34 +1,22 @@
// Mario Cap (Normal Cap, Metal, Winged, etc)
// 0x0301CF08
-static const Ambient mario_cap_seg3_light_0301CF08 = {
- {{0x39, 0x03, 0x00}, 0, {0x39, 0x03, 0x00}, 0}
-};
-
-// 0x0301CF10
-static const Light mario_cap_seg3_light_0301CF10 = {
- {{0x73, 0x06, 0x00}, 0, {0x73, 0x06, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mario_cap_seg3_lights_0301CF08 = gdSPDefLights1(
+ 0x39, 0x03, 0x00,
+ 0x73, 0x06, 0x00, 0x28, 0x28, 0x28
+);
// 0x0301CF20
-static const Ambient mario_cap_seg3_light_0301CF20 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0301CF28
-static const Light mario_cap_seg3_light_0301CF28 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mario_cap_seg3_lights_0301CF20 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0301CF38
-static const Ambient mario_cap_seg3_light_0301CF38 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x0301CF40
-static const Light mario_cap_seg3_light_0301CF40 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mario_cap_seg3_lights_0301CF38 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0301CF50
ALIGNED8 static const u8 mario_cap_seg3_texture_0301CF50[] = {
@@ -192,8 +180,8 @@ const Gfx mario_cap_seg3_dl_03022CC8[] = {
// 0x03022D10 - 0x03022D38
const Gfx mario_cap_seg3_dl_03022D10[] = {
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
- gsSPLight(&mario_cap_seg3_light_0301CF10, 1),
- gsSPLight(&mario_cap_seg3_light_0301CF08, 2),
+ gsSPLight(&mario_cap_seg3_lights_0301CF08.l, 1),
+ gsSPLight(&mario_cap_seg3_lights_0301CF08.a, 2),
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
gsSPEndDisplayList(),
};
@@ -276,8 +264,8 @@ const Gfx mario_cap_seg3_dl_03022F48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_cap_seg3_light_0301CF40, 1),
- gsSPLight(&mario_cap_seg3_light_0301CF38, 2),
+ gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
+ gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
@@ -297,8 +285,8 @@ const Gfx mario_cap_seg3_dl_03022FF8[] = {
gsDPSetCombineMode(G_CC_MODULATERGBFADE, G_CC_MODULATERGBFADE),
gsDPLoadTextureBlock(mario_cap_seg3_texture_0301CF50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_cap_seg3_light_0301CF28, 1),
- gsSPLight(&mario_cap_seg3_light_0301CF20, 2),
+ gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
+ gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
@@ -353,8 +341,8 @@ const Gfx mario_cap_seg3_dl_03023160[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mario_cap_seg3_texture_0301DF50),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mario_cap_seg3_light_0301CF40, 1),
- gsSPLight(&mario_cap_seg3_light_0301CF38, 2),
+ gsSPLight(&mario_cap_seg3_lights_0301CF38.l, 1),
+ gsSPLight(&mario_cap_seg3_lights_0301CF38.a, 2),
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPPipeSync(),
@@ -397,8 +385,8 @@ const Gfx mario_cap_seg3_dl_03023298[] = {
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 6, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
gsSPTexture(0x0F80, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&mario_cap_seg3_light_0301CF28, 1),
- gsSPLight(&mario_cap_seg3_light_0301CF20, 2),
+ gsSPLight(&mario_cap_seg3_lights_0301CF20.l, 1),
+ gsSPLight(&mario_cap_seg3_lights_0301CF20.a, 2),
gsSPDisplayList(mario_cap_seg3_dl_03022B30),
gsSPDisplayList(mario_cap_seg3_dl_03022B68),
gsSPDisplayList(mario_cap_seg3_dl_03022CC8),
diff --git a/actors/metal_box/model.inc.c b/actors/metal_box/model.inc.c
@@ -1,14 +1,10 @@
// Metal Box
// 0x08023980
-static const Ambient metal_box_seg8_light_08023980 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x08023988
-static const Light metal_box_seg8_light_08023988 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 metal_box_seg8_lights_08023980 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x08023998
ALIGNED8 static const u8 metal_box_seg8_texture_08023998[] = {
@@ -52,8 +48,8 @@ const Gfx metal_box_seg8_dl_08024B18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, metal_box_seg8_texture_08023998),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&metal_box_seg8_light_08023988, 1),
- gsSPLight(&metal_box_seg8_light_08023980, 2),
+ gsSPLight(&metal_box_seg8_lights_08023980.l, 1),
+ gsSPLight(&metal_box_seg8_lights_08023980.a, 2),
gsSPVertex(metal_box_seg8_vertex_08024998, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/mips/model.inc.c b/actors/mips/model.inc.c
@@ -6,24 +6,16 @@ ALIGNED8 static const u8 mips_seg6_texture_0600FB80[] = {
};
// 0x06010380
-static const Ambient mips_seg6_light_06010380 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06010388
-static const Light mips_seg6_light_06010388 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010380 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06010398
-static const Ambient mips_seg6_light_06010398 = {
- {{0x0f, 0x0d, 0x04}, 0, {0x0f, 0x0d, 0x04}, 0}
-};
-
-// 0x060103A0
-static const Light mips_seg6_light_060103A0 = {
- {{0x27, 0x21, 0x0b}, 0, {0x27, 0x21, 0x0b}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010398 = gdSPDefLights1(
+ 0x0f, 0x0d, 0x04,
+ 0x27, 0x21, 0x0b, 0x28, 0x28, 0x28
+);
// 0x060103B0
static const Vtx mips_seg6_vertex_060103B0[] = {
@@ -83,8 +75,8 @@ const Gfx mips_seg6_dl_06010600[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06010388, 1),
- gsSPLight(&mips_seg6_light_06010380, 2),
+ gsSPLight(&mips_seg6_lights_06010380.l, 1),
+ gsSPLight(&mips_seg6_lights_06010380.a, 2),
gsSPVertex(mips_seg6_vertex_060103B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 5, 3, 0x0),
@@ -109,13 +101,13 @@ const Gfx mips_seg6_dl_06010600[] = {
// 0x06010748 - 0x060107B8
const Gfx mips_seg6_dl_06010748[] = {
- gsSPLight(&mips_seg6_light_060103A0, 1),
- gsSPLight(&mips_seg6_light_06010398, 2),
+ gsSPLight(&mips_seg6_lights_06010398.l, 1),
+ gsSPLight(&mips_seg6_lights_06010398.a, 2),
gsSPVertex(mips_seg6_vertex_06010580, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP1Triangle( 3, 2, 1, 0x0),
- gsSPLight(&mips_seg6_light_06010388, 1),
- gsSPLight(&mips_seg6_light_06010380, 2),
+ gsSPLight(&mips_seg6_lights_06010380.l, 1),
+ gsSPLight(&mips_seg6_lights_06010380.a, 2),
gsSPVertex(mips_seg6_vertex_060105C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 2, 0, 0x0, 2, 1, 0, 0x0),
@@ -140,14 +132,10 @@ const Gfx mips_seg6_dl_060107B8[] = {
};
// 0x06010820
-static const Ambient mips_seg6_light_06010820 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06010828
-static const Light mips_seg6_light_06010828 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010820 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06010838
static const Vtx mips_seg6_vertex_06010838[] = {
@@ -204,8 +192,8 @@ const Gfx mips_seg6_dl_06010A98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06010828, 1),
- gsSPLight(&mips_seg6_light_06010820, 2),
+ gsSPLight(&mips_seg6_lights_06010820.l, 1),
+ gsSPLight(&mips_seg6_lights_06010820.a, 2),
gsSPVertex(mips_seg6_vertex_06010838, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 1, 0x0, 1, 6, 3, 0x0),
@@ -252,24 +240,16 @@ const Gfx mips_seg6_dl_06010C40[] = {
};
// 0x06010CA0
-static const Ambient mips_seg6_light_06010CA0 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06010CA8
-static const Light mips_seg6_light_06010CA8 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010CA0 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06010CB8
-static const Ambient mips_seg6_light_06010CB8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06010CC0
-static const Light mips_seg6_light_06010CC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010CB8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06010CD0
static const Vtx mips_seg6_vertex_06010CD0[] = {
@@ -298,13 +278,13 @@ const Gfx mips_seg6_dl_06010DB0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06010CA8, 1),
- gsSPLight(&mips_seg6_light_06010CA0, 2),
+ gsSPLight(&mips_seg6_lights_06010CA0.l, 1),
+ gsSPLight(&mips_seg6_lights_06010CA0.a, 2),
gsSPVertex(mips_seg6_vertex_06010CD0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 4, 0, 5, 0x0),
- gsSPLight(&mips_seg6_light_06010CC0, 1),
- gsSPLight(&mips_seg6_light_06010CB8, 2),
+ gsSPLight(&mips_seg6_lights_06010CB8.l, 1),
+ gsSPLight(&mips_seg6_lights_06010CB8.a, 2),
gsSPVertex(mips_seg6_vertex_06010D30, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 6, 0, 0x0),
@@ -330,34 +310,22 @@ const Gfx mips_seg6_dl_06010E60[] = {
};
// 0x06010EC0
-static const Ambient mips_seg6_light_06010EC0 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06010EC8
-static const Light mips_seg6_light_06010EC8 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010EC0 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06010ED8
-static const Ambient mips_seg6_light_06010ED8 = {
- {{0x35, 0x38, 0x00}, 0, {0x35, 0x38, 0x00}, 0}
-};
-
-// 0x06010EE0
-static const Light mips_seg6_light_06010EE0 = {
- {{0x85, 0x8e, 0x00}, 0, {0x85, 0x8e, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010ED8 = gdSPDefLights1(
+ 0x35, 0x38, 0x00,
+ 0x85, 0x8e, 0x00, 0x28, 0x28, 0x28
+);
// 0x06010EF0
-static const Ambient mips_seg6_light_06010EF0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06010EF8
-static const Light mips_seg6_light_06010EF8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06010EF0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06010F08
static const Vtx mips_seg6_vertex_06010F08[] = {
@@ -391,17 +359,17 @@ const Gfx mips_seg6_dl_06010FF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06010EC8, 1),
- gsSPLight(&mips_seg6_light_06010EC0, 2),
+ gsSPLight(&mips_seg6_lights_06010EC0.l, 1),
+ gsSPLight(&mips_seg6_lights_06010EC0.a, 2),
gsSPVertex(mips_seg6_vertex_06010F08, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP1Triangle( 3, 2, 4, 0x0),
- gsSPLight(&mips_seg6_light_06010EE0, 1),
- gsSPLight(&mips_seg6_light_06010ED8, 2),
+ gsSPLight(&mips_seg6_lights_06010ED8.l, 1),
+ gsSPLight(&mips_seg6_lights_06010ED8.a, 2),
gsSPVertex(mips_seg6_vertex_06010F58, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&mips_seg6_light_06010EF8, 1),
- gsSPLight(&mips_seg6_light_06010EF0, 2),
+ gsSPLight(&mips_seg6_lights_06010EF0.l, 1),
+ gsSPLight(&mips_seg6_lights_06010EF0.a, 2),
gsSPVertex(mips_seg6_vertex_06010F88, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 2, 4, 0x0, 2, 1, 4, 0x0),
@@ -426,24 +394,16 @@ const Gfx mips_seg6_dl_060110B0[] = {
};
// 0x06011110
-static const Ambient mips_seg6_light_06011110 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06011118
-static const Light mips_seg6_light_06011118 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011110 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06011128
-static const Ambient mips_seg6_light_06011128 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06011130
-static const Light mips_seg6_light_06011130 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011128 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06011140
static const Vtx mips_seg6_vertex_06011140[] = {
@@ -474,13 +434,13 @@ const Gfx mips_seg6_dl_06011240[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06011118, 1),
- gsSPLight(&mips_seg6_light_06011110, 2),
+ gsSPLight(&mips_seg6_lights_06011110.l, 1),
+ gsSPLight(&mips_seg6_lights_06011110.a, 2),
gsSPVertex(mips_seg6_vertex_06011140, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&mips_seg6_light_06011130, 1),
- gsSPLight(&mips_seg6_light_06011128, 2),
+ gsSPLight(&mips_seg6_lights_06011128.l, 1),
+ gsSPLight(&mips_seg6_lights_06011128.a, 2),
gsSPVertex(mips_seg6_vertex_060111A0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 5, 6, 1, 0x0),
@@ -508,24 +468,16 @@ const Gfx mips_seg6_dl_06011310[] = {
};
// 0x06011370
-static const Ambient mips_seg6_light_06011370 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06011378
-static const Light mips_seg6_light_06011378 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011370 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06011388
-static const Ambient mips_seg6_light_06011388 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06011390
-static const Light mips_seg6_light_06011390 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011388 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060113A0
static const Vtx mips_seg6_vertex_060113A0[] = {
@@ -553,13 +505,13 @@ const Gfx mips_seg6_dl_06011470[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06011378, 1),
- gsSPLight(&mips_seg6_light_06011370, 2),
+ gsSPLight(&mips_seg6_lights_06011370.l, 1),
+ gsSPLight(&mips_seg6_lights_06011370.a, 2),
gsSPVertex(mips_seg6_vertex_060113A0, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP1Triangle( 3, 4, 1, 0x0),
- gsSPLight(&mips_seg6_light_06011390, 1),
- gsSPLight(&mips_seg6_light_06011388, 2),
+ gsSPLight(&mips_seg6_lights_06011388.l, 1),
+ gsSPLight(&mips_seg6_lights_06011388.a, 2),
gsSPVertex(mips_seg6_vertex_060113F0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 3, 2, 1, 0x0, 3, 5, 6, 0x0),
@@ -586,24 +538,16 @@ const Gfx mips_seg6_dl_06011520[] = {
};
// 0x06011580
-static const Ambient mips_seg6_light_06011580 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06011588
-static const Light mips_seg6_light_06011588 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011580 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06011598
-static const Ambient mips_seg6_light_06011598 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x060115A0
-static const Light mips_seg6_light_060115A0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011598 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060115B0
static const Vtx mips_seg6_vertex_060115B0[] = {
@@ -634,13 +578,13 @@ const Gfx mips_seg6_dl_060116B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06011588, 1),
- gsSPLight(&mips_seg6_light_06011580, 2),
+ gsSPLight(&mips_seg6_lights_06011580.l, 1),
+ gsSPLight(&mips_seg6_lights_06011580.a, 2),
gsSPVertex(mips_seg6_vertex_060115B0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 3, 1, 0x0, 2, 5, 0, 0x0),
- gsSPLight(&mips_seg6_light_060115A0, 1),
- gsSPLight(&mips_seg6_light_06011598, 2),
+ gsSPLight(&mips_seg6_lights_06011598.l, 1),
+ gsSPLight(&mips_seg6_lights_06011598.a, 2),
gsSPVertex(mips_seg6_vertex_06011610, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 2, 3, 0, 0x0, 3, 2, 5, 0x0),
@@ -668,24 +612,16 @@ const Gfx mips_seg6_dl_06011780[] = {
};
// 0x060117E0
-static const Ambient mips_seg6_light_060117E0 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x060117E8
-static const Light mips_seg6_light_060117E8 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_060117E0 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x060117F8
-static const Ambient mips_seg6_light_060117F8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06011800
-static const Light mips_seg6_light_06011800 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_060117F8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06011810
static const Vtx mips_seg6_vertex_06011810[] = {
@@ -713,13 +649,13 @@ const Gfx mips_seg6_dl_060118E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_060117E8, 1),
- gsSPLight(&mips_seg6_light_060117E0, 2),
+ gsSPLight(&mips_seg6_lights_060117E0.l, 1),
+ gsSPLight(&mips_seg6_lights_060117E0.a, 2),
gsSPVertex(mips_seg6_vertex_06011810, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSP1Triangle( 1, 4, 3, 0x0),
- gsSPLight(&mips_seg6_light_06011800, 1),
- gsSPLight(&mips_seg6_light_060117F8, 2),
+ gsSPLight(&mips_seg6_lights_060117F8.l, 1),
+ gsSPLight(&mips_seg6_lights_060117F8.a, 2),
gsSPVertex(mips_seg6_vertex_06011860, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 6, 7, 3, 0x0),
@@ -746,24 +682,16 @@ const Gfx mips_seg6_dl_06011990[] = {
};
// 0x060119F0
-static const Ambient mips_seg6_light_060119F0 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x060119F8
-static const Light mips_seg6_light_060119F8 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_060119F0 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06011A08
-static const Ambient mips_seg6_light_06011A08 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06011A10
-static const Light mips_seg6_light_06011A10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011A08 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06011A20
static const Vtx mips_seg6_vertex_06011A20[] = {
@@ -792,13 +720,13 @@ const Gfx mips_seg6_dl_06011B00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_060119F8, 1),
- gsSPLight(&mips_seg6_light_060119F0, 2),
+ gsSPLight(&mips_seg6_lights_060119F0.l, 1),
+ gsSPLight(&mips_seg6_lights_060119F0.a, 2),
gsSPVertex(mips_seg6_vertex_06011A20, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 5, 2, 4, 0x0),
- gsSPLight(&mips_seg6_light_06011A10, 1),
- gsSPLight(&mips_seg6_light_06011A08, 2),
+ gsSPLight(&mips_seg6_lights_06011A08.l, 1),
+ gsSPLight(&mips_seg6_lights_06011A08.a, 2),
gsSPVertex(mips_seg6_vertex_06011A80, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 1, 0x0, 1, 3, 6, 0x0),
@@ -824,24 +752,16 @@ const Gfx mips_seg6_dl_06011BB0[] = {
};
// 0x06011C10
-static const Ambient mips_seg6_light_06011C10 = {
- {{0x3c, 0x3c, 0x00}, 0, {0x3c, 0x3c, 0x00}, 0}
-};
-
-// 0x06011C18
-static const Light mips_seg6_light_06011C18 = {
- {{0x96, 0x96, 0x00}, 0, {0x96, 0x96, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011C10 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x00,
+ 0x96, 0x96, 0x00, 0x28, 0x28, 0x28
+);
// 0x06011C28
-static const Ambient mips_seg6_light_06011C28 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06011C30
-static const Light mips_seg6_light_06011C30 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011C28 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06011C40
static const Vtx mips_seg6_vertex_06011C40[] = {
@@ -869,13 +789,13 @@ const Gfx mips_seg6_dl_06011D10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mips_seg6_texture_0600FB80),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&mips_seg6_light_06011C18, 1),
- gsSPLight(&mips_seg6_light_06011C10, 2),
+ gsSPLight(&mips_seg6_lights_06011C10.l, 1),
+ gsSPLight(&mips_seg6_lights_06011C10.a, 2),
gsSPVertex(mips_seg6_vertex_06011C40, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&mips_seg6_light_06011C30, 1),
- gsSPLight(&mips_seg6_light_06011C28, 2),
+ gsSPLight(&mips_seg6_lights_06011C28.l, 1),
+ gsSPLight(&mips_seg6_lights_06011C28.a, 2),
gsSPVertex(mips_seg6_vertex_06011CA0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 1, 3, 5, 0x0),
@@ -900,14 +820,10 @@ const Gfx mips_seg6_dl_06011DB0[] = {
};
// 0x06011E10
-static const Ambient mips_seg6_light_06011E10 = {
- {{0x34, 0x2c, 0x0f}, 0, {0x34, 0x2c, 0x0f}, 0}
-};
-
-// 0x06011E18
-static const Light mips_seg6_light_06011E18 = {
- {{0x82, 0x6e, 0x26}, 0, {0x82, 0x6e, 0x26}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011E10 = gdSPDefLights1(
+ 0x34, 0x2c, 0x0f,
+ 0x82, 0x6e, 0x26, 0x28, 0x28, 0x28
+);
// 0x06011E28
static const Vtx mips_seg6_vertex_06011E28[] = {
@@ -921,8 +837,8 @@ static const Vtx mips_seg6_vertex_06011E28[] = {
// 0x06011E88 - 0x06011ED8
const Gfx mips_seg6_dl_06011E88[] = {
- gsSPLight(&mips_seg6_light_06011E18, 1),
- gsSPLight(&mips_seg6_light_06011E10, 2),
+ gsSPLight(&mips_seg6_lights_06011E10.l, 1),
+ gsSPLight(&mips_seg6_lights_06011E10.a, 2),
gsSPVertex(mips_seg6_vertex_06011E28, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 2, 5, 4, 0x0),
@@ -939,14 +855,10 @@ const Gfx mips_seg6_dl_06011ED8[] = {
};
// 0x06011EF8
-static const Ambient mips_seg6_light_06011EF8 = {
- {{0x34, 0x2c, 0x0f}, 0, {0x34, 0x2c, 0x0f}, 0}
-};
-
-// 0x06011F00
-static const Light mips_seg6_light_06011F00 = {
- {{0x82, 0x6e, 0x26}, 0, {0x82, 0x6e, 0x26}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 mips_seg6_lights_06011EF8 = gdSPDefLights1(
+ 0x34, 0x2c, 0x0f,
+ 0x82, 0x6e, 0x26, 0x28, 0x28, 0x28
+);
// 0x06011F10
static const Vtx mips_seg6_vertex_06011F10[] = {
@@ -960,8 +872,8 @@ static const Vtx mips_seg6_vertex_06011F10[] = {
// 0x06011F70 - 0x06011FC0
const Gfx mips_seg6_dl_06011F70[] = {
- gsSPLight(&mips_seg6_light_06011F00, 1),
- gsSPLight(&mips_seg6_light_06011EF8, 2),
+ gsSPLight(&mips_seg6_lights_06011EF8.l, 1),
+ gsSPLight(&mips_seg6_lights_06011EF8.a, 2),
gsSPVertex(mips_seg6_vertex_06011F10, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 2, 0x0, 2, 1, 4, 0x0),
diff --git a/actors/mist/model.inc.c b/actors/mist/model.inc.c
@@ -25,7 +25,7 @@ ALIGNED8 static const u8 mist_seg3_texture_03000080[] = {
const Gfx mist_seg3_dl_03000880[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_LIGHTING),
- gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),
+ gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),
gsDPLoadTextureBlock(mist_seg3_texture_03000080, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(mist_seg3_vertex_03000000, 4, 0),
@@ -42,7 +42,7 @@ const Gfx mist_seg3_dl_03000880[] = {
const Gfx mist_seg3_dl_03000920[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_LIGHTING),
- gsDPSetCombineMode(G_CC_MODULATERGBFADEA, G_CC_MODULATERGBFADEA),
+ gsDPSetCombineMode(G_CC_MODULATEIFADEA, G_CC_MODULATEIFADEA),
gsDPLoadTextureBlock(mist_seg3_texture_03000080, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_CLAMP, G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(mist_seg3_vertex_03000040, 4, 0),
diff --git a/actors/moneybag/model.inc.c b/actors/moneybag/model.inc.c
@@ -11,24 +11,16 @@ ALIGNED8 static const u8 moneybag_seg6_texture_060049B0[] = {
};
// 0x060051B0
-static const Ambient moneybag_seg6_light_060051B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x060051B8
-static const Light moneybag_seg6_light_060051B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 moneybag_seg6_lights_060051B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060051C8
-static const Ambient moneybag_seg6_light_060051C8 = {
- {{0x00, 0x3f, 0x23}, 0, {0x00, 0x3f, 0x23}, 0}
-};
-
-// 0x060051D0
-static const Light moneybag_seg6_light_060051D0 = {
- {{0x00, 0x7f, 0x47}, 0, {0x00, 0x7f, 0x47}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 moneybag_seg6_lights_060051C8 = gdSPDefLights1(
+ 0x00, 0x3f, 0x23,
+ 0x00, 0x7f, 0x47, 0x28, 0x28, 0x28
+);
// 0x060051E0
static const Vtx moneybag_seg6_vertex_060051E0[] = {
@@ -61,8 +53,8 @@ const Gfx moneybag_seg6_dl_06005300[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, moneybag_seg6_texture_060039B0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&moneybag_seg6_light_060051B8, 1),
- gsSPLight(&moneybag_seg6_light_060051B0, 2),
+ gsSPLight(&moneybag_seg6_lights_060051B0.l, 1),
+ gsSPLight(&moneybag_seg6_lights_060051B0.a, 2),
gsSPVertex(moneybag_seg6_vertex_060051E0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 0, 0x0, 8, 4, 9, 0x0),
@@ -71,8 +63,8 @@ const Gfx moneybag_seg6_dl_06005300[] = {
// 0x06005358 - 0x060053B8
const Gfx moneybag_seg6_dl_06005358[] = {
- gsSPLight(&moneybag_seg6_light_060051D0, 1),
- gsSPLight(&moneybag_seg6_light_060051C8, 2),
+ gsSPLight(&moneybag_seg6_lights_060051C8.l, 1),
+ gsSPLight(&moneybag_seg6_lights_060051C8.a, 2),
gsSPVertex(moneybag_seg6_vertex_06005280, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 3, 0, 4, 0x0, 3, 5, 1, 0x0),
@@ -100,14 +92,10 @@ const Gfx moneybag_seg6_dl_060053B8[] = {
};
// 0x06005428
-static const Ambient moneybag_seg6_light_06005428 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06005430
-static const Light moneybag_seg6_light_06005430 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 moneybag_seg6_lights_06005428 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06005440
static const Vtx moneybag_seg6_vertex_06005440[] = {
@@ -143,8 +131,8 @@ const Gfx moneybag_seg6_dl_06005590[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, moneybag_seg6_texture_060039B0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&moneybag_seg6_light_06005430, 1),
- gsSPLight(&moneybag_seg6_light_06005428, 2),
+ gsSPLight(&moneybag_seg6_lights_06005428.l, 1),
+ gsSPLight(&moneybag_seg6_lights_06005428.a, 2),
gsSPVertex(moneybag_seg6_vertex_06005440, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 7, 0x0),
@@ -220,45 +208,29 @@ const Gfx moneybag_seg6_dl_06005750[] = {
gsSPEndDisplayList(),
};
-// Unreferenced light
-UNUSED static const Ambient moneybag_light_1 = {
- {{0x0c, 0x20, 0x06}, 0, {0x0c, 0x20, 0x06}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 moneybag_lights_unused1 = gdSPDefLights1(
+ 0x0c, 0x20, 0x06,
+ 0x30, 0x83, 0x1a, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Light moneybag_light_2 = {
- {{0x30, 0x83, 0x1a}, 0, {0x30, 0x83, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient moneybag_light_3 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light moneybag_light_4 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 moneybag_lights_unused2 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x060057F0
-static const Ambient moneybag_seg6_light_060057F0 = {
- {{0x3f, 0x3f, 0x00}, 0, {0x3f, 0x3f, 0x00}, 0}
-};
+static const Lights1 moneybag_seg6_lights_060057F0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x00,
+ 0xff, 0xff, 0x00, 0x28, 0x28, 0x28
+);
-// 0x060057F8
-static const Light moneybag_seg6_light_060057F8 = {
- {{0xff, 0xff, 0x00}, 0, {0xff, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient moneybag_light_5 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light moneybag_light_6 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 moneybag_lights_unused3 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x06005820
static const Vtx moneybag_seg6_vertex_06005820[] = {
@@ -293,8 +265,8 @@ static const Vtx moneybag_seg6_vertex_060058D0[] = {
// 0x06005980 - 0x060059F0
const Gfx moneybag_seg6_dl_06005980[] = {
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&moneybag_seg6_light_060057F8, 1),
- gsSPLight(&moneybag_seg6_light_060057F0, 2),
+ gsSPLight(&moneybag_seg6_lights_060057F0.l, 1),
+ gsSPLight(&moneybag_seg6_lights_060057F0.a, 2),
gsSPVertex(moneybag_seg6_vertex_06005820, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 8, 0x0),
@@ -307,8 +279,8 @@ const Gfx moneybag_seg6_dl_06005980[] = {
// 0x060059F0 - 0x06005A60
const Gfx moneybag_seg6_dl_060059F0[] = {
gsDPSetCombineMode(G_CC_SHADEFADEA, G_CC_SHADEFADEA),
- gsSPLight(&moneybag_seg6_light_060057F8, 1),
- gsSPLight(&moneybag_seg6_light_060057F0, 2),
+ gsSPLight(&moneybag_seg6_lights_060057F0.l, 1),
+ gsSPLight(&moneybag_seg6_lights_060057F0.a, 2),
gsSPVertex(moneybag_seg6_vertex_060058D0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 8, 5, 7, 0x0),
diff --git a/actors/monty_mole/model.inc.c b/actors/monty_mole/model.inc.c
@@ -1,64 +1,40 @@
// Monty Mole
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_3 = {
- {{0x30, 0x1f, 0x00}, 0, {0x30, 0x1f, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_4 = {
- {{0xc3, 0x7e, 0x00}, 0, {0xc3, 0x7e, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_5 = {
- {{0x05, 0x04, 0x05}, 0, {0x05, 0x04, 0x05}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_6 = {
- {{0x16, 0x13, 0x14}, 0, {0x16, 0x13, 0x14}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_7 = {
- {{0x07, 0x08, 0x07}, 0, {0x07, 0x08, 0x07}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_8 = {
- {{0x1f, 0x20, 0x1f}, 0, {0x1f, 0x20, 0x1f}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_9 = {
- {{0x14, 0x0b, 0x0a}, 0, {0x14, 0x0b, 0x0a}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_10 = {
- {{0x53, 0x2e, 0x28}, 0, {0x53, 0x2e, 0x28}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient monty_mole_light_11 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light monty_mole_light_12 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused2 = gdSPDefLights1(
+ 0x30, 0x1f, 0x00,
+ 0xc3, 0x7e, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused3 = gdSPDefLights1(
+ 0x05, 0x04, 0x05,
+ 0x16, 0x13, 0x14, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused4 = gdSPDefLights1(
+ 0x07, 0x08, 0x07,
+ 0x1f, 0x20, 0x1f, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused5 = gdSPDefLights1(
+ 0x14, 0x0b, 0x0a,
+ 0x53, 0x2e, 0x28, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 monty_mole_lights_unused6 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05000970
ALIGNED8 static const u8 monty_mole_seg5_texture_05000970[] = {
@@ -86,14 +62,10 @@ ALIGNED8 static const u8 monty_mole_seg5_texture_05002970[] = {
};
// 0x05003170
-static const Ambient monty_mole_seg5_light_05003170 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05003178
-static const Light monty_mole_seg5_light_05003178 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003170 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003188
static const Vtx monty_mole_seg5_vertex_05003188[] = {
@@ -112,8 +84,8 @@ const Gfx monty_mole_seg5_dl_05003208[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05003178, 1),
- gsSPLight(&monty_mole_seg5_light_05003170, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003170.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003170.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05003188, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 5, 2, 4, 0x0),
@@ -141,14 +113,10 @@ const Gfx monty_mole_seg5_dl_050032A0[] = {
};
// 0x05003300
-static const Ambient monty_mole_seg5_light_05003300 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05003308
-static const Light monty_mole_seg5_light_05003308 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003300 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003318
static const Vtx monty_mole_seg5_vertex_05003318[] = {
@@ -181,8 +149,8 @@ const Gfx monty_mole_seg5_dl_05003438[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05003308, 1),
- gsSPLight(&monty_mole_seg5_light_05003300, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003300.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003300.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05003318, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
@@ -225,14 +193,10 @@ const Gfx monty_mole_seg5_dl_05003518[] = {
};
// 0x05003598
-static const Ambient monty_mole_seg5_light_05003598 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050035A0
-static const Light monty_mole_seg5_light_050035A0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003598 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050035B0
static const Vtx monty_mole_seg5_vertex_050035B0[] = {
@@ -271,8 +235,8 @@ const Gfx monty_mole_seg5_dl_05003730[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_050035A0, 1),
- gsSPLight(&monty_mole_seg5_light_05003598, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003598.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003598.a, 2),
gsSPVertex(monty_mole_seg5_vertex_050035B0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 1, 4, 5, 0x0),
@@ -316,14 +280,10 @@ const Gfx monty_mole_seg5_dl_05003820[] = {
};
// 0x050038A0
-static const Ambient monty_mole_seg5_light_050038A0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050038A8
-static const Light monty_mole_seg5_light_050038A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_050038A0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050038B8
static const Vtx monty_mole_seg5_vertex_050038B8[] = {
@@ -342,8 +302,8 @@ const Gfx monty_mole_seg5_dl_05003938[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001170),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_050038A8, 1),
- gsSPLight(&monty_mole_seg5_light_050038A0, 2),
+ gsSPLight(&monty_mole_seg5_lights_050038A0.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_050038A0.a, 2),
gsSPVertex(monty_mole_seg5_vertex_050038B8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 0, 3, 0x0, 1, 5, 2, 0x0),
@@ -371,14 +331,10 @@ const Gfx monty_mole_seg5_dl_050039D0[] = {
};
// 0x05003A30
-static const Ambient monty_mole_seg5_light_05003A30 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05003A38
-static const Light monty_mole_seg5_light_05003A38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003A30 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003A48
static const Vtx monty_mole_seg5_vertex_05003A48[] = {
@@ -411,8 +367,8 @@ const Gfx monty_mole_seg5_dl_05003B68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05003A38, 1),
- gsSPLight(&monty_mole_seg5_light_05003A30, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003A30.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003A30.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05003A48, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
@@ -455,14 +411,10 @@ const Gfx monty_mole_seg5_dl_05003C48[] = {
};
// 0x05003CC8
-static const Ambient monty_mole_seg5_light_05003CC8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05003CD0
-static const Light monty_mole_seg5_light_05003CD0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003CC8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003CE0
static const Vtx monty_mole_seg5_vertex_05003CE0[] = {
@@ -501,8 +453,8 @@ const Gfx monty_mole_seg5_dl_05003E60[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05003CD0, 1),
- gsSPLight(&monty_mole_seg5_light_05003CC8, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003CC8.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003CC8.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05003CE0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 2, 5, 0x0, 2, 3, 5, 0x0),
@@ -546,14 +498,10 @@ const Gfx monty_mole_seg5_dl_05003F50[] = {
};
// 0x05003FD0
-static const Ambient monty_mole_seg5_light_05003FD0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05003FD8
-static const Light monty_mole_seg5_light_05003FD8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05003FD0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05003FE8
static const Vtx monty_mole_seg5_vertex_05003FE8[] = {
@@ -617,8 +565,8 @@ const Gfx monty_mole_seg5_dl_050042B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05000970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05003FD8, 1),
- gsSPLight(&monty_mole_seg5_light_05003FD0, 2),
+ gsSPLight(&monty_mole_seg5_lights_05003FD0.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05003FD0.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05003FE8, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 7, 5, 4, 0x0),
@@ -677,14 +625,10 @@ const Gfx monty_mole_seg5_dl_050044B0[] = {
};
// 0x05004518
-static const Ambient monty_mole_seg5_light_05004518 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05004520
-static const Light monty_mole_seg5_light_05004520 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05004518 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004530
static const Vtx monty_mole_seg5_vertex_05004530[] = {
@@ -791,8 +735,8 @@ const Gfx monty_mole_seg5_dl_050049B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05001970),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05004520, 1),
- gsSPLight(&monty_mole_seg5_light_05004518, 2),
+ gsSPLight(&monty_mole_seg5_lights_05004518.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05004518.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05004530, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 3, 5, 0x0, 5, 1, 0, 0x0),
@@ -874,14 +818,10 @@ const Gfx monty_mole_seg5_dl_05004C00[] = {
};
// 0x05004C90
-static const Ambient monty_mole_seg5_light_05004C90 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05004C98
-static const Light monty_mole_seg5_light_05004C98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 monty_mole_seg5_lights_05004C90 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05004CA8
static const Vtx monty_mole_seg5_vertex_05004CA8[] = {
@@ -896,8 +836,8 @@ const Gfx monty_mole_seg5_dl_05004CE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, monty_mole_seg5_texture_05002170),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&monty_mole_seg5_light_05004C98, 1),
- gsSPLight(&monty_mole_seg5_light_05004C90, 2),
+ gsSPLight(&monty_mole_seg5_lights_05004C90.l, 1),
+ gsSPLight(&monty_mole_seg5_lights_05004C90.a, 2),
gsSPVertex(monty_mole_seg5_vertex_05004CA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/peach/model.inc.c b/actors/peach/model.inc.c
@@ -1,24 +1,16 @@
// Peach
// 0x050009F8
-static const Ambient peach_seg5_light_050009F8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05000A00
-static const Light peach_seg5_light_05000A00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_050009F8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05000A10
-static const Ambient peach_seg5_light_05000A10 = {
- {{0x7f, 0x5f, 0x0c}, 0, {0x7f, 0x5f, 0x0c}, 0}
-};
-
-// 0x05000A18
-static const Light peach_seg5_light_05000A18 = {
- {{0xff, 0xbf, 0x18}, 0, {0xff, 0xbf, 0x18}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05000A10 = gdSPDefLights1(
+ 0x7f, 0x5f, 0x0c,
+ 0xff, 0xbf, 0x18, 0x28, 0x28, 0x28
+);
// 0x05000A28
ALIGNED8 static const u8 peach_seg5_texture_05000A28[] = {
@@ -369,8 +361,8 @@ const Gfx peach_seg5_dl_05005648[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002A28),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05000A00, 1),
- gsSPLight(&peach_seg5_light_050009F8, 2),
+ gsSPLight(&peach_seg5_lights_050009F8.l, 1),
+ gsSPLight(&peach_seg5_lights_050009F8.a, 2),
gsSPVertex(peach_seg5_vertex_05004828, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 1, 5, 0x0, 5, 1, 6, 0x0),
@@ -437,8 +429,8 @@ const Gfx peach_seg5_dl_050058B8[] = {
// 0x050058E0 - 0x05005C48
const Gfx peach_seg5_dl_050058E0[] = {
- gsSPLight(&peach_seg5_light_05000A18, 1),
- gsSPLight(&peach_seg5_light_05000A10, 2),
+ gsSPLight(&peach_seg5_lights_05000A10.l, 1),
+ gsSPLight(&peach_seg5_lights_05000A10.a, 2),
gsSPVertex(peach_seg5_vertex_05004E88, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 3, 5, 0, 0x0, 6, 4, 0, 0x0),
@@ -649,14 +641,10 @@ const Gfx peach_seg5_dl_05005F48[] = {
};
// 0x05005FA0
-static const Ambient peach_seg5_light_05005FA0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05005FA8
-static const Light peach_seg5_light_05005FA8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05005FA0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05005FB8
static const Vtx peach_seg5_vertex_05005FB8[] = {
@@ -677,8 +665,8 @@ const Gfx peach_seg5_dl_05006058[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05005FA8, 1),
- gsSPLight(&peach_seg5_light_05005FA0, 2),
+ gsSPLight(&peach_seg5_lights_05005FA0.l, 1),
+ gsSPLight(&peach_seg5_lights_05005FA0.a, 2),
gsSPVertex(peach_seg5_vertex_05005FB8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 4, 5, 3, 0x0),
@@ -704,24 +692,16 @@ const Gfx peach_seg5_dl_050060E0[] = {
};
// 0x05006138
-static const Ambient peach_seg5_light_05006138 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05006140
-static const Light peach_seg5_light_05006140 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05006138 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05006150
-static const Ambient peach_seg5_light_05006150 = {
- {{0x6c, 0x54, 0x5f}, 0, {0x6c, 0x54, 0x5f}, 0}
-};
-
-// 0x05006158
-static const Light peach_seg5_light_05006158 = {
- {{0xd9, 0xa9, 0xbe}, 0, {0xd9, 0xa9, 0xbe}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05006150 = gdSPDefLights1(
+ 0x6c, 0x54, 0x5f,
+ 0xd9, 0xa9, 0xbe, 0x28, 0x28, 0x28
+);
// 0x05006168
static const Vtx peach_seg5_vertex_05006168[] = {
@@ -852,8 +832,8 @@ const Gfx peach_seg5_dl_05006728[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05002C28),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05006140, 1),
- gsSPLight(&peach_seg5_light_05006138, 2),
+ gsSPLight(&peach_seg5_lights_05006138.l, 1),
+ gsSPLight(&peach_seg5_lights_05006138.a, 2),
gsSPVertex(peach_seg5_vertex_05006168, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 4, 1, 5, 0x0, 6, 1, 3, 0x0),
@@ -867,13 +847,13 @@ const Gfx peach_seg5_dl_05006798[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05006158, 1),
- gsSPLight(&peach_seg5_light_05006150, 2),
+ gsSPLight(&peach_seg5_lights_05006150.l, 1),
+ gsSPLight(&peach_seg5_lights_05006150.a, 2),
gsSPVertex(peach_seg5_vertex_050061E8, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP1Triangle( 3, 0, 2, 0x0),
- gsSPLight(&peach_seg5_light_05006140, 1),
- gsSPLight(&peach_seg5_light_05006138, 2),
+ gsSPLight(&peach_seg5_lights_05006138.l, 1),
+ gsSPLight(&peach_seg5_lights_05006138.a, 2),
gsSPVertex(peach_seg5_vertex_05006238, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 6, 7, 0x0),
@@ -936,14 +916,10 @@ const Gfx peach_seg5_dl_05006A18[] = {
};
// 0x05006A90
-static const Ambient peach_seg5_light_05006A90 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05006A98
-static const Light peach_seg5_light_05006A98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05006A90 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05006AA8
static const Vtx peach_seg5_vertex_05006AA8[] = {
@@ -1050,8 +1026,8 @@ const Gfx peach_seg5_dl_05006FA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05006A98, 1),
- gsSPLight(&peach_seg5_light_05006A90, 2),
+ gsSPLight(&peach_seg5_lights_05006A90.l, 1),
+ gsSPLight(&peach_seg5_lights_05006A90.a, 2),
gsSPVertex(peach_seg5_vertex_05006AA8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 7, 0x0, 3, 8, 9, 0x0),
@@ -1130,14 +1106,10 @@ const Gfx peach_seg5_us_dl_05007288[] = {
#endif
// 0x05007288
-static const Ambient peach_seg5_light_05007288 = {
- {{0x7f, 0x5f, 0x0c}, 0, {0x7f, 0x5f, 0x0c}, 0}
-};
-
-// 0x05007290
-static const Light peach_seg5_light_05007290 = {
- {{0xff, 0xbf, 0x18}, 0, {0xff, 0xbf, 0x18}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05007288 = gdSPDefLights1(
+ 0x7f, 0x5f, 0x0c,
+ 0xff, 0xbf, 0x18, 0x28, 0x28, 0x28
+);
// 0x050072A0
static const Vtx peach_seg5_vertex_050072A0[] = {
@@ -1252,8 +1224,8 @@ static const Vtx peach_seg5_vertex_05007780[] = {
// 0x05007810 - 0x05007AB8
const Gfx peach_seg5_dl_05007810[] = {
- gsSPLight(&peach_seg5_light_05007290, 1),
- gsSPLight(&peach_seg5_light_05007288, 2),
+ gsSPLight(&peach_seg5_lights_05007288.l, 1),
+ gsSPLight(&peach_seg5_lights_05007288.a, 2),
gsSPVertex(peach_seg5_vertex_050072A0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 3, 0, 0x0),
@@ -1312,14 +1284,10 @@ const Gfx peach_seg5_dl_05007AB8[] = {
};
// 0x05007AE0
-static const Ambient peach_seg5_light_05007AE0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05007AE8
-static const Light peach_seg5_light_05007AE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05007AE0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05007AF8
static const Vtx peach_seg5_vertex_05007AF8[] = {
@@ -1365,8 +1333,8 @@ const Gfx peach_seg5_dl_05007CE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05007AE8, 1),
- gsSPLight(&peach_seg5_light_05007AE0, 2),
+ gsSPLight(&peach_seg5_lights_05007AE0.l, 1),
+ gsSPLight(&peach_seg5_lights_05007AE0.a, 2),
gsSPVertex(peach_seg5_vertex_05007AF8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 5, 3, 0, 0x0, 4, 6, 0, 0x0),
@@ -1407,14 +1375,10 @@ const Gfx peach_seg5_dl_05007E58[] = {
};
// 0x05007EB0
-static const Ambient peach_seg5_light_05007EB0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05007EB8
-static const Light peach_seg5_light_05007EB8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05007EB0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05007EC8
static const Vtx peach_seg5_vertex_05007EC8[] = {
@@ -1460,8 +1424,8 @@ const Gfx peach_seg5_dl_050080B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05007EB8, 1),
- gsSPLight(&peach_seg5_light_05007EB0, 2),
+ gsSPLight(&peach_seg5_lights_05007EB0.l, 1),
+ gsSPLight(&peach_seg5_lights_05007EB0.a, 2),
gsSPVertex(peach_seg5_vertex_05007EC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 4, 3, 2, 0x0),
@@ -1503,14 +1467,10 @@ const Gfx peach_seg5_dl_05008228[] = {
};
// 0x05008280
-static const Ambient peach_seg5_light_05008280 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05008288
-static const Light peach_seg5_light_05008288 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05008280 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05008298
static const Vtx peach_seg5_vertex_05008298[] = {
@@ -1550,8 +1510,8 @@ const Gfx peach_seg5_dl_05008428[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05008288, 1),
- gsSPLight(&peach_seg5_light_05008280, 2),
+ gsSPLight(&peach_seg5_lights_05008280.l, 1),
+ gsSPLight(&peach_seg5_lights_05008280.a, 2),
gsSPVertex(peach_seg5_vertex_05008298, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 1, 5, 6, 0x0),
@@ -1596,14 +1556,10 @@ const Gfx peach_seg5_dl_05008560[] = {
};
// 0x050085D0
-static const Ambient peach_seg5_light_050085D0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050085D8
-static const Light peach_seg5_light_050085D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_050085D0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050085E8
static const Vtx peach_seg5_vertex_050085E8[] = {
@@ -1625,8 +1581,8 @@ static const Vtx peach_seg5_vertex_050085E8[] = {
// 0x050086C8 - 0x050087A8
const Gfx peach_seg5_dl_050086C8[] = {
- gsSPLight(&peach_seg5_light_050085D8, 1),
- gsSPLight(&peach_seg5_light_050085D0, 2),
+ gsSPLight(&peach_seg5_lights_050085D0.l, 1),
+ gsSPLight(&peach_seg5_lights_050085D0.a, 2),
gsSPVertex(peach_seg5_vertex_050085E8, 14, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSP2Triangles( 3, 4, 2, 0x0, 2, 5, 3, 0x0),
@@ -1654,14 +1610,10 @@ const Gfx peach_seg5_dl_050087A8[] = {
};
// 0x050087D0
-static const Ambient peach_seg5_light_050087D0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x050087D8
-static const Light peach_seg5_light_050087D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_050087D0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x050087E8
static const Vtx peach_seg5_vertex_050087E8[] = {
@@ -1701,8 +1653,8 @@ const Gfx peach_seg5_dl_05008978[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05000A28),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_050087D8, 1),
- gsSPLight(&peach_seg5_light_050087D0, 2),
+ gsSPLight(&peach_seg5_lights_050087D0.l, 1),
+ gsSPLight(&peach_seg5_lights_050087D0.a, 2),
gsSPVertex(peach_seg5_vertex_050087E8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 2, 4, 0, 0x0, 0, 5, 3, 0x0),
@@ -1747,14 +1699,10 @@ const Gfx peach_seg5_dl_05008AB0[] = {
};
// 0x05008B20
-static const Ambient peach_seg5_light_05008B20 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05008B28
-static const Light peach_seg5_light_05008B28 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05008B20 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05008B38
static const Vtx peach_seg5_vertex_05008B38[] = {
@@ -1776,8 +1724,8 @@ static const Vtx peach_seg5_vertex_05008B38[] = {
// 0x05008C18 - 0x05008CF8
const Gfx peach_seg5_dl_05008C18[] = {
- gsSPLight(&peach_seg5_light_05008B28, 1),
- gsSPLight(&peach_seg5_light_05008B20, 2),
+ gsSPLight(&peach_seg5_lights_05008B20.l, 1),
+ gsSPLight(&peach_seg5_lights_05008B20.a, 2),
gsSPVertex(peach_seg5_vertex_05008B38, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 5, 0, 0x0, 5, 2, 6, 0x0),
@@ -1804,14 +1752,10 @@ const Gfx peach_seg5_dl_05008CF8[] = {
};
// 0x05008D20
-static const Ambient peach_seg5_light_05008D20 = {
- {{0x0b, 0x1a, 0x67}, 0, {0x0b, 0x1a, 0x67}, 0}
-};
-
-// 0x05008D28
-static const Light peach_seg5_light_05008D28 = {
- {{0x16, 0x35, 0xce}, 0, {0x16, 0x35, 0xce}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05008D20 = gdSPDefLights1(
+ 0x0b, 0x1a, 0x67,
+ 0x16, 0x35, 0xce, 0x28, 0x28, 0x28
+);
// 0x05008D38
static const Vtx peach_seg5_vertex_05008D38[] = {
@@ -1835,8 +1779,8 @@ static const Vtx peach_seg5_vertex_05008D38[] = {
// 0x05008E38 - 0x05008F20
const Gfx peach_seg5_dl_05008E38[] = {
- gsSPLight(&peach_seg5_light_05008D28, 1),
- gsSPLight(&peach_seg5_light_05008D20, 2),
+ gsSPLight(&peach_seg5_lights_05008D20.l, 1),
+ gsSPLight(&peach_seg5_lights_05008D20.a, 2),
gsSPVertex(peach_seg5_vertex_05008D38, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 0, 4, 0x0),
@@ -1864,14 +1808,10 @@ const Gfx peach_seg5_dl_05008F20[] = {
};
// 0x05008F48
-static const Ambient peach_seg5_light_05008F48 = {
- {{0x0b, 0x1a, 0x67}, 0, {0x0b, 0x1a, 0x67}, 0}
-};
-
-// 0x05008F50
-static const Light peach_seg5_light_05008F50 = {
- {{0x16, 0x35, 0xce}, 0, {0x16, 0x35, 0xce}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05008F48 = gdSPDefLights1(
+ 0x0b, 0x1a, 0x67,
+ 0x16, 0x35, 0xce, 0x28, 0x28, 0x28
+);
// 0x05008F60
static const Vtx peach_seg5_vertex_05008F60[] = {
@@ -1895,8 +1835,8 @@ static const Vtx peach_seg5_vertex_05008F60[] = {
// 0x05009060 - 0x05009148
const Gfx peach_seg5_dl_05009060[] = {
- gsSPLight(&peach_seg5_light_05008F50, 1),
- gsSPLight(&peach_seg5_light_05008F48, 2),
+ gsSPLight(&peach_seg5_lights_05008F48.l, 1),
+ gsSPLight(&peach_seg5_lights_05008F48.a, 2),
gsSPVertex(peach_seg5_vertex_05008F60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 3, 5, 0x0),
@@ -1924,14 +1864,10 @@ const Gfx peach_seg5_dl_05009148[] = {
};
// 0x05009170
-static const Ambient peach_seg5_light_05009170 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05009178
-static const Light peach_seg5_light_05009178 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05009170 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05009188
static const Vtx peach_seg5_vertex_05009188[] = {
@@ -1975,8 +1911,8 @@ static const Vtx peach_seg5_vertex_05009288[] = {
// 0x05009388 - 0x05009500
const Gfx peach_seg5_dl_05009388[] = {
- gsSPLight(&peach_seg5_light_05009178, 1),
- gsSPLight(&peach_seg5_light_05009170, 2),
+ gsSPLight(&peach_seg5_lights_05009170.l, 1),
+ gsSPLight(&peach_seg5_lights_05009170.a, 2),
gsSPVertex(peach_seg5_vertex_05009188, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 5, 6, 0x0),
@@ -2014,14 +1950,10 @@ const Gfx peach_seg5_dl_05009500[] = {
};
// 0x05009528
-static const Ambient peach_seg5_light_05009528 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05009530
-static const Light peach_seg5_light_05009530 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05009528 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05009540
static const Vtx peach_seg5_vertex_05009540[] = {
@@ -2077,8 +2009,8 @@ static const Vtx peach_seg5_vertex_05009740[] = {
// 0x050097C0 - 0x05009940
const Gfx peach_seg5_dl_050097C0[] = {
- gsSPLight(&peach_seg5_light_05009530, 1),
- gsSPLight(&peach_seg5_light_05009528, 2),
+ gsSPLight(&peach_seg5_lights_05009528.l, 1),
+ gsSPLight(&peach_seg5_lights_05009528.a, 2),
gsSPVertex(peach_seg5_vertex_05009540, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 5, 0, 2, 0x0, 2, 3, 5, 0x0),
@@ -2117,14 +2049,10 @@ const Gfx peach_seg5_dl_05009940[] = {
};
// 0x05009968
-static const Ambient peach_seg5_light_05009968 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05009970
-static const Light peach_seg5_light_05009970 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 peach_seg5_lights_05009968 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05009980
static const Vtx peach_seg5_vertex_05009980[] = {
@@ -2225,8 +2153,8 @@ const Gfx peach_seg5_dl_05009E20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, peach_seg5_texture_05004028),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&peach_seg5_light_05009970, 1),
- gsSPLight(&peach_seg5_light_05009968, 2),
+ gsSPLight(&peach_seg5_lights_05009968.l, 1),
+ gsSPLight(&peach_seg5_lights_05009968.a, 2),
gsSPVertex(peach_seg5_vertex_05009980, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 5, 2, 4, 0x0),
diff --git a/actors/penguin/model.inc.c b/actors/penguin/model.inc.c
@@ -1,44 +1,28 @@
// Penguin
// 0x05002D80
-static const Ambient penguin_seg5_light_05002D80 = {
- {{0x06, 0x06, 0x39}, 0, {0x06, 0x06, 0x39}, 0}
-};
-
-// 0x05002D88
-static const Light penguin_seg5_light_05002D88 = {
- {{0x0f, 0x0f, 0x90}, 0, {0x0f, 0x0f, 0x90}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05002D80 = gdSPDefLights1(
+ 0x06, 0x06, 0x39,
+ 0x0f, 0x0f, 0x90, 0x28, 0x28, 0x28
+);
// 0x05002D98
-static const Ambient penguin_seg5_light_05002D98 = {
- {{0x52, 0x34, 0x0a}, 0, {0x52, 0x34, 0x0a}, 0}
-};
-
-// 0x05002DA0
-static const Light penguin_seg5_light_05002DA0 = {
- {{0xce, 0x84, 0x1a}, 0, {0xce, 0x84, 0x1a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05002D98 = gdSPDefLights1(
+ 0x52, 0x34, 0x0a,
+ 0xce, 0x84, 0x1a, 0x28, 0x28, 0x28
+);
// 0x05002DB0
-static const Ambient penguin_seg5_light_05002DB0 = {
- {{0x59, 0x42, 0x14}, 0, {0x59, 0x42, 0x14}, 0}
-};
-
-// 0x05002DB8
-static const Light penguin_seg5_light_05002DB8 = {
- {{0xdf, 0xa7, 0x34}, 0, {0xdf, 0xa7, 0x34}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05002DB0 = gdSPDefLights1(
+ 0x59, 0x42, 0x14,
+ 0xdf, 0xa7, 0x34, 0x28, 0x28, 0x28
+);
// 0x05002DC8
-static const Ambient penguin_seg5_light_05002DC8 = {
- {{0x66, 0x66, 0x65}, 0, {0x66, 0x66, 0x65}, 0}
-};
-
-// 0x05002DD0
-static const Light penguin_seg5_light_05002DD0 = {
- {{0xff, 0xff, 0xfd}, 0, {0xff, 0xff, 0xfd}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05002DC8 = gdSPDefLights1(
+ 0x66, 0x66, 0x65,
+ 0xff, 0xff, 0xfd, 0x28, 0x28, 0x28
+);
// 0x05002DE0
ALIGNED8 static const u8 penguin_seg5_texture_05002DE0[] = {
@@ -71,34 +55,22 @@ ALIGNED8 static const u8 penguin_seg5_texture_050055E0[] = {
};
// 0x05005DE0
-static const Ambient penguin_seg5_light_05005DE0 = {
- {{0x04, 0x0f, 0x41}, 0, {0x04, 0x0f, 0x41}, 0}
-};
-
-// 0x05005DE8
-static const Light penguin_seg5_light_05005DE8 = {
- {{0x0b, 0x26, 0xa4}, 0, {0x0b, 0x26, 0xa4}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05005DE0 = gdSPDefLights1(
+ 0x04, 0x0f, 0x41,
+ 0x0b, 0x26, 0xa4, 0x28, 0x28, 0x28
+);
// 0x05005DF8
-static const Ambient penguin_seg5_light_05005DF8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x05005E00
-static const Light penguin_seg5_light_05005E00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05005DF8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05005E10
-static const Ambient penguin_seg5_light_05005E10 = {
- {{0x60, 0x55, 0x0b}, 0, {0x60, 0x55, 0x0b}, 0}
-};
-
-// 0x05005E18
-static const Light penguin_seg5_light_05005E18 = {
- {{0xf2, 0xd5, 0x1c}, 0, {0xf2, 0xd5, 0x1c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 penguin_seg5_lights_05005E10 = gdSPDefLights1(
+ 0x60, 0x55, 0x0b,
+ 0xf2, 0xd5, 0x1c, 0x28, 0x28, 0x28
+);
// 0x05005E28
static const Vtx penguin_seg5_vertex_05005E28[] = {
@@ -180,8 +152,8 @@ static const Vtx penguin_seg5_vertex_05006158[] = {
// 0x05006188 - 0x050061C8
const Gfx penguin_seg5_dl_05006188[] = {
- gsSPLight(&penguin_seg5_light_05005DE8, 1),
- gsSPLight(&penguin_seg5_light_05005DE0, 2),
+ gsSPLight(&penguin_seg5_lights_05005DE0.l, 1),
+ gsSPLight(&penguin_seg5_lights_05005DE0.a, 2),
gsSPVertex(penguin_seg5_vertex_05005E28, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 6, 5, 0x0),
@@ -190,8 +162,8 @@ const Gfx penguin_seg5_dl_05006188[] = {
// 0x050061C8 - 0x050061F8
const Gfx penguin_seg5_dl_050061C8[] = {
- gsSPLight(&penguin_seg5_light_05005E00, 1),
- gsSPLight(&penguin_seg5_light_05005DF8, 2),
+ gsSPLight(&penguin_seg5_lights_05005DF8.l, 1),
+ gsSPLight(&penguin_seg5_lights_05005DF8.a, 2),
gsSPVertex(penguin_seg5_vertex_05005EA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
@@ -199,8 +171,8 @@ const Gfx penguin_seg5_dl_050061C8[] = {
// 0x050061F8 - 0x05006380
const Gfx penguin_seg5_dl_050061F8[] = {
- gsSPLight(&penguin_seg5_light_05005DE8, 1),
- gsSPLight(&penguin_seg5_light_05005DE0, 2),
+ gsSPLight(&penguin_seg5_lights_05005DE0.l, 1),
+ gsSPLight(&penguin_seg5_lights_05005DE0.a, 2),
gsSPVertex(penguin_seg5_vertex_05005EE8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 1, 5, 0x0, 1, 4, 6, 0x0),
@@ -224,8 +196,8 @@ const Gfx penguin_seg5_dl_050061F8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 5, 2, 3, 0x0),
gsSP2Triangles( 2, 5, 4, 0x0, 4, 5, 6, 0x0),
- gsSPLight(&penguin_seg5_light_05005E18, 1),
- gsSPLight(&penguin_seg5_light_05005E10, 2),
+ gsSPLight(&penguin_seg5_lights_05005E10.l, 1),
+ gsSPLight(&penguin_seg5_lights_05005E10.a, 2),
gsSPVertex(penguin_seg5_vertex_05006158, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
@@ -576,8 +548,8 @@ static const Vtx penguin_seg5_vertex_050070A8[] = {
// 0x05007198 - 0x050071E8
const Gfx penguin_seg5_dl_05007198[] = {
- gsSPLight(&penguin_seg5_light_05002D88, 1),
- gsSPLight(&penguin_seg5_light_05002D80, 2),
+ gsSPLight(&penguin_seg5_lights_05002D80.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D80.a, 2),
gsSPVertex(penguin_seg5_vertex_05006518, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 3, 6, 7, 0x0),
@@ -587,8 +559,8 @@ const Gfx penguin_seg5_dl_05007198[] = {
// 0x050071E8 - 0x05007238
const Gfx penguin_seg5_dl_050071E8[] = {
- gsSPLight(&penguin_seg5_light_05002D88, 1),
- gsSPLight(&penguin_seg5_light_05002D80, 2),
+ gsSPLight(&penguin_seg5_lights_05002D80.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D80.a, 2),
gsSPVertex(penguin_seg5_vertex_050065B8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 7, 6, 8, 0x0),
@@ -598,8 +570,8 @@ const Gfx penguin_seg5_dl_050071E8[] = {
// 0x05007238 - 0x050072C8
const Gfx penguin_seg5_dl_05007238[] = {
- gsSPLight(&penguin_seg5_light_05002DA0, 1),
- gsSPLight(&penguin_seg5_light_05002D98, 2),
+ gsSPLight(&penguin_seg5_lights_05002D98.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D98.a, 2),
gsSPVertex(penguin_seg5_vertex_05006658, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 7, 2, 0x0),
@@ -613,8 +585,8 @@ const Gfx penguin_seg5_dl_05007238[] = {
// 0x050072C8 - 0x05007358
const Gfx penguin_seg5_dl_050072C8[] = {
- gsSPLight(&penguin_seg5_light_05002DA0, 1),
- gsSPLight(&penguin_seg5_light_05002D98, 2),
+ gsSPLight(&penguin_seg5_lights_05002D98.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D98.a, 2),
gsSPVertex(penguin_seg5_vertex_05006748, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
@@ -628,13 +600,13 @@ const Gfx penguin_seg5_dl_050072C8[] = {
// 0x05007358 - 0x05007540
const Gfx penguin_seg5_dl_05007358[] = {
- gsSPLight(&penguin_seg5_light_05002DB8, 1),
- gsSPLight(&penguin_seg5_light_05002DB0, 2),
+ gsSPLight(&penguin_seg5_lights_05002DB0.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002DB0.a, 2),
gsSPVertex(penguin_seg5_vertex_05006838, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP1Triangle( 1, 4, 3, 0x0),
- gsSPLight(&penguin_seg5_light_05002D88, 1),
- gsSPLight(&penguin_seg5_light_05002D80, 2),
+ gsSPLight(&penguin_seg5_lights_05002D80.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D80.a, 2),
gsSPVertex(penguin_seg5_vertex_05006888, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 0, 0x0),
@@ -662,8 +634,8 @@ const Gfx penguin_seg5_dl_05007358[] = {
gsSPVertex(penguin_seg5_vertex_05006D68, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 7, 4, 0x0),
- gsSPLight(&penguin_seg5_light_05002D88, 1),
- gsSPLight(&penguin_seg5_light_05002D80, 2),
+ gsSPLight(&penguin_seg5_lights_05002D80.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D80.a, 2),
gsSPVertex(penguin_seg5_vertex_05006DE8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
@@ -671,8 +643,8 @@ const Gfx penguin_seg5_dl_05007358[] = {
// 0x05007540 - 0x05007708
const Gfx penguin_seg5_dl_05007540[] = {
- gsSPLight(&penguin_seg5_light_05002D88, 1),
- gsSPLight(&penguin_seg5_light_05002D80, 2),
+ gsSPLight(&penguin_seg5_lights_05002D80.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002D80.a, 2),
gsSPVertex(penguin_seg5_vertex_05006E28, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 2, 9, 6, 0x0),
@@ -691,8 +663,8 @@ const Gfx penguin_seg5_dl_05007540[] = {
gsSPVertex(penguin_seg5_vertex_05007018, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 2, 8, 0x0),
- gsSPLight(&penguin_seg5_light_05002DD0, 1),
- gsSPLight(&penguin_seg5_light_05002DC8, 2),
+ gsSPLight(&penguin_seg5_lights_05002DC8.l, 1),
+ gsSPLight(&penguin_seg5_lights_05002DC8.a, 2),
gsSPVertex(penguin_seg5_vertex_050070A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 5, 2, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/piranha_plant/model.inc.c b/actors/piranha_plant/model.inc.c
@@ -1,35 +1,22 @@
// Piranha Plant
-
// 0x060113B0
-static const Ambient piranha_plant_seg6_light_060113B0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x060113B8
-static const Light piranha_plant_seg6_light_060113B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 piranha_plant_seg6_lights_060113B0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060113C8
-static const Ambient piranha_plant_seg6_light_060113C8 = {
- {{0x0a, 0x2b, 0x02}, 0, {0x0a, 0x2b, 0x02}, 0}
-};
-
-// 0x060113D0
-static const Light piranha_plant_seg6_light_060113D0 = {
- {{0x2b, 0xae, 0x0a}, 0, {0x2b, 0xae, 0x0a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 piranha_plant_seg6_lights_060113C8 = gdSPDefLights1(
+ 0x0a, 0x2b, 0x02,
+ 0x2b, 0xae, 0x0a, 0x28, 0x28, 0x28
+);
// 0x060113E0
-static const Ambient piranha_plant_seg6_light_060113E0 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x060113E8
-static const Light piranha_plant_seg6_light_060113E8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 piranha_plant_seg6_lights_060113E0 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x060113F8
ALIGNED8 static const u8 piranha_plant_seg6_texture_060113F8[] = {
@@ -74,8 +61,8 @@ const Gfx piranha_plant_seg6_dl_06015438[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060143F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_060153F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -112,8 +99,8 @@ const Gfx piranha_plant_seg6_dl_06015530[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060143F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_060154F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -177,8 +164,8 @@ const Gfx piranha_plant_seg6_dl_06015798[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_060155E8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 3, 4, 1, 0x0, 5, 6, 7, 0x0),
@@ -330,8 +317,8 @@ const Gfx piranha_plant_seg6_dl_06015E40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06013BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_060158B0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
@@ -344,8 +331,8 @@ const Gfx piranha_plant_seg6_dl_06015EA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060133F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113D0, 1),
- gsSPLight(&piranha_plant_seg6_light_060113C8, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06015990, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 3, 5, 8, 0x0),
@@ -365,8 +352,8 @@ const Gfx piranha_plant_seg6_dl_06015F68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060123F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06015B40, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 7, 0x0, 3, 7, 8, 0x0),
@@ -386,8 +373,8 @@ const Gfx piranha_plant_seg6_dl_06015F68[] = {
// 0x06016060 - 0x060160B0
const Gfx piranha_plant_seg6_dl_06016060[] = {
- gsSPLight(&piranha_plant_seg6_light_060113E8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113E0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113E0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113E0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06015DC0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 4, 1, 0x0),
@@ -560,8 +547,8 @@ const Gfx piranha_plant_seg6_dl_06016750[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06013BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016190, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
@@ -574,8 +561,8 @@ const Gfx piranha_plant_seg6_dl_060167B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060133F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113D0, 1),
- gsSPLight(&piranha_plant_seg6_light_060113C8, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016270, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 7, 6, 5, 0x0),
@@ -597,8 +584,8 @@ const Gfx piranha_plant_seg6_dl_06016890[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_060123F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016490, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 5, 0x0, 0, 3, 4, 0x0),
@@ -626,8 +613,8 @@ const Gfx piranha_plant_seg6_dl_06016960[] = {
// 0x060169A8 - 0x060169E8
const Gfx piranha_plant_seg6_dl_060169A8[] = {
- gsSPLight(&piranha_plant_seg6_light_060113D0, 1),
- gsSPLight(&piranha_plant_seg6_light_060113C8, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113C8.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_060166E0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 5, 4, 6, 0x0),
@@ -695,8 +682,8 @@ const Gfx piranha_plant_seg6_dl_06016BA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016AE8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -741,8 +728,8 @@ const Gfx piranha_plant_seg6_dl_06016D30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016C70, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -787,8 +774,8 @@ const Gfx piranha_plant_seg6_dl_06016EB8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, piranha_plant_seg6_texture_06012BF8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&piranha_plant_seg6_light_060113B8, 1),
- gsSPLight(&piranha_plant_seg6_light_060113B0, 2),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.l, 1),
+ gsSPLight(&piranha_plant_seg6_lights_060113B0.a, 2),
gsSPVertex(piranha_plant_seg6_vertex_06016DF8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/poundable_pole/model.inc.c b/actors/poundable_pole/model.inc.c
@@ -1,14 +1,10 @@
// Poundable Pole
// 0x06001038
-static const Ambient poundable_pole_seg6_light_06001038 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06001040
-static const Light poundable_pole_seg6_light_06001040 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 poundable_pole_seg6_lights_06001038 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06001050
ALIGNED8 static const u8 poundable_pole_seg6_texture_06001050[] = {
@@ -83,8 +79,8 @@ const Gfx poundable_pole_seg6_dl_060022F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, poundable_pole_seg6_texture_06001050),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(£able_pole_seg6_light_06001040, 1),
- gsSPLight(£able_pole_seg6_light_06001038, 2),
+ gsSPLight(£able_pole_seg6_lights_06001038.l, 1),
+ gsSPLight(£able_pole_seg6_lights_06001038.a, 2),
gsSPVertex(poundable_pole_seg6_vertex_06002050, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 2, 1, 5, 0x0),
diff --git a/actors/purple_switch/model.inc.c b/actors/purple_switch/model.inc.c
@@ -1,14 +1,10 @@
// Purple Switch
// 0x0800C090
-static const Ambient purple_switch_seg8_light_0800C090 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0800C098
-static const Light purple_switch_seg8_light_0800C098 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 purple_switch_seg8_lights_0800C090 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0800C0A8
ALIGNED8 static const u8 purple_switch_seg8_texture_0800C0A8[] = {
@@ -53,8 +49,8 @@ const Gfx purple_switch_seg8_dl_0800C668[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, purple_switch_seg8_texture_0800C0A8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 4 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&purple_switch_seg8_light_0800C098, 1),
- gsSPLight(&purple_switch_seg8_light_0800C090, 2),
+ gsSPLight(&purple_switch_seg8_lights_0800C090.l, 1),
+ gsSPLight(&purple_switch_seg8_lights_0800C090.a, 2),
gsSPVertex(purple_switch_seg8_vertex_0800C528, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/scuttlebug/model.inc.c b/actors/scuttlebug/model.inc.c
@@ -1,24 +1,16 @@
// Scuttlebug
-// Unreferenced light
-UNUSED static const Ambient scuttlebug_light_1 = {
- {{0x2c, 0x00, 0x00}, 0, {0x2c, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light scuttlebug_light_2 = {
- {{0xb2, 0x00, 0x00}, 0, {0xb2, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient scuttlebug_light_3 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light scuttlebug_light_4 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 scuttlebug_lights_unused1 = gdSPDefLights1(
+ 0x2c, 0x00, 0x00,
+ 0xb2, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 scuttlebug_lights_unused2 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x06010108
ALIGNED8 static const u8 scuttlebug_seg6_texture_06010108[] = {
@@ -245,14 +237,10 @@ const Gfx scuttlebug_seg6_dl_06013DA0[] = {
};
// 0x06013E10
-static const Ambient scuttlebug_seg6_light_06013E10 = {
- {{0x33, 0x22, 0x01}, 0, {0x33, 0x22, 0x01}, 0}
-};
-
-// 0x06013E18
-static const Light scuttlebug_seg6_light_06013E18 = {
- {{0xcf, 0x89, 0x06}, 0, {0xcf, 0x89, 0x06}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 scuttlebug_seg6_lights_06013E10 = gdSPDefLights1(
+ 0x33, 0x22, 0x01,
+ 0xcf, 0x89, 0x06, 0x28, 0x28, 0x28
+);
// 0x06013E28
static const Vtx scuttlebug_seg6_vertex_06013E28[] = {
@@ -290,8 +278,8 @@ static const Vtx scuttlebug_seg6_vertex_06013F28[] = {
// 0x06013FC8 - 0x060140F0
const Gfx scuttlebug_seg6_dl_06013FC8[] = {
- gsSPLight(&scuttlebug_seg6_light_06013E18, 1),
- gsSPLight(&scuttlebug_seg6_light_06013E10, 2),
+ gsSPLight(&scuttlebug_seg6_lights_06013E10.l, 1),
+ gsSPLight(&scuttlebug_seg6_lights_06013E10.a, 2),
gsSPVertex(scuttlebug_seg6_vertex_06013E28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 4, 6, 0x0),
@@ -394,14 +382,10 @@ const Gfx scuttlebug_seg6_dl_06014270[] = {
};
// 0x060142E0
-static const Ambient scuttlebug_seg6_light_060142E0 = {
- {{0x26, 0x05, 0x05}, 0, {0x26, 0x05, 0x05}, 0}
-};
-
-// 0x060142E8
-static const Light scuttlebug_seg6_light_060142E8 = {
- {{0x99, 0x16, 0x16}, 0, {0x99, 0x16, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 scuttlebug_seg6_lights_060142E0 = gdSPDefLights1(
+ 0x26, 0x05, 0x05,
+ 0x99, 0x16, 0x16, 0x28, 0x28, 0x28
+);
// 0x060142F8
static const Vtx scuttlebug_seg6_vertex_060142F8[] = {
@@ -413,8 +397,8 @@ static const Vtx scuttlebug_seg6_vertex_060142F8[] = {
// 0x06014338 - 0x06014378
const Gfx scuttlebug_seg6_dl_06014338[] = {
- gsSPLight(&scuttlebug_seg6_light_060142E8, 1),
- gsSPLight(&scuttlebug_seg6_light_060142E0, 2),
+ gsSPLight(&scuttlebug_seg6_lights_060142E0.l, 1),
+ gsSPLight(&scuttlebug_seg6_lights_060142E0.a, 2),
gsSPVertex(scuttlebug_seg6_vertex_060142F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSP2Triangles( 2, 3, 0, 0x0, 1, 0, 3, 0x0),
diff --git a/actors/seaweed/model.inc.c b/actors/seaweed/model.inc.c
@@ -1,14 +1,10 @@
// Seaweed
// 0x06007DF8
-static const Ambient seaweed_seg6_light_06007DF8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06007E00
-static const Light seaweed_seg6_light_06007E00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 seaweed_seg6_lights_06007DF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06007E10
ALIGNED8 static const u8 seaweed_seg6_texture_06007E10[] = {
@@ -43,8 +39,8 @@ const Gfx seaweed_seg6_dl_06009E50[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06007E10),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&seaweed_seg6_light_06007E00, 1),
- gsSPLight(&seaweed_seg6_light_06007DF8, 2),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),
gsSPVertex(seaweed_seg6_vertex_06009E10, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -81,8 +77,8 @@ const Gfx seaweed_seg6_dl_06009F48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06008610),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&seaweed_seg6_light_06007E00, 1),
- gsSPLight(&seaweed_seg6_light_06007DF8, 2),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),
gsSPVertex(seaweed_seg6_vertex_06009F08, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -119,8 +115,8 @@ const Gfx seaweed_seg6_dl_0600A040[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06008E10),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&seaweed_seg6_light_06007E00, 1),
- gsSPLight(&seaweed_seg6_light_06007DF8, 2),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),
gsSPVertex(seaweed_seg6_vertex_0600A000, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -157,8 +153,8 @@ const Gfx seaweed_seg6_dl_0600A138[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, seaweed_seg6_texture_06009610),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&seaweed_seg6_light_06007E00, 1),
- gsSPLight(&seaweed_seg6_light_06007DF8, 2),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.l, 1),
+ gsSPLight(&seaweed_seg6_lights_06007DF8.a, 2),
gsSPVertex(seaweed_seg6_vertex_0600A0F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/skeeter/model.inc.c b/actors/skeeter/model.inc.c
@@ -1,64 +1,40 @@
// Skeeter
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_1 = {
- {{0x3f, 0x20, 0x02}, 0, {0x3f, 0x20, 0x02}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_2 = {
- {{0xfc, 0x80, 0x08}, 0, {0xfc, 0x80, 0x08}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_3 = {
- {{0x05, 0x05, 0x02}, 0, {0x05, 0x05, 0x02}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_4 = {
- {{0x15, 0x15, 0x08}, 0, {0x15, 0x15, 0x08}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_5 = {
- {{0x03, 0x10, 0x29}, 0, {0x03, 0x10, 0x29}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_6 = {
- {{0x0e, 0x40, 0xa4}, 0, {0x0e, 0x40, 0xa4}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_7 = {
- {{0x3b, 0x3a, 0x36}, 0, {0x3b, 0x3a, 0x36}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_8 = {
- {{0xef, 0xea, 0xd9}, 0, {0xef, 0xea, 0xd9}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_9 = {
- {{0x33, 0x0c, 0x00}, 0, {0x33, 0x0c, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_10 = {
- {{0xcf, 0x32, 0x00}, 0, {0xcf, 0x32, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient skeeter_light_11 = {
- {{0x10, 0x29, 0x20}, 0, {0x10, 0x29, 0x20}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light skeeter_light_12 = {
- {{0x42, 0xa5, 0x81}, 0, {0x42, 0xa5, 0x81}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x20, 0x02,
+ 0xfc, 0x80, 0x08, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused2 = gdSPDefLights1(
+ 0x05, 0x05, 0x02,
+ 0x15, 0x15, 0x08, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused3 = gdSPDefLights1(
+ 0x03, 0x10, 0x29,
+ 0x0e, 0x40, 0xa4, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused4 = gdSPDefLights1(
+ 0x3b, 0x3a, 0x36,
+ 0xef, 0xea, 0xd9, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused5 = gdSPDefLights1(
+ 0x33, 0x0c, 0x00,
+ 0xcf, 0x32, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 skeeter_lights_unused6 = gdSPDefLights1(
+ 0x10, 0x29, 0x20,
+ 0x42, 0xa5, 0x81, 0x28, 0x28, 0x28
+);
// 0x06000090
ALIGNED8 static const u8 skeeter_seg6_texture_06000090[] = {
@@ -249,14 +225,10 @@ const Gfx skeeter_seg6_dl_06000D78[] = {
};
// 0x06000DE8
-static const Ambient skeeter_seg6_light_06000DE8 = {
- {{0x7f, 0x55, 0x00}, 0, {0x7f, 0x55, 0x00}, 0}
-};
-
-// 0x06000DF0
-static const Light skeeter_seg6_light_06000DF0 = {
- {{0xff, 0xaa, 0x00}, 0, {0xff, 0xaa, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 skeeter_seg6_lights_06000DE8 = gdSPDefLights1(
+ 0x7f, 0x55, 0x00,
+ 0xff, 0xaa, 0x00, 0x28, 0x28, 0x28
+);
// 0x06000E00
static const Vtx skeeter_seg6_vertex_06000E00[] = {
@@ -270,8 +242,8 @@ static const Vtx skeeter_seg6_vertex_06000E00[] = {
// 0x06000E60 - 0x06000EC0
const Gfx skeeter_seg6_dl_06000E60[] = {
- gsSPLight(&skeeter_seg6_light_06000DF0, 1),
- gsSPLight(&skeeter_seg6_light_06000DE8, 2),
+ gsSPLight(&skeeter_seg6_lights_06000DE8.l, 1),
+ gsSPLight(&skeeter_seg6_lights_06000DE8.a, 2),
gsSPVertex(skeeter_seg6_vertex_06000E00, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 3, 4, 0x0),
diff --git a/actors/small_key/model.inc.c b/actors/small_key/model.inc.c
@@ -4,44 +4,28 @@
UNUSED static const u64 small_key_unused_1 = 0;
// 0x05005798
-static const Ambient small_key_seg5_light_05005798 = {
- {{0x3f, 0x19, 0x0c}, 0, {0x3f, 0x19, 0x0c}, 0}
-};
-
-// 0x050057A0
-static const Light small_key_seg5_light_050057A0 = {
- {{0xff, 0x64, 0x32}, 0, {0xff, 0x64, 0x32}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 small_key_seg5_lights_05005798 = gdSPDefLights1(
+ 0x3f, 0x19, 0x0c,
+ 0xff, 0x64, 0x32, 0x28, 0x28, 0x28
+);
// 0x050057B0
-static const Ambient small_key_seg5_light_050057B0 = {
- {{0x0c, 0x3f, 0x19}, 0, {0x0c, 0x3f, 0x19}, 0}
-};
-
-// 0x050057B8
-static const Light small_key_seg5_light_050057B8 = {
- {{0x32, 0xff, 0x64}, 0, {0x32, 0xff, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 small_key_seg5_lights_050057B0 = gdSPDefLights1(
+ 0x0c, 0x3f, 0x19,
+ 0x32, 0xff, 0x64, 0x28, 0x28, 0x28
+);
// 0x050057C8
-static const Ambient small_key_seg5_light_050057C8 = {
- {{0x0c, 0x19, 0x3f}, 0, {0x0c, 0x19, 0x3f}, 0}
-};
-
-// 0x050057D0
-static const Light small_key_seg5_light_050057D0 = {
- {{0x32, 0x64, 0xff}, 0, {0x32, 0x64, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 small_key_seg5_lights_050057C8 = gdSPDefLights1(
+ 0x0c, 0x19, 0x3f,
+ 0x32, 0x64, 0xff, 0x28, 0x28, 0x28
+);
// 0x050057E0
-static const Ambient small_key_seg5_light_050057E0 = {
- {{0x33, 0x3f, 0x00}, 0, {0x33, 0x3f, 0x00}, 0}
-};
-
-// 0x050057E8
-static const Light small_key_seg5_light_050057E8 = {
- {{0xcc, 0xff, 0x00}, 0, {0xcc, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 small_key_seg5_lights_050057E0 = gdSPDefLights1(
+ 0x33, 0x3f, 0x00,
+ 0xcc, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// align
UNUSED static const u64 small_key_unused_2 = 0;
@@ -420,32 +404,24 @@ const Gfx small_key_seg5_dl_05006700[] = {
// 0x05006A08 - 0x05006A28
const Gfx small_key_seg5_dl_05006A08[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&small_key_seg5_light_050057D0, 1),
- gsSPLight(&small_key_seg5_light_050057C8, 2),
+ gsSPSetLights1(small_key_seg5_lights_050057C8),
gsSPBranchList(small_key_seg5_dl_05006700),
};
// 0x05006A28 - 0x05006A48
const Gfx small_key_seg5_dl_05006A28[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&small_key_seg5_light_050057B8, 1),
- gsSPLight(&small_key_seg5_light_050057B0, 2),
+ gsSPSetLights1(small_key_seg5_lights_050057B0),
gsSPBranchList(small_key_seg5_dl_05006700),
};
// 0x05006A48 - 0x05006A68
const Gfx small_key_seg5_dl_05006A48[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&small_key_seg5_light_050057A0, 1),
- gsSPLight(&small_key_seg5_light_05005798, 2),
+ gsSPSetLights1(small_key_seg5_lights_05005798),
gsSPBranchList(small_key_seg5_dl_05006700),
};
// 0x05006A68 - 0x05006A88
const Gfx small_key_seg5_dl_05006A68[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&small_key_seg5_light_050057E8, 1),
- gsSPLight(&small_key_seg5_light_050057E0, 2),
+ gsSPSetLights1(small_key_seg5_lights_050057E0),
gsSPBranchList(small_key_seg5_dl_05006700),
};
diff --git a/actors/snowman/model.inc.c b/actors/snowman/model.inc.c
@@ -3,45 +3,29 @@
// ???
UNUSED static const u64 snowman_unused_1 = 1;
-// Unreferenced light
-UNUSED static const Ambient snowman_light_1 = {
- {{0x0d, 0x0c, 0x28}, 0, {0x0d, 0x0c, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light snowman_light_2 = {
- {{0x35, 0x32, 0xa2}, 0, {0x35, 0x32, 0xa2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient snowman_light_3 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light snowman_light_4 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient snowman_light_5 = {
- {{0x08, 0x07, 0x04}, 0, {0x08, 0x07, 0x04}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light snowman_light_6 = {
- {{0x23, 0x1c, 0x12}, 0, {0x23, 0x1c, 0x12}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient snowman_light_7 = {
- {{0x03, 0x03, 0x02}, 0, {0x03, 0x03, 0x02}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light snowman_light_8 = {
- {{0x0e, 0x0d, 0x0b}, 0, {0x0e, 0x0d, 0x0b}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 snowman_lights_unused1 = gdSPDefLights1(
+ 0x0d, 0x0c, 0x28,
+ 0x35, 0x32, 0xa2, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 snowman_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 snowman_lights_unused3 = gdSPDefLights1(
+ 0x08, 0x07, 0x04,
+ 0x23, 0x1c, 0x12, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 snowman_lights_unused4 = gdSPDefLights1(
+ 0x03, 0x03, 0x02,
+ 0x0e, 0x0d, 0x0b, 0x28, 0x28, 0x28
+);
// 0x05008C70
ALIGNED8 static const u8 snowman_seg5_texture_05008C70[] = {
@@ -69,14 +53,10 @@ ALIGNED8 static const u8 snowman_seg5_texture_0500BC70[] = {
};
// 0x0500C470
-static const Ambient snowman_seg5_light_0500C470 = {
- {{0x1c, 0x0f, 0x07}, 0, {0x1c, 0x0f, 0x07}, 0}
-};
-
-// 0x0500C478
-static const Light snowman_seg5_light_0500C478 = {
- {{0x38, 0x1e, 0x0e}, 0, {0x38, 0x1e, 0x0e}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snowman_seg5_lights_0500C470 = gdSPDefLights1(
+ 0x1c, 0x0f, 0x07,
+ 0x38, 0x1e, 0x0e, 0x28, 0x28, 0x28
+);
// 0x0500C488
static const Vtx snowman_seg5_vertex_0500C488[] = {
@@ -88,8 +68,8 @@ static const Vtx snowman_seg5_vertex_0500C488[] = {
// 0x0500C4C8 - 0x0500C500
const Gfx snowman_seg5_dl_0500C4C8[] = {
- gsSPLight(&snowman_seg5_light_0500C478, 1),
- gsSPLight(&snowman_seg5_light_0500C470, 2),
+ gsSPLight(&snowman_seg5_lights_0500C470.l, 1),
+ gsSPLight(&snowman_seg5_lights_0500C470.a, 2),
gsSPVertex(snowman_seg5_vertex_0500C488, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP1Triangle( 0, 3, 1, 0x0),
@@ -203,14 +183,10 @@ const Gfx snowman_seg5_dl_0500C760[] = {
};
// 0x0500C7D0
-static const Ambient snowman_seg5_light_0500C7D0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C7D8
-static const Light snowman_seg5_light_0500C7D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snowman_seg5_lights_0500C7D0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C7E8
static const Vtx snowman_seg5_vertex_0500C7E8[] = {
@@ -250,8 +226,8 @@ const Gfx snowman_seg5_dl_0500C978[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snowman_seg5_texture_05008C70),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&snowman_seg5_light_0500C7D8, 1),
- gsSPLight(&snowman_seg5_light_0500C7D0, 2),
+ gsSPLight(&snowman_seg5_lights_0500C7D0.l, 1),
+ gsSPLight(&snowman_seg5_lights_0500C7D0.a, 2),
gsSPVertex(snowman_seg5_vertex_0500C7E8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 4, 1, 0, 0x0, 5, 4, 3, 0x0),
diff --git a/actors/snufit/model.inc.c b/actors/snufit/model.inc.c
@@ -21,24 +21,16 @@ ALIGNED8 static const u8 snufit_seg6_texture_060084E0[] = {
};
// 0x06008CE0
-static const Ambient snufit_seg6_light_06008CE0 = {
- {{0x47, 0x47, 0x47}, 0, {0x47, 0x47, 0x47}, 0}
-};
-
-// 0x06008CE8
-static const Light snufit_seg6_light_06008CE8 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snufit_seg6_lights_06008CE0 = gdSPDefLights1(
+ 0x47, 0x47, 0x47,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x06008CF8
-static const Ambient snufit_seg6_light_06008CF8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06008D00
-static const Light snufit_seg6_light_06008D00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snufit_seg6_lights_06008CF8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06008D10
static const Vtx snufit_seg6_vertex_06008D10[] = {
@@ -146,8 +138,8 @@ const Gfx snufit_seg6_dl_060091E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&snufit_seg6_light_06008CE8, 1),
- gsSPLight(&snufit_seg6_light_06008CE0, 2),
+ gsSPLight(&snufit_seg6_lights_06008CE0.l, 1),
+ gsSPLight(&snufit_seg6_lights_06008CE0.a, 2),
gsSPVertex(snufit_seg6_vertex_06008D10, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 3, 5, 1, 0x0),
@@ -163,8 +155,8 @@ const Gfx snufit_seg6_dl_06009278[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060078E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&snufit_seg6_light_06008D00, 1),
- gsSPLight(&snufit_seg6_light_06008CF8, 2),
+ gsSPLight(&snufit_seg6_lights_06008CF8.l, 1),
+ gsSPLight(&snufit_seg6_lights_06008CF8.a, 2),
gsSPVertex(snufit_seg6_vertex_06008DF0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 4, 3, 5, 0x0),
@@ -231,14 +223,10 @@ const Gfx snufit_seg6_dl_06009498[] = {
};
// 0x06009530
-static const Ambient snufit_seg6_light_06009530 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x06009538
-static const Light snufit_seg6_light_06009538 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snufit_seg6_lights_06009530 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06009548
static const Vtx snufit_seg6_vertex_06009548[] = {
@@ -271,8 +259,8 @@ const Gfx snufit_seg6_dl_06009668[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&snufit_seg6_light_06009538, 1),
- gsSPLight(&snufit_seg6_light_06009530, 2),
+ gsSPLight(&snufit_seg6_lights_06009530.l, 1),
+ gsSPLight(&snufit_seg6_lights_06009530.a, 2),
gsSPVertex(snufit_seg6_vertex_06009548, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 1, 5, 2, 0x0),
@@ -315,14 +303,10 @@ const Gfx snufit_seg6_dl_06009748[] = {
};
// 0x060097C8
-static const Ambient snufit_seg6_light_060097C8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x060097D0
-static const Light snufit_seg6_light_060097D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snufit_seg6_lights_060097C8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x060097E0
static const Vtx snufit_seg6_vertex_060097E0[] = {
@@ -345,8 +329,8 @@ const Gfx snufit_seg6_dl_060098A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snufit_seg6_texture_060080E0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 32 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&snufit_seg6_light_060097D0, 1),
- gsSPLight(&snufit_seg6_light_060097C8, 2),
+ gsSPLight(&snufit_seg6_lights_060097C8.l, 1),
+ gsSPLight(&snufit_seg6_lights_060097C8.a, 2),
gsSPVertex(snufit_seg6_vertex_060097E0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 3, 5, 6, 0x0),
@@ -410,14 +394,10 @@ const Gfx snufit_seg6_dl_06009A10[] = {
};
// 0x06009A80
-static const Ambient snufit_seg6_light_06009A80 = {
- {{0x65, 0x08, 0x08}, 0, {0x65, 0x08, 0x08}, 0}
-};
-
-// 0x06009A88
-static const Light snufit_seg6_light_06009A88 = {
- {{0xfe, 0x14, 0x14}, 0, {0xfe, 0x14, 0x14}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 snufit_seg6_lights_06009A80 = gdSPDefLights1(
+ 0x65, 0x08, 0x08,
+ 0xfe, 0x14, 0x14, 0x28, 0x28, 0x28
+);
// 0x06009A98
static const Vtx snufit_seg6_vertex_06009A98[] = {
@@ -433,8 +413,8 @@ static const Vtx snufit_seg6_vertex_06009A98[] = {
// 0x06009B18 - 0x06009B68
const Gfx snufit_seg6_dl_06009B18[] = {
- gsSPLight(&snufit_seg6_light_06009A88, 1),
- gsSPLight(&snufit_seg6_light_06009A80, 2),
+ gsSPLight(&snufit_seg6_lights_06009A80.l, 1),
+ gsSPLight(&snufit_seg6_lights_06009A80.a, 2),
gsSPVertex(snufit_seg6_vertex_06009A98, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 1, 0, 3, 0x0, 4, 5, 6, 0x0),
diff --git a/actors/spindrift/anims/anim_050006AC.inc.c b/actors/spindrift/anims/anim_050006AC.inc.c
@@ -199,14 +199,10 @@ const Gfx spindrift_seg5_dl_05002900[] = {
};
// 0x05002970
-static const Ambient spindrift_seg5_light_05002970 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05002978
-static const Light spindrift_seg5_light_05002978 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05002970 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05002988
static const Vtx spindrift_seg5_vertex_05002988[] = {
@@ -222,8 +218,8 @@ const Gfx spindrift_seg5_dl_050029C8[] = {
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&spindrift_seg5_light_05002978, 1),
- gsSPLight(&spindrift_seg5_light_05002970, 2),
+ gsSPLight(&spindrift_seg5_lights_05002970.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05002970.a, 2),
gsSPVertex(spindrift_seg5_vertex_05002988, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -247,14 +243,10 @@ const Gfx spindrift_seg5_dl_05002A20[] = {
};
// 0x05002A80
-static const Ambient spindrift_seg5_light_05002A80 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05002A88
-static const Light spindrift_seg5_light_05002A88 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05002A80 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05002A98
static const Vtx spindrift_seg5_vertex_05002A98[] = {
@@ -270,8 +262,8 @@ const Gfx spindrift_seg5_dl_05002AD8[] = {
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&spindrift_seg5_light_05002A88, 1),
- gsSPLight(&spindrift_seg5_light_05002A80, 2),
+ gsSPLight(&spindrift_seg5_lights_05002A80.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05002A80.a, 2),
gsSPVertex(spindrift_seg5_vertex_05002A98, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -295,14 +287,10 @@ const Gfx spindrift_seg5_dl_05002B30[] = {
};
// 0x05002B90
-static const Ambient spindrift_seg5_light_05002B90 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x05002B98
-static const Light spindrift_seg5_light_05002B98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05002B90 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05002BA8
static const Vtx spindrift_seg5_vertex_05002BA8[] = {
@@ -329,8 +317,8 @@ const Gfx spindrift_seg5_dl_05002C98[] = {
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&spindrift_seg5_light_05002B98, 1),
- gsSPLight(&spindrift_seg5_light_05002B90, 2),
+ gsSPLight(&spindrift_seg5_lights_05002B90.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05002B90.a, 2),
gsSPVertex(spindrift_seg5_vertex_05002BA8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/spindrift/model.inc.c b/actors/spindrift/model.inc.c
@@ -1,84 +1,52 @@
// Spindrift
-// Unreferenced light
-UNUSED static const Ambient spindrift_light_1 = {
- {{0x3f, 0x08, 0x1b}, 0, {0x3f, 0x08, 0x1b}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light spindrift_light_2 = {
- {{0xff, 0x22, 0x6d}, 0, {0xff, 0x22, 0x6d}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient spindrift_light_3 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light spindrift_light_4 = {
- {{0xfd, 0xff, 0xff}, 0, {0xfd, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 spindrift_lights_unused1 = gdSPDefLights1(
+ 0x3f, 0x08, 0x1b,
+ 0xff, 0x22, 0x6d, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 spindrift_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xfd, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05000030
-static const Ambient spindrift_seg5_light_05000030 = {
- {{0x12, 0x2c, 0x00}, 0, {0x12, 0x2c, 0x00}, 0}
-};
-
-// 0x05000038
-static const Light spindrift_seg5_light_05000038 = {
- {{0x49, 0xb2, 0x00}, 0, {0x49, 0xb2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05000030 = gdSPDefLights1(
+ 0x12, 0x2c, 0x00,
+ 0x49, 0xb2, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000048
-static const Ambient spindrift_seg5_light_05000048 = {
- {{0x37, 0x3f, 0x00}, 0, {0x37, 0x3f, 0x00}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05000048 = gdSPDefLights1(
+ 0x37, 0x3f, 0x00,
+ 0xdd, 0xff, 0x01, 0x28, 0x28, 0x28
+);
-// 0x05000050
-static const Light spindrift_seg5_light_05000050 = {
- {{0xdd, 0xff, 0x01}, 0, {0xdd, 0xff, 0x01}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient spindrift_light_5 = {
- {{0x00, 0x15, 0x00}, 0, {0x00, 0x15, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light spindrift_light_6 = {
- {{0x00, 0x56, 0x00}, 0, {0x00, 0x56, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 spindrift_lights_unused3 = gdSPDefLights1(
+ 0x00, 0x15, 0x00,
+ 0x00, 0x56, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000078
-static const Ambient spindrift_seg5_light_05000078 = {
- {{0x3f, 0x38, 0x00}, 0, {0x3f, 0x38, 0x00}, 0}
-};
-
-// 0x05000080
-static const Light spindrift_seg5_light_05000080 = {
- {{0xff, 0xe2, 0x00}, 0, {0xff, 0xe2, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05000078 = gdSPDefLights1(
+ 0x3f, 0x38, 0x00,
+ 0xff, 0xe2, 0x00, 0x28, 0x28, 0x28
+);
// 0x05000090
-static const Ambient spindrift_seg5_light_05000090 = {
- {{0x00, 0x0f, 0x00}, 0, {0x00, 0x0f, 0x00}, 0}
-};
-
-// 0x05000098
-static const Light spindrift_seg5_light_05000098 = {
- {{0x00, 0x3f, 0x00}, 0, {0x00, 0x3f, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spindrift_seg5_lights_05000090 = gdSPDefLights1(
+ 0x00, 0x0f, 0x00,
+ 0x00, 0x3f, 0x00, 0x28, 0x28, 0x28
+);
-// Unreferenced light
-UNUSED static const Ambient spindrift_light_7 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light spindrift_light_8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 spindrift_lights_unused4 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x050000C0
static const Vtx spindrift_seg5_vertex_050000C0[] = {
@@ -128,14 +96,14 @@ static const Vtx spindrift_seg5_vertex_05000210[] = {
// 0x050002A0 - 0x05000328
const Gfx spindrift_seg5_dl_050002A0[] = {
- gsSPLight(&spindrift_seg5_light_05000050, 1),
- gsSPLight(&spindrift_seg5_light_05000048, 2),
+ gsSPLight(&spindrift_seg5_lights_05000048.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05000048.a, 2),
gsSPVertex(spindrift_seg5_vertex_050000C0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 1, 3, 2, 0x0, 4, 5, 2, 0x0),
gsSP1Triangle( 5, 0, 2, 0x0),
- gsSPLight(&spindrift_seg5_light_05000038, 1),
- gsSPLight(&spindrift_seg5_light_05000030, 2),
+ gsSPLight(&spindrift_seg5_lights_05000030.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05000030.a, 2),
gsSPVertex(spindrift_seg5_vertex_05000120, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 0, 4, 0x0, 4, 0, 5, 0x0),
@@ -146,15 +114,15 @@ const Gfx spindrift_seg5_dl_050002A0[] = {
// 0x05000328 - 0x050003D8
const Gfx spindrift_seg5_dl_05000328[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&spindrift_seg5_light_05000098, 1),
- gsSPLight(&spindrift_seg5_light_05000090, 2),
+ gsSPLight(&spindrift_seg5_lights_05000090.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05000090.a, 2),
gsSPVertex(spindrift_seg5_vertex_05000180, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 1, 5, 6, 0x0),
gsSP2Triangles( 7, 4, 0, 0x0, 5, 4, 8, 0x0),
gsSP2Triangles( 5, 1, 3, 0x0, 4, 5, 3, 0x0),
- gsSPLight(&spindrift_seg5_light_05000080, 1),
- gsSPLight(&spindrift_seg5_light_05000078, 2),
+ gsSPLight(&spindrift_seg5_lights_05000078.l, 1),
+ gsSPLight(&spindrift_seg5_lights_05000078.a, 2),
gsSPVertex(spindrift_seg5_vertex_05000210, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 1, 5, 6, 0x0, 5, 7, 8, 0x0),
diff --git a/actors/spiny/model.inc.c b/actors/spiny/model.inc.c
@@ -1,64 +1,40 @@
// Spiny
// 0x050157F8
-static const Ambient spiny_seg5_light_050157F8 = {
- {{0x32, 0x23, 0x0a}, 0, {0x32, 0x23, 0x0a}, 0}
-};
-
-// 0x05015800
-static const Light spiny_seg5_light_05015800 = {
- {{0xca, 0x8d, 0x29}, 0, {0xca, 0x8d, 0x29}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_050157F8 = gdSPDefLights1(
+ 0x32, 0x23, 0x0a,
+ 0xca, 0x8d, 0x29, 0x28, 0x28, 0x28
+);
// 0x05015810
-static const Ambient spiny_seg5_light_05015810 = {
- {{0x3a, 0x2c, 0x1f}, 0, {0x3a, 0x2c, 0x1f}, 0}
-};
-
-// 0x05015818
-static const Light spiny_seg5_light_05015818 = {
- {{0xeb, 0xb0, 0x7f}, 0, {0xeb, 0xb0, 0x7f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_05015810 = gdSPDefLights1(
+ 0x3a, 0x2c, 0x1f,
+ 0xeb, 0xb0, 0x7f, 0x28, 0x28, 0x28
+);
// 0x05015828
-static const Ambient spiny_seg5_light_05015828 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// 0x05015830
-static const Light spiny_seg5_light_05015830 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_05015828 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
// 0x05015840
-static const Ambient spiny_seg5_light_05015840 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x05015848
-static const Light spiny_seg5_light_05015848 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_05015840 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05015858
-static const Ambient spiny_seg5_light_05015858 = {
- {{0x3d, 0x25, 0x01}, 0, {0x3d, 0x25, 0x01}, 0}
-};
-
-// 0x05015860
-static const Light spiny_seg5_light_05015860 = {
- {{0xf4, 0x96, 0x07}, 0, {0xf4, 0x96, 0x07}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_05015858 = gdSPDefLights1(
+ 0x3d, 0x25, 0x01,
+ 0xf4, 0x96, 0x07, 0x28, 0x28, 0x28
+);
// 0x05015870
-static const Ambient spiny_seg5_light_05015870 = {
- {{0x3c, 0x2c, 0x09}, 0, {0x3c, 0x2c, 0x09}, 0}
-};
-
-// 0x05015878
-static const Light spiny_seg5_light_05015878 = {
- {{0xf1, 0xb2, 0x25}, 0, {0xf1, 0xb2, 0x25}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_seg5_lights_05015870 = gdSPDefLights1(
+ 0x3c, 0x2c, 0x09,
+ 0xf1, 0xb2, 0x25, 0x28, 0x28, 0x28
+);
// 0x05015888
static const Vtx spiny_seg5_vertex_05015888[] = {
@@ -311,8 +287,8 @@ static const Vtx spiny_seg5_vertex_05016328[] = {
// 0x05016418 - 0x050164E0
const Gfx spiny_seg5_dl_05016418[] = {
- gsSPLight(&spiny_seg5_light_05015800, 1),
- gsSPLight(&spiny_seg5_light_050157F8, 2),
+ gsSPLight(&spiny_seg5_lights_050157F8.l, 1),
+ gsSPLight(&spiny_seg5_lights_050157F8.a, 2),
gsSPVertex(spiny_seg5_vertex_05015888, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 7, 0x0, 8, 7, 9, 0x0),
@@ -321,8 +297,8 @@ const Gfx spiny_seg5_dl_05016418[] = {
gsSP2Triangles( 3, 5, 11, 0x0, 11, 5, 0, 0x0),
gsSP2Triangles( 7, 8, 3, 0x0, 9, 12, 8, 0x0),
gsSP2Triangles( 9, 2, 1, 0x0, 2, 10, 0, 0x0),
- gsSPLight(&spiny_seg5_light_05015818, 1),
- gsSPLight(&spiny_seg5_light_05015810, 2),
+ gsSPLight(&spiny_seg5_lights_05015810.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015810.a, 2),
gsSPVertex(spiny_seg5_vertex_05015958, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 3, 4, 0, 0x0, 1, 5, 2, 0x0),
@@ -331,8 +307,8 @@ const Gfx spiny_seg5_dl_05016418[] = {
// 0x050164E0 - 0x050165A8
const Gfx spiny_seg5_dl_050164E0[] = {
- gsSPLight(&spiny_seg5_light_05015800, 1),
- gsSPLight(&spiny_seg5_light_050157F8, 2),
+ gsSPLight(&spiny_seg5_lights_050157F8.l, 1),
+ gsSPLight(&spiny_seg5_lights_050157F8.a, 2),
gsSPVertex(spiny_seg5_vertex_050159B8, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 7, 0x0, 8, 7, 9, 0x0),
@@ -341,8 +317,8 @@ const Gfx spiny_seg5_dl_050164E0[] = {
gsSP2Triangles( 3, 5, 11, 0x0, 11, 5, 0, 0x0),
gsSP2Triangles( 7, 8, 3, 0x0, 9, 12, 8, 0x0),
gsSP2Triangles( 9, 2, 1, 0x0, 2, 10, 0, 0x0),
- gsSPLight(&spiny_seg5_light_05015818, 1),
- gsSPLight(&spiny_seg5_light_05015810, 2),
+ gsSPLight(&spiny_seg5_lights_05015810.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015810.a, 2),
gsSPVertex(spiny_seg5_vertex_05015A88, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 3, 4, 0, 0x0, 1, 5, 2, 0x0),
@@ -351,8 +327,8 @@ const Gfx spiny_seg5_dl_050164E0[] = {
// 0x050165A8 - 0x05016670
const Gfx spiny_seg5_dl_050165A8[] = {
- gsSPLight(&spiny_seg5_light_05015800, 1),
- gsSPLight(&spiny_seg5_light_050157F8, 2),
+ gsSPLight(&spiny_seg5_lights_050157F8.l, 1),
+ gsSPLight(&spiny_seg5_lights_050157F8.a, 2),
gsSPVertex(spiny_seg5_vertex_05015AE8, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 5, 0x0, 8, 6, 9, 0x0),
@@ -361,8 +337,8 @@ const Gfx spiny_seg5_dl_050165A8[] = {
gsSP2Triangles(10, 3, 5, 0x0, 2, 3, 10, 0x0),
gsSP2Triangles( 5, 9, 6, 0x0, 9, 12, 8, 0x0),
gsSP2Triangles( 1, 0, 8, 0x0, 2, 11, 0, 0x0),
- gsSPLight(&spiny_seg5_light_05015818, 1),
- gsSPLight(&spiny_seg5_light_05015810, 2),
+ gsSPLight(&spiny_seg5_lights_05015810.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015810.a, 2),
gsSPVertex(spiny_seg5_vertex_05015BB8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 0, 5, 1, 0x0),
@@ -371,8 +347,8 @@ const Gfx spiny_seg5_dl_050165A8[] = {
// 0x05016670 - 0x05016738
const Gfx spiny_seg5_dl_05016670[] = {
- gsSPLight(&spiny_seg5_light_05015800, 1),
- gsSPLight(&spiny_seg5_light_050157F8, 2),
+ gsSPLight(&spiny_seg5_lights_050157F8.l, 1),
+ gsSPLight(&spiny_seg5_lights_050157F8.a, 2),
gsSPVertex(spiny_seg5_vertex_05015C18, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 5, 0x0, 8, 6, 9, 0x0),
@@ -381,8 +357,8 @@ const Gfx spiny_seg5_dl_05016670[] = {
gsSP2Triangles(10, 3, 5, 0x0, 2, 3, 10, 0x0),
gsSP2Triangles( 5, 9, 6, 0x0, 9, 12, 8, 0x0),
gsSP2Triangles( 1, 0, 8, 0x0, 2, 11, 0, 0x0),
- gsSPLight(&spiny_seg5_light_05015818, 1),
- gsSPLight(&spiny_seg5_light_05015810, 2),
+ gsSPLight(&spiny_seg5_lights_05015810.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015810.a, 2),
gsSPVertex(spiny_seg5_vertex_05015CE8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 0, 5, 1, 0x0),
@@ -391,8 +367,8 @@ const Gfx spiny_seg5_dl_05016670[] = {
// 0x05016738 - 0x05016A48
const Gfx spiny_seg5_dl_05016738[] = {
- gsSPLight(&spiny_seg5_light_05015830, 1),
- gsSPLight(&spiny_seg5_light_05015828, 2),
+ gsSPLight(&spiny_seg5_lights_05015828.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015828.a, 2),
gsSPVertex(spiny_seg5_vertex_05015D48, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 4, 2, 0x0, 1, 0, 5, 0x0),
@@ -413,8 +389,8 @@ const Gfx spiny_seg5_dl_05016738[] = {
gsSPVertex(spiny_seg5_vertex_05015F48, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 5, 2, 4, 0x0, 4, 2, 1, 0x0),
- gsSPLight(&spiny_seg5_light_05015860, 1),
- gsSPLight(&spiny_seg5_light_05015858, 2),
+ gsSPLight(&spiny_seg5_lights_05015858.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015858.a, 2),
gsSPVertex(spiny_seg5_vertex_05015FA8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 6, 7, 0x0),
@@ -426,8 +402,8 @@ const Gfx spiny_seg5_dl_05016738[] = {
gsSP2Triangles( 0, 9, 10, 0x0, 0, 10, 1, 0x0),
gsSP2Triangles( 6, 5, 0, 0x0, 15, 10, 13, 0x0),
gsSP2Triangles( 3, 1, 15, 0x0, 10, 15, 1, 0x0),
- gsSPLight(&spiny_seg5_light_05015848, 1),
- gsSPLight(&spiny_seg5_light_05015840, 2),
+ gsSPLight(&spiny_seg5_lights_05015840.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015840.a, 2),
gsSPVertex(spiny_seg5_vertex_050160A8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 0, 8, 1, 0x0),
@@ -435,8 +411,8 @@ const Gfx spiny_seg5_dl_05016738[] = {
gsSP2Triangles( 3, 5, 9, 0x0, 1, 8, 7, 0x0),
gsSP2Triangles( 3, 9, 2, 0x0, 3, 7, 4, 0x0),
gsSP2Triangles( 4, 7, 6, 0x0, 4, 6, 5, 0x0),
- gsSPLight(&spiny_seg5_light_05015878, 1),
- gsSPLight(&spiny_seg5_light_05015870, 2),
+ gsSPLight(&spiny_seg5_lights_05015870.l, 1),
+ gsSPLight(&spiny_seg5_lights_05015870.a, 2),
gsSPVertex(spiny_seg5_vertex_05016148, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -454,6 +430,6 @@ const Gfx spiny_seg5_dl_05016738[] = {
// 0x05016A48 - 0x05016A58
const Gfx spiny_seg5_dl_05016A48[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPEndDisplayList(),
};
diff --git a/actors/spiny_egg/model.inc.c b/actors/spiny_egg/model.inc.c
@@ -1,24 +1,16 @@
// Spiny Egg
// 0x050144F8
-static const Ambient spiny_egg_seg5_light_050144F8 = {
- {{0x3f, 0x3f, 0x00}, 0, {0x3f, 0x3f, 0x00}, 0}
-};
-
-// 0x05014500
-static const Light spiny_egg_seg5_light_05014500 = {
- {{0xff, 0xff, 0x00}, 0, {0xff, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_egg_seg5_lights_050144F8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x00,
+ 0xff, 0xff, 0x00, 0x28, 0x28, 0x28
+);
// 0x05014510
-static const Ambient spiny_egg_seg5_light_05014510 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x05014518
-static const Light spiny_egg_seg5_light_05014518 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 spiny_egg_seg5_lights_05014510 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x05014528
static const Vtx spiny_egg_seg5_vertex_05014528[] = {
@@ -286,8 +278,8 @@ static const Vtx spiny_egg_seg5_vertex_050150A8[] = {
// 0x050151A8 - 0x050151E0
const Gfx spiny_egg_seg5_dl_050151A8[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_05014528, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -296,8 +288,8 @@ const Gfx spiny_egg_seg5_dl_050151A8[] = {
// 0x050151E0 - 0x05015218
const Gfx spiny_egg_seg5_dl_050151E0[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_050145B8, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -306,8 +298,8 @@ const Gfx spiny_egg_seg5_dl_050151E0[] = {
// 0x05015218 - 0x05015250
const Gfx spiny_egg_seg5_dl_05015218[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_05014648, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -316,8 +308,8 @@ const Gfx spiny_egg_seg5_dl_05015218[] = {
// 0x05015250 - 0x05015288
const Gfx spiny_egg_seg5_dl_05015250[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_050146D8, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -326,8 +318,8 @@ const Gfx spiny_egg_seg5_dl_05015250[] = {
// 0x05015288 - 0x050152C0
const Gfx spiny_egg_seg5_dl_05015288[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_05014768, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -336,8 +328,8 @@ const Gfx spiny_egg_seg5_dl_05015288[] = {
// 0x050152C0 - 0x050152F8
const Gfx spiny_egg_seg5_dl_050152C0[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_050147F8, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -346,8 +338,8 @@ const Gfx spiny_egg_seg5_dl_050152C0[] = {
// 0x050152F8 - 0x05015330
const Gfx spiny_egg_seg5_dl_050152F8[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_05014888, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -356,8 +348,8 @@ const Gfx spiny_egg_seg5_dl_050152F8[] = {
// 0x05015330 - 0x05015368
const Gfx spiny_egg_seg5_dl_05015330[] = {
- gsSPLight(&spiny_egg_seg5_light_05014500, 1),
- gsSPLight(&spiny_egg_seg5_light_050144F8, 2),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_050144F8.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_05014918, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
@@ -366,8 +358,8 @@ const Gfx spiny_egg_seg5_dl_05015330[] = {
// 0x05015368 - 0x05015740
const Gfx spiny_egg_seg5_dl_05015368[] = {
- gsSPLight(&spiny_egg_seg5_light_05014518, 1),
- gsSPLight(&spiny_egg_seg5_light_05014510, 2),
+ gsSPLight(&spiny_egg_seg5_lights_05014510.l, 1),
+ gsSPLight(&spiny_egg_seg5_lights_05014510.a, 2),
gsSPVertex(spiny_egg_seg5_vertex_050149A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 4, 3, 5, 0x0),
@@ -437,6 +429,6 @@ const Gfx spiny_egg_seg5_dl_05015368[] = {
// 0x05015740 - 0x05015750
const Gfx spiny_egg_seg5_dl_05015740[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
+ gsSPNumLights(NUMLIGHTS_1),
gsSPEndDisplayList(),
};
diff --git a/actors/springboard/model.inc.c b/actors/springboard/model.inc.c
@@ -1,14 +1,10 @@
// Springboard (unused)
// 0x05000000
-static const Ambient springboard_seg5_light_05000000 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x05000008
-static const Light springboard_seg5_light_05000008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 springboard_seg5_lights_05000000 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05000018
ALIGNED8 static const u8 springboard_seg5_texture_05000018[] = {
@@ -171,8 +167,8 @@ const Gfx springboard_checkerboard_seg5_dl_050016B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000018),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&springboard_seg5_light_05000008, 1),
- gsSPLight(&springboard_seg5_light_05000000, 2),
+ gsSPLight(&springboard_seg5_lights_05000000.l, 1),
+ gsSPLight(&springboard_seg5_lights_05000000.a, 2),
gsSPVertex(springboard_seg5_vertex_05001018, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
@@ -207,8 +203,8 @@ const Gfx springboard_spring_seg5_dl_05001800[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000818),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&springboard_seg5_light_05000008, 1),
- gsSPLight(&springboard_seg5_light_05000000, 2),
+ gsSPLight(&springboard_seg5_lights_05000000.l, 1),
+ gsSPLight(&springboard_seg5_lights_05000000.a, 2),
gsSPVertex(springboard_seg5_vertex_050012B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -238,8 +234,8 @@ const Gfx springboard_checkerboard_seg5_dl_05001900[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, springboard_seg5_texture_05000018),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&springboard_seg5_light_05000008, 1),
- gsSPLight(&springboard_seg5_light_05000000, 2),
+ gsSPLight(&springboard_seg5_lights_05000000.l, 1),
+ gsSPLight(&springboard_seg5_lights_05000000.a, 2),
gsSPVertex(springboard_seg5_vertex_05001458, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
diff --git a/actors/star/model.inc.c b/actors/star/model.inc.c
@@ -1,14 +1,10 @@
// Star
// 0x0302A6D8
-static const Ambient star_seg3_light_0302A6D8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0302A6E0
-static const Light star_seg3_light_0302A6E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 star_seg3_lights_0302A6D8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302A6F0
ALIGNED8 static const u8 star_seg3_texture_0302A6F0[] = {
@@ -38,8 +34,8 @@ static const Vtx star_seg3_vertex_0302B6F0[] = {
// 0x0302B7B0 - 0x0302B870
const Gfx star_seg3_dl_0302B7B0[] = {
- gsSPLight(&star_seg3_light_0302A6E0, 1),
- gsSPLight(&star_seg3_light_0302A6D8, 2),
+ gsSPLight(&star_seg3_lights_0302A6D8.l, 1),
+ gsSPLight(&star_seg3_lights_0302A6D8.a, 2),
gsSPVertex(star_seg3_vertex_0302B6F0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 3, 4, 0x0),
@@ -72,14 +68,10 @@ const Gfx star_seg3_dl_0302B870[] = {
};
// 0x0302B908
-static const Ambient star_seg3_light_0302B908 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0302B910
-static const Light star_seg3_light_0302B910 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 star_seg3_lights_0302B908 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302B920
static const Vtx star_seg3_vertex_0302B920[] = {
@@ -100,8 +92,8 @@ const Gfx star_seg3_dl_0302B9C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, star_seg3_texture_0302AEF0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&star_seg3_light_0302B910, 1),
- gsSPLight(&star_seg3_light_0302B908, 2),
+ gsSPLight(&star_seg3_lights_0302B908.l, 1),
+ gsSPLight(&star_seg3_lights_0302B908.a, 2),
gsSPVertex(star_seg3_vertex_0302B920, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/actors/swoop/model.inc.c b/actors/swoop/model.inc.c
@@ -1,24 +1,16 @@
// Swoop
-// Unreferenced light
-UNUSED static const Ambient swoop_light_1 = {
- {{0x0a, 0x00, 0x25}, 0, {0x0a, 0x00, 0x25}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light swoop_light_2 = {
- {{0x2a, 0x00, 0x95}, 0, {0x2a, 0x00, 0x95}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient swoop_light_3 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light swoop_light_4 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 swoop_lights_unused1 = gdSPDefLights1(
+ 0x0a, 0x00, 0x25,
+ 0x2a, 0x00, 0x95, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 swoop_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06004270
ALIGNED8 static const u8 swoop_seg6_texture_06004270[] = {
@@ -41,14 +33,10 @@ ALIGNED8 static const u8 swoop_seg6_texture_06005A70[] = {
};
// 0x06006270
-static const Ambient swoop_seg6_light_06006270 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x06006278
-static const Light swoop_seg6_light_06006278 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 swoop_seg6_lights_06006270 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06006288
static const Vtx swoop_seg6_vertex_06006288[] = {
@@ -122,8 +110,8 @@ const Gfx swoop_seg6_dl_060065B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06004A70),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&swoop_seg6_light_06006278, 1),
- gsSPLight(&swoop_seg6_light_06006270, 2),
+ gsSPLight(&swoop_seg6_lights_06006270.l, 1),
+ gsSPLight(&swoop_seg6_lights_06006270.a, 2),
gsSPVertex(swoop_seg6_vertex_06006288, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 3, 7, 4, 0x0),
@@ -231,14 +219,10 @@ const Gfx swoop_seg6_dl_06006880[] = {
};
// 0x06006938
-static const Ambient swoop_seg6_light_06006938 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x06006940
-static const Light swoop_seg6_light_06006940 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 swoop_seg6_lights_06006938 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06006950
static const Vtx swoop_seg6_vertex_06006950[] = {
@@ -265,8 +249,8 @@ const Gfx swoop_seg6_dl_06006A10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, swoop_seg6_texture_06005270),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&swoop_seg6_light_06006940, 1),
- gsSPLight(&swoop_seg6_light_06006938, 2),
+ gsSPLight(&swoop_seg6_lights_06006938.l, 1),
+ gsSPLight(&swoop_seg6_lights_06006938.a, 2),
gsSPVertex(swoop_seg6_vertex_06006950, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/actors/test_platform/model.inc.c b/actors/test_platform/model.inc.c
@@ -1,14 +1,10 @@
// Test Platform (small tiny platform 1/4th the size of a box. Probably used in early modeling tests?)
// 0x08026008
-static const Ambient unknown_seg8_light_08026008 = {
- {{0x32, 0x32, 0x07}, 0, {0x32, 0x32, 0x07}, 0}
-};
-
-// 0x08026010
-static const Light unknown_seg8_light_08026010 = {
- {{0xc8, 0xc8, 0x1e}, 0, {0xc8, 0xc8, 0x1e}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 unknown_seg8_lights_08026008 = gdSPDefLights1(
+ 0x32, 0x32, 0x07,
+ 0xc8, 0xc8, 0x1e, 0x28, 0x28, 0x28
+);
// 0x08026020
static const Vtx unknown_seg8_vertex_08026020[] = {
@@ -60,9 +56,7 @@ static const Vtx unknown_seg8_vertex_08026200[] = {
// 0x08026260 - 0x080262F8
const Gfx unknown_seg8_dl_08026260[] = {
- gsSPNumLights(NUMLIGHTS_0), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&unknown_seg8_light_08026010, 1),
- gsSPLight(&unknown_seg8_light_08026008, 2),
+ gsSPSetLights1(unknown_seg8_lights_08026008),
gsSPVertex(unknown_seg8_vertex_08026020, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/thwomp/model.inc.c b/actors/thwomp/model.inc.c
@@ -1,14 +1,10 @@
// Thwomp
// 0x050098E8
-static const Ambient thwomp_seg5_light_050098E8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x050098F0
-static const Light thwomp_seg5_light_050098F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 thwomp_seg5_lights_050098E8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x05009900
ALIGNED8 static const u8 thwomp_seg5_texture_05009900[] = {
@@ -120,8 +116,8 @@ const Gfx thwomp_seg5_dl_0500B570[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thwomp_seg5_texture_0500A900),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thwomp_seg5_light_050098F0, 1),
- gsSPLight(&thwomp_seg5_light_050098E8, 2),
+ gsSPLight(&thwomp_seg5_lights_050098E8.l, 1),
+ gsSPLight(&thwomp_seg5_lights_050098E8.a, 2),
gsSPVertex(thwomp_seg5_vertex_0500B100, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 0, 4, 5, 0x0),
diff --git a/actors/toad/model.inc.c b/actors/toad/model.inc.c
@@ -1,14 +1,10 @@
// Toad
// 0x06005908
-static const Ambient toad_seg6_light_06005908 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06005910
-static const Light toad_seg6_light_06005910 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06005908 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06005920
ALIGNED8 static const u8 toad_seg6_texture_06005920[] = {
@@ -227,8 +223,8 @@ const Gfx toad_seg6_dl_06007300[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, toad_seg6_texture_06005920),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&toad_seg6_light_06005910, 1),
- gsSPLight(&toad_seg6_light_06005908, 2),
+ gsSPLight(&toad_seg6_lights_06005908.l, 1),
+ gsSPLight(&toad_seg6_lights_06005908.a, 2),
gsSPVertex(toad_seg6_vertex_06006920, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 2, 4, 0, 0x0, 0, 5, 6, 0x0),
@@ -354,14 +350,10 @@ const Gfx toad_seg6_us_dl_06007788[] = {
#endif
// 0x06007788
-static const Ambient toad_seg6_light_06007788 = {
- {{0x21, 0x13, 0x5a}, 0, {0x21, 0x13, 0x5a}, 0}
-};
-
-// 0x06007790
-static const Light toad_seg6_light_06007790 = {
- {{0x42, 0x27, 0xb5}, 0, {0x42, 0x27, 0xb5}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06007788 = gdSPDefLights1(
+ 0x21, 0x13, 0x5a,
+ 0x42, 0x27, 0xb5, 0x28, 0x28, 0x28
+);
// 0x060077A0
static const Vtx toad_seg6_vertex_060077A0[] = {
@@ -401,8 +393,8 @@ static const Vtx toad_seg6_vertex_060078A0[] = {
// 0x06007960 - 0x06007A48
const Gfx toad_seg6_dl_06007960[] = {
- gsSPLight(&toad_seg6_light_06007790, 1),
- gsSPLight(&toad_seg6_light_06007788, 2),
+ gsSPLight(&toad_seg6_lights_06007788.l, 1),
+ gsSPLight(&toad_seg6_lights_06007788.a, 2),
gsSPVertex(toad_seg6_vertex_060077A0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 8, 0x0),
@@ -443,24 +435,16 @@ const Gfx toad_seg6_us_dl_06007B00[] = {
#endif
// 0x06007A80
-static const Ambient toad_seg6_light_06007A80 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x06007A88
-static const Light toad_seg6_light_06007A88 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06007A80 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06007A98
-static const Ambient toad_seg6_light_06007A98 = {
- {{0x7f, 0x6a, 0x50}, 0, {0x7f, 0x6a, 0x50}, 0}
-};
-
-// 0x06007AA0
-static const Light toad_seg6_light_06007AA0 = {
- {{0xfe, 0xd5, 0xa1}, 0, {0xfe, 0xd5, 0xa1}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06007A98 = gdSPDefLights1(
+ 0x7f, 0x6a, 0x50,
+ 0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28
+);
// 0x06007AB0
static const Vtx toad_seg6_vertex_06007AB0[] = {
@@ -514,8 +498,8 @@ static const Vtx toad_seg6_vertex_06007C50[] = {
// 0x06007D10 - 0x06007EB0
const Gfx toad_seg6_dl_06007D10[] = {
- gsSPLight(&toad_seg6_light_06007A88, 1),
- gsSPLight(&toad_seg6_light_06007A80, 2),
+ gsSPLight(&toad_seg6_lights_06007A80.l, 1),
+ gsSPLight(&toad_seg6_lights_06007A80.a, 2),
gsSPVertex(toad_seg6_vertex_06007AB0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 6, 7, 0x0),
@@ -534,8 +518,8 @@ const Gfx toad_seg6_dl_06007D10[] = {
gsSP2Triangles( 5, 9, 0, 0x0, 0, 9, 1, 0x0),
gsSP2Triangles(11, 6, 0, 0x0, 11, 0, 2, 0x0),
gsSP1Triangle( 0, 6, 5, 0x0),
- gsSPLight(&toad_seg6_light_06007AA0, 1),
- gsSPLight(&toad_seg6_light_06007A98, 2),
+ gsSPLight(&toad_seg6_lights_06007A98.l, 1),
+ gsSPLight(&toad_seg6_lights_06007A98.a, 2),
gsSPVertex(toad_seg6_vertex_06007C50, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 4, 1, 5, 0x0),
@@ -557,14 +541,10 @@ const Gfx toad_seg6_dl_06007EB0[] = {
};
// 0x06007ED8
-static const Ambient toad_seg6_light_06007ED8 = {
- {{0x7f, 0x6a, 0x50}, 0, {0x7f, 0x6a, 0x50}, 0}
-};
-
-// 0x06007EE0
-static const Light toad_seg6_light_06007EE0 = {
- {{0xfe, 0xd5, 0xa1}, 0, {0xfe, 0xd5, 0xa1}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06007ED8 = gdSPDefLights1(
+ 0x7f, 0x6a, 0x50,
+ 0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28
+);
// 0x06007EF0
static const Vtx toad_seg6_vertex_06007EF0[] = {
@@ -605,8 +585,8 @@ static const Vtx toad_seg6_vertex_06007FF0[] = {
// 0x060080C0 - 0x060081F8
const Gfx toad_seg6_dl_060080C0[] = {
- gsSPLight(&toad_seg6_light_06007EE0, 1),
- gsSPLight(&toad_seg6_light_06007ED8, 2),
+ gsSPLight(&toad_seg6_lights_06007ED8.l, 1),
+ gsSPLight(&toad_seg6_lights_06007ED8.a, 2),
gsSPVertex(toad_seg6_vertex_06007EF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 4, 3, 0, 0x0),
@@ -639,14 +619,10 @@ const Gfx toad_seg6_dl_060081F8[] = {
};
// 0x06008220
-static const Ambient toad_seg6_light_06008220 = {
- {{0x7f, 0x6a, 0x50}, 0, {0x7f, 0x6a, 0x50}, 0}
-};
-
-// 0x06008228
-static const Light toad_seg6_light_06008228 = {
- {{0xfe, 0xd5, 0xa1}, 0, {0xfe, 0xd5, 0xa1}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06008220 = gdSPDefLights1(
+ 0x7f, 0x6a, 0x50,
+ 0xfe, 0xd5, 0xa1, 0x28, 0x28, 0x28
+);
// 0x06008238
static const Vtx toad_seg6_vertex_06008238[] = {
@@ -685,8 +661,8 @@ static const Vtx toad_seg6_vertex_06008338[] = {
// 0x060083E8 - 0x06008520
const Gfx toad_seg6_dl_060083E8[] = {
- gsSPLight(&toad_seg6_light_06008228, 1),
- gsSPLight(&toad_seg6_light_06008220, 2),
+ gsSPLight(&toad_seg6_lights_06008220.l, 1),
+ gsSPLight(&toad_seg6_lights_06008220.a, 2),
gsSPVertex(toad_seg6_vertex_06008238, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 5, 1, 0, 0x0, 0, 4, 6, 0x0),
@@ -738,14 +714,10 @@ const Gfx toad_seg6_us_dl_06008608[] = {
#endif
// 0x06008560
-static const Ambient toad_seg6_light_06008560 = {
- {{0x34, 0x20, 0x0d}, 0, {0x34, 0x20, 0x0d}, 0}
-};
-
-// 0x06008568
-static const Light toad_seg6_light_06008568 = {
- {{0x68, 0x40, 0x1b}, 0, {0x68, 0x40, 0x1b}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_06008560 = gdSPDefLights1(
+ 0x34, 0x20, 0x0d,
+ 0x68, 0x40, 0x1b, 0x28, 0x28, 0x28
+);
// 0x06008578
static const Vtx toad_seg6_vertex_06008578[] = {
@@ -786,8 +758,8 @@ static const Vtx toad_seg6_vertex_06008678[] = {
// 0x06008748 - 0x06008890
const Gfx toad_seg6_dl_06008748[] = {
- gsSPLight(&toad_seg6_light_06008568, 1),
- gsSPLight(&toad_seg6_light_06008560, 2),
+ gsSPLight(&toad_seg6_lights_06008560.l, 1),
+ gsSPLight(&toad_seg6_lights_06008560.a, 2),
gsSPVertex(toad_seg6_vertex_06008578, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 6, 0x0),
@@ -822,14 +794,10 @@ const Gfx toad_seg6_dl_06008890[] = {
};
// 0x060088B8
-static const Ambient toad_seg6_light_060088B8 = {
- {{0x34, 0x20, 0x0d}, 0, {0x34, 0x20, 0x0d}, 0}
-};
-
-// 0x060088C0
-static const Light toad_seg6_light_060088C0 = {
- {{0x68, 0x40, 0x1b}, 0, {0x68, 0x40, 0x1b}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 toad_seg6_lights_060088B8 = gdSPDefLights1(
+ 0x34, 0x20, 0x0d,
+ 0x68, 0x40, 0x1b, 0x28, 0x28, 0x28
+);
// 0x060088D0
static const Vtx toad_seg6_vertex_060088D0[] = {
@@ -869,8 +837,8 @@ static const Vtx toad_seg6_vertex_060089D0[] = {
// 0x06008A90 - 0x06008BD8
const Gfx toad_seg6_dl_06008A90[] = {
- gsSPLight(&toad_seg6_light_060088C0, 1),
- gsSPLight(&toad_seg6_light_060088B8, 2),
+ gsSPLight(&toad_seg6_lights_060088B8.l, 1),
+ gsSPLight(&toad_seg6_lights_060088B8.a, 2),
gsSPVertex(toad_seg6_vertex_060088D0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 2, 5, 0x0),
diff --git a/actors/tornado/model.inc.c b/actors/tornado/model.inc.c
@@ -6,14 +6,10 @@ ALIGNED8 static const u8 tornado_seg5_texture_05013128[] = {
};
// 0x05014128
-static const Ambient tornado_seg5_light_05014128 = {
- {{0x3b, 0x34, 0x23}, 0, {0x3b, 0x34, 0x23}, 0}
-};
-
-// 0x05014130
-static const Light tornado_seg5_light_05014130 = {
- {{0xee, 0xd0, 0x8d}, 0, {0xee, 0xd0, 0x8d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 tornado_seg5_lights_05014128 = gdSPDefLights1(
+ 0x3b, 0x34, 0x23,
+ 0xee, 0xd0, 0x8d, 0x28, 0x28, 0x28
+);
// 0x05014140
static const Vtx tornado_seg5_vertex_05014140[] = {
@@ -85,8 +81,8 @@ const Gfx tornado_seg5_dl_05014450[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, tornado_seg5_texture_05013128),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&tornado_seg5_light_05014130, 1),
- gsSPLight(&tornado_seg5_light_05014128, 2),
+ gsSPLight(&tornado_seg5_lights_05014128.l, 1),
+ gsSPLight(&tornado_seg5_lights_05014128.a, 2),
gsSPVertex(tornado_seg5_vertex_05014140, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 5, 6, 0x0, 0, 6, 1, 0x0),
diff --git a/actors/transparent_star/model.inc.c b/actors/transparent_star/model.inc.c
@@ -1,14 +1,10 @@
// Transparent Star
// 0x0302C488
-static const Ambient transparent_star_seg3_light_0302C488 = {
- {{0x03, 0x05, 0x17}, 0, {0x03, 0x05, 0x17}, 0}
-};
-
-// 0x0302C490
-static const Light transparent_star_seg3_light_0302C490 = {
- {{0x1e, 0x32, 0xe6}, 0, {0x1e, 0x32, 0xe6}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 transparent_star_seg3_lights_0302C488 = gdSPDefLights1(
+ 0x03, 0x05, 0x17,
+ 0x1e, 0x32, 0xe6, 0x28, 0x28, 0x28
+);
// 0x0302C4A0
static const Vtx transparent_star_seg3_vertex_0302C4A0[] = {
@@ -28,8 +24,8 @@ static const Vtx transparent_star_seg3_vertex_0302C4A0[] = {
// 0x0302C560 - 0x0302C620
const Gfx transparent_star_seg3_dl_0302C560[] = {
- gsSPLight(&transparent_star_seg3_light_0302C490, 1),
- gsSPLight(&transparent_star_seg3_light_0302C488, 2),
+ gsSPLight(&transparent_star_seg3_lights_0302C488.l, 1),
+ gsSPLight(&transparent_star_seg3_lights_0302C488.a, 2),
gsSPVertex(transparent_star_seg3_vertex_0302C4A0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 3, 4, 0x0),
diff --git a/actors/treasure_chest/model.inc.c b/actors/treasure_chest/model.inc.c
@@ -1,14 +1,10 @@
// Treasure Chest
// 0x06013F90
-static const Ambient treasure_chest_seg6_light_06013F90 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06013F98
-static const Light treasure_chest_seg6_light_06013F98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 treasure_chest_seg6_lights_06013F90 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06013FA8
ALIGNED8 static const u8 treasure_chest_seg6_texture_06013FA8[] = {
@@ -158,8 +154,8 @@ const Gfx treasure_chest_seg6_dl_06016D58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_06013FA8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&treasure_chest_seg6_light_06013F98, 1),
- gsSPLight(&treasure_chest_seg6_light_06013F90, 2),
+ gsSPLight(&treasure_chest_seg6_lights_06013F90.l, 1),
+ gsSPLight(&treasure_chest_seg6_lights_06013F90.a, 2),
gsSPVertex(treasure_chest_seg6_vertex_060167A8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -381,8 +377,8 @@ const Gfx treasure_chest_seg6_dl_06017680[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, treasure_chest_seg6_texture_060147A8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&treasure_chest_seg6_light_06013F98, 1),
- gsSPLight(&treasure_chest_seg6_light_06013F90, 2),
+ gsSPLight(&treasure_chest_seg6_lights_06013F90.l, 1),
+ gsSPLight(&treasure_chest_seg6_lights_06013F90.a, 2),
gsSPVertex(treasure_chest_seg6_vertex_06017030, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 5, 6, 7, 0x0),
diff --git a/actors/tree/model.inc.c b/actors/tree/model.inc.c
@@ -1,14 +1,10 @@
// Tree
// 0x0302DE10
-static const Ambient tree_seg3_light_0302DE10 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0302DE18
-static const Light tree_seg3_light_0302DE18 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 tree_seg3_lights_0302DE10 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302DE28
ALIGNED8 static const u8 tree_seg3_texture_0302DE28[] = {
@@ -99,8 +95,8 @@ const Gfx tree_seg3_dl_03030FA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302FF60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&tree_seg3_light_0302DE18, 1),
- gsSPLight(&tree_seg3_light_0302DE10, 2),
+ gsSPLight(&tree_seg3_lights_0302DE10.l, 1),
+ gsSPLight(&tree_seg3_lights_0302DE10.a, 2),
gsSPVertex(tree_seg3_vertex_03030F60, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
@@ -136,8 +132,8 @@ const Gfx tree_seg3_dl_03032088[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_03031048),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&tree_seg3_light_0302DE18, 1),
- gsSPLight(&tree_seg3_light_0302DE10, 2),
+ gsSPLight(&tree_seg3_lights_0302DE10.l, 1),
+ gsSPLight(&tree_seg3_lights_0302DE10.a, 2),
gsSPVertex(tree_seg3_vertex_03032048, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
@@ -168,8 +164,8 @@ const Gfx tree_seg3_dl_03032170[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_0302FF60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&tree_seg3_light_0302DE18, 1),
- gsSPLight(&tree_seg3_light_0302DE10, 2),
+ gsSPLight(&tree_seg3_lights_0302DE10.l, 1),
+ gsSPLight(&tree_seg3_lights_0302DE10.a, 2),
gsSPVertex(tree_seg3_vertex_03032130, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
@@ -205,8 +201,8 @@ const Gfx tree_seg3_dl_03033258[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, tree_seg3_texture_03032218),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&tree_seg3_light_0302DE18, 1),
- gsSPLight(&tree_seg3_light_0302DE10, 2),
+ gsSPLight(&tree_seg3_lights_0302DE10.l, 1),
+ gsSPLight(&tree_seg3_lights_0302DE10.a, 2),
gsSPVertex(tree_seg3_vertex_03033218, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
diff --git a/actors/ukiki/model.inc.c b/actors/ukiki/model.inc.c
@@ -1,34 +1,22 @@
// Ukiki
-// Unreferenced light
-UNUSED static const Ambient ukiki_light_1 = {
- {{0x1d, 0x12, 0x07}, 0, {0x1d, 0x12, 0x07}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light ukiki_light_2 = {
- {{0x77, 0x48, 0x1f}, 0, {0x77, 0x48, 0x1f}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient ukiki_light_3 = {
- {{0x39, 0x24, 0x18}, 0, {0x39, 0x24, 0x18}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light ukiki_light_4 = {
- {{0xe7, 0x93, 0x61}, 0, {0xe7, 0x93, 0x61}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 ukiki_lights_unused1 = gdSPDefLights1(
+ 0x1d, 0x12, 0x07,
+ 0x77, 0x48, 0x1f, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 ukiki_lights_unused2 = gdSPDefLights1(
+ 0x39, 0x24, 0x18,
+ 0xe7, 0x93, 0x61, 0x28, 0x28, 0x28
+);
// 0x05007BA0
-static const Ambient ukiki_seg5_light_05007BA0 = {
- {{0x39, 0x24, 0x18}, 0, {0x39, 0x24, 0x18}, 0}
-};
-
-// 0x05007BA8
-static const Light ukiki_seg5_light_05007BA8 = {
- {{0xe7, 0x93, 0x61}, 0, {0xe7, 0x93, 0x61}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_05007BA0 = gdSPDefLights1(
+ 0x39, 0x24, 0x18,
+ 0xe7, 0x93, 0x61, 0x28, 0x28, 0x28
+);
// The hell?
UNUSED static const u64 ukiki_unused_1 = 1;
@@ -54,24 +42,16 @@ ALIGNED8 static const u8 ukiki_seg5_texture_0500A3C0[] = {
};
// 0x0500ABC0
-static const Ambient ukiki_seg5_light_0500ABC0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500ABC8
-static const Light ukiki_seg5_light_0500ABC8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500ABC0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500ABD8
-static const Ambient ukiki_seg5_light_0500ABD8 = {
- {{0x77, 0x66, 0x45}, 0, {0x77, 0x66, 0x45}, 0}
-};
-
-// 0x0500ABE0
-static const Light ukiki_seg5_light_0500ABE0 = {
- {{0xee, 0xcd, 0x8a}, 0, {0xee, 0xcd, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500ABD8 = gdSPDefLights1(
+ 0x77, 0x66, 0x45,
+ 0xee, 0xcd, 0x8a, 0x28, 0x28, 0x28
+);
// 0x0500ABF0
static const Vtx ukiki_seg5_vertex_0500ABF0[] = {
@@ -164,8 +144,8 @@ static const Vtx ukiki_seg5_vertex_0500AF60[] = {
// 0x0500B040 - 0x0500B1D8
const Gfx ukiki_seg5_dl_0500B040[] = {
- gsSPLight(&ukiki_seg5_light_0500ABC8, 1),
- gsSPLight(&ukiki_seg5_light_0500ABC0, 2),
+ gsSPLight(&ukiki_seg5_lights_0500ABC0.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500ABC0.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500ABF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 5, 2, 4, 0x0),
@@ -198,8 +178,8 @@ const Gfx ukiki_seg5_dl_0500B040[] = {
// 0x0500B1D8 - 0x0500B278
const Gfx ukiki_seg5_dl_0500B1D8[] = {
- gsSPLight(&ukiki_seg5_light_0500ABE0, 1),
- gsSPLight(&ukiki_seg5_light_0500ABD8, 2),
+ gsSPLight(&ukiki_seg5_lights_0500ABD8.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500ABD8.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500AF60, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 4, 0, 0x0, 5, 6, 4, 0x0),
@@ -253,14 +233,10 @@ const Gfx ukiki_seg5_dl_0500B310[] = {
};
// 0x0500B338
-static const Ambient ukiki_seg5_light_0500B338 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B340
-static const Light ukiki_seg5_light_0500B340 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500B338 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B350
static const Vtx ukiki_seg5_vertex_0500B350[] = {
@@ -332,8 +308,8 @@ const Gfx ukiki_seg5_dl_0500B660[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500B340, 1),
- gsSPLight(&ukiki_seg5_light_0500B338, 2),
+ gsSPLight(&ukiki_seg5_lights_0500B338.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500B338.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500B350, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 3, 0, 4, 0x0, 3, 5, 6, 0x0),
@@ -389,14 +365,10 @@ const Gfx ukiki_seg5_dl_0500B820[] = {
};
// 0x0500B888
-static const Ambient ukiki_seg5_light_0500B888 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B890
-static const Light ukiki_seg5_light_0500B890 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500B888 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500B8A0
static const Vtx ukiki_seg5_vertex_0500B8A0[] = {
@@ -415,8 +387,8 @@ const Gfx ukiki_seg5_dl_0500B920[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500B890, 1),
- gsSPLight(&ukiki_seg5_light_0500B888, 2),
+ gsSPLight(&ukiki_seg5_lights_0500B888.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500B888.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500B8A0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 4, 6, 5, 0x0),
@@ -441,14 +413,10 @@ const Gfx ukiki_seg5_dl_0500B988[] = {
};
// 0x0500B9E8
-static const Ambient ukiki_seg5_light_0500B9E8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500B9F0
-static const Light ukiki_seg5_light_0500B9F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500B9E8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BA00
static const Vtx ukiki_seg5_vertex_0500BA00[] = {
@@ -468,8 +436,8 @@ const Gfx ukiki_seg5_dl_0500BA90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500B9F0, 1),
- gsSPLight(&ukiki_seg5_light_0500B9E8, 2),
+ gsSPLight(&ukiki_seg5_lights_0500B9E8.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500B9E8.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500BA00, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 1, 5, 6, 0x0, 1, 6, 2, 0x0),
@@ -497,14 +465,10 @@ const Gfx ukiki_seg5_dl_0500BB28[] = {
};
// 0x0500BB88
-static const Ambient ukiki_seg5_light_0500BB88 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BB90
-static const Light ukiki_seg5_light_0500BB90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500BB88 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BBA0
static const Vtx ukiki_seg5_vertex_0500BBA0[] = {
@@ -522,8 +486,8 @@ const Gfx ukiki_seg5_dl_0500BC10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500BB90, 1),
- gsSPLight(&ukiki_seg5_light_0500BB88, 2),
+ gsSPLight(&ukiki_seg5_lights_0500BB88.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500BB88.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500BBA0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 2, 5, 4, 0x0),
@@ -548,14 +512,10 @@ const Gfx ukiki_seg5_dl_0500BC78[] = {
};
// 0x0500BCD8
-static const Ambient ukiki_seg5_light_0500BCD8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BCE0
-static const Light ukiki_seg5_light_0500BCE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500BCD8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BCF0
static const Vtx ukiki_seg5_vertex_0500BCF0[] = {
@@ -577,8 +537,8 @@ const Gfx ukiki_seg5_dl_0500BDA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500BCE0, 1),
- gsSPLight(&ukiki_seg5_light_0500BCD8, 2),
+ gsSPLight(&ukiki_seg5_lights_0500BCD8.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500BCD8.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500BCF0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 3, 5, 0x0, 0, 2, 6, 0x0),
@@ -606,14 +566,10 @@ const Gfx ukiki_seg5_dl_0500BE38[] = {
};
// 0x0500BE98
-static const Ambient ukiki_seg5_light_0500BE98 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500BEA0
-static const Light ukiki_seg5_light_0500BEA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500BE98 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500BEB0
static const Vtx ukiki_seg5_vertex_0500BEB0[] = {
@@ -635,8 +591,8 @@ const Gfx ukiki_seg5_dl_0500BF60[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500BEA0, 1),
- gsSPLight(&ukiki_seg5_light_0500BE98, 2),
+ gsSPLight(&ukiki_seg5_lights_0500BE98.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500BE98.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500BEB0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 3, 0x0),
@@ -664,14 +620,10 @@ const Gfx ukiki_seg5_dl_0500BFF8[] = {
};
// 0x0500C058
-static const Ambient ukiki_seg5_light_0500C058 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C060
-static const Light ukiki_seg5_light_0500C060 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C058 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C070
static const Vtx ukiki_seg5_vertex_0500C070[] = {
@@ -693,8 +645,8 @@ const Gfx ukiki_seg5_dl_0500C120[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C060, 1),
- gsSPLight(&ukiki_seg5_light_0500C058, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C058.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C058.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C070, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 2, 1, 5, 0x0, 2, 5, 4, 0x0),
@@ -722,14 +674,10 @@ const Gfx ukiki_seg5_dl_0500C1B8[] = {
};
// 0x0500C218
-static const Ambient ukiki_seg5_light_0500C218 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C220
-static const Light ukiki_seg5_light_0500C220 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C218 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C230
static const Vtx ukiki_seg5_vertex_0500C230[] = {
@@ -750,8 +698,8 @@ const Gfx ukiki_seg5_dl_0500C2D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C220, 1),
- gsSPLight(&ukiki_seg5_light_0500C218, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C218.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C218.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C230, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 3, 1, 0x0, 0, 2, 5, 0x0),
@@ -779,14 +727,10 @@ const Gfx ukiki_seg5_dl_0500C368[] = {
};
// 0x0500C3C8
-static const Ambient ukiki_seg5_light_0500C3C8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C3D0
-static const Light ukiki_seg5_light_0500C3D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C3C8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C3E0
static const Vtx ukiki_seg5_vertex_0500C3E0[] = {
@@ -808,8 +752,8 @@ const Gfx ukiki_seg5_dl_0500C490[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C3D0, 1),
- gsSPLight(&ukiki_seg5_light_0500C3C8, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C3C8.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C3C8.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C3E0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 2, 1, 5, 0x0),
@@ -837,14 +781,10 @@ const Gfx ukiki_seg5_dl_0500C528[] = {
};
// 0x0500C588
-static const Ambient ukiki_seg5_light_0500C588 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C590
-static const Light ukiki_seg5_light_0500C590 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C588 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C5A0
static const Vtx ukiki_seg5_vertex_0500C5A0[] = {
@@ -866,8 +806,8 @@ const Gfx ukiki_seg5_dl_0500C650[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C590, 1),
- gsSPLight(&ukiki_seg5_light_0500C588, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C588.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C588.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C5A0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 0, 5, 1, 0x0),
@@ -895,14 +835,10 @@ const Gfx ukiki_seg5_dl_0500C6E8[] = {
};
// 0x0500C748
-static const Ambient ukiki_seg5_light_0500C748 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C750
-static const Light ukiki_seg5_light_0500C750 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C748 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C760
static const Vtx ukiki_seg5_vertex_0500C760[] = {
@@ -923,8 +859,8 @@ const Gfx ukiki_seg5_dl_0500C800[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C750, 1),
- gsSPLight(&ukiki_seg5_light_0500C748, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C748.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C748.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C760, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 4, 3, 0x0),
@@ -952,14 +888,10 @@ const Gfx ukiki_seg5_dl_0500C898[] = {
};
// 0x0500C8F8
-static const Ambient ukiki_seg5_light_0500C8F8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0500C900
-static const Light ukiki_seg5_light_0500C900 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 ukiki_seg5_lights_0500C8F8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500C910
static const Vtx ukiki_seg5_vertex_0500C910[] = {
@@ -980,8 +912,8 @@ const Gfx ukiki_seg5_dl_0500C9B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ukiki_seg5_texture_0500A3C0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ukiki_seg5_light_0500C900, 1),
- gsSPLight(&ukiki_seg5_light_0500C8F8, 2),
+ gsSPLight(&ukiki_seg5_lights_0500C8F8.l, 1),
+ gsSPLight(&ukiki_seg5_lights_0500C8F8.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500C910, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 3, 0x0),
@@ -1110,8 +1042,8 @@ static const Vtx ukiki_seg5_vertex_0500CE98[] = {
// 0x0500CF68 - 0x0500CFF0
const Gfx ukiki_seg5_dl_0500CF68[] = {
- gsSPLight(&ukiki_seg5_light_05007BA8, 1),
- gsSPLight(&ukiki_seg5_light_05007BA0, 2),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500CAA8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1125,8 +1057,8 @@ const Gfx ukiki_seg5_dl_0500CF68[] = {
// 0x0500CFF0 - 0x0500D078
const Gfx ukiki_seg5_dl_0500CFF0[] = {
- gsSPLight(&ukiki_seg5_light_05007BA8, 1),
- gsSPLight(&ukiki_seg5_light_05007BA0, 2),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500CC28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1140,8 +1072,8 @@ const Gfx ukiki_seg5_dl_0500CFF0[] = {
// 0x0500D078 - 0x0500D108
const Gfx ukiki_seg5_dl_0500D078[] = {
- gsSPLight(&ukiki_seg5_light_05007BA8, 1),
- gsSPLight(&ukiki_seg5_light_05007BA0, 2),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500CDA8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 2, 7, 6, 0x0),
@@ -1155,8 +1087,8 @@ const Gfx ukiki_seg5_dl_0500D078[] = {
// 0x0500D108 - 0x0500D198
const Gfx ukiki_seg5_dl_0500D108[] = {
- gsSPLight(&ukiki_seg5_light_05007BA8, 1),
- gsSPLight(&ukiki_seg5_light_05007BA0, 2),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.l, 1),
+ gsSPLight(&ukiki_seg5_lights_05007BA0.a, 2),
gsSPVertex(ukiki_seg5_vertex_0500CE98, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 5, 0x0, 4, 5, 6, 0x0),
diff --git a/actors/unagi/model.inc.c b/actors/unagi/model.inc.c
@@ -1,84 +1,52 @@
// Unagi (Eel)
-// Unreferenced light
-UNUSED static const Ambient unagi_light_1 = {
- {{0x2c, 0x25, 0x00}, 0, {0x2c, 0x25, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_2 = {
- {{0xb2, 0x94, 0x00}, 0, {0xb2, 0x94, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_3 = {
- {{0x35, 0x00, 0x00}, 0, {0x35, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_4 = {
- {{0xd5, 0x00, 0x00}, 0, {0xd5, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_5 = {
- {{0x37, 0x00, 0x00}, 0, {0x37, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_6 = {
- {{0xdd, 0x00, 0x00}, 0, {0xdd, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_7 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_9 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_10 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_11 = {
- {{0x34, 0x00, 0x00}, 0, {0x34, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_12 = {
- {{0xd2, 0x00, 0x00}, 0, {0xd2, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_13 = {
- {{0x34, 0x00, 0x00}, 0, {0x34, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_14 = {
- {{0xd3, 0x00, 0x00}, 0, {0xd3, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient unagi_light_15 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light unagi_light_16 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused1 = gdSPDefLights1(
+ 0x2c, 0x25, 0x00,
+ 0xb2, 0x94, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused2 = gdSPDefLights1(
+ 0x35, 0x00, 0x00,
+ 0xd5, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused3 = gdSPDefLights1(
+ 0x37, 0x00, 0x00,
+ 0xdd, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused4 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused5 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused6 = gdSPDefLights1(
+ 0x34, 0x00, 0x00,
+ 0xd2, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused7 = gdSPDefLights1(
+ 0x34, 0x00, 0x00,
+ 0xd3, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 unagi_lights_unused8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500AF20
ALIGNED8 static const u8 unagi_seg5_texture_0500AF20[] = {
diff --git a/actors/warp_pipe/model.inc.c b/actors/warp_pipe/model.inc.c
@@ -1,14 +1,10 @@
// Warp Pipe
// 0x030079E8
-static const Ambient warp_pipe_seg3_light_030079E8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x030079F0
-static const Light warp_pipe_seg3_light_030079F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 warp_pipe_seg3_lights_030079E8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x03007A00
static const Vtx warp_pipe_seg3_vertex_03007A00[] = {
@@ -108,8 +104,8 @@ const Gfx warp_pipe_seg3_dl_03008E40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, warp_pipe_seg3_texture_03007E40),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&warp_pipe_seg3_light_030079F0, 1),
- gsSPLight(&warp_pipe_seg3_light_030079E8, 2),
+ gsSPLight(&warp_pipe_seg3_lights_030079E8.l, 1),
+ gsSPLight(&warp_pipe_seg3_lights_030079E8.a, 2),
gsSPVertex(warp_pipe_seg3_vertex_03007A00, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -153,24 +149,16 @@ const Gfx warp_pipe_seg3_dl_03008F98[] = {
};
// 0x03008FF8
-static const Ambient warp_pipe_seg3_light_03008FF8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x03009000
-static const Light warp_pipe_seg3_light_03009000 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 warp_pipe_seg3_lights_03008FF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x03009010
-static const Ambient warp_pipe_seg3_light_03009010 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x03009018
-static const Light warp_pipe_seg3_light_03009018 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 warp_pipe_seg3_lights_03009010 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x03009028
static const Vtx warp_pipe_seg3_vertex_03009028[] = {
@@ -210,8 +198,8 @@ const Gfx warp_pipe_seg3_dl_03009968[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, warp_pipe_seg3_texture_03009168),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&warp_pipe_seg3_light_03009000, 1),
- gsSPLight(&warp_pipe_seg3_light_03008FF8, 2),
+ gsSPLight(&warp_pipe_seg3_lights_03008FF8.l, 1),
+ gsSPLight(&warp_pipe_seg3_lights_03008FF8.a, 2),
gsSPVertex(warp_pipe_seg3_vertex_03009028, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 3, 5, 0x0),
@@ -226,8 +214,8 @@ const Gfx warp_pipe_seg3_dl_03009968[] = {
// 0x03009A20 - 0x03009A50
const Gfx warp_pipe_seg3_dl_03009A20[] = {
- gsSPLight(&warp_pipe_seg3_light_03009018, 1),
- gsSPLight(&warp_pipe_seg3_light_03009010, 2),
+ gsSPLight(&warp_pipe_seg3_lights_03009010.l, 1),
+ gsSPLight(&warp_pipe_seg3_lights_03009010.a, 2),
gsSPVertex(warp_pipe_seg3_vertex_03009128, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/actors/water_bubble/model.inc.c b/actors/water_bubble/model.inc.c
@@ -1,14 +1,10 @@
// Water Bubble
// 0x0500FE68
-static const Ambient water_bubble_seg5_light_0500FE68 = {
- {{0xbf, 0xbf, 0xbf}, 0, {0xbf, 0xbf, 0xbf}, 0}
-};
-
-// 0x0500FE70
-static const Light water_bubble_seg5_light_0500FE70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 water_bubble_seg5_lights_0500FE68 = gdSPDefLights1(
+ 0xbf, 0xbf, 0xbf,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0500FE80
ALIGNED8 static const u8 water_bubble_seg5_texture_0500FE80[] = {
@@ -152,8 +148,8 @@ static const Vtx water_bubble_seg5_vertex_05010C50[] = {
// 0x05010D30 - 0x05011000
const Gfx water_bubble_seg5_dl_05010D30[] = {
- gsSPLight(&water_bubble_seg5_light_0500FE70, 1),
- gsSPLight(&water_bubble_seg5_light_0500FE68, 2),
+ gsSPLight(&water_bubble_seg5_lights_0500FE68.l, 1),
+ gsSPLight(&water_bubble_seg5_lights_0500FE68.a, 2),
gsSPVertex(water_bubble_seg5_vertex_05010680, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 1, 5, 3, 0x0),
diff --git a/actors/water_mine/model.inc.c b/actors/water_mine/model.inc.c
@@ -1,14 +1,10 @@
// Water Mine (unused)
// 0x0600A4E0
-static const Ambient water_mine_seg6_light_0600A4E0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0600A4E8
-static const Light water_mine_seg6_light_0600A4E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 water_mine_seg6_lights_0600A4E0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0600A4F8
ALIGNED8 static const u8 water_mine_seg6_texture_0600A4F8[] = {
@@ -177,8 +173,8 @@ const Gfx water_mine_seg6_dl_0600D2E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_mine_seg6_texture_0600C4F8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&water_mine_seg6_light_0600A4E8, 1),
- gsSPLight(&water_mine_seg6_light_0600A4E0, 2),
+ gsSPLight(&water_mine_seg6_lights_0600A4E0.l, 1),
+ gsSPLight(&water_mine_seg6_lights_0600A4E0.a, 2),
gsSPVertex(water_mine_seg6_vertex_0600CD78, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/actors/water_ring/model.inc.c b/actors/water_ring/model.inc.c
@@ -1,14 +1,10 @@
// Water Ring
// 0x06012368
-static const Ambient water_ring_seg6_light_06012368 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x06012370
-static const Light water_ring_seg6_light_06012370 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 water_ring_seg6_lights_06012368 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x06012380
ALIGNED8 static const u8 water_ring_seg6_texture_06012380[] = {
@@ -170,8 +166,8 @@ const Gfx water_ring_seg6_dl_06013AC0[] = {
gsDPSetCombineMode(G_CC_DECALFADE, G_CC_DECALFADE),
gsDPLoadTextureBlock(water_ring_seg6_texture_06012380, G_IM_FMT_RGBA, G_IM_SIZ_16b, 64, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 6, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPTexture(0x1800, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
- gsSPLight(&water_ring_seg6_light_06012370, 1),
- gsSPLight(&water_ring_seg6_light_06012368, 2),
+ gsSPLight(&water_ring_seg6_lights_06012368.l, 1),
+ gsSPLight(&water_ring_seg6_lights_06012368.a, 2),
gsSPVertex(water_ring_seg6_vertex_06013380, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/whomp/model.inc.c b/actors/whomp/model.inc.c
@@ -25,14 +25,10 @@ ALIGNED8 static const u8 whomp_seg6_texture_0601EB60[] = {
};
// 0x0601F360
-static const Ambient whomp_seg6_light_0601F360 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0601F368
-static const Light whomp_seg6_light_0601F368 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 whomp_seg6_lights_0601F360 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0601F378
static const Vtx whomp_seg6_vertex_0601F378[] = {
@@ -75,8 +71,8 @@ const Gfx whomp_seg6_dl_0601F4F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&whomp_seg6_light_0601F368, 1),
- gsSPLight(&whomp_seg6_light_0601F360, 2),
+ gsSPLight(&whomp_seg6_lights_0601F360.l, 1),
+ gsSPLight(&whomp_seg6_lights_0601F360.a, 2),
gsSPVertex(whomp_seg6_vertex_0601F378, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -129,14 +125,10 @@ const Gfx whomp_seg6_dl_0601F5E0[] = {
};
// 0x0601F678
-static const Ambient whomp_seg6_light_0601F678 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0601F680
-static const Light whomp_seg6_light_0601F680 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 whomp_seg6_lights_0601F678 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0601F690
static const Vtx whomp_seg6_vertex_0601F690[] = {
@@ -173,8 +165,8 @@ const Gfx whomp_seg6_dl_0601F7F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&whomp_seg6_light_0601F680, 1),
- gsSPLight(&whomp_seg6_light_0601F678, 2),
+ gsSPLight(&whomp_seg6_lights_0601F678.l, 1),
+ gsSPLight(&whomp_seg6_lights_0601F678.a, 2),
gsSPVertex(whomp_seg6_vertex_0601F690, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -203,14 +195,10 @@ const Gfx whomp_seg6_dl_0601F880[] = {
};
// 0x0601F8E0
-static const Ambient whomp_seg6_light_0601F8E0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0601F8E8
-static const Light whomp_seg6_light_0601F8E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 whomp_seg6_lights_0601F8E0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0601F8F8
static const Vtx whomp_seg6_vertex_0601F8F8[] = {
@@ -247,8 +235,8 @@ const Gfx whomp_seg6_dl_0601FA58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&whomp_seg6_light_0601F8E8, 1),
- gsSPLight(&whomp_seg6_light_0601F8E0, 2),
+ gsSPLight(&whomp_seg6_lights_0601F8E0.l, 1),
+ gsSPLight(&whomp_seg6_lights_0601F8E0.a, 2),
gsSPVertex(whomp_seg6_vertex_0601F8F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -349,14 +337,10 @@ const Gfx whomp_seg6_dl_0601FCA8[] = {
};
// 0x0601FD18
-static const Ambient whomp_seg6_light_0601FD18 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0601FD20
-static const Light whomp_seg6_light_0601FD20 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 whomp_seg6_lights_0601FD18 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0601FD30
static const Vtx whomp_seg6_vertex_0601FD30[] = {
@@ -381,8 +365,8 @@ const Gfx whomp_seg6_dl_0601FE10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&whomp_seg6_light_0601FD20, 1),
- gsSPLight(&whomp_seg6_light_0601FD18, 2),
+ gsSPLight(&whomp_seg6_lights_0601FD18.l, 1),
+ gsSPLight(&whomp_seg6_lights_0601FD18.a, 2),
gsSPVertex(whomp_seg6_vertex_0601FD30, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 4, 3, 2, 0x0),
@@ -410,14 +394,10 @@ const Gfx whomp_seg6_dl_0601FEA8[] = {
};
// 0x0601FF08
-static const Ambient whomp_seg6_light_0601FF08 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0601FF10
-static const Light whomp_seg6_light_0601FF10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 whomp_seg6_lights_0601FF08 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0601FF20
static const Vtx whomp_seg6_vertex_0601FF20[] = {
@@ -436,8 +416,8 @@ const Gfx whomp_seg6_dl_0601FFA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, whomp_seg6_texture_0601EB60),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&whomp_seg6_light_0601FF10, 1),
- gsSPLight(&whomp_seg6_light_0601FF08, 2),
+ gsSPLight(&whomp_seg6_lights_0601FF08.l, 1),
+ gsSPLight(&whomp_seg6_lights_0601FF08.a, 2),
gsSPVertex(whomp_seg6_vertex_0601FF20, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 1, 5, 4, 0x0),
diff --git a/actors/wiggler_body/model.inc.c b/actors/wiggler_body/model.inc.c
@@ -36,34 +36,22 @@ ALIGNED8 static const u8 wiggler_seg5_texture_0500A230[] = {
};
// 0x0500B230
-static const Ambient wiggler_seg5_light_0500B230 = {
- {{0x37, 0x00, 0x00}, 0, {0x37, 0x00, 0x00}, 0}
-};
-
-// 0x0500B238
-static const Light wiggler_seg5_light_0500B238 = {
- {{0xdf, 0x00, 0x00}, 0, {0xdf, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 wiggler_seg5_lights_0500B230 = gdSPDefLights1(
+ 0x37, 0x00, 0x00,
+ 0xdf, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0500B248
-static const Ambient wiggler_seg5_light_0500B248 = {
- {{0x39, 0x11, 0x00}, 0, {0x39, 0x11, 0x00}, 0}
-};
+static const Lights1 wiggler_seg5_lights_0500B248 = gdSPDefLights1(
+ 0x39, 0x11, 0x00,
+ 0xe7, 0x47, 0x00, 0x28, 0x28, 0x28
+);
-// 0x0500B250
-static const Light wiggler_seg5_light_0500B250 = {
- {{0xe7, 0x47, 0x00}, 0, {0xe7, 0x47, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient wiggler_body_light_1 = {
- {{0x3a, 0x22, 0x05}, 0, {0x3a, 0x22, 0x05}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light wiggler_body_light_2 = {
- {{0xea, 0x8b, 0x16}, 0, {0xea, 0x8b, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+UNUSED static const Lights1 wiggler_body_lights_unused = gdSPDefLights1(
+ 0x3a, 0x22, 0x05,
+ 0xea, 0x8b, 0x16, 0x28, 0x28, 0x28
+);
// 0x0500B278
static const Vtx wiggler_seg5_vertex_0500B278[] = {
@@ -279,8 +267,8 @@ static const Vtx wiggler_seg5_vertex_0500BBC8[] = {
// 0x0500BCB8 - 0x0500BE10
const Gfx wiggler_seg5_dl_0500BCB8[] = {
- gsSPLight(&wiggler_seg5_light_0500B238, 1),
- gsSPLight(&wiggler_seg5_light_0500B230, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B230.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B230.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500B278, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -308,8 +296,8 @@ const Gfx wiggler_seg5_dl_0500BCB8[] = {
// 0x0500BE10 - 0x0500BE98
const Gfx wiggler_seg5_dl_0500BE10[] = {
- gsSPLight(&wiggler_seg5_light_0500B250, 1),
- gsSPLight(&wiggler_seg5_light_0500B248, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500B5B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -323,8 +311,8 @@ const Gfx wiggler_seg5_dl_0500BE10[] = {
// 0x0500BE98 - 0x0500BF20
const Gfx wiggler_seg5_dl_0500BE98[] = {
- gsSPLight(&wiggler_seg5_light_0500B250, 1),
- gsSPLight(&wiggler_seg5_light_0500B248, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500B6A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -338,8 +326,8 @@ const Gfx wiggler_seg5_dl_0500BE98[] = {
// 0x0500BF20 - 0x0500C078
const Gfx wiggler_seg5_dl_0500BF20[] = {
- gsSPLight(&wiggler_seg5_light_0500B238, 1),
- gsSPLight(&wiggler_seg5_light_0500B230, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B230.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B230.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500B798, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -367,8 +355,8 @@ const Gfx wiggler_seg5_dl_0500BF20[] = {
// 0x0500C078 - 0x0500C100
const Gfx wiggler_seg5_dl_0500C078[] = {
- gsSPLight(&wiggler_seg5_light_0500B250, 1),
- gsSPLight(&wiggler_seg5_light_0500B248, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500BAD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -382,8 +370,8 @@ const Gfx wiggler_seg5_dl_0500C078[] = {
// 0x0500C100 - 0x0500C188
const Gfx wiggler_seg5_dl_0500C100[] = {
- gsSPLight(&wiggler_seg5_light_0500B250, 1),
- gsSPLight(&wiggler_seg5_light_0500B248, 2),
+ gsSPLight(&wiggler_seg5_lights_0500B248.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500B248.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500BBC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/wiggler_head/model.inc.c b/actors/wiggler_head/model.inc.c
@@ -1,44 +1,28 @@
// Wiggler Head
// 0x0500C878
-static const Ambient wiggler_seg5_light_0500C878 = {
- {{0x37, 0x00, 0x00}, 0, {0x37, 0x00, 0x00}, 0}
-};
-
-// 0x0500C880
-static const Light wiggler_seg5_light_0500C880 = {
- {{0xdf, 0x00, 0x00}, 0, {0xdf, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 wiggler_seg5_lights_0500C878 = gdSPDefLights1(
+ 0x37, 0x00, 0x00,
+ 0xdf, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0500C890
-static const Ambient wiggler_seg5_light_0500C890 = {
- {{0x39, 0x11, 0x00}, 0, {0x39, 0x11, 0x00}, 0}
-};
-
-// 0x0500C898
-static const Light wiggler_seg5_light_0500C898 = {
- {{0xe7, 0x47, 0x00}, 0, {0xe7, 0x47, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient wiggler_head_light_1 = {
- {{0x1b, 0x06, 0x00}, 0, {0x1b, 0x06, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light wiggler_head_light_2 = {
- {{0x6d, 0x1a, 0x00}, 0, {0x6d, 0x1a, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient wiggler_head_light_3 = {
- {{0x3a, 0x22, 0x05}, 0, {0x3a, 0x22, 0x05}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light wiggler_head_light_4 = {
- {{0xea, 0x8b, 0x16}, 0, {0xea, 0x8b, 0x16}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 wiggler_seg5_lights_0500C890 = gdSPDefLights1(
+ 0x39, 0x11, 0x00,
+ 0xe7, 0x47, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 wiggler_head_lights_unused1 = gdSPDefLights1(
+ 0x1b, 0x06, 0x00,
+ 0x6d, 0x1a, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 wiggler_head_lights_unused2 = gdSPDefLights1(
+ 0x3a, 0x22, 0x05,
+ 0xea, 0x8b, 0x16, 0x28, 0x28, 0x28
+);
// 0x0500C8D8
static const Vtx wiggler_seg5_vertex_0500C8D8[] = {
@@ -402,8 +386,8 @@ static const Vtx wiggler_seg5_vertex_0500D318[] = {
// 0x0500DC18 - 0x0500DD70
const Gfx wiggler_seg5_dl_0500DC18[] = {
- gsSPLight(&wiggler_seg5_light_0500C880, 1),
- gsSPLight(&wiggler_seg5_light_0500C878, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C878.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C878.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500C8D8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -431,8 +415,8 @@ const Gfx wiggler_seg5_dl_0500DC18[] = {
// 0x0500DD70 - 0x0500DDF8
const Gfx wiggler_seg5_dl_0500DD70[] = {
- gsSPLight(&wiggler_seg5_light_0500C898, 1),
- gsSPLight(&wiggler_seg5_light_0500C890, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500CC18, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -446,8 +430,8 @@ const Gfx wiggler_seg5_dl_0500DD70[] = {
// 0x0500DDF8 - 0x0500DE80
const Gfx wiggler_seg5_dl_0500DDF8[] = {
- gsSPLight(&wiggler_seg5_light_0500C898, 1),
- gsSPLight(&wiggler_seg5_light_0500C890, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500CD08, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -461,8 +445,8 @@ const Gfx wiggler_seg5_dl_0500DDF8[] = {
// 0x0500DE80 - 0x0500DFD8
const Gfx wiggler_seg5_dl_0500DE80[] = {
- gsSPLight(&wiggler_seg5_light_0500C880, 1),
- gsSPLight(&wiggler_seg5_light_0500C878, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C878.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C878.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500CDF8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -490,8 +474,8 @@ const Gfx wiggler_seg5_dl_0500DE80[] = {
// 0x0500DFD8 - 0x0500E060
const Gfx wiggler_seg5_dl_0500DFD8[] = {
- gsSPLight(&wiggler_seg5_light_0500C898, 1),
- gsSPLight(&wiggler_seg5_light_0500C890, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500D138, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -505,8 +489,8 @@ const Gfx wiggler_seg5_dl_0500DFD8[] = {
// 0x0500E060 - 0x0500E0E8
const Gfx wiggler_seg5_dl_0500E060[] = {
- gsSPLight(&wiggler_seg5_light_0500C898, 1),
- gsSPLight(&wiggler_seg5_light_0500C890, 2),
+ gsSPLight(&wiggler_seg5_lights_0500C890.l, 1),
+ gsSPLight(&wiggler_seg5_lights_0500C890.a, 2),
gsSPVertex(wiggler_seg5_vertex_0500D228, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/actors/wooden_signpost/model.inc.c b/actors/wooden_signpost/model.inc.c
@@ -1,14 +1,10 @@
// Signpost
// 0x0302C940
-static const Ambient wooden_signpost_seg3_light_0302C940 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0302C948
-static const Light wooden_signpost_seg3_light_0302C948 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 wooden_signpost_seg3_lights_0302C940 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302C958
static const Vtx wooden_signpost_seg3_vertex_0302C958[] = {
@@ -36,8 +32,8 @@ const Gfx wooden_signpost_seg3_dl_0302D9C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wooden_signpost_seg3_texture_0302C9C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wooden_signpost_seg3_light_0302C948, 1),
- gsSPLight(&wooden_signpost_seg3_light_0302C940, 2),
+ gsSPLight(&wooden_signpost_seg3_lights_0302C940.l, 1),
+ gsSPLight(&wooden_signpost_seg3_lights_0302C940.a, 2),
gsSPVertex(wooden_signpost_seg3_vertex_0302C958, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 3, 1, 0x0, 4, 1, 3, 0x0),
@@ -64,14 +60,10 @@ const Gfx wooden_signpost_seg3_dl_0302DA48[] = {
};
// 0x0302DAA8
-static const Ambient wooden_signpost_seg3_light_0302DAA8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0302DAB0
-static const Light wooden_signpost_seg3_light_0302DAB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 wooden_signpost_seg3_lights_0302DAA8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0302DAC0
static const Vtx wooden_signpost_seg3_vertex_0302DAC0[] = {
@@ -114,8 +106,8 @@ const Gfx wooden_signpost_seg3_dl_0302DC40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wooden_signpost_seg3_texture_0302C9C8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wooden_signpost_seg3_light_0302DAB0, 1),
- gsSPLight(&wooden_signpost_seg3_light_0302DAA8, 2),
+ gsSPLight(&wooden_signpost_seg3_lights_0302DAA8.l, 1),
+ gsSPLight(&wooden_signpost_seg3_lights_0302DAA8.a, 2),
gsSPVertex(wooden_signpost_seg3_vertex_0302DAC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
diff --git a/actors/yoshi/model.inc.c b/actors/yoshi/model.inc.c
@@ -1,34 +1,22 @@
// Yoshi
// 0x0501C458
-static const Ambient yoshi_seg5_light_0501C458 = {
- {{0x00, 0x7c, 0x00}, 0, {0x00, 0x7c, 0x00}, 0}
-};
-
-// 0x0501C460
-static const Light yoshi_seg5_light_0501C460 = {
- {{0x00, 0xf9, 0x00}, 0, {0x00, 0xf9, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501C458 = gdSPDefLights1(
+ 0x00, 0x7c, 0x00,
+ 0x00, 0xf9, 0x00, 0x28, 0x28, 0x28
+);
// 0x0501C470
-static const Ambient yoshi_seg5_light_0501C470 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0501C478
-static const Light yoshi_seg5_light_0501C478 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501C470 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0501C488
-static const Ambient yoshi_seg5_light_0501C488 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x0501C490
-static const Light yoshi_seg5_light_0501C490 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501C488 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0501C4A0
ALIGNED8 static const u8 yoshi_seg5_texture_0501C4A0[] = {
@@ -256,8 +244,8 @@ const Gfx yoshi_seg5_dl_0501D440[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, yoshi_seg5_texture_0501C8A0),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&yoshi_seg5_light_0501C460, 1),
- gsSPLight(&yoshi_seg5_light_0501C458, 2),
+ gsSPLight(&yoshi_seg5_lights_0501C458.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501C458.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501CAA0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -265,8 +253,8 @@ const Gfx yoshi_seg5_dl_0501D440[] = {
// 0x0501D488 - 0x0501D4E0
const Gfx yoshi_seg5_dl_0501D488[] = {
- gsSPLight(&yoshi_seg5_light_0501C478, 1),
- gsSPLight(&yoshi_seg5_light_0501C470, 2),
+ gsSPLight(&yoshi_seg5_lights_0501C470.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501C470.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501CB00, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 5, 0, 3, 0x0),
@@ -277,13 +265,13 @@ const Gfx yoshi_seg5_dl_0501D488[] = {
// 0x0501D4E0 - 0x0501D8F8
const Gfx yoshi_seg5_dl_0501D4E0[] = {
- gsSPLight(&yoshi_seg5_light_0501C490, 1),
- gsSPLight(&yoshi_seg5_light_0501C488, 2),
+ gsSPLight(&yoshi_seg5_lights_0501C488.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501C488.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501CBB0, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 1, 3, 0x0, 2, 1, 4, 0x0),
- gsSPLight(&yoshi_seg5_light_0501C460, 1),
- gsSPLight(&yoshi_seg5_light_0501C458, 2),
+ gsSPLight(&yoshi_seg5_lights_0501C458.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501C458.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501CC00, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 3, 5, 6, 0x0),
@@ -343,8 +331,8 @@ const Gfx yoshi_seg5_dl_0501D4E0[] = {
gsSPVertex(yoshi_seg5_vertex_0501D2C0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 3, 5, 6, 0x0),
- gsSPLight(&yoshi_seg5_light_0501C478, 1),
- gsSPLight(&yoshi_seg5_light_0501C470, 2),
+ gsSPLight(&yoshi_seg5_lights_0501C470.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501C470.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501D330, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 4, 8, 0x0),
@@ -398,64 +386,40 @@ const Gfx yoshi_seg5_dl_0501D998[] = {
};
// 0x0501D9C0
-static const Ambient yoshi_seg5_light_0501D9C0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0501D9C8
-static const Light yoshi_seg5_light_0501D9C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501D9C0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0501D9D8
-static const Ambient yoshi_seg5_light_0501D9D8 = {
- {{0x00, 0x7b, 0x00}, 0, {0x00, 0x7b, 0x00}, 0}
-};
-
-// 0x0501D9E0
-static const Light yoshi_seg5_light_0501D9E0 = {
- {{0x00, 0xf7, 0x00}, 0, {0x00, 0xf7, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501D9D8 = gdSPDefLights1(
+ 0x00, 0x7b, 0x00,
+ 0x00, 0xf7, 0x00, 0x28, 0x28, 0x28
+);
// 0x0501D9F0
-static const Ambient yoshi_seg5_light_0501D9F0 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x0501D9F8
-static const Light yoshi_seg5_light_0501D9F8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// unreferenced light
-UNUSED static const Ambient yoshi_light_1 = {
- {{0x59, 0x59, 0x59}, 0, {0x59, 0x59, 0x59}, 0}
-};
-
-// unreferenced light
-UNUSED static const Light yoshi_light_2 = {
- {{0xb2, 0xb2, 0xb2}, 0, {0xb2, 0xb2, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// unreferenced light
-UNUSED static const Ambient yoshi_light_3 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// unreferenced light
-UNUSED static const Light yoshi_light_4 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501D9F0 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 yoshi_lights_unused1 = gdSPDefLights1(
+ 0x59, 0x59, 0x59,
+ 0xb2, 0xb2, 0xb2, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 yoshi_lights_unused2 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0501DA38
-static const Ambient yoshi_seg5_light_0501DA38 = {
- {{0x45, 0x00, 0x00}, 0, {0x45, 0x00, 0x00}, 0}
-};
-
-// 0x0501DA40
-static const Light yoshi_seg5_light_0501DA40 = {
- {{0x8b, 0x00, 0x00}, 0, {0x8b, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 yoshi_seg5_lights_0501DA38 = gdSPDefLights1(
+ 0x45, 0x00, 0x00,
+ 0x8b, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0501DA50
static const Vtx yoshi_seg5_vertex_0501DA50[] = {
@@ -1621,8 +1585,8 @@ static const Vtx yoshi_seg5_vertex_050211D0[] = {
// 0x050212B0 - 0x05021490
const Gfx yoshi_seg5_dl_050212B0[] = {
- gsSPLight(&yoshi_seg5_light_0501D9C8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9C0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501DA50, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1664,8 +1628,8 @@ const Gfx yoshi_seg5_dl_050212B0[] = {
// 0x05021490 - 0x050215D8
const Gfx yoshi_seg5_dl_05021490[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501E1E0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1694,8 +1658,8 @@ const Gfx yoshi_seg5_dl_05021490[] = {
// 0x050215D8 - 0x05021678
const Gfx yoshi_seg5_dl_050215D8[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501E530, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 2, 6, 7, 0x0),
@@ -1710,8 +1674,8 @@ const Gfx yoshi_seg5_dl_050215D8[] = {
// 0x05021678 - 0x05021718
const Gfx yoshi_seg5_dl_05021678[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501E5D0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 7, 0x0, 4, 8, 1, 0x0),
@@ -1726,8 +1690,8 @@ const Gfx yoshi_seg5_dl_05021678[] = {
// 0x05021718 - 0x05021860
const Gfx yoshi_seg5_dl_05021718[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501E680, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1756,8 +1720,8 @@ const Gfx yoshi_seg5_dl_05021718[] = {
// 0x05021860 - 0x05021900
const Gfx yoshi_seg5_dl_05021860[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501E9D0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 4, 5, 1, 0x0, 6, 7, 0, 0x0),
@@ -1772,8 +1736,8 @@ const Gfx yoshi_seg5_dl_05021860[] = {
// 0x05021900 - 0x050219A0
const Gfx yoshi_seg5_dl_05021900[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501EA70, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 2, 0x0, 1, 8, 4, 0x0),
@@ -1788,8 +1752,8 @@ const Gfx yoshi_seg5_dl_05021900[] = {
// 0x050219A0 - 0x05021B90
const Gfx yoshi_seg5_dl_050219A0[] = {
- gsSPLight(&yoshi_seg5_light_0501D9F8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9F0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501EB20, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
@@ -1830,8 +1794,8 @@ const Gfx yoshi_seg5_dl_050219A0[] = {
// 0x05021B90 - 0x05021CD8
const Gfx yoshi_seg5_dl_05021B90[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501F180, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 3, 7, 4, 0x0),
@@ -1859,8 +1823,8 @@ const Gfx yoshi_seg5_dl_05021B90[] = {
// 0x05021CD8 - 0x05021E38
const Gfx yoshi_seg5_dl_05021CD8[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501F540, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1890,8 +1854,8 @@ const Gfx yoshi_seg5_dl_05021CD8[] = {
// 0x05021E38 - 0x05021F70
const Gfx yoshi_seg5_dl_05021E38[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501FA00, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 5, 3, 0x0, 6, 7, 8, 0x0),
@@ -1903,8 +1867,8 @@ const Gfx yoshi_seg5_dl_05021E38[] = {
gsSP2Triangles(10, 8, 7, 0x0, 3, 9, 12, 0x0),
gsSP2Triangles( 2, 1, 11, 0x0, 8, 11, 6, 0x0),
gsSP1Triangle( 5, 0, 3, 0x0),
- gsSPLight(&yoshi_seg5_light_0501D9C8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9C0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501FAF0, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 7, 6, 8, 0x0),
@@ -1918,8 +1882,8 @@ const Gfx yoshi_seg5_dl_05021E38[] = {
// 0x05021F70 - 0x05022160
const Gfx yoshi_seg5_dl_05021F70[] = {
- gsSPLight(&yoshi_seg5_light_0501D9F8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9F0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),
gsSPVertex(yoshi_seg5_vertex_0501FBA0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1960,8 +1924,8 @@ const Gfx yoshi_seg5_dl_05021F70[] = {
// 0x05022160 - 0x050222A8
const Gfx yoshi_seg5_dl_05022160[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_05020200, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 1, 6, 2, 0x0, 4, 7, 5, 0x0),
@@ -1989,8 +1953,8 @@ const Gfx yoshi_seg5_dl_05022160[] = {
// 0x050222A8 - 0x05022408
const Gfx yoshi_seg5_dl_050222A8[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_050205C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -2020,8 +1984,8 @@ const Gfx yoshi_seg5_dl_050222A8[] = {
// 0x05022408 - 0x05022608
const Gfx yoshi_seg5_dl_05022408[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_05020A80, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -2042,8 +2006,8 @@ const Gfx yoshi_seg5_dl_05022408[] = {
gsSP1Triangle( 4, 14, 15, 0x0),
gsSPVertex(yoshi_seg5_vertex_05020E60, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&yoshi_seg5_light_0501D9C8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9C0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),
gsSPVertex(yoshi_seg5_vertex_05020E90, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 5, 9, 3, 0x0),
@@ -2054,8 +2018,8 @@ const Gfx yoshi_seg5_dl_05022408[] = {
gsSP2Triangles(14, 15, 8, 0x0, 3, 10, 12, 0x0),
gsSP2Triangles(12, 4, 3, 0x0, 12, 14, 7, 0x0),
gsSP2Triangles( 8, 7, 14, 0x0, 7, 4, 12, 0x0),
- gsSPLight(&yoshi_seg5_light_0501D9F8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9F0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9F0.a, 2),
gsSPVertex(yoshi_seg5_vertex_05020F90, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 6, 5, 0x0),
@@ -2064,8 +2028,8 @@ const Gfx yoshi_seg5_dl_05022408[] = {
// 0x05022608 - 0x050227D8
const Gfx yoshi_seg5_dl_05022608[] = {
- gsSPLight(&yoshi_seg5_light_0501D9E0, 1),
- gsSPLight(&yoshi_seg5_light_0501D9D8, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9D8.a, 2),
gsSPVertex(yoshi_seg5_vertex_05021010, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -2075,8 +2039,8 @@ const Gfx yoshi_seg5_dl_05022608[] = {
gsSP2Triangles(14, 7, 3, 0x0, 13, 9, 12, 0x0),
gsSP2Triangles(11, 12, 9, 0x0, 7, 14, 8, 0x0),
gsSP2Triangles( 3, 13, 4, 0x0, 1, 15, 2, 0x0),
- gsSPLight(&yoshi_seg5_light_0501DA40, 1),
- gsSPLight(&yoshi_seg5_light_0501DA38, 2),
+ gsSPLight(&yoshi_seg5_lights_0501DA38.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501DA38.a, 2),
gsSPVertex(yoshi_seg5_vertex_05021110, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 2, 1, 0x0, 6, 7, 4, 0x0),
@@ -2085,8 +2049,8 @@ const Gfx yoshi_seg5_dl_05022608[] = {
gsSP2Triangles( 4, 1, 6, 0x0, 2, 9, 10, 0x0),
gsSP2Triangles( 5, 11, 3, 0x0, 2, 10, 0, 0x0),
gsSP2Triangles(11, 8, 3, 0x0, 1, 4, 3, 0x0),
- gsSPLight(&yoshi_seg5_light_0501D9C8, 1),
- gsSPLight(&yoshi_seg5_light_0501D9C0, 2),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.l, 1),
+ gsSPLight(&yoshi_seg5_lights_0501D9C0.a, 2),
gsSPVertex(yoshi_seg5_vertex_050211D0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 7, 6, 0x0),
diff --git a/asm/non_matchings/func_8031784C.s b/asm/non_matchings/func_8031784C.s
@@ -1,156 +0,0 @@
-glabel func_8031784C
-/* 0D284C 8031784C 27ADFFF0 */ addiu $t5, $sp, -0x10
-/* 0D2850 80317850 ADA60018 */ sw $a2, 0x18($t5)
-/* 0D2854 80317854 8C820000 */ lw $v0, ($a0)
-/* 0D2858 80317858 01A0E825 */ move $sp, $t5
-/* 0D285C 8031785C 50400030 */ beql $v0, $zero, .L80317920
-/* 0D2860 80317860 8DB80018 */ lw $t8, 0x18($t5)
-/* 0D2864 80317864 10E0002D */ beqz $a3, .L8031791C
-/* 0D2868 80317868 00447021 */ addu $t6, $v0, $a0
-/* 0D286C 8031786C 10E0002B */ beqz $a3, .L8031791C
-/* 0D2870 80317870 AC8E0000 */ sw $t6, ($a0)
-/* 0D2874 80317874 10E00029 */ beqz $a3, .L8031791C
-/* 0D2878 80317878 00001825 */ move $v1, $zero
-/* 0D287C 8031787C 00004025 */ move $t0, $zero
-/* 0D2880 80317880 24020001 */ li $v0, 1
-.L80317884:
-/* 0D2884 80317884 8C8F0000 */ lw $t7, ($a0)
-/* 0D2888 80317888 24630001 */ addiu $v1, $v1, 1
-/* 0D288C 8031788C 01E84821 */ addu $t1, $t7, $t0
-/* 0D2890 80317890 8D260000 */ lw $a2, ($t1)
-/* 0D2894 80317894 10C0001F */ beqz $a2, .L80317914
-/* 0D2898 80317898 00C43021 */ addu $a2, $a2, $a0
-/* 0D289C 8031789C AD260000 */ sw $a2, ($t1)
-/* 0D28A0 803178A0 90D80002 */ lbu $t8, 2($a2)
-/* 0D28A4 803178A4 00C05025 */ move $t2, $a2
-/* 0D28A8 803178A8 1700001A */ bnez $t8, .L80317914
-/* 0D28AC 803178AC 00000000 */ nop
-/* 0D28B0 803178B0 8CD90004 */ lw $t9, 4($a2)
-/* 0D28B4 803178B4 24C90004 */ addiu $t1, $a2, 4
-/* 0D28B8 803178B8 53200013 */ beql $t9, $zero, .L80317908
-/* 0D28BC 803178BC 8CC6000C */ lw $a2, 0xc($a2)
-/* 0D28C0 803178C0 8D2E0000 */ lw $t6, ($t1)
-/* 0D28C4 803178C4 01C45821 */ addu $t3, $t6, $a0
-/* 0D28C8 803178C8 AD2B0000 */ sw $t3, ($t1)
-/* 0D28CC 803178CC 916F0001 */ lbu $t7, 1($t3)
-/* 0D28D0 803178D0 01606025 */ move $t4, $t3
-/* 0D28D4 803178D4 55E0000C */ bnezl $t7, .L80317908
-/* 0D28D8 803178D8 8CC6000C */ lw $a2, 0xc($a2)
-/* 0D28DC 803178DC 8D780004 */ lw $t8, 4($t3)
-/* 0D28E0 803178E0 8D990008 */ lw $t9, 8($t4)
-/* 0D28E4 803178E4 8D8E000C */ lw $t6, 0xc($t4)
-/* 0D28E8 803178E8 03055821 */ addu $t3, $t8, $a1
-/* 0D28EC 803178EC AD8B0004 */ sw $t3, 4($t4)
-/* 0D28F0 803178F0 03245821 */ addu $t3, $t9, $a0
-/* 0D28F4 803178F4 AD8B0008 */ sw $t3, 8($t4)
-/* 0D28F8 803178F8 01C45821 */ addu $t3, $t6, $a0
-/* 0D28FC 803178FC AD8B000C */ sw $t3, 0xc($t4)
-/* 0D2900 80317900 A1820001 */ sb $v0, 1($t4)
-/* 0D2904 80317904 8CC6000C */ lw $a2, 0xc($a2)
-.L80317908:
-/* 0D2908 80317908 A1420002 */ sb $v0, 2($t2)
-/* 0D290C 8031790C 00867821 */ addu $t7, $a0, $a2
-/* 0D2910 80317910 AD4F000C */ sw $t7, 0xc($t2)
-.L80317914:
-/* 0D2914 80317914 1467FFDB */ bne $v1, $a3, .L80317884
-/* 0D2918 80317918 25080004 */ addiu $t0, $t0, 4
-.L8031791C:
-/* 0D291C 8031791C 8DB80018 */ lw $t8, 0x18($t5)
-.L80317920:
-/* 0D2920 80317920 24020001 */ li $v0, 1
-/* 0D2924 80317924 2F190001 */ sltiu $t9, $t8, 1
-/* 0D2928 80317928 3B390001 */ xori $t9, $t9, 1
-/* 0D292C 8031792C 13200054 */ beqz $t9, .L80317A80
-/* 0D2930 80317930 00000000 */ nop
-/* 0D2934 80317934 13200052 */ beqz $t9, .L80317A80
-/* 0D2938 80317938 24830004 */ addiu $v1, $a0, 4
-/* 0D293C 8031793C 00187080 */ sll $t6, $t8, 2
-/* 0D2940 80317940 01C45021 */ addu $t2, $t6, $a0
-/* 0D2944 80317944 254A0004 */ addiu $t2, $t2, 4
-/* 0D2948 80317948 8C660000 */ lw $a2, ($v1)
-.L8031794C:
-/* 0D294C 8031794C 10C00049 */ beqz $a2, .L80317A74
-/* 0D2950 80317950 00C47821 */ addu $t7, $a2, $a0
-/* 0D2954 80317954 AC6F0000 */ sw $t7, ($v1)
-/* 0D2958 80317958 91F90000 */ lbu $t9, ($t7)
-/* 0D295C 8031795C 01E03825 */ move $a3, $t7
-/* 0D2960 80317960 57200045 */ bnezl $t9, .L80317A78
-/* 0D2964 80317964 24630004 */ addiu $v1, $v1, 4
-/* 0D2968 80317968 8DF80008 */ lw $t8, 8($t7)
-/* 0D296C 8031796C 25E60008 */ addiu $a2, $t7, 8
-/* 0D2970 80317970 53000013 */ beql $t8, $zero, .L803179C0
-/* 0D2974 80317974 8CEF0010 */ lw $t7, 0x10($a3)
-/* 0D2978 80317978 8CCE0000 */ lw $t6, ($a2)
-/* 0D297C 8031797C 01C44021 */ addu $t0, $t6, $a0
-/* 0D2980 80317980 ACC80000 */ sw $t0, ($a2)
-/* 0D2984 80317984 910F0001 */ lbu $t7, 1($t0)
-/* 0D2988 80317988 01004825 */ move $t1, $t0
-/* 0D298C 8031798C 55E0000C */ bnezl $t7, .L803179C0
-/* 0D2990 80317990 8CEF0010 */ lw $t7, 0x10($a3)
-/* 0D2994 80317994 8D190004 */ lw $t9, 4($t0)
-/* 0D2998 80317998 8D380008 */ lw $t8, 8($t1)
-/* 0D299C 8031799C 8D2E000C */ lw $t6, 0xc($t1)
-/* 0D29A0 803179A0 03254021 */ addu $t0, $t9, $a1
-/* 0D29A4 803179A4 AD280004 */ sw $t0, 4($t1)
-/* 0D29A8 803179A8 03044021 */ addu $t0, $t8, $a0
-/* 0D29AC 803179AC AD280008 */ sw $t0, 8($t1)
-/* 0D29B0 803179B0 01C44021 */ addu $t0, $t6, $a0
-/* 0D29B4 803179B4 AD28000C */ sw $t0, 0xc($t1)
-/* 0D29B8 803179B8 A1220001 */ sb $v0, 1($t1)
-/* 0D29BC 803179BC 8CEF0010 */ lw $t7, 0x10($a3)
-.L803179C0:
-/* 0D29C0 803179C0 24E60010 */ addiu $a2, $a3, 0x10
-/* 0D29C4 803179C4 51E00013 */ beql $t7, $zero, .L80317A14
-/* 0D29C8 803179C8 8CF80018 */ lw $t8, 0x18($a3)
-/* 0D29CC 803179CC 8CD90000 */ lw $t9, ($a2)
-/* 0D29D0 803179D0 03244021 */ addu $t0, $t9, $a0
-/* 0D29D4 803179D4 ACC80000 */ sw $t0, ($a2)
-/* 0D29D8 803179D8 91180001 */ lbu $t8, 1($t0)
-/* 0D29DC 803179DC 01004825 */ move $t1, $t0
-/* 0D29E0 803179E0 5700000C */ bnezl $t8, .L80317A14
-/* 0D29E4 803179E4 8CF80018 */ lw $t8, 0x18($a3)
-/* 0D29E8 803179E8 8D0E0004 */ lw $t6, 4($t0)
-/* 0D29EC 803179EC 8D2F0008 */ lw $t7, 8($t1)
-/* 0D29F0 803179F0 8D39000C */ lw $t9, 0xc($t1)
-/* 0D29F4 803179F4 01C54021 */ addu $t0, $t6, $a1
-/* 0D29F8 803179F8 AD280004 */ sw $t0, 4($t1)
-/* 0D29FC 803179FC 01E44021 */ addu $t0, $t7, $a0
-/* 0D2A00 80317A00 AD280008 */ sw $t0, 8($t1)
-/* 0D2A04 80317A04 03244021 */ addu $t0, $t9, $a0
-/* 0D2A08 80317A08 AD28000C */ sw $t0, 0xc($t1)
-/* 0D2A0C 80317A0C A1220001 */ sb $v0, 1($t1)
-/* 0D2A10 80317A10 8CF80018 */ lw $t8, 0x18($a3)
-.L80317A14:
-/* 0D2A14 80317A14 24E60018 */ addiu $a2, $a3, 0x18
-/* 0D2A18 80317A18 53000013 */ beql $t8, $zero, .L80317A68
-/* 0D2A1C 80317A1C 8CE60004 */ lw $a2, 4($a3)
-/* 0D2A20 80317A20 8CCE0000 */ lw $t6, ($a2)
-/* 0D2A24 80317A24 01C44021 */ addu $t0, $t6, $a0
-/* 0D2A28 80317A28 ACC80000 */ sw $t0, ($a2)
-/* 0D2A2C 80317A2C 910F0001 */ lbu $t7, 1($t0)
-/* 0D2A30 80317A30 01004825 */ move $t1, $t0
-/* 0D2A34 80317A34 55E0000C */ bnezl $t7, .L80317A68
-/* 0D2A38 80317A38 8CE60004 */ lw $a2, 4($a3)
-/* 0D2A3C 80317A3C 8D190004 */ lw $t9, 4($t0)
-/* 0D2A40 80317A40 8D380008 */ lw $t8, 8($t1)
-/* 0D2A44 80317A44 8D2E000C */ lw $t6, 0xc($t1)
-/* 0D2A48 80317A48 03254021 */ addu $t0, $t9, $a1
-/* 0D2A4C 80317A4C AD280004 */ sw $t0, 4($t1)
-/* 0D2A50 80317A50 03044021 */ addu $t0, $t8, $a0
-/* 0D2A54 80317A54 AD280008 */ sw $t0, 8($t1)
-/* 0D2A58 80317A58 01C44021 */ addu $t0, $t6, $a0
-/* 0D2A5C 80317A5C AD28000C */ sw $t0, 0xc($t1)
-/* 0D2A60 80317A60 A1220001 */ sb $v0, 1($t1)
-/* 0D2A64 80317A64 8CE60004 */ lw $a2, 4($a3)
-.L80317A68:
-/* 0D2A68 80317A68 A0E20000 */ sb $v0, ($a3)
-/* 0D2A6C 80317A6C 00867821 */ addu $t7, $a0, $a2
-/* 0D2A70 80317A70 ACEF0004 */ sw $t7, 4($a3)
-.L80317A74:
-/* 0D2A74 80317A74 24630004 */ addiu $v1, $v1, 4
-.L80317A78:
-/* 0D2A78 80317A78 5543FFB4 */ bnel $t2, $v1, .L8031794C
-/* 0D2A7C 80317A7C 8C660000 */ lw $a2, ($v1)
-.L80317A80:
-/* 0D2A80 80317A80 03E00008 */ jr $ra
-/* 0D2A84 80317A84 25BD0010 */ addiu $sp, $t5, 0x10
diff --git a/asm/non_matchings/patch_audio_bank.s b/asm/non_matchings/patch_audio_bank.s
@@ -0,0 +1,156 @@
+glabel patch_audio_bank
+/* 0D284C 8031784C 27ADFFF0 */ addiu $t5, $sp, -0x10
+/* 0D2850 80317850 ADA60018 */ sw $a2, 0x18($t5)
+/* 0D2854 80317854 8C820000 */ lw $v0, ($a0)
+/* 0D2858 80317858 01A0E825 */ move $sp, $t5
+/* 0D285C 8031785C 50400030 */ beql $v0, $zero, .L80317920
+/* 0D2860 80317860 8DB80018 */ lw $t8, 0x18($t5)
+/* 0D2864 80317864 10E0002D */ beqz $a3, .L8031791C
+/* 0D2868 80317868 00447021 */ addu $t6, $v0, $a0
+/* 0D286C 8031786C 10E0002B */ beqz $a3, .L8031791C
+/* 0D2870 80317870 AC8E0000 */ sw $t6, ($a0)
+/* 0D2874 80317874 10E00029 */ beqz $a3, .L8031791C
+/* 0D2878 80317878 00001825 */ move $v1, $zero
+/* 0D287C 8031787C 00004025 */ move $t0, $zero
+/* 0D2880 80317880 24020001 */ li $v0, 1
+.L80317884:
+/* 0D2884 80317884 8C8F0000 */ lw $t7, ($a0)
+/* 0D2888 80317888 24630001 */ addiu $v1, $v1, 1
+/* 0D288C 8031788C 01E84821 */ addu $t1, $t7, $t0
+/* 0D2890 80317890 8D260000 */ lw $a2, ($t1)
+/* 0D2894 80317894 10C0001F */ beqz $a2, .L80317914
+/* 0D2898 80317898 00C43021 */ addu $a2, $a2, $a0
+/* 0D289C 8031789C AD260000 */ sw $a2, ($t1)
+/* 0D28A0 803178A0 90D80002 */ lbu $t8, 2($a2)
+/* 0D28A4 803178A4 00C05025 */ move $t2, $a2
+/* 0D28A8 803178A8 1700001A */ bnez $t8, .L80317914
+/* 0D28AC 803178AC 00000000 */ nop
+/* 0D28B0 803178B0 8CD90004 */ lw $t9, 4($a2)
+/* 0D28B4 803178B4 24C90004 */ addiu $t1, $a2, 4
+/* 0D28B8 803178B8 53200013 */ beql $t9, $zero, .L80317908
+/* 0D28BC 803178BC 8CC6000C */ lw $a2, 0xc($a2)
+/* 0D28C0 803178C0 8D2E0000 */ lw $t6, ($t1)
+/* 0D28C4 803178C4 01C45821 */ addu $t3, $t6, $a0
+/* 0D28C8 803178C8 AD2B0000 */ sw $t3, ($t1)
+/* 0D28CC 803178CC 916F0001 */ lbu $t7, 1($t3)
+/* 0D28D0 803178D0 01606025 */ move $t4, $t3
+/* 0D28D4 803178D4 55E0000C */ bnezl $t7, .L80317908
+/* 0D28D8 803178D8 8CC6000C */ lw $a2, 0xc($a2)
+/* 0D28DC 803178DC 8D780004 */ lw $t8, 4($t3)
+/* 0D28E0 803178E0 8D990008 */ lw $t9, 8($t4)
+/* 0D28E4 803178E4 8D8E000C */ lw $t6, 0xc($t4)
+/* 0D28E8 803178E8 03055821 */ addu $t3, $t8, $a1
+/* 0D28EC 803178EC AD8B0004 */ sw $t3, 4($t4)
+/* 0D28F0 803178F0 03245821 */ addu $t3, $t9, $a0
+/* 0D28F4 803178F4 AD8B0008 */ sw $t3, 8($t4)
+/* 0D28F8 803178F8 01C45821 */ addu $t3, $t6, $a0
+/* 0D28FC 803178FC AD8B000C */ sw $t3, 0xc($t4)
+/* 0D2900 80317900 A1820001 */ sb $v0, 1($t4)
+/* 0D2904 80317904 8CC6000C */ lw $a2, 0xc($a2)
+.L80317908:
+/* 0D2908 80317908 A1420002 */ sb $v0, 2($t2)
+/* 0D290C 8031790C 00867821 */ addu $t7, $a0, $a2
+/* 0D2910 80317910 AD4F000C */ sw $t7, 0xc($t2)
+.L80317914:
+/* 0D2914 80317914 1467FFDB */ bne $v1, $a3, .L80317884
+/* 0D2918 80317918 25080004 */ addiu $t0, $t0, 4
+.L8031791C:
+/* 0D291C 8031791C 8DB80018 */ lw $t8, 0x18($t5)
+.L80317920:
+/* 0D2920 80317920 24020001 */ li $v0, 1
+/* 0D2924 80317924 2F190001 */ sltiu $t9, $t8, 1
+/* 0D2928 80317928 3B390001 */ xori $t9, $t9, 1
+/* 0D292C 8031792C 13200054 */ beqz $t9, .L80317A80
+/* 0D2930 80317930 00000000 */ nop
+/* 0D2934 80317934 13200052 */ beqz $t9, .L80317A80
+/* 0D2938 80317938 24830004 */ addiu $v1, $a0, 4
+/* 0D293C 8031793C 00187080 */ sll $t6, $t8, 2
+/* 0D2940 80317940 01C45021 */ addu $t2, $t6, $a0
+/* 0D2944 80317944 254A0004 */ addiu $t2, $t2, 4
+/* 0D2948 80317948 8C660000 */ lw $a2, ($v1)
+.L8031794C:
+/* 0D294C 8031794C 10C00049 */ beqz $a2, .L80317A74
+/* 0D2950 80317950 00C47821 */ addu $t7, $a2, $a0
+/* 0D2954 80317954 AC6F0000 */ sw $t7, ($v1)
+/* 0D2958 80317958 91F90000 */ lbu $t9, ($t7)
+/* 0D295C 8031795C 01E03825 */ move $a3, $t7
+/* 0D2960 80317960 57200045 */ bnezl $t9, .L80317A78
+/* 0D2964 80317964 24630004 */ addiu $v1, $v1, 4
+/* 0D2968 80317968 8DF80008 */ lw $t8, 8($t7)
+/* 0D296C 8031796C 25E60008 */ addiu $a2, $t7, 8
+/* 0D2970 80317970 53000013 */ beql $t8, $zero, .L803179C0
+/* 0D2974 80317974 8CEF0010 */ lw $t7, 0x10($a3)
+/* 0D2978 80317978 8CCE0000 */ lw $t6, ($a2)
+/* 0D297C 8031797C 01C44021 */ addu $t0, $t6, $a0
+/* 0D2980 80317980 ACC80000 */ sw $t0, ($a2)
+/* 0D2984 80317984 910F0001 */ lbu $t7, 1($t0)
+/* 0D2988 80317988 01004825 */ move $t1, $t0
+/* 0D298C 8031798C 55E0000C */ bnezl $t7, .L803179C0
+/* 0D2990 80317990 8CEF0010 */ lw $t7, 0x10($a3)
+/* 0D2994 80317994 8D190004 */ lw $t9, 4($t0)
+/* 0D2998 80317998 8D380008 */ lw $t8, 8($t1)
+/* 0D299C 8031799C 8D2E000C */ lw $t6, 0xc($t1)
+/* 0D29A0 803179A0 03254021 */ addu $t0, $t9, $a1
+/* 0D29A4 803179A4 AD280004 */ sw $t0, 4($t1)
+/* 0D29A8 803179A8 03044021 */ addu $t0, $t8, $a0
+/* 0D29AC 803179AC AD280008 */ sw $t0, 8($t1)
+/* 0D29B0 803179B0 01C44021 */ addu $t0, $t6, $a0
+/* 0D29B4 803179B4 AD28000C */ sw $t0, 0xc($t1)
+/* 0D29B8 803179B8 A1220001 */ sb $v0, 1($t1)
+/* 0D29BC 803179BC 8CEF0010 */ lw $t7, 0x10($a3)
+.L803179C0:
+/* 0D29C0 803179C0 24E60010 */ addiu $a2, $a3, 0x10
+/* 0D29C4 803179C4 51E00013 */ beql $t7, $zero, .L80317A14
+/* 0D29C8 803179C8 8CF80018 */ lw $t8, 0x18($a3)
+/* 0D29CC 803179CC 8CD90000 */ lw $t9, ($a2)
+/* 0D29D0 803179D0 03244021 */ addu $t0, $t9, $a0
+/* 0D29D4 803179D4 ACC80000 */ sw $t0, ($a2)
+/* 0D29D8 803179D8 91180001 */ lbu $t8, 1($t0)
+/* 0D29DC 803179DC 01004825 */ move $t1, $t0
+/* 0D29E0 803179E0 5700000C */ bnezl $t8, .L80317A14
+/* 0D29E4 803179E4 8CF80018 */ lw $t8, 0x18($a3)
+/* 0D29E8 803179E8 8D0E0004 */ lw $t6, 4($t0)
+/* 0D29EC 803179EC 8D2F0008 */ lw $t7, 8($t1)
+/* 0D29F0 803179F0 8D39000C */ lw $t9, 0xc($t1)
+/* 0D29F4 803179F4 01C54021 */ addu $t0, $t6, $a1
+/* 0D29F8 803179F8 AD280004 */ sw $t0, 4($t1)
+/* 0D29FC 803179FC 01E44021 */ addu $t0, $t7, $a0
+/* 0D2A00 80317A00 AD280008 */ sw $t0, 8($t1)
+/* 0D2A04 80317A04 03244021 */ addu $t0, $t9, $a0
+/* 0D2A08 80317A08 AD28000C */ sw $t0, 0xc($t1)
+/* 0D2A0C 80317A0C A1220001 */ sb $v0, 1($t1)
+/* 0D2A10 80317A10 8CF80018 */ lw $t8, 0x18($a3)
+.L80317A14:
+/* 0D2A14 80317A14 24E60018 */ addiu $a2, $a3, 0x18
+/* 0D2A18 80317A18 53000013 */ beql $t8, $zero, .L80317A68
+/* 0D2A1C 80317A1C 8CE60004 */ lw $a2, 4($a3)
+/* 0D2A20 80317A20 8CCE0000 */ lw $t6, ($a2)
+/* 0D2A24 80317A24 01C44021 */ addu $t0, $t6, $a0
+/* 0D2A28 80317A28 ACC80000 */ sw $t0, ($a2)
+/* 0D2A2C 80317A2C 910F0001 */ lbu $t7, 1($t0)
+/* 0D2A30 80317A30 01004825 */ move $t1, $t0
+/* 0D2A34 80317A34 55E0000C */ bnezl $t7, .L80317A68
+/* 0D2A38 80317A38 8CE60004 */ lw $a2, 4($a3)
+/* 0D2A3C 80317A3C 8D190004 */ lw $t9, 4($t0)
+/* 0D2A40 80317A40 8D380008 */ lw $t8, 8($t1)
+/* 0D2A44 80317A44 8D2E000C */ lw $t6, 0xc($t1)
+/* 0D2A48 80317A48 03254021 */ addu $t0, $t9, $a1
+/* 0D2A4C 80317A4C AD280004 */ sw $t0, 4($t1)
+/* 0D2A50 80317A50 03044021 */ addu $t0, $t8, $a0
+/* 0D2A54 80317A54 AD280008 */ sw $t0, 8($t1)
+/* 0D2A58 80317A58 01C44021 */ addu $t0, $t6, $a0
+/* 0D2A5C 80317A5C AD28000C */ sw $t0, 0xc($t1)
+/* 0D2A60 80317A60 A1220001 */ sb $v0, 1($t1)
+/* 0D2A64 80317A64 8CE60004 */ lw $a2, 4($a3)
+.L80317A68:
+/* 0D2A68 80317A68 A0E20000 */ sb $v0, ($a3)
+/* 0D2A6C 80317A6C 00867821 */ addu $t7, $a0, $a2
+/* 0D2A70 80317A70 ACEF0004 */ sw $t7, 4($a3)
+.L80317A74:
+/* 0D2A74 80317A74 24630004 */ addiu $v1, $v1, 4
+.L80317A78:
+/* 0D2A78 80317A78 5543FFB4 */ bnel $t2, $v1, .L8031794C
+/* 0D2A7C 80317A7C 8C660000 */ lw $a2, ($v1)
+.L80317A80:
+/* 0D2A80 80317A80 03E00008 */ jr $ra
+/* 0D2A84 80317A84 25BD0010 */ addiu $sp, $t5, 0x10
diff --git a/asm/non_matchings/process_level_music_dynamics.s b/asm/non_matchings/process_level_music_dynamics.s
@@ -30,8 +30,8 @@ glabel process_level_music_dynamics # US: 803208EC
/* 0DAA8C 8031FA8C 10000005 */ b .L8031FAA4
/* 0DAA90 8031FA90 A06E0000 */ sb $t6, ($v1)
.L8031FA94:
-/* 0DAA94 8031FA94 3C0F8033 */ lui $t7, %hi(gPlayer0CurSeqId) # $t7, 0x8033
-/* 0DAA98 8031FA98 91EF209C */ lbu $t7, %lo(gPlayer0CurSeqId)($t7)
+/* 0DAA94 8031FA94 3C0F8033 */ lui $t7, %hi(sPlayer0CurSeqId) # $t7, 0x8033
+/* 0DAA98 8031FA98 91EF209C */ lbu $t7, %lo(sPlayer0CurSeqId)($t7)
/* 0DAA9C 8031FA9C 3C018033 */ lui $at, %hi(sBackgroundMusicForDynamics) # $at, 0x8033
/* 0DAAA0 8031FAA0 A02F1EB0 */ sb $t7, %lo(sBackgroundMusicForDynamics)($at)
.L8031FAA4:
diff --git a/asm/non_matchings/process_notes_jp.s b/asm/non_matchings/process_notes_jp.s
@@ -1,738 +0,0 @@
-.late_rodata
-glabel D_80337BB0
- .word 0x3FFFFFD6, 0x0E94EE39
-glabel D_80337BB8
- .word 0x3FFFFEB0, 0
-glabel D_80337BC0
- .word 0x400FFFDB, 0x4CC25072
-glabel D_80337BC8
- .word 0x407FFEDA, 0
-
-.text
-glabel process_notes
-/* 0CF480 80314480 27BDFE88 */ addiu $sp, $sp, -0x178
-/* 0CF484 80314484 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
-/* 0CF488 80314488 8DCE6D70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
-/* 0CF48C 8031448C AFB40030 */ sw $s4, 0x30($sp)
-/* 0CF490 80314490 00C0A025 */ move $s4, $a2
-/* 0CF494 80314494 AFBF0044 */ sw $ra, 0x44($sp)
-/* 0CF498 80314498 AFBE0040 */ sw $fp, 0x40($sp)
-/* 0CF49C 8031449C AFB7003C */ sw $s7, 0x3c($sp)
-/* 0CF4A0 803144A0 AFB60038 */ sw $s6, 0x38($sp)
-/* 0CF4A4 803144A4 AFB50034 */ sw $s5, 0x34($sp)
-/* 0CF4A8 803144A8 AFB3002C */ sw $s3, 0x2c($sp)
-/* 0CF4AC 803144AC AFB20028 */ sw $s2, 0x28($sp)
-/* 0CF4B0 803144B0 AFB10024 */ sw $s1, 0x24($sp)
-/* 0CF4B4 803144B4 AFB00020 */ sw $s0, 0x20($sp)
-/* 0CF4B8 803144B8 AFA40178 */ sw $a0, 0x178($sp)
-/* 0CF4BC 803144BC AFA5017C */ sw $a1, 0x17c($sp)
-/* 0CF4C0 803144C0 AFA00174 */ sw $zero, 0x174($sp)
-/* 0CF4C4 803144C4 19C00267 */ blez $t6, .L80314E64
-/* 0CF4C8 803144C8 AFA0015C */ sw $zero, 0x15c($sp)
-/* 0CF4CC 803144CC AFA0006C */ sw $zero, 0x6c($sp)
-/* 0CF4D0 803144D0 3C1F8000 */ lui $ra, 0x8000
-.L803144D4:
-/* 0CF4D4 803144D4 3C188022 */ lui $t8, %hi(gNotes) # $t8, 0x8022
-/* 0CF4D8 803144D8 8F182A10 */ lw $t8, %lo(gNotes)($t8)
-/* 0CF4DC 803144DC 8FAF006C */ lw $t7, 0x6c($sp)
-/* 0CF4E0 803144E0 3C198022 */ lui $t9, %hi(gBankLoadStatus)
-/* 0CF4E4 803144E4 3C010100 */ lui $at, 0x100
-/* 0CF4E8 803144E8 01F8B821 */ addu $s7, $t7, $t8
-/* 0CF4EC 803144EC 92E20007 */ lbu $v0, 7($s7)
-/* 0CF4F0 803144F0 8FB80174 */ lw $t8, 0x174($sp)
-/* 0CF4F4 803144F4 0322C821 */ addu $t9, $t9, $v0
-/* 0CF4F8 803144F8 933918D0 */ lbu $t9, %lo(gBankLoadStatus)($t9)
-/* 0CF4FC 803144FC 2B2E0002 */ slti $t6, $t9, 2
-/* 0CF500 80314500 11C00006 */ beqz $t6, .L8031451C
-/* 0CF504 80314504 00027A00 */ sll $t7, $v0, 8
-/* 0CF508 80314508 01F8C821 */ addu $t9, $t7, $t8
-/* 0CF50C 8031450C 03217021 */ addu $t6, $t9, $at
-/* 0CF510 80314510 3C018033 */ lui $at, %hi(gAudioErrorFlags)
-/* 0CF514 80314514 10000249 */ b .L80314E3C
-/* 0CF518 80314518 AC2E1D40 */ sw $t6, %lo(gAudioErrorFlags)($at)
-.L8031451C:
-/* 0CF51C 8031451C 8EEF0000 */ lw $t7, ($s7)
-/* 0CF520 80314520 000FC7C2 */ srl $t8, $t7, 0x1f
-/* 0CF524 80314524 53000246 */ beql $t8, $zero, .L80314E40
-/* 0CF528 80314528 8FAE0174 */ lw $t6, 0x174($sp)
-/* 0CF52C 8031452C 8FB9017C */ lw $t9, 0x17c($sp)
-/* 0CF530 80314530 AFA00148 */ sw $zero, 0x148($sp)
-/* 0CF534 80314534 24010001 */ li $at, 1
-/* 0CF538 80314538 00197040 */ sll $t6, $t9, 1
-/* 0CF53C 8031453C AFAE0048 */ sw $t6, 0x48($sp)
-/* 0CF540 80314540 8EEF0000 */ lw $t7, ($s7)
-/* 0CF544 80314544 44802000 */ mtc1 $zero, $f4
-/* 0CF548 80314548 240E0001 */ li $t6, 1
-/* 0CF54C 8031454C 000FC040 */ sll $t8, $t7, 1
-/* 0CF550 80314550 0018CFC2 */ srl $t9, $t8, 0x1f
-/* 0CF554 80314554 17210004 */ bne $t9, $at, .L80314568
-/* 0CF558 80314558 02802025 */ move $a0, $s4
-/* 0CF55C 8031455C AFAE0148 */ sw $t6, 0x148($sp)
-/* 0CF560 80314560 AEE00014 */ sw $zero, 0x14($s7)
-/* 0CF564 80314564 A6E00020 */ sh $zero, 0x20($s7)
-.L80314568:
-/* 0CF568 80314568 C6E20038 */ lwc1 $f2, 0x38($s7)
-/* 0CF56C 8031456C 3C014000 */ li $at, 0x40000000 # 2.000000
-/* 0CF570 80314570 44812800 */ mtc1 $at, $f5
-/* 0CF574 80314574 46001021 */ cvt.d.s $f0, $f2
-/* 0CF578 80314578 3C018033 */ lui $at, %hi(D_80337BC0)
-/* 0CF57C 8031457C 4624003C */ c.lt.d $f0, $f4
-/* 0CF580 80314580 02E02825 */ move $a1, $s7
-/* 0CF584 80314584 4500000E */ bc1f .L803145C0
-/* 0CF588 80314588 00000000 */ nop
-/* 0CF58C 8031458C 3C018033 */ lui $at, %hi(D_80337BB0)
-/* 0CF590 80314590 D4267BB0 */ ldc1 $f6, %lo(D_80337BB0)($at)
-/* 0CF594 80314594 240F0001 */ li $t7, 1
-/* 0CF598 80314598 AFAF00E8 */ sw $t7, 0xe8($sp)
-/* 0CF59C 8031459C 4620303C */ c.lt.d $f6, $f0
-/* 0CF5A0 803145A0 3C018033 */ lui $at, %hi(D_80337BB8)
-/* 0CF5A4 803145A4 45000004 */ bc1f .L803145B8
-/* 0CF5A8 803145A8 00000000 */ nop
-/* 0CF5AC 803145AC C4287BB8 */ lwc1 $f8, %lo(D_80337BB8)($at)
-/* 0CF5B0 803145B0 E6E80038 */ swc1 $f8, 0x38($s7)
-/* 0CF5B4 803145B4 C6E20038 */ lwc1 $f2, 0x38($s7)
-.L803145B8:
-/* 0CF5B8 803145B8 10000012 */ b .L80314604
-/* 0CF5BC 803145BC 46001306 */ mov.s $f12, $f2
-.L803145C0:
-/* 0CF5C0 803145C0 D42A7BC0 */ ldc1 $f10, %lo(D_80337BC0)($at)
-/* 0CF5C4 803145C4 24180002 */ li $t8, 2
-/* 0CF5C8 803145C8 44802000 */ mtc1 $zero, $f4
-/* 0CF5CC 803145CC 4620503E */ c.le.d $f10, $f0
-/* 0CF5D0 803145D0 AFB800E8 */ sw $t8, 0xe8($sp)
-/* 0CF5D4 803145D4 3C018033 */ lui $at, %hi(D_80337BC8)
-/* 0CF5D8 803145D8 45020006 */ bc1fl .L803145F4
-/* 0CF5DC 803145DC 3C013FE0 */ lui $at, 0x3fe0
-/* 0CF5E0 803145E0 C4307BC8 */ lwc1 $f16, %lo(D_80337BC8)($at)
-/* 0CF5E4 803145E4 E6F00038 */ swc1 $f16, 0x38($s7)
-/* 0CF5E8 803145E8 C6F20038 */ lwc1 $f18, 0x38($s7)
-/* 0CF5EC 803145EC 46009021 */ cvt.d.s $f0, $f18
-/* 0CF5F0 803145F0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
-.L803145F4:
-/* 0CF5F4 803145F4 44812800 */ mtc1 $at, $f5
-/* 0CF5F8 803145F8 00000000 */ nop
-/* 0CF5FC 803145FC 46240182 */ mul.d $f6, $f0, $f4
-/* 0CF600 80314600 46203320 */ cvt.s.d $f12, $f6
-.L80314604:
-/* 0CF604 80314604 3C014700 */ li $at, 0x47000000 # 32768.000000
-/* 0CF608 80314608 44814000 */ mtc1 $at, $f8
-/* 0CF60C 8031460C 8FB8017C */ lw $t8, 0x17c($sp)
-/* 0CF610 80314610 46086282 */ mul.s $f10, $f12, $f8
-/* 0CF614 80314614 4600540D */ trunc.w.s $f16, $f10
-/* 0CF618 80314618 440E8000 */ mfc1 $t6, $f16
-/* 0CF61C 8031461C 00000000 */ nop
-/* 0CF620 80314620 31CFFFFF */ andi $t7, $t6, 0xffff
-/* 0CF624 80314624 01F80019 */ multu $t7, $t8
-/* 0CF628 80314628 AFAF005C */ sw $t7, 0x5c($sp)
-/* 0CF62C 8031462C 96EF0020 */ lhu $t7, 0x20($s7)
-/* 0CF630 80314630 8EE20024 */ lw $v0, 0x24($s7)
-/* 0CF634 80314634 0000C812 */ mflo $t9
-/* 0CF638 80314638 00197040 */ sll $t6, $t9, 1
-/* 0CF63C 8031463C 01EE1821 */ addu $v1, $t7, $t6
-/* 0CF640 80314640 1440000E */ bnez $v0, .L8031467C
-/* 0CF644 80314644 A6E30020 */ sh $v1, 0x20($s7)
-/* 0CF648 80314648 00038402 */ srl $s0, $v1, 0x10
-/* 0CF64C 8031464C 02003025 */ move $a2, $s0
-/* 0CF650 80314650 0C0C53C2 */ jal load_wave_samples
-/* 0CF654 80314654 AFA00148 */ sw $zero, 0x148($sp)
-/* 0CF658 80314658 8EE90014 */ lw $t1, 0x14($s7)
-/* 0CF65C 8031465C 0040A025 */ move $s4, $v0
-/* 0CF660 80314660 0009C840 */ sll $t9, $t1, 1
-/* 0CF664 80314664 272F0180 */ addiu $t7, $t9, 0x180
-/* 0CF668 80314668 A7AF00D6 */ sh $t7, 0xd6($sp)
-/* 0CF66C 8031466C 01307021 */ addu $t6, $t1, $s0
-/* 0CF670 80314670 AEEE0014 */ sw $t6, 0x14($s7)
-/* 0CF674 80314674 100001B9 */ b .L80314D5C
-/* 0CF678 80314678 8EE50000 */ lw $a1, ($s7)
-.L8031467C:
-/* 0CF67C 8031467C 8C460000 */ lw $a2, ($v0)
-/* 0CF680 80314680 00031402 */ srl $v0, $v1, 0x10
-/* 0CF684 80314684 8CD80008 */ lw $t8, 8($a2)
-/* 0CF688 80314688 AFB80160 */ sw $t8, 0x160($sp)
-/* 0CF68C 8031468C 8F0F0004 */ lw $t7, 4($t8)
-/* 0CF690 80314690 8FB800E8 */ lw $t8, 0xe8($sp)
-/* 0CF694 80314694 AFAF0110 */ sw $t7, 0x110($sp)
-/* 0CF698 80314698 8CCE0004 */ lw $t6, 4($a2)
-/* 0CF69C 8031469C AFA000D8 */ sw $zero, 0xd8($sp)
-/* 0CF6A0 803146A0 AFA000E4 */ sw $zero, 0xe4($sp)
-/* 0CF6A4 803146A4 1B0001AB */ blez $t8, .L80314D54
-/* 0CF6A8 803146A8 AFAE0120 */ sw $t6, 0x120($sp)
-/* 0CF6AC 803146AC 3B190001 */ xori $t9, $t8, 1
-/* 0CF6B0 803146B0 2F390001 */ sltiu $t9, $t9, 1
-/* 0CF6B4 803146B4 AFB90054 */ sw $t9, 0x54($sp)
-/* 0CF6B8 803146B8 AFA20058 */ sw $v0, 0x58($sp)
-/* 0CF6BC 803146BC AFA60164 */ sw $a2, 0x164($sp)
-/* 0CF6C0 803146C0 8FA60164 */ lw $a2, 0x164($sp)
-.L803146C4:
-/* 0CF6C4 803146C4 8FAF0054 */ lw $t7, 0x54($sp)
-/* 0CF6C8 803146C8 8FA20058 */ lw $v0, 0x58($sp)
-/* 0CF6CC 803146CC 8CC4000C */ lw $a0, 0xc($a2)
-/* 0CF6D0 803146D0 0000F025 */ move $fp, $zero
-/* 0CF6D4 803146D4 0000A825 */ move $s5, $zero
-/* 0CF6D8 803146D8 11E00003 */ beqz $t7, .L803146E8
-/* 0CF6DC 803146DC 24850008 */ addiu $a1, $a0, 8
-/* 0CF6E0 803146E0 1000000B */ b .L80314710
-/* 0CF6E4 803146E4 00406825 */ move $t5, $v0
-.L803146E8:
-/* 0CF6E8 803146E8 304E0001 */ andi $t6, $v0, 1
-/* 0CF6EC 803146EC 11C00007 */ beqz $t6, .L8031470C
-/* 0CF6F0 803146F0 AFA60164 */ sw $a2, 0x164($sp)
-/* 0CF6F4 803146F4 8FB900E4 */ lw $t9, 0xe4($sp)
-/* 0CF6F8 803146F8 2401FFFE */ li $at, -2
-/* 0CF6FC 803146FC 0041C024 */ and $t8, $v0, $at
-/* 0CF700 80314700 00197840 */ sll $t7, $t9, 1
-/* 0CF704 80314704 10000002 */ b .L80314710
-/* 0CF708 80314708 030F6821 */ addu $t5, $t8, $t7
-.L8031470C:
-/* 0CF70C 8031470C 00406825 */ move $t5, $v0
-.L80314710:
-/* 0CF710 80314710 8FAE015C */ lw $t6, 0x15c($sp)
-/* 0CF714 80314714 AFA20058 */ sw $v0, 0x58($sp)
-/* 0CF718 80314718 11C50012 */ beq $t6, $a1, .L80314764
-/* 0CF71C 8031471C 00000000 */ nop
-/* 0CF720 80314720 AFA5015C */ sw $a1, 0x15c($sp)
-/* 0CF724 80314724 8C980000 */ lw $t8, ($a0)
-/* 0CF728 80314728 8C990004 */ lw $t9, 4($a0)
-/* 0CF72C 8031472C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0CF730 80314730 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0CF734 80314734 03380019 */ multu $t9, $t8
-/* 0CF738 80314738 02801025 */ move $v0, $s4
-/* 0CF73C 8031473C 26940008 */ addiu $s4, $s4, 8
-/* 0CF740 80314740 00001812 */ mflo $v1
-/* 0CF744 80314744 00037900 */ sll $t7, $v1, 4
-/* 0CF748 80314748 01E17024 */ and $t6, $t7, $at
-/* 0CF74C 8031474C 3C010B00 */ lui $at, 0xb00
-/* 0CF750 80314750 01C1C825 */ or $t9, $t6, $at
-/* 0CF754 80314754 AC590000 */ sw $t9, ($v0)
-/* 0CF758 80314758 8FB8015C */ lw $t8, 0x15c($sp)
-/* 0CF75C 8031475C 031F7821 */ addu $t7, $t8, $ra
-/* 0CF760 80314760 AC4F0004 */ sw $t7, 4($v0)
-.L80314764:
-/* 0CF764 80314764 11A00101 */ beqz $t5, .L80314B6C
-/* 0CF768 80314768 8FA20058 */ lw $v0, 0x58($sp)
-/* 0CF76C 8031476C AFA20058 */ sw $v0, 0x58($sp)
-/* 0CF770 80314770 8EE90014 */ lw $t1, 0x14($s7)
-.L80314774:
-/* 0CF774 80314774 8FAE0110 */ lw $t6, 0x110($sp)
-/* 0CF778 80314778 01BE2023 */ subu $a0, $t5, $fp
-/* 0CF77C 8031477C 3132000F */ andi $s2, $t1, 0xf
-/* 0CF780 80314780 00005025 */ move $t2, $zero
-/* 0CF784 80314784 00005825 */ move $t3, $zero
-/* 0CF788 80314788 00806025 */ move $t4, $a0
-/* 0CF78C 8031478C 16400006 */ bnez $s2, .L803147A8
-/* 0CF790 80314790 01C91823 */ subu $v1, $t6, $t1
-/* 0CF794 80314794 8EF90000 */ lw $t9, ($s7)
-/* 0CF798 80314798 00197880 */ sll $t7, $t9, 2
-/* 0CF79C 8031479C 05E20003 */ bltzl $t7, .L803147AC
-/* 0CF7A0 803147A0 240E0010 */ li $t6, 16
-/* 0CF7A4 803147A4 24120010 */ li $s2, 16
-.L803147A8:
-/* 0CF7A8 803147A8 240E0010 */ li $t6, 16
-.L803147AC:
-/* 0CF7AC 803147AC 01D22823 */ subu $a1, $t6, $s2
-/* 0CF7B0 803147B0 0083082A */ slt $at, $a0, $v1
-/* 0CF7B4 803147B4 1020000C */ beqz $at, .L803147E8
-/* 0CF7B8 803147B8 00A0B025 */ move $s6, $a1
-/* 0CF7BC 803147BC 00851023 */ subu $v0, $a0, $a1
-/* 0CF7C0 803147C0 2442000F */ addiu $v0, $v0, 0xf
-/* 0CF7C4 803147C4 04410003 */ bgez $v0, .L803147D4
-/* 0CF7C8 803147C8 0002C903 */ sra $t9, $v0, 4
-/* 0CF7CC 803147CC 2441000F */ addiu $at, $v0, 0xf
-/* 0CF7D0 803147D0 0001C903 */ sra $t9, $at, 4
-.L803147D4:
-/* 0CF7D4 803147D4 00198100 */ sll $s0, $t9, 4
-/* 0CF7D8 803147D8 00B0C021 */ addu $t8, $a1, $s0
-/* 0CF7DC 803147DC 03204025 */ move $t0, $t9
-/* 0CF7E0 803147E0 10000014 */ b .L80314834
-/* 0CF7E4 803147E4 03049823 */ subu $s3, $t8, $a0
-.L803147E8:
-/* 0CF7E8 803147E8 00721021 */ addu $v0, $v1, $s2
-/* 0CF7EC 803147EC 2450FFF0 */ addiu $s0, $v0, -0x10
-/* 0CF7F0 803147F0 1E000003 */ bgtz $s0, .L80314800
-/* 0CF7F4 803147F4 00009825 */ move $s3, $zero
-/* 0CF7F8 803147F8 00008025 */ move $s0, $zero
-/* 0CF7FC 803147FC 0060B025 */ move $s6, $v1
-.L80314800:
-/* 0CF800 80314800 8FAE0160 */ lw $t6, 0x160($sp)
-/* 0CF804 80314804 2608000F */ addiu $t0, $s0, 0xf
-/* 0CF808 80314808 05010003 */ bgez $t0, .L80314818
-/* 0CF80C 8031480C 00087903 */ sra $t7, $t0, 4
-/* 0CF810 80314810 2501000F */ addiu $at, $t0, 0xf
-/* 0CF814 80314814 00017903 */ sra $t7, $at, 4
-.L80314818:
-/* 0CF818 80314818 8DD90008 */ lw $t9, 8($t6)
-/* 0CF81C 8031481C 01E04025 */ move $t0, $t7
-/* 0CF820 80314820 53200004 */ beql $t9, $zero, .L80314834
-/* 0CF824 80314824 240A0001 */ li $t2, 1
-/* 0CF828 80314828 10000002 */ b .L80314834
-/* 0CF82C 8031482C 240B0001 */ li $t3, 1
-/* 0CF830 80314830 240A0001 */ li $t2, 1
-.L80314834:
-/* 0CF834 80314834 11000030 */ beqz $t0, .L803148F8
-/* 0CF838 80314838 24030009 */ li $v1, 9
-/* 0CF83C 8031483C 01321023 */ subu $v0, $t1, $s2
-/* 0CF840 80314840 24420010 */ addiu $v0, $v0, 0x10
-/* 0CF844 80314844 04410003 */ bgez $v0, .L80314854
-/* 0CF848 80314848 0002C103 */ sra $t8, $v0, 4
-/* 0CF84C 8031484C 2441000F */ addiu $at, $v0, 0xf
-/* 0CF850 80314850 0001C103 */ sra $t8, $at, 4
-.L80314854:
-/* 0CF854 80314854 03030019 */ multu $t8, $v1
-/* 0CF858 80314858 8FAE0120 */ lw $t6, 0x120($sp)
-/* 0CF85C 8031485C 8FA60148 */ lw $a2, 0x148($sp)
-/* 0CF860 80314860 26E70003 */ addiu $a3, $s7, 3
-/* 0CF864 80314864 AFAA0150 */ sw $t2, 0x150($sp)
-/* 0CF868 80314868 AFAB014C */ sw $t3, 0x14c($sp)
-/* 0CF86C 8031486C AFAC010C */ sw $t4, 0x10c($sp)
-/* 0CF870 80314870 AFAD0118 */ sw $t5, 0x118($sp)
-/* 0CF874 80314874 00007812 */ mflo $t7
-/* 0CF878 80314878 01EE2021 */ addu $a0, $t7, $t6
-/* 0CF87C 8031487C 00000000 */ nop
-/* 0CF880 80314880 01030019 */ multu $t0, $v1
-/* 0CF884 80314884 00008812 */ mflo $s1
-/* 0CF888 80314888 02202825 */ move $a1, $s1
-/* 0CF88C 8031488C 0C0C5C9C */ jal dma_sample_data
-/* 0CF890 80314890 00000000 */ nop
-/* 0CF894 80314894 3047000F */ andi $a3, $v0, 0xf
-/* 0CF898 80314898 02802025 */ move $a0, $s4
-/* 0CF89C 8031489C 3C190800 */ lui $t9, (0x080003F0 >> 16) # lui $t9, 0x800
-/* 0CF8A0 803148A0 8FAA0150 */ lw $t2, 0x150($sp)
-/* 0CF8A4 803148A4 8FAB014C */ lw $t3, 0x14c($sp)
-/* 0CF8A8 803148A8 8FAC010C */ lw $t4, 0x10c($sp)
-/* 0CF8AC 803148AC 8FAD0118 */ lw $t5, 0x118($sp)
-/* 0CF8B0 803148B0 373903F0 */ ori $t9, (0x080003F0 & 0xFFFF) # ori $t9, $t9, 0x3f0
-/* 0CF8B4 803148B4 0227C021 */ addu $t8, $s1, $a3
-/* 0CF8B8 803148B8 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0CF8BC 803148BC AC990000 */ sw $t9, ($a0)
-/* 0CF8C0 803148C0 26940008 */ addiu $s4, $s4, 8
-/* 0CF8C4 803148C4 3C1F8000 */ lui $ra, 0x8000
-/* 0CF8C8 803148C8 AC8F0004 */ sw $t7, 4($a0)
-/* 0CF8CC 803148CC 02802825 */ move $a1, $s4
-/* 0CF8D0 803148D0 0047C823 */ subu $t9, $v0, $a3
-/* 0CF8D4 803148D4 033FC021 */ addu $t8, $t9, $ra
-/* 0CF8D8 803148D8 3C0E0400 */ lui $t6, 0x400
-/* 0CF8DC 803148DC ACAE0000 */ sw $t6, ($a1)
-/* 0CF8E0 803148E0 ACB80004 */ sw $t8, 4($a1)
-/* 0CF8E4 803148E4 8EE60000 */ lw $a2, ($s7)
-/* 0CF8E8 803148E8 26940008 */ addiu $s4, $s4, 8
-/* 0CF8EC 803148EC 00067880 */ sll $t7, $a2, 2
-/* 0CF8F0 803148F0 10000006 */ b .L8031490C
-/* 0CF8F4 803148F4 000F37C2 */ srl $a2, $t7, 0x1f
-.L803148F8:
-/* 0CF8F8 803148F8 8EE60000 */ lw $a2, ($s7)
-/* 0CF8FC 803148FC 00008025 */ move $s0, $zero
-/* 0CF900 80314900 00003825 */ move $a3, $zero
-/* 0CF904 80314904 0006C880 */ sll $t9, $a2, 2
-/* 0CF908 80314908 001937C2 */ srl $a2, $t9, 0x1f
-.L8031490C:
-/* 0CF90C 8031490C 10C0000F */ beqz $a2, .L8031494C
-/* 0CF910 80314910 02801025 */ move $v0, $s4
-/* 0CF914 80314914 3C0F0F00 */ lui $t7, 0xf00
-/* 0CF918 80314918 AC4F0000 */ sw $t7, ($v0)
-/* 0CF91C 8031491C 8FAE0164 */ lw $t6, 0x164($sp)
-/* 0CF920 80314920 3C018000 */ lui $at, (0x80000010 >> 16) # lui $at, 0x8000
-/* 0CF924 80314924 34210010 */ ori $at, (0x80000010 & 0xFFFF) # ori $at, $at, 0x10
-/* 0CF928 80314928 8DD90008 */ lw $t9, 8($t6)
-/* 0CF92C 8031492C 240F0002 */ li $t7, 2
-/* 0CF930 80314930 26940008 */ addiu $s4, $s4, 8
-/* 0CF934 80314934 0321C021 */ addu $t8, $t9, $at
-/* 0CF938 80314938 AC580004 */ sw $t8, 4($v0)
-/* 0CF93C 8031493C AFAF0148 */ sw $t7, 0x148($sp)
-/* 0CF940 80314940 92EE0000 */ lbu $t6, ($s7)
-/* 0CF944 80314944 31D9FFDF */ andi $t9, $t6, 0xffdf
-/* 0CF948 80314948 A2F90000 */ sb $t9, ($s7)
-.L8031494C:
-/* 0CF94C 8031494C 17C0001B */ bnez $fp, .L803149BC
-/* 0CF950 80314950 02801025 */ move $v0, $s4
-/* 0CF954 80314954 24F803F0 */ addiu $t8, $a3, 0x3f0
-/* 0CF958 80314958 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0CF95C 8031495C 3C010800 */ lui $at, 0x800
-/* 0CF960 80314960 01E17025 */ or $t6, $t7, $at
-/* 0CF964 80314964 00103040 */ sll $a2, $s0, 1
-/* 0CF968 80314968 30D9FFFF */ andi $t9, $a2, 0xffff
-/* 0CF96C 8031496C 3C010180 */ lui $at, 0x180
-/* 0CF970 80314970 02801025 */ move $v0, $s4
-/* 0CF974 80314974 0321C025 */ or $t8, $t9, $at
-/* 0CF978 80314978 AC580004 */ sw $t8, 4($v0)
-/* 0CF97C 8031497C AC4E0000 */ sw $t6, ($v0)
-/* 0CF980 80314980 8FAF0148 */ lw $t7, 0x148($sp)
-/* 0CF984 80314984 26940008 */ addiu $s4, $s4, 8
-/* 0CF988 80314988 3C010100 */ lui $at, 0x100
-/* 0CF98C 8031498C 31EE00FF */ andi $t6, $t7, 0xff
-/* 0CF990 80314990 000ECC00 */ sll $t9, $t6, 0x10
-/* 0CF994 80314994 0321C025 */ or $t8, $t9, $at
-/* 0CF998 80314998 02801825 */ move $v1, $s4
-/* 0CF99C 8031499C AC780000 */ sw $t8, ($v1)
-/* 0CF9A0 803149A0 8EEF0034 */ lw $t7, 0x34($s7)
-/* 0CF9A4 803149A4 0012C840 */ sll $t9, $s2, 1
-/* 0CF9A8 803149A8 26940008 */ addiu $s4, $s4, 8
-/* 0CF9AC 803149AC 01FF7021 */ addu $t6, $t7, $ra
-/* 0CF9B0 803149B0 AC6E0004 */ sw $t6, 4($v1)
-/* 0CF9B4 803149B4 1000002F */ b .L80314A74
-/* 0CF9B8 803149B8 AFB90130 */ sw $t9, 0x130($sp)
-.L803149BC:
-/* 0CF9BC 803149BC 24F803F0 */ addiu $t8, $a3, 0x3f0
-/* 0CF9C0 803149C0 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0CF9C4 803149C4 3C010800 */ lui $at, 0x800
-/* 0CF9C8 803149C8 01E17025 */ or $t6, $t7, $at
-/* 0CF9CC 803149CC 2401FFE0 */ li $at, -32
-/* 0CF9D0 803149D0 26A3001F */ addiu $v1, $s5, 0x1f
-/* 0CF9D4 803149D4 0061C824 */ and $t9, $v1, $at
-/* 0CF9D8 803149D8 272F0180 */ addiu $t7, $t9, 0x180
-/* 0CF9DC 803149DC 03201825 */ move $v1, $t9
-/* 0CF9E0 803149E0 AC4E0000 */ sw $t6, ($v0)
-/* 0CF9E4 803149E4 00103040 */ sll $a2, $s0, 1
-/* 0CF9E8 803149E8 30D9FFFF */ andi $t9, $a2, 0xffff
-/* 0CF9EC 803149EC 000F7400 */ sll $t6, $t7, 0x10
-/* 0CF9F0 803149F0 01D9C025 */ or $t8, $t6, $t9
-/* 0CF9F4 803149F4 AC580004 */ sw $t8, 4($v0)
-/* 0CF9F8 803149F8 8FAF0148 */ lw $t7, 0x148($sp)
-/* 0CF9FC 803149FC 26940008 */ addiu $s4, $s4, 8
-/* 0CFA00 80314A00 3C010100 */ lui $at, 0x100
-/* 0CFA04 80314A04 31EE00FF */ andi $t6, $t7, 0xff
-/* 0CFA08 80314A08 000ECC00 */ sll $t9, $t6, 0x10
-/* 0CFA0C 80314A0C 0321C025 */ or $t8, $t9, $at
-/* 0CFA10 80314A10 02802025 */ move $a0, $s4
-/* 0CFA14 80314A14 AC980000 */ sw $t8, ($a0)
-/* 0CFA18 80314A18 8EEF0034 */ lw $t7, 0x34($s7)
-/* 0CFA1C 80314A1C 0012C840 */ sll $t9, $s2, 1
-/* 0CFA20 80314A20 0079C021 */ addu $t8, $v1, $t9
-/* 0CFA24 80314A24 01FF7021 */ addu $t6, $t7, $ra
-/* 0CFA28 80314A28 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0CFA2C 80314A2C AC8E0004 */ sw $t6, 4($a0)
-/* 0CFA30 80314A30 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0CFA34 80314A34 270F0180 */ addiu $t7, $t8, 0x180
-/* 0CFA38 80314A38 01E17024 */ and $t6, $t7, $at
-/* 0CFA3C 80314A3C 26940008 */ addiu $s4, $s4, 8
-/* 0CFA40 80314A40 3C010A00 */ lui $at, 0xa00
-/* 0CFA44 80314A44 01C1C825 */ or $t9, $t6, $at
-/* 0CFA48 80314A48 02802825 */ move $a1, $s4
-/* 0CFA4C 80314A4C ACB90000 */ sw $t9, ($a1)
-/* 0CFA50 80314A50 0216C821 */ addu $t9, $s0, $s6
-/* 0CFA54 80314A54 26AF0180 */ addiu $t7, $s5, 0x180
-/* 0CFA58 80314A58 000F7400 */ sll $t6, $t7, 0x10
-/* 0CFA5C 80314A5C 0333C023 */ subu $t8, $t9, $s3
-/* 0CFA60 80314A60 00187840 */ sll $t7, $t8, 1
-/* 0CFA64 80314A64 31F9FFFF */ andi $t9, $t7, 0xffff
-/* 0CFA68 80314A68 01D9C025 */ or $t8, $t6, $t9
-/* 0CFA6C 80314A6C ACB80004 */ sw $t8, 4($a1)
-/* 0CFA70 80314A70 26940008 */ addiu $s4, $s4, 8
-.L80314A74:
-/* 0CFA74 80314A74 8FB90148 */ lw $t9, 0x148($sp)
-/* 0CFA78 80314A78 03D07821 */ addu $t7, $fp, $s0
-/* 0CFA7C 80314A7C 01F67021 */ addu $t6, $t7, $s6
-/* 0CFA80 80314A80 24010001 */ li $at, 1
-/* 0CFA84 80314A84 13210008 */ beq $t9, $at, .L80314AA8
-/* 0CFA88 80314A88 01D3F023 */ subu $fp, $t6, $s3
-/* 0CFA8C 80314A8C 3B220002 */ xori $v0, $t9, 2
-/* 0CFA90 80314A90 0216C021 */ addu $t8, $s0, $s6
-/* 0CFA94 80314A94 03131823 */ subu $v1, $t8, $s3
-/* 0CFA98 80314A98 10400007 */ beqz $v0, .L80314AB8
-/* 0CFA9C 80314A9C AFA00148 */ sw $zero, 0x148($sp)
-/* 0CFAA0 80314AA0 10000008 */ b .L80314AC4
-/* 0CFAA4 80314AA4 00037040 */ sll $t6, $v1, 1
-.L80314AA8:
-/* 0CFAA8 80314AA8 AFA00130 */ sw $zero, 0x130($sp)
-/* 0CFAAC 80314AAC 02A6A821 */ addu $s5, $s5, $a2
-/* 0CFAB0 80314AB0 1000000B */ b .L80314AE0
-/* 0CFAB4 80314AB4 AFA00148 */ sw $zero, 0x148($sp)
-.L80314AB8:
-/* 0CFAB8 80314AB8 00037840 */ sll $t7, $v1, 1
-/* 0CFABC 80314ABC 10000008 */ b .L80314AE0
-/* 0CFAC0 80314AC0 02AFA821 */ addu $s5, $s5, $t7
-.L80314AC4:
-/* 0CFAC4 80314AC4 52A00004 */ beql $s5, $zero, .L80314AD8
-/* 0CFAC8 80314AC8 0072A821 */ addu $s5, $v1, $s2
-/* 0CFACC 80314ACC 10000004 */ b .L80314AE0
-/* 0CFAD0 80314AD0 02AEA821 */ addu $s5, $s5, $t6
-/* 0CFAD4 80314AD4 0072A821 */ addu $s5, $v1, $s2
-.L80314AD8:
-/* 0CFAD8 80314AD8 0015C840 */ sll $t9, $s5, 1
-/* 0CFADC 80314ADC 0320A825 */ move $s5, $t9
-.L80314AE0:
-/* 0CFAE0 80314AE0 11400014 */ beqz $t2, .L80314B34
-/* 0CFAE4 80314AE4 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0CFAE8 80314AE8 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0CFAEC 80314AEC 26B80180 */ addiu $t8, $s5, 0x180
-/* 0CFAF0 80314AF0 03017824 */ and $t7, $t8, $at
-/* 0CFAF4 80314AF4 3C010200 */ lui $at, 0x200
-/* 0CFAF8 80314AF8 02801025 */ move $v0, $s4
-/* 0CFAFC 80314AFC 01BEC823 */ subu $t9, $t5, $fp
-/* 0CFB00 80314B00 0019C040 */ sll $t8, $t9, 1
-/* 0CFB04 80314B04 01E17025 */ or $t6, $t7, $at
-/* 0CFB08 80314B08 AC4E0000 */ sw $t6, ($v0)
-/* 0CFB0C 80314B0C AC580004 */ sw $t8, 4($v0)
-/* 0CFB10 80314B10 92EE0000 */ lbu $t6, ($s7)
-/* 0CFB14 80314B14 26940008 */ addiu $s4, $s4, 8
-/* 0CFB18 80314B18 AEE00014 */ sw $zero, 0x14($s7)
-/* 0CFB1C 80314B1C 35D90010 */ ori $t9, $t6, 0x10
-/* 0CFB20 80314B20 A2F90000 */ sb $t9, ($s7)
-/* 0CFB24 80314B24 92F80000 */ lbu $t8, ($s7)
-/* 0CFB28 80314B28 330FFF7F */ andi $t7, $t8, 0xff7f
-/* 0CFB2C 80314B2C 1000000F */ b .L80314B6C
-/* 0CFB30 80314B30 A2EF0000 */ sb $t7, ($s7)
-.L80314B34:
-/* 0CFB34 80314B34 51600009 */ beql $t3, $zero, .L80314B5C
-/* 0CFB38 80314B38 8EF90014 */ lw $t9, 0x14($s7)
-/* 0CFB3C 80314B3C 92F90000 */ lbu $t9, ($s7)
-/* 0CFB40 80314B40 37380020 */ ori $t8, $t9, 0x20
-/* 0CFB44 80314B44 A2F80000 */ sb $t8, ($s7)
-/* 0CFB48 80314B48 8FAF0160 */ lw $t7, 0x160($sp)
-/* 0CFB4C 80314B4C 8DEE0000 */ lw $t6, ($t7)
-/* 0CFB50 80314B50 10000004 */ b .L80314B64
-/* 0CFB54 80314B54 AEEE0014 */ sw $t6, 0x14($s7)
-/* 0CFB58 80314B58 8EF90014 */ lw $t9, 0x14($s7)
-.L80314B5C:
-/* 0CFB5C 80314B5C 032CC021 */ addu $t8, $t9, $t4
-/* 0CFB60 80314B60 AEF80014 */ sw $t8, 0x14($s7)
-.L80314B64:
-/* 0CFB64 80314B64 57CDFF03 */ bnel $fp, $t5, .L80314774
-/* 0CFB68 80314B68 8EE90014 */ lw $t1, 0x14($s7)
-.L80314B6C:
-/* 0CFB6C 80314B6C 8FAF0054 */ lw $t7, 0x54($sp)
-/* 0CFB70 80314B70 8FAE00E8 */ lw $t6, 0xe8($sp)
-/* 0CFB74 80314B74 24010002 */ li $at, 2
-/* 0CFB78 80314B78 15E00008 */ bnez $t7, .L80314B9C
-/* 0CFB7C 80314B7C 8FB80130 */ lw $t8, 0x130($sp)
-/* 0CFB80 80314B80 11C1000D */ beq $t6, $at, .L80314BB8
-/* 0CFB84 80314B84 8FB900E4 */ lw $t9, 0xe4($sp)
-/* 0CFB88 80314B88 8EE50000 */ lw $a1, ($s7)
-/* 0CFB8C 80314B8C 000530C0 */ sll $a2, $a1, 3
-/* 0CFB90 80314B90 0006CFC2 */ srl $t9, $a2, 0x1f
-/* 0CFB94 80314B94 10000066 */ b .L80314D30
-/* 0CFB98 80314B98 03203025 */ move $a2, $t9
-.L80314B9C:
-/* 0CFB9C 80314B9C 270F0180 */ addiu $t7, $t8, 0x180
-/* 0CFBA0 80314BA0 A7AF00D6 */ sh $t7, 0xd6($sp)
-/* 0CFBA4 80314BA4 8EE50000 */ lw $a1, ($s7)
-/* 0CFBA8 80314BA8 000530C0 */ sll $a2, $a1, 3
-/* 0CFBAC 80314BAC 000677C2 */ srl $t6, $a2, 0x1f
-/* 0CFBB0 80314BB0 1000005F */ b .L80314D30
-/* 0CFBB4 80314BB4 01C03025 */ move $a2, $t6
-.L80314BB8:
-/* 0CFBB8 80314BB8 13200009 */ beqz $t9, .L80314BE0
-/* 0CFBBC 80314BBC 02801025 */ move $v0, $s4
-/* 0CFBC0 80314BC0 24010001 */ li $at, 1
-/* 0CFBC4 80314BC4 13210034 */ beq $t9, $at, .L80314C98
-/* 0CFBC8 80314BC8 02801025 */ move $v0, $s4
-/* 0CFBCC 80314BCC 8EE50000 */ lw $a1, ($s7)
-/* 0CFBD0 80314BD0 000530C0 */ sll $a2, $a1, 3
-/* 0CFBD4 80314BD4 0006C7C2 */ srl $t8, $a2, 0x1f
-/* 0CFBD8 80314BD8 10000055 */ b .L80314D30
-/* 0CFBDC 80314BDC 03003025 */ move $a2, $t8
-.L80314BE0:
-/* 0CFBE0 80314BE0 8FAF0130 */ lw $t7, 0x130($sp)
-/* 0CFBE4 80314BE4 3C010800 */ lui $at, 0x800
-/* 0CFBE8 80314BE8 25A30004 */ addiu $v1, $t5, 4
-/* 0CFBEC 80314BEC 25EE0180 */ addiu $t6, $t7, 0x180
-/* 0CFBF0 80314BF0 31D9FFFF */ andi $t9, $t6, 0xffff
-/* 0CFBF4 80314BF4 0321C025 */ or $t8, $t9, $at
-/* 0CFBF8 80314BF8 3C010020 */ lui $at, 0x20
-/* 0CFBFC 80314BFC 306FFFFF */ andi $t7, $v1, 0xffff
-/* 0CFC00 80314C00 01E17025 */ or $t6, $t7, $at
-/* 0CFC04 80314C04 26940008 */ addiu $s4, $s4, 8
-/* 0CFC08 80314C08 3C190501 */ lui $t9, (0x0501FF60 >> 16) # lui $t9, 0x501
-/* 0CFC0C 80314C0C AC4E0004 */ sw $t6, 4($v0)
-/* 0CFC10 80314C10 AC580000 */ sw $t8, ($v0)
-/* 0CFC14 80314C14 3739FF60 */ ori $t9, (0x0501FF60 & 0xFFFF) # ori $t9, $t9, 0xff60
-/* 0CFC18 80314C18 02802025 */ move $a0, $s4
-/* 0CFC1C 80314C1C AC990000 */ sw $t9, ($a0)
-/* 0CFC20 80314C20 8EF80034 */ lw $t8, 0x34($s7)
-/* 0CFC24 80314C24 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
-/* 0CFC28 80314C28 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
-/* 0CFC2C 80314C2C 03017821 */ addu $t7, $t8, $at
-/* 0CFC30 80314C30 AC8F0004 */ sw $t7, 4($a0)
-/* 0CFC34 80314C34 240E0024 */ li $t6, 36
-/* 0CFC38 80314C38 AFA300D8 */ sw $v1, 0xd8($sp)
-/* 0CFC3C 80314C3C A7AE00D6 */ sh $t6, 0xd6($sp)
-/* 0CFC40 80314C40 8EE50000 */ lw $a1, ($s7)
-/* 0CFC44 80314C44 26940008 */ addiu $s4, $s4, 8
-/* 0CFC48 80314C48 02801025 */ move $v0, $s4
-/* 0CFC4C 80314C4C 000530C0 */ sll $a2, $a1, 3
-/* 0CFC50 80314C50 0006CFC2 */ srl $t9, $a2, 0x1f
-/* 0CFC54 80314C54 13200036 */ beqz $t9, .L80314D30
-/* 0CFC58 80314C58 03203025 */ move $a2, $t9
-/* 0CFC5C 80314C5C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0CFC60 80314C60 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0CFC64 80314C64 25B80024 */ addiu $t8, $t5, 0x24
-/* 0CFC68 80314C68 03017824 */ and $t7, $t8, $at
-/* 0CFC6C 80314C6C 3C010200 */ lui $at, 0x200
-/* 0CFC70 80314C70 01E17025 */ or $t6, $t7, $at
-/* 0CFC74 80314C74 25B90010 */ addiu $t9, $t5, 0x10
-/* 0CFC78 80314C78 AC590004 */ sw $t9, 4($v0)
-/* 0CFC7C 80314C7C AC4E0000 */ sw $t6, ($v0)
-/* 0CFC80 80314C80 8EE50000 */ lw $a1, ($s7)
-/* 0CFC84 80314C84 26940008 */ addiu $s4, $s4, 8
-/* 0CFC88 80314C88 000530C0 */ sll $a2, $a1, 3
-/* 0CFC8C 80314C8C 0006C7C2 */ srl $t8, $a2, 0x1f
-/* 0CFC90 80314C90 10000027 */ b .L80314D30
-/* 0CFC94 80314C94 03003025 */ move $a2, $t8
-.L80314C98:
-/* 0CFC98 80314C98 8FAF0130 */ lw $t7, 0x130($sp)
-/* 0CFC9C 80314C9C 3C010800 */ lui $at, 0x800
-/* 0CFCA0 80314CA0 26940008 */ addiu $s4, $s4, 8
-/* 0CFCA4 80314CA4 25EE0180 */ addiu $t6, $t7, 0x180
-/* 0CFCA8 80314CA8 31D9FFFF */ andi $t9, $t6, 0xffff
-/* 0CFCAC 80314CAC 0321C025 */ or $t8, $t9, $at
-/* 0CFCB0 80314CB0 25AF0008 */ addiu $t7, $t5, 8
-/* 0CFCB4 80314CB4 31EEFFFF */ andi $t6, $t7, 0xffff
-/* 0CFCB8 80314CB8 AC580000 */ sw $t8, ($v0)
-/* 0CFCBC 80314CBC 3C010160 */ lui $at, 0x160
-/* 0CFCC0 80314CC0 01C1C825 */ or $t9, $t6, $at
-/* 0CFCC4 80314CC4 3C180501 */ lui $t8, (0x0501FF60 >> 16) # lui $t8, 0x501
-/* 0CFCC8 80314CC8 AC590004 */ sw $t9, 4($v0)
-/* 0CFCCC 80314CCC 3718FF60 */ ori $t8, (0x0501FF60 & 0xFFFF) # ori $t8, $t8, 0xff60
-/* 0CFCD0 80314CD0 02801825 */ move $v1, $s4
-/* 0CFCD4 80314CD4 AC780000 */ sw $t8, ($v1)
-/* 0CFCD8 80314CD8 8EEF0034 */ lw $t7, 0x34($s7)
-/* 0CFCDC 80314CDC 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
-/* 0CFCE0 80314CE0 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
-/* 0CFCE4 80314CE4 26940008 */ addiu $s4, $s4, 8
-/* 0CFCE8 80314CE8 3C190A00 */ lui $t9, (0x0A000164 >> 16) # lui $t9, 0xa00
-/* 0CFCEC 80314CEC 01E17021 */ addu $t6, $t7, $at
-/* 0CFCF0 80314CF0 AC6E0004 */ sw $t6, 4($v1)
-/* 0CFCF4 80314CF4 37390164 */ ori $t9, (0x0A000164 & 0xFFFF) # ori $t9, $t9, 0x164
-/* 0CFCF8 80314CF8 02802025 */ move $a0, $s4
-/* 0CFCFC 80314CFC AC990000 */ sw $t9, ($a0)
-/* 0CFD00 80314D00 8FB800D8 */ lw $t8, 0xd8($sp)
-/* 0CFD04 80314D04 26940008 */ addiu $s4, $s4, 8
-/* 0CFD08 80314D08 270E0020 */ addiu $t6, $t8, 0x20
-/* 0CFD0C 80314D0C 25B80004 */ addiu $t8, $t5, 4
-/* 0CFD10 80314D10 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0CFD14 80314D14 000ECC00 */ sll $t9, $t6, 0x10
-/* 0CFD18 80314D18 032F7025 */ or $t6, $t9, $t7
-/* 0CFD1C 80314D1C AC8E0004 */ sw $t6, 4($a0)
-/* 0CFD20 80314D20 8EE50000 */ lw $a1, ($s7)
-/* 0CFD24 80314D24 000530C0 */ sll $a2, $a1, 3
-/* 0CFD28 80314D28 0006C7C2 */ srl $t8, $a2, 0x1f
-/* 0CFD2C 80314D2C 03003025 */ move $a2, $t8
-.L80314D30:
-/* 0CFD30 80314D30 10C00003 */ beqz $a2, .L80314D40
-/* 0CFD34 80314D34 8FA200E4 */ lw $v0, 0xe4($sp)
-/* 0CFD38 80314D38 10000008 */ b .L80314D5C
-/* 0CFD3C 80314D3C AFA00148 */ sw $zero, 0x148($sp)
-.L80314D40:
-/* 0CFD40 80314D40 8FB900E8 */ lw $t9, 0xe8($sp)
-/* 0CFD44 80314D44 24420001 */ addiu $v0, $v0, 1
-/* 0CFD48 80314D48 AFA200E4 */ sw $v0, 0xe4($sp)
-/* 0CFD4C 80314D4C 5459FE5D */ bnel $v0, $t9, .L803146C4
-/* 0CFD50 80314D50 8FA60164 */ lw $a2, 0x164($sp)
-.L80314D54:
-/* 0CFD54 80314D54 AFA00148 */ sw $zero, 0x148($sp)
-/* 0CFD58 80314D58 8EE50000 */ lw $a1, ($s7)
-.L80314D5C:
-/* 0CFD5C 80314D5C 00057840 */ sll $t7, $a1, 1
-/* 0CFD60 80314D60 000F77C2 */ srl $t6, $t7, 0x1f
-/* 0CFD64 80314D64 24010001 */ li $at, 1
-/* 0CFD68 80314D68 15C10006 */ bne $t6, $at, .L80314D84
-/* 0CFD6C 80314D6C 02802025 */ move $a0, $s4
-/* 0CFD70 80314D70 24180001 */ li $t8, 1
-/* 0CFD74 80314D74 AFB80148 */ sw $t8, 0x148($sp)
-/* 0CFD78 80314D78 92F90000 */ lbu $t9, ($s7)
-/* 0CFD7C 80314D7C 332FFFBF */ andi $t7, $t9, 0xffbf
-/* 0CFD80 80314D80 A2EF0000 */ sb $t7, ($s7)
-.L80314D84:
-/* 0CFD84 80314D84 8FB10048 */ lw $s1, 0x48($sp)
-/* 0CFD88 80314D88 97AE00D6 */ lhu $t6, 0xd6($sp)
-/* 0CFD8C 80314D8C 8FB80148 */ lw $t8, 0x148($sp)
-/* 0CFD90 80314D90 02E02825 */ move $a1, $s7
-/* 0CFD94 80314D94 97A7005E */ lhu $a3, 0x5e($sp)
-/* 0CFD98 80314D98 02203025 */ move $a2, $s1
-/* 0CFD9C 80314D9C AFAE0010 */ sw $t6, 0x10($sp)
-/* 0CFDA0 80314DA0 0C0C53F5 */ jal final_resample
-/* 0CFDA4 80314DA4 AFB80014 */ sw $t8, 0x14($sp)
-/* 0CFDA8 80314DA8 96F9000C */ lhu $t9, 0xc($s7)
-/* 0CFDAC 80314DAC 0040A025 */ move $s4, $v0
-/* 0CFDB0 80314DB0 02802025 */ move $a0, $s4
-/* 0CFDB4 80314DB4 17200004 */ bnez $t9, .L80314DC8
-/* 0CFDB8 80314DB8 02E02825 */ move $a1, $s7
-/* 0CFDBC 80314DBC 96EF0010 */ lhu $t7, 0x10($s7)
-/* 0CFDC0 80314DC0 51E00004 */ beql $t7, $zero, .L80314DD4
-/* 0CFDC4 80314DC4 96EE000E */ lhu $t6, 0xe($s7)
-.L80314DC8:
-/* 0CFDC8 80314DC8 1000000A */ b .L80314DF4
-/* 0CFDCC 80314DCC 24100001 */ li $s0, 1
-/* 0CFDD0 80314DD0 96EE000E */ lhu $t6, 0xe($s7)
-.L80314DD4:
-/* 0CFDD4 80314DD4 15C00005 */ bnez $t6, .L80314DEC
-/* 0CFDD8 80314DD8 00000000 */ nop
-/* 0CFDDC 80314DDC 96F80012 */ lhu $t8, 0x12($s7)
-/* 0CFDE0 80314DE0 00008025 */ move $s0, $zero
-/* 0CFDE4 80314DE4 13000003 */ beqz $t8, .L80314DF4
-/* 0CFDE8 80314DE8 00000000 */ nop
-.L80314DEC:
-/* 0CFDEC 80314DEC 10000001 */ b .L80314DF4
-/* 0CFDF0 80314DF0 24100002 */ li $s0, 2
-.L80314DF4:
-/* 0CFDF4 80314DF4 8FB90148 */ lw $t9, 0x148($sp)
-/* 0CFDF8 80314DF8 8FA6017C */ lw $a2, 0x17c($sp)
-/* 0CFDFC 80314DFC 00003825 */ move $a3, $zero
-/* 0CFE00 80314E00 AFB00010 */ sw $s0, 0x10($sp)
-/* 0CFE04 80314E04 0C0C540C */ jal process_envelope
-/* 0CFE08 80314E08 AFB90014 */ sw $t9, 0x14($sp)
-/* 0CFE0C 80314E0C 92EF0001 */ lbu $t7, 1($s7)
-/* 0CFE10 80314E10 3C1F8000 */ lui $ra, 0x8000
-/* 0CFE14 80314E14 0040A025 */ move $s4, $v0
-/* 0CFE18 80314E18 11E00008 */ beqz $t7, .L80314E3C
-/* 0CFE1C 80314E1C 00402025 */ move $a0, $v0
-/* 0CFE20 80314E20 02E02825 */ move $a1, $s7
-/* 0CFE24 80314E24 02203025 */ move $a2, $s1
-/* 0CFE28 80314E28 8FA70148 */ lw $a3, 0x148($sp)
-/* 0CFE2C 80314E2C 0C0C557D */ jal note_apply_headset_pan_effects
-/* 0CFE30 80314E30 AFB00010 */ sw $s0, 0x10($sp)
-/* 0CFE34 80314E34 3C1F8000 */ lui $ra, 0x8000
-/* 0CFE38 80314E38 0040A025 */ move $s4, $v0
-.L80314E3C:
-/* 0CFE3C 80314E3C 8FAE0174 */ lw $t6, 0x174($sp)
-.L80314E40:
-/* 0CFE40 80314E40 8FB9006C */ lw $t9, 0x6c($sp)
-/* 0CFE44 80314E44 25D80001 */ addiu $t8, $t6, 1
-/* 0CFE48 80314E48 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
-/* 0CFE4C 80314E4C 8DCE6D70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
-/* 0CFE50 80314E50 272F00C0 */ addiu $t7, $t9, 0xc0
-/* 0CFE54 80314E54 AFAF006C */ sw $t7, 0x6c($sp)
-/* 0CFE58 80314E58 030E082A */ slt $at, $t8, $t6
-/* 0CFE5C 80314E5C 1420FD9D */ bnez $at, .L803144D4
-/* 0CFE60 80314E60 AFB80174 */ sw $t8, 0x174($sp)
-.L80314E64:
-/* 0CFE64 80314E64 3C080800 */ lui $t0, 0x800
-/* 0CFE68 80314E68 02802025 */ move $a0, $s4
-/* 0CFE6C 80314E6C AC880000 */ sw $t0, ($a0)
-/* 0CFE70 80314E70 8FA3017C */ lw $v1, 0x17c($sp)
-/* 0CFE74 80314E74 26940008 */ addiu $s4, $s4, 8
-/* 0CFE78 80314E78 02802825 */ move $a1, $s4
-/* 0CFE7C 80314E7C 0003C840 */ sll $t9, $v1, 1
-/* 0CFE80 80314E80 332FFFFF */ andi $t7, $t9, 0xffff
-/* 0CFE84 80314E84 AC8F0004 */ sw $t7, 4($a0)
-/* 0CFE88 80314E88 26940008 */ addiu $s4, $s4, 8
-/* 0CFE8C 80314E8C 3C180D00 */ lui $t8, 0xd00
-/* 0CFE90 80314E90 3C0E04C0 */ lui $t6, (0x04C00600 >> 16) # lui $t6, 0x4c0
-/* 0CFE94 80314E94 35CE0600 */ ori $t6, (0x04C00600 & 0xFFFF) # ori $t6, $t6, 0x600
-/* 0CFE98 80314E98 ACB80000 */ sw $t8, ($a1)
-/* 0CFE9C 80314E9C 02803025 */ move $a2, $s4
-/* 0CFEA0 80314EA0 ACAE0004 */ sw $t6, 4($a1)
-/* 0CFEA4 80314EA4 0019C840 */ sll $t9, $t9, 1
-/* 0CFEA8 80314EA8 332FFFFF */ andi $t7, $t9, 0xffff
-/* 0CFEAC 80314EAC 26940008 */ addiu $s4, $s4, 8
-/* 0CFEB0 80314EB0 ACCF0004 */ sw $t7, 4($a2)
-/* 0CFEB4 80314EB4 ACC80000 */ sw $t0, ($a2)
-/* 0CFEB8 80314EB8 02803825 */ move $a3, $s4
-/* 0CFEBC 80314EBC 3C180600 */ lui $t8, 0x600
-/* 0CFEC0 80314EC0 ACF80000 */ sw $t8, ($a3)
-/* 0CFEC4 80314EC4 8FAE0178 */ lw $t6, 0x178($sp)
-/* 0CFEC8 80314EC8 3C1F8000 */ lui $ra, 0x8000
-/* 0CFECC 80314ECC 26820008 */ addiu $v0, $s4, 8
-/* 0CFED0 80314ED0 01DFC821 */ addu $t9, $t6, $ra
-/* 0CFED4 80314ED4 ACF90004 */ sw $t9, 4($a3)
-/* 0CFED8 80314ED8 8FBF0044 */ lw $ra, 0x44($sp)
-/* 0CFEDC 80314EDC 8FBE0040 */ lw $fp, 0x40($sp)
-/* 0CFEE0 80314EE0 8FB7003C */ lw $s7, 0x3c($sp)
-/* 0CFEE4 80314EE4 8FB60038 */ lw $s6, 0x38($sp)
-/* 0CFEE8 80314EE8 8FB50034 */ lw $s5, 0x34($sp)
-/* 0CFEEC 80314EEC 8FB40030 */ lw $s4, 0x30($sp)
-/* 0CFEF0 80314EF0 8FB3002C */ lw $s3, 0x2c($sp)
-/* 0CFEF4 80314EF4 8FB20028 */ lw $s2, 0x28($sp)
-/* 0CFEF8 80314EF8 8FB10024 */ lw $s1, 0x24($sp)
-/* 0CFEFC 80314EFC 8FB00020 */ lw $s0, 0x20($sp)
-/* 0CFF00 80314F00 03E00008 */ jr $ra
-/* 0CFF04 80314F04 27BD0178 */ addiu $sp, $sp, 0x178
diff --git a/asm/non_matchings/process_notes_us.s b/asm/non_matchings/process_notes_us.s
@@ -1,733 +0,0 @@
-.late_rodata
-glabel D_80337BB0
- .word 0x3FFFFEB0, 0x3FFFFEB0
-glabel D_80337BB8
- .word 0x407FFEDA, 0x407FFEDA
-.text
-
-glabel process_notes
-/* 0D0590 80315590 27BDFE90 */ addiu $sp, $sp, -0x170
-/* 0D0594 80315594 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
-/* 0D0598 80315598 8DCE6B70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
-/* 0D059C 8031559C AFB40030 */ sw $s4, 0x30($sp)
-/* 0D05A0 803155A0 00C0A025 */ move $s4, $a2
-/* 0D05A4 803155A4 AFBF0044 */ sw $ra, 0x44($sp)
-/* 0D05A8 803155A8 AFBE0040 */ sw $fp, 0x40($sp)
-/* 0D05AC 803155AC AFB7003C */ sw $s7, 0x3c($sp)
-/* 0D05B0 803155B0 AFB60038 */ sw $s6, 0x38($sp)
-/* 0D05B4 803155B4 AFB50034 */ sw $s5, 0x34($sp)
-/* 0D05B8 803155B8 AFB3002C */ sw $s3, 0x2c($sp)
-/* 0D05BC 803155BC AFB20028 */ sw $s2, 0x28($sp)
-/* 0D05C0 803155C0 AFB10024 */ sw $s1, 0x24($sp)
-/* 0D05C4 803155C4 AFB00020 */ sw $s0, 0x20($sp)
-/* 0D05C8 803155C8 AFA40170 */ sw $a0, 0x170($sp)
-/* 0D05CC 803155CC AFA50174 */ sw $a1, 0x174($sp)
-/* 0D05D0 803155D0 AFA0016C */ sw $zero, 0x16c($sp)
-/* 0D05D4 803155D4 19C00265 */ blez $t6, .L_US_80315F6C
-/* 0D05D8 803155D8 AFA00154 */ sw $zero, 0x154($sp)
-/* 0D05DC 803155DC AFA00064 */ sw $zero, 0x64($sp)
-.L_US_803155E0:
-/* 0D05E0 803155E0 3C188022 */ lui $t8, %hi(gNotes) # $t8, 0x8022
-/* 0D05E4 803155E4 8F182610 */ lw $t8, %lo(gNotes)($t8)
-/* 0D05E8 803155E8 8FAF0064 */ lw $t7, 0x64($sp)
-/* 0D05EC 803155EC 01F8B821 */ addu $s7, $t7, $t8
-/* 0D05F0 803155F0 8EF90000 */ lw $t9, ($s7)
-/* 0D05F4 803155F4 001977C2 */ srl $t6, $t9, 0x1f
-/* 0D05F8 803155F8 51C00010 */ beql $t6, $zero, .L_US_8031563C
-/* 0D05FC 803155FC 8EF90000 */ lw $t9, ($s7)
-/* 0D0600 80315600 92E20007 */ lbu $v0, 7($s7)
-/* 0D0604 80315604 3C0F8022 */ lui $t7, %hi(gBankLoadStatus)
-/* 0D0608 80315608 8FAE016C */ lw $t6, 0x16c($sp)
-/* 0D060C 8031560C 01E27821 */ addu $t7, $t7, $v0
-/* 0D0610 80315610 91EF14D0 */ lbu $t7, %lo(gBankLoadStatus)($t7)
-/* 0D0614 80315614 3C010100 */ lui $at, 0x100
-/* 0D0618 80315618 29F80002 */ slti $t8, $t7, 2
-/* 0D061C 8031561C 13000006 */ beqz $t8, .L_US_80315638
-/* 0D0620 80315620 0002CA00 */ sll $t9, $v0, 8
-/* 0D0624 80315624 032E7821 */ addu $t7, $t9, $t6
-/* 0D0628 80315628 01E1C021 */ addu $t8, $t7, $at
-/* 0D062C 8031562C 3C018033 */ lui $at, %hi(gAudioErrorFlags) # $at, 0x8033
-/* 0D0630 80315630 10000244 */ b .L_US_80315F44
-/* 0D0634 80315634 AC382E50 */ sw $t8, %lo(gAudioErrorFlags)($at)
-.L_US_80315638:
-/* 0D0638 80315638 8EF90000 */ lw $t9, ($s7)
-.L_US_8031563C:
-/* 0D063C 8031563C 001977C2 */ srl $t6, $t9, 0x1f
-/* 0D0640 80315640 51C00241 */ beql $t6, $zero, .L_US_80315F48
-/* 0D0644 80315644 8FB9016C */ lw $t9, 0x16c($sp)
-/* 0D0648 80315648 8FAF0174 */ lw $t7, 0x174($sp)
-/* 0D064C 8031564C AFA00140 */ sw $zero, 0x140($sp)
-/* 0D0650 80315650 24010001 */ li $at, 1
-/* 0D0654 80315654 000FC040 */ sll $t8, $t7, 1
-/* 0D0658 80315658 AFB80048 */ sw $t8, 0x48($sp)
-/* 0D065C 8031565C 8EF90000 */ lw $t9, ($s7)
-/* 0D0660 80315660 24180001 */ li $t8, 1
-/* 0D0664 80315664 02802025 */ move $a0, $s4
-/* 0D0668 80315668 00197040 */ sll $t6, $t9, 1
-/* 0D066C 8031566C 000E7FC2 */ srl $t7, $t6, 0x1f
-/* 0D0670 80315670 15E10004 */ bne $t7, $at, .L_US_80315684
-/* 0D0674 80315674 02E02825 */ move $a1, $s7
-/* 0D0678 80315678 AFB80140 */ sw $t8, 0x140($sp)
-/* 0D067C 8031567C AEE00014 */ sw $zero, 0x14($s7)
-/* 0D0680 80315680 A6E00020 */ sh $zero, 0x20($s7)
-.L_US_80315684:
-/* 0D0684 80315684 3C014000 */ li $at, 0x40000000 # 2.000000
-/* 0D0688 80315688 44812000 */ mtc1 $at, $f4
-/* 0D068C 8031568C C6E00038 */ lwc1 $f0, 0x38($s7)
-/* 0D0690 80315690 3C018034 */ lui $at, %hi(D_80337BB8)
-/* 0D0694 80315694 4604003C */ c.lt.s $f0, $f4
-/* 0D0698 80315698 00000000 */ nop
-/* 0D069C 8031569C 4500000E */ bc1f .L_US_803156D8
-/* 0D06A0 803156A0 00000000 */ nop
-/* 0D06A4 803156A4 3C018034 */ lui $at, %hi(D_80337BB0) # $at, 0x8034
-/* 0D06A8 803156A8 C4268DA0 */ lwc1 $f6, %lo(D_80337BB0)($at)
-/* 0D06AC 803156AC 24190001 */ li $t9, 1
-/* 0D06B0 803156B0 AFB900E0 */ sw $t9, 0xe0($sp)
-/* 0D06B4 803156B4 4600303C */ c.lt.s $f6, $f0
-/* 0D06B8 803156B8 3C018034 */ lui $at, %hi(D_80337BB0 + 0x4) # $at, 0x8034
-/* 0D06BC 803156BC 45000004 */ bc1f .L_US_803156D0
-/* 0D06C0 803156C0 00000000 */ nop
-/* 0D06C4 803156C4 C4288DA4 */ lwc1 $f8, %lo(D_80337BB0 + 0x4)($at)
-/* 0D06C8 803156C8 E6E80038 */ swc1 $f8, 0x38($s7)
-/* 0D06CC 803156CC C6E00038 */ lwc1 $f0, 0x38($s7)
-.L_US_803156D0:
-/* 0D06D0 803156D0 10000010 */ b .L_US_80315714
-/* 0D06D4 803156D4 46000086 */ mov.s $f2, $f0
-.L_US_803156D8:
-/* 0D06D8 803156D8 C42A8DA8 */ lwc1 $f10, %lo(D_80337BB8)($at)
-/* 0D06DC 803156DC 240E0002 */ li $t6, 2
-/* 0D06E0 803156E0 AFAE00E0 */ sw $t6, 0xe0($sp)
-/* 0D06E4 803156E4 4600503E */ c.le.s $f10, $f0
-/* 0D06E8 803156E8 3C018034 */ lui $at, %hi(D_80337BB8)
-/* 0D06EC 803156EC 45020005 */ bc1fl .L_US_80315704
-/* 0D06F0 803156F0 3C013F00 */ lui $at, 0x3f00 # $at, 0x3f00
-/* 0D06F4 803156F4 C4308DAC */ lwc1 $f16, %lo(D_80337BB8 + 0x4)($at)
-/* 0D06F8 803156F8 E6F00038 */ swc1 $f16, 0x38($s7)
-/* 0D06FC 803156FC C6E00038 */ lwc1 $f0, 0x38($s7)
-/* 0D0700 80315700 3C013F00 */ li $at, 0x3F000000 # 0.500000
-.L_US_80315704:
-/* 0D0704 80315704 44819000 */ mtc1 $at, $f18
-/* 0D0708 80315708 00000000 */ nop
-/* 0D070C 8031570C 46120082 */ mul.s $f2, $f0, $f18
-/* 0D0710 80315710 00000000 */ nop
-.L_US_80315714:
-/* 0D0714 80315714 3C014700 */ li $at, 0x47000000 # 32768.000000
-/* 0D0718 80315718 44812000 */ mtc1 $at, $f4
-/* 0D071C 8031571C 8FAE0174 */ lw $t6, 0x174($sp)
-/* 0D0720 80315720 46041182 */ mul.s $f6, $f2, $f4
-/* 0D0724 80315724 4600320D */ trunc.w.s $f8, $f6
-/* 0D0728 80315728 44184000 */ mfc1 $t8, $f8
-/* 0D072C 8031572C 00000000 */ nop
-/* 0D0730 80315730 3319FFFF */ andi $t9, $t8, 0xffff
-/* 0D0734 80315734 032E0019 */ multu $t9, $t6
-/* 0D0738 80315738 AFB9005C */ sw $t9, 0x5c($sp)
-/* 0D073C 8031573C 96F90020 */ lhu $t9, 0x20($s7)
-/* 0D0740 80315740 8EE20024 */ lw $v0, 0x24($s7)
-/* 0D0744 80315744 00007812 */ mflo $t7
-/* 0D0748 80315748 000FC040 */ sll $t8, $t7, 1
-/* 0D074C 8031574C 03381821 */ addu $v1, $t9, $t8
-/* 0D0750 80315750 1440000E */ bnez $v0, .L_US_8031578C
-/* 0D0754 80315754 A6E30020 */ sh $v1, 0x20($s7)
-/* 0D0758 80315758 00038402 */ srl $s0, $v1, 0x10
-/* 0D075C 8031575C 02003025 */ move $a2, $s0
-/* 0D0760 80315760 0C0C5804 */ jal load_wave_samples
-/* 0D0764 80315764 AFA00140 */ sw $zero, 0x140($sp)
-/* 0D0768 80315768 8EE90014 */ lw $t1, 0x14($s7)
-/* 0D076C 8031576C 0040A025 */ move $s4, $v0
-/* 0D0770 80315770 00097840 */ sll $t7, $t1, 1
-/* 0D0774 80315774 25F90180 */ addiu $t9, $t7, 0x180
-/* 0D0778 80315778 A7B900CE */ sh $t9, 0xce($sp)
-/* 0D077C 8031577C 0130C021 */ addu $t8, $t1, $s0
-/* 0D0780 80315780 AEF80014 */ sw $t8, 0x14($s7)
-/* 0D0784 80315784 100001B9 */ b .L_US_80315E6C
-/* 0D0788 80315788 8EE50000 */ lw $a1, ($s7)
-.L_US_8031578C:
-/* 0D078C 8031578C 8C4E0000 */ lw $t6, ($v0)
-/* 0D0790 80315790 00031402 */ srl $v0, $v1, 0x10
-/* 0D0794 80315794 AFAE015C */ sw $t6, 0x15c($sp)
-/* 0D0798 80315798 8DDF0008 */ lw $ra, 8($t6)
-/* 0D079C 8031579C 8FF90004 */ lw $t9, 4($ra)
-/* 0D07A0 803157A0 AFB90108 */ sw $t9, 0x108($sp)
-/* 0D07A4 803157A4 8DD80004 */ lw $t8, 4($t6)
-/* 0D07A8 803157A8 8FAE00E0 */ lw $t6, 0xe0($sp)
-/* 0D07AC 803157AC AFA000D0 */ sw $zero, 0xd0($sp)
-/* 0D07B0 803157B0 AFA000DC */ sw $zero, 0xdc($sp)
-/* 0D07B4 803157B4 19C001AB */ blez $t6, .L_US_80315E64
-/* 0D07B8 803157B8 AFB80118 */ sw $t8, 0x118($sp)
-/* 0D07BC 803157BC 39D90001 */ xori $t9, $t6, 1
-/* 0D07C0 803157C0 2F390001 */ sltiu $t9, $t9, 1
-/* 0D07C4 803157C4 AFB90054 */ sw $t9, 0x54($sp)
-/* 0D07C8 803157C8 AFA20058 */ sw $v0, 0x58($sp)
-/* 0D07CC 803157CC 8FAF015C */ lw $t7, 0x15c($sp)
-.L_US_803157D0:
-/* 0D07D0 803157D0 8FB80054 */ lw $t8, 0x54($sp)
-/* 0D07D4 803157D4 8FA20058 */ lw $v0, 0x58($sp)
-/* 0D07D8 803157D8 8DE4000C */ lw $a0, 0xc($t7)
-/* 0D07DC 803157DC 0000F025 */ move $fp, $zero
-/* 0D07E0 803157E0 0000A825 */ move $s5, $zero
-/* 0D07E4 803157E4 13000003 */ beqz $t8, .L_US_803157F4
-/* 0D07E8 803157E8 24850008 */ addiu $a1, $a0, 8
-/* 0D07EC 803157EC 1000000A */ b .L_US_80315818
-/* 0D07F0 803157F0 00406825 */ move $t5, $v0
-.L_US_803157F4:
-/* 0D07F4 803157F4 304E0001 */ andi $t6, $v0, 1
-/* 0D07F8 803157F8 11C00007 */ beqz $t6, .L_US_80315818
-/* 0D07FC 803157FC 00406825 */ move $t5, $v0
-/* 0D0800 80315800 8FAF00DC */ lw $t7, 0xdc($sp)
-/* 0D0804 80315804 2401FFFE */ li $at, -2
-/* 0D0808 80315808 0041C824 */ and $t9, $v0, $at
-/* 0D080C 8031580C 000FC040 */ sll $t8, $t7, 1
-/* 0D0810 80315810 10000001 */ b .L_US_80315818
-/* 0D0814 80315814 03386821 */ addu $t5, $t9, $t8
-.L_US_80315818:
-/* 0D0818 80315818 8FAE0154 */ lw $t6, 0x154($sp)
-/* 0D081C 8031581C AFA20058 */ sw $v0, 0x58($sp)
-/* 0D0820 80315820 11C50013 */ beq $t6, $a1, .L_US_80315870
-/* 0D0824 80315824 00000000 */ nop
-/* 0D0828 80315828 AFA50154 */ sw $a1, 0x154($sp)
-/* 0D082C 8031582C 8C990000 */ lw $t9, ($a0)
-/* 0D0830 80315830 8C8F0004 */ lw $t7, 4($a0)
-/* 0D0834 80315834 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0D0838 80315838 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0D083C 8031583C 01F90019 */ multu $t7, $t9
-/* 0D0840 80315840 02801025 */ move $v0, $s4
-/* 0D0844 80315844 26940008 */ addiu $s4, $s4, 8
-/* 0D0848 80315848 00001812 */ mflo $v1
-/* 0D084C 8031584C 0003C100 */ sll $t8, $v1, 4
-/* 0D0850 80315850 03017024 */ and $t6, $t8, $at
-/* 0D0854 80315854 3C010B00 */ lui $at, 0xb00
-/* 0D0858 80315858 01C17825 */ or $t7, $t6, $at
-/* 0D085C 8031585C AC4F0000 */ sw $t7, ($v0)
-/* 0D0860 80315860 8FB90154 */ lw $t9, 0x154($sp)
-/* 0D0864 80315864 3C018000 */ lui $at, 0x8000
-/* 0D0868 80315868 0321C021 */ addu $t8, $t9, $at
-/* 0D086C 8031586C AC580004 */ sw $t8, 4($v0)
-.L_US_80315870:
-/* 0D0870 80315870 11A00102 */ beqz $t5, .L_US_80315C7C
-/* 0D0874 80315874 8FA20058 */ lw $v0, 0x58($sp)
-/* 0D0878 80315878 AFA20058 */ sw $v0, 0x58($sp)
-/* 0D087C 8031587C 8EE90014 */ lw $t1, 0x14($s7)
-.L_US_80315880:
-/* 0D0880 80315880 8FAE0108 */ lw $t6, 0x108($sp)
-/* 0D0884 80315884 01BE2023 */ subu $a0, $t5, $fp
-/* 0D0888 80315888 3132000F */ andi $s2, $t1, 0xf
-/* 0D088C 8031588C 00005025 */ move $t2, $zero
-/* 0D0890 80315890 00005825 */ move $t3, $zero
-/* 0D0894 80315894 00806025 */ move $t4, $a0
-/* 0D0898 80315898 16400006 */ bnez $s2, .L_US_803158B4
-/* 0D089C 8031589C 01C91823 */ subu $v1, $t6, $t1
-/* 0D08A0 803158A0 8EEF0000 */ lw $t7, ($s7)
-/* 0D08A4 803158A4 000FC080 */ sll $t8, $t7, 2
-/* 0D08A8 803158A8 07020003 */ bltzl $t8, .L_US_803158B8
-/* 0D08AC 803158AC 240E0010 */ li $t6, 16
-/* 0D08B0 803158B0 24120010 */ li $s2, 16
-.L_US_803158B4:
-/* 0D08B4 803158B4 240E0010 */ li $t6, 16
-.L_US_803158B8:
-/* 0D08B8 803158B8 01D22823 */ subu $a1, $t6, $s2
-/* 0D08BC 803158BC 0083082A */ slt $at, $a0, $v1
-/* 0D08C0 803158C0 1020000C */ beqz $at, .L_US_803158F4
-/* 0D08C4 803158C4 00A0B025 */ move $s6, $a1
-/* 0D08C8 803158C8 00851023 */ subu $v0, $a0, $a1
-/* 0D08CC 803158CC 2442000F */ addiu $v0, $v0, 0xf
-/* 0D08D0 803158D0 04410003 */ bgez $v0, .L_US_803158E0
-/* 0D08D4 803158D4 00027903 */ sra $t7, $v0, 4
-/* 0D08D8 803158D8 2441000F */ addiu $at, $v0, 0xf
-/* 0D08DC 803158DC 00017903 */ sra $t7, $at, 4
-.L_US_803158E0:
-/* 0D08E0 803158E0 000F8100 */ sll $s0, $t7, 4
-/* 0D08E4 803158E4 00B0C821 */ addu $t9, $a1, $s0
-/* 0D08E8 803158E8 01E04025 */ move $t0, $t7
-/* 0D08EC 803158EC 10000012 */ b .L_US_80315938
-/* 0D08F0 803158F0 03249823 */ subu $s3, $t9, $a0
-.L_US_803158F4:
-/* 0D08F4 803158F4 00721021 */ addu $v0, $v1, $s2
-/* 0D08F8 803158F8 2450FFF0 */ addiu $s0, $v0, -0x10
-/* 0D08FC 803158FC 1E000003 */ bgtz $s0, .L_US_8031590C
-/* 0D0900 80315900 00009825 */ move $s3, $zero
-/* 0D0904 80315904 00008025 */ move $s0, $zero
-/* 0D0908 80315908 0060B025 */ move $s6, $v1
-.L_US_8031590C:
-/* 0D090C 8031590C 2608000F */ addiu $t0, $s0, 0xf
-/* 0D0910 80315910 8FEE0008 */ lw $t6, 8($ra)
-/* 0D0914 80315914 05010003 */ bgez $t0, .L_US_80315924
-/* 0D0918 80315918 0008C103 */ sra $t8, $t0, 4
-/* 0D091C 8031591C 2501000F */ addiu $at, $t0, 0xf
-/* 0D0920 80315920 0001C103 */ sra $t8, $at, 4
-.L_US_80315924:
-/* 0D0924 80315924 11C00003 */ beqz $t6, .L_US_80315934
-/* 0D0928 80315928 03004025 */ move $t0, $t8
-/* 0D092C 8031592C 10000002 */ b .L_US_80315938
-/* 0D0930 80315930 240B0001 */ li $t3, 1
-.L_US_80315934:
-/* 0D0934 80315934 240A0001 */ li $t2, 1
-.L_US_80315938:
-/* 0D0938 80315938 11000032 */ beqz $t0, .L_US_80315A04
-/* 0D093C 8031593C 24030009 */ li $v1, 9
-/* 0D0940 80315940 01321023 */ subu $v0, $t1, $s2
-/* 0D0944 80315944 24420010 */ addiu $v0, $v0, 0x10
-/* 0D0948 80315948 04410003 */ bgez $v0, .L_US_80315958
-/* 0D094C 8031594C 00027903 */ sra $t7, $v0, 4
-/* 0D0950 80315950 2441000F */ addiu $at, $v0, 0xf
-/* 0D0954 80315954 00017903 */ sra $t7, $at, 4
-.L_US_80315958:
-/* 0D0958 80315958 01E30019 */ multu $t7, $v1
-/* 0D095C 8031595C 8FB80118 */ lw $t8, 0x118($sp)
-/* 0D0960 80315960 AFBF0158 */ sw $ra, 0x158($sp)
-/* 0D0964 80315964 8FA60140 */ lw $a2, 0x140($sp)
-/* 0D0968 80315968 26E70003 */ addiu $a3, $s7, 3
-/* 0D096C 8031596C AFAA0148 */ sw $t2, 0x148($sp)
-/* 0D0970 80315970 AFAB0144 */ sw $t3, 0x144($sp)
-/* 0D0974 80315974 AFAC0104 */ sw $t4, 0x104($sp)
-/* 0D0978 80315978 AFAD0110 */ sw $t5, 0x110($sp)
-/* 0D097C 8031597C 0000C812 */ mflo $t9
-/* 0D0980 80315980 03382021 */ addu $a0, $t9, $t8
-/* 0D0984 80315984 00000000 */ nop
-/* 0D0988 80315988 01030019 */ multu $t0, $v1
-/* 0D098C 8031598C 00008812 */ mflo $s1
-/* 0D0990 80315990 02202825 */ move $a1, $s1
-/* 0D0994 80315994 0C0C60C0 */ jal dma_sample_data
-/* 0D0998 80315998 00000000 */ nop
-/* 0D099C 8031599C 3047000F */ andi $a3, $v0, 0xf
-/* 0D09A0 803159A0 02802025 */ move $a0, $s4
-/* 0D09A4 803159A4 3C0E0800 */ lui $t6, (0x080003F0 >> 16) # lui $t6, 0x800
-/* 0D09A8 803159A8 8FAA0148 */ lw $t2, 0x148($sp)
-/* 0D09AC 803159AC 8FAB0144 */ lw $t3, 0x144($sp)
-/* 0D09B0 803159B0 8FAC0104 */ lw $t4, 0x104($sp)
-/* 0D09B4 803159B4 8FAD0110 */ lw $t5, 0x110($sp)
-/* 0D09B8 803159B8 8FBF0158 */ lw $ra, 0x158($sp)
-/* 0D09BC 803159BC 35CE03F0 */ ori $t6, (0x080003F0 & 0xFFFF) # ori $t6, $t6, 0x3f0
-/* 0D09C0 803159C0 02277821 */ addu $t7, $s1, $a3
-/* 0D09C4 803159C4 31F9FFFF */ andi $t9, $t7, 0xffff
-/* 0D09C8 803159C8 AC8E0000 */ sw $t6, ($a0)
-/* 0D09CC 803159CC 26940008 */ addiu $s4, $s4, 8
-/* 0D09D0 803159D0 AC990004 */ sw $t9, 4($a0)
-/* 0D09D4 803159D4 02802825 */ move $a1, $s4
-/* 0D09D8 803159D8 00477023 */ subu $t6, $v0, $a3
-/* 0D09DC 803159DC 3C018000 */ lui $at, 0x8000
-/* 0D09E0 803159E0 01C17821 */ addu $t7, $t6, $at
-/* 0D09E4 803159E4 3C180400 */ lui $t8, 0x400
-/* 0D09E8 803159E8 ACB80000 */ sw $t8, ($a1)
-/* 0D09EC 803159EC ACAF0004 */ sw $t7, 4($a1)
-/* 0D09F0 803159F0 8EE60000 */ lw $a2, ($s7)
-/* 0D09F4 803159F4 26940008 */ addiu $s4, $s4, 8
-/* 0D09F8 803159F8 0006C880 */ sll $t9, $a2, 2
-/* 0D09FC 803159FC 10000006 */ b .L_US_80315A18
-/* 0D0A00 80315A00 001937C2 */ srl $a2, $t9, 0x1f
-.L_US_80315A04:
-/* 0D0A04 80315A04 8EE60000 */ lw $a2, ($s7)
-/* 0D0A08 80315A08 00008025 */ move $s0, $zero
-/* 0D0A0C 80315A0C 00003825 */ move $a3, $zero
-/* 0D0A10 80315A10 00067080 */ sll $t6, $a2, 2
-/* 0D0A14 80315A14 000E37C2 */ srl $a2, $t6, 0x1f
-.L_US_80315A18:
-/* 0D0A18 80315A18 10C0000F */ beqz $a2, .L_US_80315A58
-/* 0D0A1C 80315A1C 02801025 */ move $v0, $s4
-/* 0D0A20 80315A20 3C190F00 */ lui $t9, 0xf00
-/* 0D0A24 80315A24 AC590000 */ sw $t9, ($v0)
-/* 0D0A28 80315A28 8FB8015C */ lw $t8, 0x15c($sp)
-/* 0D0A2C 80315A2C 3C018000 */ lui $at, (0x80000010 >> 16) # lui $at, 0x8000
-/* 0D0A30 80315A30 34210010 */ ori $at, (0x80000010 & 0xFFFF) # ori $at, $at, 0x10
-/* 0D0A34 80315A34 8F0E0008 */ lw $t6, 8($t8)
-/* 0D0A38 80315A38 24190002 */ li $t9, 2
-/* 0D0A3C 80315A3C 26940008 */ addiu $s4, $s4, 8
-/* 0D0A40 80315A40 01C17821 */ addu $t7, $t6, $at
-/* 0D0A44 80315A44 AC4F0004 */ sw $t7, 4($v0)
-/* 0D0A48 80315A48 AFB90140 */ sw $t9, 0x140($sp)
-/* 0D0A4C 80315A4C 92F80000 */ lbu $t8, ($s7)
-/* 0D0A50 80315A50 330EFFDF */ andi $t6, $t8, 0xffdf
-/* 0D0A54 80315A54 A2EE0000 */ sb $t6, ($s7)
-.L_US_80315A58:
-/* 0D0A58 80315A58 17C0001C */ bnez $fp, .L_US_80315ACC
-/* 0D0A5C 80315A5C 02801025 */ move $v0, $s4
-/* 0D0A60 80315A60 24EF03F0 */ addiu $t7, $a3, 0x3f0
-/* 0D0A64 80315A64 31F9FFFF */ andi $t9, $t7, 0xffff
-/* 0D0A68 80315A68 3C010800 */ lui $at, 0x800
-/* 0D0A6C 80315A6C 0321C025 */ or $t8, $t9, $at
-/* 0D0A70 80315A70 00103040 */ sll $a2, $s0, 1
-/* 0D0A74 80315A74 30CEFFFF */ andi $t6, $a2, 0xffff
-/* 0D0A78 80315A78 3C010180 */ lui $at, 0x180
-/* 0D0A7C 80315A7C 02801025 */ move $v0, $s4
-/* 0D0A80 80315A80 01C17825 */ or $t7, $t6, $at
-/* 0D0A84 80315A84 AC4F0004 */ sw $t7, 4($v0)
-/* 0D0A88 80315A88 AC580000 */ sw $t8, ($v0)
-/* 0D0A8C 80315A8C 8FB90140 */ lw $t9, 0x140($sp)
-/* 0D0A90 80315A90 26940008 */ addiu $s4, $s4, 8
-/* 0D0A94 80315A94 3C010100 */ lui $at, 0x100
-/* 0D0A98 80315A98 333800FF */ andi $t8, $t9, 0xff
-/* 0D0A9C 80315A9C 00187400 */ sll $t6, $t8, 0x10
-/* 0D0AA0 80315AA0 01C17825 */ or $t7, $t6, $at
-/* 0D0AA4 80315AA4 02801825 */ move $v1, $s4
-/* 0D0AA8 80315AA8 AC6F0000 */ sw $t7, ($v1)
-/* 0D0AAC 80315AAC 8EF90034 */ lw $t9, 0x34($s7)
-/* 0D0AB0 80315AB0 3C018000 */ lui $at, 0x8000
-/* 0D0AB4 80315AB4 00127040 */ sll $t6, $s2, 1
-/* 0D0AB8 80315AB8 0321C021 */ addu $t8, $t9, $at
-/* 0D0ABC 80315ABC AC780004 */ sw $t8, 4($v1)
-/* 0D0AC0 80315AC0 26940008 */ addiu $s4, $s4, 8
-/* 0D0AC4 80315AC4 10000030 */ b .L_US_80315B88
-/* 0D0AC8 80315AC8 AFAE0128 */ sw $t6, 0x128($sp)
-.L_US_80315ACC:
-/* 0D0ACC 80315ACC 24EF03F0 */ addiu $t7, $a3, 0x3f0
-/* 0D0AD0 80315AD0 31F9FFFF */ andi $t9, $t7, 0xffff
-/* 0D0AD4 80315AD4 3C010800 */ lui $at, 0x800
-/* 0D0AD8 80315AD8 0321C025 */ or $t8, $t9, $at
-/* 0D0ADC 80315ADC 2401FFE0 */ li $at, -32
-/* 0D0AE0 80315AE0 26A3001F */ addiu $v1, $s5, 0x1f
-/* 0D0AE4 80315AE4 00617024 */ and $t6, $v1, $at
-/* 0D0AE8 80315AE8 25D90180 */ addiu $t9, $t6, 0x180
-/* 0D0AEC 80315AEC 01C01825 */ move $v1, $t6
-/* 0D0AF0 80315AF0 AC580000 */ sw $t8, ($v0)
-/* 0D0AF4 80315AF4 00103040 */ sll $a2, $s0, 1
-/* 0D0AF8 80315AF8 30CEFFFF */ andi $t6, $a2, 0xffff
-/* 0D0AFC 80315AFC 0019C400 */ sll $t8, $t9, 0x10
-/* 0D0B00 80315B00 030E7825 */ or $t7, $t8, $t6
-/* 0D0B04 80315B04 AC4F0004 */ sw $t7, 4($v0)
-/* 0D0B08 80315B08 8FB90140 */ lw $t9, 0x140($sp)
-/* 0D0B0C 80315B0C 26940008 */ addiu $s4, $s4, 8
-/* 0D0B10 80315B10 3C010100 */ lui $at, 0x100
-/* 0D0B14 80315B14 333800FF */ andi $t8, $t9, 0xff
-/* 0D0B18 80315B18 00187400 */ sll $t6, $t8, 0x10
-/* 0D0B1C 80315B1C 01C17825 */ or $t7, $t6, $at
-/* 0D0B20 80315B20 02802025 */ move $a0, $s4
-/* 0D0B24 80315B24 AC8F0000 */ sw $t7, ($a0)
-/* 0D0B28 80315B28 8EF90034 */ lw $t9, 0x34($s7)
-/* 0D0B2C 80315B2C 3C018000 */ lui $at, 0x8000
-/* 0D0B30 80315B30 00127040 */ sll $t6, $s2, 1
-/* 0D0B34 80315B34 0321C021 */ addu $t8, $t9, $at
-/* 0D0B38 80315B38 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0D0B3C 80315B3C 006E7821 */ addu $t7, $v1, $t6
-/* 0D0B40 80315B40 AC980004 */ sw $t8, 4($a0)
-/* 0D0B44 80315B44 25F90180 */ addiu $t9, $t7, 0x180
-/* 0D0B48 80315B48 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0D0B4C 80315B4C 0321C024 */ and $t8, $t9, $at
-/* 0D0B50 80315B50 26940008 */ addiu $s4, $s4, 8
-/* 0D0B54 80315B54 3C010A00 */ lui $at, 0xa00
-/* 0D0B58 80315B58 03017025 */ or $t6, $t8, $at
-/* 0D0B5C 80315B5C 02802825 */ move $a1, $s4
-/* 0D0B60 80315B60 ACAE0000 */ sw $t6, ($a1)
-/* 0D0B64 80315B64 02167021 */ addu $t6, $s0, $s6
-/* 0D0B68 80315B68 26B90180 */ addiu $t9, $s5, 0x180
-/* 0D0B6C 80315B6C 0019C400 */ sll $t8, $t9, 0x10
-/* 0D0B70 80315B70 01D37823 */ subu $t7, $t6, $s3
-/* 0D0B74 80315B74 000FC840 */ sll $t9, $t7, 1
-/* 0D0B78 80315B78 332EFFFF */ andi $t6, $t9, 0xffff
-/* 0D0B7C 80315B7C 030E7825 */ or $t7, $t8, $t6
-/* 0D0B80 80315B80 ACAF0004 */ sw $t7, 4($a1)
-/* 0D0B84 80315B84 26940008 */ addiu $s4, $s4, 8
-.L_US_80315B88:
-/* 0D0B88 80315B88 8FAE0140 */ lw $t6, 0x140($sp)
-/* 0D0B8C 80315B8C 03D0C821 */ addu $t9, $fp, $s0
-/* 0D0B90 80315B90 0336C021 */ addu $t8, $t9, $s6
-/* 0D0B94 80315B94 24010001 */ li $at, 1
-/* 0D0B98 80315B98 11C10008 */ beq $t6, $at, .L_US_80315BBC
-/* 0D0B9C 80315B9C 0313F023 */ subu $fp, $t8, $s3
-/* 0D0BA0 80315BA0 39C20002 */ xori $v0, $t6, 2
-/* 0D0BA4 80315BA4 02167821 */ addu $t7, $s0, $s6
-/* 0D0BA8 80315BA8 01F31823 */ subu $v1, $t7, $s3
-/* 0D0BAC 80315BAC 10400007 */ beqz $v0, .L_US_80315BCC
-/* 0D0BB0 80315BB0 AFA00140 */ sw $zero, 0x140($sp)
-/* 0D0BB4 80315BB4 10000008 */ b .L_US_80315BD8
-/* 0D0BB8 80315BB8 0003C040 */ sll $t8, $v1, 1
-.L_US_80315BBC:
-/* 0D0BBC 80315BBC AFA00128 */ sw $zero, 0x128($sp)
-/* 0D0BC0 80315BC0 02A6A821 */ addu $s5, $s5, $a2
-/* 0D0BC4 80315BC4 1000000B */ b .L_US_80315BF4
-/* 0D0BC8 80315BC8 AFA00140 */ sw $zero, 0x140($sp)
-.L_US_80315BCC:
-/* 0D0BCC 80315BCC 0003C840 */ sll $t9, $v1, 1
-/* 0D0BD0 80315BD0 10000008 */ b .L_US_80315BF4
-/* 0D0BD4 80315BD4 02B9A821 */ addu $s5, $s5, $t9
-.L_US_80315BD8:
-/* 0D0BD8 80315BD8 52A00004 */ beql $s5, $zero, .L_US_80315BEC
-/* 0D0BDC 80315BDC 0072A821 */ addu $s5, $v1, $s2
-/* 0D0BE0 80315BE0 10000004 */ b .L_US_80315BF4
-/* 0D0BE4 80315BE4 02B8A821 */ addu $s5, $s5, $t8
-/* 0D0BE8 80315BE8 0072A821 */ addu $s5, $v1, $s2
-.L_US_80315BEC:
-/* 0D0BEC 80315BEC 00157040 */ sll $t6, $s5, 1
-/* 0D0BF0 80315BF0 01C0A825 */ move $s5, $t6
-.L_US_80315BF4:
-/* 0D0BF4 80315BF4 11400014 */ beqz $t2, .L_US_80315C48
-/* 0D0BF8 80315BF8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0D0BFC 80315BFC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0D0C00 80315C00 26AF0180 */ addiu $t7, $s5, 0x180
-/* 0D0C04 80315C04 01E1C824 */ and $t9, $t7, $at
-/* 0D0C08 80315C08 3C010200 */ lui $at, 0x200
-/* 0D0C0C 80315C0C 02801025 */ move $v0, $s4
-/* 0D0C10 80315C10 01BE7023 */ subu $t6, $t5, $fp
-/* 0D0C14 80315C14 000E7840 */ sll $t7, $t6, 1
-/* 0D0C18 80315C18 0321C025 */ or $t8, $t9, $at
-/* 0D0C1C 80315C1C AC580000 */ sw $t8, ($v0)
-/* 0D0C20 80315C20 AC4F0004 */ sw $t7, 4($v0)
-/* 0D0C24 80315C24 92F80000 */ lbu $t8, ($s7)
-/* 0D0C28 80315C28 26940008 */ addiu $s4, $s4, 8
-/* 0D0C2C 80315C2C AEE00014 */ sw $zero, 0x14($s7)
-/* 0D0C30 80315C30 370E0010 */ ori $t6, $t8, 0x10
-/* 0D0C34 80315C34 A2EE0000 */ sb $t6, ($s7)
-/* 0D0C38 80315C38 92EF0000 */ lbu $t7, ($s7)
-/* 0D0C3C 80315C3C 31F9FF7F */ andi $t9, $t7, 0xff7f
-/* 0D0C40 80315C40 1000000E */ b .L_US_80315C7C
-/* 0D0C44 80315C44 A2F90000 */ sb $t9, ($s7)
-.L_US_80315C48:
-/* 0D0C48 80315C48 51600008 */ beql $t3, $zero, .L_US_80315C6C
-/* 0D0C4C 80315C4C 8EF80014 */ lw $t8, 0x14($s7)
-/* 0D0C50 80315C50 92EE0000 */ lbu $t6, ($s7)
-/* 0D0C54 80315C54 35CF0020 */ ori $t7, $t6, 0x20
-/* 0D0C58 80315C58 A2EF0000 */ sb $t7, ($s7)
-/* 0D0C5C 80315C5C 8FF90000 */ lw $t9, ($ra)
-/* 0D0C60 80315C60 10000004 */ b .L_US_80315C74
-/* 0D0C64 80315C64 AEF90014 */ sw $t9, 0x14($s7)
-/* 0D0C68 80315C68 8EF80014 */ lw $t8, 0x14($s7)
-.L_US_80315C6C:
-/* 0D0C6C 80315C6C 030C7021 */ addu $t6, $t8, $t4
-/* 0D0C70 80315C70 AEEE0014 */ sw $t6, 0x14($s7)
-.L_US_80315C74:
-/* 0D0C74 80315C74 57CDFF02 */ bnel $fp, $t5, .L_US_80315880
-/* 0D0C78 80315C78 8EE90014 */ lw $t1, 0x14($s7)
-.L_US_80315C7C:
-/* 0D0C7C 80315C7C 8FAF0054 */ lw $t7, 0x54($sp)
-/* 0D0C80 80315C80 8FB900E0 */ lw $t9, 0xe0($sp)
-/* 0D0C84 80315C84 24010002 */ li $at, 2
-/* 0D0C88 80315C88 15E00008 */ bnez $t7, .L_US_80315CAC
-/* 0D0C8C 80315C8C 8FAE0128 */ lw $t6, 0x128($sp)
-/* 0D0C90 80315C90 1321000D */ beq $t9, $at, .L_US_80315CC8
-/* 0D0C94 80315C94 8FB800DC */ lw $t8, 0xdc($sp)
-/* 0D0C98 80315C98 8EE50000 */ lw $a1, ($s7)
-/* 0D0C9C 80315C9C 000530C0 */ sll $a2, $a1, 3
-/* 0D0CA0 80315CA0 0006C7C2 */ srl $t8, $a2, 0x1f
-/* 0D0CA4 80315CA4 10000066 */ b .L_US_80315E40
-/* 0D0CA8 80315CA8 03003025 */ move $a2, $t8
-.L_US_80315CAC:
-/* 0D0CAC 80315CAC 25CF0180 */ addiu $t7, $t6, 0x180
-/* 0D0CB0 80315CB0 A7AF00CE */ sh $t7, 0xce($sp)
-/* 0D0CB4 80315CB4 8EE50000 */ lw $a1, ($s7)
-/* 0D0CB8 80315CB8 000530C0 */ sll $a2, $a1, 3
-/* 0D0CBC 80315CBC 0006CFC2 */ srl $t9, $a2, 0x1f
-/* 0D0CC0 80315CC0 1000005F */ b .L_US_80315E40
-/* 0D0CC4 80315CC4 03203025 */ move $a2, $t9
-.L_US_80315CC8:
-/* 0D0CC8 80315CC8 13000009 */ beqz $t8, .L_US_80315CF0
-/* 0D0CCC 80315CCC 02801025 */ move $v0, $s4
-/* 0D0CD0 80315CD0 24010001 */ li $at, 1
-/* 0D0CD4 80315CD4 13010034 */ beq $t8, $at, .L_US_80315DA8
-/* 0D0CD8 80315CD8 02801025 */ move $v0, $s4
-/* 0D0CDC 80315CDC 8EE50000 */ lw $a1, ($s7)
-/* 0D0CE0 80315CE0 000530C0 */ sll $a2, $a1, 3
-/* 0D0CE4 80315CE4 000677C2 */ srl $t6, $a2, 0x1f
-/* 0D0CE8 80315CE8 10000055 */ b .L_US_80315E40
-/* 0D0CEC 80315CEC 01C03025 */ move $a2, $t6
-.L_US_80315CF0:
-/* 0D0CF0 80315CF0 8FAF0128 */ lw $t7, 0x128($sp)
-/* 0D0CF4 80315CF4 3C010800 */ lui $at, 0x800
-/* 0D0CF8 80315CF8 25A30004 */ addiu $v1, $t5, 4
-/* 0D0CFC 80315CFC 25F90180 */ addiu $t9, $t7, 0x180
-/* 0D0D00 80315D00 3338FFFF */ andi $t8, $t9, 0xffff
-/* 0D0D04 80315D04 03017025 */ or $t6, $t8, $at
-/* 0D0D08 80315D08 3C010020 */ lui $at, 0x20
-/* 0D0D0C 80315D0C 306FFFFF */ andi $t7, $v1, 0xffff
-/* 0D0D10 80315D10 01E1C825 */ or $t9, $t7, $at
-/* 0D0D14 80315D14 26940008 */ addiu $s4, $s4, 8
-/* 0D0D18 80315D18 3C180501 */ lui $t8, (0x0501FF60 >> 16) # lui $t8, 0x501
-/* 0D0D1C 80315D1C AC590004 */ sw $t9, 4($v0)
-/* 0D0D20 80315D20 AC4E0000 */ sw $t6, ($v0)
-/* 0D0D24 80315D24 3718FF60 */ ori $t8, (0x0501FF60 & 0xFFFF) # ori $t8, $t8, 0xff60
-/* 0D0D28 80315D28 02802025 */ move $a0, $s4
-/* 0D0D2C 80315D2C AC980000 */ sw $t8, ($a0)
-/* 0D0D30 80315D30 8EEE0034 */ lw $t6, 0x34($s7)
-/* 0D0D34 80315D34 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
-/* 0D0D38 80315D38 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
-/* 0D0D3C 80315D3C 01C17821 */ addu $t7, $t6, $at
-/* 0D0D40 80315D40 AC8F0004 */ sw $t7, 4($a0)
-/* 0D0D44 80315D44 24190024 */ li $t9, 36
-/* 0D0D48 80315D48 AFA300D0 */ sw $v1, 0xd0($sp)
-/* 0D0D4C 80315D4C A7B900CE */ sh $t9, 0xce($sp)
-/* 0D0D50 80315D50 8EE50000 */ lw $a1, ($s7)
-/* 0D0D54 80315D54 26940008 */ addiu $s4, $s4, 8
-/* 0D0D58 80315D58 02801025 */ move $v0, $s4
-/* 0D0D5C 80315D5C 000530C0 */ sll $a2, $a1, 3
-/* 0D0D60 80315D60 0006C7C2 */ srl $t8, $a2, 0x1f
-/* 0D0D64 80315D64 13000036 */ beqz $t8, .L_US_80315E40
-/* 0D0D68 80315D68 03003025 */ move $a2, $t8
-/* 0D0D6C 80315D6C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
-/* 0D0D70 80315D70 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
-/* 0D0D74 80315D74 25AE0024 */ addiu $t6, $t5, 0x24
-/* 0D0D78 80315D78 01C17824 */ and $t7, $t6, $at
-/* 0D0D7C 80315D7C 3C010200 */ lui $at, 0x200
-/* 0D0D80 80315D80 01E1C825 */ or $t9, $t7, $at
-/* 0D0D84 80315D84 25B80010 */ addiu $t8, $t5, 0x10
-/* 0D0D88 80315D88 AC580004 */ sw $t8, 4($v0)
-/* 0D0D8C 80315D8C AC590000 */ sw $t9, ($v0)
-/* 0D0D90 80315D90 8EE50000 */ lw $a1, ($s7)
-/* 0D0D94 80315D94 26940008 */ addiu $s4, $s4, 8
-/* 0D0D98 80315D98 000530C0 */ sll $a2, $a1, 3
-/* 0D0D9C 80315D9C 000677C2 */ srl $t6, $a2, 0x1f
-/* 0D0DA0 80315DA0 10000027 */ b .L_US_80315E40
-/* 0D0DA4 80315DA4 01C03025 */ move $a2, $t6
-.L_US_80315DA8:
-/* 0D0DA8 80315DA8 8FAF0128 */ lw $t7, 0x128($sp)
-/* 0D0DAC 80315DAC 3C010800 */ lui $at, 0x800
-/* 0D0DB0 80315DB0 26940008 */ addiu $s4, $s4, 8
-/* 0D0DB4 80315DB4 25F90180 */ addiu $t9, $t7, 0x180
-/* 0D0DB8 80315DB8 3338FFFF */ andi $t8, $t9, 0xffff
-/* 0D0DBC 80315DBC 03017025 */ or $t6, $t8, $at
-/* 0D0DC0 80315DC0 25AF0008 */ addiu $t7, $t5, 8
-/* 0D0DC4 80315DC4 31F9FFFF */ andi $t9, $t7, 0xffff
-/* 0D0DC8 80315DC8 AC4E0000 */ sw $t6, ($v0)
-/* 0D0DCC 80315DCC 3C010160 */ lui $at, 0x160
-/* 0D0DD0 80315DD0 0321C025 */ or $t8, $t9, $at
-/* 0D0DD4 80315DD4 3C0E0501 */ lui $t6, (0x0501FF60 >> 16) # lui $t6, 0x501
-/* 0D0DD8 80315DD8 AC580004 */ sw $t8, 4($v0)
-/* 0D0DDC 80315DDC 35CEFF60 */ ori $t6, (0x0501FF60 & 0xFFFF) # ori $t6, $t6, 0xff60
-/* 0D0DE0 80315DE0 02801825 */ move $v1, $s4
-/* 0D0DE4 80315DE4 AC6E0000 */ sw $t6, ($v1)
-/* 0D0DE8 80315DE8 8EEF0034 */ lw $t7, 0x34($s7)
-/* 0D0DEC 80315DEC 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
-/* 0D0DF0 80315DF0 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
-/* 0D0DF4 80315DF4 26940008 */ addiu $s4, $s4, 8
-/* 0D0DF8 80315DF8 3C180A00 */ lui $t8, (0x0A000164 >> 16) # lui $t8, 0xa00
-/* 0D0DFC 80315DFC 01E1C821 */ addu $t9, $t7, $at
-/* 0D0E00 80315E00 AC790004 */ sw $t9, 4($v1)
-/* 0D0E04 80315E04 37180164 */ ori $t8, (0x0A000164 & 0xFFFF) # ori $t8, $t8, 0x164
-/* 0D0E08 80315E08 02802025 */ move $a0, $s4
-/* 0D0E0C 80315E0C AC980000 */ sw $t8, ($a0)
-/* 0D0E10 80315E10 8FAE00D0 */ lw $t6, 0xd0($sp)
-/* 0D0E14 80315E14 26940008 */ addiu $s4, $s4, 8
-/* 0D0E18 80315E18 25D90020 */ addiu $t9, $t6, 0x20
-/* 0D0E1C 80315E1C 25AE0004 */ addiu $t6, $t5, 4
-/* 0D0E20 80315E20 31CFFFFF */ andi $t7, $t6, 0xffff
-/* 0D0E24 80315E24 0019C400 */ sll $t8, $t9, 0x10
-/* 0D0E28 80315E28 030FC825 */ or $t9, $t8, $t7
-/* 0D0E2C 80315E2C AC990004 */ sw $t9, 4($a0)
-/* 0D0E30 80315E30 8EE50000 */ lw $a1, ($s7)
-/* 0D0E34 80315E34 000530C0 */ sll $a2, $a1, 3
-/* 0D0E38 80315E38 000677C2 */ srl $t6, $a2, 0x1f
-/* 0D0E3C 80315E3C 01C03025 */ move $a2, $t6
-.L_US_80315E40:
-/* 0D0E40 80315E40 10C00003 */ beqz $a2, .L_US_80315E50
-/* 0D0E44 80315E44 8FA200DC */ lw $v0, 0xdc($sp)
-/* 0D0E48 80315E48 10000008 */ b .L_US_80315E6C
-/* 0D0E4C 80315E4C AFA00140 */ sw $zero, 0x140($sp)
-.L_US_80315E50:
-/* 0D0E50 80315E50 8FB800E0 */ lw $t8, 0xe0($sp)
-/* 0D0E54 80315E54 24420001 */ addiu $v0, $v0, 1
-/* 0D0E58 80315E58 AFA200DC */ sw $v0, 0xdc($sp)
-/* 0D0E5C 80315E5C 5458FE5C */ bnel $v0, $t8, .L_US_803157D0
-/* 0D0E60 80315E60 8FAF015C */ lw $t7, 0x15c($sp)
-.L_US_80315E64:
-/* 0D0E64 80315E64 AFA00140 */ sw $zero, 0x140($sp)
-/* 0D0E68 80315E68 8EE50000 */ lw $a1, ($s7)
-.L_US_80315E6C:
-/* 0D0E6C 80315E6C 00057840 */ sll $t7, $a1, 1
-/* 0D0E70 80315E70 000FCFC2 */ srl $t9, $t7, 0x1f
-/* 0D0E74 80315E74 24010001 */ li $at, 1
-/* 0D0E78 80315E78 17210006 */ bne $t9, $at, .L_US_80315E94
-/* 0D0E7C 80315E7C 02802025 */ move $a0, $s4
-/* 0D0E80 80315E80 240E0001 */ li $t6, 1
-/* 0D0E84 80315E84 AFAE0140 */ sw $t6, 0x140($sp)
-/* 0D0E88 80315E88 92F80000 */ lbu $t8, ($s7)
-/* 0D0E8C 80315E8C 330FFFBF */ andi $t7, $t8, 0xffbf
-/* 0D0E90 80315E90 A2EF0000 */ sb $t7, ($s7)
-.L_US_80315E94:
-/* 0D0E94 80315E94 8FB10048 */ lw $s1, 0x48($sp)
-/* 0D0E98 80315E98 97B900CE */ lhu $t9, 0xce($sp)
-/* 0D0E9C 80315E9C 8FAE0140 */ lw $t6, 0x140($sp)
-/* 0D0EA0 80315EA0 02E02825 */ move $a1, $s7
-/* 0D0EA4 80315EA4 97A7005E */ lhu $a3, 0x5e($sp)
-/* 0D0EA8 80315EA8 02203025 */ move $a2, $s1
-/* 0D0EAC 80315EAC AFB90010 */ sw $t9, 0x10($sp)
-/* 0D0EB0 80315EB0 0C0C5837 */ jal final_resample
-/* 0D0EB4 80315EB4 AFAE0014 */ sw $t6, 0x14($sp)
-/* 0D0EB8 80315EB8 96F8000C */ lhu $t8, 0xc($s7)
-/* 0D0EBC 80315EBC 0040A025 */ move $s4, $v0
-/* 0D0EC0 80315EC0 02802025 */ move $a0, $s4
-/* 0D0EC4 80315EC4 17000004 */ bnez $t8, .L_US_80315ED8
-/* 0D0EC8 80315EC8 02E02825 */ move $a1, $s7
-/* 0D0ECC 80315ECC 96EF0010 */ lhu $t7, 0x10($s7)
-/* 0D0ED0 80315ED0 51E00004 */ beql $t7, $zero, .L_US_80315EE4
-/* 0D0ED4 80315ED4 96F9000E */ lhu $t9, 0xe($s7)
-.L_US_80315ED8:
-/* 0D0ED8 80315ED8 1000000A */ b .L_US_80315F04
-/* 0D0EDC 80315EDC 24100001 */ li $s0, 1
-/* 0D0EE0 80315EE0 96F9000E */ lhu $t9, 0xe($s7)
-.L_US_80315EE4:
-/* 0D0EE4 80315EE4 17200005 */ bnez $t9, .L_US_80315EFC
-/* 0D0EE8 80315EE8 00000000 */ nop
-/* 0D0EEC 80315EEC 96EE0012 */ lhu $t6, 0x12($s7)
-/* 0D0EF0 80315EF0 00008025 */ move $s0, $zero
-/* 0D0EF4 80315EF4 11C00003 */ beqz $t6, .L_US_80315F04
-/* 0D0EF8 80315EF8 00000000 */ nop
-.L_US_80315EFC:
-/* 0D0EFC 80315EFC 10000001 */ b .L_US_80315F04
-/* 0D0F00 80315F00 24100002 */ li $s0, 2
-.L_US_80315F04:
-/* 0D0F04 80315F04 8FB80140 */ lw $t8, 0x140($sp)
-/* 0D0F08 80315F08 8FA60174 */ lw $a2, 0x174($sp)
-/* 0D0F0C 80315F0C 00003825 */ move $a3, $zero
-/* 0D0F10 80315F10 AFB00010 */ sw $s0, 0x10($sp)
-/* 0D0F14 80315F14 0C0C584E */ jal process_envelope
-/* 0D0F18 80315F18 AFB80014 */ sw $t8, 0x14($sp)
-/* 0D0F1C 80315F1C 92EF0001 */ lbu $t7, 1($s7)
-/* 0D0F20 80315F20 0040A025 */ move $s4, $v0
-/* 0D0F24 80315F24 00402025 */ move $a0, $v0
-/* 0D0F28 80315F28 11E00006 */ beqz $t7, .L_US_80315F44
-/* 0D0F2C 80315F2C 02E02825 */ move $a1, $s7
-/* 0D0F30 80315F30 02203025 */ move $a2, $s1
-/* 0D0F34 80315F34 8FA70140 */ lw $a3, 0x140($sp)
-/* 0D0F38 80315F38 0C0C59BF */ jal note_apply_headset_pan_effects
-/* 0D0F3C 80315F3C AFB00010 */ sw $s0, 0x10($sp)
-/* 0D0F40 80315F40 0040A025 */ move $s4, $v0
-.L_US_80315F44:
-/* 0D0F44 80315F44 8FB9016C */ lw $t9, 0x16c($sp)
-.L_US_80315F48:
-/* 0D0F48 80315F48 8FB80064 */ lw $t8, 0x64($sp)
-/* 0D0F4C 80315F4C 272E0001 */ addiu $t6, $t9, 1
-/* 0D0F50 80315F50 3C198022 */ lui $t9, %hi(gMaxSimultaneousNotes) # $t9, 0x8022
-/* 0D0F54 80315F54 8F396B70 */ lw $t9, %lo(gMaxSimultaneousNotes)($t9)
-/* 0D0F58 80315F58 270F00C0 */ addiu $t7, $t8, 0xc0
-/* 0D0F5C 80315F5C AFAF0064 */ sw $t7, 0x64($sp)
-/* 0D0F60 80315F60 01D9082A */ slt $at, $t6, $t9
-/* 0D0F64 80315F64 1420FD9E */ bnez $at, .L_US_803155E0
-/* 0D0F68 80315F68 AFAE016C */ sw $t6, 0x16c($sp)
-.L_US_80315F6C:
-/* 0D0F6C 80315F6C 3C080800 */ lui $t0, 0x800
-/* 0D0F70 80315F70 02802025 */ move $a0, $s4
-/* 0D0F74 80315F74 AC880000 */ sw $t0, ($a0)
-/* 0D0F78 80315F78 8FA30174 */ lw $v1, 0x174($sp)
-/* 0D0F7C 80315F7C 26940008 */ addiu $s4, $s4, 8
-/* 0D0F80 80315F80 02802825 */ move $a1, $s4
-/* 0D0F84 80315F84 0003C040 */ sll $t8, $v1, 1
-/* 0D0F88 80315F88 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0D0F8C 80315F8C AC8F0004 */ sw $t7, 4($a0)
-/* 0D0F90 80315F90 26940008 */ addiu $s4, $s4, 8
-/* 0D0F94 80315F94 3C0E0D00 */ lui $t6, 0xd00
-/* 0D0F98 80315F98 3C1904C0 */ lui $t9, (0x04C00600 >> 16) # lui $t9, 0x4c0
-/* 0D0F9C 80315F9C 37390600 */ ori $t9, (0x04C00600 & 0xFFFF) # ori $t9, $t9, 0x600
-/* 0D0FA0 80315FA0 ACAE0000 */ sw $t6, ($a1)
-/* 0D0FA4 80315FA4 02803025 */ move $a2, $s4
-/* 0D0FA8 80315FA8 ACB90004 */ sw $t9, 4($a1)
-/* 0D0FAC 80315FAC 0018C040 */ sll $t8, $t8, 1
-/* 0D0FB0 80315FB0 330FFFFF */ andi $t7, $t8, 0xffff
-/* 0D0FB4 80315FB4 26940008 */ addiu $s4, $s4, 8
-/* 0D0FB8 80315FB8 ACCF0004 */ sw $t7, 4($a2)
-/* 0D0FBC 80315FBC ACC80000 */ sw $t0, ($a2)
-/* 0D0FC0 80315FC0 02803825 */ move $a3, $s4
-/* 0D0FC4 80315FC4 3C0E0600 */ lui $t6, 0x600
-/* 0D0FC8 80315FC8 ACEE0000 */ sw $t6, ($a3)
-/* 0D0FCC 80315FCC 8FB90170 */ lw $t9, 0x170($sp)
-/* 0D0FD0 80315FD0 3C018000 */ lui $at, 0x8000
-/* 0D0FD4 80315FD4 26820008 */ addiu $v0, $s4, 8
-/* 0D0FD8 80315FD8 0321C021 */ addu $t8, $t9, $at
-/* 0D0FDC 80315FDC ACF80004 */ sw $t8, 4($a3)
-/* 0D0FE0 80315FE0 8FBF0044 */ lw $ra, 0x44($sp)
-/* 0D0FE4 80315FE4 8FBE0040 */ lw $fp, 0x40($sp)
-/* 0D0FE8 80315FE8 8FB7003C */ lw $s7, 0x3c($sp)
-/* 0D0FEC 80315FEC 8FB60038 */ lw $s6, 0x38($sp)
-/* 0D0FF0 80315FF0 8FB50034 */ lw $s5, 0x34($sp)
-/* 0D0FF4 80315FF4 8FB40030 */ lw $s4, 0x30($sp)
-/* 0D0FF8 80315FF8 8FB3002C */ lw $s3, 0x2c($sp)
-/* 0D0FFC 80315FFC 8FB20028 */ lw $s2, 0x28($sp)
-/* 0D1000 80316000 8FB10024 */ lw $s1, 0x24($sp)
-/* 0D1004 80316004 8FB00020 */ lw $s0, 0x20($sp)
-/* 0D1008 80316008 03E00008 */ jr $ra
-/* 0D100C 8031600C 27BD0170 */ addiu $sp, $sp, 0x170
diff --git a/asm/non_matchings/seq_channel_layer_process_script_jp.s b/asm/non_matchings/seq_channel_layer_process_script_jp.s
@@ -1013,7 +1013,7 @@ glabel L8031BBF4
/* 0D6E50 8031BE50 02002825 */ move $a1, $s0
/* 0D6E54 8031BE54 17200004 */ bnez $t9, .L8031BE68
/* 0D6E58 8031BE58 00000000 */ nop
-/* 0D6E5C 8031BE5C 0C0C6459 */ jal func_80319164
+/* 0D6E5C 8031BE5C 0C0C6459 */ jal init_synthetic_wave
/* 0D6E60 8031BE60 A3A8003D */ sb $t0, 0x3d($sp)
/* 0D6E64 8031BE64 93A8003D */ lbu $t0, 0x3d($sp)
.L8031BE68:
diff --git a/asm/non_matchings/seq_channel_layer_process_script_us.s b/asm/non_matchings/seq_channel_layer_process_script_us.s
@@ -972,7 +972,7 @@ glabel L_U_8031CBEC
/* 0D7DF4 8031CDF4 02002825 */ move $a1, $s0
/* 0D7DF8 8031CDF8 17200004 */ bnez $t9, .L8031CE0C
/* 0D7DFC 8031CDFC 00000000 */ nop
-/* 0D7E00 8031CE00 0C0C6874 */ jal func_80319164
+/* 0D7E00 8031CE00 0C0C6874 */ jal init_synthetic_wave
/* 0D7E04 8031CE04 A3A8003D */ sb $t0, 0x3d($sp)
/* 0D7E08 8031CE08 93A8003D */ lbu $t0, 0x3d($sp)
.L8031CE0C:
diff --git a/asm/non_matchings/synthesis_process_notes_jp.s b/asm/non_matchings/synthesis_process_notes_jp.s
@@ -0,0 +1,738 @@
+.late_rodata
+glabel D_80337BB0
+ .word 0x3FFFFFD6, 0x0E94EE39
+glabel D_80337BB8
+ .word 0x3FFFFEB0, 0
+glabel D_80337BC0
+ .word 0x400FFFDB, 0x4CC25072
+glabel D_80337BC8
+ .word 0x407FFEDA, 0
+
+.text
+glabel synthesis_process_notes
+/* 0CF480 80314480 27BDFE88 */ addiu $sp, $sp, -0x178
+/* 0CF484 80314484 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
+/* 0CF488 80314488 8DCE6D70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
+/* 0CF48C 8031448C AFB40030 */ sw $s4, 0x30($sp)
+/* 0CF490 80314490 00C0A025 */ move $s4, $a2
+/* 0CF494 80314494 AFBF0044 */ sw $ra, 0x44($sp)
+/* 0CF498 80314498 AFBE0040 */ sw $fp, 0x40($sp)
+/* 0CF49C 8031449C AFB7003C */ sw $s7, 0x3c($sp)
+/* 0CF4A0 803144A0 AFB60038 */ sw $s6, 0x38($sp)
+/* 0CF4A4 803144A4 AFB50034 */ sw $s5, 0x34($sp)
+/* 0CF4A8 803144A8 AFB3002C */ sw $s3, 0x2c($sp)
+/* 0CF4AC 803144AC AFB20028 */ sw $s2, 0x28($sp)
+/* 0CF4B0 803144B0 AFB10024 */ sw $s1, 0x24($sp)
+/* 0CF4B4 803144B4 AFB00020 */ sw $s0, 0x20($sp)
+/* 0CF4B8 803144B8 AFA40178 */ sw $a0, 0x178($sp)
+/* 0CF4BC 803144BC AFA5017C */ sw $a1, 0x17c($sp)
+/* 0CF4C0 803144C0 AFA00174 */ sw $zero, 0x174($sp)
+/* 0CF4C4 803144C4 19C00267 */ blez $t6, .L80314E64
+/* 0CF4C8 803144C8 AFA0015C */ sw $zero, 0x15c($sp)
+/* 0CF4CC 803144CC AFA0006C */ sw $zero, 0x6c($sp)
+/* 0CF4D0 803144D0 3C1F8000 */ lui $ra, 0x8000
+.L803144D4:
+/* 0CF4D4 803144D4 3C188022 */ lui $t8, %hi(gNotes) # $t8, 0x8022
+/* 0CF4D8 803144D8 8F182A10 */ lw $t8, %lo(gNotes)($t8)
+/* 0CF4DC 803144DC 8FAF006C */ lw $t7, 0x6c($sp)
+/* 0CF4E0 803144E0 3C198022 */ lui $t9, %hi(gBankLoadStatus)
+/* 0CF4E4 803144E4 3C010100 */ lui $at, 0x100
+/* 0CF4E8 803144E8 01F8B821 */ addu $s7, $t7, $t8
+/* 0CF4EC 803144EC 92E20007 */ lbu $v0, 7($s7)
+/* 0CF4F0 803144F0 8FB80174 */ lw $t8, 0x174($sp)
+/* 0CF4F4 803144F4 0322C821 */ addu $t9, $t9, $v0
+/* 0CF4F8 803144F8 933918D0 */ lbu $t9, %lo(gBankLoadStatus)($t9)
+/* 0CF4FC 803144FC 2B2E0002 */ slti $t6, $t9, 2
+/* 0CF500 80314500 11C00006 */ beqz $t6, .L8031451C
+/* 0CF504 80314504 00027A00 */ sll $t7, $v0, 8
+/* 0CF508 80314508 01F8C821 */ addu $t9, $t7, $t8
+/* 0CF50C 8031450C 03217021 */ addu $t6, $t9, $at
+/* 0CF510 80314510 3C018033 */ lui $at, %hi(gAudioErrorFlags)
+/* 0CF514 80314514 10000249 */ b .L80314E3C
+/* 0CF518 80314518 AC2E1D40 */ sw $t6, %lo(gAudioErrorFlags)($at)
+.L8031451C:
+/* 0CF51C 8031451C 8EEF0000 */ lw $t7, ($s7)
+/* 0CF520 80314520 000FC7C2 */ srl $t8, $t7, 0x1f
+/* 0CF524 80314524 53000246 */ beql $t8, $zero, .L80314E40
+/* 0CF528 80314528 8FAE0174 */ lw $t6, 0x174($sp)
+/* 0CF52C 8031452C 8FB9017C */ lw $t9, 0x17c($sp)
+/* 0CF530 80314530 AFA00148 */ sw $zero, 0x148($sp)
+/* 0CF534 80314534 24010001 */ li $at, 1
+/* 0CF538 80314538 00197040 */ sll $t6, $t9, 1
+/* 0CF53C 8031453C AFAE0048 */ sw $t6, 0x48($sp)
+/* 0CF540 80314540 8EEF0000 */ lw $t7, ($s7)
+/* 0CF544 80314544 44802000 */ mtc1 $zero, $f4
+/* 0CF548 80314548 240E0001 */ li $t6, 1
+/* 0CF54C 8031454C 000FC040 */ sll $t8, $t7, 1
+/* 0CF550 80314550 0018CFC2 */ srl $t9, $t8, 0x1f
+/* 0CF554 80314554 17210004 */ bne $t9, $at, .L80314568
+/* 0CF558 80314558 02802025 */ move $a0, $s4
+/* 0CF55C 8031455C AFAE0148 */ sw $t6, 0x148($sp)
+/* 0CF560 80314560 AEE00014 */ sw $zero, 0x14($s7)
+/* 0CF564 80314564 A6E00020 */ sh $zero, 0x20($s7)
+.L80314568:
+/* 0CF568 80314568 C6E20038 */ lwc1 $f2, 0x38($s7)
+/* 0CF56C 8031456C 3C014000 */ li $at, 0x40000000 # 2.000000
+/* 0CF570 80314570 44812800 */ mtc1 $at, $f5
+/* 0CF574 80314574 46001021 */ cvt.d.s $f0, $f2
+/* 0CF578 80314578 3C018033 */ lui $at, %hi(D_80337BC0)
+/* 0CF57C 8031457C 4624003C */ c.lt.d $f0, $f4
+/* 0CF580 80314580 02E02825 */ move $a1, $s7
+/* 0CF584 80314584 4500000E */ bc1f .L803145C0
+/* 0CF588 80314588 00000000 */ nop
+/* 0CF58C 8031458C 3C018033 */ lui $at, %hi(D_80337BB0)
+/* 0CF590 80314590 D4267BB0 */ ldc1 $f6, %lo(D_80337BB0)($at)
+/* 0CF594 80314594 240F0001 */ li $t7, 1
+/* 0CF598 80314598 AFAF00E8 */ sw $t7, 0xe8($sp)
+/* 0CF59C 8031459C 4620303C */ c.lt.d $f6, $f0
+/* 0CF5A0 803145A0 3C018033 */ lui $at, %hi(D_80337BB8)
+/* 0CF5A4 803145A4 45000004 */ bc1f .L803145B8
+/* 0CF5A8 803145A8 00000000 */ nop
+/* 0CF5AC 803145AC C4287BB8 */ lwc1 $f8, %lo(D_80337BB8)($at)
+/* 0CF5B0 803145B0 E6E80038 */ swc1 $f8, 0x38($s7)
+/* 0CF5B4 803145B4 C6E20038 */ lwc1 $f2, 0x38($s7)
+.L803145B8:
+/* 0CF5B8 803145B8 10000012 */ b .L80314604
+/* 0CF5BC 803145BC 46001306 */ mov.s $f12, $f2
+.L803145C0:
+/* 0CF5C0 803145C0 D42A7BC0 */ ldc1 $f10, %lo(D_80337BC0)($at)
+/* 0CF5C4 803145C4 24180002 */ li $t8, 2
+/* 0CF5C8 803145C8 44802000 */ mtc1 $zero, $f4
+/* 0CF5CC 803145CC 4620503E */ c.le.d $f10, $f0
+/* 0CF5D0 803145D0 AFB800E8 */ sw $t8, 0xe8($sp)
+/* 0CF5D4 803145D4 3C018033 */ lui $at, %hi(D_80337BC8)
+/* 0CF5D8 803145D8 45020006 */ bc1fl .L803145F4
+/* 0CF5DC 803145DC 3C013FE0 */ lui $at, 0x3fe0
+/* 0CF5E0 803145E0 C4307BC8 */ lwc1 $f16, %lo(D_80337BC8)($at)
+/* 0CF5E4 803145E4 E6F00038 */ swc1 $f16, 0x38($s7)
+/* 0CF5E8 803145E8 C6F20038 */ lwc1 $f18, 0x38($s7)
+/* 0CF5EC 803145EC 46009021 */ cvt.d.s $f0, $f18
+/* 0CF5F0 803145F0 3C013FE0 */ li $at, 0x3FE00000 # 1.750000
+.L803145F4:
+/* 0CF5F4 803145F4 44812800 */ mtc1 $at, $f5
+/* 0CF5F8 803145F8 00000000 */ nop
+/* 0CF5FC 803145FC 46240182 */ mul.d $f6, $f0, $f4
+/* 0CF600 80314600 46203320 */ cvt.s.d $f12, $f6
+.L80314604:
+/* 0CF604 80314604 3C014700 */ li $at, 0x47000000 # 32768.000000
+/* 0CF608 80314608 44814000 */ mtc1 $at, $f8
+/* 0CF60C 8031460C 8FB8017C */ lw $t8, 0x17c($sp)
+/* 0CF610 80314610 46086282 */ mul.s $f10, $f12, $f8
+/* 0CF614 80314614 4600540D */ trunc.w.s $f16, $f10
+/* 0CF618 80314618 440E8000 */ mfc1 $t6, $f16
+/* 0CF61C 8031461C 00000000 */ nop
+/* 0CF620 80314620 31CFFFFF */ andi $t7, $t6, 0xffff
+/* 0CF624 80314624 01F80019 */ multu $t7, $t8
+/* 0CF628 80314628 AFAF005C */ sw $t7, 0x5c($sp)
+/* 0CF62C 8031462C 96EF0020 */ lhu $t7, 0x20($s7)
+/* 0CF630 80314630 8EE20024 */ lw $v0, 0x24($s7)
+/* 0CF634 80314634 0000C812 */ mflo $t9
+/* 0CF638 80314638 00197040 */ sll $t6, $t9, 1
+/* 0CF63C 8031463C 01EE1821 */ addu $v1, $t7, $t6
+/* 0CF640 80314640 1440000E */ bnez $v0, .L8031467C
+/* 0CF644 80314644 A6E30020 */ sh $v1, 0x20($s7)
+/* 0CF648 80314648 00038402 */ srl $s0, $v1, 0x10
+/* 0CF64C 8031464C 02003025 */ move $a2, $s0
+/* 0CF650 80314650 0C0C53C2 */ jal load_wave_samples
+/* 0CF654 80314654 AFA00148 */ sw $zero, 0x148($sp)
+/* 0CF658 80314658 8EE90014 */ lw $t1, 0x14($s7)
+/* 0CF65C 8031465C 0040A025 */ move $s4, $v0
+/* 0CF660 80314660 0009C840 */ sll $t9, $t1, 1
+/* 0CF664 80314664 272F0180 */ addiu $t7, $t9, 0x180
+/* 0CF668 80314668 A7AF00D6 */ sh $t7, 0xd6($sp)
+/* 0CF66C 8031466C 01307021 */ addu $t6, $t1, $s0
+/* 0CF670 80314670 AEEE0014 */ sw $t6, 0x14($s7)
+/* 0CF674 80314674 100001B9 */ b .L80314D5C
+/* 0CF678 80314678 8EE50000 */ lw $a1, ($s7)
+.L8031467C:
+/* 0CF67C 8031467C 8C460000 */ lw $a2, ($v0)
+/* 0CF680 80314680 00031402 */ srl $v0, $v1, 0x10
+/* 0CF684 80314684 8CD80008 */ lw $t8, 8($a2)
+/* 0CF688 80314688 AFB80160 */ sw $t8, 0x160($sp)
+/* 0CF68C 8031468C 8F0F0004 */ lw $t7, 4($t8)
+/* 0CF690 80314690 8FB800E8 */ lw $t8, 0xe8($sp)
+/* 0CF694 80314694 AFAF0110 */ sw $t7, 0x110($sp)
+/* 0CF698 80314698 8CCE0004 */ lw $t6, 4($a2)
+/* 0CF69C 8031469C AFA000D8 */ sw $zero, 0xd8($sp)
+/* 0CF6A0 803146A0 AFA000E4 */ sw $zero, 0xe4($sp)
+/* 0CF6A4 803146A4 1B0001AB */ blez $t8, .L80314D54
+/* 0CF6A8 803146A8 AFAE0120 */ sw $t6, 0x120($sp)
+/* 0CF6AC 803146AC 3B190001 */ xori $t9, $t8, 1
+/* 0CF6B0 803146B0 2F390001 */ sltiu $t9, $t9, 1
+/* 0CF6B4 803146B4 AFB90054 */ sw $t9, 0x54($sp)
+/* 0CF6B8 803146B8 AFA20058 */ sw $v0, 0x58($sp)
+/* 0CF6BC 803146BC AFA60164 */ sw $a2, 0x164($sp)
+/* 0CF6C0 803146C0 8FA60164 */ lw $a2, 0x164($sp)
+.L803146C4:
+/* 0CF6C4 803146C4 8FAF0054 */ lw $t7, 0x54($sp)
+/* 0CF6C8 803146C8 8FA20058 */ lw $v0, 0x58($sp)
+/* 0CF6CC 803146CC 8CC4000C */ lw $a0, 0xc($a2)
+/* 0CF6D0 803146D0 0000F025 */ move $fp, $zero
+/* 0CF6D4 803146D4 0000A825 */ move $s5, $zero
+/* 0CF6D8 803146D8 11E00003 */ beqz $t7, .L803146E8
+/* 0CF6DC 803146DC 24850008 */ addiu $a1, $a0, 8
+/* 0CF6E0 803146E0 1000000B */ b .L80314710
+/* 0CF6E4 803146E4 00406825 */ move $t5, $v0
+.L803146E8:
+/* 0CF6E8 803146E8 304E0001 */ andi $t6, $v0, 1
+/* 0CF6EC 803146EC 11C00007 */ beqz $t6, .L8031470C
+/* 0CF6F0 803146F0 AFA60164 */ sw $a2, 0x164($sp)
+/* 0CF6F4 803146F4 8FB900E4 */ lw $t9, 0xe4($sp)
+/* 0CF6F8 803146F8 2401FFFE */ li $at, -2
+/* 0CF6FC 803146FC 0041C024 */ and $t8, $v0, $at
+/* 0CF700 80314700 00197840 */ sll $t7, $t9, 1
+/* 0CF704 80314704 10000002 */ b .L80314710
+/* 0CF708 80314708 030F6821 */ addu $t5, $t8, $t7
+.L8031470C:
+/* 0CF70C 8031470C 00406825 */ move $t5, $v0
+.L80314710:
+/* 0CF710 80314710 8FAE015C */ lw $t6, 0x15c($sp)
+/* 0CF714 80314714 AFA20058 */ sw $v0, 0x58($sp)
+/* 0CF718 80314718 11C50012 */ beq $t6, $a1, .L80314764
+/* 0CF71C 8031471C 00000000 */ nop
+/* 0CF720 80314720 AFA5015C */ sw $a1, 0x15c($sp)
+/* 0CF724 80314724 8C980000 */ lw $t8, ($a0)
+/* 0CF728 80314728 8C990004 */ lw $t9, 4($a0)
+/* 0CF72C 8031472C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0CF730 80314730 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0CF734 80314734 03380019 */ multu $t9, $t8
+/* 0CF738 80314738 02801025 */ move $v0, $s4
+/* 0CF73C 8031473C 26940008 */ addiu $s4, $s4, 8
+/* 0CF740 80314740 00001812 */ mflo $v1
+/* 0CF744 80314744 00037900 */ sll $t7, $v1, 4
+/* 0CF748 80314748 01E17024 */ and $t6, $t7, $at
+/* 0CF74C 8031474C 3C010B00 */ lui $at, 0xb00
+/* 0CF750 80314750 01C1C825 */ or $t9, $t6, $at
+/* 0CF754 80314754 AC590000 */ sw $t9, ($v0)
+/* 0CF758 80314758 8FB8015C */ lw $t8, 0x15c($sp)
+/* 0CF75C 8031475C 031F7821 */ addu $t7, $t8, $ra
+/* 0CF760 80314760 AC4F0004 */ sw $t7, 4($v0)
+.L80314764:
+/* 0CF764 80314764 11A00101 */ beqz $t5, .L80314B6C
+/* 0CF768 80314768 8FA20058 */ lw $v0, 0x58($sp)
+/* 0CF76C 8031476C AFA20058 */ sw $v0, 0x58($sp)
+/* 0CF770 80314770 8EE90014 */ lw $t1, 0x14($s7)
+.L80314774:
+/* 0CF774 80314774 8FAE0110 */ lw $t6, 0x110($sp)
+/* 0CF778 80314778 01BE2023 */ subu $a0, $t5, $fp
+/* 0CF77C 8031477C 3132000F */ andi $s2, $t1, 0xf
+/* 0CF780 80314780 00005025 */ move $t2, $zero
+/* 0CF784 80314784 00005825 */ move $t3, $zero
+/* 0CF788 80314788 00806025 */ move $t4, $a0
+/* 0CF78C 8031478C 16400006 */ bnez $s2, .L803147A8
+/* 0CF790 80314790 01C91823 */ subu $v1, $t6, $t1
+/* 0CF794 80314794 8EF90000 */ lw $t9, ($s7)
+/* 0CF798 80314798 00197880 */ sll $t7, $t9, 2
+/* 0CF79C 8031479C 05E20003 */ bltzl $t7, .L803147AC
+/* 0CF7A0 803147A0 240E0010 */ li $t6, 16
+/* 0CF7A4 803147A4 24120010 */ li $s2, 16
+.L803147A8:
+/* 0CF7A8 803147A8 240E0010 */ li $t6, 16
+.L803147AC:
+/* 0CF7AC 803147AC 01D22823 */ subu $a1, $t6, $s2
+/* 0CF7B0 803147B0 0083082A */ slt $at, $a0, $v1
+/* 0CF7B4 803147B4 1020000C */ beqz $at, .L803147E8
+/* 0CF7B8 803147B8 00A0B025 */ move $s6, $a1
+/* 0CF7BC 803147BC 00851023 */ subu $v0, $a0, $a1
+/* 0CF7C0 803147C0 2442000F */ addiu $v0, $v0, 0xf
+/* 0CF7C4 803147C4 04410003 */ bgez $v0, .L803147D4
+/* 0CF7C8 803147C8 0002C903 */ sra $t9, $v0, 4
+/* 0CF7CC 803147CC 2441000F */ addiu $at, $v0, 0xf
+/* 0CF7D0 803147D0 0001C903 */ sra $t9, $at, 4
+.L803147D4:
+/* 0CF7D4 803147D4 00198100 */ sll $s0, $t9, 4
+/* 0CF7D8 803147D8 00B0C021 */ addu $t8, $a1, $s0
+/* 0CF7DC 803147DC 03204025 */ move $t0, $t9
+/* 0CF7E0 803147E0 10000014 */ b .L80314834
+/* 0CF7E4 803147E4 03049823 */ subu $s3, $t8, $a0
+.L803147E8:
+/* 0CF7E8 803147E8 00721021 */ addu $v0, $v1, $s2
+/* 0CF7EC 803147EC 2450FFF0 */ addiu $s0, $v0, -0x10
+/* 0CF7F0 803147F0 1E000003 */ bgtz $s0, .L80314800
+/* 0CF7F4 803147F4 00009825 */ move $s3, $zero
+/* 0CF7F8 803147F8 00008025 */ move $s0, $zero
+/* 0CF7FC 803147FC 0060B025 */ move $s6, $v1
+.L80314800:
+/* 0CF800 80314800 8FAE0160 */ lw $t6, 0x160($sp)
+/* 0CF804 80314804 2608000F */ addiu $t0, $s0, 0xf
+/* 0CF808 80314808 05010003 */ bgez $t0, .L80314818
+/* 0CF80C 8031480C 00087903 */ sra $t7, $t0, 4
+/* 0CF810 80314810 2501000F */ addiu $at, $t0, 0xf
+/* 0CF814 80314814 00017903 */ sra $t7, $at, 4
+.L80314818:
+/* 0CF818 80314818 8DD90008 */ lw $t9, 8($t6)
+/* 0CF81C 8031481C 01E04025 */ move $t0, $t7
+/* 0CF820 80314820 53200004 */ beql $t9, $zero, .L80314834
+/* 0CF824 80314824 240A0001 */ li $t2, 1
+/* 0CF828 80314828 10000002 */ b .L80314834
+/* 0CF82C 8031482C 240B0001 */ li $t3, 1
+/* 0CF830 80314830 240A0001 */ li $t2, 1
+.L80314834:
+/* 0CF834 80314834 11000030 */ beqz $t0, .L803148F8
+/* 0CF838 80314838 24030009 */ li $v1, 9
+/* 0CF83C 8031483C 01321023 */ subu $v0, $t1, $s2
+/* 0CF840 80314840 24420010 */ addiu $v0, $v0, 0x10
+/* 0CF844 80314844 04410003 */ bgez $v0, .L80314854
+/* 0CF848 80314848 0002C103 */ sra $t8, $v0, 4
+/* 0CF84C 8031484C 2441000F */ addiu $at, $v0, 0xf
+/* 0CF850 80314850 0001C103 */ sra $t8, $at, 4
+.L80314854:
+/* 0CF854 80314854 03030019 */ multu $t8, $v1
+/* 0CF858 80314858 8FAE0120 */ lw $t6, 0x120($sp)
+/* 0CF85C 8031485C 8FA60148 */ lw $a2, 0x148($sp)
+/* 0CF860 80314860 26E70003 */ addiu $a3, $s7, 3
+/* 0CF864 80314864 AFAA0150 */ sw $t2, 0x150($sp)
+/* 0CF868 80314868 AFAB014C */ sw $t3, 0x14c($sp)
+/* 0CF86C 8031486C AFAC010C */ sw $t4, 0x10c($sp)
+/* 0CF870 80314870 AFAD0118 */ sw $t5, 0x118($sp)
+/* 0CF874 80314874 00007812 */ mflo $t7
+/* 0CF878 80314878 01EE2021 */ addu $a0, $t7, $t6
+/* 0CF87C 8031487C 00000000 */ nop
+/* 0CF880 80314880 01030019 */ multu $t0, $v1
+/* 0CF884 80314884 00008812 */ mflo $s1
+/* 0CF888 80314888 02202825 */ move $a1, $s1
+/* 0CF88C 8031488C 0C0C5C9C */ jal dma_sample_data
+/* 0CF890 80314890 00000000 */ nop
+/* 0CF894 80314894 3047000F */ andi $a3, $v0, 0xf
+/* 0CF898 80314898 02802025 */ move $a0, $s4
+/* 0CF89C 8031489C 3C190800 */ lui $t9, (0x080003F0 >> 16) # lui $t9, 0x800
+/* 0CF8A0 803148A0 8FAA0150 */ lw $t2, 0x150($sp)
+/* 0CF8A4 803148A4 8FAB014C */ lw $t3, 0x14c($sp)
+/* 0CF8A8 803148A8 8FAC010C */ lw $t4, 0x10c($sp)
+/* 0CF8AC 803148AC 8FAD0118 */ lw $t5, 0x118($sp)
+/* 0CF8B0 803148B0 373903F0 */ ori $t9, (0x080003F0 & 0xFFFF) # ori $t9, $t9, 0x3f0
+/* 0CF8B4 803148B4 0227C021 */ addu $t8, $s1, $a3
+/* 0CF8B8 803148B8 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0CF8BC 803148BC AC990000 */ sw $t9, ($a0)
+/* 0CF8C0 803148C0 26940008 */ addiu $s4, $s4, 8
+/* 0CF8C4 803148C4 3C1F8000 */ lui $ra, 0x8000
+/* 0CF8C8 803148C8 AC8F0004 */ sw $t7, 4($a0)
+/* 0CF8CC 803148CC 02802825 */ move $a1, $s4
+/* 0CF8D0 803148D0 0047C823 */ subu $t9, $v0, $a3
+/* 0CF8D4 803148D4 033FC021 */ addu $t8, $t9, $ra
+/* 0CF8D8 803148D8 3C0E0400 */ lui $t6, 0x400
+/* 0CF8DC 803148DC ACAE0000 */ sw $t6, ($a1)
+/* 0CF8E0 803148E0 ACB80004 */ sw $t8, 4($a1)
+/* 0CF8E4 803148E4 8EE60000 */ lw $a2, ($s7)
+/* 0CF8E8 803148E8 26940008 */ addiu $s4, $s4, 8
+/* 0CF8EC 803148EC 00067880 */ sll $t7, $a2, 2
+/* 0CF8F0 803148F0 10000006 */ b .L8031490C
+/* 0CF8F4 803148F4 000F37C2 */ srl $a2, $t7, 0x1f
+.L803148F8:
+/* 0CF8F8 803148F8 8EE60000 */ lw $a2, ($s7)
+/* 0CF8FC 803148FC 00008025 */ move $s0, $zero
+/* 0CF900 80314900 00003825 */ move $a3, $zero
+/* 0CF904 80314904 0006C880 */ sll $t9, $a2, 2
+/* 0CF908 80314908 001937C2 */ srl $a2, $t9, 0x1f
+.L8031490C:
+/* 0CF90C 8031490C 10C0000F */ beqz $a2, .L8031494C
+/* 0CF910 80314910 02801025 */ move $v0, $s4
+/* 0CF914 80314914 3C0F0F00 */ lui $t7, 0xf00
+/* 0CF918 80314918 AC4F0000 */ sw $t7, ($v0)
+/* 0CF91C 8031491C 8FAE0164 */ lw $t6, 0x164($sp)
+/* 0CF920 80314920 3C018000 */ lui $at, (0x80000010 >> 16) # lui $at, 0x8000
+/* 0CF924 80314924 34210010 */ ori $at, (0x80000010 & 0xFFFF) # ori $at, $at, 0x10
+/* 0CF928 80314928 8DD90008 */ lw $t9, 8($t6)
+/* 0CF92C 8031492C 240F0002 */ li $t7, 2
+/* 0CF930 80314930 26940008 */ addiu $s4, $s4, 8
+/* 0CF934 80314934 0321C021 */ addu $t8, $t9, $at
+/* 0CF938 80314938 AC580004 */ sw $t8, 4($v0)
+/* 0CF93C 8031493C AFAF0148 */ sw $t7, 0x148($sp)
+/* 0CF940 80314940 92EE0000 */ lbu $t6, ($s7)
+/* 0CF944 80314944 31D9FFDF */ andi $t9, $t6, 0xffdf
+/* 0CF948 80314948 A2F90000 */ sb $t9, ($s7)
+.L8031494C:
+/* 0CF94C 8031494C 17C0001B */ bnez $fp, .L803149BC
+/* 0CF950 80314950 02801025 */ move $v0, $s4
+/* 0CF954 80314954 24F803F0 */ addiu $t8, $a3, 0x3f0
+/* 0CF958 80314958 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0CF95C 8031495C 3C010800 */ lui $at, 0x800
+/* 0CF960 80314960 01E17025 */ or $t6, $t7, $at
+/* 0CF964 80314964 00103040 */ sll $a2, $s0, 1
+/* 0CF968 80314968 30D9FFFF */ andi $t9, $a2, 0xffff
+/* 0CF96C 8031496C 3C010180 */ lui $at, 0x180
+/* 0CF970 80314970 02801025 */ move $v0, $s4
+/* 0CF974 80314974 0321C025 */ or $t8, $t9, $at
+/* 0CF978 80314978 AC580004 */ sw $t8, 4($v0)
+/* 0CF97C 8031497C AC4E0000 */ sw $t6, ($v0)
+/* 0CF980 80314980 8FAF0148 */ lw $t7, 0x148($sp)
+/* 0CF984 80314984 26940008 */ addiu $s4, $s4, 8
+/* 0CF988 80314988 3C010100 */ lui $at, 0x100
+/* 0CF98C 8031498C 31EE00FF */ andi $t6, $t7, 0xff
+/* 0CF990 80314990 000ECC00 */ sll $t9, $t6, 0x10
+/* 0CF994 80314994 0321C025 */ or $t8, $t9, $at
+/* 0CF998 80314998 02801825 */ move $v1, $s4
+/* 0CF99C 8031499C AC780000 */ sw $t8, ($v1)
+/* 0CF9A0 803149A0 8EEF0034 */ lw $t7, 0x34($s7)
+/* 0CF9A4 803149A4 0012C840 */ sll $t9, $s2, 1
+/* 0CF9A8 803149A8 26940008 */ addiu $s4, $s4, 8
+/* 0CF9AC 803149AC 01FF7021 */ addu $t6, $t7, $ra
+/* 0CF9B0 803149B0 AC6E0004 */ sw $t6, 4($v1)
+/* 0CF9B4 803149B4 1000002F */ b .L80314A74
+/* 0CF9B8 803149B8 AFB90130 */ sw $t9, 0x130($sp)
+.L803149BC:
+/* 0CF9BC 803149BC 24F803F0 */ addiu $t8, $a3, 0x3f0
+/* 0CF9C0 803149C0 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0CF9C4 803149C4 3C010800 */ lui $at, 0x800
+/* 0CF9C8 803149C8 01E17025 */ or $t6, $t7, $at
+/* 0CF9CC 803149CC 2401FFE0 */ li $at, -32
+/* 0CF9D0 803149D0 26A3001F */ addiu $v1, $s5, 0x1f
+/* 0CF9D4 803149D4 0061C824 */ and $t9, $v1, $at
+/* 0CF9D8 803149D8 272F0180 */ addiu $t7, $t9, 0x180
+/* 0CF9DC 803149DC 03201825 */ move $v1, $t9
+/* 0CF9E0 803149E0 AC4E0000 */ sw $t6, ($v0)
+/* 0CF9E4 803149E4 00103040 */ sll $a2, $s0, 1
+/* 0CF9E8 803149E8 30D9FFFF */ andi $t9, $a2, 0xffff
+/* 0CF9EC 803149EC 000F7400 */ sll $t6, $t7, 0x10
+/* 0CF9F0 803149F0 01D9C025 */ or $t8, $t6, $t9
+/* 0CF9F4 803149F4 AC580004 */ sw $t8, 4($v0)
+/* 0CF9F8 803149F8 8FAF0148 */ lw $t7, 0x148($sp)
+/* 0CF9FC 803149FC 26940008 */ addiu $s4, $s4, 8
+/* 0CFA00 80314A00 3C010100 */ lui $at, 0x100
+/* 0CFA04 80314A04 31EE00FF */ andi $t6, $t7, 0xff
+/* 0CFA08 80314A08 000ECC00 */ sll $t9, $t6, 0x10
+/* 0CFA0C 80314A0C 0321C025 */ or $t8, $t9, $at
+/* 0CFA10 80314A10 02802025 */ move $a0, $s4
+/* 0CFA14 80314A14 AC980000 */ sw $t8, ($a0)
+/* 0CFA18 80314A18 8EEF0034 */ lw $t7, 0x34($s7)
+/* 0CFA1C 80314A1C 0012C840 */ sll $t9, $s2, 1
+/* 0CFA20 80314A20 0079C021 */ addu $t8, $v1, $t9
+/* 0CFA24 80314A24 01FF7021 */ addu $t6, $t7, $ra
+/* 0CFA28 80314A28 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0CFA2C 80314A2C AC8E0004 */ sw $t6, 4($a0)
+/* 0CFA30 80314A30 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0CFA34 80314A34 270F0180 */ addiu $t7, $t8, 0x180
+/* 0CFA38 80314A38 01E17024 */ and $t6, $t7, $at
+/* 0CFA3C 80314A3C 26940008 */ addiu $s4, $s4, 8
+/* 0CFA40 80314A40 3C010A00 */ lui $at, 0xa00
+/* 0CFA44 80314A44 01C1C825 */ or $t9, $t6, $at
+/* 0CFA48 80314A48 02802825 */ move $a1, $s4
+/* 0CFA4C 80314A4C ACB90000 */ sw $t9, ($a1)
+/* 0CFA50 80314A50 0216C821 */ addu $t9, $s0, $s6
+/* 0CFA54 80314A54 26AF0180 */ addiu $t7, $s5, 0x180
+/* 0CFA58 80314A58 000F7400 */ sll $t6, $t7, 0x10
+/* 0CFA5C 80314A5C 0333C023 */ subu $t8, $t9, $s3
+/* 0CFA60 80314A60 00187840 */ sll $t7, $t8, 1
+/* 0CFA64 80314A64 31F9FFFF */ andi $t9, $t7, 0xffff
+/* 0CFA68 80314A68 01D9C025 */ or $t8, $t6, $t9
+/* 0CFA6C 80314A6C ACB80004 */ sw $t8, 4($a1)
+/* 0CFA70 80314A70 26940008 */ addiu $s4, $s4, 8
+.L80314A74:
+/* 0CFA74 80314A74 8FB90148 */ lw $t9, 0x148($sp)
+/* 0CFA78 80314A78 03D07821 */ addu $t7, $fp, $s0
+/* 0CFA7C 80314A7C 01F67021 */ addu $t6, $t7, $s6
+/* 0CFA80 80314A80 24010001 */ li $at, 1
+/* 0CFA84 80314A84 13210008 */ beq $t9, $at, .L80314AA8
+/* 0CFA88 80314A88 01D3F023 */ subu $fp, $t6, $s3
+/* 0CFA8C 80314A8C 3B220002 */ xori $v0, $t9, 2
+/* 0CFA90 80314A90 0216C021 */ addu $t8, $s0, $s6
+/* 0CFA94 80314A94 03131823 */ subu $v1, $t8, $s3
+/* 0CFA98 80314A98 10400007 */ beqz $v0, .L80314AB8
+/* 0CFA9C 80314A9C AFA00148 */ sw $zero, 0x148($sp)
+/* 0CFAA0 80314AA0 10000008 */ b .L80314AC4
+/* 0CFAA4 80314AA4 00037040 */ sll $t6, $v1, 1
+.L80314AA8:
+/* 0CFAA8 80314AA8 AFA00130 */ sw $zero, 0x130($sp)
+/* 0CFAAC 80314AAC 02A6A821 */ addu $s5, $s5, $a2
+/* 0CFAB0 80314AB0 1000000B */ b .L80314AE0
+/* 0CFAB4 80314AB4 AFA00148 */ sw $zero, 0x148($sp)
+.L80314AB8:
+/* 0CFAB8 80314AB8 00037840 */ sll $t7, $v1, 1
+/* 0CFABC 80314ABC 10000008 */ b .L80314AE0
+/* 0CFAC0 80314AC0 02AFA821 */ addu $s5, $s5, $t7
+.L80314AC4:
+/* 0CFAC4 80314AC4 52A00004 */ beql $s5, $zero, .L80314AD8
+/* 0CFAC8 80314AC8 0072A821 */ addu $s5, $v1, $s2
+/* 0CFACC 80314ACC 10000004 */ b .L80314AE0
+/* 0CFAD0 80314AD0 02AEA821 */ addu $s5, $s5, $t6
+/* 0CFAD4 80314AD4 0072A821 */ addu $s5, $v1, $s2
+.L80314AD8:
+/* 0CFAD8 80314AD8 0015C840 */ sll $t9, $s5, 1
+/* 0CFADC 80314ADC 0320A825 */ move $s5, $t9
+.L80314AE0:
+/* 0CFAE0 80314AE0 11400014 */ beqz $t2, .L80314B34
+/* 0CFAE4 80314AE4 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0CFAE8 80314AE8 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0CFAEC 80314AEC 26B80180 */ addiu $t8, $s5, 0x180
+/* 0CFAF0 80314AF0 03017824 */ and $t7, $t8, $at
+/* 0CFAF4 80314AF4 3C010200 */ lui $at, 0x200
+/* 0CFAF8 80314AF8 02801025 */ move $v0, $s4
+/* 0CFAFC 80314AFC 01BEC823 */ subu $t9, $t5, $fp
+/* 0CFB00 80314B00 0019C040 */ sll $t8, $t9, 1
+/* 0CFB04 80314B04 01E17025 */ or $t6, $t7, $at
+/* 0CFB08 80314B08 AC4E0000 */ sw $t6, ($v0)
+/* 0CFB0C 80314B0C AC580004 */ sw $t8, 4($v0)
+/* 0CFB10 80314B10 92EE0000 */ lbu $t6, ($s7)
+/* 0CFB14 80314B14 26940008 */ addiu $s4, $s4, 8
+/* 0CFB18 80314B18 AEE00014 */ sw $zero, 0x14($s7)
+/* 0CFB1C 80314B1C 35D90010 */ ori $t9, $t6, 0x10
+/* 0CFB20 80314B20 A2F90000 */ sb $t9, ($s7)
+/* 0CFB24 80314B24 92F80000 */ lbu $t8, ($s7)
+/* 0CFB28 80314B28 330FFF7F */ andi $t7, $t8, 0xff7f
+/* 0CFB2C 80314B2C 1000000F */ b .L80314B6C
+/* 0CFB30 80314B30 A2EF0000 */ sb $t7, ($s7)
+.L80314B34:
+/* 0CFB34 80314B34 51600009 */ beql $t3, $zero, .L80314B5C
+/* 0CFB38 80314B38 8EF90014 */ lw $t9, 0x14($s7)
+/* 0CFB3C 80314B3C 92F90000 */ lbu $t9, ($s7)
+/* 0CFB40 80314B40 37380020 */ ori $t8, $t9, 0x20
+/* 0CFB44 80314B44 A2F80000 */ sb $t8, ($s7)
+/* 0CFB48 80314B48 8FAF0160 */ lw $t7, 0x160($sp)
+/* 0CFB4C 80314B4C 8DEE0000 */ lw $t6, ($t7)
+/* 0CFB50 80314B50 10000004 */ b .L80314B64
+/* 0CFB54 80314B54 AEEE0014 */ sw $t6, 0x14($s7)
+/* 0CFB58 80314B58 8EF90014 */ lw $t9, 0x14($s7)
+.L80314B5C:
+/* 0CFB5C 80314B5C 032CC021 */ addu $t8, $t9, $t4
+/* 0CFB60 80314B60 AEF80014 */ sw $t8, 0x14($s7)
+.L80314B64:
+/* 0CFB64 80314B64 57CDFF03 */ bnel $fp, $t5, .L80314774
+/* 0CFB68 80314B68 8EE90014 */ lw $t1, 0x14($s7)
+.L80314B6C:
+/* 0CFB6C 80314B6C 8FAF0054 */ lw $t7, 0x54($sp)
+/* 0CFB70 80314B70 8FAE00E8 */ lw $t6, 0xe8($sp)
+/* 0CFB74 80314B74 24010002 */ li $at, 2
+/* 0CFB78 80314B78 15E00008 */ bnez $t7, .L80314B9C
+/* 0CFB7C 80314B7C 8FB80130 */ lw $t8, 0x130($sp)
+/* 0CFB80 80314B80 11C1000D */ beq $t6, $at, .L80314BB8
+/* 0CFB84 80314B84 8FB900E4 */ lw $t9, 0xe4($sp)
+/* 0CFB88 80314B88 8EE50000 */ lw $a1, ($s7)
+/* 0CFB8C 80314B8C 000530C0 */ sll $a2, $a1, 3
+/* 0CFB90 80314B90 0006CFC2 */ srl $t9, $a2, 0x1f
+/* 0CFB94 80314B94 10000066 */ b .L80314D30
+/* 0CFB98 80314B98 03203025 */ move $a2, $t9
+.L80314B9C:
+/* 0CFB9C 80314B9C 270F0180 */ addiu $t7, $t8, 0x180
+/* 0CFBA0 80314BA0 A7AF00D6 */ sh $t7, 0xd6($sp)
+/* 0CFBA4 80314BA4 8EE50000 */ lw $a1, ($s7)
+/* 0CFBA8 80314BA8 000530C0 */ sll $a2, $a1, 3
+/* 0CFBAC 80314BAC 000677C2 */ srl $t6, $a2, 0x1f
+/* 0CFBB0 80314BB0 1000005F */ b .L80314D30
+/* 0CFBB4 80314BB4 01C03025 */ move $a2, $t6
+.L80314BB8:
+/* 0CFBB8 80314BB8 13200009 */ beqz $t9, .L80314BE0
+/* 0CFBBC 80314BBC 02801025 */ move $v0, $s4
+/* 0CFBC0 80314BC0 24010001 */ li $at, 1
+/* 0CFBC4 80314BC4 13210034 */ beq $t9, $at, .L80314C98
+/* 0CFBC8 80314BC8 02801025 */ move $v0, $s4
+/* 0CFBCC 80314BCC 8EE50000 */ lw $a1, ($s7)
+/* 0CFBD0 80314BD0 000530C0 */ sll $a2, $a1, 3
+/* 0CFBD4 80314BD4 0006C7C2 */ srl $t8, $a2, 0x1f
+/* 0CFBD8 80314BD8 10000055 */ b .L80314D30
+/* 0CFBDC 80314BDC 03003025 */ move $a2, $t8
+.L80314BE0:
+/* 0CFBE0 80314BE0 8FAF0130 */ lw $t7, 0x130($sp)
+/* 0CFBE4 80314BE4 3C010800 */ lui $at, 0x800
+/* 0CFBE8 80314BE8 25A30004 */ addiu $v1, $t5, 4
+/* 0CFBEC 80314BEC 25EE0180 */ addiu $t6, $t7, 0x180
+/* 0CFBF0 80314BF0 31D9FFFF */ andi $t9, $t6, 0xffff
+/* 0CFBF4 80314BF4 0321C025 */ or $t8, $t9, $at
+/* 0CFBF8 80314BF8 3C010020 */ lui $at, 0x20
+/* 0CFBFC 80314BFC 306FFFFF */ andi $t7, $v1, 0xffff
+/* 0CFC00 80314C00 01E17025 */ or $t6, $t7, $at
+/* 0CFC04 80314C04 26940008 */ addiu $s4, $s4, 8
+/* 0CFC08 80314C08 3C190501 */ lui $t9, (0x0501FF60 >> 16) # lui $t9, 0x501
+/* 0CFC0C 80314C0C AC4E0004 */ sw $t6, 4($v0)
+/* 0CFC10 80314C10 AC580000 */ sw $t8, ($v0)
+/* 0CFC14 80314C14 3739FF60 */ ori $t9, (0x0501FF60 & 0xFFFF) # ori $t9, $t9, 0xff60
+/* 0CFC18 80314C18 02802025 */ move $a0, $s4
+/* 0CFC1C 80314C1C AC990000 */ sw $t9, ($a0)
+/* 0CFC20 80314C20 8EF80034 */ lw $t8, 0x34($s7)
+/* 0CFC24 80314C24 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
+/* 0CFC28 80314C28 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
+/* 0CFC2C 80314C2C 03017821 */ addu $t7, $t8, $at
+/* 0CFC30 80314C30 AC8F0004 */ sw $t7, 4($a0)
+/* 0CFC34 80314C34 240E0024 */ li $t6, 36
+/* 0CFC38 80314C38 AFA300D8 */ sw $v1, 0xd8($sp)
+/* 0CFC3C 80314C3C A7AE00D6 */ sh $t6, 0xd6($sp)
+/* 0CFC40 80314C40 8EE50000 */ lw $a1, ($s7)
+/* 0CFC44 80314C44 26940008 */ addiu $s4, $s4, 8
+/* 0CFC48 80314C48 02801025 */ move $v0, $s4
+/* 0CFC4C 80314C4C 000530C0 */ sll $a2, $a1, 3
+/* 0CFC50 80314C50 0006CFC2 */ srl $t9, $a2, 0x1f
+/* 0CFC54 80314C54 13200036 */ beqz $t9, .L80314D30
+/* 0CFC58 80314C58 03203025 */ move $a2, $t9
+/* 0CFC5C 80314C5C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0CFC60 80314C60 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0CFC64 80314C64 25B80024 */ addiu $t8, $t5, 0x24
+/* 0CFC68 80314C68 03017824 */ and $t7, $t8, $at
+/* 0CFC6C 80314C6C 3C010200 */ lui $at, 0x200
+/* 0CFC70 80314C70 01E17025 */ or $t6, $t7, $at
+/* 0CFC74 80314C74 25B90010 */ addiu $t9, $t5, 0x10
+/* 0CFC78 80314C78 AC590004 */ sw $t9, 4($v0)
+/* 0CFC7C 80314C7C AC4E0000 */ sw $t6, ($v0)
+/* 0CFC80 80314C80 8EE50000 */ lw $a1, ($s7)
+/* 0CFC84 80314C84 26940008 */ addiu $s4, $s4, 8
+/* 0CFC88 80314C88 000530C0 */ sll $a2, $a1, 3
+/* 0CFC8C 80314C8C 0006C7C2 */ srl $t8, $a2, 0x1f
+/* 0CFC90 80314C90 10000027 */ b .L80314D30
+/* 0CFC94 80314C94 03003025 */ move $a2, $t8
+.L80314C98:
+/* 0CFC98 80314C98 8FAF0130 */ lw $t7, 0x130($sp)
+/* 0CFC9C 80314C9C 3C010800 */ lui $at, 0x800
+/* 0CFCA0 80314CA0 26940008 */ addiu $s4, $s4, 8
+/* 0CFCA4 80314CA4 25EE0180 */ addiu $t6, $t7, 0x180
+/* 0CFCA8 80314CA8 31D9FFFF */ andi $t9, $t6, 0xffff
+/* 0CFCAC 80314CAC 0321C025 */ or $t8, $t9, $at
+/* 0CFCB0 80314CB0 25AF0008 */ addiu $t7, $t5, 8
+/* 0CFCB4 80314CB4 31EEFFFF */ andi $t6, $t7, 0xffff
+/* 0CFCB8 80314CB8 AC580000 */ sw $t8, ($v0)
+/* 0CFCBC 80314CBC 3C010160 */ lui $at, 0x160
+/* 0CFCC0 80314CC0 01C1C825 */ or $t9, $t6, $at
+/* 0CFCC4 80314CC4 3C180501 */ lui $t8, (0x0501FF60 >> 16) # lui $t8, 0x501
+/* 0CFCC8 80314CC8 AC590004 */ sw $t9, 4($v0)
+/* 0CFCCC 80314CCC 3718FF60 */ ori $t8, (0x0501FF60 & 0xFFFF) # ori $t8, $t8, 0xff60
+/* 0CFCD0 80314CD0 02801825 */ move $v1, $s4
+/* 0CFCD4 80314CD4 AC780000 */ sw $t8, ($v1)
+/* 0CFCD8 80314CD8 8EEF0034 */ lw $t7, 0x34($s7)
+/* 0CFCDC 80314CDC 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
+/* 0CFCE0 80314CE0 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
+/* 0CFCE4 80314CE4 26940008 */ addiu $s4, $s4, 8
+/* 0CFCE8 80314CE8 3C190A00 */ lui $t9, (0x0A000164 >> 16) # lui $t9, 0xa00
+/* 0CFCEC 80314CEC 01E17021 */ addu $t6, $t7, $at
+/* 0CFCF0 80314CF0 AC6E0004 */ sw $t6, 4($v1)
+/* 0CFCF4 80314CF4 37390164 */ ori $t9, (0x0A000164 & 0xFFFF) # ori $t9, $t9, 0x164
+/* 0CFCF8 80314CF8 02802025 */ move $a0, $s4
+/* 0CFCFC 80314CFC AC990000 */ sw $t9, ($a0)
+/* 0CFD00 80314D00 8FB800D8 */ lw $t8, 0xd8($sp)
+/* 0CFD04 80314D04 26940008 */ addiu $s4, $s4, 8
+/* 0CFD08 80314D08 270E0020 */ addiu $t6, $t8, 0x20
+/* 0CFD0C 80314D0C 25B80004 */ addiu $t8, $t5, 4
+/* 0CFD10 80314D10 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0CFD14 80314D14 000ECC00 */ sll $t9, $t6, 0x10
+/* 0CFD18 80314D18 032F7025 */ or $t6, $t9, $t7
+/* 0CFD1C 80314D1C AC8E0004 */ sw $t6, 4($a0)
+/* 0CFD20 80314D20 8EE50000 */ lw $a1, ($s7)
+/* 0CFD24 80314D24 000530C0 */ sll $a2, $a1, 3
+/* 0CFD28 80314D28 0006C7C2 */ srl $t8, $a2, 0x1f
+/* 0CFD2C 80314D2C 03003025 */ move $a2, $t8
+.L80314D30:
+/* 0CFD30 80314D30 10C00003 */ beqz $a2, .L80314D40
+/* 0CFD34 80314D34 8FA200E4 */ lw $v0, 0xe4($sp)
+/* 0CFD38 80314D38 10000008 */ b .L80314D5C
+/* 0CFD3C 80314D3C AFA00148 */ sw $zero, 0x148($sp)
+.L80314D40:
+/* 0CFD40 80314D40 8FB900E8 */ lw $t9, 0xe8($sp)
+/* 0CFD44 80314D44 24420001 */ addiu $v0, $v0, 1
+/* 0CFD48 80314D48 AFA200E4 */ sw $v0, 0xe4($sp)
+/* 0CFD4C 80314D4C 5459FE5D */ bnel $v0, $t9, .L803146C4
+/* 0CFD50 80314D50 8FA60164 */ lw $a2, 0x164($sp)
+.L80314D54:
+/* 0CFD54 80314D54 AFA00148 */ sw $zero, 0x148($sp)
+/* 0CFD58 80314D58 8EE50000 */ lw $a1, ($s7)
+.L80314D5C:
+/* 0CFD5C 80314D5C 00057840 */ sll $t7, $a1, 1
+/* 0CFD60 80314D60 000F77C2 */ srl $t6, $t7, 0x1f
+/* 0CFD64 80314D64 24010001 */ li $at, 1
+/* 0CFD68 80314D68 15C10006 */ bne $t6, $at, .L80314D84
+/* 0CFD6C 80314D6C 02802025 */ move $a0, $s4
+/* 0CFD70 80314D70 24180001 */ li $t8, 1
+/* 0CFD74 80314D74 AFB80148 */ sw $t8, 0x148($sp)
+/* 0CFD78 80314D78 92F90000 */ lbu $t9, ($s7)
+/* 0CFD7C 80314D7C 332FFFBF */ andi $t7, $t9, 0xffbf
+/* 0CFD80 80314D80 A2EF0000 */ sb $t7, ($s7)
+.L80314D84:
+/* 0CFD84 80314D84 8FB10048 */ lw $s1, 0x48($sp)
+/* 0CFD88 80314D88 97AE00D6 */ lhu $t6, 0xd6($sp)
+/* 0CFD8C 80314D8C 8FB80148 */ lw $t8, 0x148($sp)
+/* 0CFD90 80314D90 02E02825 */ move $a1, $s7
+/* 0CFD94 80314D94 97A7005E */ lhu $a3, 0x5e($sp)
+/* 0CFD98 80314D98 02203025 */ move $a2, $s1
+/* 0CFD9C 80314D9C AFAE0010 */ sw $t6, 0x10($sp)
+/* 0CFDA0 80314DA0 0C0C53F5 */ jal final_resample
+/* 0CFDA4 80314DA4 AFB80014 */ sw $t8, 0x14($sp)
+/* 0CFDA8 80314DA8 96F9000C */ lhu $t9, 0xc($s7)
+/* 0CFDAC 80314DAC 0040A025 */ move $s4, $v0
+/* 0CFDB0 80314DB0 02802025 */ move $a0, $s4
+/* 0CFDB4 80314DB4 17200004 */ bnez $t9, .L80314DC8
+/* 0CFDB8 80314DB8 02E02825 */ move $a1, $s7
+/* 0CFDBC 80314DBC 96EF0010 */ lhu $t7, 0x10($s7)
+/* 0CFDC0 80314DC0 51E00004 */ beql $t7, $zero, .L80314DD4
+/* 0CFDC4 80314DC4 96EE000E */ lhu $t6, 0xe($s7)
+.L80314DC8:
+/* 0CFDC8 80314DC8 1000000A */ b .L80314DF4
+/* 0CFDCC 80314DCC 24100001 */ li $s0, 1
+/* 0CFDD0 80314DD0 96EE000E */ lhu $t6, 0xe($s7)
+.L80314DD4:
+/* 0CFDD4 80314DD4 15C00005 */ bnez $t6, .L80314DEC
+/* 0CFDD8 80314DD8 00000000 */ nop
+/* 0CFDDC 80314DDC 96F80012 */ lhu $t8, 0x12($s7)
+/* 0CFDE0 80314DE0 00008025 */ move $s0, $zero
+/* 0CFDE4 80314DE4 13000003 */ beqz $t8, .L80314DF4
+/* 0CFDE8 80314DE8 00000000 */ nop
+.L80314DEC:
+/* 0CFDEC 80314DEC 10000001 */ b .L80314DF4
+/* 0CFDF0 80314DF0 24100002 */ li $s0, 2
+.L80314DF4:
+/* 0CFDF4 80314DF4 8FB90148 */ lw $t9, 0x148($sp)
+/* 0CFDF8 80314DF8 8FA6017C */ lw $a2, 0x17c($sp)
+/* 0CFDFC 80314DFC 00003825 */ move $a3, $zero
+/* 0CFE00 80314E00 AFB00010 */ sw $s0, 0x10($sp)
+/* 0CFE04 80314E04 0C0C540C */ jal process_envelope
+/* 0CFE08 80314E08 AFB90014 */ sw $t9, 0x14($sp)
+/* 0CFE0C 80314E0C 92EF0001 */ lbu $t7, 1($s7)
+/* 0CFE10 80314E10 3C1F8000 */ lui $ra, 0x8000
+/* 0CFE14 80314E14 0040A025 */ move $s4, $v0
+/* 0CFE18 80314E18 11E00008 */ beqz $t7, .L80314E3C
+/* 0CFE1C 80314E1C 00402025 */ move $a0, $v0
+/* 0CFE20 80314E20 02E02825 */ move $a1, $s7
+/* 0CFE24 80314E24 02203025 */ move $a2, $s1
+/* 0CFE28 80314E28 8FA70148 */ lw $a3, 0x148($sp)
+/* 0CFE2C 80314E2C 0C0C557D */ jal note_apply_headset_pan_effects
+/* 0CFE30 80314E30 AFB00010 */ sw $s0, 0x10($sp)
+/* 0CFE34 80314E34 3C1F8000 */ lui $ra, 0x8000
+/* 0CFE38 80314E38 0040A025 */ move $s4, $v0
+.L80314E3C:
+/* 0CFE3C 80314E3C 8FAE0174 */ lw $t6, 0x174($sp)
+.L80314E40:
+/* 0CFE40 80314E40 8FB9006C */ lw $t9, 0x6c($sp)
+/* 0CFE44 80314E44 25D80001 */ addiu $t8, $t6, 1
+/* 0CFE48 80314E48 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
+/* 0CFE4C 80314E4C 8DCE6D70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
+/* 0CFE50 80314E50 272F00C0 */ addiu $t7, $t9, 0xc0
+/* 0CFE54 80314E54 AFAF006C */ sw $t7, 0x6c($sp)
+/* 0CFE58 80314E58 030E082A */ slt $at, $t8, $t6
+/* 0CFE5C 80314E5C 1420FD9D */ bnez $at, .L803144D4
+/* 0CFE60 80314E60 AFB80174 */ sw $t8, 0x174($sp)
+.L80314E64:
+/* 0CFE64 80314E64 3C080800 */ lui $t0, 0x800
+/* 0CFE68 80314E68 02802025 */ move $a0, $s4
+/* 0CFE6C 80314E6C AC880000 */ sw $t0, ($a0)
+/* 0CFE70 80314E70 8FA3017C */ lw $v1, 0x17c($sp)
+/* 0CFE74 80314E74 26940008 */ addiu $s4, $s4, 8
+/* 0CFE78 80314E78 02802825 */ move $a1, $s4
+/* 0CFE7C 80314E7C 0003C840 */ sll $t9, $v1, 1
+/* 0CFE80 80314E80 332FFFFF */ andi $t7, $t9, 0xffff
+/* 0CFE84 80314E84 AC8F0004 */ sw $t7, 4($a0)
+/* 0CFE88 80314E88 26940008 */ addiu $s4, $s4, 8
+/* 0CFE8C 80314E8C 3C180D00 */ lui $t8, 0xd00
+/* 0CFE90 80314E90 3C0E04C0 */ lui $t6, (0x04C00600 >> 16) # lui $t6, 0x4c0
+/* 0CFE94 80314E94 35CE0600 */ ori $t6, (0x04C00600 & 0xFFFF) # ori $t6, $t6, 0x600
+/* 0CFE98 80314E98 ACB80000 */ sw $t8, ($a1)
+/* 0CFE9C 80314E9C 02803025 */ move $a2, $s4
+/* 0CFEA0 80314EA0 ACAE0004 */ sw $t6, 4($a1)
+/* 0CFEA4 80314EA4 0019C840 */ sll $t9, $t9, 1
+/* 0CFEA8 80314EA8 332FFFFF */ andi $t7, $t9, 0xffff
+/* 0CFEAC 80314EAC 26940008 */ addiu $s4, $s4, 8
+/* 0CFEB0 80314EB0 ACCF0004 */ sw $t7, 4($a2)
+/* 0CFEB4 80314EB4 ACC80000 */ sw $t0, ($a2)
+/* 0CFEB8 80314EB8 02803825 */ move $a3, $s4
+/* 0CFEBC 80314EBC 3C180600 */ lui $t8, 0x600
+/* 0CFEC0 80314EC0 ACF80000 */ sw $t8, ($a3)
+/* 0CFEC4 80314EC4 8FAE0178 */ lw $t6, 0x178($sp)
+/* 0CFEC8 80314EC8 3C1F8000 */ lui $ra, 0x8000
+/* 0CFECC 80314ECC 26820008 */ addiu $v0, $s4, 8
+/* 0CFED0 80314ED0 01DFC821 */ addu $t9, $t6, $ra
+/* 0CFED4 80314ED4 ACF90004 */ sw $t9, 4($a3)
+/* 0CFED8 80314ED8 8FBF0044 */ lw $ra, 0x44($sp)
+/* 0CFEDC 80314EDC 8FBE0040 */ lw $fp, 0x40($sp)
+/* 0CFEE0 80314EE0 8FB7003C */ lw $s7, 0x3c($sp)
+/* 0CFEE4 80314EE4 8FB60038 */ lw $s6, 0x38($sp)
+/* 0CFEE8 80314EE8 8FB50034 */ lw $s5, 0x34($sp)
+/* 0CFEEC 80314EEC 8FB40030 */ lw $s4, 0x30($sp)
+/* 0CFEF0 80314EF0 8FB3002C */ lw $s3, 0x2c($sp)
+/* 0CFEF4 80314EF4 8FB20028 */ lw $s2, 0x28($sp)
+/* 0CFEF8 80314EF8 8FB10024 */ lw $s1, 0x24($sp)
+/* 0CFEFC 80314EFC 8FB00020 */ lw $s0, 0x20($sp)
+/* 0CFF00 80314F00 03E00008 */ jr $ra
+/* 0CFF04 80314F04 27BD0178 */ addiu $sp, $sp, 0x178
diff --git a/asm/non_matchings/synthesis_process_notes_us.s b/asm/non_matchings/synthesis_process_notes_us.s
@@ -0,0 +1,733 @@
+.late_rodata
+glabel D_80337BB0
+ .word 0x3FFFFEB0, 0x3FFFFEB0
+glabel D_80337BB8
+ .word 0x407FFEDA, 0x407FFEDA
+.text
+
+glabel synthesis_process_notes
+/* 0D0590 80315590 27BDFE90 */ addiu $sp, $sp, -0x170
+/* 0D0594 80315594 3C0E8022 */ lui $t6, %hi(gMaxSimultaneousNotes) # $t6, 0x8022
+/* 0D0598 80315598 8DCE6B70 */ lw $t6, %lo(gMaxSimultaneousNotes)($t6)
+/* 0D059C 8031559C AFB40030 */ sw $s4, 0x30($sp)
+/* 0D05A0 803155A0 00C0A025 */ move $s4, $a2
+/* 0D05A4 803155A4 AFBF0044 */ sw $ra, 0x44($sp)
+/* 0D05A8 803155A8 AFBE0040 */ sw $fp, 0x40($sp)
+/* 0D05AC 803155AC AFB7003C */ sw $s7, 0x3c($sp)
+/* 0D05B0 803155B0 AFB60038 */ sw $s6, 0x38($sp)
+/* 0D05B4 803155B4 AFB50034 */ sw $s5, 0x34($sp)
+/* 0D05B8 803155B8 AFB3002C */ sw $s3, 0x2c($sp)
+/* 0D05BC 803155BC AFB20028 */ sw $s2, 0x28($sp)
+/* 0D05C0 803155C0 AFB10024 */ sw $s1, 0x24($sp)
+/* 0D05C4 803155C4 AFB00020 */ sw $s0, 0x20($sp)
+/* 0D05C8 803155C8 AFA40170 */ sw $a0, 0x170($sp)
+/* 0D05CC 803155CC AFA50174 */ sw $a1, 0x174($sp)
+/* 0D05D0 803155D0 AFA0016C */ sw $zero, 0x16c($sp)
+/* 0D05D4 803155D4 19C00265 */ blez $t6, .L_US_80315F6C
+/* 0D05D8 803155D8 AFA00154 */ sw $zero, 0x154($sp)
+/* 0D05DC 803155DC AFA00064 */ sw $zero, 0x64($sp)
+.L_US_803155E0:
+/* 0D05E0 803155E0 3C188022 */ lui $t8, %hi(gNotes) # $t8, 0x8022
+/* 0D05E4 803155E4 8F182610 */ lw $t8, %lo(gNotes)($t8)
+/* 0D05E8 803155E8 8FAF0064 */ lw $t7, 0x64($sp)
+/* 0D05EC 803155EC 01F8B821 */ addu $s7, $t7, $t8
+/* 0D05F0 803155F0 8EF90000 */ lw $t9, ($s7)
+/* 0D05F4 803155F4 001977C2 */ srl $t6, $t9, 0x1f
+/* 0D05F8 803155F8 51C00010 */ beql $t6, $zero, .L_US_8031563C
+/* 0D05FC 803155FC 8EF90000 */ lw $t9, ($s7)
+/* 0D0600 80315600 92E20007 */ lbu $v0, 7($s7)
+/* 0D0604 80315604 3C0F8022 */ lui $t7, %hi(gBankLoadStatus)
+/* 0D0608 80315608 8FAE016C */ lw $t6, 0x16c($sp)
+/* 0D060C 8031560C 01E27821 */ addu $t7, $t7, $v0
+/* 0D0610 80315610 91EF14D0 */ lbu $t7, %lo(gBankLoadStatus)($t7)
+/* 0D0614 80315614 3C010100 */ lui $at, 0x100
+/* 0D0618 80315618 29F80002 */ slti $t8, $t7, 2
+/* 0D061C 8031561C 13000006 */ beqz $t8, .L_US_80315638
+/* 0D0620 80315620 0002CA00 */ sll $t9, $v0, 8
+/* 0D0624 80315624 032E7821 */ addu $t7, $t9, $t6
+/* 0D0628 80315628 01E1C021 */ addu $t8, $t7, $at
+/* 0D062C 8031562C 3C018033 */ lui $at, %hi(gAudioErrorFlags) # $at, 0x8033
+/* 0D0630 80315630 10000244 */ b .L_US_80315F44
+/* 0D0634 80315634 AC382E50 */ sw $t8, %lo(gAudioErrorFlags)($at)
+.L_US_80315638:
+/* 0D0638 80315638 8EF90000 */ lw $t9, ($s7)
+.L_US_8031563C:
+/* 0D063C 8031563C 001977C2 */ srl $t6, $t9, 0x1f
+/* 0D0640 80315640 51C00241 */ beql $t6, $zero, .L_US_80315F48
+/* 0D0644 80315644 8FB9016C */ lw $t9, 0x16c($sp)
+/* 0D0648 80315648 8FAF0174 */ lw $t7, 0x174($sp)
+/* 0D064C 8031564C AFA00140 */ sw $zero, 0x140($sp)
+/* 0D0650 80315650 24010001 */ li $at, 1
+/* 0D0654 80315654 000FC040 */ sll $t8, $t7, 1
+/* 0D0658 80315658 AFB80048 */ sw $t8, 0x48($sp)
+/* 0D065C 8031565C 8EF90000 */ lw $t9, ($s7)
+/* 0D0660 80315660 24180001 */ li $t8, 1
+/* 0D0664 80315664 02802025 */ move $a0, $s4
+/* 0D0668 80315668 00197040 */ sll $t6, $t9, 1
+/* 0D066C 8031566C 000E7FC2 */ srl $t7, $t6, 0x1f
+/* 0D0670 80315670 15E10004 */ bne $t7, $at, .L_US_80315684
+/* 0D0674 80315674 02E02825 */ move $a1, $s7
+/* 0D0678 80315678 AFB80140 */ sw $t8, 0x140($sp)
+/* 0D067C 8031567C AEE00014 */ sw $zero, 0x14($s7)
+/* 0D0680 80315680 A6E00020 */ sh $zero, 0x20($s7)
+.L_US_80315684:
+/* 0D0684 80315684 3C014000 */ li $at, 0x40000000 # 2.000000
+/* 0D0688 80315688 44812000 */ mtc1 $at, $f4
+/* 0D068C 8031568C C6E00038 */ lwc1 $f0, 0x38($s7)
+/* 0D0690 80315690 3C018034 */ lui $at, %hi(D_80337BB8)
+/* 0D0694 80315694 4604003C */ c.lt.s $f0, $f4
+/* 0D0698 80315698 00000000 */ nop
+/* 0D069C 8031569C 4500000E */ bc1f .L_US_803156D8
+/* 0D06A0 803156A0 00000000 */ nop
+/* 0D06A4 803156A4 3C018034 */ lui $at, %hi(D_80337BB0) # $at, 0x8034
+/* 0D06A8 803156A8 C4268DA0 */ lwc1 $f6, %lo(D_80337BB0)($at)
+/* 0D06AC 803156AC 24190001 */ li $t9, 1
+/* 0D06B0 803156B0 AFB900E0 */ sw $t9, 0xe0($sp)
+/* 0D06B4 803156B4 4600303C */ c.lt.s $f6, $f0
+/* 0D06B8 803156B8 3C018034 */ lui $at, %hi(D_80337BB0 + 0x4) # $at, 0x8034
+/* 0D06BC 803156BC 45000004 */ bc1f .L_US_803156D0
+/* 0D06C0 803156C0 00000000 */ nop
+/* 0D06C4 803156C4 C4288DA4 */ lwc1 $f8, %lo(D_80337BB0 + 0x4)($at)
+/* 0D06C8 803156C8 E6E80038 */ swc1 $f8, 0x38($s7)
+/* 0D06CC 803156CC C6E00038 */ lwc1 $f0, 0x38($s7)
+.L_US_803156D0:
+/* 0D06D0 803156D0 10000010 */ b .L_US_80315714
+/* 0D06D4 803156D4 46000086 */ mov.s $f2, $f0
+.L_US_803156D8:
+/* 0D06D8 803156D8 C42A8DA8 */ lwc1 $f10, %lo(D_80337BB8)($at)
+/* 0D06DC 803156DC 240E0002 */ li $t6, 2
+/* 0D06E0 803156E0 AFAE00E0 */ sw $t6, 0xe0($sp)
+/* 0D06E4 803156E4 4600503E */ c.le.s $f10, $f0
+/* 0D06E8 803156E8 3C018034 */ lui $at, %hi(D_80337BB8)
+/* 0D06EC 803156EC 45020005 */ bc1fl .L_US_80315704
+/* 0D06F0 803156F0 3C013F00 */ lui $at, 0x3f00 # $at, 0x3f00
+/* 0D06F4 803156F4 C4308DAC */ lwc1 $f16, %lo(D_80337BB8 + 0x4)($at)
+/* 0D06F8 803156F8 E6F00038 */ swc1 $f16, 0x38($s7)
+/* 0D06FC 803156FC C6E00038 */ lwc1 $f0, 0x38($s7)
+/* 0D0700 80315700 3C013F00 */ li $at, 0x3F000000 # 0.500000
+.L_US_80315704:
+/* 0D0704 80315704 44819000 */ mtc1 $at, $f18
+/* 0D0708 80315708 00000000 */ nop
+/* 0D070C 8031570C 46120082 */ mul.s $f2, $f0, $f18
+/* 0D0710 80315710 00000000 */ nop
+.L_US_80315714:
+/* 0D0714 80315714 3C014700 */ li $at, 0x47000000 # 32768.000000
+/* 0D0718 80315718 44812000 */ mtc1 $at, $f4
+/* 0D071C 8031571C 8FAE0174 */ lw $t6, 0x174($sp)
+/* 0D0720 80315720 46041182 */ mul.s $f6, $f2, $f4
+/* 0D0724 80315724 4600320D */ trunc.w.s $f8, $f6
+/* 0D0728 80315728 44184000 */ mfc1 $t8, $f8
+/* 0D072C 8031572C 00000000 */ nop
+/* 0D0730 80315730 3319FFFF */ andi $t9, $t8, 0xffff
+/* 0D0734 80315734 032E0019 */ multu $t9, $t6
+/* 0D0738 80315738 AFB9005C */ sw $t9, 0x5c($sp)
+/* 0D073C 8031573C 96F90020 */ lhu $t9, 0x20($s7)
+/* 0D0740 80315740 8EE20024 */ lw $v0, 0x24($s7)
+/* 0D0744 80315744 00007812 */ mflo $t7
+/* 0D0748 80315748 000FC040 */ sll $t8, $t7, 1
+/* 0D074C 8031574C 03381821 */ addu $v1, $t9, $t8
+/* 0D0750 80315750 1440000E */ bnez $v0, .L_US_8031578C
+/* 0D0754 80315754 A6E30020 */ sh $v1, 0x20($s7)
+/* 0D0758 80315758 00038402 */ srl $s0, $v1, 0x10
+/* 0D075C 8031575C 02003025 */ move $a2, $s0
+/* 0D0760 80315760 0C0C5804 */ jal load_wave_samples
+/* 0D0764 80315764 AFA00140 */ sw $zero, 0x140($sp)
+/* 0D0768 80315768 8EE90014 */ lw $t1, 0x14($s7)
+/* 0D076C 8031576C 0040A025 */ move $s4, $v0
+/* 0D0770 80315770 00097840 */ sll $t7, $t1, 1
+/* 0D0774 80315774 25F90180 */ addiu $t9, $t7, 0x180
+/* 0D0778 80315778 A7B900CE */ sh $t9, 0xce($sp)
+/* 0D077C 8031577C 0130C021 */ addu $t8, $t1, $s0
+/* 0D0780 80315780 AEF80014 */ sw $t8, 0x14($s7)
+/* 0D0784 80315784 100001B9 */ b .L_US_80315E6C
+/* 0D0788 80315788 8EE50000 */ lw $a1, ($s7)
+.L_US_8031578C:
+/* 0D078C 8031578C 8C4E0000 */ lw $t6, ($v0)
+/* 0D0790 80315790 00031402 */ srl $v0, $v1, 0x10
+/* 0D0794 80315794 AFAE015C */ sw $t6, 0x15c($sp)
+/* 0D0798 80315798 8DDF0008 */ lw $ra, 8($t6)
+/* 0D079C 8031579C 8FF90004 */ lw $t9, 4($ra)
+/* 0D07A0 803157A0 AFB90108 */ sw $t9, 0x108($sp)
+/* 0D07A4 803157A4 8DD80004 */ lw $t8, 4($t6)
+/* 0D07A8 803157A8 8FAE00E0 */ lw $t6, 0xe0($sp)
+/* 0D07AC 803157AC AFA000D0 */ sw $zero, 0xd0($sp)
+/* 0D07B0 803157B0 AFA000DC */ sw $zero, 0xdc($sp)
+/* 0D07B4 803157B4 19C001AB */ blez $t6, .L_US_80315E64
+/* 0D07B8 803157B8 AFB80118 */ sw $t8, 0x118($sp)
+/* 0D07BC 803157BC 39D90001 */ xori $t9, $t6, 1
+/* 0D07C0 803157C0 2F390001 */ sltiu $t9, $t9, 1
+/* 0D07C4 803157C4 AFB90054 */ sw $t9, 0x54($sp)
+/* 0D07C8 803157C8 AFA20058 */ sw $v0, 0x58($sp)
+/* 0D07CC 803157CC 8FAF015C */ lw $t7, 0x15c($sp)
+.L_US_803157D0:
+/* 0D07D0 803157D0 8FB80054 */ lw $t8, 0x54($sp)
+/* 0D07D4 803157D4 8FA20058 */ lw $v0, 0x58($sp)
+/* 0D07D8 803157D8 8DE4000C */ lw $a0, 0xc($t7)
+/* 0D07DC 803157DC 0000F025 */ move $fp, $zero
+/* 0D07E0 803157E0 0000A825 */ move $s5, $zero
+/* 0D07E4 803157E4 13000003 */ beqz $t8, .L_US_803157F4
+/* 0D07E8 803157E8 24850008 */ addiu $a1, $a0, 8
+/* 0D07EC 803157EC 1000000A */ b .L_US_80315818
+/* 0D07F0 803157F0 00406825 */ move $t5, $v0
+.L_US_803157F4:
+/* 0D07F4 803157F4 304E0001 */ andi $t6, $v0, 1
+/* 0D07F8 803157F8 11C00007 */ beqz $t6, .L_US_80315818
+/* 0D07FC 803157FC 00406825 */ move $t5, $v0
+/* 0D0800 80315800 8FAF00DC */ lw $t7, 0xdc($sp)
+/* 0D0804 80315804 2401FFFE */ li $at, -2
+/* 0D0808 80315808 0041C824 */ and $t9, $v0, $at
+/* 0D080C 8031580C 000FC040 */ sll $t8, $t7, 1
+/* 0D0810 80315810 10000001 */ b .L_US_80315818
+/* 0D0814 80315814 03386821 */ addu $t5, $t9, $t8
+.L_US_80315818:
+/* 0D0818 80315818 8FAE0154 */ lw $t6, 0x154($sp)
+/* 0D081C 8031581C AFA20058 */ sw $v0, 0x58($sp)
+/* 0D0820 80315820 11C50013 */ beq $t6, $a1, .L_US_80315870
+/* 0D0824 80315824 00000000 */ nop
+/* 0D0828 80315828 AFA50154 */ sw $a1, 0x154($sp)
+/* 0D082C 8031582C 8C990000 */ lw $t9, ($a0)
+/* 0D0830 80315830 8C8F0004 */ lw $t7, 4($a0)
+/* 0D0834 80315834 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0D0838 80315838 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0D083C 8031583C 01F90019 */ multu $t7, $t9
+/* 0D0840 80315840 02801025 */ move $v0, $s4
+/* 0D0844 80315844 26940008 */ addiu $s4, $s4, 8
+/* 0D0848 80315848 00001812 */ mflo $v1
+/* 0D084C 8031584C 0003C100 */ sll $t8, $v1, 4
+/* 0D0850 80315850 03017024 */ and $t6, $t8, $at
+/* 0D0854 80315854 3C010B00 */ lui $at, 0xb00
+/* 0D0858 80315858 01C17825 */ or $t7, $t6, $at
+/* 0D085C 8031585C AC4F0000 */ sw $t7, ($v0)
+/* 0D0860 80315860 8FB90154 */ lw $t9, 0x154($sp)
+/* 0D0864 80315864 3C018000 */ lui $at, 0x8000
+/* 0D0868 80315868 0321C021 */ addu $t8, $t9, $at
+/* 0D086C 8031586C AC580004 */ sw $t8, 4($v0)
+.L_US_80315870:
+/* 0D0870 80315870 11A00102 */ beqz $t5, .L_US_80315C7C
+/* 0D0874 80315874 8FA20058 */ lw $v0, 0x58($sp)
+/* 0D0878 80315878 AFA20058 */ sw $v0, 0x58($sp)
+/* 0D087C 8031587C 8EE90014 */ lw $t1, 0x14($s7)
+.L_US_80315880:
+/* 0D0880 80315880 8FAE0108 */ lw $t6, 0x108($sp)
+/* 0D0884 80315884 01BE2023 */ subu $a0, $t5, $fp
+/* 0D0888 80315888 3132000F */ andi $s2, $t1, 0xf
+/* 0D088C 8031588C 00005025 */ move $t2, $zero
+/* 0D0890 80315890 00005825 */ move $t3, $zero
+/* 0D0894 80315894 00806025 */ move $t4, $a0
+/* 0D0898 80315898 16400006 */ bnez $s2, .L_US_803158B4
+/* 0D089C 8031589C 01C91823 */ subu $v1, $t6, $t1
+/* 0D08A0 803158A0 8EEF0000 */ lw $t7, ($s7)
+/* 0D08A4 803158A4 000FC080 */ sll $t8, $t7, 2
+/* 0D08A8 803158A8 07020003 */ bltzl $t8, .L_US_803158B8
+/* 0D08AC 803158AC 240E0010 */ li $t6, 16
+/* 0D08B0 803158B0 24120010 */ li $s2, 16
+.L_US_803158B4:
+/* 0D08B4 803158B4 240E0010 */ li $t6, 16
+.L_US_803158B8:
+/* 0D08B8 803158B8 01D22823 */ subu $a1, $t6, $s2
+/* 0D08BC 803158BC 0083082A */ slt $at, $a0, $v1
+/* 0D08C0 803158C0 1020000C */ beqz $at, .L_US_803158F4
+/* 0D08C4 803158C4 00A0B025 */ move $s6, $a1
+/* 0D08C8 803158C8 00851023 */ subu $v0, $a0, $a1
+/* 0D08CC 803158CC 2442000F */ addiu $v0, $v0, 0xf
+/* 0D08D0 803158D0 04410003 */ bgez $v0, .L_US_803158E0
+/* 0D08D4 803158D4 00027903 */ sra $t7, $v0, 4
+/* 0D08D8 803158D8 2441000F */ addiu $at, $v0, 0xf
+/* 0D08DC 803158DC 00017903 */ sra $t7, $at, 4
+.L_US_803158E0:
+/* 0D08E0 803158E0 000F8100 */ sll $s0, $t7, 4
+/* 0D08E4 803158E4 00B0C821 */ addu $t9, $a1, $s0
+/* 0D08E8 803158E8 01E04025 */ move $t0, $t7
+/* 0D08EC 803158EC 10000012 */ b .L_US_80315938
+/* 0D08F0 803158F0 03249823 */ subu $s3, $t9, $a0
+.L_US_803158F4:
+/* 0D08F4 803158F4 00721021 */ addu $v0, $v1, $s2
+/* 0D08F8 803158F8 2450FFF0 */ addiu $s0, $v0, -0x10
+/* 0D08FC 803158FC 1E000003 */ bgtz $s0, .L_US_8031590C
+/* 0D0900 80315900 00009825 */ move $s3, $zero
+/* 0D0904 80315904 00008025 */ move $s0, $zero
+/* 0D0908 80315908 0060B025 */ move $s6, $v1
+.L_US_8031590C:
+/* 0D090C 8031590C 2608000F */ addiu $t0, $s0, 0xf
+/* 0D0910 80315910 8FEE0008 */ lw $t6, 8($ra)
+/* 0D0914 80315914 05010003 */ bgez $t0, .L_US_80315924
+/* 0D0918 80315918 0008C103 */ sra $t8, $t0, 4
+/* 0D091C 8031591C 2501000F */ addiu $at, $t0, 0xf
+/* 0D0920 80315920 0001C103 */ sra $t8, $at, 4
+.L_US_80315924:
+/* 0D0924 80315924 11C00003 */ beqz $t6, .L_US_80315934
+/* 0D0928 80315928 03004025 */ move $t0, $t8
+/* 0D092C 8031592C 10000002 */ b .L_US_80315938
+/* 0D0930 80315930 240B0001 */ li $t3, 1
+.L_US_80315934:
+/* 0D0934 80315934 240A0001 */ li $t2, 1
+.L_US_80315938:
+/* 0D0938 80315938 11000032 */ beqz $t0, .L_US_80315A04
+/* 0D093C 8031593C 24030009 */ li $v1, 9
+/* 0D0940 80315940 01321023 */ subu $v0, $t1, $s2
+/* 0D0944 80315944 24420010 */ addiu $v0, $v0, 0x10
+/* 0D0948 80315948 04410003 */ bgez $v0, .L_US_80315958
+/* 0D094C 8031594C 00027903 */ sra $t7, $v0, 4
+/* 0D0950 80315950 2441000F */ addiu $at, $v0, 0xf
+/* 0D0954 80315954 00017903 */ sra $t7, $at, 4
+.L_US_80315958:
+/* 0D0958 80315958 01E30019 */ multu $t7, $v1
+/* 0D095C 8031595C 8FB80118 */ lw $t8, 0x118($sp)
+/* 0D0960 80315960 AFBF0158 */ sw $ra, 0x158($sp)
+/* 0D0964 80315964 8FA60140 */ lw $a2, 0x140($sp)
+/* 0D0968 80315968 26E70003 */ addiu $a3, $s7, 3
+/* 0D096C 8031596C AFAA0148 */ sw $t2, 0x148($sp)
+/* 0D0970 80315970 AFAB0144 */ sw $t3, 0x144($sp)
+/* 0D0974 80315974 AFAC0104 */ sw $t4, 0x104($sp)
+/* 0D0978 80315978 AFAD0110 */ sw $t5, 0x110($sp)
+/* 0D097C 8031597C 0000C812 */ mflo $t9
+/* 0D0980 80315980 03382021 */ addu $a0, $t9, $t8
+/* 0D0984 80315984 00000000 */ nop
+/* 0D0988 80315988 01030019 */ multu $t0, $v1
+/* 0D098C 8031598C 00008812 */ mflo $s1
+/* 0D0990 80315990 02202825 */ move $a1, $s1
+/* 0D0994 80315994 0C0C60C0 */ jal dma_sample_data
+/* 0D0998 80315998 00000000 */ nop
+/* 0D099C 8031599C 3047000F */ andi $a3, $v0, 0xf
+/* 0D09A0 803159A0 02802025 */ move $a0, $s4
+/* 0D09A4 803159A4 3C0E0800 */ lui $t6, (0x080003F0 >> 16) # lui $t6, 0x800
+/* 0D09A8 803159A8 8FAA0148 */ lw $t2, 0x148($sp)
+/* 0D09AC 803159AC 8FAB0144 */ lw $t3, 0x144($sp)
+/* 0D09B0 803159B0 8FAC0104 */ lw $t4, 0x104($sp)
+/* 0D09B4 803159B4 8FAD0110 */ lw $t5, 0x110($sp)
+/* 0D09B8 803159B8 8FBF0158 */ lw $ra, 0x158($sp)
+/* 0D09BC 803159BC 35CE03F0 */ ori $t6, (0x080003F0 & 0xFFFF) # ori $t6, $t6, 0x3f0
+/* 0D09C0 803159C0 02277821 */ addu $t7, $s1, $a3
+/* 0D09C4 803159C4 31F9FFFF */ andi $t9, $t7, 0xffff
+/* 0D09C8 803159C8 AC8E0000 */ sw $t6, ($a0)
+/* 0D09CC 803159CC 26940008 */ addiu $s4, $s4, 8
+/* 0D09D0 803159D0 AC990004 */ sw $t9, 4($a0)
+/* 0D09D4 803159D4 02802825 */ move $a1, $s4
+/* 0D09D8 803159D8 00477023 */ subu $t6, $v0, $a3
+/* 0D09DC 803159DC 3C018000 */ lui $at, 0x8000
+/* 0D09E0 803159E0 01C17821 */ addu $t7, $t6, $at
+/* 0D09E4 803159E4 3C180400 */ lui $t8, 0x400
+/* 0D09E8 803159E8 ACB80000 */ sw $t8, ($a1)
+/* 0D09EC 803159EC ACAF0004 */ sw $t7, 4($a1)
+/* 0D09F0 803159F0 8EE60000 */ lw $a2, ($s7)
+/* 0D09F4 803159F4 26940008 */ addiu $s4, $s4, 8
+/* 0D09F8 803159F8 0006C880 */ sll $t9, $a2, 2
+/* 0D09FC 803159FC 10000006 */ b .L_US_80315A18
+/* 0D0A00 80315A00 001937C2 */ srl $a2, $t9, 0x1f
+.L_US_80315A04:
+/* 0D0A04 80315A04 8EE60000 */ lw $a2, ($s7)
+/* 0D0A08 80315A08 00008025 */ move $s0, $zero
+/* 0D0A0C 80315A0C 00003825 */ move $a3, $zero
+/* 0D0A10 80315A10 00067080 */ sll $t6, $a2, 2
+/* 0D0A14 80315A14 000E37C2 */ srl $a2, $t6, 0x1f
+.L_US_80315A18:
+/* 0D0A18 80315A18 10C0000F */ beqz $a2, .L_US_80315A58
+/* 0D0A1C 80315A1C 02801025 */ move $v0, $s4
+/* 0D0A20 80315A20 3C190F00 */ lui $t9, 0xf00
+/* 0D0A24 80315A24 AC590000 */ sw $t9, ($v0)
+/* 0D0A28 80315A28 8FB8015C */ lw $t8, 0x15c($sp)
+/* 0D0A2C 80315A2C 3C018000 */ lui $at, (0x80000010 >> 16) # lui $at, 0x8000
+/* 0D0A30 80315A30 34210010 */ ori $at, (0x80000010 & 0xFFFF) # ori $at, $at, 0x10
+/* 0D0A34 80315A34 8F0E0008 */ lw $t6, 8($t8)
+/* 0D0A38 80315A38 24190002 */ li $t9, 2
+/* 0D0A3C 80315A3C 26940008 */ addiu $s4, $s4, 8
+/* 0D0A40 80315A40 01C17821 */ addu $t7, $t6, $at
+/* 0D0A44 80315A44 AC4F0004 */ sw $t7, 4($v0)
+/* 0D0A48 80315A48 AFB90140 */ sw $t9, 0x140($sp)
+/* 0D0A4C 80315A4C 92F80000 */ lbu $t8, ($s7)
+/* 0D0A50 80315A50 330EFFDF */ andi $t6, $t8, 0xffdf
+/* 0D0A54 80315A54 A2EE0000 */ sb $t6, ($s7)
+.L_US_80315A58:
+/* 0D0A58 80315A58 17C0001C */ bnez $fp, .L_US_80315ACC
+/* 0D0A5C 80315A5C 02801025 */ move $v0, $s4
+/* 0D0A60 80315A60 24EF03F0 */ addiu $t7, $a3, 0x3f0
+/* 0D0A64 80315A64 31F9FFFF */ andi $t9, $t7, 0xffff
+/* 0D0A68 80315A68 3C010800 */ lui $at, 0x800
+/* 0D0A6C 80315A6C 0321C025 */ or $t8, $t9, $at
+/* 0D0A70 80315A70 00103040 */ sll $a2, $s0, 1
+/* 0D0A74 80315A74 30CEFFFF */ andi $t6, $a2, 0xffff
+/* 0D0A78 80315A78 3C010180 */ lui $at, 0x180
+/* 0D0A7C 80315A7C 02801025 */ move $v0, $s4
+/* 0D0A80 80315A80 01C17825 */ or $t7, $t6, $at
+/* 0D0A84 80315A84 AC4F0004 */ sw $t7, 4($v0)
+/* 0D0A88 80315A88 AC580000 */ sw $t8, ($v0)
+/* 0D0A8C 80315A8C 8FB90140 */ lw $t9, 0x140($sp)
+/* 0D0A90 80315A90 26940008 */ addiu $s4, $s4, 8
+/* 0D0A94 80315A94 3C010100 */ lui $at, 0x100
+/* 0D0A98 80315A98 333800FF */ andi $t8, $t9, 0xff
+/* 0D0A9C 80315A9C 00187400 */ sll $t6, $t8, 0x10
+/* 0D0AA0 80315AA0 01C17825 */ or $t7, $t6, $at
+/* 0D0AA4 80315AA4 02801825 */ move $v1, $s4
+/* 0D0AA8 80315AA8 AC6F0000 */ sw $t7, ($v1)
+/* 0D0AAC 80315AAC 8EF90034 */ lw $t9, 0x34($s7)
+/* 0D0AB0 80315AB0 3C018000 */ lui $at, 0x8000
+/* 0D0AB4 80315AB4 00127040 */ sll $t6, $s2, 1
+/* 0D0AB8 80315AB8 0321C021 */ addu $t8, $t9, $at
+/* 0D0ABC 80315ABC AC780004 */ sw $t8, 4($v1)
+/* 0D0AC0 80315AC0 26940008 */ addiu $s4, $s4, 8
+/* 0D0AC4 80315AC4 10000030 */ b .L_US_80315B88
+/* 0D0AC8 80315AC8 AFAE0128 */ sw $t6, 0x128($sp)
+.L_US_80315ACC:
+/* 0D0ACC 80315ACC 24EF03F0 */ addiu $t7, $a3, 0x3f0
+/* 0D0AD0 80315AD0 31F9FFFF */ andi $t9, $t7, 0xffff
+/* 0D0AD4 80315AD4 3C010800 */ lui $at, 0x800
+/* 0D0AD8 80315AD8 0321C025 */ or $t8, $t9, $at
+/* 0D0ADC 80315ADC 2401FFE0 */ li $at, -32
+/* 0D0AE0 80315AE0 26A3001F */ addiu $v1, $s5, 0x1f
+/* 0D0AE4 80315AE4 00617024 */ and $t6, $v1, $at
+/* 0D0AE8 80315AE8 25D90180 */ addiu $t9, $t6, 0x180
+/* 0D0AEC 80315AEC 01C01825 */ move $v1, $t6
+/* 0D0AF0 80315AF0 AC580000 */ sw $t8, ($v0)
+/* 0D0AF4 80315AF4 00103040 */ sll $a2, $s0, 1
+/* 0D0AF8 80315AF8 30CEFFFF */ andi $t6, $a2, 0xffff
+/* 0D0AFC 80315AFC 0019C400 */ sll $t8, $t9, 0x10
+/* 0D0B00 80315B00 030E7825 */ or $t7, $t8, $t6
+/* 0D0B04 80315B04 AC4F0004 */ sw $t7, 4($v0)
+/* 0D0B08 80315B08 8FB90140 */ lw $t9, 0x140($sp)
+/* 0D0B0C 80315B0C 26940008 */ addiu $s4, $s4, 8
+/* 0D0B10 80315B10 3C010100 */ lui $at, 0x100
+/* 0D0B14 80315B14 333800FF */ andi $t8, $t9, 0xff
+/* 0D0B18 80315B18 00187400 */ sll $t6, $t8, 0x10
+/* 0D0B1C 80315B1C 01C17825 */ or $t7, $t6, $at
+/* 0D0B20 80315B20 02802025 */ move $a0, $s4
+/* 0D0B24 80315B24 AC8F0000 */ sw $t7, ($a0)
+/* 0D0B28 80315B28 8EF90034 */ lw $t9, 0x34($s7)
+/* 0D0B2C 80315B2C 3C018000 */ lui $at, 0x8000
+/* 0D0B30 80315B30 00127040 */ sll $t6, $s2, 1
+/* 0D0B34 80315B34 0321C021 */ addu $t8, $t9, $at
+/* 0D0B38 80315B38 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0D0B3C 80315B3C 006E7821 */ addu $t7, $v1, $t6
+/* 0D0B40 80315B40 AC980004 */ sw $t8, 4($a0)
+/* 0D0B44 80315B44 25F90180 */ addiu $t9, $t7, 0x180
+/* 0D0B48 80315B48 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0D0B4C 80315B4C 0321C024 */ and $t8, $t9, $at
+/* 0D0B50 80315B50 26940008 */ addiu $s4, $s4, 8
+/* 0D0B54 80315B54 3C010A00 */ lui $at, 0xa00
+/* 0D0B58 80315B58 03017025 */ or $t6, $t8, $at
+/* 0D0B5C 80315B5C 02802825 */ move $a1, $s4
+/* 0D0B60 80315B60 ACAE0000 */ sw $t6, ($a1)
+/* 0D0B64 80315B64 02167021 */ addu $t6, $s0, $s6
+/* 0D0B68 80315B68 26B90180 */ addiu $t9, $s5, 0x180
+/* 0D0B6C 80315B6C 0019C400 */ sll $t8, $t9, 0x10
+/* 0D0B70 80315B70 01D37823 */ subu $t7, $t6, $s3
+/* 0D0B74 80315B74 000FC840 */ sll $t9, $t7, 1
+/* 0D0B78 80315B78 332EFFFF */ andi $t6, $t9, 0xffff
+/* 0D0B7C 80315B7C 030E7825 */ or $t7, $t8, $t6
+/* 0D0B80 80315B80 ACAF0004 */ sw $t7, 4($a1)
+/* 0D0B84 80315B84 26940008 */ addiu $s4, $s4, 8
+.L_US_80315B88:
+/* 0D0B88 80315B88 8FAE0140 */ lw $t6, 0x140($sp)
+/* 0D0B8C 80315B8C 03D0C821 */ addu $t9, $fp, $s0
+/* 0D0B90 80315B90 0336C021 */ addu $t8, $t9, $s6
+/* 0D0B94 80315B94 24010001 */ li $at, 1
+/* 0D0B98 80315B98 11C10008 */ beq $t6, $at, .L_US_80315BBC
+/* 0D0B9C 80315B9C 0313F023 */ subu $fp, $t8, $s3
+/* 0D0BA0 80315BA0 39C20002 */ xori $v0, $t6, 2
+/* 0D0BA4 80315BA4 02167821 */ addu $t7, $s0, $s6
+/* 0D0BA8 80315BA8 01F31823 */ subu $v1, $t7, $s3
+/* 0D0BAC 80315BAC 10400007 */ beqz $v0, .L_US_80315BCC
+/* 0D0BB0 80315BB0 AFA00140 */ sw $zero, 0x140($sp)
+/* 0D0BB4 80315BB4 10000008 */ b .L_US_80315BD8
+/* 0D0BB8 80315BB8 0003C040 */ sll $t8, $v1, 1
+.L_US_80315BBC:
+/* 0D0BBC 80315BBC AFA00128 */ sw $zero, 0x128($sp)
+/* 0D0BC0 80315BC0 02A6A821 */ addu $s5, $s5, $a2
+/* 0D0BC4 80315BC4 1000000B */ b .L_US_80315BF4
+/* 0D0BC8 80315BC8 AFA00140 */ sw $zero, 0x140($sp)
+.L_US_80315BCC:
+/* 0D0BCC 80315BCC 0003C840 */ sll $t9, $v1, 1
+/* 0D0BD0 80315BD0 10000008 */ b .L_US_80315BF4
+/* 0D0BD4 80315BD4 02B9A821 */ addu $s5, $s5, $t9
+.L_US_80315BD8:
+/* 0D0BD8 80315BD8 52A00004 */ beql $s5, $zero, .L_US_80315BEC
+/* 0D0BDC 80315BDC 0072A821 */ addu $s5, $v1, $s2
+/* 0D0BE0 80315BE0 10000004 */ b .L_US_80315BF4
+/* 0D0BE4 80315BE4 02B8A821 */ addu $s5, $s5, $t8
+/* 0D0BE8 80315BE8 0072A821 */ addu $s5, $v1, $s2
+.L_US_80315BEC:
+/* 0D0BEC 80315BEC 00157040 */ sll $t6, $s5, 1
+/* 0D0BF0 80315BF0 01C0A825 */ move $s5, $t6
+.L_US_80315BF4:
+/* 0D0BF4 80315BF4 11400014 */ beqz $t2, .L_US_80315C48
+/* 0D0BF8 80315BF8 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0D0BFC 80315BFC 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0D0C00 80315C00 26AF0180 */ addiu $t7, $s5, 0x180
+/* 0D0C04 80315C04 01E1C824 */ and $t9, $t7, $at
+/* 0D0C08 80315C08 3C010200 */ lui $at, 0x200
+/* 0D0C0C 80315C0C 02801025 */ move $v0, $s4
+/* 0D0C10 80315C10 01BE7023 */ subu $t6, $t5, $fp
+/* 0D0C14 80315C14 000E7840 */ sll $t7, $t6, 1
+/* 0D0C18 80315C18 0321C025 */ or $t8, $t9, $at
+/* 0D0C1C 80315C1C AC580000 */ sw $t8, ($v0)
+/* 0D0C20 80315C20 AC4F0004 */ sw $t7, 4($v0)
+/* 0D0C24 80315C24 92F80000 */ lbu $t8, ($s7)
+/* 0D0C28 80315C28 26940008 */ addiu $s4, $s4, 8
+/* 0D0C2C 80315C2C AEE00014 */ sw $zero, 0x14($s7)
+/* 0D0C30 80315C30 370E0010 */ ori $t6, $t8, 0x10
+/* 0D0C34 80315C34 A2EE0000 */ sb $t6, ($s7)
+/* 0D0C38 80315C38 92EF0000 */ lbu $t7, ($s7)
+/* 0D0C3C 80315C3C 31F9FF7F */ andi $t9, $t7, 0xff7f
+/* 0D0C40 80315C40 1000000E */ b .L_US_80315C7C
+/* 0D0C44 80315C44 A2F90000 */ sb $t9, ($s7)
+.L_US_80315C48:
+/* 0D0C48 80315C48 51600008 */ beql $t3, $zero, .L_US_80315C6C
+/* 0D0C4C 80315C4C 8EF80014 */ lw $t8, 0x14($s7)
+/* 0D0C50 80315C50 92EE0000 */ lbu $t6, ($s7)
+/* 0D0C54 80315C54 35CF0020 */ ori $t7, $t6, 0x20
+/* 0D0C58 80315C58 A2EF0000 */ sb $t7, ($s7)
+/* 0D0C5C 80315C5C 8FF90000 */ lw $t9, ($ra)
+/* 0D0C60 80315C60 10000004 */ b .L_US_80315C74
+/* 0D0C64 80315C64 AEF90014 */ sw $t9, 0x14($s7)
+/* 0D0C68 80315C68 8EF80014 */ lw $t8, 0x14($s7)
+.L_US_80315C6C:
+/* 0D0C6C 80315C6C 030C7021 */ addu $t6, $t8, $t4
+/* 0D0C70 80315C70 AEEE0014 */ sw $t6, 0x14($s7)
+.L_US_80315C74:
+/* 0D0C74 80315C74 57CDFF02 */ bnel $fp, $t5, .L_US_80315880
+/* 0D0C78 80315C78 8EE90014 */ lw $t1, 0x14($s7)
+.L_US_80315C7C:
+/* 0D0C7C 80315C7C 8FAF0054 */ lw $t7, 0x54($sp)
+/* 0D0C80 80315C80 8FB900E0 */ lw $t9, 0xe0($sp)
+/* 0D0C84 80315C84 24010002 */ li $at, 2
+/* 0D0C88 80315C88 15E00008 */ bnez $t7, .L_US_80315CAC
+/* 0D0C8C 80315C8C 8FAE0128 */ lw $t6, 0x128($sp)
+/* 0D0C90 80315C90 1321000D */ beq $t9, $at, .L_US_80315CC8
+/* 0D0C94 80315C94 8FB800DC */ lw $t8, 0xdc($sp)
+/* 0D0C98 80315C98 8EE50000 */ lw $a1, ($s7)
+/* 0D0C9C 80315C9C 000530C0 */ sll $a2, $a1, 3
+/* 0D0CA0 80315CA0 0006C7C2 */ srl $t8, $a2, 0x1f
+/* 0D0CA4 80315CA4 10000066 */ b .L_US_80315E40
+/* 0D0CA8 80315CA8 03003025 */ move $a2, $t8
+.L_US_80315CAC:
+/* 0D0CAC 80315CAC 25CF0180 */ addiu $t7, $t6, 0x180
+/* 0D0CB0 80315CB0 A7AF00CE */ sh $t7, 0xce($sp)
+/* 0D0CB4 80315CB4 8EE50000 */ lw $a1, ($s7)
+/* 0D0CB8 80315CB8 000530C0 */ sll $a2, $a1, 3
+/* 0D0CBC 80315CBC 0006CFC2 */ srl $t9, $a2, 0x1f
+/* 0D0CC0 80315CC0 1000005F */ b .L_US_80315E40
+/* 0D0CC4 80315CC4 03203025 */ move $a2, $t9
+.L_US_80315CC8:
+/* 0D0CC8 80315CC8 13000009 */ beqz $t8, .L_US_80315CF0
+/* 0D0CCC 80315CCC 02801025 */ move $v0, $s4
+/* 0D0CD0 80315CD0 24010001 */ li $at, 1
+/* 0D0CD4 80315CD4 13010034 */ beq $t8, $at, .L_US_80315DA8
+/* 0D0CD8 80315CD8 02801025 */ move $v0, $s4
+/* 0D0CDC 80315CDC 8EE50000 */ lw $a1, ($s7)
+/* 0D0CE0 80315CE0 000530C0 */ sll $a2, $a1, 3
+/* 0D0CE4 80315CE4 000677C2 */ srl $t6, $a2, 0x1f
+/* 0D0CE8 80315CE8 10000055 */ b .L_US_80315E40
+/* 0D0CEC 80315CEC 01C03025 */ move $a2, $t6
+.L_US_80315CF0:
+/* 0D0CF0 80315CF0 8FAF0128 */ lw $t7, 0x128($sp)
+/* 0D0CF4 80315CF4 3C010800 */ lui $at, 0x800
+/* 0D0CF8 80315CF8 25A30004 */ addiu $v1, $t5, 4
+/* 0D0CFC 80315CFC 25F90180 */ addiu $t9, $t7, 0x180
+/* 0D0D00 80315D00 3338FFFF */ andi $t8, $t9, 0xffff
+/* 0D0D04 80315D04 03017025 */ or $t6, $t8, $at
+/* 0D0D08 80315D08 3C010020 */ lui $at, 0x20
+/* 0D0D0C 80315D0C 306FFFFF */ andi $t7, $v1, 0xffff
+/* 0D0D10 80315D10 01E1C825 */ or $t9, $t7, $at
+/* 0D0D14 80315D14 26940008 */ addiu $s4, $s4, 8
+/* 0D0D18 80315D18 3C180501 */ lui $t8, (0x0501FF60 >> 16) # lui $t8, 0x501
+/* 0D0D1C 80315D1C AC590004 */ sw $t9, 4($v0)
+/* 0D0D20 80315D20 AC4E0000 */ sw $t6, ($v0)
+/* 0D0D24 80315D24 3718FF60 */ ori $t8, (0x0501FF60 & 0xFFFF) # ori $t8, $t8, 0xff60
+/* 0D0D28 80315D28 02802025 */ move $a0, $s4
+/* 0D0D2C 80315D2C AC980000 */ sw $t8, ($a0)
+/* 0D0D30 80315D30 8EEE0034 */ lw $t6, 0x34($s7)
+/* 0D0D34 80315D34 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
+/* 0D0D38 80315D38 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
+/* 0D0D3C 80315D3C 01C17821 */ addu $t7, $t6, $at
+/* 0D0D40 80315D40 AC8F0004 */ sw $t7, 4($a0)
+/* 0D0D44 80315D44 24190024 */ li $t9, 36
+/* 0D0D48 80315D48 AFA300D0 */ sw $v1, 0xd0($sp)
+/* 0D0D4C 80315D4C A7B900CE */ sh $t9, 0xce($sp)
+/* 0D0D50 80315D50 8EE50000 */ lw $a1, ($s7)
+/* 0D0D54 80315D54 26940008 */ addiu $s4, $s4, 8
+/* 0D0D58 80315D58 02801025 */ move $v0, $s4
+/* 0D0D5C 80315D5C 000530C0 */ sll $a2, $a1, 3
+/* 0D0D60 80315D60 0006C7C2 */ srl $t8, $a2, 0x1f
+/* 0D0D64 80315D64 13000036 */ beqz $t8, .L_US_80315E40
+/* 0D0D68 80315D68 03003025 */ move $a2, $t8
+/* 0D0D6C 80315D6C 3C0100FF */ lui $at, (0x00FFFFFF >> 16) # lui $at, 0xff
+/* 0D0D70 80315D70 3421FFFF */ ori $at, (0x00FFFFFF & 0xFFFF) # ori $at, $at, 0xffff
+/* 0D0D74 80315D74 25AE0024 */ addiu $t6, $t5, 0x24
+/* 0D0D78 80315D78 01C17824 */ and $t7, $t6, $at
+/* 0D0D7C 80315D7C 3C010200 */ lui $at, 0x200
+/* 0D0D80 80315D80 01E1C825 */ or $t9, $t7, $at
+/* 0D0D84 80315D84 25B80010 */ addiu $t8, $t5, 0x10
+/* 0D0D88 80315D88 AC580004 */ sw $t8, 4($v0)
+/* 0D0D8C 80315D8C AC590000 */ sw $t9, ($v0)
+/* 0D0D90 80315D90 8EE50000 */ lw $a1, ($s7)
+/* 0D0D94 80315D94 26940008 */ addiu $s4, $s4, 8
+/* 0D0D98 80315D98 000530C0 */ sll $a2, $a1, 3
+/* 0D0D9C 80315D9C 000677C2 */ srl $t6, $a2, 0x1f
+/* 0D0DA0 80315DA0 10000027 */ b .L_US_80315E40
+/* 0D0DA4 80315DA4 01C03025 */ move $a2, $t6
+.L_US_80315DA8:
+/* 0D0DA8 80315DA8 8FAF0128 */ lw $t7, 0x128($sp)
+/* 0D0DAC 80315DAC 3C010800 */ lui $at, 0x800
+/* 0D0DB0 80315DB0 26940008 */ addiu $s4, $s4, 8
+/* 0D0DB4 80315DB4 25F90180 */ addiu $t9, $t7, 0x180
+/* 0D0DB8 80315DB8 3338FFFF */ andi $t8, $t9, 0xffff
+/* 0D0DBC 80315DBC 03017025 */ or $t6, $t8, $at
+/* 0D0DC0 80315DC0 25AF0008 */ addiu $t7, $t5, 8
+/* 0D0DC4 80315DC4 31F9FFFF */ andi $t9, $t7, 0xffff
+/* 0D0DC8 80315DC8 AC4E0000 */ sw $t6, ($v0)
+/* 0D0DCC 80315DCC 3C010160 */ lui $at, 0x160
+/* 0D0DD0 80315DD0 0321C025 */ or $t8, $t9, $at
+/* 0D0DD4 80315DD4 3C0E0501 */ lui $t6, (0x0501FF60 >> 16) # lui $t6, 0x501
+/* 0D0DD8 80315DD8 AC580004 */ sw $t8, 4($v0)
+/* 0D0DDC 80315DDC 35CEFF60 */ ori $t6, (0x0501FF60 & 0xFFFF) # ori $t6, $t6, 0xff60
+/* 0D0DE0 80315DE0 02801825 */ move $v1, $s4
+/* 0D0DE4 80315DE4 AC6E0000 */ sw $t6, ($v1)
+/* 0D0DE8 80315DE8 8EEF0034 */ lw $t7, 0x34($s7)
+/* 0D0DEC 80315DEC 3C018000 */ lui $at, (0x800000F0 >> 16) # lui $at, 0x8000
+/* 0D0DF0 80315DF0 342100F0 */ ori $at, (0x800000F0 & 0xFFFF) # ori $at, $at, 0xf0
+/* 0D0DF4 80315DF4 26940008 */ addiu $s4, $s4, 8
+/* 0D0DF8 80315DF8 3C180A00 */ lui $t8, (0x0A000164 >> 16) # lui $t8, 0xa00
+/* 0D0DFC 80315DFC 01E1C821 */ addu $t9, $t7, $at
+/* 0D0E00 80315E00 AC790004 */ sw $t9, 4($v1)
+/* 0D0E04 80315E04 37180164 */ ori $t8, (0x0A000164 & 0xFFFF) # ori $t8, $t8, 0x164
+/* 0D0E08 80315E08 02802025 */ move $a0, $s4
+/* 0D0E0C 80315E0C AC980000 */ sw $t8, ($a0)
+/* 0D0E10 80315E10 8FAE00D0 */ lw $t6, 0xd0($sp)
+/* 0D0E14 80315E14 26940008 */ addiu $s4, $s4, 8
+/* 0D0E18 80315E18 25D90020 */ addiu $t9, $t6, 0x20
+/* 0D0E1C 80315E1C 25AE0004 */ addiu $t6, $t5, 4
+/* 0D0E20 80315E20 31CFFFFF */ andi $t7, $t6, 0xffff
+/* 0D0E24 80315E24 0019C400 */ sll $t8, $t9, 0x10
+/* 0D0E28 80315E28 030FC825 */ or $t9, $t8, $t7
+/* 0D0E2C 80315E2C AC990004 */ sw $t9, 4($a0)
+/* 0D0E30 80315E30 8EE50000 */ lw $a1, ($s7)
+/* 0D0E34 80315E34 000530C0 */ sll $a2, $a1, 3
+/* 0D0E38 80315E38 000677C2 */ srl $t6, $a2, 0x1f
+/* 0D0E3C 80315E3C 01C03025 */ move $a2, $t6
+.L_US_80315E40:
+/* 0D0E40 80315E40 10C00003 */ beqz $a2, .L_US_80315E50
+/* 0D0E44 80315E44 8FA200DC */ lw $v0, 0xdc($sp)
+/* 0D0E48 80315E48 10000008 */ b .L_US_80315E6C
+/* 0D0E4C 80315E4C AFA00140 */ sw $zero, 0x140($sp)
+.L_US_80315E50:
+/* 0D0E50 80315E50 8FB800E0 */ lw $t8, 0xe0($sp)
+/* 0D0E54 80315E54 24420001 */ addiu $v0, $v0, 1
+/* 0D0E58 80315E58 AFA200DC */ sw $v0, 0xdc($sp)
+/* 0D0E5C 80315E5C 5458FE5C */ bnel $v0, $t8, .L_US_803157D0
+/* 0D0E60 80315E60 8FAF015C */ lw $t7, 0x15c($sp)
+.L_US_80315E64:
+/* 0D0E64 80315E64 AFA00140 */ sw $zero, 0x140($sp)
+/* 0D0E68 80315E68 8EE50000 */ lw $a1, ($s7)
+.L_US_80315E6C:
+/* 0D0E6C 80315E6C 00057840 */ sll $t7, $a1, 1
+/* 0D0E70 80315E70 000FCFC2 */ srl $t9, $t7, 0x1f
+/* 0D0E74 80315E74 24010001 */ li $at, 1
+/* 0D0E78 80315E78 17210006 */ bne $t9, $at, .L_US_80315E94
+/* 0D0E7C 80315E7C 02802025 */ move $a0, $s4
+/* 0D0E80 80315E80 240E0001 */ li $t6, 1
+/* 0D0E84 80315E84 AFAE0140 */ sw $t6, 0x140($sp)
+/* 0D0E88 80315E88 92F80000 */ lbu $t8, ($s7)
+/* 0D0E8C 80315E8C 330FFFBF */ andi $t7, $t8, 0xffbf
+/* 0D0E90 80315E90 A2EF0000 */ sb $t7, ($s7)
+.L_US_80315E94:
+/* 0D0E94 80315E94 8FB10048 */ lw $s1, 0x48($sp)
+/* 0D0E98 80315E98 97B900CE */ lhu $t9, 0xce($sp)
+/* 0D0E9C 80315E9C 8FAE0140 */ lw $t6, 0x140($sp)
+/* 0D0EA0 80315EA0 02E02825 */ move $a1, $s7
+/* 0D0EA4 80315EA4 97A7005E */ lhu $a3, 0x5e($sp)
+/* 0D0EA8 80315EA8 02203025 */ move $a2, $s1
+/* 0D0EAC 80315EAC AFB90010 */ sw $t9, 0x10($sp)
+/* 0D0EB0 80315EB0 0C0C5837 */ jal final_resample
+/* 0D0EB4 80315EB4 AFAE0014 */ sw $t6, 0x14($sp)
+/* 0D0EB8 80315EB8 96F8000C */ lhu $t8, 0xc($s7)
+/* 0D0EBC 80315EBC 0040A025 */ move $s4, $v0
+/* 0D0EC0 80315EC0 02802025 */ move $a0, $s4
+/* 0D0EC4 80315EC4 17000004 */ bnez $t8, .L_US_80315ED8
+/* 0D0EC8 80315EC8 02E02825 */ move $a1, $s7
+/* 0D0ECC 80315ECC 96EF0010 */ lhu $t7, 0x10($s7)
+/* 0D0ED0 80315ED0 51E00004 */ beql $t7, $zero, .L_US_80315EE4
+/* 0D0ED4 80315ED4 96F9000E */ lhu $t9, 0xe($s7)
+.L_US_80315ED8:
+/* 0D0ED8 80315ED8 1000000A */ b .L_US_80315F04
+/* 0D0EDC 80315EDC 24100001 */ li $s0, 1
+/* 0D0EE0 80315EE0 96F9000E */ lhu $t9, 0xe($s7)
+.L_US_80315EE4:
+/* 0D0EE4 80315EE4 17200005 */ bnez $t9, .L_US_80315EFC
+/* 0D0EE8 80315EE8 00000000 */ nop
+/* 0D0EEC 80315EEC 96EE0012 */ lhu $t6, 0x12($s7)
+/* 0D0EF0 80315EF0 00008025 */ move $s0, $zero
+/* 0D0EF4 80315EF4 11C00003 */ beqz $t6, .L_US_80315F04
+/* 0D0EF8 80315EF8 00000000 */ nop
+.L_US_80315EFC:
+/* 0D0EFC 80315EFC 10000001 */ b .L_US_80315F04
+/* 0D0F00 80315F00 24100002 */ li $s0, 2
+.L_US_80315F04:
+/* 0D0F04 80315F04 8FB80140 */ lw $t8, 0x140($sp)
+/* 0D0F08 80315F08 8FA60174 */ lw $a2, 0x174($sp)
+/* 0D0F0C 80315F0C 00003825 */ move $a3, $zero
+/* 0D0F10 80315F10 AFB00010 */ sw $s0, 0x10($sp)
+/* 0D0F14 80315F14 0C0C584E */ jal process_envelope
+/* 0D0F18 80315F18 AFB80014 */ sw $t8, 0x14($sp)
+/* 0D0F1C 80315F1C 92EF0001 */ lbu $t7, 1($s7)
+/* 0D0F20 80315F20 0040A025 */ move $s4, $v0
+/* 0D0F24 80315F24 00402025 */ move $a0, $v0
+/* 0D0F28 80315F28 11E00006 */ beqz $t7, .L_US_80315F44
+/* 0D0F2C 80315F2C 02E02825 */ move $a1, $s7
+/* 0D0F30 80315F30 02203025 */ move $a2, $s1
+/* 0D0F34 80315F34 8FA70140 */ lw $a3, 0x140($sp)
+/* 0D0F38 80315F38 0C0C59BF */ jal note_apply_headset_pan_effects
+/* 0D0F3C 80315F3C AFB00010 */ sw $s0, 0x10($sp)
+/* 0D0F40 80315F40 0040A025 */ move $s4, $v0
+.L_US_80315F44:
+/* 0D0F44 80315F44 8FB9016C */ lw $t9, 0x16c($sp)
+.L_US_80315F48:
+/* 0D0F48 80315F48 8FB80064 */ lw $t8, 0x64($sp)
+/* 0D0F4C 80315F4C 272E0001 */ addiu $t6, $t9, 1
+/* 0D0F50 80315F50 3C198022 */ lui $t9, %hi(gMaxSimultaneousNotes) # $t9, 0x8022
+/* 0D0F54 80315F54 8F396B70 */ lw $t9, %lo(gMaxSimultaneousNotes)($t9)
+/* 0D0F58 80315F58 270F00C0 */ addiu $t7, $t8, 0xc0
+/* 0D0F5C 80315F5C AFAF0064 */ sw $t7, 0x64($sp)
+/* 0D0F60 80315F60 01D9082A */ slt $at, $t6, $t9
+/* 0D0F64 80315F64 1420FD9E */ bnez $at, .L_US_803155E0
+/* 0D0F68 80315F68 AFAE016C */ sw $t6, 0x16c($sp)
+.L_US_80315F6C:
+/* 0D0F6C 80315F6C 3C080800 */ lui $t0, 0x800
+/* 0D0F70 80315F70 02802025 */ move $a0, $s4
+/* 0D0F74 80315F74 AC880000 */ sw $t0, ($a0)
+/* 0D0F78 80315F78 8FA30174 */ lw $v1, 0x174($sp)
+/* 0D0F7C 80315F7C 26940008 */ addiu $s4, $s4, 8
+/* 0D0F80 80315F80 02802825 */ move $a1, $s4
+/* 0D0F84 80315F84 0003C040 */ sll $t8, $v1, 1
+/* 0D0F88 80315F88 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0D0F8C 80315F8C AC8F0004 */ sw $t7, 4($a0)
+/* 0D0F90 80315F90 26940008 */ addiu $s4, $s4, 8
+/* 0D0F94 80315F94 3C0E0D00 */ lui $t6, 0xd00
+/* 0D0F98 80315F98 3C1904C0 */ lui $t9, (0x04C00600 >> 16) # lui $t9, 0x4c0
+/* 0D0F9C 80315F9C 37390600 */ ori $t9, (0x04C00600 & 0xFFFF) # ori $t9, $t9, 0x600
+/* 0D0FA0 80315FA0 ACAE0000 */ sw $t6, ($a1)
+/* 0D0FA4 80315FA4 02803025 */ move $a2, $s4
+/* 0D0FA8 80315FA8 ACB90004 */ sw $t9, 4($a1)
+/* 0D0FAC 80315FAC 0018C040 */ sll $t8, $t8, 1
+/* 0D0FB0 80315FB0 330FFFFF */ andi $t7, $t8, 0xffff
+/* 0D0FB4 80315FB4 26940008 */ addiu $s4, $s4, 8
+/* 0D0FB8 80315FB8 ACCF0004 */ sw $t7, 4($a2)
+/* 0D0FBC 80315FBC ACC80000 */ sw $t0, ($a2)
+/* 0D0FC0 80315FC0 02803825 */ move $a3, $s4
+/* 0D0FC4 80315FC4 3C0E0600 */ lui $t6, 0x600
+/* 0D0FC8 80315FC8 ACEE0000 */ sw $t6, ($a3)
+/* 0D0FCC 80315FCC 8FB90170 */ lw $t9, 0x170($sp)
+/* 0D0FD0 80315FD0 3C018000 */ lui $at, 0x8000
+/* 0D0FD4 80315FD4 26820008 */ addiu $v0, $s4, 8
+/* 0D0FD8 80315FD8 0321C021 */ addu $t8, $t9, $at
+/* 0D0FDC 80315FDC ACF80004 */ sw $t8, 4($a3)
+/* 0D0FE0 80315FE0 8FBF0044 */ lw $ra, 0x44($sp)
+/* 0D0FE4 80315FE4 8FBE0040 */ lw $fp, 0x40($sp)
+/* 0D0FE8 80315FE8 8FB7003C */ lw $s7, 0x3c($sp)
+/* 0D0FEC 80315FEC 8FB60038 */ lw $s6, 0x38($sp)
+/* 0D0FF0 80315FF0 8FB50034 */ lw $s5, 0x34($sp)
+/* 0D0FF4 80315FF4 8FB40030 */ lw $s4, 0x30($sp)
+/* 0D0FF8 80315FF8 8FB3002C */ lw $s3, 0x2c($sp)
+/* 0D0FFC 80315FFC 8FB20028 */ lw $s2, 0x28($sp)
+/* 0D1000 80316000 8FB10024 */ lw $s1, 0x24($sp)
+/* 0D1004 80316004 8FB00020 */ lw $s0, 0x20($sp)
+/* 0D1008 80316008 03E00008 */ jr $ra
+/* 0D100C 8031600C 27BD0170 */ addiu $sp, $sp, 0x170
diff --git a/bin/debug_level_select.c b/bin/debug_level_select.c
@@ -3,15 +3,11 @@
#include "make_const_nonconst.h"
-// 0x07000000 - 0x07000008
-static const Ambient debug_level_select_light_07000000 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x07000008 - 0x07000018
-static const Light debug_level_select_light_07000008 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07000000 - 0x07000018
+static const Lights1 debug_level_select_lights_07000000 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x50
+);
// 0x07000018 - 0x07000108
static const Vtx debug_level_select_vertex_07000018[] = {
@@ -184,9 +180,7 @@ static const Vtx debug_level_select_vertex_07000798[] = {
// 0x07000858 - 0x07000A28
const Gfx debug_level_select_dl_07000858[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07000008, 1),
- gsSPLight(&debug_level_select_light_07000000, 2),
+ gsSPSetLights1(debug_level_select_lights_07000000),
gsSPVertex(debug_level_select_vertex_07000018, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -225,15 +219,11 @@ const Gfx debug_level_select_dl_07000858[] = {
gsSPEndDisplayList(),
};
-// 0x07000A28 - 0x07000A30
-static const Ambient debug_level_select_light_07000A28 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x07000A30 - 0x07000A40
-static const Light debug_level_select_light_07000A30 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07000A28 - 0x07000A40
+static const Lights1 debug_level_select_lights_07000A28 = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x50
+);
// 0x07000A40 - 0x07000B30
static const Vtx debug_level_select_vertex_07000A40[] = {
@@ -378,9 +368,7 @@ static const Vtx debug_level_select_vertex_070010D0[] = {
// 0x07001100 - 0x07001288
const Gfx debug_level_select_dl_07001100[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07000A30, 1),
- gsSPLight(&debug_level_select_light_07000A28, 2),
+ gsSPSetLights1(debug_level_select_lights_07000A28),
gsSPVertex(debug_level_select_vertex_07000A40, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -414,15 +402,11 @@ const Gfx debug_level_select_dl_07001100[] = {
gsSPEndDisplayList(),
};
-// 0x07001288 - 0x07001290
-static const Ambient debug_level_select_light_07001288 = {
- {{0x00, 0x56, 0x00}, 0, {0x00, 0x56, 0x00}, 0}
-};
-
-// 0x07001290 - 0x070012A0
-static const Light debug_level_select_light_07001290 = {
- {{0x00, 0xad, 0x00}, 0, {0x00, 0xad, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07001288 - 0x070012A0
+static const Lights1 debug_level_select_lights_07001288 = gdSPDefLights1(
+ 0x00, 0x56, 0x00,
+ 0x00, 0xad, 0x00, 0x00, 0x00, 0x50
+);
// 0x070012A0 - 0x07001390
static const Vtx debug_level_select_vertex_070012A0[] = {
@@ -611,9 +595,7 @@ static const Vtx debug_level_select_vertex_07001B10[] = {
// 0x07001BA0 - 0x07001D98
const Gfx debug_level_select_dl_07001BA0[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07001290, 1),
- gsSPLight(&debug_level_select_light_07001288, 2),
+ gsSPSetLights1(debug_level_select_lights_07001288),
gsSPVertex(debug_level_select_vertex_070012A0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -656,15 +638,11 @@ const Gfx debug_level_select_dl_07001BA0[] = {
gsSPEndDisplayList(),
};
-// 0x07001D98 - 0x07001DA0
-static const Ambient debug_level_select_light_07001D98 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x07001DA0 - 0x07001DB0
-static const Light debug_level_select_light_07001DA0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07001D98 - 0x07001DB0
+static const Lights1 debug_level_select_lights_07001D98 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x50
+);
// 0x07001DB0 - 0x07001EA0
static const Vtx debug_level_select_vertex_07001DB0[] = {
@@ -837,9 +815,7 @@ static const Vtx debug_level_select_vertex_07002530[] = {
// 0x070025F0 - 0x070027C0
const Gfx debug_level_select_dl_070025F0[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07001DA0, 1),
- gsSPLight(&debug_level_select_light_07001D98, 2),
+ gsSPSetLights1(debug_level_select_lights_07001D98),
gsSPVertex(debug_level_select_vertex_07001DB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -878,15 +854,11 @@ const Gfx debug_level_select_dl_070025F0[] = {
gsSPEndDisplayList(),
};
-// 0x070027C0 - 0x070027C8
-static const Ambient debug_level_select_light_070027C0 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x070027C8 - 0x070027D8
-static const Light debug_level_select_light_070027C8 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x070027C0 - 0x070027D8
+static const Lights1 debug_level_select_lights_070027C0 = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x50
+);
// 0x070027D8 - 0x070028C8
static const Vtx debug_level_select_vertex_070027D8[] = {
@@ -1107,9 +1079,7 @@ static const Vtx debug_level_select_vertex_07003228[] = {
// 0x07003258 - 0x070034A0
const Gfx debug_level_select_dl_07003258[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_070027C8, 1),
- gsSPLight(&debug_level_select_light_070027C0, 2),
+ gsSPSetLights1(debug_level_select_lights_070027C0),
gsSPVertex(debug_level_select_vertex_070027D8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1159,15 +1129,11 @@ const Gfx debug_level_select_dl_07003258[] = {
gsSPEndDisplayList(),
};
-// 0x070034A0 - 0x070034A8
-static const Ambient debug_level_select_light_070034A0 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x070034A8 - 0x070034B8
-static const Light debug_level_select_light_070034A8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x070034A0 - 0x070034B8
+static const Lights1 debug_level_select_lights_070034A0 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x50
+);
// 0x070034B8 - 0x070035A8
static const Vtx debug_level_select_vertex_070034B8[] = {
@@ -1356,9 +1322,7 @@ static const Vtx debug_level_select_vertex_07003D28[] = {
// 0x07003DB8 - 0x07003FB0
const Gfx debug_level_select_dl_07003DB8[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_070034A8, 1),
- gsSPLight(&debug_level_select_light_070034A0, 2),
+ gsSPSetLights1(debug_level_select_lights_070034A0),
gsSPVertex(debug_level_select_vertex_070034B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1401,15 +1365,11 @@ const Gfx debug_level_select_dl_07003DB8[] = {
gsSPEndDisplayList(),
};
-// 0x07003FB0 - 0x07003FB8
-static const Ambient debug_level_select_light_07003FB0 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x07003FB8 - 0x07003FC8
-static const Light debug_level_select_light_07003FB8 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07003FB0 - 0x07003FC8
+static const Lights1 debug_level_select_lights_07003FB0 = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x50
+);
// 0x07003FC8 - 0x070040B8
static const Vtx debug_level_select_vertex_07003FC8[] = {
@@ -1598,9 +1558,7 @@ static const Vtx debug_level_select_vertex_07004838[] = {
// 0x070048C8 - 0x07004AC0
const Gfx debug_level_select_dl_070048C8[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07003FB8, 1),
- gsSPLight(&debug_level_select_light_07003FB0, 2),
+ gsSPSetLights1(debug_level_select_lights_07003FB0),
gsSPVertex(debug_level_select_vertex_07003FC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1643,15 +1601,11 @@ const Gfx debug_level_select_dl_070048C8[] = {
gsSPEndDisplayList(),
};
-// 0x07004AC0 - 0x07004AC8
-static const Ambient debug_level_select_light_07004AC0 = {
- {{0x00, 0x59, 0x00}, 0, {0x00, 0x59, 0x00}, 0}
-};
-
-// 0x07004AC8 - 0x07004AD8
-static const Light debug_level_select_light_07004AC8 = {
- {{0x00, 0xb2, 0x00}, 0, {0x00, 0xb2, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07004AC0 - 0x07004AD8
+static const Lights1 debug_level_select_lights_07004AC0 = gdSPDefLights1(
+ 0x00, 0x59, 0x00,
+ 0x00, 0xb2, 0x00, 0x00, 0x00, 0x50
+);
// 0x07004AD8 - 0x07004BC8
static const Vtx debug_level_select_vertex_07004AD8[] = {
@@ -1872,9 +1826,7 @@ static const Vtx debug_level_select_vertex_07005528[] = {
// 0x07005558 - 0x070057A0
const Gfx debug_level_select_dl_07005558[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07004AC8, 1),
- gsSPLight(&debug_level_select_light_07004AC0, 2),
+ gsSPSetLights1(debug_level_select_lights_07004AC0),
gsSPVertex(debug_level_select_vertex_07004AD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1924,15 +1876,11 @@ const Gfx debug_level_select_dl_07005558[] = {
gsSPEndDisplayList(),
};
-// 0x070057A0 - 0x070057A8
-static const Ambient debug_level_select_light_070057A0 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
-
-// 0x070057A8 - 0x070057B8
-static const Light debug_level_select_light_070057A8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x070057A0 - 0x070057B8
+static const Lights1 debug_level_select_lights_070057A0 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00, 0x00, 0x50
+);
// 0x070057B8 - 0x070058A8
static const Vtx debug_level_select_vertex_070057B8[] = {
@@ -1985,9 +1933,7 @@ static const Vtx debug_level_select_vertex_07005998[] = {
// 0x070059F8 - 0x07005A98
const Gfx debug_level_select_dl_070059F8[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_070057A8, 1),
- gsSPLight(&debug_level_select_light_070057A0, 2),
+ gsSPSetLights1(debug_level_select_lights_070057A0),
gsSPVertex(debug_level_select_vertex_070057B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -2001,15 +1947,11 @@ const Gfx debug_level_select_dl_070059F8[] = {
gsSPEndDisplayList(),
};
-// 0x07005A98 - 0x07005AA0
-static const Ambient debug_level_select_light_07005A98 = {
- {{0x00, 0x00, 0x7f}, 0, {0x00, 0x00, 0x7f}, 0}
-};
-
-// 0x07005AA0 - 0x07005AB0
-static const Light debug_level_select_light_07005AA0 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0x50}, 0}
-};
+// 0x07005A98 - 0x07005AB0
+static const Lights1 debug_level_select_lights_07005A98 = gdSPDefLights1(
+ 0x00, 0x00, 0x7f,
+ 0x00, 0x00, 0xff, 0x00, 0x00, 0x50
+);
// 0x07005AB0 - 0x07005BA0
static const Vtx debug_level_select_vertex_07005AB0[] = {
@@ -2198,9 +2140,7 @@ static const Vtx debug_level_select_vertex_07006320[] = {
// 0x070063B0 - 0x070065A8
const Gfx debug_level_select_dl_070063B0[] = {
gsDPPipeSync(),
- gsSPNumLights(NUMLIGHTS_1), // I cannot tell if they meant to put 0 or 1 here.
- gsSPLight(&debug_level_select_light_07005AA0, 1),
- gsSPLight(&debug_level_select_light_07005A98, 2),
+ gsSPSetLights1(debug_level_select_lights_07005A98),
gsSPVertex(debug_level_select_vertex_07005AB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/bin/eu/translation_de.c b/bin/eu/translation_de.c
@@ -4,6 +4,10 @@
#include "make_const_nonconst.h"
-#include "text/de/dialog.inc.c"
-#include "text/de/level.inc.c"
-#include "text/de/star.inc.c"
+// Include text/define_text.inc.c, preprocessed with -I text/de/ to get the
+// right translation strings, with symbols renamed as below.
+#define seg2_course_name_table course_name_table_eu_de
+#define seg2_act_name_table act_name_table_eu_de
+#define seg2_dialog_table dialog_table_eu_de
+
+#include "text/de/define_text.inc.c"
diff --git a/bin/eu/translation_en.c b/bin/eu/translation_en.c
@@ -4,6 +4,10 @@
#include "make_const_nonconst.h"
-#include "text/en/dialog.inc.c"
-#include "text/en/level.inc.c"
-#include "text/en/star.inc.c"
+// Include text/define_text.inc.c, preprocessed with -I text/us/ to get the
+// right translation strings, with symbols renamed as below.
+#define seg2_course_name_table course_name_table_eu_en
+#define seg2_act_name_table act_name_table_eu_en
+#define seg2_dialog_table dialog_table_eu_en
+
+#include "text/us/define_text.inc.c"
diff --git a/bin/eu/translation_fr.c b/bin/eu/translation_fr.c
@@ -4,6 +4,10 @@
#include "make_const_nonconst.h"
-#include "text/fr/dialog.inc.c"
-#include "text/fr/level.inc.c"
-#include "text/fr/star.inc.c"
+// Include text/define_text.inc.c, preprocessed with -I text/fr/ to get the
+// right translation strings, with symbols renamed as below.
+#define seg2_course_name_table course_name_table_eu_fr
+#define seg2_act_name_table act_name_table_eu_fr
+#define seg2_dialog_table dialog_table_eu_fr
+
+#include "text/fr/define_text.inc.c"
diff --git a/bin/segment2.c b/bin/segment2.c
@@ -2075,11 +2075,13 @@ const u8 *const main_hud_camera_lut[] = {
texture_hud_char_arrow_up, texture_hud_char_arrow_down,
};
-#ifndef VERSION_EU
-#include "text/debug.inc.c"
-#include "text/dialog.inc.c"
-#include "text/level.inc.c"
-#include "text/star.inc.c"
+// If you change the language here, the following Makefile rule also needs to
+// change, to generate the right version of define_text.inc.c:
+// $(BUILD_DIR)/bin/segment2.o: $(BUILD_DIR)/text/$(VERSION)/define_text.inc.c
+#ifdef VERSION_JP
+#include "text/jp/define_text.inc.c"
+#elif defined(VERSION_US)
+#include "text/us/define_text.inc.c"
#endif
UNUSED static const u64 segment2_unused_0 = 0;
@@ -2489,16 +2491,11 @@ ALIGNED8 const u8 texture_waterbox_lava[] = {
#include "textures/segment2/segment2.13C58.rgba16.inc.c"
};
-
-// Unreferenced light
-UNUSED static const Ambient segment2_light_1 = {
- {{0x40, 0x40, 0x40}, 0, {0x40, 0x40, 0x40}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light segment2_light_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// Unreferenced light group
+static const Lights1 segment2_lights_unused = gdSPDefLights1(
+ 0x40, 0x40, 0x40,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x02014470 - 0x020144B0
static const Mtx matrix_identity = {
@@ -2724,22 +2721,18 @@ const Gfx dl_ia8_up_arrow_end[] = {
};
// 0x02014958 - 0x02014960
-static const Ambient seg2_light_02014958 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x02014960 - 0x02014970
-static const Light seg2_light_02014960 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x32, 0x32, 0x32}, 0}
-};
+static const Lights1 seg2_lights_02014958 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xff, 0xff, 0xff, 0x32, 0x32, 0x32
+);
// 0x02014970 - 0x020149A8
const Gfx dl_paintings_rippling_begin[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),
gsDPSetCombineMode(G_CC_MODULATERGBA, G_CC_MODULATERGBA),
- gsSPLight(&seg2_light_02014960, 1),
- gsSPLight(&seg2_light_02014958, 2),
+ gsSPLight(&seg2_lights_02014958.l, 1),
+ gsSPLight(&seg2_lights_02014958.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPEndDisplayList(),
};
@@ -2757,8 +2750,8 @@ const Gfx dl_paintings_env_mapped_begin[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING | G_TEXTURE_GEN),
gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB),
- gsSPLight(&seg2_light_02014960, 1),
- gsSPLight(&seg2_light_02014958, 2),
+ gsSPLight(&seg2_lights_02014958.l, 1),
+ gsSPLight(&seg2_lights_02014958.a, 2),
gsSPTexture(0x4000, 0x4000, 0, G_TX_RENDERTILE, G_ON),
gsSPEndDisplayList(),
};
diff --git a/data/behavior_data.c b/data/behavior_data.c
@@ -216,12 +216,12 @@
BC_B(0x2F), \
BC_PTR(type)
-#define GRAVITY(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) \
+#define OBJ_PHYSICS(wallHitboxRadius, gravity, bounciness, drag, friction, buoyancy, unused1, unused2) \
BC_B(0x30), \
- BC_HH(arg1, arg2), \
- BC_HH(arg3, arg4), \
- BC_HH(arg5, arg6), \
- BC_HH(arg7, arg8)
+ BC_HH(wallHitboxRadius, gravity), \
+ BC_HH(bounciness, drag), \
+ BC_HH(friction, buoyancy), \
+ BC_HH(unused1, unused2)
#define SCALE(percent) \
BC_B0H(0x32, percent)
@@ -243,9 +243,9 @@
// 0000
const BehaviorScript bhvStarDoor[] = {
BEGIN(OBJ_LIST_SURFACE),
- OBJ_SET_INT(oInteractType, 4),
+ OBJ_SET_INT(oInteractType, INTERACT_DOOR),
COLLISION_DATA(inside_castle_seg7_collision_star_door),
- OBJ_SET_INT(oInteractionSubtype, 32),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_STAR_DOOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
SET_HITBOX(80, 100),
OBJ_SET_POS(),
@@ -291,8 +291,8 @@ const BehaviorScript bhvMrIParticle[] = {
OBJ_SET_INT(oIntangibleTimer, 0),
SET_HITBOX(50, 50),
OBJ_SET_INT(oDamageOrCoinValue, 1),
- OBJ_SET_INT(oInteractType, 8),
- GRAVITY(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_SET_INT(oInteractType, INTERACT_DAMAGE),
+ OBJ_PHYSICS(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
CALLNATIVE(bhv_mr_i_particle_loop),
@@ -314,7 +314,7 @@ const BehaviorScript bhvPurpleParticle[] = {
const BehaviorScript bhvGiantPole[] = {
BEGIN(OBJ_LIST_POLELIKE),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- OBJ_SET_INT(oInteractType, 0x40),
+ OBJ_SET_INT(oInteractType, INTERACT_POLE),
SET_HITBOX(0x0050, 0x0834),
OBJ_SET_POS(),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -327,7 +327,7 @@ const BehaviorScript bhvGiantPole[] = {
const BehaviorScript bhvPoleGrabbing[] = {
BEGIN(OBJ_LIST_POLELIKE),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- OBJ_SET_INT(oInteractType, 0x40),
+ OBJ_SET_INT(oInteractType, INTERACT_POLE),
SET_HITBOX(0x0050, 0x05DC),
CALLNATIVE(bhv_pole_init),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -381,9 +381,9 @@ const BehaviorScript bhvKingBobomb[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, king_bobomb_seg5_anims_0500FE30),
- OBJ_SET_INT(oInteractType, 0x02),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
SET_HITBOX(0x0064, 0x0064),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_INT(oIntangibleTimer, 0),
DROP_FLOOR(),
OBJ_SET_POS(),
@@ -565,7 +565,7 @@ const BehaviorScript bhvCannon[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_CHILD(MODEL_CANNON_BARREL, bhvCannonBarrel),
- OBJ_SET_INT(oInteractType, 0x4000),
+ OBJ_SET_INT(oInteractType, INTERACT_CANNON_BASE),
OBJ_ADD_FLOAT(oPosY, -340),
OBJ_SET_POS(),
SET_HITBOX(0x0096, 0x0096),
@@ -604,9 +604,9 @@ const BehaviorScript bhvChuckya[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, chuckya_seg8_anims_0800C070),
ANIMATE(0x05),
- OBJ_SET_INT(oInteractType, 0x02),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
SET_HITBOX(0x0096, 0x0064),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SPAWN(MODEL_NONE, bhvChuckyaAnchorMario),
OBJ_SET_INT(oNumLootCoins, 5),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -747,7 +747,7 @@ const BehaviorScript bhvKoopaShellUnderwater[] = {
const BehaviorScript bhvExitPodiumWarp[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x2000),
+ OBJ_SET_INT(oInteractType, INTERACT_WARP),
DROP_FLOOR(),
OBJ_SET_FLOAT(oCollisionDistance, 0x1F40),
COLLISION_DATA(ttm_seg7_collision_podium_warp),
@@ -762,9 +762,9 @@ const BehaviorScript bhvExitPodiumWarp[] = {
// 075C
const BehaviorScript bhvFadingWarp[] = {
BEGIN(OBJ_LIST_LEVEL),
- OBJ_SET_INT(oInteractionSubtype, 0x0001),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_FADING_WARP),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x2000),
+ OBJ_SET_INT(oInteractType, INTERACT_WARP),
OBJ_SET_INT(oIntangibleTimer, 0),
BEGIN_LOOP(),
CALLNATIVE(BehFadingWarpLoop),
@@ -775,7 +775,7 @@ const BehaviorScript bhvFadingWarp[] = {
const BehaviorScript bhvWarp[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x2000),
+ OBJ_SET_INT(oInteractType, INTERACT_WARP),
OBJ_SET_INT(oIntangibleTimer, 0),
BEGIN_LOOP(),
CALLNATIVE(bhv_warp_loop),
@@ -786,7 +786,7 @@ const BehaviorScript bhvWarp[] = {
const BehaviorScript bhvWarpPipe[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x2000),
+ OBJ_SET_INT(oInteractType, INTERACT_WARP),
COLLISION_DATA(warp_pipe_seg3_collision_03009AC8),
OBJ_SET_FLOAT(oDrawingDistance, 0x3E80),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -830,13 +830,13 @@ const BehaviorScript bhvUnused080C[] = {
// 0830
const BehaviorScript bhvMrIBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
- OBJ_SET_INT(oInteractType, 0x10),
+ OBJ_SET_INT(oInteractType, INTERACT_COIN),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
OBJ_SET_INT(oIntangibleTimer, 0),
OBJ_SET_FLOAT(oMrIUnk110, 0x0014),
OBJ_SET_INT(oAnimState, -1),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_coin_init),
OBJ_SET_INT(oDamageOrCoinValue, 0x0005),
SET_HITBOX(0x0078, 0x0040),
@@ -850,9 +850,9 @@ const BehaviorScript bhvMrIBlueCoin[] = {
const BehaviorScript bhvCoinInsideBoo[] = {
BEGIN(OBJ_LIST_LEVEL),
SET_HITBOX(0x0064, 0x0040),
- OBJ_SET_INT(oInteractType, 0x10),
+ OBJ_SET_INT(oInteractType, INTERACT_COIN),
OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BILLBOARD(),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
@@ -937,7 +937,7 @@ const BehaviorScript bhvSingleCoinGetsSpawned[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
CALLNATIVE(bhv_coin_init),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_coin_loop),
OBJ_ADD_INT(oAnimState, 1),
@@ -1039,14 +1039,14 @@ const BehaviorScript bhvPunchTinyTriangleSpawn[] = {
// 0AFC
const BehaviorScript bhvDoorWarp[] = {
BEGIN(OBJ_LIST_SURFACE),
- OBJ_SET_INT(oInteractType, 0x800),
+ OBJ_SET_INT(oInteractType, INTERACT_WARP_DOOR),
GOTO(bhvDoor + 1 + 1),
};
// 0B0C
const BehaviorScript bhvDoor[] = {
BEGIN(OBJ_LIST_SURFACE),
- OBJ_SET_INT(oInteractType, 0x04),
+ OBJ_SET_INT(oInteractType, INTERACT_DOOR),
// .L13000B14:
OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, door_seg3_anims_030156C0),
@@ -1332,7 +1332,7 @@ const BehaviorScript bhvEndPeach[] = {
const BehaviorScript bhvUnusedParticleSpawn[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_INT(oIntangibleTimer, 0),
SET_HITBOX(0x0028, 0x0028),
BEGIN_LOOP(),
@@ -1375,7 +1375,7 @@ const BehaviorScript bhvUkikiCage[] = {
OBJ_CHILD(MODEL_STAR, bhvUkikiCageStar),
OBJ_CHILD(MODEL_NONE, bhvUkikiCageChild),
OBJ_SET_FLOAT(oCollisionDistance, 0x4E20),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_ukiki_cage_loop),
END_LOOP(),
@@ -1410,7 +1410,7 @@ const BehaviorScript bhvBitfsSinkingCagePlatform[] = {
const BehaviorScript bhvDddMovingPole[] = {
BEGIN(OBJ_LIST_POLELIKE),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- OBJ_SET_INT(oInteractType, 0x40),
+ OBJ_SET_INT(oInteractType, INTERACT_POLE),
SET_HITBOX(0x0050, 0x02C6),
OBJ_SET_INT(oIntangibleTimer, 0),
BEGIN_LOOP(),
@@ -1420,14 +1420,14 @@ const BehaviorScript bhvDddMovingPole[] = {
};
// 1030
-const BehaviorScript bhvBitfsTiltingSquarePlatform[] = {
+const BehaviorScript bhvBitfsTiltingInvertedPyramid[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
COLLISION_DATA(bitfs_seg7_collision_inverted_pyramid),
OBJ_SET_POS(),
- CALLNATIVE(bhv_tilting_platform_init),
+ CALLNATIVE(bhv_platform_normals_init),
BEGIN_LOOP(),
- CALLNATIVE(bhv_tilting_platform_loop),
+ CALLNATIVE(bhv_tilting_inverted_pyramid_loop),
CALLNATIVE(load_object_collision_model),
END_LOOP(),
};
@@ -1438,7 +1438,7 @@ const BehaviorScript bhvSquishablePlatform[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
COLLISION_DATA(bitfs_seg7_collision_squishable_platform),
OBJ_SET_FLOAT(oCollisionDistance, 0x2710),
- CALLNATIVE(bhv_tilting_platform_init),
+ CALLNATIVE(bhv_platform_normals_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_squishable_platform_loop),
CALLNATIVE(load_object_collision_model),
@@ -1527,7 +1527,7 @@ const BehaviorScript bhvBouncingFireballFlame[] = {
INTERACT_TYPE(INTERACT_FLAME),
OBJ_SET_FLOAT(oGraphYOffset, 30),
COLLISION_SPHERE(0x0032, 0x0019, 0x0019),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BILLBOARD(),
BEGIN_LOOP(),
CALLNATIVE(bhv_bouncing_fireball_flame_loop),
@@ -1614,9 +1614,9 @@ const BehaviorScript bhvSpindrift[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, spindrift_seg5_anims_05002D68),
ANIMATE(0x00),
- GRAVITY(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
- OBJ_SET_INT(oInteractionSubtype, 0x0080),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE),
BEGIN_LOOP(),
CALLNATIVE(bhv_spindrift_loop),
END_LOOP(),
@@ -1700,9 +1700,9 @@ const BehaviorScript bhvAnotherTiltingPlatform[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_POS(),
- CALLNATIVE(bhv_tilting_platform_init),
+ CALLNATIVE(bhv_platform_normals_init),
BEGIN_LOOP(),
- CALLNATIVE(bhv_tilting_platform_loop),
+ CALLNATIVE(bhv_tilting_inverted_pyramid_loop),
CALLNATIVE(load_object_collision_model),
END_LOOP(),
};
@@ -1815,10 +1815,10 @@ const BehaviorScript bhvHeaveHo[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, heave_ho_seg5_anims_0501534C),
ANIMATE(0x00),
- GRAVITY(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000),
OBJ_SPAWN(MODEL_NONE, bhvHeaveHoThrowMario),
- OBJ_SET_INT(oInteractType, 0x02),
- OBJ_SET_INT(oInteractionSubtype, 0x0204),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_NOT_GRABBABLE | INT_SUBTYPE_GRABS_MARIO),
SET_HITBOX(0x0078, 0x0064),
OBJ_SET_POS(),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -1885,7 +1885,7 @@ const BehaviorScript bhvBetaTrampolineSpring[] = {
const BehaviorScript bhvJumpingBox[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0258, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_jumping_box_loop),
END_LOOP(),
@@ -1896,7 +1896,7 @@ const BehaviorScript bhvBooCage[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_FLOAT(oGraphYOffset, 0x000A),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_boo_cage_loop),
END_LOOP(),
@@ -1927,7 +1927,7 @@ const BehaviorScript bhvBowserKey[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
OBJ_SET_POS(),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_bowser_key_loop),
END_LOOP(),
@@ -1938,7 +1938,7 @@ const BehaviorScript bhvGrandStar[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
INTERACT_TYPE(INTERACT_STAR_OR_KEY),
- OBJ_SET_INT(oInteractionSubtype, 0x0800),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_GRAND_STAR),
SET_HITBOX(0x00A0, 0x0064),
OBJ_SET_POS(),
BEGIN_LOOP(),
@@ -1951,7 +1951,7 @@ const BehaviorScript bhvBetaBooKey[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_HITBOX(0x0020, 0x0040),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_beta_boo_key_loop),
END_LOOP(),
@@ -1978,7 +1978,7 @@ const BehaviorScript bhvBulletBill[] = {
OBJ_SET_INT(oDamageOrCoinValue, 3),
SCALE(40),
OBJ_SET_INT(oIntangibleTimer, 0),
- GRAVITY(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
CALLNATIVE(bhv_bullet_bill_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_bullet_bill_loop),
@@ -2020,7 +2020,7 @@ const BehaviorScript bhvBowserTailAnchor[] = {
const BehaviorScript bhvBowser[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x02),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
SET_HITBOX(0x0190, 0x0190),
DROP_FLOOR(),
OBJ_SET_POS(),
@@ -2029,7 +2029,7 @@ const BehaviorScript bhvBowser[] = {
OBJ_CHILD(MODEL_BOWSER_BOMB_CHILD_OBJ, bhvBowserFlameSpawn),
OBJ_SPAWN(MODEL_NONE, bhvBowserTailAnchor),
OBJ_SET_INT(oNumLootCoins, 0x0032),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
CALLNATIVE(bhv_bowser_init),
BEGIN_LOOP(),
@@ -2043,7 +2043,7 @@ const BehaviorScript bhvBowserBodyAnchor[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_HITBOX(0x0064, 0x012C),
INTERACT_TYPE(INTERACT_DAMAGE),
- OBJ_SET_INT(oInteractionSubtype, 0x0008),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_BIG_KNOCKBACK),
GRAPH_CLEAR(),
OBJ_SET_INT(oDamageOrCoinValue, 2),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -2096,7 +2096,7 @@ const BehaviorScript bhvBlueBowserFlame[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
INTERACT_TYPE(INTERACT_FLAME),
BILLBOARD(),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_blue_bowser_flame_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_blue_bowser_flame_loop),
@@ -2110,7 +2110,7 @@ const BehaviorScript bhvFlameFloatingLanding[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
INTERACT_TYPE(INTERACT_FLAME),
BILLBOARD(),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_flame_floating_landing_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_flame_floating_landing_loop),
@@ -2136,7 +2136,7 @@ const BehaviorScript bhvFlameBouncing[] = {
INTERACT_TYPE(INTERACT_FLAME),
BILLBOARD(),
CALLNATIVE(bhv_flame_bouncing_init),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_flame_bouncing_loop),
TEXT_ANIM_RATE(oAnimState, 0x0002),
@@ -2163,7 +2163,7 @@ const BehaviorScript bhvFlameBowser[] = {
INTERACT_TYPE(INTERACT_FLAME),
BILLBOARD(),
CALLNATIVE(bhv_flame_bowser_init),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_flame_bowser_loop),
TEXT_ANIM_RATE(oAnimState, 0x0002),
@@ -2177,7 +2177,7 @@ const BehaviorScript bhvFlameLargeBurningOut[] = {
INTERACT_TYPE(INTERACT_FLAME),
BILLBOARD(),
CALLNATIVE(bhv_flame_large_burning_out_init),
- GRAVITY(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_flame_bowser_loop),
TEXT_ANIM_RATE(oAnimState, 0x0002),
@@ -2312,14 +2312,14 @@ const BehaviorScript bhvMacroUkiki[] = {
BEGIN(OBJ_LIST_GENACTOR),
// ukikiData:
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_HOLDABLE | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x02),
- OBJ_SET_INT(oInteractionSubtype, 0x0010),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC),
SET_HITBOX(0x0028, 0x0028),
OBJ_SET_INT(oIntangibleTimer, 0),
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, ukiki_seg5_anims_05015784),
ANIMATE(0x00),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
CALLNATIVE(bhv_ukiki_init),
BEGIN_LOOP(),
@@ -2479,15 +2479,15 @@ const BehaviorScript bhvLllSinkingSquarePlatforms[] = {
};
// 1EF8
-const BehaviorScript bhvLllTiltingSquarePlatform[] = {
+const BehaviorScript bhvLllTiltingInvertedPyramid[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
COLLISION_DATA(lll_seg7_collision_inverted_pyramid),
OBJ_ADD_FLOAT(oPosY, 5),
OBJ_SET_POS(),
- CALLNATIVE(bhv_tilting_platform_init),
+ CALLNATIVE(bhv_platform_normals_init),
BEGIN_LOOP(),
- CALLNATIVE(bhv_tilting_platform_loop),
+ CALLNATIVE(bhv_tilting_inverted_pyramid_loop),
CALLNATIVE(load_object_collision_model),
END_LOOP(),
};
@@ -2503,7 +2503,7 @@ const BehaviorScript bhvUnused1F30[] = {
const BehaviorScript bhvKoopaShell[] = {
BEGIN(OBJ_LIST_LEVEL),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_koopa_shell_loop),
END_LOOP(),
@@ -2594,7 +2594,7 @@ const BehaviorScript bhvTuxiesMother[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74),
ANIMATE(0x03),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
OBJ_SET_POS(),
INTERACT_TYPE(INTERACT_TEXT),
SET_HITBOX(0x00C8, 0x012C),
@@ -2623,9 +2623,9 @@ const BehaviorScript bhvSmallPenguin[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74),
ANIMATE(0x00),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
- OBJ_SET_INT(oInteractType, 0x02),
- OBJ_SET_INT(oInteractionSubtype, 0x0010),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_HOLDABLE_NPC),
OBJ_SET_INT(oIntangibleTimer, 0),
SET_HITBOX(0x0028, 0x0028),
OBJ_SET_POS(),
@@ -2975,7 +2975,7 @@ const BehaviorScript bhvBlueCoinSwitch[] = {
// 2588
const BehaviorScript bhvHiddenBlueCoin[] = {
BEGIN(OBJ_LIST_LEVEL),
- OBJ_SET_INT(oInteractType, 0x10),
+ OBJ_SET_INT(oInteractType, INTERACT_COIN),
OBJ_OR_INT(oFlags, (OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
SET_HITBOX(0x0064, 0x0040),
@@ -3041,7 +3041,7 @@ const BehaviorScript bhvTornadoSandParticle[] = {
const BehaviorScript bhvTornado[] = {
BEGIN(OBJ_LIST_POLELIKE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
DROP_FLOOR(),
OBJ_SET_POS(),
BEGIN_LOOP(),
@@ -3062,7 +3062,7 @@ const BehaviorScript bhvMerryGoRoundBooManager[] = {
const BehaviorScript bhvAnimatedTexture[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- GRAVITY(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFBA, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BILLBOARD(),
BEGIN_LOOP(),
CALLNATIVE(bhv_animated_texture_loop),
@@ -3077,7 +3077,7 @@ const BehaviorScript bhvBooInCastle[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_POS(),
OBJ_SET_FLOAT(oGraphYOffset, 0x003C),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
CALLNATIVE(bhv_boo_in_castle_loop),
@@ -3093,7 +3093,7 @@ const BehaviorScript bhvBooWithCage[] = {
OBJ_SET_FLOAT2(0x0050, 0x0078),
SET_HITBOX(0x00B4, 0x008C),
OBJ_SET_FLOAT(oGraphYOffset, 0x003C),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_boo_with_cage_init),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
@@ -3124,7 +3124,7 @@ const BehaviorScript bhvGhostHuntBigBoo[] = {
// common_big_boo_bhv:
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_POS(),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
CALLNATIVE(bhv_boo_init),
BEGIN_LOOP(),
@@ -3167,7 +3167,7 @@ const BehaviorScript bhvGhostHuntBoo[] = {
OBJ_SET_FLOAT(oGraphYOffset, 30),
CALLNATIVE(bhv_init_room),
OBJ_CHILD(MODEL_YELLOW_COIN, bhvCoinInsideBoo),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_boo_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_boo_loop),
@@ -3362,7 +3362,7 @@ const BehaviorScript bhvTree[] = {
BEGIN(OBJ_LIST_POLELIKE),
BILLBOARD(),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
- OBJ_SET_INT(oInteractType, 0x40),
+ OBJ_SET_INT(oInteractType, INTERACT_POLE),
SET_HITBOX(0x0050, 0x01F4),
OBJ_SET_INT(oIntangibleTimer, 0),
BEGIN_LOOP(),
@@ -3418,7 +3418,7 @@ const BehaviorScript bhvScuttlebug[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, scuttlebug_seg6_anims_06015064),
ANIMATE(0x00),
- GRAVITY(0x0050, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0050, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
@@ -3452,7 +3452,7 @@ const BehaviorScript bhvSmallWhomp[] = {
OBJ_SET_ANIMS(oAnimations, whomp_seg6_anims_06020A04),
COLLISION_DATA(whomp_seg6_collision_06020A0C),
ANIMATE(0x00),
- GRAVITY(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
BEGIN_LOOP(),
CALLNATIVE(bhv_whomp_loop),
@@ -3666,7 +3666,7 @@ const BehaviorScript bhvWalkingPenguin[] = {
COLLISION_DATA(penguin_seg5_collision_05008B88),
OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74),
ANIMATE(0x00),
- GRAVITY(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
SCALE(600),
OBJ_SET_POS(),
BEGIN_LOOP(),
@@ -3866,7 +3866,7 @@ const BehaviorScript bhvMovingYellowCoin[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
SET_HITBOX(0x0064, 0x0040),
- OBJ_SET_INT(oInteractType, 0x10),
+ OBJ_SET_INT(oInteractType, INTERACT_COIN),
OBJ_SET_INT(oIntangibleTimer, 0),
OBJ_SET_INT(oAnimState, -1),
CALLNATIVE(bhv_moving_yellow_coin_init),
@@ -4043,7 +4043,7 @@ const BehaviorScript bhvMessagePanel[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
COLLISION_DATA(wooden_signpost_seg3_collision_0302DD80),
INTERACT_TYPE(INTERACT_TEXT),
- OBJ_SET_INT(oInteractionSubtype, 0x1000),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN),
DROP_FLOOR(),
SET_HITBOX(0x0096, 0x0050),
OBJ_SET_INT(oWoodenPostTotalMarioAngle, 0),
@@ -4059,7 +4059,7 @@ const BehaviorScript bhvSignOnWall[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
INTERACT_TYPE(INTERACT_TEXT),
- OBJ_SET_INT(oInteractionSubtype, 0x1000),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_SIGN),
SET_HITBOX(0x0096, 0x0050),
OBJ_SET_INT(oWoodenPostTotalMarioAngle, 0),
BEGIN_LOOP(),
@@ -4114,7 +4114,7 @@ const BehaviorScript bhvHoot[] = {
BEGIN(OBJ_LIST_POLELIKE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, hoot_seg5_anims_05005768),
- OBJ_SET_INT(oInteractType, 0x01),
+ OBJ_SET_INT(oInteractType, INTERACT_HOOT),
SET_HITBOX(0x004B, 0x004B),
CALLNATIVE(bhv_hoot_init),
BEGIN_LOOP(),
@@ -4126,7 +4126,7 @@ const BehaviorScript bhvHoot[] = {
const BehaviorScript bhvBetaHoldableObject[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- OBJ_SET_INT(oInteractType, 0x02), // INTERACT_GRABBABLE
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
DROP_FLOOR(),
SET_HITBOX(0x0028, 0x0032),
CALLNATIVE(bhv_beta_holdable_object_init),
@@ -5383,7 +5383,7 @@ const BehaviorScript bhvMips[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_HOLDABLE | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, mips_seg6_anims_06015634),
- OBJ_SET_INT(oInteractType, 0x02),
+ OBJ_SET_INT(oInteractType, INTERACT_GRABBABLE),
DROP_FLOOR(),
SET_HITBOX(0x0032, 0x004B),
OBJ_SET_INT(oIntangibleTimer, 0),
@@ -5418,7 +5418,7 @@ const BehaviorScript bhvKoopa[] = {
OBJ_SET_ANIMS(oAnimations, koopa_seg6_anims_06011364),
ANIMATE(0x09),
OBJ_SET_POS(),
- GRAVITY(0x0032, 0xFE70, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0032, 0xFE70, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
SCALE(150),
OBJ_SET_FLOAT(oKoopaAgility, 1),
CALLNATIVE(bhv_koopa_init),
@@ -5459,7 +5459,7 @@ const BehaviorScript bhvPokey[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_FLOOR(),
OBJ_SET_POS(),
- GRAVITY(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_pokey_update),
END_LOOP(),
@@ -5469,7 +5469,7 @@ const BehaviorScript bhvPokey[] = {
const BehaviorScript bhvPokeyBodyPart[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BILLBOARD(),
BEGIN_LOOP(),
CALLNATIVE(bhv_pokey_body_part_update),
@@ -5482,7 +5482,7 @@ const BehaviorScript bhvSwoop[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, swoop_seg6_anims_060070D0),
OBJ_SET_POS(),
- GRAVITY(0x0032, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0032, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
SCALE(0),
BEGIN_LOOP(),
@@ -5497,9 +5497,9 @@ const BehaviorScript bhvFlyGuy[] = {
OBJ_SET_ANIMS(oAnimations, flyguy_seg8_anims_08011A64),
ANIMATE(0x00),
OBJ_SET_POS(),
- GRAVITY(0x0032, 0x0000, 0x0000, 0x0000, 0x03E8, 0x0258, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0032, 0x0000, 0x0000, 0x0000, 0x03E8, 0x0258, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
- OBJ_SET_INT(oInteractionSubtype, 0x0080),
+ OBJ_SET_INT(oInteractionSubtype, INT_SUBTYPE_TWIRL_BOUNCE),
OBJ_SET_FLOAT(oGraphYOffset, 30),
SCALE(150),
BEGIN_LOOP(),
@@ -5514,7 +5514,7 @@ const BehaviorScript bhvGoomba[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, goomba_seg8_anims_0801DA4C),
OBJ_SET_POS(),
- GRAVITY(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000),
CALLNATIVE(bhv_goomba_init),
BEGIN_LOOP(),
CALLNATIVE(bhv_goomba_update),
@@ -5538,7 +5538,7 @@ const BehaviorScript bhvChainChomp[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, chain_chomp_seg6_anims_06025178),
ANIMATE(0x00),
- GRAVITY(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
UNHIDE(),
OBJ_SET_POS(),
OBJ_SET_FLOAT(oGraphYOffset, 0x00F0),
@@ -5554,7 +5554,7 @@ const BehaviorScript bhvChainChompChainPart[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
- GRAVITY(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_FLOAT(oGraphYOffset, 0x0028),
SCALE(200),
BEGIN_LOOP(),
@@ -5567,7 +5567,7 @@ const BehaviorScript bhvWoodenPost[] = {
BEGIN(OBJ_LIST_SURFACE),
COLLISION_DATA(poundable_pole_collision_06002490),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_INT(oNumLootCoins, 5),
DROP_FLOOR(),
OBJ_SET_POS(),
@@ -5597,7 +5597,7 @@ const BehaviorScript bhvWigglerHead[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, wiggler_seg5_anims_0500EC8C),
OBJ_SET_POS(),
- GRAVITY(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x003C, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
UNHIDE(),
SCALE(400),
OBJ_SET_FLOAT(oWigglerFallThroughFloorsHeight, 5000),
@@ -5611,7 +5611,7 @@ const BehaviorScript bhvWigglerBody[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
OBJ_SET_ANIMS(oAnimations, wiggler_seg5_anims_0500C874),
- GRAVITY(0x0000, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
SCALE(400),
BEGIN_LOOP(),
CALLNATIVE(bhv_wiggler_body_part_update),
@@ -5625,7 +5625,7 @@ const BehaviorScript bhvEnemyLakitu[] = {
OBJ_SET_ANIMS(oAnimations, lakitu_enemy_seg5_anims_050144D4),
ANIMATE(0x00),
OBJ_SET_POS(),
- GRAVITY(0x0028, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_enemy_lakitu_update),
END_LOOP(),
@@ -5672,7 +5672,7 @@ const BehaviorScript bhvSpiny[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, spiny_seg5_anims_05016EAC),
ANIMATE(0x00),
- GRAVITY(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_spiny_update),
END_LOOP(),
@@ -5685,7 +5685,7 @@ const BehaviorScript bhvMontyMole[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, monty_mole_seg5_anims_05007248),
ANIMATE(0x03),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
UNHIDE(),
OBJ_SET_INT(oIntangibleTimer, -1),
OBJ_SET_FLOAT(oGraphYOffset, 0xFFC4),
@@ -5713,7 +5713,7 @@ const BehaviorScript bhvMontyMoleRock[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
- GRAVITY(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_FLOAT(oGraphYOffset, 0x000A),
SCALE(200),
BEGIN_LOOP(),
@@ -5725,7 +5725,7 @@ const BehaviorScript bhvMontyMoleRock[] = {
const BehaviorScript bhvPlatformOnTrack[] = {
BEGIN(OBJ_LIST_SURFACE),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x0032, 0xFF9C, 0xFFCE, 0x0064, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0032, 0xFF9C, 0xFFCE, 0x0064, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
CALLNATIVE(bhv_platform_on_track_init),
BEGIN_LOOP(),
@@ -5793,7 +5793,7 @@ const BehaviorScript bhvWaterBombSpawner[] = {
const BehaviorScript bhvWaterBomb[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
- GRAVITY(0x0078, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0078, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_water_bomb_update),
END_LOOP(),
@@ -5937,7 +5937,7 @@ const BehaviorScript bhvMrBlizzard[] = {
OBJ_SET_ANIMS(oAnimations, snowman_seg5_anims_0500D118),
ANIMATE(0x00),
OBJ_SET_POS(),
- GRAVITY(0x001E, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_mr_blizzard_init),
OBJ_SET_FLOAT(oMrBlizzardUnkF4, 1),
BEGIN_LOOP(),
@@ -5950,7 +5950,7 @@ const BehaviorScript bhvMrBlizzardSnowball[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
- GRAVITY(0x001E, 0xFED4, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0xFED4, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
SCALE(200),
OBJ_ADD_INT(oMoveAngleYaw, -0x5B58),
OBJ_SET_FLOAT(oForwardVel, 5),
@@ -6082,7 +6082,7 @@ const BehaviorScript bhvHauntedChair[] = {
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, chair_seg5_anims_05005784),
ANIMATE(0x00),
- GRAVITY(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
CALLNATIVE(bhv_init_room),
CALLNATIVE(bhv_haunted_chair_init),
@@ -6097,7 +6097,7 @@ const BehaviorScript bhvMadPiano[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
DROP_FLOOR(),
OBJ_SET_ANIMS(oAnimations, mad_piano_seg5_anims_05009B14),
- GRAVITY(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
OBJ_ADD_INT(oMoveAngleYaw, 0x4000),
CALLNATIVE(bhv_init_room),
@@ -6112,7 +6112,7 @@ const BehaviorScript bhvFlyingBookend[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, bookend_seg5_anims_05002540),
ANIMATE(0x00),
- GRAVITY(0x003C, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x003C, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_INT(oMoveFlags, 0),
SCALE(70),
CALLNATIVE(bhv_init_room),
@@ -6174,7 +6174,7 @@ const BehaviorScript bhvSmallPiranhaFlame[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_small_piranha_flame_loop),
OBJ_ADD_INT(oAnimState, 1),
@@ -6197,7 +6197,7 @@ const BehaviorScript bhvFlyguyFlame[] = {
BEGIN(OBJ_LIST_UNIMPORTANT),
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
BILLBOARD(),
- GRAVITY(0x0000, 0x00C8, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0x00C8, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_fly_guy_flame_loop),
OBJ_ADD_INT(oAnimState, 1),
@@ -6209,7 +6209,7 @@ const BehaviorScript bhvSnufit[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_POS(),
- GRAVITY(0x001E, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x001E, 0x0000, 0xFFCE, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
BEGIN_LOOP(),
OBJ_SET_INT(oSnufitUnkF4, 0),
@@ -6222,7 +6222,7 @@ const BehaviorScript bhvSnufitBalls[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
BILLBOARD(),
- GRAVITY(0x000A, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x000A, 0x0000, 0xFFCE, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
CALLNATIVE(bhv_init_room),
OBJ_SET_FLOAT(oGraphYOffset, 0x000A),
SCALE(10),
@@ -6238,7 +6238,7 @@ const BehaviorScript bhvHorizontalGrindel[] = {
OBJ_OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
DROP_FLOOR(),
OBJ_SET_POS(),
- GRAVITY(0x0028, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0028, 0xFE70, 0x0000, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
SCALE(90),
CALLNATIVE(bhv_horizontal_grindel_init),
BEGIN_LOOP(),
@@ -6264,7 +6264,7 @@ const BehaviorScript bhvEyerokHand[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, eyerok_seg5_anims_050116E4),
ANIMATE(0x06),
- GRAVITY(0x0096, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0096, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
OBJ_SET_INT(oAnimState, 3),
BEGIN_LOOP(),
@@ -6278,7 +6278,7 @@ const BehaviorScript bhvKlepto[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, klepto_seg5_anims_05008CFC),
ANIMATE(0x00),
- GRAVITY(0x0064, 0x0000, 0xFFEC, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0064, 0x0000, 0xFFEC, 0x03E8, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_POS(),
CALLNATIVE(bhv_klepto_init),
BEGIN_LOOP(),
@@ -6305,7 +6305,7 @@ const BehaviorScript bhvRacingPenguin[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_ACTIVE_FROM_AFAR | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, penguin_seg5_anims_05008B74),
ANIMATE(0x03),
- GRAVITY(0x012C, 0xFCE0, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x012C, 0xFCE0, 0xFFFB, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000),
SCALE(400),
CALLNATIVE(bhv_racing_penguin_init),
BEGIN_LOOP(),
@@ -6371,7 +6371,7 @@ const BehaviorScript bhvSkeeter[] = {
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_ANIMS(oAnimations, skeeter_seg6_anims_06007DE0),
OBJ_SET_POS(),
- GRAVITY(0x00B4, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x04B0, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x00B4, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x04B0, 0x0000, 0x0000),
BEGIN_LOOP(),
CALLNATIVE(bhv_skeeter_update),
END_LOOP(),
@@ -6457,7 +6457,7 @@ const BehaviorScript bhvTripletButterfly[] = {
ANIMATE(0x00),
UNHIDE(),
OBJ_SET_POS(),
- GRAVITY(0x0000, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x0000, 0x0000, 0x0000, 0x0000, 0x03E8, 0x00C8, 0x0000, 0x0000),
OBJ_SET_FLOAT(oTripletButterflyScale, 1),
BEGIN_LOOP(),
CALLNATIVE(bhv_triplet_butterfly_update),
@@ -6469,7 +6469,7 @@ const BehaviorScript bhvBubba[] = {
BEGIN(OBJ_LIST_GENACTOR),
OBJ_OR_INT(oFlags, (OBJ_FLAG_COMPUTE_ANGLE_TO_MARIO | OBJ_FLAG_COMPUTE_DIST_TO_MARIO | OBJ_FLAG_SET_FACE_YAW_TO_MOVE_YAW | OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE)),
OBJ_SET_POS(),
- GRAVITY(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000),
+ OBJ_PHYSICS(0x00C8, 0xFE70, 0xFFCE, 0x03E8, 0x03E8, 0x0000, 0x0000, 0x0000),
SCALE(50),
BEGIN_LOOP(),
CALLNATIVE(bhv_bubba_loop),
diff --git a/diff-settings.sh b/diff-settings.sh
@@ -1,40 +0,0 @@
-#!/usr/bin/env bash
-
-LANG=us
-
-POSITIONAL=()
-while [[ $# -gt 0 ]]; do
-case "$1" in
- -j)
- LANG=jp
- shift
- ;;
- -u)
- LANG=us
- shift
- ;;
- -e)
- LANG=eu
- shift
- ;;
- -a)
- # Use an alternate dump file as the base.
- shift
- ALT_DUMP="$1"
- shift
- ;;
- *)
- POSITIONAL+=("$1")
- shift
- ;;
-esac
-done
-set -- "${POSITIONAL[@]}"
-
-BASEROM=baserom.$LANG
-MAPFILE="build/$LANG/sm64.$LANG.map"
-MYDUMP=sm64.$LANG.dump
-MYIMG=build/$LANG/sm64.$LANG.z64
-BASEDUMP="${ALT_DUMP:-${BASEROM}.dump}"
-BASEIMG=$BASEROM.z64
-MAKEFLAGS="-j VERSION=$LANG"
diff --git a/diff.py b/diff.py
@@ -0,0 +1,737 @@
+#!/usr/bin/env python3
+import sys
+import re
+import os
+import ast
+import argparse
+import subprocess
+import difflib
+import string
+import itertools
+import threading
+import queue
+import time
+
+def fail(msg):
+ print(msg, file=sys.stderr)
+ sys.exit(1)
+
+try:
+ import attr
+ from colorama import Fore, Style, Back
+ import ansiwrap
+ import watchdog
+except ModuleNotFoundError as e:
+ fail(f"Missing prerequisite python module {e.name}. "
+ "Run `python3 -m pip install --user colorama ansiwrap attrs watchdog` to install prerequisites.")
+
+# Prefer to use diff_settings.py from the current working directory
+sys.path.insert(0, '.')
+try:
+ import diff_settings
+except ModuleNotFoundError:
+ fail("Unable to find diff_settings.py in the same directory.")
+
+# ==== CONFIG ====
+
+parser = argparse.ArgumentParser(
+ description="Diff MIPS assembly.")
+parser.add_argument('start',
+ help="Function name or address to start diffing from.")
+parser.add_argument('end', nargs='?',
+ help="Address to end diff at.")
+parser.add_argument('-o', dest='diff_obj', action='store_true',
+ help="Diff .o files rather than a whole binary. This makes it possible to see symbol names. (Recommended)")
+parser.add_argument('--base-asm', dest='base_asm', metavar='FILE',
+ help="Read assembly from given file instead of configured base img.")
+parser.add_argument('--write-asm', dest='write_asm', metavar='FILE',
+ help="Write the current assembly output to file, e.g. for use with --base-asm.")
+parser.add_argument('-m', '--make', dest='make', action='store_true',
+ help="Automatically run 'make' on the .o file or binary before diffing.")
+parser.add_argument('-l', '--skip-lines', dest='skip_lines', type=int, default=0,
+ help="Skip the first N lines of output.")
+parser.add_argument('-s', '--stop-jr-ra', dest='stop_jrra', action='store_true',
+ help="Stop disassembling at the first 'jr ra'. Some functions have multiple return points, so use with care!")
+parser.add_argument('-i', '--ignore-large-imms', dest='ignore_large_imms', action='store_true',
+ help="Pretend all large enough immediates are the same.")
+parser.add_argument('-B', '--no-show-branches', dest='show_branches', action='store_false',
+ help="Don't visualize branches/branch targets.")
+parser.add_argument('-S', '--base-shift', dest='base_shift', type=str, default='0',
+ help="Diff position X in our img against position X + shift in the base img. "
+ "Arithmetic is allowed, so e.g. |-S \"0x1234 - 0x4321\"| is a reasonable "
+ "flag to pass if it is known that position 0x1234 in the base img syncs "
+ "up with position 0x4321 in our img. Not supported together with -o.")
+parser.add_argument('-w', '--watch', dest='watch', action='store_true',
+ help="Automatically update when source/object files change. "
+ "Recommended in combination with -m.")
+parser.add_argument('--width', dest='column_width', type=int, default=50,
+ help="Sets the width of the left and right view column.")
+
+# Project-specific flags, e.g. different versions/make arguments.
+if hasattr(diff_settings, "add_custom_arguments"):
+ diff_settings.add_custom_arguments(parser)
+
+args = parser.parse_args()
+
+# Set imgs, map file and make flags in a project-specific manner.
+config = {}
+diff_settings.apply(config, args)
+
+baseimg = config.get('baseimg', None)
+myimg = config.get('myimg', None)
+mapfile = config.get('mapfile', None)
+makeflags = config.get('makeflags', [])
+source_directories = config.get('source_directories', None)
+
+MAX_FUNCTION_SIZE_LINES = 1024
+MAX_FUNCTION_SIZE_BYTES = 1024 * 4
+
+COLOR_ROTATION = [
+ Fore.MAGENTA,
+ Fore.CYAN,
+ Fore.GREEN,
+ Fore.RED,
+ Fore.LIGHTYELLOW_EX,
+ Fore.LIGHTMAGENTA_EX,
+ Fore.LIGHTCYAN_EX,
+ Fore.LIGHTGREEN_EX,
+ Fore.LIGHTBLACK_EX,
+]
+
+BUFFER_CMD = ["tail", "-c", str(10**9)]
+LESS_CMD = ["less", "-Ric"]
+
+DEBOUNCE_DELAY = 0.1
+FS_WATCH_EXTENSIONS = ['.c', '.h']
+
+# ==== LOGIC ====
+
+binutils_prefix = None
+
+for binutils_cand in ['mips-linux-gnu-', 'mips64-elf-']:
+ try:
+ subprocess.check_call([binutils_cand + "objdump", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
+ binutils_prefix = binutils_cand
+ break
+ except subprocess.CalledProcessError:
+ pass
+ except FileNotFoundError:
+ pass
+
+if not binutils_prefix:
+ fail("Missing binutils; please ensure mips-linux-gnu-objdump or mips64-elf-objdump exist.")
+
+def eval_int(expr, emsg=None):
+ try:
+ ret = ast.literal_eval(expr)
+ if not isinstance(ret, int):
+ raise Exception("not an integer")
+ return ret
+ except Exception:
+ if emsg is not None:
+ fail(emsg)
+ return None
+
+def run_make(target, capture_output=False):
+ if capture_output:
+ return subprocess.run(["make"] + makeflags + [target], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
+ else:
+ subprocess.check_call(["make"] + makeflags + [target])
+
+def restrict_to_function(dump, fn_name):
+ out = []
+ search = f'<{fn_name}>:'
+ found = False
+ for line in dump.split('\n'):
+ if found:
+ if len(out) >= MAX_FUNCTION_SIZE_LINES:
+ break
+ out.append(line)
+ elif search in line:
+ found = True
+ return '\n'.join(out)
+
+def run_objdump(cmd):
+ flags, target, restrict = cmd
+ out = subprocess.check_output([binutils_prefix + "objdump"] + flags + [target], universal_newlines=True)
+ if restrict is not None:
+ return restrict_to_function(out, restrict)
+ return out
+
+base_shift = eval_int(args.base_shift, "Failed to parse --base-shift (-S) argument as an integer.")
+
+def search_map_file(fn_name):
+ if not mapfile:
+ fail(f"No map file configured; cannot find function {fn_name}.")
+
+ try:
+ with open(mapfile) as f:
+ lines = f.read().split('\n')
+ except Exception:
+ fail(f"Failed to open map file {mapfile} for reading.")
+
+ try:
+ cur_objfile = None
+ ram_to_rom = None
+ cands = []
+ last_line = ''
+ for line in lines:
+ if line.startswith(' .text'):
+ cur_objfile = line.split()[3]
+ if 'load address' in line:
+ tokens = last_line.split() + line.split()
+ ram = int(tokens[1], 0)
+ rom = int(tokens[5], 0)
+ ram_to_rom = rom - ram
+ if line.endswith(' ' + fn_name):
+ ram = int(line.split()[0], 0)
+ if cur_objfile is not None and ram_to_rom is not None:
+ cands.append((cur_objfile, ram + ram_to_rom))
+ last_line = line
+ except Exception as e:
+ import traceback
+ traceback.print_exc()
+ fail(f"Internal error while parsing map file")
+
+ if len(cands) > 1:
+ fail(f"Found multiple occurrences of function {fn_name} in map file.")
+ if len(cands) == 1:
+ return cands[0]
+ return None, None
+
+def dump_objfile():
+ if base_shift:
+ fail("--base-shift not compatible with -o")
+ if args.end is not None:
+ fail("end address not supported together with -o")
+ if args.start.startswith('0'):
+ fail("numerical start address not supported with -o; pass a function name")
+
+ objfile, _ = search_map_file(args.start)
+ if not objfile:
+ fail("Not able to find .o file for function.")
+
+ if args.make:
+ run_make(objfile)
+
+ if not os.path.isfile(objfile):
+ fail("Not able to find .o file for function.")
+
+ refobjfile = "expected/" + objfile
+ if not os.path.isfile(refobjfile):
+ fail(f'Please ensure an OK .o file exists at "{refobjfile}".')
+
+ objdump_flags = ["-drz"]
+ return (
+ objfile,
+ (objdump_flags, refobjfile, args.start),
+ (objdump_flags, objfile, args.start)
+ )
+
+def dump_binary():
+ if not baseimg or not myimg:
+ fail("Missing myimg/baseimg in config.")
+ if args.make:
+ run_make(myimg)
+ start_addr = eval_int(args.start)
+ if start_addr is None:
+ _, start_addr = search_map_file(args.start)
+ if start_addr is None:
+ fail("Not able to find function in map file.")
+ if args.end is not None:
+ end_addr = eval_int(args.end, "End address must be an integer expression.")
+ else:
+ end_addr = start_addr + MAX_FUNCTION_SIZE_BYTES
+ objdump_flags = ['-Dz', '-bbinary', '-mmips', '-EB']
+ flags1 = [f"--start-address={start_addr + base_shift}", f"--stop-address={end_addr + base_shift}"]
+ flags2 = [f"--start-address={start_addr}", f"--stop-address={end_addr}"]
+ return (
+ myimg,
+ (objdump_flags + flags1, baseimg, None),
+ (objdump_flags + flags2, myimg, None)
+ )
+
+# Alignment with ANSI colors is broken, let's fix it.
+def ansi_ljust(s, width):
+ needed = width - ansiwrap.ansilen(s)
+ if needed > 0:
+ return s + ' ' * needed
+ else:
+ return s
+
+re_int = re.compile(r'[0-9]+')
+re_comments = re.compile(r'<.*?>')
+re_regs = re.compile(r'\b(a[0-3]|t[0-9]|s[0-7]|at|v[01]|f[12]?[0-9]|f3[01]|fp)\b')
+re_sprel = re.compile(r',([1-9][0-9]*|0x[1-9a-f][0-9a-f]*)\(sp\)')
+re_large_imm = re.compile(r'-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}')
+forbidden = set(string.ascii_letters + '_')
+branch_likely_instructions = set([
+ 'beql', 'bnel', 'beqzl', 'bnezl', 'bgezl', 'bgtzl', 'blezl', 'bltzl',
+ 'bc1tl', 'bc1fl'
+])
+branch_instructions = set([
+ 'b', 'beq', 'bne', 'beqz', 'bnez', 'bgez', 'bgtz', 'blez', 'bltz',
+ 'bc1t', 'bc1f'
+] + list(branch_likely_instructions))
+
+def hexify_int(row, pat):
+ full = pat.group(0)
+ if len(full) <= 1:
+ # leave one-digit ints alone
+ return full
+ start, end = pat.span()
+ if start and row[start - 1] in forbidden:
+ return full
+ if end < len(row) and row[end] in forbidden:
+ return full
+ return hex(int(full))
+
+def parse_relocated_line(line):
+ try:
+ ind2 = line.rindex(',')
+ except ValueError:
+ ind2 = line.rindex('\t')
+ before = line[:ind2+1]
+ after = line[ind2+1:]
+ ind2 = after.find('(')
+ if ind2 == -1:
+ imm, after = after, ''
+ else:
+ imm, after = after[:ind2], after[ind2:]
+ if imm == '0x0':
+ imm = '0'
+ return before, imm, after
+
+def process_reloc(row, prev):
+ before, imm, after = parse_relocated_line(prev)
+ repl = row.split()[-1]
+ if imm != '0':
+ if before.strip() == 'jal' and not imm.startswith('0x'):
+ imm = '0x' + imm
+ repl += '+' + imm if int(imm,0) > 0 else imm
+ if 'R_MIPS_LO16' in row:
+ repl = f'%lo({repl})'
+ elif 'R_MIPS_HI16' in row:
+ # Ideally we'd pair up R_MIPS_LO16 and R_MIPS_HI16 to generate a
+ # correct addend for each, but objdump doesn't give us the order of
+ # the relocations, so we can't find the right LO16. :(
+ repl = f'%hi({repl})'
+ else:
+ assert 'R_MIPS_26' in row, f"unknown relocation type '{row}'"
+ return before + repl + after
+
+def process(lines):
+ mnemonics = []
+ diff_rows = []
+ skip_next = False
+ originals = []
+ line_nums = []
+ branch_targets = []
+ if not args.diff_obj:
+ lines = lines[7:]
+ if lines and not lines[-1]:
+ lines.pop()
+
+ for row in lines:
+ if args.diff_obj and ('>:' in row or not row):
+ continue
+
+ if 'R_MIPS_' in row:
+ if diff_rows[-1] != '<delay-slot>':
+ diff_rows[-1] = process_reloc(row, diff_rows[-1])
+ originals[-1] = process_reloc(row, originals[-1])
+ continue
+
+ row = re.sub(re_comments, '', row)
+ row = row.rstrip()
+ tabs = row.split('\t')
+ row = '\t'.join(tabs[2:])
+ line_num = tabs[0].strip()
+ row_parts = row.split('\t', 1)
+ mnemonic = row_parts[0].strip()
+ if mnemonic not in branch_instructions:
+ row = re.sub(re_int, lambda s: hexify_int(row, s), row)
+ original = row
+ if skip_next:
+ skip_next = False
+ row = '<delay-slot>'
+ mnemonic = '<delay-slot>'
+ if mnemonic in branch_likely_instructions:
+ skip_next = True
+ row = re.sub(re_regs, '<reg>', row)
+ row = re.sub(re_sprel, ',addr(sp)', row)
+ if args.ignore_large_imms:
+ row = re.sub(re_large_imm, '<imm>', row)
+
+ # Replace tabs with spaces
+ mnemonics.append(mnemonic)
+ diff_rows.append(row)
+ originals.append(original)
+ line_nums.append(line_num)
+ if mnemonic in branch_instructions:
+ target = row_parts[1].strip().split(',')[-1]
+ if mnemonic in branch_likely_instructions:
+ target = hex(int(target, 16) - 4)[2:]
+ branch_targets.append(target)
+ else:
+ branch_targets.append(None)
+ if args.stop_jrra and mnemonic == 'jr' and row_parts[1].strip() == 'ra':
+ break
+
+ # Cleanup whitespace
+ originals = [original.strip() for original in originals]
+ originals = [''.join(f'{o:<8s}' for o in original.split('\t')) for original in originals]
+ # return diff_rows, diff_rows, line_nums
+ return mnemonics, diff_rows, originals, line_nums, branch_targets
+
+def format_single_line_diff(line1, line2, column_width):
+ return f"{ansi_ljust(line1,column_width)}{ansi_ljust(line2,column_width)}"
+
+class SymbolColorer:
+ def __init__(self, base_index):
+ self.color_index = base_index
+ self.symbol_colors = {}
+
+ def color_symbol(self, s, t=None):
+ try:
+ color = self.symbol_colors[s]
+ except:
+ color = COLOR_ROTATION[self.color_index % len(COLOR_ROTATION)]
+ self.color_index += 1
+ self.symbol_colors[s] = color
+ t = t or s
+ return f'{color}{t}{Fore.RESET}'
+
+def normalize_large_imms(row):
+ if args.ignore_large_imms:
+ row = re.sub(re_large_imm, '<imm>', row)
+ return row
+
+def do_diff(basedump, mydump):
+ asm_lines1 = basedump.split('\n')
+ asm_lines2 = mydump.split('\n')
+
+ output = []
+
+ # TODO: status line?
+ # output.append(sha1sum(mydump))
+
+ mnemonics1, asm_lines1, originals1, line_nums1, branch_targets1 = process(asm_lines1)
+ mnemonics2, asm_lines2, originals2, line_nums2, branch_targets2 = process(asm_lines2)
+
+ sc1 = SymbolColorer(0)
+ sc2 = SymbolColorer(0)
+ sc3 = SymbolColorer(4)
+ sc4 = SymbolColorer(4)
+ sc5 = SymbolColorer(0)
+ sc6 = SymbolColorer(0)
+ bts1 = set()
+ bts2 = set()
+
+ if args.show_branches:
+ for (bts, btset, sc) in [(branch_targets1, bts1, sc5), (branch_targets2, bts2, sc6)]:
+ for bt in bts:
+ if bt is not None:
+ btset.add(bt + ":")
+ sc.color_symbol(bt + ":")
+
+ differ: difflib.SequenceMatcher = difflib.SequenceMatcher(a=mnemonics1, b=mnemonics2, autojunk=False)
+ for (tag, i1, i2, j1, j2) in differ.get_opcodes():
+ lines1 = asm_lines1[i1:i2]
+ lines2 = asm_lines2[j1:j2]
+
+ for k, (line1, line2) in enumerate(itertools.zip_longest(lines1, lines2)):
+ if tag == 'replace':
+ if line1 is None:
+ tag = 'insert'
+ elif line2 is None:
+ tag = 'delete'
+
+ try:
+ original1 = originals1[i1+k]
+ line_num1 = line_nums1[i1+k]
+ except:
+ original1 = ''
+ line_num1 = ''
+ try:
+ original2 = originals2[j1+k]
+ line_num2 = line_nums2[j1+k]
+ except:
+ original2 = ''
+ line_num2 = ''
+
+ line_color = Fore.RESET
+ line_prefix = ' '
+ if line1 == line2:
+ if normalize_large_imms(original1) == normalize_large_imms(original2):
+ out1 = f'{original1}'
+ out2 = f'{original2}'
+ elif line1 == '<delay-slot>':
+ out1 = f'{Style.DIM}{original1}'
+ out2 = f'{Style.DIM}{original2}'
+ else:
+ line_color = Fore.YELLOW
+ line_prefix = 'r'
+ out1 = f'{Fore.YELLOW}{original1}{Style.RESET_ALL}'
+ out2 = f'{Fore.YELLOW}{original2}{Style.RESET_ALL}'
+ out1 = re.sub(re_regs, lambda s: sc1.color_symbol(s.group()), out1)
+ out2 = re.sub(re_regs, lambda s: sc2.color_symbol(s.group()), out2)
+ out1 = re.sub(re_sprel, lambda s: sc3.color_symbol(s.group()), out1)
+ out2 = re.sub(re_sprel, lambda s: sc4.color_symbol(s.group()), out2)
+ elif tag in ['replace', 'equal']:
+ line_prefix = '|'
+ line_color = Fore.BLUE
+ out1 = f"{Fore.BLUE}{original1}{Style.RESET_ALL}"
+ out2 = f"{Fore.BLUE}{original2}{Style.RESET_ALL}"
+ elif tag == 'delete':
+ line_prefix = '<'
+ line_color = Fore.RED
+ out1 = f"{Fore.RED}{original1}{Style.RESET_ALL}"
+ out2 = ''
+ elif tag == 'insert':
+ line_prefix = '>'
+ line_color = Fore.GREEN
+ out1 = ''
+ out2 = f"{Fore.GREEN}{original2}{Style.RESET_ALL}"
+
+ in_arrow1 = ' '
+ in_arrow2 = ' '
+ out_arrow1 = ''
+ out_arrow2 = ''
+ line_num1 = line_num1 if out1 else ''
+ line_num2 = line_num2 if out2 else ''
+
+ if args.show_branches and out1:
+ if line_num1 in bts1:
+ in_arrow1 = sc5.color_symbol(line_num1, '~>')
+ if branch_targets1[i1+k] is not None:
+ out_arrow1 = ' ' + sc5.color_symbol(branch_targets1[i1+k] + ":", '~>')
+ if args.show_branches and out2:
+ if line_num2 in bts2:
+ in_arrow2 = sc6.color_symbol(line_num2, '~>')
+ if branch_targets2[j1+k] is not None:
+ out_arrow2 = ' ' + sc6.color_symbol(branch_targets2[j1+k] + ":", '~>')
+
+ out1 = f"{line_color}{line_num1} {in_arrow1} {out1}{Style.RESET_ALL}{out_arrow1}"
+ out2 = f"{line_color}{line_prefix} {line_num2} {in_arrow2} {out2}{Style.RESET_ALL}{out_arrow2}"
+ output.append(format_single_line_diff(out1, out2, args.column_width))
+
+ return output[args.skip_lines:]
+
+
+def debounced_fs_watch(targets, outq, debounce_delay):
+ import watchdog.events
+ import watchdog.observers
+
+ class WatchEventHandler(watchdog.events.FileSystemEventHandler):
+ def __init__(self, queue, file_targets):
+ self.queue = queue
+ self.file_targets = file_targets
+
+ def on_modified(self, ev):
+ if isinstance(ev, watchdog.events.FileModifiedEvent):
+ self.changed(ev.src_path)
+
+ def on_moved(self, ev):
+ if isinstance(ev, watchdog.events.FileMovedEvent):
+ self.changed(ev.dest_path)
+
+ def should_notify(self, path):
+ for target in self.file_targets:
+ if path == target:
+ return True
+ if args.make and any(path.endswith(suffix) for suffix in FS_WATCH_EXTENSIONS):
+ return True
+ return False
+
+ def changed(self, path):
+ if self.should_notify(path):
+ self.queue.put(time.time())
+
+ def debounce_thread():
+ listenq = queue.Queue()
+ file_targets = []
+ event_handler = WatchEventHandler(listenq, file_targets)
+ observer = watchdog.observers.Observer()
+ observed = set()
+ for target in targets:
+ if os.path.isdir(target):
+ observer.schedule(event_handler, target, recursive=True)
+ else:
+ file_targets.append(target)
+ target = os.path.dirname(target)
+ if target not in observed:
+ observed.add(target)
+ observer.schedule(event_handler, target)
+ observer.start()
+ while True:
+ t = listenq.get()
+ more = True
+ while more:
+ delay = t + debounce_delay - time.time()
+ if delay > 0:
+ time.sleep(delay)
+ # consume entire queue
+ more = False
+ try:
+ while True:
+ t = listenq.get(block=False)
+ more = True
+ except queue.Empty:
+ pass
+ outq.put(t)
+ th = threading.Thread(target=debounce_thread, daemon=True)
+ th.start()
+
+
+class Display():
+ def __init__(self, basedump, mydump):
+ self.basedump = basedump
+ self.mydump = mydump
+ self.emsg = None
+
+ def run_less(self):
+ if self.emsg is not None:
+ output = self.emsg
+ else:
+ output = '\n'.join(do_diff(self.basedump, self.mydump))
+
+ # Pipe the output through 'tail' and only then to less, to ensure the
+ # write call doesn't block. ('tail' has to buffer all its input before
+ # it starts writing.) This also means we don't have to deal with pipe
+ # closure errors.
+ buffer_proc = subprocess.Popen(BUFFER_CMD, stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE)
+ less_proc = subprocess.Popen(LESS_CMD, stdin=buffer_proc.stdout)
+ buffer_proc.stdin.write(output.encode())
+ buffer_proc.stdin.close()
+ buffer_proc.stdout.close()
+ return (buffer_proc, less_proc)
+
+ def run_sync(self):
+ proca, procb = self.run_less()
+ procb.wait()
+ proca.wait()
+
+ def run_async(self, watch_queue):
+ self.watch_queue = watch_queue
+ self.ready_queue = queue.Queue()
+ self.pending_update = None
+ dthread = threading.Thread(target=self.display_thread)
+ dthread.start()
+ self.ready_queue.get()
+
+ def display_thread(self):
+ proca, procb = self.run_less()
+ self.less_proc = procb
+ self.ready_queue.put(0)
+ while True:
+ ret = procb.wait()
+ proca.wait()
+ self.less_proc = None
+ if ret != 0:
+ # fix the terminal
+ os.system("tput reset")
+ if ret != 0 and self.pending_update is not None:
+ # killed by program with the intent to refresh
+ msg, error = self.pending_update
+ self.pending_update = None
+ if not error:
+ self.mydump = msg
+ self.emsg = None
+ else:
+ self.emsg = msg
+ proca, procb = self.run_less()
+ self.less_proc = procb
+ self.ready_queue.put(0)
+ else:
+ # terminated by user, or killed
+ self.watch_queue.put(None)
+ self.ready_queue.put(0)
+ break
+
+ def progress(self, msg):
+ # Write message to top-left corner
+ sys.stdout.write("\x1b7\x1b[1;1f{}\x1b8".format(msg + " "))
+ sys.stdout.flush()
+
+ def update(self, text, error):
+ if not error and not self.emsg and text == self.mydump:
+ self.progress("Unchanged. ")
+ return
+ self.pending_update = (text, error)
+ if not self.less_proc:
+ return
+ self.less_proc.kill()
+ self.ready_queue.get()
+
+ def terminate(self):
+ if not self.less_proc:
+ return
+ self.less_proc.kill()
+ self.ready_queue.get()
+
+
+def main():
+ if args.diff_obj:
+ make_target, basecmd, mycmd = dump_objfile()
+ else:
+ make_target, basecmd, mycmd = dump_binary()
+
+ if args.write_asm is not None:
+ mydump = run_objdump(mycmd)
+ with open(args.write_asm) as f:
+ f.write(mydump)
+ print(f"Wrote assembly to {args.write_asm}.")
+ sys.exit(0)
+
+ if args.base_asm is not None:
+ with open(args.base_asm) as f:
+ basedump = f.read()
+ else:
+ basedump = run_objdump(basecmd)
+
+ mydump = run_objdump(mycmd)
+
+ display = Display(basedump, mydump)
+
+ if not args.watch:
+ display.run_sync()
+ else:
+ if not args.make:
+ yn = input("Warning: watch-mode (-w) enabled without auto-make (-m). You will have to run make manually. Ok? (Y/n) ")
+ if yn.lower() == 'n':
+ return
+ if args.make:
+ watch_sources = None
+ if hasattr(diff_settings, "watch_sources_for_target"):
+ watch_sources = diff_settings.watch_sources_for_target(make_target)
+ watch_sources = watch_sources or source_directories
+ if not watch_sources:
+ fail("Missing source_directories config, don't know what to watch.")
+ else:
+ watch_sources = [make_target]
+ q = queue.Queue()
+ debounced_fs_watch(watch_sources, q, DEBOUNCE_DELAY)
+ display.run_async(q)
+ last_build = 0
+ try:
+ while True:
+ t = q.get()
+ if t is None:
+ break
+ if t < last_build:
+ continue
+ last_build = time.time()
+ if args.make:
+ display.progress("Building...")
+ ret = run_make(make_target, capture_output=True)
+ if ret.returncode != 0:
+ display.update(ret.stderr.decode() or ret.stdout.decode(), error=True)
+ continue
+ mydump = run_objdump(mycmd)
+ display.update(mydump, error=False)
+ except KeyboardInterrupt:
+ display.terminate()
+
+main()
diff --git a/diff.sh b/diff.sh
@@ -1,456 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# ==== CONFIG ====
-
-DIFF_OBJ=0
-MAKE=0
-BASE_SHIFT=0
-DIFF_ARGS="-l"
-
-if type mips-linux-gnu-ld >/dev/null 2>/dev/null; then
- CROSS=mips-linux-gnu-
-else
- CROSS=mips64-elf-
-fi
-
-POSITIONAL=()
-while [[ $# -gt 0 ]]; do
-case "$1" in
- -o)
- # Diff .o files rather than a whole binary. This makes it possible to
- # see relocations, which is helpful for navigating in the diff.
- DIFF_OBJ=1
- shift
- ;;
- -m)
- # Run "make" on the .o file or binary before diffing.
- MAKE=1
- shift
- ;;
- -s)
- # Stop disassembling at the first "jr ra".
- DIFF_ARGS+=" --stop-jr-ra"
- shift
- ;;
- -i)
- # Treat all large immediates the same for diffing purposes.
- DIFF_ARGS+=" --ignore-large-imms"
- shift
- ;;
- -S)
- # Diff position X in our ROM against position X + shift in the base ROM.
- # Arithmetic is allowed, so e.g. |-S "0x1234 - 0x4321"| is a reasonable
- # flag to pass if it is known that position 0x1234 in the base ROM syncs
- # up with position 0x4321 in our.
- # Not supported together with -o.
- shift
- BASE_SHIFT="$1"
- shift
- ;;
- *)
- POSITIONAL+=("$1")
- shift
- ;;
-esac
-done
-set -- "${POSITIONAL[@]}"
-
-# Set $BASEIMG, $BASEDUMP, $MYIMG, $MYDUMP, $MAPFILE, $MAKEFLAGS in a project-specific manner.
-. diff-settings.sh
-
-# ==== LOGIC ====
-
-if [[ $# -lt 1 ]]; then
- echo "Usage: ./diff.sh [flags] (function|rom addr) [end rom addr]" >&2
- exit 1
-fi
-
-PYTHON_VERSION=$(python3 --version | cut -d'.' -f2)
-if [[ $PYTHON_VERSION -lt 6 ]]; then
- echo "$0 requires at least Python 3.6" >&2
- exit 1
-fi
-
-START="$1"
-BASE=0
-
-if [ $DIFF_OBJ != 1 ] && [ $MAKE = 1 ]; then
- make $MAKEFLAGS "$MYIMG"
-fi
-
-set +e
-
-if [ -n "$MAPFILE" ] && [ "${START:0:2}" != "0x" ]; then
- LINE=$(grep "$1$" $MAPFILE)
- if [ -n "$LINE" ]; then
- START=$(echo $LINE | cut -d' ' -f1)
- if [[ $DIFF_OBJ = 1 ]]; then
- LINE2=$(grep "$1$\|^ .text" $MAPFILE | grep "$1$" -B1 | head -n1)
- OBJFILE=$(echo $LINE2 | cut -d' ' -f4)
- else
- LINE2=$(grep "$1$\|load address" $MAPFILE | grep "$1$" -B1 | head -n1)
- RAM=$(echo $LINE2 | cut -d' ' -f2)
- ROM=$(echo $LINE2 | cut -d' ' -f6)
- BASE="$RAM - $ROM"
- fi
- fi
-fi
-
-if ! [[ "$START" =~ ^[0-9] ]]; then
- echo "Function $1 not found in map file." >&2
- exit 1
-fi
-
-set -e
-
-if [[ $DIFF_OBJ = 1 ]]; then
- if [[ $MAKE = 1 ]]; then
- make $MAKEFLAGS "$OBJFILE"
- fi
- if [[ ! -f "$OBJFILE" ]]; then
- echo Not able to find .o file for function.
- exit 1
- fi
- REFOBJFILE="expected/$OBJFILE"
- if [[ ! -f "$REFOBJFILE" ]]; then
- echo Please ensure an OK .o file exists at "$REFOBJFILE".
- exit 1
- fi
-
- OBJDUMP="${CROSS}objdump -drz"
- if [[ -z "$ALT_DUMP" ]]; then
- $OBJDUMP $REFOBJFILE | grep "<$1>:" -A1000 > $BASEDUMP
- fi
- $OBJDUMP $OBJFILE | grep "<$1>:" -A1000 > $MYDUMP
- DIFF_ARGS+=" -o"
-else
- END="$START + 0x1000"
- if [[ $# -ge 2 ]]; then
- END="$2"
- fi
-
- OBJDUMP="${CROSS}objdump -D -z -bbinary -mmips -EB"
- OPTIONS1="--start-address=$(($START - ($BASE) + ($BASE_SHIFT))) --stop-address=$(($END - ($BASE) + ($BASE_SHIFT)))"
- OPTIONS2="--start-address=$(($START - ($BASE))) --stop-address=$(($END - ($BASE)))"
- if [[ -z "$ALT_DUMP" ]]; then
- $OBJDUMP $OPTIONS1 $BASEIMG > $BASEDUMP
- fi
- $OBJDUMP $OPTIONS2 $MYIMG > $MYDUMP
-fi
-
-set +e
-
-# sed -i "1s;^;$(sha1sum $MYDUMP)\n;" $MYDUMP
-
-read -r -d '' DIFF_SCRIPT << EOM
-try:
- import argparse
- import attr
- from difflib import SequenceMatcher
- from pathlib import Path
- import itertools
- from colorama import Fore, Style, Back
- import ansiwrap
- import re
- import string
- from signal import signal, SIGPIPE, SIG_DFL
-except ModuleNotFoundError as e:
- # Exit nicely and print to stdout, because less will be sad otherwise.
- print("Missing prerequisite python module " + e.name +
- ". Run \`python3 -m pip install --user colorama ansiwrap attrs\` to install prerequisites.")
- exit(0)
-
-# Fixes pipe error
-signal(SIGPIPE,SIG_DFL)
-
-# Alignment with ANSI colors is just broken, let's fix it.
-def ansi_ljust(s, width):
- needed = width - ansiwrap.ansilen(s)
- if needed > 0:
- return s + ' ' * needed
- else:
- return s
-
-@attr.s
-class Options:
- file1: str = attr.ib()
- file2: str = attr.ib()
- diff_obj: bool = attr.ib()
- line_nums: bool = attr.ib()
- reg_diff: bool = attr.ib()
- column_width: int = attr.ib()
- stop_jrra: bool = attr.ib()
- ignore_large_imms: bool = attr.ib()
- skip_bl_delay: bool = attr.ib()
-
-r = re.compile(r'[0-9]+')
-comments = re.compile(r'<.*?>')
-regs = re.compile(r'\b(a[0-3]|t[0-9]|s[0-7]|at|v[01]|f[12]?[0-9]|f3[01]|fp)\b')
-sprel = re.compile(r',([1-9][0-9]*|0x[1-9a-f][0-9a-f]*)\(sp\)')
-large_imm = re.compile(r'-?[1-9][0-9]{2,}|-?0x[0-9a-f]{3,}')
-forbidden = set(string.ascii_letters + '_')
-branch_likely_instructions = [
- 'beql', 'bnel', 'beqzl', 'bnezl', 'bgezl', 'bgtzl', 'blezl', 'bltzl',
- 'bc1tl', 'bc1fl'
-]
-branch_instructions = [
- 'b', 'beq', 'bne', 'beqz', 'bnez', 'bgez', 'bgtz', 'blez', 'bltz',
- 'bc1t', 'bc1f'
-] + branch_likely_instructions
-
-def fn(row, pat):
- full = pat.group(0)
- if len(full) <= 1:
- return full
- start, end = pat.span()
- if start and row[start - 1] in forbidden:
- return full
- if end < len(row) and row[end] in forbidden:
- return full
- return hex(int(full))
-
-def parse_relocated_line(line):
- try:
- ind2 = line.rindex(',')
- except ValueError:
- ind2 = line.rindex('\t')
- before = line[:ind2+1]
- after = line[ind2+1:]
- ind2 = after.find('(')
- if ind2 == -1:
- imm, after = after, ''
- else:
- imm, after = after[:ind2], after[ind2:]
- if imm == '0x0':
- imm = '0'
- return before, imm, after
-
-def process_reloc(row, prev):
- before, imm, after = parse_relocated_line(prev)
- repl = row.split()[-1]
- if imm != '0':
- if before.strip() == 'jal' and not imm.startswith('0x'):
- imm = '0x' + imm
- repl += '+' + imm if int(imm,0) > 0 else imm
- if 'R_MIPS_LO16' in row:
- repl = f'%lo({repl})'
- elif 'R_MIPS_HI16' in row:
- # Ideally we'd pair up R_MIPS_LO16 and R_MIPS_HI16 to generate a
- # correct addend for each, but objdump doesn't give us the order of
- # the relocations, so we can't find the right LO16. :(
- repl = f'%hi({repl})'
- else:
- assert 'R_MIPS_26' in row, f"unknown relocation type '{row}'"
- return before + repl + after
-
-def process(lines, options):
- diff_rows = []
- skip_next = False
- originals = []
- line_nums = []
- skip_lines = 1 if options.diff_obj else 7
-
- for index, row in enumerate(lines):
- if index < skip_lines:
- continue
-
- if options.diff_obj and ('>:' in row or not row):
- continue
-
- if 'R_MIPS_' in row:
- if diff_rows[-1] == '<skipped>':
- continue
-
- diff_rows[-1] = process_reloc(row, diff_rows[-1])
- originals[-1] = process_reloc(row, originals[-1])
- continue
-
- row = re.sub(comments, '', row)
- row = row.rstrip()
- tabs = row.split('\t')
- row = '\t'.join(tabs[2:]) # [20:]
- line_num = tabs[0].strip()
- original = row
- mnemonic = row.split('\t')[0].strip()
- if mnemonic not in branch_instructions:
- row = re.sub(r, lambda s: fn(row, s), row)
- if skip_next:
- skip_next = False
- row = '<skipped>'
- if mnemonic in branch_likely_instructions and options.skip_bl_delay:
- skip_next = True
- if options.reg_diff:
- row = re.sub(regs, '<reg>', row)
- row = re.sub(sprel, ',addr(sp)', row)
- if options.ignore_large_imms:
- row = re.sub(large_imm, '<imm>', row)
-
- # Replace tabs with spaces
- diff_rows.append(row)
- originals.append(original)
- line_nums.append(line_num)
- if options.stop_jrra and mnemonic == 'jr' and row.split('\t')[1].strip() == 'ra':
- break
-
- # Cleanup whitespace
- originals = [original.strip() for original in originals]
- originals = [''.join(f'{o:<8s}' for o in original.split('\t')) for original in originals]
- # return diff_rows, diff_rows, line_nums
- return diff_rows, originals, line_nums
-
-regs_after = re.compile(r'<reg>')
-def print_single_line_diff(line1, line2, column_width):
- print(f"{ansi_ljust(line1,column_width)}{ansi_ljust(line2,column_width)}")
-
-color_rotation = [
- Fore.MAGENTA,
- Fore.CYAN,
- Fore.GREEN,
- Fore.RED,
- Fore.LIGHTYELLOW_EX,
- Fore.LIGHTMAGENTA_EX,
- Fore.LIGHTCYAN_EX,
- Fore.LIGHTGREEN_EX,
- #Fore.LIGHTRED_EX, (This is hard to distinguish (I'm not even colorblind))
- Fore.LIGHTBLACK_EX,
-]
-color_index = [0, 0]
-symbol_colors = [{}, {}]
-
-def color_symbol(s, i):
- global color_rotation
- global color_index
- global symbol_colors
- s = s.group()
- try:
- color = symbol_colors[i][s]
- except:
- color = color_rotation[color_index[i]]
- color_index[i] = (color_index[i] + 1) % len(color_rotation)
- symbol_colors[i][s] = color
-
- return f'{color}{s}{Fore.RESET}'
-
-def norm(row):
- if options.ignore_large_imms:
- row = re.sub(large_imm, '<imm>', row)
- return row
-
-def main(options):
- asm1: str = Path(options.file1).read_text()
- asm2: str = Path(options.file2).read_text()
- asm1_lines = asm1.split('\n')
- asm2_lines = asm2.split('\n')
-
- asm1_lines, originals1, line_nums1 = process(asm1_lines, options)
- asm2_lines, originals2, line_nums2 = process(asm2_lines, options)
-
- differ: SequenceMatcher = SequenceMatcher(a=asm1_lines, b=asm2_lines, autojunk=True)
- for (tag, i1, i2, j1, j2) in differ.get_opcodes():
- lines1 = asm1_lines[i1:i2]
- lines2 = asm2_lines[j1:j2]
-
- for k, (line1, line2) in enumerate(itertools.zip_longest(lines1, lines2)):
- if tag == 'replace':
- if line1 == None:
- tag = 'insert'
- elif line2 == None:
- tag = 'delete'
-
- try:
- original1 = originals1[i1+k]
- line_num1 = line_nums1[i1+k]
- except:
- original1 = ''
- line_num1 = ''
- try:
- original2 = originals2[j1+k]
- line_num2 = line_nums2[j1+k]
- except:
- original2 = ''
- line_num2 = ''
-
- line_color = Fore.RESET
- line_prefix = ' '
- if tag == 'equal' or line1 == line2:
- if (line1 == '<skipped>'):
- pass
- elif norm(original1) != norm(original2) and options.reg_diff:
- line_color = Fore.YELLOW
- line_prefix = 'r'
- line1 = f'{Fore.YELLOW}{original1}{Style.RESET_ALL}'
- line2 = f'{Fore.YELLOW}{original2}{Style.RESET_ALL}'
- line1 = re.sub(regs, lambda s: color_symbol(s, 0), line1)
- line2 = re.sub(regs, lambda s: color_symbol(s, 1), line2)
- line1 = re.sub(sprel, lambda s: color_symbol(s, 0), line1)
- line2 = re.sub(sprel, lambda s: color_symbol(s, 1), line2)
- else:
- line1 = f'{original1}'
- line2 = f'{original2}'
- elif tag == 'replace':
- line_prefix = '|'
- line_color = Fore.BLUE
- line1 = f"{Fore.BLUE}{original1}{Style.RESET_ALL}"
- line2 = f"{Fore.BLUE}{original2}{Style.RESET_ALL}"
- elif tag == 'delete':
- line_prefix = '<'
- line_color = Fore.RED
- line1 = f"{Fore.RED}{original1}{Style.RESET_ALL}"
- elif tag == 'insert':
- line_prefix = '>'
- line_color = Fore.GREEN
- line2 = f"{Fore.GREEN}{original2}{Style.RESET_ALL}"
-
- line1 = line1 or ''
- line2 = line2 or ''
-
- line_num1 = line_num1 if line1 else ''
- line_num2 = line_num2 if line2 else ''
-
- if not options.line_nums:
- line_num1 = ''
- line_num2 = ''
-
- line1 = f"{line_color}{line_num1} {line1}{Style.RESET_ALL}"
- line2 = f"{line_color}{line_prefix} {line_num2} {line2}{Style.RESET_ALL}"
- print_single_line_diff(line1, line2, options.column_width)
-
-
-if __name__ == "__main__":
- parser = argparse.ArgumentParser(
- description="Diff mips data")
- parser.add_argument('file1',
- help="The base file to compare")
- parser.add_argument('file2',
- help="The modified version to compare to")
- parser.add_argument('-o', dest='diff_obj', action='store_true',
- help="Perform an object file diff")
- parser.add_argument('-l', dest='line_nums', action='store_true',
- help="Show line numbers")
- parser.add_argument('--stop-jr-ra', dest='stop_jrra', action='store_true',
- help="Stop at the first 'jr ra'")
- parser.add_argument('--ignore-large-imms', dest='ignore_large_imms', action='store_true',
- help="Pretend all 'large' immediates are the same")
- parser.add_argument('--column', dest='column_width', type=int, default=50,
- help="Sets the width of the left and right view column")
- args = parser.parse_args()
-
- options = Options(
- file1 = args.file1,
- file2 = args.file2,
- reg_diff = True,
- line_nums = args.line_nums,
- diff_obj = args.diff_obj,
- column_width = args.column_width,
- stop_jrra = args.stop_jrra,
- ignore_large_imms = args.ignore_large_imms,
- skip_bl_delay = True
- )
- main(options)
-EOM
-
-set -e
-
-python3 -c "$DIFF_SCRIPT" "$BASEDUMP" "$MYDUMP" $DIFF_ARGS | less -Ric
diff --git a/diff_settings.py b/diff_settings.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+def add_custom_arguments(parser):
+ group = parser.add_mutually_exclusive_group(required=False)
+ group.add_argument('-j', dest='lang', action='store_const', const='jp',
+ help="Set version to JP.")
+ group.add_argument('-u', dest='lang', action='store_const', const='us',
+ help="Set version to US.")
+ group.add_argument('-e', dest='lang', action='store_const', const='eu',
+ help="Set version to EU.")
+
+def apply(config, args):
+ lang = args.lang or 'us'
+ config['mapfile'] = f'build/{lang}/sm64.{lang}.map'
+ config['myimg'] = f'build/{lang}/sm64.{lang}.z64'
+ config['baseimg'] = f'baserom.{lang}.z64'
+ config['makeflags'] = [f'VERSION={lang}']
+ config['source_directories'] = ['src', 'include']
diff --git a/enhancements/ique_support/README.md b/enhancements/ique_support/README.md
@@ -0,0 +1,46 @@
+# iQue Player Support Enhancement
+
+This enhancement allows the same ROM to work on both the N64 and the iQue Player.
+
+## Instructions
+
+### Fix video corruption
+
+In `lib/src/__osViSwapContext.c`, change the line
+```c
+HW_REG(VI_CONTROL_REG, u32) = s1->features;
+```
+to
+```c
+HW_REG(VI_CONTROL_REG, u32) = s1->features & ~(1 << 13);
+```
+This has no effect on the N64, but prevents video corruption on iQue. Games will be unplayable on iQue unless you do this modification.
+
+### Add console detection
+
+Copy `enhancements/ique_support/skGetId.s` into `lib/asm/`.
+Copy `enhancements/ique_support/consoleType.c` into `lib/src/`.
+Copy `enhancements/ique_support/console_type.h` into `include/PR/`.
+
+Add the line `#include <PR/console_type.h>` to the bottom of the block of `#include`s in `include/ultra64.h`.
+Add the line `gConsoleType = get_console_type();` as the first line of code in `osInitialize()` in `lib/src/osInitialize.c` (i.e. right before the line `D_80365CD0 = TRUE;`)
+
+### Patch libultra EEPROM functions
+
+Console detection needs to be added for this modification.
+
+In `lib/src/osEepromRead.c`, `lib/src/osEepromWrite.c`, and `lib/src/osEepromProbe.c`:
+
+Add
+```c
+if (gConsoleType == CONSOLE_N64) {
+```
+directly after the `__osSiGetAccess` call.
+
+Add
+```c
+} else if (gConsoleType == CONSOLE_IQUE) {
+#include "../../enhancements/ique_support/FILENAME.inc.c"
+}
+```
+directly before the `__osSiRelAccess` call; replace `FILENAME` with the filename, i.e. if `lib/src/osEepromRead.c` put `#include "../../enhancements/ique_support/osEepromRead.inc.c"`.
diff --git a/enhancements/ique_support/consoleType.c b/enhancements/ique_support/consoleType.c
@@ -0,0 +1,11 @@
+#include "libultra_internal.h"
+
+enum ConsoleType gConsoleType;
+
+void skGetId(u32 *out);
+
+enum ConsoleType get_console_type(void) {
+ u32 id = 0;
+ skGetId(&id);
+ return (id == 0) ? CONSOLE_N64 : CONSOLE_IQUE;
+}
diff --git a/enhancements/ique_support/console_type.h b/enhancements/ique_support/console_type.h
@@ -0,0 +1,7 @@
+enum ConsoleType {
+ CONSOLE_N64,
+ CONSOLE_IQUE
+};
+
+extern enum ConsoleType gConsoleType;
+extern enum ConsoleType get_console_type(void);
diff --git a/enhancements/ique_support/osEepromProbe.inc.c b/enhancements/ique_support/osEepromProbe.inc.c
@@ -0,0 +1,9 @@
+s32 __osBbEepromSize = * (s32*) 0x80000360;
+
+if (__osBbEepromSize == 0x200) {
+ status = 1;
+}
+
+if (__osBbEepromSize == 0x800) {
+ status = 2;
+}
diff --git a/enhancements/ique_support/osEepromRead.inc.c b/enhancements/ique_support/osEepromRead.inc.c
@@ -0,0 +1,8 @@
+u8 *__osBbEepromAddress = * (u8**) 0x8000035C;
+s32 i;
+
+for (i = 0; i < 8; i++) {
+ buffer[i] = __osBbEepromAddress[(address << 3) + i];
+}
+
+sp34 = 0;
diff --git a/enhancements/ique_support/osEepromWrite.inc.c b/enhancements/ique_support/osEepromWrite.inc.c
@@ -0,0 +1,8 @@
+u8 *__osBbEepromAddress = * (u8**) 0x8000035C;
+s32 i;
+
+for (i = 0; i < 8; i++) {
+ __osBbEepromAddress[(address << 3) + i] = buffer[i];
+}
+
+sp34 = 0;
diff --git a/enhancements/ique_support/skGetId.s b/enhancements/ique_support/skGetId.s
@@ -0,0 +1,18 @@
+# Code by stuckpixel
+
+.set noreorder
+.set gp=64
+
+.include "macros.inc"
+
+glabel skGetId
+ li $v0, 0
+ li $t0, 0xA4300014
+ lw $t1, 0x00($t0)
+ nop
+ jr $ra
+ nop
+ nop
+ nop
+ nop
+ nop
diff --git a/first-diff.py b/first-diff.py
@@ -21,7 +21,9 @@ if lang is None:
best = 0
for path in ['build/us/sm64.us.z64', 'build/jp/sm64.jp.z64', 'build/eu/sm64.eu.z64']:
try:
- if os.path.getmtime(path) > best:
+ mtime = os.path.getmtime(path)
+ if mtime > best:
+ best = mtime
lang = path.split('/')[1]
except Exception:
pass
diff --git a/include/PR/abi.h b/include/PR/abi.h
@@ -217,7 +217,7 @@ typedef struct {
typedef union {
Awords words;
-#if !defined(__x86_64__) && !defined(__i386__)
+#if IS_BIG_ENDIAN && !IS_64_BIT
Aadpcm adpcm;
Apolef polef;
Aclearbuff clearbuff;
diff --git a/include/PR/gbi.h b/include/PR/gbi.h
@@ -297,19 +297,19 @@
* G_MTX: parameter flags
*/
#ifdef F3DEX_GBI_2
-# define G_MTX_MODELVIEW 0x00 /* matrix types */
-# define G_MTX_PROJECTION 0x04
-# define G_MTX_MUL 0x00 /* concat or load */
-# define G_MTX_LOAD 0x02
-# define G_MTX_NOPUSH 0x00 /* push or not */
-# define G_MTX_PUSH 0x01
+# define G_MTX_MODELVIEW 0x00 /* matrix types */
+# define G_MTX_PROJECTION 0x04
+# define G_MTX_MUL 0x00 /* concat or load */
+# define G_MTX_LOAD 0x02
+# define G_MTX_NOPUSH 0x00 /* push or not */
+# define G_MTX_PUSH 0x01
#else /* F3DEX_GBI_2 */
-# define G_MTX_MODELVIEW 0x00 /* matrix types */
-# define G_MTX_PROJECTION 0x01
-# define G_MTX_MUL 0x00 /* concat or load */
-# define G_MTX_LOAD 0x02
-# define G_MTX_NOPUSH 0x00 /* push or not */
-# define G_MTX_PUSH 0x04
+# define G_MTX_MODELVIEW 0x00 /* matrix types */
+# define G_MTX_PROJECTION 0x01
+# define G_MTX_MUL 0x00 /* concat or load */
+# define G_MTX_LOAD 0x02
+# define G_MTX_NOPUSH 0x00 /* push or not */
+# define G_MTX_PUSH 0x04
#endif /* F3DEX_GBI_2 */
/*
@@ -1719,7 +1719,7 @@ typedef struct {
*/
typedef union {
Gwords words;
-#if !defined(F3D_OLD) && !defined(__x86_64__) && !defined(__i386__)
+#if !defined(F3D_OLD) && IS_BIG_ENDIAN && !IS_64_BIT
Gdma dma;
Gtri tri;
Gline3D line;
@@ -1738,7 +1738,7 @@ typedef union {
Gsettilesize settilesize;
Gloadtlut loadtlut;
#endif
- long long int force_structure_alignment;
+ long long int force_structure_alignment;
} Gfx;
/*
diff --git a/include/PR/mbi.h b/include/PR/mbi.h
@@ -1,6 +1,8 @@
#ifndef _MBI_H_
#define _MBI_H_
+#include "platform_info.h"
+
/**************************************************************************
* *
* Copyright (C) 1994, Silicon Graphics, Inc. *
diff --git a/include/PR/ultratypes.h b/include/PR/ultratypes.h
@@ -29,18 +29,14 @@ typedef volatile s64 vs64;
typedef float f32;
typedef double f64;
-#ifdef __x86_64__
-typedef u64 size_t;
-typedef s64 ssize_t;
-typedef u64 uintptr_t;
-typedef s64 intptr_t;
-typedef s64 ptrdiff_t;
-#else
+#ifdef TARGET_N64
typedef u32 size_t;
typedef s32 ssize_t;
typedef u32 uintptr_t;
typedef s32 intptr_t;
typedef s32 ptrdiff_t;
+#else
+#include <stddef.h>
#endif
#endif
diff --git a/include/audio_defines.h b/include/audio_defines.h
@@ -1,5 +1,5 @@
-#ifndef _AUDIODEFINES_H
-#define _AUDIODEFINES_H
+#ifndef AUDIO_DEFINES_H
+#define AUDIO_DEFINES_H
// Sound Magic Definition:
// First Byte (Upper Nibble): Sound Bank (not the same as audio bank!)
@@ -262,19 +262,19 @@
/* not verified */ #define SOUND_GENERAL_UNKNOWN3_LOWPRIO SOUND_ARG_LOAD(3, 0, 0x37, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_UNKNOWN3 SOUND_ARG_LOAD(3, 0, 0x37, 0x80, 8)
/* not verified */ #define SOUND_GENERAL_UNKNOWN3_2 SOUND_ARG_LOAD(3, 8, 0x37, 0x80, 8)
-/* not verified */ #define SOUND_GENERAL_SWITCH1 SOUND_ARG_LOAD(3, 0, 0x38, 0x00, 8)
+#define SOUND_GENERAL_PENDULUM_SWING SOUND_ARG_LOAD(3, 0, 0x38, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_CHAIN_CHOMP1 SOUND_ARG_LOAD(3, 0, 0x39, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_CHAIN_CHOMP2 SOUND_ARG_LOAD(3, 0, 0x3A, 0x00, 8)
-/* not verified */ #define SOUND_GENERAL_SWITCH2 SOUND_ARG_LOAD(3, 0, 0x3B, 0x00, 8)
+#define SOUND_GENERAL_DOOR_TURN_KEY SOUND_ARG_LOAD(3, 0, 0x3B, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_MOVING_IN_SAND SOUND_ARG_LOAD(3, 0, 0x3C, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_UNKNOWN4_LOWPRIO SOUND_ARG_LOAD(3, 0, 0x3D, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_UNKNOWN4 SOUND_ARG_LOAD(3, 0, 0x3D, 0x80, 8)
-/* not verified */ #define SOUND_GENERAL_SWITCH3 SOUND_ARG_LOAD(3, 0, 0x3E, 0x00, 8)
+#define SOUND_GENERAL_MOVING_PLATFORM_SWITCH SOUND_ARG_LOAD(3, 0, 0x3E, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_CAGE_OPEN SOUND_ARG_LOAD(3, 0, 0x3F, 0xA0, 8)
/* not verified */ #define SOUND_GENERAL_QUIET_POUND1_LOWPRIO SOUND_ARG_LOAD(3, 0, 0x40, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_QUIET_POUND1 SOUND_ARG_LOAD(3, 0, 0x40, 0x40, 8)
/* not verified */ #define SOUND_GENERAL_BREAK_BOX SOUND_ARG_LOAD(3, 0, 0x41, 0xC0, 8)
-/* not verified */ #define SOUND_GENERAL_SWITCH4 SOUND_ARG_LOAD(3, 0, 0x42, 0x00, 8)
+#define SOUND_GENERAL_DOOR_INSERT_KEY SOUND_ARG_LOAD(3, 0, 0x42, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_QUIET_POUND2 SOUND_ARG_LOAD(3, 0, 0x43, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_BIG_POUND SOUND_ARG_LOAD(3, 0, 0x44, 0x00, 8)
/* not verified */ #define SOUND_GENERAL_UNK45 SOUND_ARG_LOAD(3, 0, 0x45, 0x00, 8)
@@ -556,4 +556,4 @@
#define SOUND_OBJ2_BOSS_DIALOG_GRUNT SOUND_ARG_LOAD(9, 0, 0x69, 0x40, 8)
#define SOUND_OBJ2_MRI_SPINNING SOUND_ARG_LOAD(9, 0, 0x6B, 0x00, 8)
-#endif /* _AUDIODEFINES_H */
+#endif /* AUDIO_DEFINES_H */
diff --git a/include/behavior_data.h b/include/behavior_data.h
@@ -102,7 +102,7 @@ extern const BehaviorScript bhvUkikiCage[];
extern const BehaviorScript bhvBitfsSinkingPlatforms[];
extern const BehaviorScript bhvBitfsSinkingCagePlatform[];
extern const BehaviorScript bhvDddMovingPole[];
-extern const BehaviorScript bhvBitfsTiltingSquarePlatform[];
+extern const BehaviorScript bhvBitfsTiltingInvertedPyramid[];
extern const BehaviorScript bhvSquishablePlatform[];
extern const BehaviorScript bhvCutOutObject[];
extern const BehaviorScript bhvBetaMovingFlamesSpawn[];
@@ -194,7 +194,7 @@ extern const BehaviorScript bhvVolcanoFlames[];
extern const BehaviorScript bhvLllRotatingHexagonalRing[];
extern const BehaviorScript bhvLllSinkingRectangularPlatform[];
extern const BehaviorScript bhvLllSinkingSquarePlatforms[];
-extern const BehaviorScript bhvLllTiltingSquarePlatform[];
+extern const BehaviorScript bhvLllTiltingInvertedPyramid[];
extern const BehaviorScript bhvUnused1F30[];
extern const BehaviorScript bhvKoopaShell[];
extern const BehaviorScript bhvKoopaShellFlame[];
diff --git a/include/config.h b/include/config.h
@@ -8,16 +8,6 @@
*/
// Bug Fixes
-// --| Categories
-/// Turn on bug fixes for really bad, C standard breaking code. This is
-/// enabled automatically when building with non-IDO compilers, or if
-/// NON_MATCHING is set.
-#if !defined(__sgi) || defined(NON_MATCHING)
-#define BUGFIXES_CRITICAL 1
-#else
-#define BUGFIXES_CRITICAL 0
-#endif
-
// --| US Version Nintendo Bug Fixes
/// Fixes bug where obtaining over 999 coins sets the number of lives to 999 (or -25)
#define BUGFIX_MAX_LIVES (0 || VERSION_US || VERSION_EU)
@@ -33,13 +23,6 @@
/// Fixes bug where it shows a star when you grab a key in bowser battle stages
#define BUGFIX_STAR_BOWSER_KEY (0 || VERSION_US || VERSION_EU)
-// --| Goddard / Mario Head Bug Fixes
-/// Goddard left out important and necessary return statements; this puts them back in
-#define BUGFIX_GODDARD_MISSING_RETURN (0 || BUGFIXES_CRITICAL)
-/// It seems that Goddard only declared, not prototyped some functions. This lead to
-/// incorrect promotion of floats to doubles.
-#define BUGFIX_GODDARD_BAD_DECLARATIONS (0 || BUGFIXES_CRITICAL)
-
// Screen Size Defines
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
diff --git a/include/course_table.h b/include/course_table.h
@@ -0,0 +1,33 @@
+#ifndef _COURSE_TABLE_H
+#define _COURSE_TABLE_H
+
+// Start of the 3 cap courses in a row.
+#define COURSE_CAP_COURSES COURSE_COTMC
+
+#define DEFINE_COURSE(courseenum, _1, _2, _3, _4) courseenum,
+#define DEFINE_COURSES_END() \
+ COURSE_BONUS_STAGES, \
+ COURSE_STAGES_MAX = COURSE_BONUS_STAGES - 1, \
+ COURSE_STAGES_COUNT = COURSE_STAGES_MAX,
+
+#define DEFINE_BONUS_COURSE(courseenum, _1, _2, _3, _4) courseenum,
+
+enum CourseNum
+{
+ COURSE_NONE, // (0) Overworld (Castle Grounds, etc)
+ #include "levels/course_defines.h"
+ COURSE_END, // To mark end + 1 for marking max and count.
+ // Todo: clean this up. This is still bad. Which
+ // one is clearer? Need to get rid of one of these.
+ COURSE_MAX = COURSE_END - 1,
+ COURSE_COUNT = COURSE_MAX,
+ COURSE_MIN = COURSE_NONE + 1
+};
+
+#undef DEFINE_COURSE
+#undef DEFINE_COURSES_END
+#undef DEFINE_BONUS_COURSE
+
+#define COURSE_IS_MAIN_COURSE(cmd) (cmd >= COURSE_MIN && cmd <= COURSE_STAGES_MAX)
+
+#endif // _COURSE_TABLE_H
diff --git a/include/dialog_ids.h b/include/dialog_ids.h
@@ -0,0 +1,178 @@
+#ifndef DIALOG_IDS
+#define DIALOG_IDS
+
+enum DialogId {
+ DIALOG_000,
+ DIALOG_001,
+ DIALOG_002,
+ DIALOG_003,
+ DIALOG_004,
+ DIALOG_005,
+ DIALOG_006,
+ DIALOG_007,
+ DIALOG_008,
+ DIALOG_009,
+ DIALOG_010,
+ DIALOG_011,
+ DIALOG_012,
+ DIALOG_013,
+ DIALOG_014,
+ DIALOG_015,
+ DIALOG_016,
+ DIALOG_017,
+ DIALOG_018,
+ DIALOG_019,
+ DIALOG_020,
+ DIALOG_021,
+ DIALOG_022,
+ DIALOG_023,
+ DIALOG_024,
+ DIALOG_025,
+ DIALOG_026,
+ DIALOG_027,
+ DIALOG_028,
+ DIALOG_029,
+ DIALOG_030,
+ DIALOG_031,
+ DIALOG_032,
+ DIALOG_033,
+ DIALOG_034,
+ DIALOG_035,
+ DIALOG_036,
+ DIALOG_037,
+ DIALOG_038,
+ DIALOG_039,
+ DIALOG_040,
+ DIALOG_041,
+ DIALOG_042,
+ DIALOG_043,
+ DIALOG_044,
+ DIALOG_045,
+ DIALOG_046,
+ DIALOG_047,
+ DIALOG_048,
+ DIALOG_049,
+ DIALOG_050,
+ DIALOG_051,
+ DIALOG_052,
+ DIALOG_053,
+ DIALOG_054,
+ DIALOG_055,
+ DIALOG_056,
+ DIALOG_057,
+ DIALOG_058,
+ DIALOG_059,
+ DIALOG_060,
+ DIALOG_061,
+ DIALOG_062,
+ DIALOG_063,
+ DIALOG_064,
+ DIALOG_065,
+ DIALOG_066,
+ DIALOG_067,
+ DIALOG_068,
+ DIALOG_069,
+ DIALOG_070,
+ DIALOG_071,
+ DIALOG_072,
+ DIALOG_073,
+ DIALOG_074,
+ DIALOG_075,
+ DIALOG_076,
+ DIALOG_077,
+ DIALOG_078,
+ DIALOG_079,
+ DIALOG_080,
+ DIALOG_081,
+ DIALOG_082,
+ DIALOG_083,
+ DIALOG_084,
+ DIALOG_085,
+ DIALOG_086,
+ DIALOG_087,
+ DIALOG_088,
+ DIALOG_089,
+ DIALOG_090,
+ DIALOG_091,
+ DIALOG_092,
+ DIALOG_093,
+ DIALOG_094,
+ DIALOG_095,
+ DIALOG_096,
+ DIALOG_097,
+ DIALOG_098,
+ DIALOG_099,
+ DIALOG_100,
+ DIALOG_101,
+ DIALOG_102,
+ DIALOG_103,
+ DIALOG_104,
+ DIALOG_105,
+ DIALOG_106,
+ DIALOG_107,
+ DIALOG_108,
+ DIALOG_109,
+ DIALOG_110,
+ DIALOG_111,
+ DIALOG_112,
+ DIALOG_113,
+ DIALOG_114,
+ DIALOG_115,
+ DIALOG_116,
+ DIALOG_117,
+ DIALOG_118,
+ DIALOG_119,
+ DIALOG_120,
+ DIALOG_121,
+ DIALOG_122,
+ DIALOG_123,
+ DIALOG_124,
+ DIALOG_125,
+ DIALOG_126,
+ DIALOG_127,
+ DIALOG_128,
+ DIALOG_129,
+ DIALOG_130,
+ DIALOG_131,
+ DIALOG_132,
+ DIALOG_133,
+ DIALOG_134,
+ DIALOG_135,
+ DIALOG_136,
+ DIALOG_137,
+ DIALOG_138,
+ DIALOG_139,
+ DIALOG_140,
+ DIALOG_141,
+ DIALOG_142,
+ DIALOG_143,
+ DIALOG_144,
+ DIALOG_145,
+ DIALOG_146,
+ DIALOG_147,
+ DIALOG_148,
+ DIALOG_149,
+ DIALOG_150,
+ DIALOG_151,
+ DIALOG_152,
+ DIALOG_153,
+ DIALOG_154,
+ DIALOG_155,
+ DIALOG_156,
+ DIALOG_157,
+ DIALOG_158,
+ DIALOG_159,
+ DIALOG_160,
+ DIALOG_161,
+ DIALOG_162,
+ DIALOG_163,
+ DIALOG_164,
+ DIALOG_165,
+ DIALOG_166,
+ DIALOG_167,
+ DIALOG_168,
+ DIALOG_169,
+ DIALOG_COUNT
+};
+
+#endif
diff --git a/include/level_commands.h b/include/level_commands.h
@@ -3,6 +3,8 @@
#include "command_macros_base.h"
+#include "level_table.h"
+
#define OP_AND 0
#define OP_NAND 1
#define OP_EQ 2
diff --git a/include/level_table.h b/include/level_table.h
@@ -0,0 +1,22 @@
+#ifndef _LEVEL_TABLE_H
+#define _LEVEL_TABLE_H
+
+// For LEVEL_NAME defines, see level_defines.h.
+// Please include this file if you want to use them.
+
+#define STUB_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8) levelenum,
+#define DEFINE_LEVEL(_0, levelenum, _2, _3, _4, _5, _6, _7, _8, _9, _10) levelenum,
+
+enum LevelNum
+{
+ LEVEL_NONE,
+#include "levels/level_defines.h"
+ LEVEL_COUNT,
+ LEVEL_MAX = LEVEL_COUNT - 1,
+ LEVEL_MIN = LEVEL_NONE + 1
+};
+
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
+
+#endif // _LEVEL_TABLE_H
diff --git a/include/macros.h b/include/macros.h
@@ -3,6 +3,12 @@
#include "platform_info.h"
+#if !defined(__sgi) && (!defined(NON_MATCHING) || !defined(AVOID_UB))
+// asm-process isn't supported outside of IDO, and undefined behavior causes
+// crashes.
+#error Matching build is only possible on IDO; please build with NON_MATCHING=1.
+#endif
+
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define GLUE(a, b) a ## b
diff --git a/include/object_fields.h b/include/object_fields.h
@@ -956,13 +956,13 @@
#define /*0x0F4*/ oThwompUnkF4 OBJECT_FIELD_S32(0x1B)
/* Tilting Platform */
-#define /*0x0F4*/ oTiltingPlatformUnkF4 OBJECT_FIELD_F32(0x1B)
-#define /*0x0F8*/ oTiltingPlatformUnkF8 OBJECT_FIELD_F32(0x1C)
-#define /*0x0FC*/ oTiltingPlatformUnkFC OBJECT_FIELD_F32(0x1D)
-#define /*0x10C*/ oTiltingPlatformUnk10C OBJECT_FIELD_S32(0x21)
+#define /*0x0F4*/ oTiltingPyramidNormalX OBJECT_FIELD_F32(0x1B)
+#define /*0x0F8*/ oTiltingPyramidNormalY OBJECT_FIELD_F32(0x1C)
+#define /*0x0FC*/ oTiltingPyramidNormalZ OBJECT_FIELD_F32(0x1D)
+#define /*0x10C*/ oTiltingPyramidMarioOnPlatform OBJECT_FIELD_S32(0x21)
/* Toad Message */
-#define /*0x108*/ oToadMessageDialogNum OBJECT_FIELD_U32(0x20)
+#define /*0x108*/ oToadMessageDialogId OBJECT_FIELD_U32(0x20)
#define /*0x10C*/ oToadMessageRecentlyTalked OBJECT_FIELD_S32(0x21)
#define /*0x110*/ oToadMessageState OBJECT_FIELD_S32(0x22)
diff --git a/include/platform_info.h b/include/platform_info.h
@@ -1,7 +1,7 @@
#ifndef PLATFORM_INFO_H
#define PLATFORM_INFO_H
-#if defined(__sgi) || defined(TARGET_N64)
+#ifdef TARGET_N64
#define IS_64_BIT 0
#define IS_BIG_ENDIAN 1
#else
diff --git a/include/segment_symbols.h b/include/segment_symbols.h
@@ -42,37 +42,14 @@ extern u8 _goddardSegmentStart[];
DECLARE_LEVEL_SEGMENT(menu)
DECLARE_LEVEL_SEGMENT(intro)
DECLARE_LEVEL_SEGMENT(ending)
-DECLARE_LEVEL_SEGMENT(bbh)
-DECLARE_LEVEL_SEGMENT(ccm)
-DECLARE_LEVEL_SEGMENT(castle_inside)
-DECLARE_LEVEL_SEGMENT(hmc)
-DECLARE_LEVEL_SEGMENT(ssl)
-DECLARE_LEVEL_SEGMENT(bob)
-DECLARE_LEVEL_SEGMENT(sl)
-DECLARE_LEVEL_SEGMENT(wdw)
-DECLARE_LEVEL_SEGMENT(jrb)
-DECLARE_LEVEL_SEGMENT(thi)
-DECLARE_LEVEL_SEGMENT(ttc)
-DECLARE_LEVEL_SEGMENT(rr)
-DECLARE_LEVEL_SEGMENT(castle_grounds)
-DECLARE_LEVEL_SEGMENT(bitdw)
-DECLARE_LEVEL_SEGMENT(vcutm)
-DECLARE_LEVEL_SEGMENT(bitfs)
-DECLARE_LEVEL_SEGMENT(sa)
-DECLARE_LEVEL_SEGMENT(bits)
-DECLARE_LEVEL_SEGMENT(lll)
-DECLARE_LEVEL_SEGMENT(ddd)
-DECLARE_LEVEL_SEGMENT(wf)
-DECLARE_LEVEL_SEGMENT(ending)
-DECLARE_LEVEL_SEGMENT(castle_courtyard)
-DECLARE_LEVEL_SEGMENT(pss)
-DECLARE_LEVEL_SEGMENT(cotmc)
-DECLARE_LEVEL_SEGMENT(totwc)
-DECLARE_LEVEL_SEGMENT(bowser_1)
-DECLARE_LEVEL_SEGMENT(wmotr)
-DECLARE_LEVEL_SEGMENT(bowser_2)
-DECLARE_LEVEL_SEGMENT(bowser_3)
-DECLARE_LEVEL_SEGMENT(ttm)
+
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) DECLARE_LEVEL_SEGMENT(folder)
+
+#include "levels/level_defines.h"
+
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
DECLARE_SEGMENT(water_skybox_mio0)
DECLARE_SEGMENT(ccm_skybox_mio0)
diff --git a/include/sm64.h b/include/sm64.h
@@ -21,22 +21,22 @@
#define DEBUG_ASSERT(exp)
#endif
-// Use these macros in places where aliasing is used to split a variable into
-// smaller parts
-#if ENDIAN_IND
+// Pointer casting is technically UB, and avoiding it gets rid of endian issues
+// as well as a nice side effect.
+#ifdef AVOID_UB
#define GET_HIGH_U16_OF_32(var) ((u16)((var) >> 16))
#define GET_HIGH_S16_OF_32(var) ((s16)((var) >> 16))
#define GET_LOW_U16_OF_32(var) ((u16)((var) & 0xFFFF))
#define GET_LOW_S16_OF_32(var) ((s16)((var) & 0xFFFF))
-#define SET_HIGH_U16_OF_32(var, val) ((var) = ((var) & 0xFFFF) | ((val) << 16))
-#define SET_HIGH_S16_OF_32(var, val) ((var) = ((var) & 0xFFFF) | ((val) << 16))
+#define SET_HIGH_U16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
+#define SET_HIGH_S16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
#else
#define GET_HIGH_U16_OF_32(var) (((u16 *)&(var))[0])
#define GET_HIGH_S16_OF_32(var) (((s16 *)&(var))[0])
#define GET_LOW_U16_OF_32(var) (((u16 *)&(var))[1])
#define GET_LOW_S16_OF_32(var) (((s16 *)&(var))[1])
-#define SET_HIGH_U16_OF_32(var, val) ((((u16 *)&(var))[0]) = (val))
-#define SET_HIGH_S16_OF_32(var, val) ((((s16 *)&(var))[0]) = (val))
+#define SET_HIGH_U16_OF_32(var, x) ((((u16 *)&(var))[0]) = (x))
+#define SET_HIGH_S16_OF_32(var, x) ((((s16 *)&(var))[0]) = (x))
#endif
// Layers
@@ -176,9 +176,9 @@
#define ACT_SLEEPING 0x0C000203 // (0x003 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_WAKING_UP 0x0C000204 // (0x004 | ACT_FLAG_STATIONARY | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_PANTING 0x0C400205 // (0x005 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
-#define ACT_UNKNOWN_006 0x08000206 // (0x006 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
-#define ACT_UNKNOWN_007 0x08000207 // (0x007 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
-#define ACT_UNKNOWN_008 0x08000208 // (0x008 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
+#define ACT_HOLD_PANTING_UNUSED 0x08000206 // (0x006 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
+#define ACT_HOLD_IDLE 0x08000207 // (0x007 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
+#define ACT_HOLD_HEAVY_IDLE 0x08000208 // (0x008 | ACT_FLAG_STATIONARY | ACT_FLAG_PAUSE_EXIT)
#define ACT_STANDING_AGAINST_WALL 0x0C400209 // (0x009 | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_COUGHING 0x0C40020A // (0x00A | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
#define ACT_SHIVERING 0x0C40020B // (0x00B | ACT_FLAG_STATIONARY | ACT_FLAG_IDLE | ACT_FLAG_ALLOW_FIRST_PERSON | ACT_FLAG_PAUSE_EXIT)
diff --git a/include/special_presets.h b/include/special_presets.h
@@ -41,7 +41,7 @@ static struct SpecialPreset SpecialObjectPresets[] =
{0x0D, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_ROTATING_HEXAGONAL_RING , bhvLllRotatingHexagonalRing},
{0x0E, SPTYPE_YROT_NO_PARAMS , 0x00, MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, bhvLllSinkingRectangularPlatform},
{0x0F, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_SINKING_SQUARE_PLATFORMS, bhvLllSinkingSquarePlatforms},
- {0x10, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_TILTING_SQUARE_PLATFORM, bhvLllTiltingSquarePlatform},
+ {0x10, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_LLL_TILTING_SQUARE_PLATFORM, bhvLllTiltingInvertedPyramid},
{0x11, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvLllBowserPuzzle},
{0x12, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_NONE, bhvMrI},
{0x13, SPTYPE_NO_YROT_OR_PARAMS , 0x00, MODEL_BULLY, bhvSmallBully},
diff --git a/include/trig_tables.inc.c b/include/trig_tables.inc.c
@@ -255,7 +255,7 @@ f32 gSineTable[] = {
0.999830604f, 0.999857664f, 0.999882340f, 0.999904692f,
0.999924719f, 0.999942362f, 0.999957621f, 0.999970615f,
0.999981165f, 0.999989390f, 0.999995291f, 0.999998808f,
-#if !BUGFIXES_CRITICAL
+#ifndef AVOID_UB
};
f32 gCosineTable[0x1000] = {
diff --git a/levels/bbh/areas/1/1/model.inc.c b/levels/bbh/areas/1/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07004800 - 0x07004808
-static const Ambient bbh_seg7_light_07004800 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x07004808 - 0x07004818
-static const Light bbh_seg7_light_07004808 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07004818 - 0x07004820
-static const Ambient bbh_seg7_light_07004818 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07004820 - 0x07004830
-static const Light bbh_seg7_light_07004820 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004800 - 0x07004818
+static const Lights1 bbh_seg7_lights_07004800 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
+
+// 0x07004818 - 0x07004830
+static const Lights1 bbh_seg7_lights_07004818 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004830 - 0x07004920
static const Vtx bbh_seg7_vertex_07004830[] = {
@@ -739,8 +731,8 @@ static const Gfx bbh_seg7_dl_07006AF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07004808, 1),
- gsSPLight(&bbh_seg7_light_07004800, 2),
+ gsSPLight(&bbh_seg7_lights_07004800.l, 1),
+ gsSPLight(&bbh_seg7_lights_07004800.a, 2),
gsSPVertex(bbh_seg7_vertex_07004830, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -750,8 +742,8 @@ static const Gfx bbh_seg7_dl_07006AF0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&bbh_seg7_light_07004820, 1),
- gsSPLight(&bbh_seg7_light_07004818, 2),
+ gsSPLight(&bbh_seg7_lights_07004818.l, 1),
+ gsSPLight(&bbh_seg7_lights_07004818.a, 2),
gsSPVertex(bbh_seg7_vertex_070049D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 4, 0, 0x0, 4, 3, 5, 0x0),
diff --git a/levels/bbh/areas/1/12/model.inc.c b/levels/bbh/areas/1/12/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700BC68 - 0x0700BC70
-static const Ambient bbh_seg7_light_0700BC68 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x0700BC70 - 0x0700BC80
-static const Light bbh_seg7_light_0700BC70 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BC68 - 0x0700BC80
+static const Lights1 bbh_seg7_lights_0700BC68 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
-// 0x0700BC80 - 0x0700BC88
-static const Ambient bbh_seg7_light_0700BC80 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700BC88 - 0x0700BC98
-static const Light bbh_seg7_light_0700BC88 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BC80 - 0x0700BC98
+static const Lights1 bbh_seg7_lights_0700BC80 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BC98 - 0x0700BD18
static const Vtx bbh_seg7_vertex_0700BC98[] = {
@@ -331,13 +323,13 @@ static const Gfx bbh_seg7_dl_0700CB58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700BC70, 1),
- gsSPLight(&bbh_seg7_light_0700BC68, 2),
+ gsSPLight(&bbh_seg7_lights_0700BC68.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700BC68.a, 2),
gsSPVertex(bbh_seg7_vertex_0700BC98, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_0700BC88, 1),
- gsSPLight(&bbh_seg7_light_0700BC80, 2),
+ gsSPLight(&bbh_seg7_lights_0700BC80.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700BC80.a, 2),
gsSPVertex(bbh_seg7_vertex_0700BD18, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 5, 3, 0x0, 6, 7, 8, 0x0),
diff --git a/levels/bbh/areas/1/14/model.inc.c b/levels/bbh/areas/1/14/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700D350 - 0x0700D358
-static const Ambient bbh_seg7_light_0700D350 = {
- {{0x3f, 0x51, 0x66}, 0, {0x3f, 0x51, 0x66}, 0}
-};
-
-// 0x0700D358 - 0x0700D368
-static const Light bbh_seg7_light_0700D358 = {
- {{0x9e, 0xcc, 0xff}, 0, {0x9e, 0xcc, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D350 - 0x0700D368
+static const Lights1 bbh_seg7_lights_0700D350 = gdSPDefLights1(
+ 0x3f, 0x51, 0x66,
+ 0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700D368 - 0x0700D428
static const Vtx bbh_seg7_vertex_0700D368[] = {
@@ -29,8 +25,8 @@ static const Gfx bbh_seg7_dl_0700D428[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700D358, 1),
- gsSPLight(&bbh_seg7_light_0700D350, 2),
+ gsSPLight(&bbh_seg7_lights_0700D350.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700D350.a, 2),
gsSPVertex(bbh_seg7_vertex_0700D368, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/bbh/areas/1/16/model.inc.c b/levels/bbh/areas/1/16/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700D850 - 0x0700D858
-static const Ambient bbh_seg7_light_0700D850 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x0700D858 - 0x0700D868
-static const Light bbh_seg7_light_0700D858 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D868 - 0x0700D870
-static const Ambient bbh_seg7_light_0700D868 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x0700D870 - 0x0700D880
-static const Light bbh_seg7_light_0700D870 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D880 - 0x0700D888
-static const Ambient bbh_seg7_light_0700D880 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700D888 - 0x0700D898
-static const Light bbh_seg7_light_0700D888 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D850 - 0x0700D868
+static const Lights1 bbh_seg7_lights_0700D850 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
+
+// 0x0700D868 - 0x0700D880
+static const Lights1 bbh_seg7_lights_0700D868 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
+
+// 0x0700D880 - 0x0700D898
+static const Lights1 bbh_seg7_lights_0700D880 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700D898 - 0x0700D918
static const Vtx bbh_seg7_vertex_0700D898[] = {
@@ -485,19 +473,19 @@ static const Gfx bbh_seg7_dl_0700EE98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700D858, 1),
- gsSPLight(&bbh_seg7_light_0700D850, 2),
+ gsSPLight(&bbh_seg7_lights_0700D850.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700D850.a, 2),
gsSPVertex(bbh_seg7_vertex_0700D898, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_0700D870, 1),
- gsSPLight(&bbh_seg7_light_0700D868, 2),
+ gsSPLight(&bbh_seg7_lights_0700D868.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700D868.a, 2),
gsSPVertex(bbh_seg7_vertex_0700D918, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 2, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
- gsSPLight(&bbh_seg7_light_0700D888, 1),
- gsSPLight(&bbh_seg7_light_0700D880, 2),
+ gsSPLight(&bbh_seg7_lights_0700D880.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700D880.a, 2),
gsSPVertex(bbh_seg7_vertex_0700D9B8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 0, 2, 3, 0x0),
diff --git a/levels/bbh/areas/1/18/model.inc.c b/levels/bbh/areas/1/18/model.inc.c
@@ -1,42 +1,26 @@
-// 0x0700F8B8 - 0x0700F8C0
-static const Ambient bbh_seg7_light_0700F8B8 = {
- {{0x65, 0x65, 0x38}, 0, {0x65, 0x65, 0x38}, 0}
-};
-
-// 0x0700F8C0 - 0x0700F8D0
-static const Light bbh_seg7_light_0700F8C0 = {
- {{0xfe, 0xfe, 0x8c}, 0, {0xfe, 0xfe, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700F8D0 - 0x0700F8D8
-static const Ambient bbh_seg7_light_0700F8D0 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x0700F8D8 - 0x0700F8E8
-static const Light bbh_seg7_light_0700F8D8 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700F8E8 - 0x0700F8F0
-static const Ambient bbh_seg7_light_0700F8E8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700F8F0 - 0x0700F900
-static const Light bbh_seg7_light_0700F8F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700F900 - 0x0700F908
-static const Ambient bbh_seg7_light_0700F900 = {
- {{0x33, 0x2c, 0x20}, 0, {0x33, 0x2c, 0x20}, 0}
-};
-
-// 0x0700F908 - 0x0700F918
-static const Light bbh_seg7_light_0700F908 = {
- {{0x80, 0x70, 0x52}, 0, {0x80, 0x70, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F8B8 - 0x0700F8D0
+static const Lights1 bbh_seg7_lights_0700F8B8 = gdSPDefLights1(
+ 0x65, 0x65, 0x38,
+ 0xfe, 0xfe, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x0700F8D0 - 0x0700F8E8
+static const Lights1 bbh_seg7_lights_0700F8D0 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
+
+// 0x0700F8E8 - 0x0700F900
+static const Lights1 bbh_seg7_lights_0700F8E8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700F900 - 0x0700F918
+static const Lights1 bbh_seg7_lights_0700F900 = gdSPDefLights1(
+ 0x33, 0x2c, 0x20,
+ 0x80, 0x70, 0x52, 0x28, 0x28, 0x28
+);
// 0x0700F918 - 0x0700F9F8
static const Vtx bbh_seg7_vertex_0700F918[] = {
@@ -410,8 +394,8 @@ static const Gfx bbh_seg7_dl_07010A48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700F8C0, 1),
- gsSPLight(&bbh_seg7_light_0700F8B8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700F918, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 5, 7, 8, 0x0),
@@ -420,13 +404,13 @@ static const Gfx bbh_seg7_dl_07010A48[] = {
gsSPVertex(bbh_seg7_vertex_0700F9F8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 6, 1, 0x0),
- gsSPLight(&bbh_seg7_light_0700F8D8, 1),
- gsSPLight(&bbh_seg7_light_0700F8D0, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8D0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8D0.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FA68, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_0700F8F0, 1),
- gsSPLight(&bbh_seg7_light_0700F8E8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FAE8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -439,18 +423,18 @@ static const Gfx bbh_seg7_dl_07010B58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700F8C0, 1),
- gsSPLight(&bbh_seg7_light_0700F8B8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FBA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&bbh_seg7_light_0700F8F0, 1),
- gsSPLight(&bbh_seg7_light_0700F8E8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FBE8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&bbh_seg7_light_0700F908, 1),
- gsSPLight(&bbh_seg7_light_0700F900, 2),
+ gsSPLight(&bbh_seg7_lights_0700F900.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F900.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FCA8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -463,14 +447,14 @@ static const Gfx bbh_seg7_dl_07010C30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700F8C0, 1),
- gsSPLight(&bbh_seg7_light_0700F8B8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8B8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FD68, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&bbh_seg7_light_0700F8F0, 1),
- gsSPLight(&bbh_seg7_light_0700F8E8, 2),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700F8E8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700FE28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 4, 1, 0x0),
diff --git a/levels/bbh/areas/1/19/model.inc.c b/levels/bbh/areas/1/19/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07011228 - 0x07011230
-static const Ambient bbh_seg7_light_07011228 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07011230 - 0x07011240
-static const Light bbh_seg7_light_07011230 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011228 - 0x07011240
+static const Lights1 bbh_seg7_lights_07011228 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011240 - 0x070112C0
static const Vtx bbh_seg7_vertex_07011240[] = {
@@ -256,8 +252,8 @@ static const Gfx bbh_seg7_dl_07011DF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07011230, 1),
- gsSPLight(&bbh_seg7_light_07011228, 2),
+ gsSPLight(&bbh_seg7_lights_07011228.l, 1),
+ gsSPLight(&bbh_seg7_lights_07011228.a, 2),
gsSPVertex(bbh_seg7_vertex_07011240, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/bbh/areas/1/20/model.inc.c b/levels/bbh/areas/1/20/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07012318 - 0x07012320
-static const Ambient bbh_seg7_light_07012318 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07012320 - 0x07012330
-static const Light bbh_seg7_light_07012320 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012318 - 0x07012330
+static const Lights1 bbh_seg7_lights_07012318 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012330 - 0x07012430
static const Vtx bbh_seg7_vertex_07012330[] = {
@@ -41,8 +37,8 @@ static const Gfx bbh_seg7_dl_07012470[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07012320, 1),
- gsSPLight(&bbh_seg7_light_07012318, 2),
+ gsSPLight(&bbh_seg7_lights_07012318.l, 1),
+ gsSPLight(&bbh_seg7_lights_07012318.a, 2),
gsSPVertex(bbh_seg7_vertex_07012330, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 6, 2, 0x0),
diff --git a/levels/bbh/areas/1/22/model.inc.c b/levels/bbh/areas/1/22/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07012758 - 0x07012760
-static const Ambient bbh_seg7_light_07012758 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x07012760 - 0x07012770
-static const Light bbh_seg7_light_07012760 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012758 - 0x07012770
+static const Lights1 bbh_seg7_lights_07012758 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
-// 0x07012770 - 0x07012778
-static const Ambient bbh_seg7_light_07012770 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07012778 - 0x07012788
-static const Light bbh_seg7_light_07012778 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012770 - 0x07012788
+static const Lights1 bbh_seg7_lights_07012770 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012788 - 0x070127C8
static const Vtx bbh_seg7_vertex_07012788[] = {
@@ -311,8 +303,8 @@ static const Gfx bbh_seg7_dl_07013508[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07012760, 1),
- gsSPLight(&bbh_seg7_light_07012758, 2),
+ gsSPLight(&bbh_seg7_lights_07012758.l, 1),
+ gsSPLight(&bbh_seg7_lights_07012758.a, 2),
gsSPVertex(bbh_seg7_vertex_07012788, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -323,8 +315,8 @@ static const Gfx bbh_seg7_dl_07013550[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07012778, 1),
- gsSPLight(&bbh_seg7_light_07012770, 2),
+ gsSPLight(&bbh_seg7_lights_07012770.l, 1),
+ gsSPLight(&bbh_seg7_lights_07012770.a, 2),
gsSPVertex(bbh_seg7_vertex_070127C8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/bbh/areas/1/24/model.inc.c b/levels/bbh/areas/1/24/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07013C58 - 0x07013C60
-static const Ambient bbh_seg7_light_07013C58 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x07013C60 - 0x07013C70
-static const Light bbh_seg7_light_07013C60 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013C58 - 0x07013C70
+static const Lights1 bbh_seg7_lights_07013C58 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
-// 0x07013C70 - 0x07013C78
-static const Ambient bbh_seg7_light_07013C70 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07013C78 - 0x07013C88
-static const Light bbh_seg7_light_07013C78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013C70 - 0x07013C88
+static const Lights1 bbh_seg7_lights_07013C70 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013C88 - 0x07013D08
static const Vtx bbh_seg7_vertex_07013C88[] = {
@@ -329,13 +321,13 @@ static const Gfx bbh_seg7_dl_07014B28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07013C60, 1),
- gsSPLight(&bbh_seg7_light_07013C58, 2),
+ gsSPLight(&bbh_seg7_lights_07013C58.l, 1),
+ gsSPLight(&bbh_seg7_lights_07013C58.a, 2),
gsSPVertex(bbh_seg7_vertex_07013C88, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_07013C78, 1),
- gsSPLight(&bbh_seg7_light_07013C70, 2),
+ gsSPLight(&bbh_seg7_lights_07013C70.l, 1),
+ gsSPLight(&bbh_seg7_lights_07013C70.a, 2),
gsSPVertex(bbh_seg7_vertex_07013D08, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -348,8 +340,8 @@ static const Gfx bbh_seg7_dl_07014BC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07013C60, 1),
- gsSPLight(&bbh_seg7_light_07013C58, 2),
+ gsSPLight(&bbh_seg7_lights_07013C58.l, 1),
+ gsSPLight(&bbh_seg7_lights_07013C58.a, 2),
gsSPVertex(bbh_seg7_vertex_07013DC8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -360,8 +352,8 @@ static const Gfx bbh_seg7_dl_07014C10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07013C78, 1),
- gsSPLight(&bbh_seg7_light_07013C70, 2),
+ gsSPLight(&bbh_seg7_lights_07013C70.l, 1),
+ gsSPLight(&bbh_seg7_lights_07013C70.a, 2),
gsSPVertex(bbh_seg7_vertex_07013E08, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/areas/1/28/model.inc.c b/levels/bbh/areas/1/28/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07015A90 - 0x07015A98
-static const Ambient bbh_seg7_light_07015A90 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07015A98 - 0x07015AA8
-static const Light bbh_seg7_light_07015A98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07015A90 - 0x07015AA8
+static const Lights1 bbh_seg7_lights_07015A90 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07015AA8 - 0x07015B98
static const Vtx bbh_seg7_vertex_07015AA8[] = {
@@ -398,8 +394,8 @@ static const Gfx bbh_seg7_dl_07016D38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07015A98, 1),
- gsSPLight(&bbh_seg7_light_07015A90, 2),
+ gsSPLight(&bbh_seg7_lights_07015A90.l, 1),
+ gsSPLight(&bbh_seg7_lights_07015A90.a, 2),
gsSPVertex(bbh_seg7_vertex_07015AA8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/29/model.inc.c b/levels/bbh/areas/1/29/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07017480 - 0x07017488
-static const Ambient bbh_seg7_light_07017480 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07017488 - 0x07017498
-static const Light bbh_seg7_light_07017488 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07017480 - 0x07017498
+static const Lights1 bbh_seg7_lights_07017480 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07017498 - 0x07017518
static const Vtx bbh_seg7_vertex_07017498[] = {
@@ -25,8 +21,8 @@ static const Gfx bbh_seg7_dl_07017518[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07017488, 1),
- gsSPLight(&bbh_seg7_light_07017480, 2),
+ gsSPLight(&bbh_seg7_lights_07017480.l, 1),
+ gsSPLight(&bbh_seg7_lights_07017480.a, 2),
gsSPVertex(bbh_seg7_vertex_07017498, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/bbh/areas/1/3/model.inc.c b/levels/bbh/areas/1/3/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070079B0 - 0x070079B8
-static const Ambient bbh_seg7_light_070079B0 = {
- {{0x3f, 0x51, 0x66}, 0, {0x3f, 0x51, 0x66}, 0}
-};
-
-// 0x070079B8 - 0x070079C8
-static const Light bbh_seg7_light_070079B8 = {
- {{0x9e, 0xcc, 0xff}, 0, {0x9e, 0xcc, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070079B0 - 0x070079C8
+static const Lights1 bbh_seg7_lights_070079B0 = gdSPDefLights1(
+ 0x3f, 0x51, 0x66,
+ 0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28
+);
-// 0x070079C8 - 0x070079D0
-static const Ambient bbh_seg7_light_070079C8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070079D0 - 0x070079E0
-static const Light bbh_seg7_light_070079D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070079C8 - 0x070079E0
+static const Lights1 bbh_seg7_lights_070079C8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070079E0 - 0x07007AA0
static const Vtx bbh_seg7_vertex_070079E0[] = {
@@ -47,8 +39,8 @@ static const Gfx bbh_seg7_dl_07007AE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_070079B8, 1),
- gsSPLight(&bbh_seg7_light_070079B0, 2),
+ gsSPLight(&bbh_seg7_lights_070079B0.l, 1),
+ gsSPLight(&bbh_seg7_lights_070079B0.a, 2),
gsSPVertex(bbh_seg7_vertex_070079E0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -61,8 +53,8 @@ static const Gfx bbh_seg7_dl_07007B48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_070079D0, 1),
- gsSPLight(&bbh_seg7_light_070079C8, 2),
+ gsSPLight(&bbh_seg7_lights_070079C8.l, 1),
+ gsSPLight(&bbh_seg7_lights_070079C8.a, 2),
gsSPVertex(bbh_seg7_vertex_07007AA0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/areas/1/31/model.inc.c b/levels/bbh/areas/1/31/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070177F8 - 0x07017800
-static const Ambient bbh_seg7_light_070177F8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07017800 - 0x07017810
-static const Light bbh_seg7_light_07017800 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017810 - 0x07017818
-static const Ambient bbh_seg7_light_07017810 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07017818 - 0x07017828
-static const Light bbh_seg7_light_07017818 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070177F8 - 0x07017810
+static const Lights1 bbh_seg7_lights_070177F8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07017810 - 0x07017828
+static const Lights1 bbh_seg7_lights_07017810 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07017828 - 0x07017918
static const Vtx bbh_seg7_vertex_07017828[] = {
@@ -631,8 +623,8 @@ static const Gfx bbh_seg7_dl_070195A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07017800, 1),
- gsSPLight(&bbh_seg7_light_070177F8, 2),
+ gsSPLight(&bbh_seg7_lights_070177F8.l, 1),
+ gsSPLight(&bbh_seg7_lights_070177F8.a, 2),
gsSPVertex(bbh_seg7_vertex_07017828, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -844,8 +836,8 @@ static const Gfx bbh_seg7_dl_07019E60[] = {
// 0x07019EA8 - 0x07019EF8
static const Gfx bbh_seg7_dl_07019EA8[] = {
- gsSPLight(&bbh_seg7_light_07017818, 1),
- gsSPLight(&bbh_seg7_light_07017810, 2),
+ gsSPLight(&bbh_seg7_lights_07017810.l, 1),
+ gsSPLight(&bbh_seg7_lights_07017810.a, 2),
gsSPVertex(bbh_seg7_vertex_07019508, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 1, 5, 0x0, 6, 7, 2, 0x0),
diff --git a/levels/bbh/areas/1/33/model.inc.c b/levels/bbh/areas/1/33/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0701A0F0 - 0x0701A0F8
-static const Ambient bbh_seg7_light_0701A0F0 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x0701A0F8 - 0x0701A108
-static const Light bbh_seg7_light_0701A0F8 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A0F0 - 0x0701A108
+static const Lights1 bbh_seg7_lights_0701A0F0 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
-// 0x0701A108 - 0x0701A110
-static const Ambient bbh_seg7_light_0701A108 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701A110 - 0x0701A120
-static const Light bbh_seg7_light_0701A110 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A108 - 0x0701A120
+static const Lights1 bbh_seg7_lights_0701A108 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701A120 - 0x0701A160
static const Vtx bbh_seg7_vertex_0701A120[] = {
@@ -127,8 +119,8 @@ static const Gfx bbh_seg7_dl_0701A620[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701A0F8, 1),
- gsSPLight(&bbh_seg7_light_0701A0F0, 2),
+ gsSPLight(&bbh_seg7_lights_0701A0F0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701A0F0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701A120, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -139,8 +131,8 @@ static const Gfx bbh_seg7_dl_0701A668[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701A110, 1),
- gsSPLight(&bbh_seg7_light_0701A108, 2),
+ gsSPLight(&bbh_seg7_lights_0701A108.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701A108.a, 2),
gsSPVertex(bbh_seg7_vertex_0701A160, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/34/model.inc.c b/levels/bbh/areas/1/34/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0701A920 - 0x0701A928
-static const Ambient bbh_seg7_light_0701A920 = {
- {{0x10, 0x11, 0x16}, 0, {0x10, 0x11, 0x16}, 0}
-};
+// 0x0701A920 - 0x0701A938
+static const Lights1 bbh_seg7_lights_0701A920 = gdSPDefLights1(
+ 0x10, 0x11, 0x16,
+ 0x2a, 0x2c, 0x37, 0x28, 0x28, 0x28
+);
-// 0x0701A928 - 0x0701A938
-static const Light bbh_seg7_light_0701A928 = {
- {{0x2a, 0x2c, 0x37}, 0, {0x2a, 0x2c, 0x37}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A938 - 0x0701A950
+static const Lights1 bbh_seg7_lights_0701A938 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
-// 0x0701A938 - 0x0701A940
-static const Ambient bbh_seg7_light_0701A938 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x0701A940 - 0x0701A950
-static const Light bbh_seg7_light_0701A940 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701A950 - 0x0701A958
-static const Ambient bbh_seg7_light_0701A950 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701A958 - 0x0701A968
-static const Light bbh_seg7_light_0701A958 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A950 - 0x0701A968
+static const Lights1 bbh_seg7_lights_0701A950 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701A968 - 0x0701A9C8
static const Vtx bbh_seg7_vertex_0701A968[] = {
@@ -241,8 +229,8 @@ static const Gfx bbh_seg7_dl_0701B328[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701A928, 1),
- gsSPLight(&bbh_seg7_light_0701A920, 2),
+ gsSPLight(&bbh_seg7_lights_0701A920.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701A920.a, 2),
gsSPVertex(bbh_seg7_vertex_0701A968, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 2, 0x0),
@@ -254,12 +242,12 @@ static const Gfx bbh_seg7_dl_0701B380[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701A940, 1),
- gsSPLight(&bbh_seg7_light_0701A938, 2),
+ gsSPLight(&bbh_seg7_lights_0701A938.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701A938.a, 2),
gsSPVertex(bbh_seg7_vertex_0701A9C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&bbh_seg7_light_0701A958, 1),
- gsSPLight(&bbh_seg7_light_0701A950, 2),
+ gsSPLight(&bbh_seg7_lights_0701A950.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701A950.a, 2),
gsSPVertex(bbh_seg7_vertex_0701AA08, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/35/model.inc.c b/levels/bbh/areas/1/35/model.inc.c
@@ -1,72 +1,44 @@
-// 0x0701B7A8 - 0x0701B7B0
-static const Ambient bbh_seg7_light_0701B7A8 = {
- {{0x24, 0x11, 0x0b}, 0, {0x24, 0x11, 0x0b}, 0}
-};
+// 0x0701B7A8 - 0x0701B7C0
+static const Lights1 bbh_seg7_lights_0701B7A8 = gdSPDefLights1(
+ 0x24, 0x11, 0x0b,
+ 0x5a, 0x2c, 0x1d, 0x28, 0x28, 0x28
+);
-// 0x0701B7B0 - 0x0701B7C0
-static const Light bbh_seg7_light_0701B7B0 = {
- {{0x5a, 0x2c, 0x1d}, 0, {0x5a, 0x2c, 0x1d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701B7C0 - 0x0701B7D8
+static const Lights1 bbh_seg7_lights_0701B7C0 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
-// 0x0701B7C0 - 0x0701B7C8
-static const Ambient bbh_seg7_light_0701B7C0 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
+// 0x0701B7D8 - 0x0701B7F0
+static const Lights1 bbh_seg7_lights_0701B7D8 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
-// 0x0701B7C8 - 0x0701B7D8
-static const Light bbh_seg7_light_0701B7C8 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701B7F0 - 0x0701B808
+static const Lights1 bbh_seg7_lights_0701B7F0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0701B7D8 - 0x0701B7E0
-static const Ambient bbh_seg7_light_0701B7D8 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
+// 0x0701B808 - 0x0701B820
+static const Lights1 bbh_seg7_lights_0701B808 = gdSPDefLights1(
+ 0x24, 0x07, 0x00,
+ 0x5a, 0x13, 0x00, 0x28, 0x28, 0x28
+);
-// 0x0701B7E0 - 0x0701B7F0
-static const Light bbh_seg7_light_0701B7E0 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701B820 - 0x0701B838
+static const Lights1 bbh_seg7_lights_0701B820 = gdSPDefLights1(
+ 0x44, 0x1c, 0x0c,
+ 0xaa, 0x46, 0x1e, 0x28, 0x28, 0x28
+);
-// 0x0701B7F0 - 0x0701B7F8
-static const Ambient bbh_seg7_light_0701B7F0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701B7F8 - 0x0701B808
-static const Light bbh_seg7_light_0701B7F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701B808 - 0x0701B810
-static const Ambient bbh_seg7_light_0701B808 = {
- {{0x24, 0x07, 0x00}, 0, {0x24, 0x07, 0x00}, 0}
-};
-
-// 0x0701B810 - 0x0701B820
-static const Light bbh_seg7_light_0701B810 = {
- {{0x5a, 0x13, 0x00}, 0, {0x5a, 0x13, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701B820 - 0x0701B828
-static const Ambient bbh_seg7_light_0701B820 = {
- {{0x44, 0x1c, 0x0c}, 0, {0x44, 0x1c, 0x0c}, 0}
-};
-
-// 0x0701B828 - 0x0701B838
-static const Light bbh_seg7_light_0701B828 = {
- {{0xaa, 0x46, 0x1e}, 0, {0xaa, 0x46, 0x1e}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701B838 - 0x0701B840
-static const Ambient bbh_seg7_light_0701B838 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0701B840 - 0x0701B850
-static const Light bbh_seg7_light_0701B840 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701B838 - 0x0701B850
+static const Lights1 bbh_seg7_lights_0701B838 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0701B850 - 0x0701B940
static const Vtx bbh_seg7_vertex_0701B850[] = {
@@ -764,8 +736,8 @@ static const Gfx bbh_seg7_dl_0701D9C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7B0, 1),
- gsSPLight(&bbh_seg7_light_0701B7A8, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7A8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7A8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701B850, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -782,8 +754,8 @@ static const Gfx bbh_seg7_dl_0701DA50[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7C8, 1),
- gsSPLight(&bbh_seg7_light_0701B7C0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7C0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7C0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701B9B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 8, 9, 0x0),
@@ -803,15 +775,15 @@ static const Gfx bbh_seg7_dl_0701DB20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7E0, 1),
- gsSPLight(&bbh_seg7_light_0701B7D8, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7D8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7D8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701BAF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&bbh_seg7_light_0701B7F8, 1),
- gsSPLight(&bbh_seg7_light_0701B7F0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701BBF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -825,15 +797,15 @@ static const Gfx bbh_seg7_dl_0701DBF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7B0, 1),
- gsSPLight(&bbh_seg7_light_0701B7A8, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7A8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7A8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701BCF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(12, 14, 13, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&bbh_seg7_light_0701B810, 1),
- gsSPLight(&bbh_seg7_light_0701B808, 2),
+ gsSPLight(&bbh_seg7_lights_0701B808.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B808.a, 2),
gsSPVertex(bbh_seg7_vertex_0701BDF0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -879,8 +851,8 @@ static const Gfx bbh_seg7_dl_0701DBF0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),
- gsSPLight(&bbh_seg7_light_0701B7F8, 1),
- gsSPLight(&bbh_seg7_light_0701B7F0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701C730, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -890,8 +862,8 @@ static const Gfx bbh_seg7_dl_0701DBF0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 2, 10, 0x0),
- gsSPLight(&bbh_seg7_light_0701B828, 1),
- gsSPLight(&bbh_seg7_light_0701B820, 2),
+ gsSPLight(&bbh_seg7_lights_0701B820.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B820.a, 2),
gsSPVertex(bbh_seg7_vertex_0701C8D0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -904,8 +876,8 @@ static const Gfx bbh_seg7_dl_0701DFA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7C8, 1),
- gsSPLight(&bbh_seg7_light_0701B7C0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7C0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7C0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701C990, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -948,8 +920,8 @@ static const Gfx bbh_seg7_dl_0701E188[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7F8, 1),
- gsSPLight(&bbh_seg7_light_0701B7F0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701D030, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 3, 8, 0x0),
@@ -964,13 +936,13 @@ static const Gfx bbh_seg7_dl_0701E210[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701B7E0, 1),
- gsSPLight(&bbh_seg7_light_0701B7D8, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7D8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7D8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701D130, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_0701B7F8, 1),
- gsSPLight(&bbh_seg7_light_0701B7F0, 2),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B7F0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701D1B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 3, 9, 4, 0x0),
@@ -1024,8 +996,8 @@ static const Gfx bbh_seg7_dl_0701E430[] = {
// 0x0701E4B0 - 0x0701E4E0
static const Gfx bbh_seg7_dl_0701E4B0[] = {
- gsSPLight(&bbh_seg7_light_0701B840, 1),
- gsSPLight(&bbh_seg7_light_0701B838, 2),
+ gsSPLight(&bbh_seg7_lights_0701B838.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701B838.a, 2),
gsSPVertex(bbh_seg7_vertex_0701D980, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/areas/1/36/model.inc.c b/levels/bbh/areas/1/36/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701E5D8 - 0x0701E5E0
-static const Ambient bbh_seg7_light_0701E5D8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0701E5E0 - 0x0701E5F0
-static const Light bbh_seg7_light_0701E5E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701E5D8 - 0x0701E5F0
+static const Lights1 bbh_seg7_lights_0701E5D8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701E5F0 - 0x0701E6E0
static const Vtx bbh_seg7_vertex_0701E5F0[] = {
@@ -59,8 +55,8 @@ static const Gfx bbh_seg7_dl_0701E810[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701E5E0, 1),
- gsSPLight(&bbh_seg7_light_0701E5D8, 2),
+ gsSPLight(&bbh_seg7_lights_0701E5D8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701E5D8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701E5F0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/37/model.inc.c b/levels/bbh/areas/1/37/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0701E948 - 0x0701E950
-static const Ambient bbh_seg7_light_0701E948 = {
- {{0x24, 0x11, 0x0b}, 0, {0x24, 0x11, 0x0b}, 0}
-};
-
-// 0x0701E950 - 0x0701E960
-static const Light bbh_seg7_light_0701E950 = {
- {{0x5a, 0x2c, 0x1d}, 0, {0x5a, 0x2c, 0x1d}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701E948 - 0x0701E960
+static const Lights1 bbh_seg7_lights_0701E948 = gdSPDefLights1(
+ 0x24, 0x11, 0x0b,
+ 0x5a, 0x2c, 0x1d, 0x28, 0x28, 0x28
+);
-// 0x0701E960 - 0x0701E968
-static const Ambient bbh_seg7_light_0701E960 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x0701E968 - 0x0701E978
-static const Light bbh_seg7_light_0701E968 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701E960 - 0x0701E978
+static const Lights1 bbh_seg7_lights_0701E960 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
// 0x0701E978 - 0x0701E9F8
static const Vtx bbh_seg7_vertex_0701E978[] = {
@@ -81,13 +73,13 @@ static const Gfx bbh_seg7_dl_0701EC18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701E950, 1),
- gsSPLight(&bbh_seg7_light_0701E948, 2),
+ gsSPLight(&bbh_seg7_lights_0701E948.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701E948.a, 2),
gsSPVertex(bbh_seg7_vertex_0701E978, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bbh_seg7_light_0701E968, 1),
- gsSPLight(&bbh_seg7_light_0701E960, 2),
+ gsSPLight(&bbh_seg7_lights_0701E960.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701E960.a, 2),
gsSPVertex(bbh_seg7_vertex_0701E9F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/7/model.inc.c b/levels/bbh/areas/1/7/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07008F18 - 0x07008F20
-static const Ambient bbh_seg7_light_07008F18 = {
- {{0x20, 0x20, 0x20}, 0, {0x20, 0x20, 0x20}, 0}
-};
-
-// 0x07008F20 - 0x07008F30
-static const Light bbh_seg7_light_07008F20 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07008F30 - 0x07008F38
-static const Ambient bbh_seg7_light_07008F30 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x07008F38 - 0x07008F48
-static const Light bbh_seg7_light_07008F38 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07008F48 - 0x07008F50
-static const Ambient bbh_seg7_light_07008F48 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07008F50 - 0x07008F60
-static const Light bbh_seg7_light_07008F50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07008F18 - 0x07008F30
+static const Lights1 bbh_seg7_lights_07008F18 = gdSPDefLights1(
+ 0x20, 0x20, 0x20,
+ 0x50, 0x50, 0x50, 0x28, 0x28, 0x28
+);
+
+// 0x07008F30 - 0x07008F48
+static const Lights1 bbh_seg7_lights_07008F30 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
+
+// 0x07008F48 - 0x07008F60
+static const Lights1 bbh_seg7_lights_07008F48 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07008F60 - 0x07008FE0
static const Vtx bbh_seg7_vertex_07008F60[] = {
@@ -543,21 +531,21 @@ static const Gfx bbh_seg7_dl_0700A800[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07008F20, 1),
- gsSPLight(&bbh_seg7_light_07008F18, 2),
+ gsSPLight(&bbh_seg7_lights_07008F18.l, 1),
+ gsSPLight(&bbh_seg7_lights_07008F18.a, 2),
gsSPVertex(bbh_seg7_vertex_07008F60, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&bbh_seg7_light_07008F38, 1),
- gsSPLight(&bbh_seg7_light_07008F30, 2),
+ gsSPLight(&bbh_seg7_lights_07008F30.l, 1),
+ gsSPLight(&bbh_seg7_lights_07008F30.a, 2),
gsSPVertex(bbh_seg7_vertex_07008FE0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 4, 0x0),
gsSP2Triangles( 9, 10, 8, 0x0, 10, 0, 8, 0x0),
gsSP2Triangles( 0, 2, 11, 0x0, 12, 5, 13, 0x0),
gsSP2Triangles( 7, 14, 8, 0x0, 12, 13, 15, 0x0),
- gsSPLight(&bbh_seg7_light_07008F50, 1),
- gsSPLight(&bbh_seg7_light_07008F48, 2),
+ gsSPLight(&bbh_seg7_lights_07008F48.l, 1),
+ gsSPLight(&bbh_seg7_lights_07008F48.a, 2),
gsSPVertex(bbh_seg7_vertex_070090E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bbh/areas/1/8/model.inc.c b/levels/bbh/areas/1/8/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B0D8 - 0x0700B0E0
-static const Ambient bbh_seg7_light_0700B0D8 = {
- {{0x3f, 0x51, 0x66}, 0, {0x3f, 0x51, 0x66}, 0}
-};
-
-// 0x0700B0E0 - 0x0700B0F0
-static const Light bbh_seg7_light_0700B0E0 = {
- {{0x9e, 0xcc, 0xff}, 0, {0x9e, 0xcc, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B0D8 - 0x0700B0F0
+static const Lights1 bbh_seg7_lights_0700B0D8 = gdSPDefLights1(
+ 0x3f, 0x51, 0x66,
+ 0x9e, 0xcc, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700B0F0 - 0x0700B170
static const Vtx bbh_seg7_vertex_0700B0F0[] = {
@@ -25,8 +21,8 @@ static const Gfx bbh_seg7_dl_0700B170[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0700B0E0, 1),
- gsSPLight(&bbh_seg7_light_0700B0D8, 2),
+ gsSPLight(&bbh_seg7_lights_0700B0D8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0700B0D8.a, 2),
gsSPVertex(bbh_seg7_vertex_0700B0F0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/bbh/areas/1/macro.inc.c b/levels/bbh/areas/1/macro.inc.c
@@ -1,8 +1,8 @@
// 0x070268C4 - 0x07026A1A
const MacroObject bbh_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_haunted_chair, /*yaw*/ 90, /*pos*/ -1960, -20, 340),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -800, -204, 2915, /*behParam*/ 63),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 400, -204, 3057, /*behParam*/ 85),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -800, -204, 2915, /*behParam*/ DIALOG_063),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 400, -204, 3057, /*behParam*/ DIALOG_085),
MACRO_OBJECT(/*preset*/ macro_haunted_chair, /*yaw*/ 270, /*pos*/ -1080, 20, 160),
MACRO_OBJECT(/*preset*/ macro_box_vanish_cap, /*yaw*/ 0, /*pos*/ 1268, 1050, 1860),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -1164, 0, 2325),
@@ -19,12 +19,12 @@ const MacroObject bbh_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin, /*yaw*/ 0, /*pos*/ 1700, 1840, 1100),
MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin, /*yaw*/ 0, /*pos*/ 0, 1840, 1100),
MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin, /*yaw*/ 0, /*pos*/ -400, 1840, 1100),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2026, -204, 2966, /*behParam*/ 102),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2026, -204, 2966, /*behParam*/ DIALOG_102),
MACRO_OBJECT(/*preset*/ macro_mr_i, /*yaw*/ 0, /*pos*/ 480, 10, -653),
MACRO_OBJECT(/*preset*/ macro_scuttlebug, /*yaw*/ 0, /*pos*/ -346, -204, -2813),
MACRO_OBJECT(/*preset*/ macro_scuttlebug, /*yaw*/ 0, /*pos*/ 1146, -203, -2280),
MACRO_OBJECT(/*preset*/ macro_mr_i, /*yaw*/ 0, /*pos*/ -2369, -204, 5184),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -1546, -204, 4813, /*behParam*/ 86),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -1546, -204, 4813, /*behParam*/ DIALOG_086),
MACRO_OBJECT(/*preset*/ macro_scuttlebug, /*yaw*/ 0, /*pos*/ 3466, -204, 5106),
MACRO_OBJECT(/*preset*/ macro_mr_i, /*yaw*/ 0, /*pos*/ 1640, 840, -733),
MACRO_OBJECT(/*preset*/ macro_box_vanish_cap, /*yaw*/ 0, /*pos*/ -1960, 300, -120),
diff --git a/levels/bbh/coffin/model.inc.c b/levels/bbh/coffin/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07020368 - 0x07020370
-static const Ambient bbh_seg7_light_07020368 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07020370 - 0x07020380
-static const Light bbh_seg7_light_07020370 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07020368 - 0x07020380
+static const Lights1 bbh_seg7_lights_07020368 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07020380 - 0x07020480
static const Vtx bbh_seg7_vertex_07020380[] = {
@@ -65,8 +61,8 @@ static const Gfx bbh_seg7_dl_070205C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bbh_seg7_texture_07004400),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07020370, 1),
- gsSPLight(&bbh_seg7_light_07020368, 2),
+ gsSPLight(&bbh_seg7_lights_07020368.l, 1),
+ gsSPLight(&bbh_seg7_lights_07020368.a, 2),
gsSPVertex(bbh_seg7_vertex_07020380, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/bbh/leveldata.c b/levels/bbh/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/bbh/texture.inc.c"
diff --git a/levels/bbh/merry_go_round/model.inc.c b/levels/bbh/merry_go_round/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07020058 - 0x07020060
-static const Ambient bbh_seg7_light_07020058 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07020060 - 0x07020070
-static const Light bbh_seg7_light_07020060 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07020058 - 0x07020070
+static const Lights1 bbh_seg7_lights_07020058 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07020070 - 0x07020130
static const Vtx bbh_seg7_vertex_07020070[] = {
@@ -49,8 +45,8 @@ static const Gfx bbh_seg7_dl_07020230[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_07020060, 1),
- gsSPLight(&bbh_seg7_light_07020058, 2),
+ gsSPLight(&bbh_seg7_lights_07020058.l, 1),
+ gsSPLight(&bbh_seg7_lights_07020058.a, 2),
gsSPVertex(bbh_seg7_vertex_07020070, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/bbh/moving_bookshelf/model.inc.c b/levels/bbh/moving_bookshelf/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701FB20 - 0x0701FB28
-static const Ambient bbh_seg7_light_0701FB20 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701FB28 - 0x0701FB38
-static const Light bbh_seg7_light_0701FB28 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701FB20 - 0x0701FB38
+static const Lights1 bbh_seg7_lights_0701FB20 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701FB38 - 0x0701FB78
static const Vtx bbh_seg7_vertex_0701FB38[] = {
@@ -41,8 +37,8 @@ static const Gfx bbh_seg7_dl_0701FC78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701FB28, 1),
- gsSPLight(&bbh_seg7_light_0701FB20, 2),
+ gsSPLight(&bbh_seg7_lights_0701FB20.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701FB20.a, 2),
gsSPVertex(bbh_seg7_vertex_0701FB38, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/script.c b/levels/bbh/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -107,13 +108,13 @@ const LevelScript level_bbh_entry[] = {
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_4),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 666, 796, 5350, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x04, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x1A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x1A, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BBH, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bbh_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ bbh_seg7_macro_objs),
ROOMS(/*surfaceRooms*/ bbh_seg7_rooms),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x62),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_098),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0006, /*seq*/ SEQ_LEVEL_SPOOKY),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_SPOOKY),
END_AREA(),
diff --git a/levels/bbh/staircase_step/model.inc.c b/levels/bbh/staircase_step/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701F0E0 - 0x0701F0E8
-static const Ambient bbh_seg7_light_0701F0E0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701F0E8 - 0x0701F0F8
-static const Light bbh_seg7_light_0701F0E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701F0E0 - 0x0701F0F8
+static const Lights1 bbh_seg7_lights_0701F0E0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701F0F8 - 0x0701F138
static const Vtx bbh_seg7_vertex_0701F0F8[] = {
@@ -41,8 +37,8 @@ static const Gfx bbh_seg7_dl_0701F238[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701F0E8, 1),
- gsSPLight(&bbh_seg7_light_0701F0E0, 2),
+ gsSPLight(&bbh_seg7_lights_0701F0E0.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701F0E0.a, 2),
gsSPVertex(bbh_seg7_vertex_0701F0F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/tilting_trap_platform/model.inc.c b/levels/bbh/tilting_trap_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701F378 - 0x0701F380
-static const Ambient bbh_seg7_light_0701F378 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701F380 - 0x0701F390
-static const Light bbh_seg7_light_0701F380 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701F378 - 0x0701F390
+static const Lights1 bbh_seg7_lights_0701F378 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701F390 - 0x0701F3D0
static const Vtx bbh_seg7_vertex_0701F390[] = {
@@ -49,8 +45,8 @@ static const Gfx bbh_seg7_dl_0701F510[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701F380, 1),
- gsSPLight(&bbh_seg7_light_0701F378, 2),
+ gsSPLight(&bbh_seg7_lights_0701F378.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701F378.a, 2),
gsSPVertex(bbh_seg7_vertex_0701F390, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bbh/tumbling_platform_far/model.inc.c b/levels/bbh/tumbling_platform_far/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701F6A8 - 0x0701F6B0
-static const Ambient bbh_seg7_light_0701F6A8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701F6B0 - 0x0701F6C0
-static const Light bbh_seg7_light_0701F6B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701F6A8 - 0x0701F6C0
+static const Lights1 bbh_seg7_lights_0701F6A8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701F6C0 - 0x0701F780
static const Vtx bbh_seg7_vertex_0701F6C0[] = {
@@ -29,8 +25,8 @@ static const Gfx bbh_seg7_dl_0701F780[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701F6B0, 1),
- gsSPLight(&bbh_seg7_light_0701F6A8, 2),
+ gsSPLight(&bbh_seg7_lights_0701F6A8.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701F6A8.a, 2),
gsSPVertex(bbh_seg7_vertex_0701F6C0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/bbh/tumbling_platform_near/model.inc.c b/levels/bbh/tumbling_platform_near/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701F858 - 0x0701F860
-static const Ambient bbh_seg7_light_0701F858 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0701F860 - 0x0701F870
-static const Light bbh_seg7_light_0701F860 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701F858 - 0x0701F870
+static const Lights1 bbh_seg7_lights_0701F858 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701F870 - 0x0701F960
static const Vtx bbh_seg7_vertex_0701F870[] = {
@@ -47,8 +43,8 @@ static const Gfx bbh_seg7_dl_0701FA10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, spooky_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bbh_seg7_light_0701F860, 1),
- gsSPLight(&bbh_seg7_light_0701F858, 2),
+ gsSPLight(&bbh_seg7_lights_0701F858.l, 1),
+ gsSPLight(&bbh_seg7_lights_0701F858.a, 2),
gsSPVertex(bbh_seg7_vertex_0701F870, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bitdw/areas/1/macro.inc.c b/levels/bitdw/areas/1/macro.inc.c
@@ -46,7 +46,7 @@ const MacroObject bitdw_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -6475, 125, 890),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -7810, -3100, 4900),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 1500, 1066, -166),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5940, 2765, -280, /*behParam*/ 66),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5940, 2765, -280, /*behParam*/ DIALOG_066),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -2357, 1400, -2454),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -170, 1070, 500),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1450, 1400, 500),
diff --git a/levels/bitdw/ferris_wheel_axle/model.inc.c b/levels/bitdw/ferris_wheel_axle/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B4F0 - 0x0700B4F8
-static const Ambient bitdw_seg7_light_0700B4F0 = {
- {{0x39, 0x6f, 0x5d}, 0, {0x39, 0x6f, 0x5d}, 0}
-};
-
-// 0x0700B4F8 - 0x0700B508
-static const Light bitdw_seg7_light_0700B4F8 = {
- {{0x79, 0xeb, 0xc5}, 0, {0x79, 0xeb, 0xc5}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B4F0 - 0x0700B508
+static const Lights1 bitdw_seg7_lights_0700B4F0 = gdSPDefLights1(
+ 0x39, 0x6f, 0x5d,
+ 0x79, 0xeb, 0xc5, 0x28, 0x28, 0x28
+);
// 0x0700B508 - 0x0700B5F8
static const Vtx bitdw_seg7_vertex_0700B508[] = {
@@ -77,8 +73,8 @@ static const Gfx bitdw_seg7_dl_0700B808[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bitdw_seg7_light_0700B4F8, 1),
- gsSPLight(&bitdw_seg7_light_0700B4F0, 2),
+ gsSPLight(&bitdw_seg7_lights_0700B4F0.l, 1),
+ gsSPLight(&bitdw_seg7_lights_0700B4F0.a, 2),
gsSPVertex(bitdw_seg7_vertex_0700B508, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/bitdw/leveldata.c b/levels/bitdw/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/bitdw/texture.inc.c"
diff --git a/levels/bitdw/script.c b/levels/bitdw/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -89,16 +90,16 @@ const LevelScript level_bitdw_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7443, -2153, 3886, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_BITDW_WARP_PIPE, /*pos*/ 6816, 2860, -7, /*angle*/ 0, 0, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5910, 3500, -7, /*angle*/ 0, 90, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvWarps70),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x11, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x1E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x11, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x25, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x25, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
TERRAIN(/*terrainData*/ bitdw_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ bitdw_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x5A),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_090),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_KOOPA_ROAD),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
diff --git a/levels/bitfs/areas/1/18/model.inc.c b/levels/bitfs/areas/1/18/model.inc.c
@@ -1,62 +1,38 @@
-// 0x0700C430 - 0x0700C438
-static const Ambient bitfs_seg7_light_0700C430 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x0700C438 - 0x0700C448
-static const Light bitfs_seg7_light_0700C438 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C448 - 0x0700C450
-static const Ambient bitfs_seg7_light_0700C448 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0}
-};
-
-// 0x0700C450 - 0x0700C460
-static const Light bitfs_seg7_light_0700C450 = {
- {{0xc8, 0xc8, 0xc8}, 0, {0xc8, 0xc8, 0xc8}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C460 - 0x0700C468
-static const Ambient bitfs_seg7_light_0700C460 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700C468 - 0x0700C478
-static const Light bitfs_seg7_light_0700C468 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C478 - 0x0700C480
-static const Ambient bitfs_seg7_light_0700C478 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// 0x0700C480 - 0x0700C490
-static const Light bitfs_seg7_light_0700C480 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C490 - 0x0700C498
-static const Ambient bitfs_seg7_light_0700C490 = {
- {{0x62, 0x7f, 0x7f}, 0, {0x62, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700C498 - 0x0700C4A8
-static const Light bitfs_seg7_light_0700C498 = {
- {{0xc4, 0xff, 0xff}, 0, {0xc4, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C4A8 - 0x0700C4B0
-static const Ambient bitfs_seg7_light_0700C4A8 = {
- {{0x32, 0x7f, 0x59}, 0, {0x32, 0x7f, 0x59}, 0}
-};
-
-// 0x0700C4B0 - 0x0700C4C0
-static const Light bitfs_seg7_light_0700C4B0 = {
- {{0x65, 0xff, 0xb2}, 0, {0x65, 0xff, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C430 - 0x0700C448
+static const Lights1 bitfs_seg7_lights_0700C430 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x0700C448 - 0x0700C460
+static const Lights1 bitfs_seg7_lights_0700C448 = gdSPDefLights1(
+ 0x64, 0x64, 0x64,
+ 0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28
+);
+
+// 0x0700C460 - 0x0700C478
+static const Lights1 bitfs_seg7_lights_0700C460 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700C478 - 0x0700C490
+static const Lights1 bitfs_seg7_lights_0700C478 = gdSPDefLights1(
+ 0x32, 0x32, 0x32,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
+
+// 0x0700C490 - 0x0700C4A8
+static const Lights1 bitfs_seg7_lights_0700C490 = gdSPDefLights1(
+ 0x62, 0x7f, 0x7f,
+ 0xc4, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700C4A8 - 0x0700C4C0
+static const Lights1 bitfs_seg7_lights_0700C4A8 = gdSPDefLights1(
+ 0x32, 0x7f, 0x59,
+ 0x65, 0xff, 0xb2, 0x28, 0x28, 0x28
+);
// 0x0700C4C0 - 0x0700C540
static const Vtx bitfs_seg7_vertex_0700C4C0[] = {
@@ -717,21 +693,21 @@ static const Gfx bitfs_seg7_dl_0700E460[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bitfs_seg7_light_0700C438, 1),
- gsSPLight(&bitfs_seg7_light_0700C430, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C430.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C430.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700C4C0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&bitfs_seg7_light_0700C450, 1),
- gsSPLight(&bitfs_seg7_light_0700C448, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C448.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C448.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700C540, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&bitfs_seg7_light_0700C468, 1),
- gsSPLight(&bitfs_seg7_light_0700C460, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C460.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C460.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700C580, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&bitfs_seg7_light_0700C480, 1),
- gsSPLight(&bitfs_seg7_light_0700C478, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C478.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C478.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700C5C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -742,8 +718,8 @@ static const Gfx bitfs_seg7_dl_0700E530[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bitfs_seg7_light_0700C498, 1),
- gsSPLight(&bitfs_seg7_light_0700C490, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C490.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C490.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700C600, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
@@ -842,8 +818,8 @@ static const Gfx bitfs_seg7_dl_0700E530[] = {
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles( 9, 12, 10, 0x0, 6, 13, 7, 0x0),
gsSP1Triangle( 3, 14, 4, 0x0),
- gsSPLight(&bitfs_seg7_light_0700C4B0, 1),
- gsSPLight(&bitfs_seg7_light_0700C4A8, 2),
+ gsSPLight(&bitfs_seg7_lights_0700C4A8.l, 1),
+ gsSPLight(&bitfs_seg7_lights_0700C4A8.a, 2),
gsSPVertex(bitfs_seg7_vertex_0700DCE0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 0, 2, 9, 0x0),
diff --git a/levels/bitfs/script.c b/levels/bitfs/script.c
@@ -17,8 +17,8 @@
static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_BITFS_PLATFORM_ON_TRACK, /*pos*/ -5733, -3071, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x07330000, /*beh*/ bhvPlatformOnTrack),
- OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -1945, -3225, -715, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsTiltingSquarePlatform),
- OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -2866, -3225, -715, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsTiltingSquarePlatform),
+ OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -1945, -3225, -715, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsTiltingInvertedPyramid),
+ OBJECT(/*model*/ MODEL_BITFS_TILTING_SQUARE_PLATFORM, /*pos*/ -2866, -3225, -715, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsTiltingInvertedPyramid),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ -1381, 3487, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsSinkingPlatforms),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ 1126, -3065, 307, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsSinkingPlatforms),
OBJECT(/*model*/ MODEL_BITFS_SINKING_PLATFORMS, /*pos*/ -3225, 3487, 96, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBitfsSinkingPlatforms),
@@ -103,10 +103,10 @@ const LevelScript level_bitfs_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7577, -1764, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6735, 3681, 99, /*angle*/ 0, 0, 0, /*behParam*/ 0x140B0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5886, 5000, 99, /*angle*/ 0, 90, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvWarps70),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x13, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x21, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x13, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
diff --git a/levels/bits/areas/1/22/model.inc.c b/levels/bits/areas/1/22/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07012DB0 - 0x07012DB8
-static const Ambient bits_seg7_light_07012DB0 = {
- {{0x58, 0x5f, 0x7d}, 0, {0x58, 0x5f, 0x7d}, 0}
-};
+// 0x07012DB0 - 0x07012DC8
+static const Lights1 bits_seg7_lights_07012DB0 = gdSPDefLights1(
+ 0x58, 0x5f, 0x7d,
+ 0xb1, 0xbf, 0xfa, 0x28, 0x28, 0x28
+);
-// 0x07012DB8 - 0x07012DC8
-static const Light bits_seg7_light_07012DB8 = {
- {{0xb1, 0xbf, 0xfa}, 0, {0xb1, 0xbf, 0xfa}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012DC8 - 0x07012DE0
+static const Lights1 bits_seg7_lights_07012DC8 = gdSPDefLights1(
+ 0x4c, 0x46, 0x6c,
+ 0x98, 0x8c, 0xd8, 0x28, 0x28, 0x28
+);
-// 0x07012DC8 - 0x07012DD0
-static const Ambient bits_seg7_light_07012DC8 = {
- {{0x4c, 0x46, 0x6c}, 0, {0x4c, 0x46, 0x6c}, 0}
-};
-
-// 0x07012DD0 - 0x07012DE0
-static const Light bits_seg7_light_07012DD0 = {
- {{0x98, 0x8c, 0xd8}, 0, {0x98, 0x8c, 0xd8}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012DE0 - 0x07012DE8
-static const Ambient bits_seg7_light_07012DE0 = {
- {{0x59, 0x32, 0x7f}, 0, {0x59, 0x32, 0x7f}, 0}
-};
-
-// 0x07012DE8 - 0x07012DF8
-static const Light bits_seg7_light_07012DE8 = {
- {{0xb2, 0x65, 0xff}, 0, {0xb2, 0x65, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012DE0 - 0x07012DF8
+static const Lights1 bits_seg7_lights_07012DE0 = gdSPDefLights1(
+ 0x59, 0x32, 0x7f,
+ 0xb2, 0x65, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012DF8 - 0x07012E78
static const Vtx bits_seg7_vertex_07012DF8[] = {
@@ -153,14 +141,14 @@ static const Gfx bits_seg7_dl_070133B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bits_seg7_light_07012DB8, 1),
- gsSPLight(&bits_seg7_light_07012DB0, 2),
+ gsSPLight(&bits_seg7_lights_07012DB0.l, 1),
+ gsSPLight(&bits_seg7_lights_07012DB0.a, 2),
gsSPVertex(bits_seg7_vertex_07012DF8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 0, 5, 6, 0x0),
gsSP2Triangles( 0, 7, 1, 0x0, 0, 4, 5, 0x0),
- gsSPLight(&bits_seg7_light_07012DD0, 1),
- gsSPLight(&bits_seg7_light_07012DC8, 2),
+ gsSPLight(&bits_seg7_lights_07012DC8.l, 1),
+ gsSPLight(&bits_seg7_lights_07012DC8.a, 2),
gsSPVertex(bits_seg7_vertex_07012E78, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 3, 5, 9, 0x0),
@@ -172,8 +160,8 @@ static const Gfx bits_seg7_dl_070133B8[] = {
gsSPVertex(bits_seg7_vertex_07013058, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
- gsSPLight(&bits_seg7_light_07012DE8, 1),
- gsSPLight(&bits_seg7_light_07012DE0, 2),
+ gsSPLight(&bits_seg7_lights_07012DE0.l, 1),
+ gsSPLight(&bits_seg7_lights_07012DE0.a, 2),
gsSPVertex(bits_seg7_vertex_070130F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bits/areas/1/24/model.inc.c b/levels/bits/areas/1/24/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013890 - 0x07013898
-static const Ambient bits_seg7_light_07013890 = {
- {{0x14, 0x2f, 0x29}, 0, {0x14, 0x2f, 0x29}, 0}
-};
-
-// 0x07013898 - 0x070138A8
-static const Light bits_seg7_light_07013898 = {
- {{0x50, 0xbf, 0xa7}, 0, {0x50, 0xbf, 0xa7}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013890 - 0x070138A8
+static const Lights1 bits_seg7_lights_07013890 = gdSPDefLights1(
+ 0x14, 0x2f, 0x29,
+ 0x50, 0xbf, 0xa7, 0x28, 0x28, 0x28
+);
// 0x070138A8 - 0x07013998
static const Vtx bits_seg7_vertex_070138A8[] = {
@@ -77,8 +73,8 @@ static const Gfx bits_seg7_dl_07013BA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bits_seg7_light_07013898, 1),
- gsSPLight(&bits_seg7_light_07013890, 2),
+ gsSPLight(&bits_seg7_lights_07013890.l, 1),
+ gsSPLight(&bits_seg7_lights_07013890.a, 2),
gsSPVertex(bits_seg7_vertex_070138A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/bits/script.c b/levels/bits/script.c
@@ -93,10 +93,10 @@ const LevelScript level_bits_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7039, -3812, 4, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_BITS_WARP_PIPE, /*pos*/ 351, 6652, -6030, /*angle*/ 0, 0, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 351, 6800, -3900, /*angle*/ 0, 180, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvWarps70),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x15, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x22, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x15, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BITS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_BITS, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6B, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ bits_seg7_collision_level),
diff --git a/levels/bob/areas/1/1/model.inc.c b/levels/bob/areas/1/1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07002800 - 0x07002808
-static const Ambient bob_seg7_light_07002800 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07002808 - 0x07002818
-static const Light bob_seg7_light_07002808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002800 - 0x07002818
+static const Lights1 bob_seg7_lights_07002800 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002818 - 0x07002908
static const Vtx bob_seg7_vertex_07002818[] = {
@@ -434,8 +430,8 @@ static const Gfx bob_seg7_dl_07003CA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_07002808, 1),
- gsSPLight(&bob_seg7_light_07002800, 2),
+ gsSPLight(&bob_seg7_lights_07002800.l, 1),
+ gsSPLight(&bob_seg7_lights_07002800.a, 2),
gsSPVertex(bob_seg7_vertex_07002818, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP2Triangles( 3, 0, 2, 0x0, 2, 1, 4, 0x0),
diff --git a/levels/bob/areas/1/2/model.inc.c b/levels/bob/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07004478 - 0x07004480
-static const Ambient bob_seg7_light_07004478 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07004480 - 0x07004490
-static const Light bob_seg7_light_07004480 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004478 - 0x07004490
+static const Lights1 bob_seg7_lights_07004478 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004490 - 0x07004590
static const Vtx bob_seg7_vertex_07004490[] = {
@@ -1455,8 +1451,8 @@ static const Gfx bob_seg7_dl_07008AF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_07004480, 1),
- gsSPLight(&bob_seg7_light_07004478, 2),
+ gsSPLight(&bob_seg7_lights_07004478.l, 1),
+ gsSPLight(&bob_seg7_lights_07004478.a, 2),
gsSPVertex(bob_seg7_vertex_07004490, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/bob/areas/1/5/model.inc.c b/levels/bob/areas/1/5/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700A9E0 - 0x0700A9E8
-static const Ambient bob_seg7_light_0700A9E0 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0700A9E8 - 0x0700A9F8
-static const Light bob_seg7_light_0700A9E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A9E0 - 0x0700A9F8
+static const Lights1 bob_seg7_lights_0700A9E0 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700A9F8 - 0x0700AA00
-static const Ambient bob_seg7_light_0700A9F8 = {
- {{0x14, 0x14, 0x14}, 0, {0x14, 0x14, 0x14}, 0}
-};
-
-// 0x0700AA00 - 0x0700AA10
-static const Light bob_seg7_light_0700AA00 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A9F8 - 0x0700AA10
+static const Lights1 bob_seg7_lights_0700A9F8 = gdSPDefLights1(
+ 0x14, 0x14, 0x14,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
// 0x0700AA10 - 0x0700AAF0
static const Vtx bob_seg7_vertex_0700AA10[] = {
@@ -798,8 +790,8 @@ static const Gfx bob_seg7_dl_0700CFC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_0700A9E8, 1),
- gsSPLight(&bob_seg7_light_0700A9E0, 2),
+ gsSPLight(&bob_seg7_lights_0700A9E0.l, 1),
+ gsSPLight(&bob_seg7_lights_0700A9E0.a, 2),
gsSPVertex(bob_seg7_vertex_0700AA10, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 1, 5, 2, 0x0),
@@ -933,8 +925,8 @@ static const Gfx bob_seg7_dl_0700CFC0[] = {
gsSPVertex(bob_seg7_vertex_0700BF30, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 4, 3, 5, 0x0),
- gsSPLight(&bob_seg7_light_0700AA00, 1),
- gsSPLight(&bob_seg7_light_0700A9F8, 2),
+ gsSPLight(&bob_seg7_lights_0700A9F8.l, 1),
+ gsSPLight(&bob_seg7_lights_0700A9F8.a, 2),
gsSPVertex(bob_seg7_vertex_0700BF90, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -953,8 +945,8 @@ static const Gfx bob_seg7_dl_0700D7D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_0700A9E8, 1),
- gsSPLight(&bob_seg7_light_0700A9E0, 2),
+ gsSPLight(&bob_seg7_lights_0700A9E0.l, 1),
+ gsSPLight(&bob_seg7_lights_0700A9E0.a, 2),
gsSPVertex(bob_seg7_vertex_0700C170, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 5, 6, 3, 0x0),
diff --git a/levels/bob/areas/1/6/model.inc.c b/levels/bob/areas/1/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700DE30 - 0x0700DE38
-static const Ambient bob_seg7_light_0700DE30 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0700DE38 - 0x0700DE48
-static const Light bob_seg7_light_0700DE38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700DE30 - 0x0700DE48
+static const Lights1 bob_seg7_lights_0700DE30 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700DE48 - 0x0700DF38
static const Vtx bob_seg7_vertex_0700DE48[] = {
@@ -87,8 +83,8 @@ static const Gfx bob_seg7_dl_0700E1E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_0700DE38, 1),
- gsSPLight(&bob_seg7_light_0700DE30, 2),
+ gsSPLight(&bob_seg7_lights_0700DE30.l, 1),
+ gsSPLight(&bob_seg7_lights_0700DE30.a, 2),
gsSPVertex(bob_seg7_vertex_0700DE48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 5, 4, 7, 0x0),
diff --git a/levels/bob/areas/1/geo.inc.c b/levels/bob/areas/1/geo.inc.c
@@ -28,7 +28,7 @@ const GeoLayout bob_geo_000488[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/bob/areas/1/macro.inc.c b/levels/bob/areas/1/macro.inc.c
@@ -12,8 +12,8 @@ const MacroObject bob_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_wooden_post, /*yaw*/ 0, /*pos*/ -5500, 768, 1800),
MACRO_OBJECT(/*preset*/ macro_wooden_post, /*yaw*/ 0, /*pos*/ -6500, 768, 3000),
MACRO_OBJECT(/*preset*/ macro_wooden_post, /*yaw*/ 0, /*pos*/ -5500, 768, 3000),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6050, /*behParam*/ 15),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 1230, 768, 3258, /*behParam*/ 8),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6050, /*behParam*/ DIALOG_015),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 1230, 768, 3258, /*behParam*/ DIALOG_008),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ -5018, 1332, -3533, /*behParam*/ 0x00),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 6349, 2080, -7066, /*behParam*/ 0xC0),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 4243, 3071, -2451, /*behParam*/ 0xC0),
@@ -39,7 +39,7 @@ const MacroObject bob_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 4100, 3672, 1629),
MACRO_OBJECT(/*preset*/ macro_box_wing_cap, /*yaw*/ 0, /*pos*/ -6710, 1300, -2170),
MACRO_OBJECT(/*preset*/ macro_breakable_box_small, /*yaw*/ 0, /*pos*/ -3740, 0, 6180),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6300, /*behParam*/ 95),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4000, 0, 6300, /*behParam*/ DIALOG_095),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -6060, 1060, -5340, /*behParam*/ 4),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -5760, 1060, -5340),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -6360, 1060, -5340),
@@ -57,11 +57,11 @@ const MacroObject bob_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ 6060, 877, 2000),
MACRO_OBJECT(/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ -6050, 768, 1250),
MACRO_OBJECT(/*preset*/ macro_box_wing_cap, /*yaw*/ 0, /*pos*/ 400, 350, 6500),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 66, 0, 6977, /*behParam*/ 113),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 3394, 3072, 1846, /*behParam*/ 64),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -3110, 104, 5064, /*behParam*/ 35),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 6860, 2041, -6640, /*behParam*/ 74),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -6020, 768, 2957, /*behParam*/ 104),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 66, 0, 6977, /*behParam*/ DIALOG_113),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 3394, 3072, 1846, /*behParam*/ DIALOG_064),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -3110, 104, 5064, /*behParam*/ DIALOG_035),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 6860, 2041, -6640, /*behParam*/ DIALOG_074),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -6020, 768, 2957, /*behParam*/ DIALOG_104),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 90, /*pos*/ -1506, 5317, 1250),
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ -1506, 5517, 1250),
MACRO_OBJECT(/*preset*/ macro_breakable_box_no_coins, /*yaw*/ 0, /*pos*/ 7157, 2027, -6714),
@@ -73,16 +73,16 @@ const MacroObject bob_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ 3000, 3600, 1250),
MACRO_OBJECT(/*preset*/ macro_bobomb_still, /*yaw*/ 0, /*pos*/ 1127, 2897, -2495),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 120, /*pos*/ 4836, 3079, -2707),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 45, /*pos*/ -3530, 1415, 430, /*behParam*/ 50),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5053, 3073, 2180, /*behParam*/ 53),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 45, /*pos*/ -3530, 1415, 430, /*behParam*/ DIALOG_050),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5053, 3073, 2180, /*behParam*/ DIALOG_053),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1506, 5517, 1250),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1000, 3600, 1250),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 2000, 3600, 1250),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 3000, 3600, 1250),
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ -300, 4200, 1250),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2224, 990, -4359, /*behParam*/ 39),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 60, /*pos*/ 3911, 3529, -7081, /*behParam*/ 112),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -7000, 1024, -2099, /*behParam*/ 32),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2224, 990, -4359, /*behParam*/ DIALOG_039),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 60, /*pos*/ 3911, 3529, -7081, /*behParam*/ DIALOG_112),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -7000, 1024, -2099, /*behParam*/ DIALOG_032),
MACRO_OBJECT(/*preset*/ macro_breakable_box_three_coins, /*yaw*/ 0, /*pos*/ -3979, 0, 6627),
MACRO_OBJECT(/*preset*/ macro_box_star_3, /*yaw*/ 0, /*pos*/ 5540, 3350, 1200),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 90, /*pos*/ -300, 4000, 1250),
diff --git a/levels/bob/leveldata.c b/levels/bob/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/bob/texture.inc.c"
diff --git a/levels/bob/script.c b/levels/bob/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -29,26 +30,26 @@ static const LevelScript script_func_local_2[] = {
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 1535, 3840, -5561, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTtmBowlingBallSpawner, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 524, 2825, -5400, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvBobBowlingBallSpawner, /*acts*/ ACT_1 | ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 524, 2825, -5400, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvTtmBowlingBallSpawner, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
- OBJECT(/*model*/ MODEL_BOWLING_BALL, /*pos*/ -993, 886, -3565, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall),
- OBJECT(/*model*/ MODEL_BOWLING_BALL, /*pos*/ -785, 886, -4301, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall),
- OBJECT_WITH_ACTS(/*model*/ MODEL_BOWLING_BALL, /*pos*/ -93, 886, -3414, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
- OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -5723, 140, 6017, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_1),
- OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -6250, 0, 6680, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_1),
- OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -5723, 140, 6017, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBobombBuddyOpensCannon, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
- OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -6250, 0, 6680, /*angle*/ 0, 0, 0, /*behParam*/ 0x00030000, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
- OBJECT_WITH_ACTS(/*model*/ MODEL_CANNON_BASE, /*pos*/ -5694, 128, 5600, /*angle*/ 0, 135, 0, /*behParam*/ 0x00010000, /*beh*/ bhvWaterBombCannon, /*acts*/ ACT_1),
- OBJECT_WITH_ACTS(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ -5694, 128, 5600, /*angle*/ 0, 180, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCannonClosed, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
- OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 3304, 4242, -4603, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvKoopaRaceEndpoint, /*acts*/ ACT_2),
- OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ 3400, 770, 6500, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvKoopa, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
+ OBJECT (/*model*/ MODEL_BOWLING_BALL, /*pos*/ -993, 886, -3565, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall),
+ OBJECT (/*model*/ MODEL_BOWLING_BALL, /*pos*/ -785, 886, -4301, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_BOWLING_BALL, /*pos*/ -93, 886, -3414, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvPitBowlingBall, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -5723, 140, 6017, /*angle*/ 0, 0, 0, /*behParam*/ DIALOG_002 << 16, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_1),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -6250, 0, 6680, /*angle*/ 0, 0, 0, /*behParam*/ DIALOG_001 << 16, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_1),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -5723, 140, 6017, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBobombBuddyOpensCannon, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_BOBOMB_BUDDY, /*pos*/ -6250, 0, 6680, /*angle*/ 0, 0, 0, /*behParam*/ DIALOG_003 << 16, /*beh*/ bhvBobombBuddy, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_CANNON_BASE, /*pos*/ -5694, 128, 5600, /*angle*/ 0, 135, 0, /*behParam*/ 0x00010000, /*beh*/ bhvWaterBombCannon, /*acts*/ ACT_1),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_DL_CANNON_LID, /*pos*/ -5694, 128, 5600, /*angle*/ 0, 180, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCannonClosed, /*acts*/ ACT_2 | ACT_3 | ACT_4 | ACT_5 | ACT_6),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ 3304, 4242, -4603, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvKoopaRaceEndpoint, /*acts*/ ACT_2),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ 3400, 770, 6500, /*angle*/ 0, 0, 0, /*behParam*/ 0x00010000, /*beh*/ bhvKoopa, /*acts*/ ACT_3 | ACT_4 | ACT_5 | ACT_6),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
- OBJECT_WITH_ACTS(/*model*/ MODEL_KING_BOBOMB, /*pos*/ 1636, 4242, -5567, /*angle*/ 0, -147, 0, /*behParam*/ 0x00000000, /*beh*/ bhvKingBobomb, /*acts*/ ACT_1),
- OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ -4004, 0, 5221, /*angle*/ 0, 0, 0, /*behParam*/ 0x01020000, /*beh*/ bhvKoopa, /*acts*/ ACT_2),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_KING_BOBOMB, /*pos*/ 1636, 4242, -5567, /*angle*/ 0, -147, 0, /*behParam*/ 0x00000000, /*beh*/ bhvKingBobomb, /*acts*/ ACT_1),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_KOOPA_WITH_SHELL, /*pos*/ -4004, 0, 5221, /*angle*/ 0, 0, 0, /*behParam*/ 0x01020000, /*beh*/ bhvKoopa, /*acts*/ ACT_2),
OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -6000, 1000, 2400, /*angle*/ 0, 0, 0, /*behParam*/ 0x03000000, /*beh*/ bhvHiddenRedCoinStar, /*acts*/ ALL_ACTS),
- OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -6600, 1000, 1250, /*angle*/ 0, 0, 0, /*behParam*/ 0x04040000, /*beh*/ bhvHiddenStar, /*acts*/ ALL_ACTS),
- OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 1550, 1200, 300, /*angle*/ 0, 0, 0, /*behParam*/ 0x05000000, /*beh*/ bhvStar, /*acts*/ ALL_ACTS),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_NONE, /*pos*/ -6600, 1000, 1250, /*angle*/ 0, 0, 0, /*behParam*/ 0x04040000, /*beh*/ bhvHiddenStar, /*acts*/ ALL_ACTS),
+ OBJECT_WITH_ACTS(/*model*/ MODEL_STAR, /*pos*/ 1550, 1200, 300, /*angle*/ 0, 0, 0, /*behParam*/ 0x05000000, /*beh*/ bhvStar, /*acts*/ ALL_ACTS),
RETURN(),
};
@@ -82,16 +83,16 @@ const LevelScript level_bob_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1680, 3835, -5523, /*angle*/ 0, -153, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6612, 1024, -3351, /*angle*/ 0, 107, 0, /*behParam*/ 0x000D0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1980, 768, 6618, /*angle*/ 0, -151, 0, /*behParam*/ 0x000E0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0D, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0E, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0E, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0D, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0E, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0E, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bob_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ bob_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x00),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_000),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_GRASS),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_GRASS),
END_AREA(),
diff --git a/levels/bob/seesaw_platform/model.inc.c b/levels/bob/seesaw_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700E510 - 0x0700E518
-static const Ambient bob_seg7_light_0700E510 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700E518 - 0x0700E528
-static const Light bob_seg7_light_0700E518 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E510 - 0x0700E528
+static const Lights1 bob_seg7_lights_0700E510 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E528 - 0x0700E628
static const Vtx bob_seg7_vertex_0700E528[] = {
@@ -47,8 +43,8 @@ static const Gfx bob_seg7_dl_0700E6C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bob_seg7_light_0700E518, 1),
- gsSPLight(&bob_seg7_light_0700E510, 2),
+ gsSPLight(&bob_seg7_lights_0700E510.l, 1),
+ gsSPLight(&bob_seg7_lights_0700E510.a, 2),
gsSPVertex(bob_seg7_vertex_0700E528, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 0, 2, 0x0),
diff --git a/levels/bowser_1/areas/1/1/model.inc.c b/levels/bowser_1/areas/1/1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07002000 - 0x07002008
-static const Ambient bowser_1_seg7_light_07002000 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07002008 - 0x07002018
-static const Light bowser_1_seg7_light_07002008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002000 - 0x07002018
+static const Lights1 bowser_1_seg7_lights_07002000 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002018 - 0x07002108
static const Vtx bowser_1_seg7_vertex_07002018[] = {
@@ -131,8 +127,8 @@ static const Gfx bowser_1_seg7_dl_07002578[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_1_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_1_seg7_light_07002008, 1),
- gsSPLight(&bowser_1_seg7_light_07002000, 2),
+ gsSPLight(&bowser_1_seg7_lights_07002000.l, 1),
+ gsSPLight(&bowser_1_seg7_lights_07002000.a, 2),
gsSPVertex(bowser_1_seg7_vertex_07002018, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 5, 1, 6, 0x0, 7, 1, 8, 0x0),
diff --git a/levels/bowser_1/script.c b/levels/bowser_1/script.c
@@ -29,9 +29,9 @@ const LevelScript level_bowser_1_entry[] = {
AREA(/*index*/ 1, bowser_1_geo_0000D0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps6C),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x24, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x11, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BOWSER_1, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x24, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bowser_1_seg7_collision_level),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
diff --git a/levels/bowser_2/script.c b/levels/bowser_2/script.c
@@ -39,9 +39,9 @@ const LevelScript level_bowser_2_entry[] = {
AREA(/*index*/ 1, bowser_2_geo_000188),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 2229, 0, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps6C),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x21, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x13, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BOWSER_2, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
TERRAIN(/*terrainData*/ bowser_2_seg7_collision_lava),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA),
diff --git a/levels/bowser_3/areas/1/1/model.inc.c b/levels/bowser_3/areas/1/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07004030 - 0x07004038
-static const Ambient bowser_3_seg7_light_07004030 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07004038 - 0x07004048
-static const Light bowser_3_seg7_light_07004038 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004030 - 0x07004048
+static const Lights1 bowser_3_seg7_lights_07004030 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07004048 - 0x07004050
-static const Ambient bowser_3_seg7_light_07004048 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004050 - 0x07004060
-static const Light bowser_3_seg7_light_07004050 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004048 - 0x07004060
+static const Lights1 bowser_3_seg7_lights_07004048 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004060 - 0x07004160
static const Vtx bowser_3_seg7_vertex_07004060[] = {
@@ -121,16 +113,16 @@ static const Gfx bowser_3_seg7_dl_07004500[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07004038, 1),
- gsSPLight(&bowser_3_seg7_light_07004030, 2),
+ gsSPLight(&bowser_3_seg7_lights_07004030.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07004030.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07004060, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles( 6, 8, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(bowser_3_seg7_vertex_07004160, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07004050, 1),
- gsSPLight(&bowser_3_seg7_light_07004048, 2),
+ gsSPLight(&bowser_3_seg7_lights_07004048.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07004048.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070041C0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 2, 3, 5, 0x0),
diff --git a/levels/bowser_3/areas/1/bomb_stand/model.inc.c b/levels/bowser_3/areas/1/bomb_stand/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07004740 - 0x07004748
-static const Ambient bowser_3_seg7_light_07004740 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004748 - 0x07004758
-static const Light bowser_3_seg7_light_07004748 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004740 - 0x07004758
+static const Lights1 bowser_3_seg7_lights_07004740 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004758 - 0x07004848
static const Vtx bowser_3_seg7_vertex_07004758[] = {
@@ -45,8 +41,8 @@ static const Gfx bowser_3_seg7_dl_070048D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07004748, 1),
- gsSPLight(&bowser_3_seg7_light_07004740, 2),
+ gsSPLight(&bowser_3_seg7_lights_07004740.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07004740.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07004758, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/bowser_3/falling_platform_1/model.inc.c b/levels/bowser_3/falling_platform_1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002000 - 0x07002008
-static const Ambient bowser_3_seg7_light_07002000 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07002008 - 0x07002018
-static const Light bowser_3_seg7_light_07002008 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002000 - 0x07002018
+static const Lights1 bowser_3_seg7_lights_07002000 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07002018 - 0x07002020
-static const Ambient bowser_3_seg7_light_07002018 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07002020 - 0x07002030
-static const Light bowser_3_seg7_light_07002020 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002018 - 0x07002030
+static const Lights1 bowser_3_seg7_lights_07002018 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002030 - 0x07002090
static const Vtx bowser_3_seg7_vertex_07002030[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_070021D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07002008, 1),
- gsSPLight(&bowser_3_seg7_light_07002000, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002000.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002000.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002030, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07002020, 1),
- gsSPLight(&bowser_3_seg7_light_07002018, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002018.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002018.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002090, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_10/model.inc.c b/levels/bowser_3/falling_platform_10/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07003CF8 - 0x07003D00
-static const Ambient bowser_3_seg7_light_07003CF8 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07003D00 - 0x07003D10
-static const Light bowser_3_seg7_light_07003D00 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003CF8 - 0x07003D10
+static const Lights1 bowser_3_seg7_lights_07003CF8 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07003D10 - 0x07003D18
-static const Ambient bowser_3_seg7_light_07003D10 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003D18 - 0x07003D28
-static const Light bowser_3_seg7_light_07003D18 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003D10 - 0x07003D28
+static const Lights1 bowser_3_seg7_lights_07003D10 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07003D28 - 0x07003D88
static const Vtx bowser_3_seg7_vertex_07003D28[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07003EC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07003D00, 1),
- gsSPLight(&bowser_3_seg7_light_07003CF8, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003CF8.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003CF8.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003D28, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07003D18, 1),
- gsSPLight(&bowser_3_seg7_light_07003D10, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003D10.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003D10.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003D88, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_2/model.inc.c b/levels/bowser_3/falling_platform_2/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002338 - 0x07002340
-static const Ambient bowser_3_seg7_light_07002338 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07002340 - 0x07002350
-static const Light bowser_3_seg7_light_07002340 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002338 - 0x07002350
+static const Lights1 bowser_3_seg7_lights_07002338 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07002350 - 0x07002358
-static const Ambient bowser_3_seg7_light_07002350 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07002358 - 0x07002368
-static const Light bowser_3_seg7_light_07002358 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002350 - 0x07002368
+static const Lights1 bowser_3_seg7_lights_07002350 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002368 - 0x070023C8
static const Vtx bowser_3_seg7_vertex_07002368[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07002508[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07002340, 1),
- gsSPLight(&bowser_3_seg7_light_07002338, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002338.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002338.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002368, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07002358, 1),
- gsSPLight(&bowser_3_seg7_light_07002350, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002350.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002350.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070023C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_3/model.inc.c b/levels/bowser_3/falling_platform_3/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002670 - 0x07002678
-static const Ambient bowser_3_seg7_light_07002670 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07002678 - 0x07002688
-static const Light bowser_3_seg7_light_07002678 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002670 - 0x07002688
+static const Lights1 bowser_3_seg7_lights_07002670 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07002688 - 0x07002690
-static const Ambient bowser_3_seg7_light_07002688 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07002690 - 0x070026A0
-static const Light bowser_3_seg7_light_07002690 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002688 - 0x070026A0
+static const Lights1 bowser_3_seg7_lights_07002688 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070026A0 - 0x07002700
static const Vtx bowser_3_seg7_vertex_070026A0[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07002840[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07002678, 1),
- gsSPLight(&bowser_3_seg7_light_07002670, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002670.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002670.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070026A0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07002690, 1),
- gsSPLight(&bowser_3_seg7_light_07002688, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002688.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002688.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002700, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_4/model.inc.c b/levels/bowser_3/falling_platform_4/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070029A8 - 0x070029B0
-static const Ambient bowser_3_seg7_light_070029A8 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x070029B0 - 0x070029C0
-static const Light bowser_3_seg7_light_070029B0 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070029A8 - 0x070029C0
+static const Lights1 bowser_3_seg7_lights_070029A8 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x070029C0 - 0x070029C8
-static const Ambient bowser_3_seg7_light_070029C0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070029C8 - 0x070029D8
-static const Light bowser_3_seg7_light_070029C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070029C0 - 0x070029D8
+static const Lights1 bowser_3_seg7_lights_070029C0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070029D8 - 0x07002A38
static const Vtx bowser_3_seg7_vertex_070029D8[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07002B78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_070029B0, 1),
- gsSPLight(&bowser_3_seg7_light_070029A8, 2),
+ gsSPLight(&bowser_3_seg7_lights_070029A8.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_070029A8.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070029D8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_070029C8, 1),
- gsSPLight(&bowser_3_seg7_light_070029C0, 2),
+ gsSPLight(&bowser_3_seg7_lights_070029C0.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_070029C0.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002A38, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_5/model.inc.c b/levels/bowser_3/falling_platform_5/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002CE0 - 0x07002CE8
-static const Ambient bowser_3_seg7_light_07002CE0 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07002CE8 - 0x07002CF8
-static const Light bowser_3_seg7_light_07002CE8 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002CE0 - 0x07002CF8
+static const Lights1 bowser_3_seg7_lights_07002CE0 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07002CF8 - 0x07002D00
-static const Ambient bowser_3_seg7_light_07002CF8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07002D00 - 0x07002D10
-static const Light bowser_3_seg7_light_07002D00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002CF8 - 0x07002D10
+static const Lights1 bowser_3_seg7_lights_07002CF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002D10 - 0x07002D70
static const Vtx bowser_3_seg7_vertex_07002D10[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07002EB0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07002CE8, 1),
- gsSPLight(&bowser_3_seg7_light_07002CE0, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002CE0.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002CE0.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002D10, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07002D00, 1),
- gsSPLight(&bowser_3_seg7_light_07002CF8, 2),
+ gsSPLight(&bowser_3_seg7_lights_07002CF8.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07002CF8.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07002D70, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_6/model.inc.c b/levels/bowser_3/falling_platform_6/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07003018 - 0x07003020
-static const Ambient bowser_3_seg7_light_07003018 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07003020 - 0x07003030
-static const Light bowser_3_seg7_light_07003020 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003018 - 0x07003030
+static const Lights1 bowser_3_seg7_lights_07003018 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07003030 - 0x07003038
-static const Ambient bowser_3_seg7_light_07003030 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003038 - 0x07003048
-static const Light bowser_3_seg7_light_07003038 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003030 - 0x07003048
+static const Lights1 bowser_3_seg7_lights_07003030 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07003048 - 0x070030A8
static const Vtx bowser_3_seg7_vertex_07003048[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_070031E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07003020, 1),
- gsSPLight(&bowser_3_seg7_light_07003018, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003018.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003018.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003048, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07003038, 1),
- gsSPLight(&bowser_3_seg7_light_07003030, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003030.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003030.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070030A8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_7/model.inc.c b/levels/bowser_3/falling_platform_7/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07003350 - 0x07003358
-static const Ambient bowser_3_seg7_light_07003350 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07003358 - 0x07003368
-static const Light bowser_3_seg7_light_07003358 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003350 - 0x07003368
+static const Lights1 bowser_3_seg7_lights_07003350 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x07003368 - 0x07003370
-static const Ambient bowser_3_seg7_light_07003368 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003370 - 0x07003380
-static const Light bowser_3_seg7_light_07003370 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003368 - 0x07003380
+static const Lights1 bowser_3_seg7_lights_07003368 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07003380 - 0x070033E0
static const Vtx bowser_3_seg7_vertex_07003380[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07003520[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07003358, 1),
- gsSPLight(&bowser_3_seg7_light_07003350, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003350.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003350.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003380, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_07003370, 1),
- gsSPLight(&bowser_3_seg7_light_07003368, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003368.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003368.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070033E0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_8/model.inc.c b/levels/bowser_3/falling_platform_8/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07003688 - 0x07003690
-static const Ambient bowser_3_seg7_light_07003688 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07003690 - 0x070036A0
-static const Light bowser_3_seg7_light_07003690 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003688 - 0x070036A0
+static const Lights1 bowser_3_seg7_lights_07003688 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x070036A0 - 0x070036A8
-static const Ambient bowser_3_seg7_light_070036A0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070036A8 - 0x070036B8
-static const Light bowser_3_seg7_light_070036A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070036A0 - 0x070036B8
+static const Lights1 bowser_3_seg7_lights_070036A0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070036B8 - 0x07003718
static const Vtx bowser_3_seg7_vertex_070036B8[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07003858[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_07003690, 1),
- gsSPLight(&bowser_3_seg7_light_07003688, 2),
+ gsSPLight(&bowser_3_seg7_lights_07003688.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_07003688.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070036B8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_070036A8, 1),
- gsSPLight(&bowser_3_seg7_light_070036A0, 2),
+ gsSPLight(&bowser_3_seg7_lights_070036A0.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_070036A0.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003718, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/falling_platform_9/model.inc.c b/levels/bowser_3/falling_platform_9/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070039C0 - 0x070039C8
-static const Ambient bowser_3_seg7_light_070039C0 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x070039C8 - 0x070039D8
-static const Light bowser_3_seg7_light_070039C8 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070039C0 - 0x070039D8
+static const Lights1 bowser_3_seg7_lights_070039C0 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
-// 0x070039D8 - 0x070039E0
-static const Ambient bowser_3_seg7_light_070039D8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070039E0 - 0x070039F0
-static const Light bowser_3_seg7_light_070039E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070039D8 - 0x070039F0
+static const Lights1 bowser_3_seg7_lights_070039D8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070039F0 - 0x07003A50
static const Vtx bowser_3_seg7_vertex_070039F0[] = {
@@ -61,12 +53,12 @@ static const Gfx bowser_3_seg7_dl_07003B90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, bowser_3_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&bowser_3_seg7_light_070039C8, 1),
- gsSPLight(&bowser_3_seg7_light_070039C0, 2),
+ gsSPLight(&bowser_3_seg7_lights_070039C0.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_070039C0.a, 2),
gsSPVertex(bowser_3_seg7_vertex_070039F0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&bowser_3_seg7_light_070039E0, 1),
- gsSPLight(&bowser_3_seg7_light_070039D8, 2),
+ gsSPLight(&bowser_3_seg7_lights_070039D8.l, 1),
+ gsSPLight(&bowser_3_seg7_lights_070039D8.a, 2),
gsSPVertex(bowser_3_seg7_vertex_07003A50, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/bowser_3/script.c b/levels/bowser_3/script.c
@@ -57,9 +57,9 @@ const LevelScript level_bowser_3_entry[] = {
AREA(/*index*/ 1, bowser_3_geo_000398),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 1307, 0, /*angle*/ 0, 183, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps6C),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x22, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_BOWSER_3, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x15, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_BITS, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ bowser_3_seg7_collision_level),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0002, /*seq*/ SEQ_LEVEL_BOSS_KOOPA_FINAL),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
diff --git a/levels/castle_courtyard/areas/1/macro.inc.c b/levels/castle_courtyard/areas/1/macro.inc.c
@@ -1,8 +1,8 @@
// 0x07006E20 - 0x07006E4A
const MacroObject castle_courtyard_seg7_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 225, /*pos*/ 3180, 20, 330, /*behParam*/ 158),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3180, 20, 330, /*behParam*/ 159),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 300, 0, -3600, /*behParam*/ 102),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -300, 0, -3600, /*behParam*/ 160),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 225, /*pos*/ 3180, 20, 330, /*behParam*/ DIALOG_158),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3180, 20, 330, /*behParam*/ DIALOG_159),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 300, 0, -3600, /*behParam*/ DIALOG_102),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -300, 0, -3600, /*behParam*/ DIALOG_160),
MACRO_OBJECT_END(),
};
diff --git a/levels/castle_courtyard/leveldata.c b/levels/castle_courtyard/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/castle_courtyard/texture.inc.c"
diff --git a/levels/castle_courtyard/script.c b/levels/castle_courtyard/script.c
@@ -50,11 +50,11 @@ const LevelScript level_castle_courtyard_entry[] = {
OBJECT(/*model*/ MODEL_BOO, /*pos*/ -2360, -100, -2712, /*angle*/ 0, 0, 0, /*behParam*/ 0x01050000, /*beh*/ bhvBooWithCage),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 51, -1000, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps8C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 51, -1000, /*angle*/ 0, 180, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvWarps90),
- WARP_NODE(/*id*/ 0x05, /*destLevel*/ 0x04, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x1A, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x05, /*destLevel*/ LEVEL_BBH, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ castle_courtyard_seg7_collision),
diff --git a/levels/castle_grounds/areas/1/11/model.inc.c b/levels/castle_grounds/areas/1/11/model.inc.c
@@ -1,25 +1,17 @@
// TODO: what is this? 0700C4C0-0700C4C8 [8,8]
UNUSED static const u64 castle_grounds_unused_0 = 0;
-// 0x0700C4C8 - 0x0700C4D0
-static const Ambient castle_grounds_seg7_light_0700C4C8 = {
- {{0x66, 0x00, 0x00}, 0, {0x66, 0x00, 0x00}, 0}
-};
-
-// 0x0700C4D0 - 0x0700C4E0
-static const Light castle_grounds_seg7_light_0700C4D0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C4E0 - 0x0700C4E8
-static const Ambient castle_grounds_seg7_light_0700C4E0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700C4E8 - 0x0700C4F8
-static const Light castle_grounds_seg7_light_0700C4E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C4C8 - 0x0700C4E0
+static const Lights1 castle_grounds_seg7_lights_0700C4C8 = gdSPDefLights1(
+ 0x66, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0700C4E0 - 0x0700C4F8
+static const Lights1 castle_grounds_seg7_lights_0700C4E0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// TODO: what is this? 0700C4F8-0700C500 [8,8]
UNUSED static const u64 castle_grounds_unused_1 = 0;
@@ -74,8 +66,8 @@ static const Vtx castle_grounds_seg7_vertex_0700C640[] = {
// 0x0700C670 - 0x0700C6A8
const Gfx castle_grounds_seg7_dl_0700C670[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&castle_grounds_seg7_light_0700C4D0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4C8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C500, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -85,8 +77,8 @@ const Gfx castle_grounds_seg7_dl_0700C670[] = {
// 0x0700C6A8 - 0x0700C6E8
const Gfx castle_grounds_seg7_dl_0700C6A8[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&castle_grounds_seg7_light_0700C4D0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4C8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C530, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -96,8 +88,8 @@ const Gfx castle_grounds_seg7_dl_0700C6A8[] = {
// 0x0700C6E8 - 0x0700C728
const Gfx castle_grounds_seg7_dl_0700C6E8[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&castle_grounds_seg7_light_0700C4D0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4C8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C570, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -107,8 +99,8 @@ const Gfx castle_grounds_seg7_dl_0700C6E8[] = {
// 0x0700C728 - 0x0700C768
const Gfx castle_grounds_seg7_dl_0700C728[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&castle_grounds_seg7_light_0700C4D0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4C8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C5B0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
@@ -118,12 +110,12 @@ const Gfx castle_grounds_seg7_dl_0700C728[] = {
// 0x0700C768 - 0x0700C7C8
const Gfx castle_grounds_seg7_dl_0700C768[] = {
gsSPClearGeometryMode(G_CULL_BACK),
- gsSPLight(&castle_grounds_seg7_light_0700C4E8, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4E0, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4E0.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4E0.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C5F0, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
- gsSPLight(&castle_grounds_seg7_light_0700C4D0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700C4C8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700C4C8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C640, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPSetGeometryMode(G_CULL_BACK),
diff --git a/levels/castle_grounds/areas/1/2/model.inc.c b/levels/castle_grounds/areas/1/2/model.inc.c
@@ -1,82 +1,50 @@
-// 0x07006ED8 - 0x07006EE0
-static const Ambient castle_grounds_seg7_light_07006ED8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07006EE0 - 0x07006EF0
-static const Light castle_grounds_seg7_light_07006EE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006EF0 - 0x07006EF8
-static const Ambient castle_grounds_seg7_light_07006EF0 = {
- {{0x4e, 0x4e, 0x53}, 0, {0x4e, 0x4e, 0x53}, 0}
-};
-
-// 0x07006EF8 - 0x07006F08
-static const Light castle_grounds_seg7_light_07006EF8 = {
- {{0xc4, 0xc4, 0xd0}, 0, {0xc4, 0xc4, 0xd0}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F08 - 0x07006F10
-static const Ambient castle_grounds_seg7_light_07006F08 = {
- {{0x36, 0x36, 0x37}, 0, {0x36, 0x36, 0x37}, 0}
-};
-
-// 0x07006F10 - 0x07006F20
-static const Light castle_grounds_seg7_light_07006F10 = {
- {{0x89, 0x89, 0x8a}, 0, {0x89, 0x89, 0x8a}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F20 - 0x07006F28
-static const Ambient castle_grounds_seg7_light_07006F20 = {
- {{0x2d, 0x2d, 0x38}, 0, {0x2d, 0x2d, 0x38}, 0}
-};
-
-// 0x07006F28 - 0x07006F38
-static const Light castle_grounds_seg7_light_07006F28 = {
- {{0x72, 0x72, 0x8c}, 0, {0x72, 0x72, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F38 - 0x07006F40
-static const Ambient castle_grounds_seg7_light_07006F38 = {
- {{0x29, 0x29, 0x2a}, 0, {0x29, 0x29, 0x2a}, 0}
-};
-
-// 0x07006F40 - 0x07006F50
-static const Light castle_grounds_seg7_light_07006F40 = {
- {{0x67, 0x67, 0x69}, 0, {0x67, 0x67, 0x69}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F50 - 0x07006F58
-static const Ambient castle_grounds_seg7_light_07006F50 = {
- {{0x56, 0x56, 0x56}, 0, {0x56, 0x56, 0x56}, 0}
-};
-
-// 0x07006F58 - 0x07006F68
-static const Light castle_grounds_seg7_light_07006F58 = {
- {{0xd8, 0xd8, 0xd8}, 0, {0xd8, 0xd8, 0xd8}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F68 - 0x07006F70
-static const Ambient castle_grounds_seg7_light_07006F68 = {
- {{0x23, 0x23, 0x27}, 0, {0x23, 0x23, 0x27}, 0}
-};
-
-// 0x07006F70 - 0x07006F80
-static const Light castle_grounds_seg7_light_07006F70 = {
- {{0x58, 0x58, 0x62}, 0, {0x58, 0x58, 0x62}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006F80 - 0x07006F88
-static const Ambient castle_grounds_seg7_light_07006F80 = {
- {{0x13, 0x57, 0x00}, 0, {0x13, 0x57, 0x00}, 0}
-};
-
-// 0x07006F88 - 0x07006F98
-static const Light castle_grounds_seg7_light_07006F88 = {
- {{0x30, 0xdb, 0x02}, 0, {0x30, 0xdb, 0x02}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07006ED8 - 0x07006EF0
+static const Lights1 castle_grounds_seg7_lights_07006ED8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07006EF0 - 0x07006F08
+static const Lights1 castle_grounds_seg7_lights_07006EF0 = gdSPDefLights1(
+ 0x4e, 0x4e, 0x53,
+ 0xc4, 0xc4, 0xd0, 0x28, 0x28, 0x28
+);
+
+// 0x07006F08 - 0x07006F20
+static const Lights1 castle_grounds_seg7_lights_07006F08 = gdSPDefLights1(
+ 0x36, 0x36, 0x37,
+ 0x89, 0x89, 0x8a, 0x28, 0x28, 0x28
+);
+
+// 0x07006F20 - 0x07006F38
+static const Lights1 castle_grounds_seg7_lights_07006F20 = gdSPDefLights1(
+ 0x2d, 0x2d, 0x38,
+ 0x72, 0x72, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x07006F38 - 0x07006F50
+static const Lights1 castle_grounds_seg7_lights_07006F38 = gdSPDefLights1(
+ 0x29, 0x29, 0x2a,
+ 0x67, 0x67, 0x69, 0x28, 0x28, 0x28
+);
+
+// 0x07006F50 - 0x07006F68
+static const Lights1 castle_grounds_seg7_lights_07006F50 = gdSPDefLights1(
+ 0x56, 0x56, 0x56,
+ 0xd8, 0xd8, 0xd8, 0x28, 0x28, 0x28
+);
+
+// 0x07006F68 - 0x07006F80
+static const Lights1 castle_grounds_seg7_lights_07006F68 = gdSPDefLights1(
+ 0x23, 0x23, 0x27,
+ 0x58, 0x58, 0x62, 0x28, 0x28, 0x28
+);
+
+// 0x07006F80 - 0x07006F98
+static const Lights1 castle_grounds_seg7_lights_07006F80 = gdSPDefLights1(
+ 0x13, 0x57, 0x00,
+ 0x30, 0xdb, 0x02, 0x28, 0x28, 0x28
+);
// 0x07006F98 - 0x07006FD8
static const Vtx castle_grounds_seg7_vertex_07006F98[] = {
@@ -657,12 +625,12 @@ static const Gfx castle_grounds_seg7_dl_070089F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07006F98, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006EF8, 1),
- gsSPLight(&castle_grounds_seg7_light_07006EF0, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006EF0.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006EF0.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07006FD8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSPEndDisplayList(),
@@ -673,8 +641,8 @@ static const Gfx castle_grounds_seg7_dl_07008A68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007018, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 6, 0x0),
@@ -741,8 +709,8 @@ static const Gfx castle_grounds_seg7_dl_07008D70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006F10, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F08, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_070077B8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 3, 4, 2, 0x0, 5, 0, 2, 0x0),
@@ -756,8 +724,8 @@ static const Gfx castle_grounds_seg7_dl_07008DE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007858, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 1, 3, 5, 0x0),
@@ -766,12 +734,12 @@ static const Gfx castle_grounds_seg7_dl_07008DE8[] = {
gsSP2Triangles( 8, 9, 10, 0x0, 10, 11, 3, 0x0),
gsSP2Triangles( 3, 8, 10, 0x0, 8, 3, 0, 0x0),
gsSP1Triangle( 4, 7, 12, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F10, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F08, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007928, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007968, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 3, 1, 4, 0x0, 3, 4, 5, 0x0),
@@ -785,8 +753,8 @@ static const Gfx castle_grounds_seg7_dl_07008EE8[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPVertex(castle_grounds_seg7_vertex_070079C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F28, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F20, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F20.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F20.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007A08, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSPEndDisplayList(),
@@ -797,8 +765,8 @@ static const Gfx castle_grounds_seg7_dl_07008F48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007A48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 4, 5, 2, 0x0),
@@ -823,19 +791,19 @@ static const Gfx castle_grounds_seg7_dl_07009010[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 5, 4, 7, 0x0),
gsSP2Triangles( 8, 5, 7, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(10, 12, 11, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F40, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F38, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F38.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F38.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007C98, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 5, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSP2Triangles( 3, 10, 4, 0x0, 8, 9, 11, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F58, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F50, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F50.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F50.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007D58, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07007D98, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 4, 7, 5, 0x0),
@@ -867,18 +835,18 @@ static const Gfx castle_grounds_seg7_dl_07009010[] = {
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles( 8, 14, 13, 0x0, 12, 8, 13, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F70, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F68, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F68.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F68.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07008268, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F10, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F08, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_070082C8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 5, 4, 6, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006EE0, 1),
- gsSPLight(&castle_grounds_seg7_light_07006ED8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006ED8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07008338, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
@@ -889,8 +857,8 @@ static const Gfx castle_grounds_seg7_dl_07009330[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006F88, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F80, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F80.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F80.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07008368, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 7, 4, 0x0),
@@ -936,14 +904,14 @@ static const Gfx castle_grounds_seg7_dl_07009568[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_07006F40, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F38, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F38.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F38.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_07008908, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP1Triangle( 0, 2, 10, 0x0),
- gsSPLight(&castle_grounds_seg7_light_07006F10, 1),
- gsSPLight(&castle_grounds_seg7_light_07006F08, 2),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_07006F08.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_070089B8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_grounds/areas/1/9/model.inc.c b/levels/castle_grounds/areas/1/9/model.inc.c
@@ -1,52 +1,32 @@
// 0x0700BCD8 - 0x0700BCE0
-static const Ambient castle_grounds_seg7_light_0700BCD8 = {
- {{0x3d, 0x3d, 0x44}, 0, {0x3d, 0x3d, 0x44}, 0}
-};
-
-// 0x0700BCE0 - 0x0700BCF0
-static const Light castle_grounds_seg7_light_0700BCE0 = {
- {{0x99, 0x99, 0xac}, 0, {0x99, 0x99, 0xac}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700BCF0 - 0x0700BCF8
-static const Ambient castle_grounds_seg7_light_0700BCF0 = {
- {{0x58, 0x58, 0x5a}, 0, {0x58, 0x58, 0x5a}, 0}
-};
-
-// 0x0700BCF8 - 0x0700BD08
-static const Light castle_grounds_seg7_light_0700BCF8 = {
- {{0xdc, 0xdc, 0xe3}, 0, {0xdc, 0xdc, 0xe3}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700BD08 - 0x0700BD10
-static const Ambient castle_grounds_seg7_light_0700BD08 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700BD10 - 0x0700BD20
-static const Light castle_grounds_seg7_light_0700BD10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700BD20 - 0x0700BD28
-static const Ambient castle_grounds_seg7_light_0700BD20 = {
- {{0x4e, 0x4e, 0x53}, 0, {0x4e, 0x4e, 0x53}, 0}
-};
-
-// 0x0700BD28 - 0x0700BD38
-static const Light castle_grounds_seg7_light_0700BD28 = {
- {{0xc4, 0xc4, 0xd0}, 0, {0xc4, 0xc4, 0xd0}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700BD38 - 0x0700BD40
-static const Ambient castle_grounds_seg7_light_0700BD38 = {
- {{0x45, 0x45, 0x4b}, 0, {0x45, 0x45, 0x4b}, 0}
-};
-
-// 0x0700BD40 - 0x0700BD50
-static const Light castle_grounds_seg7_light_0700BD40 = {
- {{0xad, 0xad, 0xbc}, 0, {0xad, 0xad, 0xbc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+static const Lights1 castle_grounds_seg7_lights_0700BCD8 = gdSPDefLights1(
+ 0x3d, 0x3d, 0x44,
+ 0x99, 0x99, 0xac, 0x28, 0x28, 0x28
+);
+
+// 0x0700BCF0 - 0x0700BD08
+static const Lights1 castle_grounds_seg7_lights_0700BCF0 = gdSPDefLights1(
+ 0x58, 0x58, 0x5a,
+ 0xdc, 0xdc, 0xe3, 0x28, 0x28, 0x28
+);
+
+// 0x0700BD08 - 0x0700BD20
+static const Lights1 castle_grounds_seg7_lights_0700BD08 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700BD20 - 0x0700BD38
+static const Lights1 castle_grounds_seg7_lights_0700BD20 = gdSPDefLights1(
+ 0x4e, 0x4e, 0x53,
+ 0xc4, 0xc4, 0xd0, 0x28, 0x28, 0x28
+);
+
+// 0x0700BD38 - 0x0700BD50
+static const Lights1 castle_grounds_seg7_lights_0700BD38 = gdSPDefLights1(
+ 0x45, 0x45, 0x4b,
+ 0xad, 0xad, 0xbc, 0x28, 0x28, 0x28
+);
// 0x0700BD50 - 0x0700BE10
static const Vtx castle_grounds_seg7_vertex_0700BD50[] = {
@@ -127,14 +107,14 @@ static const Gfx castle_grounds_seg7_dl_0700C070[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_0700BCE0, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BCD8, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCD8.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCD8.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700BD50, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
- gsSPLight(&castle_grounds_seg7_light_0700BCF8, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BCF0, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCF0.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCF0.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700BE10, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -146,24 +126,24 @@ static const Gfx castle_grounds_seg7_dl_0700C110[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&castle_grounds_seg7_light_0700BD10, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BD08, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD08.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD08.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700BE90, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 0, 2, 5, 0x0),
gsSP2Triangles( 6, 4, 7, 0x0, 6, 3, 4, 0x0),
gsSP2Triangles( 2, 6, 7, 0x0, 5, 2, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 9, 11, 10, 0x0),
- gsSPLight(&castle_grounds_seg7_light_0700BD28, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BD20, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD20.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD20.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700BF50, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&castle_grounds_seg7_light_0700BD40, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BD38, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD38.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BD38.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700BFB0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&castle_grounds_seg7_light_0700BCF8, 1),
- gsSPLight(&castle_grounds_seg7_light_0700BCF0, 2),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCF0.l, 1),
+ gsSPLight(&castle_grounds_seg7_lights_0700BCF0.a, 2),
gsSPVertex(castle_grounds_seg7_vertex_0700C010, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_grounds/areas/1/geo.inc.c b/levels/castle_grounds/areas/1/geo.inc.c
@@ -32,7 +32,7 @@ const GeoLayout castle_grounds_geo_00073C[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/castle_grounds/areas/1/macro.inc.c b/levels/castle_grounds/areas/1/macro.inc.c
@@ -1,9 +1,9 @@
// 0x07010D08 - 0x07010DB4
const MacroObject castle_grounds_seg7_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 262, /*pos*/ 5288, 722, -800, /*behParam*/ 50),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 1740, 35, 2500, /*behParam*/ 65),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -1566, 260, 3503, /*behParam*/ 167),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 82, /*pos*/ -4666, 260, 922, /*behParam*/ 51),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 262, /*pos*/ 5288, 722, -800, /*behParam*/ DIALOG_050),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 1740, 35, 2500, /*behParam*/ DIALOG_065),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -1566, 260, 3503, /*behParam*/ DIALOG_167),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 82, /*pos*/ -4666, 260, 922, /*behParam*/ DIALOG_051),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ -6270, 975, -2145),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -440, 3180, -5000),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 0, 3180, -5200),
diff --git a/levels/castle_grounds/leveldata.c b/levels/castle_grounds/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/castle_grounds/texture.inc.c"
diff --git a/levels/castle_grounds/script.c b/levels/castle_grounds/script.c
@@ -16,27 +16,27 @@
#include "levels/castle_grounds/header.h"
static const LevelScript script_func_local_1[] = {
- WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x02, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x02, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 900, -1710, /*angle*/ 0, 180, 0, /*behParam*/ 0x00030000, /*beh*/ bhvWarps70),
- WARP_NODE(/*id*/ 0x03, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x03, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1328, 260, 4664, /*angle*/ 0, 180, 0, /*behParam*/ 0x00040000, /*beh*/ bhvWarps6C),
- WARP_NODE(/*id*/ 0x04, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x04, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x04, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x04, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -815, -2025, /*angle*/ 0, 0, 0, /*behParam*/ 0x3C050000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -500, -2025, /*angle*/ 0, 180, 0, /*behParam*/ 0x00060000, /*beh*/ bhvWarps90),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3799, -1199, -5816, /*angle*/ 0, 0, 0, /*behParam*/ 0x00070000, /*beh*/ bhvWarps94),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3379, -500, -2025, /*angle*/ 0, 180, 0, /*behParam*/ 0x00080000, /*beh*/ bhvWarps8C),
- WARP_NODE(/*id*/ 0x05, /*destLevel*/ 0x12, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x06, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x07, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x07, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x08, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x08, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x05, /*destLevel*/ LEVEL_VCUTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x06, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x07, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x07, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x08, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x08, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5408, 4500, 3637, /*angle*/ 0, 225, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6901, 2376, -6509, /*angle*/ 0, 230, 0, /*behParam*/ 0x00140000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4997, -1250, 2258, /*angle*/ 0, 210, 0, /*behParam*/ 0x001E0000, /*beh*/ bhvWarps94),
- WARP_NODE(/*id*/ 0x1E, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
@@ -118,7 +118,7 @@ const LevelScript level_castle_grounds_entry[] = {
LOAD_MODEL_FROM_GEO(MODEL_CASTLE_GROUNDS_CANNON_GRILL, castle_grounds_geo_000724),
AREA(/*index*/ 1, castle_grounds_geo_00073C),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
diff --git a/levels/castle_inside/areas/1/10/model.inc.c b/levels/castle_inside/areas/1/10/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0702FDD8 - 0x0702FDE0
-static const Ambient inside_castle_seg7_light_0702FDD8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0702FDE0 - 0x0702FDF0
-static const Light inside_castle_seg7_light_0702FDE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702FDD8 - 0x0702FDF0
+static const Lights1 inside_castle_seg7_lights_0702FDD8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702FDF0 - 0x0702FE70
static const Vtx inside_castle_seg7_vertex_0702FDF0[] = {
@@ -700,8 +696,8 @@ static const Gfx inside_castle_seg7_dl_07031070[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702FDE0, 1),
- gsSPLight(&inside_castle_seg7_light_0702FDD8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702FDD8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702FDD8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702FDF0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 1, 0x0, 0, 6, 5, 0x0),
@@ -711,8 +707,8 @@ static const Gfx inside_castle_seg7_dl_07031070[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702FDE0, 1),
- gsSPLight(&inside_castle_seg7_light_0702FDD8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702FDD8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702FDD8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702FDF0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 2, 6, 0x0),
diff --git a/levels/castle_inside/areas/1/12/model.inc.c b/levels/castle_inside/areas/1/12/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07031790 - 0x07031798
-static const Ambient inside_castle_seg7_light_07031790 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07031798 - 0x070317A8
-static const Light inside_castle_seg7_light_07031798 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07031790 - 0x070317A8
+static const Lights1 inside_castle_seg7_lights_07031790 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070317A8 - 0x070317E8
static const Vtx inside_castle_seg7_vertex_070317A8[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_070317E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07031798, 1),
- gsSPLight(&inside_castle_seg7_light_07031790, 2),
+ gsSPLight(&inside_castle_seg7_lights_07031790.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07031790.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070317A8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/13/model.inc.c b/levels/castle_inside/areas/1/13/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070318A0 - 0x070318A8
-static const Ambient inside_castle_seg7_light_070318A0 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x070318A8 - 0x070318B8
-static const Light inside_castle_seg7_light_070318A8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070318A0 - 0x070318B8
+static const Lights1 inside_castle_seg7_lights_070318A0 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
-// 0x070318B8 - 0x070318C0
-static const Ambient inside_castle_seg7_light_070318B8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070318C0 - 0x070318D0
-static const Light inside_castle_seg7_light_070318C0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070318B8 - 0x070318D0
+static const Lights1 inside_castle_seg7_lights_070318B8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070318D0 - 0x070319D0
static const Vtx inside_castle_seg7_vertex_070318D0[] = {
@@ -378,15 +370,15 @@ static const Gfx inside_castle_seg7_dl_07032A00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070318A8, 1),
- gsSPLight(&inside_castle_seg7_light_070318A0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070318A0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070318A0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070318D0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&inside_castle_seg7_light_070318C0, 1),
- gsSPLight(&inside_castle_seg7_light_070318B8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070318B8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070318B8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070319D0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 3, 2, 4, 0x0, 5, 3, 4, 0x0),
diff --git a/levels/castle_inside/areas/1/14/model.inc.c b/levels/castle_inside/areas/1/14/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07033068 - 0x07033070
-static const Ambient inside_castle_seg7_light_07033068 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07033070 - 0x07033080
-static const Light inside_castle_seg7_light_07033070 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07033068 - 0x07033080
+static const Lights1 inside_castle_seg7_lights_07033068 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07033080 - 0x07033100
static const Vtx inside_castle_seg7_vertex_07033080[] = {
@@ -25,8 +21,8 @@ static const Gfx inside_castle_seg7_dl_07033100[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07033070, 1),
- gsSPLight(&inside_castle_seg7_light_07033068, 2),
+ gsSPLight(&inside_castle_seg7_lights_07033068.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07033068.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07033080, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/castle_inside/areas/1/15/model.inc.c b/levels/castle_inside/areas/1/15/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070331C8 - 0x070331D0
-static const Ambient inside_castle_seg7_light_070331C8 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x070331D0 - 0x070331E0
-static const Light inside_castle_seg7_light_070331D0 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070331E0 - 0x070331E8
-static const Ambient inside_castle_seg7_light_070331E0 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070331E8 - 0x070331F8
-static const Light inside_castle_seg7_light_070331E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070331C8 - 0x070331E0
+static const Lights1 inside_castle_seg7_lights_070331C8 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x070331E0 - 0x070331F8
+static const Lights1 inside_castle_seg7_lights_070331E0 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070331F8 - 0x070332F8
static const Vtx inside_castle_seg7_vertex_070331F8[] = {
@@ -448,15 +440,15 @@ static const Gfx inside_castle_seg7_dl_07034688[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070331D0, 1),
- gsSPLight(&inside_castle_seg7_light_070331C8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070331C8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070331C8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070331F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&inside_castle_seg7_light_070331E8, 1),
- gsSPLight(&inside_castle_seg7_light_070331E0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070331E0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070331E0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070332F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/castle_inside/areas/1/17/model.inc.c b/levels/castle_inside/areas/1/17/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070351E8 - 0x070351F0
-static const Ambient inside_castle_seg7_light_070351E8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070351F0 - 0x07035200
-static const Light inside_castle_seg7_light_070351F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070351E8 - 0x07035200
+static const Lights1 inside_castle_seg7_lights_070351E8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07035200 - 0x07035240
static const Vtx inside_castle_seg7_vertex_07035200[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_07035240[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070351F0, 1),
- gsSPLight(&inside_castle_seg7_light_070351E8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070351E8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070351E8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07035200, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/18/model.inc.c b/levels/castle_inside/areas/1/18/model.inc.c
@@ -1,42 +1,26 @@
-// 0x070352F8 - 0x07035300
-static const Ambient inside_castle_seg7_light_070352F8 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x07035300 - 0x07035310
-static const Light inside_castle_seg7_light_07035300 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07035310 - 0x07035318
-static const Ambient inside_castle_seg7_light_07035310 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x07035318 - 0x07035328
-static const Light inside_castle_seg7_light_07035318 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07035328 - 0x07035330
-static const Ambient inside_castle_seg7_light_07035328 = {
- {{0x1f, 0x1f, 0x1f}, 0, {0x1f, 0x1f, 0x1f}, 0}
-};
-
-// 0x07035330 - 0x07035340
-static const Light inside_castle_seg7_light_07035330 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07035340 - 0x07035348
-static const Ambient inside_castle_seg7_light_07035340 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07035348 - 0x07035358
-static const Light inside_castle_seg7_light_07035348 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070352F8 - 0x07035310
+static const Lights1 inside_castle_seg7_lights_070352F8 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x44, 0x44, 0x44, 0x28, 0x28, 0x28
+);
+
+// 0x07035310 - 0x07035328
+static const Lights1 inside_castle_seg7_lights_07035310 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07035328 - 0x07035340
+static const Lights1 inside_castle_seg7_lights_07035328 = gdSPDefLights1(
+ 0x1f, 0x1f, 0x1f,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x07035340 - 0x07035358
+static const Lights1 inside_castle_seg7_lights_07035340 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07035358 - 0x07035458
static const Vtx inside_castle_seg7_vertex_07035358[] = {
@@ -443,15 +427,15 @@ static const Gfx inside_castle_seg7_dl_07036698[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07035300, 1),
- gsSPLight(&inside_castle_seg7_light_070352F8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070352F8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070352F8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07035358, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&inside_castle_seg7_light_07035318, 1),
- gsSPLight(&inside_castle_seg7_light_07035310, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07035458, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -468,8 +452,8 @@ static const Gfx inside_castle_seg7_dl_07036780[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07035330, 1),
- gsSPLight(&inside_castle_seg7_light_07035328, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035328.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035328.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070355B8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -480,8 +464,8 @@ static const Gfx inside_castle_seg7_dl_070367C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07035318, 1),
- gsSPLight(&inside_castle_seg7_light_07035310, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070355F8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 5, 4, 2, 0x0),
@@ -528,14 +512,14 @@ static const Gfx inside_castle_seg7_dl_070369B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07035330, 1),
- gsSPLight(&inside_castle_seg7_light_07035328, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035328.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035328.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07035AF8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 5, 8, 6, 0x0, 5, 7, 9, 0x0),
- gsSPLight(&inside_castle_seg7_light_07035318, 1),
- gsSPLight(&inside_castle_seg7_light_07035310, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035310.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035310.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07035B98, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -588,8 +572,8 @@ static const Gfx inside_castle_seg7_dl_070369B8[] = {
// 0x07036CB8 - 0x07036D88
static const Gfx inside_castle_seg7_dl_07036CB8[] = {
- gsSPLight(&inside_castle_seg7_light_07035348, 1),
- gsSPLight(&inside_castle_seg7_light_07035340, 2),
+ gsSPLight(&inside_castle_seg7_lights_07035340.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07035340.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070363D8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/1/19/model.inc.c b/levels/castle_inside/areas/1/19/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07036E68 - 0x07036E70
-static const Ambient inside_castle_seg7_light_07036E68 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0}
-};
-
-// 0x07036E70 - 0x07036E80
-static const Light inside_castle_seg7_light_07036E70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07036E68 - 0x07036E80
+static const Lights1 inside_castle_seg7_lights_07036E68 = gdSPDefLights1(
+ 0xcc, 0xcc, 0xcc,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07036E80 - 0x07036F70
static const Vtx inside_castle_seg7_vertex_07036E80[] = {
@@ -186,8 +182,8 @@ static const Gfx inside_castle_seg7_dl_07037710[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07036E70, 1),
- gsSPLight(&inside_castle_seg7_light_07036E68, 2),
+ gsSPLight(&inside_castle_seg7_lights_07036E68.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07036E68.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07036E80, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/1/2/model.inc.c b/levels/castle_inside/areas/1/2/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07023FE0 - 0x07023FE8
-static const Ambient inside_castle_seg7_light_07023FE0 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x07023FE8 - 0x07023FF8
-static const Light inside_castle_seg7_light_07023FE8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07023FF8 - 0x07024000
-static const Ambient inside_castle_seg7_light_07023FF8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07024000 - 0x07024010
-static const Light inside_castle_seg7_light_07024000 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07024010 - 0x07024018
-static const Ambient inside_castle_seg7_light_07024010 = {
- {{0x2c, 0x2c, 0x2c}, 0, {0x2c, 0x2c, 0x2c}, 0}
-};
-
-// 0x07024018 - 0x07024028
-static const Light inside_castle_seg7_light_07024018 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07023FE0 - 0x07023FF8
+static const Lights1 inside_castle_seg7_lights_07023FE0 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x07023FF8 - 0x07024010
+static const Lights1 inside_castle_seg7_lights_07023FF8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07024010 - 0x07024028
+static const Lights1 inside_castle_seg7_lights_07024010 = gdSPDefLights1(
+ 0x2c, 0x2c, 0x2c,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
// 0x07024028 - 0x07024118
static const Vtx inside_castle_seg7_vertex_07024028[] = {
@@ -1297,8 +1285,8 @@ static const Gfx inside_castle_seg7_dl_07027DE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07023FE8, 1),
- gsSPLight(&inside_castle_seg7_light_07023FE0, 2),
+ gsSPLight(&inside_castle_seg7_lights_07023FE0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07023FE0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07024028, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1351,8 +1339,8 @@ static const Gfx inside_castle_seg7_dl_07027DE8[] = {
gsSP1Triangle( 0, 14, 1, 0x0),
gsSPVertex(inside_castle_seg7_vertex_07024988, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_07024000, 1),
- gsSPLight(&inside_castle_seg7_light_07023FF8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070249C8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1505,13 +1493,13 @@ static const Gfx inside_castle_seg7_dl_070287C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07024018, 1),
- gsSPLight(&inside_castle_seg7_light_07024010, 2),
+ gsSPLight(&inside_castle_seg7_lights_07024010.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07024010.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07026108, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&inside_castle_seg7_light_07024000, 1),
- gsSPLight(&inside_castle_seg7_light_07023FF8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07026188, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1560,14 +1548,14 @@ static const Gfx inside_castle_seg7_dl_07028A38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07024018, 1),
- gsSPLight(&inside_castle_seg7_light_07024010, 2),
+ gsSPLight(&inside_castle_seg7_lights_07024010.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07024010.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070269E8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 5, 8, 9, 0x0, 5, 9, 6, 0x0),
- gsSPLight(&inside_castle_seg7_light_07024000, 1),
- gsSPLight(&inside_castle_seg7_light_07023FF8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07023FF8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07026A88, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/1/20/model.inc.c b/levels/castle_inside/areas/1/20/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070379F8 - 0x07037A00
-static const Ambient inside_castle_seg7_light_070379F8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07037A00 - 0x07037A10
-static const Light inside_castle_seg7_light_07037A00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070379F8 - 0x07037A10
+static const Lights1 inside_castle_seg7_lights_070379F8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07037A10 - 0x07037B10
static const Vtx inside_castle_seg7_vertex_07037A10[] = {
@@ -33,8 +29,8 @@ static const Gfx inside_castle_seg7_dl_07037B10[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07037A00, 1),
- gsSPLight(&inside_castle_seg7_light_070379F8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070379F8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070379F8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07037A10, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 6, 7, 4, 0x0),
diff --git a/levels/castle_inside/areas/1/21/model.inc.c b/levels/castle_inside/areas/1/21/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07037C58 - 0x07037C60
-static const Ambient inside_castle_seg7_light_07037C58 = {
- {{0x37, 0x37, 0x37}, 0, {0x37, 0x37, 0x37}, 0}
-};
-
-// 0x07037C60 - 0x07037C70
-static const Light inside_castle_seg7_light_07037C60 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07037C58 - 0x07037C70
+static const Lights1 inside_castle_seg7_lights_07037C58 = gdSPDefLights1(
+ 0x37, 0x37, 0x37,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
// 0x07037C70 - 0x07037D70
static const Vtx inside_castle_seg7_vertex_07037C70[] = {
@@ -33,8 +29,8 @@ static const Gfx inside_castle_seg7_dl_07037D70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07037C60, 1),
- gsSPLight(&inside_castle_seg7_light_07037C58, 2),
+ gsSPLight(&inside_castle_seg7_lights_07037C58.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07037C58.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07037C70, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/1/23/model.inc.c b/levels/castle_inside/areas/1/23/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070382B0 - 0x070382B8
-static const Ambient inside_castle_seg7_light_070382B0 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070382B8 - 0x070382C8
-static const Light inside_castle_seg7_light_070382B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070382B0 - 0x070382C8
+static const Lights1 inside_castle_seg7_lights_070382B0 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070382C8 - 0x07038308
static const Vtx inside_castle_seg7_vertex_070382C8[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_07038308[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070382B8, 1),
- gsSPLight(&inside_castle_seg7_light_070382B0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070382B0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070382B0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070382C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/24/model.inc.c b/levels/castle_inside/areas/1/24/model.inc.c
@@ -1,32 +1,20 @@
-// 0x070383C0 - 0x070383C8
-static const Ambient inside_castle_seg7_light_070383C0 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x070383C8 - 0x070383D8
-static const Light inside_castle_seg7_light_070383C8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070383D8 - 0x070383E0
-static const Ambient inside_castle_seg7_light_070383D8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070383E0 - 0x070383F0
-static const Light inside_castle_seg7_light_070383E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070383F0 - 0x070383F8
-static const Ambient inside_castle_seg7_light_070383F0 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x070383F8 - 0x07038408
-static const Light inside_castle_seg7_light_070383F8 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070383C0 - 0x070383D8
+static const Lights1 inside_castle_seg7_lights_070383C0 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x070383D8 - 0x070383F0
+static const Lights1 inside_castle_seg7_lights_070383D8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x070383F0 - 0x07038408
+static const Lights1 inside_castle_seg7_lights_070383F0 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x07038408 - 0x070384F8
static const Vtx inside_castle_seg7_vertex_07038408[] = {
@@ -581,8 +569,8 @@ static const Gfx inside_castle_seg7_dl_07039EC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070383C8, 1),
- gsSPLight(&inside_castle_seg7_light_070383C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070383C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070383C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07038408, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -595,8 +583,8 @@ static const Gfx inside_castle_seg7_dl_07039EC8[] = {
gsSP1Triangle( 0, 14, 1, 0x0),
gsSPVertex(inside_castle_seg7_vertex_070385E8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_070383E0, 1),
- gsSPLight(&inside_castle_seg7_light_070383D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070383D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070383D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07038628, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -723,8 +711,8 @@ static const Gfx inside_castle_seg7_dl_0703A540[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070383F8, 1),
- gsSPLight(&inside_castle_seg7_light_070383F0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070383F0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070383F0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070399F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 3, 8, 0x0),
diff --git a/levels/castle_inside/areas/1/25/model.inc.c b/levels/castle_inside/areas/1/25/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0703A768 - 0x0703A770
-static const Ambient inside_castle_seg7_light_0703A768 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0703A770 - 0x0703A780
-static const Light inside_castle_seg7_light_0703A770 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703A768 - 0x0703A780
+static const Lights1 inside_castle_seg7_lights_0703A768 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703A780 - 0x0703A7C0
static const Vtx inside_castle_seg7_vertex_0703A780[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_0703A7C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703A770, 1),
- gsSPLight(&inside_castle_seg7_light_0703A768, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703A768.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703A768.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703A780, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/26/model.inc.c b/levels/castle_inside/areas/1/26/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0703A878 - 0x0703A880
-static const Ambient inside_castle_seg7_light_0703A878 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0703A880 - 0x0703A890
-static const Light inside_castle_seg7_light_0703A880 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703A878 - 0x0703A890
+static const Lights1 inside_castle_seg7_lights_0703A878 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
-// 0x0703A890 - 0x0703A898
-static const Ambient inside_castle_seg7_light_0703A890 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0703A898 - 0x0703A8A8
-static const Light inside_castle_seg7_light_0703A898 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703A890 - 0x0703A8A8
+static const Lights1 inside_castle_seg7_lights_0703A890 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703A8A8 - 0x0703A998
static const Vtx inside_castle_seg7_vertex_0703A8A8[] = {
@@ -292,8 +284,8 @@ static const Gfx inside_castle_seg7_dl_0703B5B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703A880, 1),
- gsSPLight(&inside_castle_seg7_light_0703A878, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703A878.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703A878.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703A8A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -308,8 +300,8 @@ static const Gfx inside_castle_seg7_dl_0703B5B8[] = {
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle(11, 13, 14, 0x0),
- gsSPLight(&inside_castle_seg7_light_0703A898, 1),
- gsSPLight(&inside_castle_seg7_light_0703A890, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703A890.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703A890.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703AB88, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/4/model.inc.c b/levels/castle_inside/areas/1/4/model.inc.c
@@ -1,62 +1,38 @@
-// 0x070295E8 - 0x070295F0
-static const Ambient inside_castle_seg7_light_070295E8 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x070295F0 - 0x07029600
-static const Light inside_castle_seg7_light_070295F0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07029600 - 0x07029608
-static const Ambient inside_castle_seg7_light_07029600 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07029608 - 0x07029618
-static const Light inside_castle_seg7_light_07029608 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07029618 - 0x07029620
-static const Ambient inside_castle_seg7_light_07029618 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07029620 - 0x07029630
-static const Light inside_castle_seg7_light_07029620 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07029630 - 0x07029638
-static const Ambient inside_castle_seg7_light_07029630 = {
- {{0x1f, 0x1f, 0x1f}, 0, {0x1f, 0x1f, 0x1f}, 0}
-};
-
-// 0x07029638 - 0x07029648
-static const Light inside_castle_seg7_light_07029638 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07029648 - 0x07029650
-static const Ambient inside_castle_seg7_light_07029648 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07029650 - 0x07029660
-static const Light inside_castle_seg7_light_07029650 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07029660 - 0x07029668
-static const Ambient inside_castle_seg7_light_07029660 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07029668 - 0x07029678
-static const Light inside_castle_seg7_light_07029668 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070295E8 - 0x07029600
+static const Lights1 inside_castle_seg7_lights_070295E8 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07029600 - 0x07029618
+static const Lights1 inside_castle_seg7_lights_07029600 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x07029618 - 0x07029630
+static const Lights1 inside_castle_seg7_lights_07029618 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07029630 - 0x07029648
+static const Lights1 inside_castle_seg7_lights_07029630 = gdSPDefLights1(
+ 0x1f, 0x1f, 0x1f,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x07029648 - 0x07029660
+static const Lights1 inside_castle_seg7_lights_07029648 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x07029660 - 0x07029678
+static const Lights1 inside_castle_seg7_lights_07029660 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
// 0x07029678 - 0x070296D8
static const Vtx inside_castle_seg7_vertex_07029678[] = {
@@ -312,16 +288,16 @@ static const Gfx inside_castle_seg7_dl_0702A188[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070295F0, 1),
- gsSPLight(&inside_castle_seg7_light_070295E8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070295E8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070295E8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029678, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029608, 1),
- gsSPLight(&inside_castle_seg7_light_07029600, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029600.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029600.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070296D8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029620, 1),
- gsSPLight(&inside_castle_seg7_light_07029618, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029618.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029618.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029718, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
@@ -348,28 +324,28 @@ static const Gfx inside_castle_seg7_dl_0702A300[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07029638, 1),
- gsSPLight(&inside_castle_seg7_light_07029630, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029630.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029630.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029938, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070295F0, 1),
- gsSPLight(&inside_castle_seg7_light_070295E8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070295E8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070295E8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029978, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029608, 1),
- gsSPLight(&inside_castle_seg7_light_07029600, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029600.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029600.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070299B8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029650, 1),
- gsSPLight(&inside_castle_seg7_light_07029648, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029648.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029648.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070299F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029668, 1),
- gsSPLight(&inside_castle_seg7_light_07029660, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029660.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029660.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029A38, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_07029620, 1),
- gsSPLight(&inside_castle_seg7_light_07029618, 2),
+ gsSPLight(&inside_castle_seg7_lights_07029618.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07029618.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07029A78, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 0, 2, 0x0, 4, 2, 5, 0x0),
diff --git a/levels/castle_inside/areas/1/6/model.inc.c b/levels/castle_inside/areas/1/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0702A8F0 - 0x0702A8F8
-static const Ambient inside_castle_seg7_light_0702A8F0 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0702A8F8 - 0x0702A908
-static const Light inside_castle_seg7_light_0702A8F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702A8F0 - 0x0702A908
+static const Lights1 inside_castle_seg7_lights_0702A8F0 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702A908 - 0x0702A998
static const Vtx inside_castle_seg7_vertex_0702A908[] = {
@@ -26,8 +22,8 @@ static const Gfx inside_castle_seg7_dl_0702A998[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702A8F8, 1),
- gsSPLight(&inside_castle_seg7_light_0702A8F0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702A8F0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702A8F0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702A908, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 3, 6, 0x0),
diff --git a/levels/castle_inside/areas/1/7/model.inc.c b/levels/castle_inside/areas/1/7/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0702AA80 - 0x0702AA88
-static const Ambient inside_castle_seg7_light_0702AA80 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0702AA88 - 0x0702AA98
-static const Light inside_castle_seg7_light_0702AA88 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702AA80 - 0x0702AA98
+static const Lights1 inside_castle_seg7_lights_0702AA80 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702AA98 - 0x0702AAD8
static const Vtx inside_castle_seg7_vertex_0702AA98[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_0702AAD8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702AA88, 1),
- gsSPLight(&inside_castle_seg7_light_0702AA80, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702AA80.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702AA80.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702AA98, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/1/8/model.inc.c b/levels/castle_inside/areas/1/8/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0702AB90 - 0x0702AB98
-static const Ambient inside_castle_seg7_light_0702AB90 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x0702AB98 - 0x0702ABA8
-static const Light inside_castle_seg7_light_0702AB98 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702AB90 - 0x0702ABA8
+static const Lights1 inside_castle_seg7_lights_0702AB90 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
-// 0x0702ABA8 - 0x0702ABB0
-static const Ambient inside_castle_seg7_light_0702ABA8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0702ABB0 - 0x0702ABC0
-static const Light inside_castle_seg7_light_0702ABB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702ABA8 - 0x0702ABC0
+static const Lights1 inside_castle_seg7_lights_0702ABA8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702ABC0 - 0x0702ACB0
static const Vtx inside_castle_seg7_vertex_0702ABC0[] = {
@@ -914,8 +906,8 @@ static const Gfx inside_castle_seg7_dl_0702D770[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702AB98, 1),
- gsSPLight(&inside_castle_seg7_light_0702AB90, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702AB90.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702AB90.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702ABC0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -970,8 +962,8 @@ static const Gfx inside_castle_seg7_dl_0702D770[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
- gsSPLight(&inside_castle_seg7_light_0702ABB0, 1),
- gsSPLight(&inside_castle_seg7_light_0702ABA8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702ABA8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702ABA8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702B5E0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/1/9/model.inc.c b/levels/castle_inside/areas/1/9/model.inc.c
@@ -1,52 +1,32 @@
-// 0x0702E490 - 0x0702E498
-static const Ambient inside_castle_seg7_light_0702E490 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x0702E498 - 0x0702E4A8
-static const Light inside_castle_seg7_light_0702E498 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0702E4A8 - 0x0702E4B0
-static const Ambient inside_castle_seg7_light_0702E4A8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0702E4B0 - 0x0702E4C0
-static const Light inside_castle_seg7_light_0702E4B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0702E4C0 - 0x0702E4C8
-static const Ambient inside_castle_seg7_light_0702E4C0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0702E4C8 - 0x0702E4D8
-static const Light inside_castle_seg7_light_0702E4C8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0702E4D8 - 0x0702E4E0
-static const Ambient inside_castle_seg7_light_0702E4D8 = {
- {{0x07, 0x07, 0x07}, 0, {0x07, 0x07, 0x07}, 0}
-};
-
-// 0x0702E4E0 - 0x0702E4F0
-static const Light inside_castle_seg7_light_0702E4E0 = {
- {{0x13, 0x13, 0x13}, 0, {0x13, 0x13, 0x13}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0702E4F0 - 0x0702E4F8
-static const Ambient inside_castle_seg7_light_0702E4F0 = {
- {{0x0f, 0x0f, 0x0f}, 0, {0x0f, 0x0f, 0x0f}, 0}
-};
-
-// 0x0702E4F8 - 0x0702E508
-static const Light inside_castle_seg7_light_0702E4F8 = {
- {{0x29, 0x29, 0x29}, 0, {0x29, 0x29, 0x29}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702E490 - 0x0702E4A8
+static const Lights1 inside_castle_seg7_lights_0702E490 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x0702E4A8 - 0x0702E4C0
+static const Lights1 inside_castle_seg7_lights_0702E4A8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0702E4C0 - 0x0702E4D8
+static const Lights1 inside_castle_seg7_lights_0702E4C0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0702E4D8 - 0x0702E4F0
+static const Lights1 inside_castle_seg7_lights_0702E4D8 = gdSPDefLights1(
+ 0x07, 0x07, 0x07,
+ 0x13, 0x13, 0x13, 0x28, 0x28, 0x28
+);
+
+// 0x0702E4F0 - 0x0702E508
+static const Lights1 inside_castle_seg7_lights_0702E4F0 = gdSPDefLights1(
+ 0x0f, 0x0f, 0x0f,
+ 0x29, 0x29, 0x29, 0x28, 0x28, 0x28
+);
// 0x0702E508 - 0x0702E608
static const Vtx inside_castle_seg7_vertex_0702E508[] = {
@@ -432,8 +412,8 @@ static const Gfx inside_castle_seg7_dl_0702F738[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0702E498, 1),
- gsSPLight(&inside_castle_seg7_light_0702E490, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702E490.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702E490.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702E508, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -444,8 +424,8 @@ static const Gfx inside_castle_seg7_dl_0702F738[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(10, 9, 14, 0x0, 15, 12, 11, 0x0),
- gsSPLight(&inside_castle_seg7_light_0702E4B0, 1),
- gsSPLight(&inside_castle_seg7_light_0702E4A8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702E4A8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702E4A8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702E708, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
@@ -556,17 +536,17 @@ static const Gfx inside_castle_seg7_dl_0702FA80[] = {
// 0x0702FC90 - 0x0702FD30
static const Gfx inside_castle_seg7_dl_0702FC90[] = {
- gsSPLight(&inside_castle_seg7_light_0702E4C8, 1),
- gsSPLight(&inside_castle_seg7_light_0702E4C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702E4C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702E4C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702F5F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_0702E4E0, 1),
- gsSPLight(&inside_castle_seg7_light_0702E4D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702E4D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702E4D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702F638, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&inside_castle_seg7_light_0702E4F8, 1),
- gsSPLight(&inside_castle_seg7_light_0702E4F0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0702E4F0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0702E4F0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0702F6B8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/castle_inside/areas/1/macro.inc.c b/levels/castle_inside/areas/1/macro.inc.c
@@ -1,11 +1,11 @@
// 0x07077764 - 0x070777DE
const MacroObject inside_castle_seg7_area_1_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 90, /*pos*/ 1178, 614, -2434, /*behParam*/ 75),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 270, /*pos*/ -3185, 205, -410, /*behParam*/ 46),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 270, /*pos*/ -3185, 205, -51, /*behParam*/ 70),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 180, /*pos*/ 435, 0, -1137, /*behParam*/ 69),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 45, /*pos*/ 1670, 307, -1144, /*behParam*/ 147),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 180, /*pos*/ -2278, -410, -3002, /*behParam*/ 52),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 90, /*pos*/ 1178, 614, -2434, /*behParam*/ DIALOG_075),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 270, /*pos*/ -3185, 205, -410, /*behParam*/ DIALOG_046),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 270, /*pos*/ -3185, 205, -51, /*behParam*/ DIALOG_070),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 180, /*pos*/ 435, 0, -1137, /*behParam*/ DIALOG_069),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 45, /*pos*/ 1670, 307, -1144, /*behParam*/ DIALOG_147),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 180, /*pos*/ -2278, -410, -3002, /*behParam*/ DIALOG_052),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -618, 388, -324),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -1430, 388, -324),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -724, 388, -324),
diff --git a/levels/castle_inside/areas/2/1/model.inc.c b/levels/castle_inside/areas/2/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0703C040 - 0x0703C048
-static const Ambient inside_castle_seg7_light_0703C040 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0703C048 - 0x0703C058
-static const Light inside_castle_seg7_light_0703C048 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0703C058 - 0x0703C060
-static const Ambient inside_castle_seg7_light_0703C058 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0703C060 - 0x0703C070
-static const Light inside_castle_seg7_light_0703C060 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703C040 - 0x0703C058
+static const Lights1 inside_castle_seg7_lights_0703C040 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x0703C058 - 0x0703C070
+static const Lights1 inside_castle_seg7_lights_0703C058 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703C070 - 0x0703C160
static const Vtx inside_castle_seg7_vertex_0703C070[] = {
@@ -632,8 +624,8 @@ static const Gfx inside_castle_seg7_dl_0703DE40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703C048, 1),
- gsSPLight(&inside_castle_seg7_light_0703C040, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703C040.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703C040.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703C070, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 3, 5, 7, 0x0),
@@ -648,8 +640,8 @@ static const Gfx inside_castle_seg7_dl_0703DE40[] = {
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle(11, 13, 14, 0x0),
- gsSPLight(&inside_castle_seg7_light_0703C060, 1),
- gsSPLight(&inside_castle_seg7_light_0703C058, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703C058.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703C058.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703C350, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 4, 5, 3, 0x0),
diff --git a/levels/castle_inside/areas/2/12/model.inc.c b/levels/castle_inside/areas/2/12/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07051A38 - 0x07051A40
-static const Ambient inside_castle_seg7_light_07051A38 = {
- {{0x47, 0x3f, 0x17}, 0, {0x47, 0x3f, 0x17}, 0}
-};
-
-// 0x07051A40 - 0x07051A50
-static const Light inside_castle_seg7_light_07051A40 = {
- {{0xbf, 0xaa, 0x3f}, 0, {0xbf, 0xaa, 0x3f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07051A38 - 0x07051A50
+static const Lights1 inside_castle_seg7_lights_07051A38 = gdSPDefLights1(
+ 0x47, 0x3f, 0x17,
+ 0xbf, 0xaa, 0x3f, 0x28, 0x28, 0x28
+);
// 0x07051A50 - 0x07051B10
static const Vtx inside_castle_seg7_vertex_07051A50[] = {
@@ -26,8 +22,8 @@ static const Vtx inside_castle_seg7_vertex_07051A50[] = {
// 0x07051B10 - 0x07051B60
static const Gfx inside_castle_seg7_dl_07051B10[] = {
- gsSPLight(&inside_castle_seg7_light_07051A40, 1),
- gsSPLight(&inside_castle_seg7_light_07051A38, 2),
+ gsSPLight(&inside_castle_seg7_lights_07051A38.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07051A38.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07051A50, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/castle_inside/areas/2/13/model.inc.c b/levels/castle_inside/areas/2/13/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07051B88 - 0x07051B90
-static const Ambient inside_castle_seg7_light_07051B88 = {
- {{0x51, 0x34, 0x42}, 0, {0x51, 0x34, 0x42}, 0}
-};
-
-// 0x07051B90 - 0x07051BA0
-static const Light inside_castle_seg7_light_07051B90 = {
- {{0xd8, 0x8c, 0xb2}, 0, {0xd8, 0x8c, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07051BA0 - 0x07051BA8
-static const Ambient inside_castle_seg7_light_07051BA0 = {
- {{0x40, 0x1e, 0x2f}, 0, {0x40, 0x1e, 0x2f}, 0}
-};
-
-// 0x07051BA8 - 0x07051BB8
-static const Light inside_castle_seg7_light_07051BA8 = {
- {{0xac, 0x52, 0x7f}, 0, {0xac, 0x52, 0x7f}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07051BB8 - 0x07051BC0
-static const Ambient inside_castle_seg7_light_07051BB8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07051BC0 - 0x07051BD0
-static const Light inside_castle_seg7_light_07051BC0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07051B88 - 0x07051BA0
+static const Lights1 inside_castle_seg7_lights_07051B88 = gdSPDefLights1(
+ 0x51, 0x34, 0x42,
+ 0xd8, 0x8c, 0xb2, 0x28, 0x28, 0x28
+);
+
+// 0x07051BA0 - 0x07051BB8
+static const Lights1 inside_castle_seg7_lights_07051BA0 = gdSPDefLights1(
+ 0x40, 0x1e, 0x2f,
+ 0xac, 0x52, 0x7f, 0x28, 0x28, 0x28
+);
+
+// 0x07051BB8 - 0x07051BD0
+static const Lights1 inside_castle_seg7_lights_07051BB8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07051BD0 - 0x07051C70
static const Vtx inside_castle_seg7_vertex_07051BD0[] = {
@@ -999,8 +987,8 @@ static const Gfx inside_castle_seg7_dl_07054AF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07051B90, 1),
- gsSPLight(&inside_castle_seg7_light_07051B88, 2),
+ gsSPLight(&inside_castle_seg7_lights_07051B88.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07051B88.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07051BD0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 2, 1, 0x0),
@@ -1117,8 +1105,8 @@ static const Gfx inside_castle_seg7_dl_07054B78[] = {
gsSP1Triangle( 0, 14, 1, 0x0),
gsSPVertex(inside_castle_seg7_vertex_07052F30, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07051BA8, 1),
- gsSPLight(&inside_castle_seg7_light_07051BA0, 2),
+ gsSPLight(&inside_castle_seg7_lights_07051BA0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07051BA0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07052F70, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1230,8 +1218,8 @@ static const Gfx inside_castle_seg7_dl_070555E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07051B90, 1),
- gsSPLight(&inside_castle_seg7_light_07051B88, 2),
+ gsSPLight(&inside_castle_seg7_lights_07051B88.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07051B88.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070542B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1289,8 +1277,8 @@ static const Gfx inside_castle_seg7_dl_070557A8[] = {
// 0x070558A0 - 0x070558D0
static const Gfx inside_castle_seg7_dl_070558A0[] = {
- gsSPLight(&inside_castle_seg7_light_07051BC0, 1),
- gsSPLight(&inside_castle_seg7_light_07051BB8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07051BB8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07051BB8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07054AB0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/2/14/model.inc.c b/levels/castle_inside/areas/2/14/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070559C0 - 0x070559C8
-static const Ambient inside_castle_seg7_light_070559C0 = {
- {{0x40, 0x24, 0x1e}, 0, {0x40, 0x24, 0x1e}, 0}
-};
-
-// 0x070559C8 - 0x070559D8
-static const Light inside_castle_seg7_light_070559C8 = {
- {{0xac, 0x61, 0x52}, 0, {0xac, 0x61, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070559D8 - 0x070559E0
-static const Ambient inside_castle_seg7_light_070559D8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070559E0 - 0x070559F0
-static const Light inside_castle_seg7_light_070559E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070559C0 - 0x070559D8
+static const Lights1 inside_castle_seg7_lights_070559C0 = gdSPDefLights1(
+ 0x40, 0x24, 0x1e,
+ 0xac, 0x61, 0x52, 0x28, 0x28, 0x28
+);
+
+// 0x070559D8 - 0x070559F0
+static const Lights1 inside_castle_seg7_lights_070559D8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070559F0 - 0x07055AE0
static const Vtx inside_castle_seg7_vertex_070559F0[] = {
@@ -423,8 +415,8 @@ static const Gfx inside_castle_seg7_dl_07056BF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070559C8, 1),
- gsSPLight(&inside_castle_seg7_light_070559C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070559F0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -437,8 +429,8 @@ static const Gfx inside_castle_seg7_dl_07056BF0[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(inside_castle_seg7_vertex_07055BD0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070559E0, 1),
- gsSPLight(&inside_castle_seg7_light_070559D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07055C10, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -449,8 +441,8 @@ static const Gfx inside_castle_seg7_dl_07056CE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070559C8, 1),
- gsSPLight(&inside_castle_seg7_light_070559C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07055C50, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -463,8 +455,8 @@ static const Gfx inside_castle_seg7_dl_07056CE0[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(inside_castle_seg7_vertex_07055E30, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_070559E0, 1),
- gsSPLight(&inside_castle_seg7_light_070559D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07055E70, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -475,8 +467,8 @@ static const Gfx inside_castle_seg7_dl_07056DD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070559C8, 1),
- gsSPLight(&inside_castle_seg7_light_070559C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07055EB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -489,8 +481,8 @@ static const Gfx inside_castle_seg7_dl_07056DD0[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(inside_castle_seg7_vertex_07056090, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070559E0, 1),
- gsSPLight(&inside_castle_seg7_light_070559D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070560D0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -501,8 +493,8 @@ static const Gfx inside_castle_seg7_dl_07056EC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070559C8, 1),
- gsSPLight(&inside_castle_seg7_light_070559C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07056110, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -515,8 +507,8 @@ static const Gfx inside_castle_seg7_dl_07056EC0[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(inside_castle_seg7_vertex_070562F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070559E0, 1),
- gsSPLight(&inside_castle_seg7_light_070559D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07056330, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -527,8 +519,8 @@ static const Gfx inside_castle_seg7_dl_07056FB0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070559C8, 1),
- gsSPLight(&inside_castle_seg7_light_070559C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070559C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07056370, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/2/15/model.inc.c b/levels/castle_inside/areas/2/15/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07057380 - 0x07057388
-static const Ambient inside_castle_seg7_light_07057380 = {
- {{0x51, 0x34, 0x42}, 0, {0x51, 0x34, 0x42}, 0}
-};
-
-// 0x07057388 - 0x07057398
-static const Light inside_castle_seg7_light_07057388 = {
- {{0xd8, 0x8c, 0xb2}, 0, {0xd8, 0x8c, 0xb2}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07057380 - 0x07057398
+static const Lights1 inside_castle_seg7_lights_07057380 = gdSPDefLights1(
+ 0x51, 0x34, 0x42,
+ 0xd8, 0x8c, 0xb2, 0x28, 0x28, 0x28
+);
-// 0x07057398 - 0x070573A0
-static const Ambient inside_castle_seg7_light_07057398 = {
- {{0x40, 0x24, 0x1e}, 0, {0x40, 0x24, 0x1e}, 0}
-};
-
-// 0x070573A0 - 0x070573B0
-static const Light inside_castle_seg7_light_070573A0 = {
- {{0xac, 0x61, 0x52}, 0, {0xac, 0x61, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07057398 - 0x070573B0
+static const Lights1 inside_castle_seg7_lights_07057398 = gdSPDefLights1(
+ 0x40, 0x24, 0x1e,
+ 0xac, 0x61, 0x52, 0x28, 0x28, 0x28
+);
// 0x070573B0 - 0x070573F0
static const Vtx inside_castle_seg7_vertex_070573B0[] = {
@@ -195,8 +187,8 @@ static const Gfx inside_castle_seg7_dl_07057B70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07057388, 1),
- gsSPLight(&inside_castle_seg7_light_07057380, 2),
+ gsSPLight(&inside_castle_seg7_lights_07057380.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07057380.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070573B0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -246,8 +238,8 @@ static const Gfx inside_castle_seg7_dl_07057D30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070573A0, 1),
- gsSPLight(&inside_castle_seg7_light_07057398, 2),
+ gsSPLight(&inside_castle_seg7_lights_07057398.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07057398.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070577D0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -292,8 +284,8 @@ static const Gfx inside_castle_seg7_dl_07057E60[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07057388, 1),
- gsSPLight(&inside_castle_seg7_light_07057380, 2),
+ gsSPLight(&inside_castle_seg7_lights_07057380.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07057380.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070579D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
diff --git a/levels/castle_inside/areas/2/2/model.inc.c b/levels/castle_inside/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0703E798 - 0x0703E7A0
-static const Ambient inside_castle_seg7_light_0703E798 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0703E7A0 - 0x0703E7B0
-static const Light inside_castle_seg7_light_0703E7A0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703E798 - 0x0703E7B0
+static const Lights1 inside_castle_seg7_lights_0703E798 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703E7B0 - 0x0703E8A0
static const Vtx inside_castle_seg7_vertex_0703E7B0[] = {
@@ -1141,8 +1137,8 @@ static const Gfx inside_castle_seg7_dl_07041F30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703E7A0, 1),
- gsSPLight(&inside_castle_seg7_light_0703E798, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703E798.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703E798.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703E7B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/2/3/model.inc.c b/levels/castle_inside/areas/2/3/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070430F8 - 0x07043100
-static const Ambient inside_castle_seg7_light_070430F8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07043100 - 0x07043110
-static const Light inside_castle_seg7_light_07043100 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070430F8 - 0x07043110
+static const Lights1 inside_castle_seg7_lights_070430F8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07043110 - 0x07043118
-static const Ambient inside_castle_seg7_light_07043110 = {
- {{0x40, 0x3a, 0x1e}, 0, {0x40, 0x3a, 0x1e}, 0}
-};
-
-// 0x07043118 - 0x07043128
-static const Light inside_castle_seg7_light_07043118 = {
- {{0xac, 0x9d, 0x52}, 0, {0xac, 0x9d, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07043110 - 0x07043128
+static const Lights1 inside_castle_seg7_lights_07043110 = gdSPDefLights1(
+ 0x40, 0x3a, 0x1e,
+ 0xac, 0x9d, 0x52, 0x28, 0x28, 0x28
+);
// 0x07043128 - 0x070431A8
static const Vtx inside_castle_seg7_vertex_07043128[] = {
@@ -185,8 +177,8 @@ static const Gfx inside_castle_seg7_dl_070437C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07043100, 1),
- gsSPLight(&inside_castle_seg7_light_070430F8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070430F8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070430F8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07043128, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 4, 6, 0x0),
@@ -198,8 +190,8 @@ static const Gfx inside_castle_seg7_dl_07043820[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07043118, 1),
- gsSPLight(&inside_castle_seg7_light_07043110, 2),
+ gsSPLight(&inside_castle_seg7_lights_07043110.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07043110.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070431A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -225,8 +217,8 @@ static const Gfx inside_castle_seg7_dl_07043930[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07043100, 1),
- gsSPLight(&inside_castle_seg7_light_070430F8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070430F8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070430F8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07043568, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 4, 5, 3, 0x0),
diff --git a/levels/castle_inside/areas/2/4/model.inc.c b/levels/castle_inside/areas/2/4/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07043C38 - 0x07043C40
-static const Ambient inside_castle_seg7_light_07043C38 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07043C40 - 0x07043C50
-static const Light inside_castle_seg7_light_07043C40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07043C38 - 0x07043C50
+static const Lights1 inside_castle_seg7_lights_07043C38 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07043C50 - 0x07043C90
static const Vtx inside_castle_seg7_vertex_07043C50[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_07043C90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07043C40, 1),
- gsSPLight(&inside_castle_seg7_light_07043C38, 2),
+ gsSPLight(&inside_castle_seg7_lights_07043C38.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07043C38.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07043C50, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/2/6/model.inc.c b/levels/castle_inside/areas/2/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0704A1B8 - 0x0704A1C0
-static const Ambient inside_castle_seg7_light_0704A1B8 = {
- {{0x3d, 0x3d, 0x3f}, 0, {0x3d, 0x3d, 0x3f}, 0}
-};
-
-// 0x0704A1C0 - 0x0704A1D0
-static const Light inside_castle_seg7_light_0704A1C0 = {
- {{0xf5, 0xf5, 0xff}, 0, {0xf5, 0xf5, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0704A1B8 - 0x0704A1D0
+static const Lights1 inside_castle_seg7_lights_0704A1B8 = gdSPDefLights1(
+ 0x3d, 0x3d, 0x3f,
+ 0xf5, 0xf5, 0xff, 0x28, 0x28, 0x28
+);
// 0x0704A1D0 - 0x0704A290
static const Vtx inside_castle_seg7_vertex_0704A1D0[] = {
@@ -26,8 +22,8 @@ static const Vtx inside_castle_seg7_vertex_0704A1D0[] = {
// 0x0704A290 - 0x0704A2E0
static const Gfx inside_castle_seg7_dl_0704A290[] = {
- gsSPLight(&inside_castle_seg7_light_0704A1C0, 1),
- gsSPLight(&inside_castle_seg7_light_0704A1B8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704A1B8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704A1B8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704A1D0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/castle_inside/areas/2/8/model.inc.c b/levels/castle_inside/areas/2/8/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0704AB80 - 0x0704AB88
-static const Ambient inside_castle_seg7_light_0704AB80 = {
- {{0x38, 0x3c, 0x4c}, 0, {0x38, 0x3c, 0x4c}, 0}
-};
-
-// 0x0704AB88 - 0x0704AB98
-static const Light inside_castle_seg7_light_0704AB88 = {
- {{0x97, 0xa0, 0xcd}, 0, {0x97, 0xa0, 0xcd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704AB98 - 0x0704ABA0
-static const Ambient inside_castle_seg7_light_0704AB98 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0704ABA0 - 0x0704ABB0
-static const Light inside_castle_seg7_light_0704ABA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704ABB0 - 0x0704ABB8
-static const Ambient inside_castle_seg7_light_0704ABB0 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x0704ABB8 - 0x0704ABC8
-static const Light inside_castle_seg7_light_0704ABB8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0704AB80 - 0x0704AB98
+static const Lights1 inside_castle_seg7_lights_0704AB80 = gdSPDefLights1(
+ 0x38, 0x3c, 0x4c,
+ 0x97, 0xa0, 0xcd, 0x28, 0x28, 0x28
+);
+
+// 0x0704AB98 - 0x0704ABB0
+static const Lights1 inside_castle_seg7_lights_0704AB98 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0704ABB0 - 0x0704ABC8
+static const Lights1 inside_castle_seg7_lights_0704ABB0 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
// 0x0704ABC8 - 0x0704ACA8
static const Vtx inside_castle_seg7_vertex_0704ABC8[] = {
@@ -468,8 +456,8 @@ static const Gfx inside_castle_seg7_dl_0704C078[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0704AB88, 1),
- gsSPLight(&inside_castle_seg7_light_0704AB80, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704AB80.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704AB80.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704ABC8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 5, 0, 2, 0x0, 0, 5, 4, 0x0),
@@ -492,8 +480,8 @@ static const Gfx inside_castle_seg7_dl_0704C078[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704ABA0, 1),
- gsSPLight(&inside_castle_seg7_light_0704AB98, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704AB98.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704AB98.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704AF88, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 4, 7, 8, 0x0),
@@ -532,8 +520,8 @@ static const Gfx inside_castle_seg7_dl_0704C378[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0704ABB8, 1),
- gsSPLight(&inside_castle_seg7_light_0704ABB0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704ABB0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704ABB0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704B498, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -543,8 +531,8 @@ static const Gfx inside_castle_seg7_dl_0704C378[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704ABA0, 1),
- gsSPLight(&inside_castle_seg7_light_0704AB98, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704AB98.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704AB98.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704B638, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 5, 4, 0x0),
diff --git a/levels/castle_inside/areas/2/9/model.inc.c b/levels/castle_inside/areas/2/9/model.inc.c
@@ -1,112 +1,68 @@
-// 0x0704C8B0 - 0x0704C8B8
-static const Ambient inside_castle_seg7_light_0704C8B0 = {
- {{0x2d, 0x3b, 0x58}, 0, {0x2d, 0x3b, 0x58}, 0}
-};
-
-// 0x0704C8B8 - 0x0704C8C8
-static const Light inside_castle_seg7_light_0704C8B8 = {
- {{0x79, 0x9f, 0xeb}, 0, {0x79, 0x9f, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C8C8 - 0x0704C8D0
-static const Ambient inside_castle_seg7_light_0704C8C8 = {
- {{0x25, 0x39, 0x5f}, 0, {0x25, 0x39, 0x5f}, 0}
-};
-
-// 0x0704C8D0 - 0x0704C8E0
-static const Light inside_castle_seg7_light_0704C8D0 = {
- {{0x65, 0x98, 0xff}, 0, {0x65, 0x98, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C8E0 - 0x0704C8E8
-static const Ambient inside_castle_seg7_light_0704C8E0 = {
- {{0x1e, 0x2a, 0x40}, 0, {0x1e, 0x2a, 0x40}, 0}
-};
-
-// 0x0704C8E8 - 0x0704C8F8
-static const Light inside_castle_seg7_light_0704C8E8 = {
- {{0x52, 0x70, 0xac}, 0, {0x52, 0x70, 0xac}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C8F8 - 0x0704C900
-static const Ambient inside_castle_seg7_light_0704C8F8 = {
- {{0x17, 0x27, 0x47}, 0, {0x17, 0x27, 0x47}, 0}
-};
-
-// 0x0704C900 - 0x0704C910
-static const Light inside_castle_seg7_light_0704C900 = {
- {{0x3f, 0x6a, 0xbf}, 0, {0x3f, 0x6a, 0xbf}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C910 - 0x0704C918
-static const Ambient inside_castle_seg7_light_0704C910 = {
- {{0x0b, 0x23, 0x53}, 0, {0x0b, 0x23, 0x53}, 0}
-};
-
-// 0x0704C918 - 0x0704C928
-static const Light inside_castle_seg7_light_0704C918 = {
- {{0x1f, 0x5f, 0xdf}, 0, {0x1f, 0x5f, 0xdf}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C928 - 0x0704C930
-static const Ambient inside_castle_seg7_light_0704C928 = {
- {{0x00, 0x1f, 0x5f}, 0, {0x00, 0x1f, 0x5f}, 0}
-};
-
-// 0x0704C930 - 0x0704C940
-static const Light inside_castle_seg7_light_0704C930 = {
- {{0x00, 0x55, 0xff}, 0, {0x00, 0x55, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C940 - 0x0704C948
-static const Ambient inside_castle_seg7_light_0704C940 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0704C948 - 0x0704C958
-static const Light inside_castle_seg7_light_0704C948 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C958 - 0x0704C960
-static const Ambient inside_castle_seg7_light_0704C958 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0704C960 - 0x0704C970
-static const Light inside_castle_seg7_light_0704C960 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C970 - 0x0704C978
-static const Ambient inside_castle_seg7_light_0704C970 = {
- {{0x13, 0x09, 0x00}, 0, {0x13, 0x09, 0x00}, 0}
-};
-
-// 0x0704C978 - 0x0704C988
-static const Light inside_castle_seg7_light_0704C978 = {
- {{0x35, 0x1a, 0x00}, 0, {0x35, 0x1a, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C988 - 0x0704C990
-static const Ambient inside_castle_seg7_light_0704C988 = {
- {{0x19, 0x0c, 0x00}, 0, {0x19, 0x0c, 0x00}, 0}
-};
-
-// 0x0704C990 - 0x0704C9A0
-static const Light inside_castle_seg7_light_0704C990 = {
- {{0x43, 0x21, 0x00}, 0, {0x43, 0x21, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0704C9A0 - 0x0704C9A8
-static const Ambient inside_castle_seg7_light_0704C9A0 = {
- {{0x2d, 0x16, 0x00}, 0, {0x2d, 0x16, 0x00}, 0}
-};
-
-// 0x0704C9A8 - 0x0704C9B8
-static const Light inside_castle_seg7_light_0704C9A8 = {
- {{0x78, 0x3c, 0x00}, 0, {0x78, 0x3c, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0704C8B0 - 0x0704C8C8
+static const Lights1 inside_castle_seg7_lights_0704C8B0 = gdSPDefLights1(
+ 0x2d, 0x3b, 0x58,
+ 0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28
+);
+
+// 0x0704C8C8 - 0x0704C8E0
+static const Lights1 inside_castle_seg7_lights_0704C8C8 = gdSPDefLights1(
+ 0x25, 0x39, 0x5f,
+ 0x65, 0x98, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0704C8E0 - 0x0704C8F8
+static const Lights1 inside_castle_seg7_lights_0704C8E0 = gdSPDefLights1(
+ 0x1e, 0x2a, 0x40,
+ 0x52, 0x70, 0xac, 0x28, 0x28, 0x28
+);
+
+// 0x0704C8F8 - 0x0704C910
+static const Lights1 inside_castle_seg7_lights_0704C8F8 = gdSPDefLights1(
+ 0x17, 0x27, 0x47,
+ 0x3f, 0x6a, 0xbf, 0x28, 0x28, 0x28
+);
+
+// 0x0704C910 - 0x0704C928
+static const Lights1 inside_castle_seg7_lights_0704C910 = gdSPDefLights1(
+ 0x0b, 0x23, 0x53,
+ 0x1f, 0x5f, 0xdf, 0x28, 0x28, 0x28
+);
+
+// 0x0704C928 - 0x0704C940
+static const Lights1 inside_castle_seg7_lights_0704C928 = gdSPDefLights1(
+ 0x00, 0x1f, 0x5f,
+ 0x00, 0x55, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0704C940 - 0x0704C958
+static const Lights1 inside_castle_seg7_lights_0704C940 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0704C958 - 0x0704C970
+static const Lights1 inside_castle_seg7_lights_0704C958 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x0704C970 - 0x0704C988
+static const Lights1 inside_castle_seg7_lights_0704C970 = gdSPDefLights1(
+ 0x13, 0x09, 0x00,
+ 0x35, 0x1a, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0704C988 - 0x0704C9A0
+static const Lights1 inside_castle_seg7_lights_0704C988 = gdSPDefLights1(
+ 0x19, 0x0c, 0x00,
+ 0x43, 0x21, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0704C9A0 - 0x0704C9B8
+static const Lights1 inside_castle_seg7_lights_0704C9A0 = gdSPDefLights1(
+ 0x2d, 0x16, 0x00,
+ 0x78, 0x3c, 0x00, 0x28, 0x28, 0x28
+);
// 0x0704C9B8 - 0x0704CA98
static const Vtx inside_castle_seg7_vertex_0704C9B8[] = {
@@ -1104,39 +1060,39 @@ static const Gfx inside_castle_seg7_dl_0704F928[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0704C8B8, 1),
- gsSPLight(&inside_castle_seg7_light_0704C8B0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C8B0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C8B0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704C9B8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 5, 8, 6, 0x0, 5, 9, 8, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C8D0, 1),
- gsSPLight(&inside_castle_seg7_light_0704C8C8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C8C8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C8C8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CA98, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C8E8, 1),
- gsSPLight(&inside_castle_seg7_light_0704C8E0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C8E0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C8E0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CB18, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C900, 1),
- gsSPLight(&inside_castle_seg7_light_0704C8F8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C8F8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C8F8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CB98, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C918, 1),
- gsSPLight(&inside_castle_seg7_light_0704C910, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C910.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C910.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CC18, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C930, 1),
- gsSPLight(&inside_castle_seg7_light_0704C928, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C928.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C928.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CC98, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C948, 1),
- gsSPLight(&inside_castle_seg7_light_0704C940, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CCD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
@@ -1161,8 +1117,8 @@ static const Gfx inside_castle_seg7_dl_0704FB98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0704C960, 1),
- gsSPLight(&inside_castle_seg7_light_0704C958, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C958.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C958.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704CEC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1177,8 +1133,8 @@ static const Gfx inside_castle_seg7_dl_0704FB98[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C948, 1),
- gsSPLight(&inside_castle_seg7_light_0704C940, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704D168, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1379,19 +1335,19 @@ static const Gfx inside_castle_seg7_dl_07050308[] = {
gsSPVertex(inside_castle_seg7_vertex_0704E848, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C978, 1),
- gsSPLight(&inside_castle_seg7_light_0704C970, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C970.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C970.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704E8C8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C990, 1),
- gsSPLight(&inside_castle_seg7_light_0704C988, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C988.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C988.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704E988, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 3, 5, 4, 0x0),
- gsSPLight(&inside_castle_seg7_light_0704C9A8, 1),
- gsSPLight(&inside_castle_seg7_light_0704C9A0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C9A0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C9A0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704E9E8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1417,8 +1373,8 @@ static const Gfx inside_castle_seg7_dl_070505D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0704C948, 1),
- gsSPLight(&inside_castle_seg7_light_0704C940, 2),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0704C940.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0704ED28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/2/macro.inc.c b/levels/castle_inside/areas/2/macro.inc.c
@@ -1,5 +1,5 @@
// 0x070777E0 - 0x070777EC
const MacroObject inside_castle_seg7_area_2_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 90, /*pos*/ 164, 1203, 2278, /*behParam*/ 19),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 90, /*pos*/ 164, 1203, 2278, /*behParam*/ DIALOG_019),
MACRO_OBJECT_END(),
};
diff --git a/levels/castle_inside/areas/2/pendulum/model.inc.c b/levels/castle_inside/areas/2/pendulum/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07050A78 - 0x07050A80
-static const Ambient inside_castle_seg7_light_07050A78 = {
- {{0x40, 0x2f, 0x1e}, 0, {0x40, 0x2f, 0x1e}, 0}
-};
-
-// 0x07050A80 - 0x07050A90
-static const Light inside_castle_seg7_light_07050A80 = {
- {{0xac, 0x7f, 0x52}, 0, {0xac, 0x7f, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07050A78 - 0x07050A90
+static const Lights1 inside_castle_seg7_lights_07050A78 = gdSPDefLights1(
+ 0x40, 0x2f, 0x1e,
+ 0xac, 0x7f, 0x52, 0x28, 0x28, 0x28
+);
-// 0x07050A90 - 0x07050A98
-static const Ambient inside_castle_seg7_light_07050A90 = {
- {{0x40, 0x3a, 0x1e}, 0, {0x40, 0x3a, 0x1e}, 0}
-};
-
-// 0x07050A98 - 0x07050AA8
-static const Light inside_castle_seg7_light_07050A98 = {
- {{0xac, 0x9d, 0x52}, 0, {0xac, 0x9d, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07050A90 - 0x07050AA8
+static const Lights1 inside_castle_seg7_lights_07050A90 = gdSPDefLights1(
+ 0x40, 0x3a, 0x1e,
+ 0xac, 0x9d, 0x52, 0x28, 0x28, 0x28
+);
// 0x07050AA8 - 0x07050B68
static const Vtx inside_castle_seg7_vertex_07050AA8[] = {
@@ -153,8 +145,8 @@ static const Gfx inside_castle_seg7_dl_07051108[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07050A80, 1),
- gsSPLight(&inside_castle_seg7_light_07050A78, 2),
+ gsSPLight(&inside_castle_seg7_lights_07050A78.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07050A78.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07050AA8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -164,8 +156,8 @@ static const Gfx inside_castle_seg7_dl_07051108[] = {
// 0x07051170 - 0x070512F8
static const Gfx inside_castle_seg7_dl_07051170[] = {
- gsSPLight(&inside_castle_seg7_light_07050A98, 1),
- gsSPLight(&inside_castle_seg7_light_07050A90, 2),
+ gsSPLight(&inside_castle_seg7_lights_07050A90.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07050A90.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07050B68, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 7, 0x0, 0, 2, 8, 0x0),
diff --git a/levels/castle_inside/areas/3/1/model.inc.c b/levels/castle_inside/areas/3/1/model.inc.c
@@ -1,82 +1,50 @@
-// 0x07059200 - 0x07059208
-static const Ambient inside_castle_seg7_light_07059200 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07059208 - 0x07059218
-static const Light inside_castle_seg7_light_07059208 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059218 - 0x07059220
-static const Ambient inside_castle_seg7_light_07059218 = {
- {{0x39, 0x39, 0x39}, 0, {0x39, 0x39, 0x39}, 0}
-};
-
-// 0x07059220 - 0x07059230
-static const Light inside_castle_seg7_light_07059220 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059230 - 0x07059238
-static const Ambient inside_castle_seg7_light_07059230 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07059238 - 0x07059248
-static const Light inside_castle_seg7_light_07059238 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059248 - 0x07059250
-static const Ambient inside_castle_seg7_light_07059248 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x07059250 - 0x07059260
-static const Light inside_castle_seg7_light_07059250 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059260 - 0x07059268
-static const Ambient inside_castle_seg7_light_07059260 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07059268 - 0x07059278
-static const Light inside_castle_seg7_light_07059268 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059278 - 0x07059280
-static const Ambient inside_castle_seg7_light_07059278 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x07059280 - 0x07059290
-static const Light inside_castle_seg7_light_07059280 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07059290 - 0x07059298
-static const Ambient inside_castle_seg7_light_07059290 = {
- {{0x59, 0x59, 0x59}, 0, {0x59, 0x59, 0x59}, 0}
-};
-
-// 0x07059298 - 0x070592A8
-static const Light inside_castle_seg7_light_07059298 = {
- {{0xee, 0xee, 0xee}, 0, {0xee, 0xee, 0xee}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070592A8 - 0x070592B0
-static const Ambient inside_castle_seg7_light_070592A8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x070592B0 - 0x070592C0
-static const Light inside_castle_seg7_light_070592B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07059200 - 0x07059218
+static const Lights1 inside_castle_seg7_lights_07059200 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x07059218 - 0x07059230
+static const Lights1 inside_castle_seg7_lights_07059218 = gdSPDefLights1(
+ 0x39, 0x39, 0x39,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07059230 - 0x07059248
+static const Lights1 inside_castle_seg7_lights_07059230 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x07059248 - 0x07059260
+static const Lights1 inside_castle_seg7_lights_07059248 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07059260 - 0x07059278
+static const Lights1 inside_castle_seg7_lights_07059260 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x07059278 - 0x07059290
+static const Lights1 inside_castle_seg7_lights_07059278 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x07059290 - 0x070592A8
+static const Lights1 inside_castle_seg7_lights_07059290 = gdSPDefLights1(
+ 0x59, 0x59, 0x59,
+ 0xee, 0xee, 0xee, 0x28, 0x28, 0x28
+);
+
+// 0x070592A8 - 0x070592C0
+static const Lights1 inside_castle_seg7_lights_070592A8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070592C0 - 0x07059340
static const Vtx inside_castle_seg7_vertex_070592C0[] = {
@@ -1325,37 +1293,37 @@ static const Gfx inside_castle_seg7_dl_0705CEA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07059208, 1),
- gsSPLight(&inside_castle_seg7_light_07059200, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059200.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059200.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070592C0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059220, 1),
- gsSPLight(&inside_castle_seg7_light_07059218, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059218.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059218.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059340, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059238, 1),
- gsSPLight(&inside_castle_seg7_light_07059230, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059230.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059230.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059380, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059250, 1),
- gsSPLight(&inside_castle_seg7_light_07059248, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059248.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059248.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070593C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059268, 1),
- gsSPLight(&inside_castle_seg7_light_07059260, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059260.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059260.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059400, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059280, 1),
- gsSPLight(&inside_castle_seg7_light_07059278, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059278.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059278.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059440, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07059298, 1),
- gsSPLight(&inside_castle_seg7_light_07059290, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059290.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059290.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059480, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070592B0, 1),
- gsSPLight(&inside_castle_seg7_light_070592A8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070592A8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070592A8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070594C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1376,8 +1344,8 @@ static const Gfx inside_castle_seg7_dl_0705D098[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07059250, 1),
- gsSPLight(&inside_castle_seg7_light_07059248, 2),
+ gsSPLight(&inside_castle_seg7_lights_07059248.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07059248.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070596F0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1416,8 +1384,8 @@ static const Gfx inside_castle_seg7_dl_0705D098[] = {
gsSPVertex(inside_castle_seg7_vertex_07059D80, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 6, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_070592B0, 1),
- gsSPLight(&inside_castle_seg7_light_070592A8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070592A8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070592A8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07059DF0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/areas/3/10/model.inc.c b/levels/castle_inside/areas/3/10/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07066F00 - 0x07066F08
-static const Ambient inside_castle_seg7_light_07066F00 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07066F08 - 0x07066F18
-static const Light inside_castle_seg7_light_07066F08 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07066F00 - 0x07066F18
+static const Lights1 inside_castle_seg7_lights_07066F00 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07066F18 - 0x07066F58
static const Vtx inside_castle_seg7_vertex_07066F18[] = {
@@ -21,8 +17,8 @@ static const Gfx inside_castle_seg7_dl_07066F58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07066F08, 1),
- gsSPLight(&inside_castle_seg7_light_07066F00, 2),
+ gsSPLight(&inside_castle_seg7_lights_07066F00.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07066F00.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07066F18, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/3/11/model.inc.c b/levels/castle_inside/areas/3/11/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07067010 - 0x07067018
-static const Ambient inside_castle_seg7_light_07067010 = {
- {{0x39, 0x39, 0x39}, 0, {0x39, 0x39, 0x39}, 0}
-};
-
-// 0x07067018 - 0x07067028
-static const Light inside_castle_seg7_light_07067018 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07067028 - 0x07067030
-static const Ambient inside_castle_seg7_light_07067028 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07067030 - 0x07067040
-static const Light inside_castle_seg7_light_07067030 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07067040 - 0x07067048
-static const Ambient inside_castle_seg7_light_07067040 = {
- {{0x4c, 0x42, 0x38}, 0, {0x4c, 0x42, 0x38}, 0}
-};
-
-// 0x07067048 - 0x07067058
-static const Light inside_castle_seg7_light_07067048 = {
- {{0xcd, 0xb2, 0x97}, 0, {0xcd, 0xb2, 0x97}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07067058 - 0x07067060
-static const Ambient inside_castle_seg7_light_07067058 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07067060 - 0x07067070
-static const Light inside_castle_seg7_light_07067060 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07067010 - 0x07067028
+static const Lights1 inside_castle_seg7_lights_07067010 = gdSPDefLights1(
+ 0x39, 0x39, 0x39,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07067028 - 0x07067040
+static const Lights1 inside_castle_seg7_lights_07067028 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07067040 - 0x07067058
+static const Lights1 inside_castle_seg7_lights_07067040 = gdSPDefLights1(
+ 0x4c, 0x42, 0x38,
+ 0xcd, 0xb2, 0x97, 0x28, 0x28, 0x28
+);
+
+// 0x07067058 - 0x07067070
+static const Lights1 inside_castle_seg7_lights_07067058 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07067070 - 0x070670F0
static const Vtx inside_castle_seg7_vertex_07067070[] = {
@@ -409,8 +393,8 @@ static const Gfx inside_castle_seg7_dl_07068210[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07067018, 1),
- gsSPLight(&inside_castle_seg7_light_07067010, 2),
+ gsSPLight(&inside_castle_seg7_lights_07067010.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07067010.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07067070, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 0, 5, 1, 0x0),
@@ -424,8 +408,8 @@ static const Gfx inside_castle_seg7_dl_07068288[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07067030, 1),
- gsSPLight(&inside_castle_seg7_light_07067028, 2),
+ gsSPLight(&inside_castle_seg7_lights_07067028.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07067028.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070670F0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 8, 0x0),
@@ -487,8 +471,8 @@ static const Gfx inside_castle_seg7_dl_070684E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07067048, 1),
- gsSPLight(&inside_castle_seg7_light_07067040, 2),
+ gsSPLight(&inside_castle_seg7_lights_07067040.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07067040.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070677B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -544,8 +528,8 @@ static const Gfx inside_castle_seg7_dl_070687A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07067030, 1),
- gsSPLight(&inside_castle_seg7_light_07067028, 2),
+ gsSPLight(&inside_castle_seg7_lights_07067028.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07067028.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070680D0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -556,8 +540,8 @@ static const Gfx inside_castle_seg7_dl_070687A8[] = {
// 0x07068820 - 0x07068850
static const Gfx inside_castle_seg7_dl_07068820[] = {
- gsSPLight(&inside_castle_seg7_light_07067060, 1),
- gsSPLight(&inside_castle_seg7_light_07067058, 2),
+ gsSPLight(&inside_castle_seg7_lights_07067058.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07067058.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070681D0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/castle_inside/areas/3/3/model.inc.c b/levels/castle_inside/areas/3/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0705E310 - 0x0705E318
-static const Ambient inside_castle_seg7_light_0705E310 = {
- {{0x00, 0x5f, 0x5f}, 0, {0x00, 0x5f, 0x5f}, 0}
-};
-
-// 0x0705E318 - 0x0705E328
-static const Light inside_castle_seg7_light_0705E318 = {
- {{0x00, 0xff, 0xff}, 0, {0x00, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0705E310 - 0x0705E328
+static const Lights1 inside_castle_seg7_lights_0705E310 = gdSPDefLights1(
+ 0x00, 0x5f, 0x5f,
+ 0x00, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0705E328 - 0x0705E3E8
static const Vtx inside_castle_seg7_vertex_0705E328[] = {
@@ -29,8 +25,8 @@ static const Gfx inside_castle_seg7_dl_0705E3E8[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, texture_castle_light),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E318, 1),
- gsSPLight(&inside_castle_seg7_light_0705E310, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E310.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E310.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705E328, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/castle_inside/areas/3/4/model.inc.c b/levels/castle_inside/areas/3/4/model.inc.c
@@ -1,52 +1,32 @@
-// 0x0705E4C0 - 0x0705E4C8
-static const Ambient inside_castle_seg7_light_0705E4C0 = {
- {{0x1e, 0x35, 0x40}, 0, {0x1e, 0x35, 0x40}, 0}
-};
-
-// 0x0705E4C8 - 0x0705E4D8
-static const Light inside_castle_seg7_light_0705E4C8 = {
- {{0x52, 0x8e, 0xac}, 0, {0x52, 0x8e, 0xac}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0705E4D8 - 0x0705E4E0
-static const Ambient inside_castle_seg7_light_0705E4D8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
+// 0x0705E4C0 - 0x0705E4D8
+static const Lights1 inside_castle_seg7_lights_0705E4C0 = gdSPDefLights1(
+ 0x1e, 0x35, 0x40,
+ 0x52, 0x8e, 0xac, 0x28, 0x28, 0x28
+);
-// 0x0705E4E0 - 0x0705E4F0
-static const Light inside_castle_seg7_light_0705E4E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0705E4D8 - 0x0705E4F0
+static const Lights1 inside_castle_seg7_lights_0705E4D8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0705E4F0 - 0x0705E4F8
-static const Ambient inside_castle_seg7_light_0705E4F0 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
+// 0x0705E4F0 - 0x0705E508
+static const Lights1 inside_castle_seg7_lights_0705E4F0 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
-// 0x0705E4F8 - 0x0705E508
-static const Light inside_castle_seg7_light_0705E4F8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0705E508 - 0x0705E520
+static const Lights1 inside_castle_seg7_lights_0705E508 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
-// 0x0705E508 - 0x0705E510
-static const Ambient inside_castle_seg7_light_0705E508 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0705E510 - 0x0705E520
-static const Light inside_castle_seg7_light_0705E510 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0705E520 - 0x0705E528
-static const Ambient inside_castle_seg7_light_0705E520 = {
- {{0x38, 0x4c, 0x3c}, 0, {0x38, 0x4c, 0x3c}, 0}
-};
-
-// 0x0705E528 - 0x0705E538
-static const Light inside_castle_seg7_light_0705E528 = {
- {{0x97, 0xcd, 0xa0}, 0, {0x97, 0xcd, 0xa0}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0705E520 - 0x0705E538
+static const Lights1 inside_castle_seg7_lights_0705E520 = gdSPDefLights1(
+ 0x38, 0x4c, 0x3c,
+ 0x97, 0xcd, 0xa0, 0x28, 0x28, 0x28
+);
// 0x0705E538 - 0x0705E628
static const Vtx inside_castle_seg7_vertex_0705E538[] = {
@@ -835,8 +815,8 @@ static const Gfx inside_castle_seg7_dl_07060B58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E4C8, 1),
- gsSPLight(&inside_castle_seg7_light_0705E4C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E4C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E4C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705E538, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -849,8 +829,8 @@ static const Gfx inside_castle_seg7_dl_07060B58[] = {
gsSPVertex(inside_castle_seg7_vertex_0705E728, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
- gsSPLight(&inside_castle_seg7_light_0705E4E0, 1),
- gsSPLight(&inside_castle_seg7_light_0705E4D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705E7B8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -863,12 +843,12 @@ static const Gfx inside_castle_seg7_dl_07060C68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E4F8, 1),
- gsSPLight(&inside_castle_seg7_light_0705E4F0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E4F0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E4F0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705E878, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&inside_castle_seg7_light_0705E510, 1),
- gsSPLight(&inside_castle_seg7_light_0705E508, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E508.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E508.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705E8B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -908,8 +888,8 @@ static const Gfx inside_castle_seg7_dl_07060E70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E4E0, 1),
- gsSPLight(&inside_castle_seg7_light_0705E4D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705EE68, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -924,8 +904,8 @@ static const Gfx inside_castle_seg7_dl_07060EF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E528, 1),
- gsSPLight(&inside_castle_seg7_light_0705E520, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E520.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E520.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705EF68, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -979,12 +959,12 @@ static const Gfx inside_castle_seg7_dl_07061188[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0705E510, 1),
- gsSPLight(&inside_castle_seg7_light_0705E508, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E508.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E508.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705F888, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_0705E4E0, 1),
- gsSPLight(&inside_castle_seg7_light_0705E4D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0705E4D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0705F8C8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/castle_inside/areas/3/6/model.inc.c b/levels/castle_inside/areas/3/6/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07061C90 - 0x07061C98
-static const Ambient inside_castle_seg7_light_07061C90 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
+// 0x07061C90 - 0x07061CA8
+static const Lights1 inside_castle_seg7_lights_07061C90 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07061C98 - 0x07061CA8
-static const Light inside_castle_seg7_light_07061C98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07061CA8 - 0x07061CC0
+static const Lights1 inside_castle_seg7_lights_07061CA8 = gdSPDefLights1(
+ 0x52, 0x52, 0x52,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
-// 0x07061CA8 - 0x07061CB0
-static const Ambient inside_castle_seg7_light_07061CA8 = {
- {{0x52, 0x52, 0x52}, 0, {0x52, 0x52, 0x52}, 0}
-};
-
-// 0x07061CB0 - 0x07061CC0
-static const Light inside_castle_seg7_light_07061CB0 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07061CC0 - 0x07061CC8
-static const Ambient inside_castle_seg7_light_07061CC0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07061CC8 - 0x07061CD8
-static const Light inside_castle_seg7_light_07061CC8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07061CC0 - 0x07061CD8
+static const Lights1 inside_castle_seg7_lights_07061CC0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07061CD8 - 0x07061DC8
static const Vtx inside_castle_seg7_vertex_07061CD8[] = {
@@ -767,8 +755,8 @@ static const Gfx inside_castle_seg7_dl_07064078[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07061C98, 1),
- gsSPLight(&inside_castle_seg7_light_07061C90, 2),
+ gsSPLight(&inside_castle_seg7_lights_07061C90.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07061C90.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07061CD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -885,8 +873,8 @@ static const Gfx inside_castle_seg7_dl_07064618[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07061CB0, 1),
- gsSPLight(&inside_castle_seg7_light_07061CA8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07061CA8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07061CA8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07062ED8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -899,8 +887,8 @@ static const Gfx inside_castle_seg7_dl_07064618[] = {
gsSP1Triangle( 0, 14, 1, 0x0),
gsSPVertex(inside_castle_seg7_vertex_070630B8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&inside_castle_seg7_light_07061C98, 1),
- gsSPLight(&inside_castle_seg7_light_07061C90, 2),
+ gsSPLight(&inside_castle_seg7_lights_07061C90.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07061C90.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070630F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -998,8 +986,8 @@ static const Gfx inside_castle_seg7_dl_07064A88[] = {
// 0x07064B28 - 0x07064B78
static const Gfx inside_castle_seg7_dl_07064B28[] = {
- gsSPLight(&inside_castle_seg7_light_07061CC8, 1),
- gsSPLight(&inside_castle_seg7_light_07061CC0, 2),
+ gsSPLight(&inside_castle_seg7_lights_07061CC0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07061CC0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07063FF8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 4, 6, 0x0),
diff --git a/levels/castle_inside/areas/3/8/model.inc.c b/levels/castle_inside/areas/3/8/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07064DC8 - 0x07064DD0
-static const Ambient inside_castle_seg7_light_07064DC8 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07064DD0 - 0x07064DE0
-static const Light inside_castle_seg7_light_07064DD0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07064DC8 - 0x07064DE0
+static const Lights1 inside_castle_seg7_lights_07064DC8 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07064DE0 - 0x07064EE0
static const Vtx inside_castle_seg7_vertex_07064DE0[] = {
@@ -493,8 +489,8 @@ static const Gfx inside_castle_seg7_dl_07066560[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07064DD0, 1),
- gsSPLight(&inside_castle_seg7_light_07064DC8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07064DC8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07064DC8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07064DE0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 5, 4, 0x0),
diff --git a/levels/castle_inside/areas/3/macro.inc.c b/levels/castle_inside/areas/3/macro.inc.c
@@ -1,6 +1,6 @@
// 0x070777EC - 0x0707782A
const MacroObject inside_castle_seg7_area_3_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 0, /*pos*/ 6400, -1178, -1270, /*behParam*/ 77),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_sign_on_wall, /*yaw*/ 0, /*pos*/ 6400, -1178, -1270, /*behParam*/ DIALOG_077),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 2130, -2508, -946),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 2130, -2508, -92),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 3515, -2508, -946),
diff --git a/levels/castle_inside/clock_hour_hand/model.inc.c b/levels/castle_inside/clock_hour_hand/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070589C0 - 0x070589C8
-static const Ambient inside_castle_seg7_light_070589C0 = {
- {{0x3f, 0x33, 0x19}, 0, {0x3f, 0x33, 0x19}, 0}
-};
-
-// 0x070589C8 - 0x070589D8
-static const Light inside_castle_seg7_light_070589C8 = {
- {{0xff, 0xcc, 0x65}, 0, {0xff, 0xcc, 0x65}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070589C0 - 0x070589D8
+static const Lights1 inside_castle_seg7_lights_070589C0 = gdSPDefLights1(
+ 0x3f, 0x33, 0x19,
+ 0xff, 0xcc, 0x65, 0x28, 0x28, 0x28
+);
-// 0x070589D8 - 0x070589E0
-static const Ambient inside_castle_seg7_light_070589D8 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x070589E0 - 0x070589F0
-static const Light inside_castle_seg7_light_070589E0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070589D8 - 0x070589F0
+static const Lights1 inside_castle_seg7_lights_070589D8 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x070589F0 - 0x07058AF0
static const Vtx inside_castle_seg7_vertex_070589F0[] = {
@@ -144,8 +136,8 @@ static const Gfx inside_castle_seg7_dl_07058FC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_070589C8, 1),
- gsSPLight(&inside_castle_seg7_light_070589C0, 2),
+ gsSPLight(&inside_castle_seg7_lights_070589C0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070589C0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070589F0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 4, 6, 0x0),
@@ -167,8 +159,8 @@ static const Gfx inside_castle_seg7_dl_07058FC0[] = {
gsSPVertex(inside_castle_seg7_vertex_07058DB0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 7, 8, 9, 0x0),
- gsSPLight(&inside_castle_seg7_light_070589E0, 1),
- gsSPLight(&inside_castle_seg7_light_070589D8, 2),
+ gsSPLight(&inside_castle_seg7_lights_070589D8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_070589D8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07058E50, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 3, 0x0, 3, 7, 4, 0x0),
diff --git a/levels/castle_inside/clock_minute_hand/model.inc.c b/levels/castle_inside/clock_minute_hand/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07057FD8 - 0x07057FE0
-static const Ambient inside_castle_seg7_light_07057FD8 = {
- {{0x3f, 0x33, 0x19}, 0, {0x3f, 0x33, 0x19}, 0}
-};
-
-// 0x07057FE0 - 0x07057FF0
-static const Light inside_castle_seg7_light_07057FE0 = {
- {{0xff, 0xcc, 0x65}, 0, {0xff, 0xcc, 0x65}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07057FD8 - 0x07057FF0
+static const Lights1 inside_castle_seg7_lights_07057FD8 = gdSPDefLights1(
+ 0x3f, 0x33, 0x19,
+ 0xff, 0xcc, 0x65, 0x28, 0x28, 0x28
+);
-// 0x07057FF0 - 0x07057FF8
-static const Ambient inside_castle_seg7_light_07057FF0 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// 0x07057FF8 - 0x07058008
-static const Light inside_castle_seg7_light_07057FF8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07057FF0 - 0x07058008
+static const Lights1 inside_castle_seg7_lights_07057FF0 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07058008 - 0x07058108
static const Vtx inside_castle_seg7_vertex_07058008[] = {
@@ -168,8 +160,8 @@ static const Gfx inside_castle_seg7_dl_07058718[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07057FE0, 1),
- gsSPLight(&inside_castle_seg7_light_07057FD8, 2),
+ gsSPLight(&inside_castle_seg7_lights_07057FD8.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07057FD8.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07058008, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 4, 0x0, 6, 4, 3, 0x0),
@@ -199,8 +191,8 @@ static const Gfx inside_castle_seg7_dl_07058718[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 0, 10, 1, 0x0, 7, 11, 8, 0x0),
- gsSPLight(&inside_castle_seg7_light_07057FF8, 1),
- gsSPLight(&inside_castle_seg7_light_07057FF0, 2),
+ gsSPLight(&inside_castle_seg7_lights_07057FF0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07057FF0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_070585A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/header.h b/levels/castle_inside/header.h
@@ -151,6 +151,6 @@ extern const struct MovtexQuadCollection inside_castle_movtex_green_room_water[]
extern const struct MovtexQuadCollection inside_castle_movtex_moat_water[];
// script
-extern const LevelScript level_castle_entry[];
+extern const LevelScript level_castle_inside_entry[];
#endif
diff --git a/levels/castle_inside/leveldata.c b/levels/castle_inside/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/castle_inside/texture.inc.c"
diff --git a/levels/castle_inside/painting.inc.c b/levels/castle_inside/painting.inc.c
@@ -1,14 +1,10 @@
#include "game/paintings.h"
-// 0x07021800 - 0x07021808
-static const Ambient inside_castle_seg7_light_07021800 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x07021808 - 0x07021818
-static const Light inside_castle_seg7_light_07021808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x32, 0x32, 0x32}, 0}
-};
+// 0x07021800 - 0x07021818
+static const Lights1 inside_castle_seg7_lights_07021800 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xff, 0xff, 0xff, 0x32, 0x32, 0x32
+);
// 0x07021818 - 0x07021898
static const Vtx inside_castle_seg7_vertex_07021818[] = {
@@ -75,8 +71,8 @@ static const Gfx inside_castle_seg7_dl_07021A48[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
- gsSPLight(&inside_castle_seg7_light_07021808, 1),
- gsSPLight(&inside_castle_seg7_light_07021800, 2),
+ gsSPLight(&inside_castle_seg7_lights_07021800.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07021800.a, 2),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),
@@ -562,24 +558,17 @@ static const PaintingData *const inside_castle_seg7_painting_data_07022518[] = {
UNUSED static const u64 castle_inside_unused_0 = 0x0;
-// 0x07022528 - 0x07022530
-static const Ambient inside_castle_seg7_light_07022528 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x07022530 - 0x07022540
-static const Light inside_castle_seg7_light_07022530 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// 0x07022540 - 0x07022548
-static const Ambient inside_castle_seg7_light_07022540 = {
- {{0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0}
-};
+// 0x07022528 - 0x07022540
+static const Lights1 inside_castle_seg7_lights_07022528 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xff, 0xff, 0xff, 0x32, 0x32, 0x32
+);
-// 0x07022548 - 0x07022558
-static const Light inside_castle_seg7_light_07022548 = {
- {{0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28}, 0}
+// 0x07022540 - 0x07022558
+// No gdSPDefLights1 macro defined because of odd different light value (0xff and 0xfa)
+static const Lights1 inside_castle_seg7_lights_07022540 = {
+ {{ {0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0} },
+ {{{ {0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28},0} }}
};
// 0x07022558 - 0x07022598
@@ -603,8 +592,8 @@ static const Vtx inside_castle_seg7_vertex_07022598[] = {
const Gfx inside_castle_seg7_dl_070225D8[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
- gsSPLight(&inside_castle_seg7_light_07022530, 1),
- gsSPLight(&inside_castle_seg7_light_07022528, 2),
+ gsSPLight(&inside_castle_seg7_lights_07022528.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07022528.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(inside_castle_seg7_vertex_07022558, 4, 0),
gsSPEndDisplayList(),
@@ -1288,8 +1277,8 @@ const Gfx inside_castle_seg7_dl_07023520[] = {
// 0x07023580 - 0x070235B8
static const Gfx inside_castle_seg7_painting_dl_07023580[] = {
gsDPPipeSync(),
- gsSPLight(&inside_castle_seg7_light_07022548, 1),
- gsSPLight(&inside_castle_seg7_light_07022540, 2),
+ gsSPLight(&inside_castle_seg7_lights_07022540.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07022540.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07022598, 4, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSP1Triangle( 0, 2, 3, 0x0),
diff --git a/levels/castle_inside/script.c b/levels/castle_inside/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -16,38 +17,38 @@
#include "levels/castle_inside/header.h"
static const LevelScript script_func_local_1[] = {
- WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x02, /*destLevel*/ 0x1A, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x02, /*destLevel*/ LEVEL_CASTLE_COURTYARD, /*destArea*/ 0x01, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_8_STARS, /*pos*/ -2706, 512, -1409, /*angle*/ 0, 45, 0, /*behParam*/ 0x08000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_8_STARS, /*pos*/ -2598, 512, -1517, /*angle*/ 0, 225, 0, /*behParam*/ 0x08000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, 512, -1074, /*angle*/ 0, 0, 0, /*behParam*/ 0x01030000, /*beh*/ bhvDoorWarp),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -946, 512, -1074, /*angle*/ 0, 180, 0, /*behParam*/ 0x01040000, /*beh*/ bhvDoorWarp),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, -1074, 922, /*angle*/ 0, 0, 0, /*behParam*/ 0x02050000, /*beh*/ bhvDoorWarp),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -946, -1074, 922, /*angle*/ 0, 180, 0, /*behParam*/ 0x02060000, /*beh*/ bhvDoorWarp),
- WARP_NODE(/*id*/ 0x03, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x04, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x05, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x06, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x02, /*destLevel*/ 0x09, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x03, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x04, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x05, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x06, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x07, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x08, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x09, /*destLevel*/ 0x0C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x03, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x04, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x05, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x00, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x06, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x01, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x02, /*destLevel*/ LEVEL_BOB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x03, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x04, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x05, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x06, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x07, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x08, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x09, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2013, 768, -2014, /*angle*/ 0, 0, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_PSS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5513, 512, -4324, /*angle*/ 0, 0, 0, /*behParam*/ 0x300B0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x11, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BITDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1963, 819, 1280, /*angle*/ 0, 0, 0, /*behParam*/ 0x050C0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x14, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF2, /*destLevel*/ 0x1D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_SA, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF2, /*destLevel*/ LEVEL_TOTWC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024, 512, -650, /*angle*/ 0, 0, 0, /*behParam*/ 0x001E0000, /*beh*/ bhvWarps60),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024, -50, 717, /*angle*/ 0, 180, 0, /*behParam*/ 0x001F0000, /*beh*/ bhvWarps60),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024, 900, 717, /*angle*/ 0, 180, 0, /*behParam*/ 0x00200000, /*beh*/ bhvWarps64),
@@ -59,68 +60,68 @@ static const LevelScript script_func_local_1[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1024, 900, 717, /*angle*/ 0, 0, 0, /*behParam*/ 0x00260000, /*beh*/ bhvWarps88),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2816, 1200, -256, /*angle*/ 0, 90, 0, /*behParam*/ 0x00270000, /*beh*/ bhvWarps88),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2816, 1200, -256, /*angle*/ 0, 270, 0, /*behParam*/ 0x00280000, /*beh*/ bhvWarps70),
- WARP_NODE(/*id*/ 0x1E, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x1F, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x20, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x21, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x21, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x22, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x22, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x23, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x24, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x24, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x25, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x25, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x26, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x27, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x27, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x28, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x28, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1F, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x20, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x21, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x21, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x22, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x22, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x23, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x24, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x24, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x25, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x25, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x26, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x27, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x27, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x28, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x28, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5422, 717, -461, /*angle*/ 0, 270, 0, /*behParam*/ 0x00320000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2304, 0, -4552, /*angle*/ 0, 180, 0, /*behParam*/ 0x00330000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 256, 102, -4706, /*angle*/ 0, 180, 0, /*behParam*/ 0x00340000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4501, 717, -230, /*angle*/ 0, 90, 0, /*behParam*/ 0x00350000, /*beh*/ bhvWarps7C),
- WARP_NODE(/*id*/ 0x32, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x33, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x34, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x35, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5422, 717, -461, /*angle*/ 0, 270, 0, /*behParam*/ 0x00640000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2304, 0, -4552, /*angle*/ 0, 180, 0, /*behParam*/ 0x00650000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 256, 102, -4706, /*angle*/ 0, 180, 0, /*behParam*/ 0x00660000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4501, 717, -230, /*angle*/ 0, 90, 0, /*behParam*/ 0x00670000, /*beh*/ bhvWarps80),
- WARP_NODE(/*id*/ 0x64, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x65, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x66, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x67, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, 512, 3021, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvDoorWarp),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -946, 512, 3021, /*angle*/ 0, 180, 0, /*behParam*/ 0x00010000, /*beh*/ bhvDoorWarp),
- WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x04, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x04, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_50_STARS, /*pos*/ -281, 2253, 4762, /*angle*/ 0, 0, 0, /*behParam*/ 0x32000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_50_STARS, /*pos*/ -127, 2253, 4762, /*angle*/ 0, 180, 0, /*behParam*/ 0x32000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_70_STARS, /*pos*/ -281, 3174, 3772, /*angle*/ 0, 0, 0, /*behParam*/ 0x46000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_70_STARS, /*pos*/ -127, 3174, 3772, /*angle*/ 0, 180, 0, /*behParam*/ 0x46000000, /*beh*/ bhvStarDoor),
- PAINTING_WARP_NODE(/*id*/ 0x18, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x19, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1A, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1B, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1C, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1D, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1E, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x1F, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x20, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x21, /*destLevel*/ 0x0E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x22, /*destLevel*/ 0x0E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x23, /*destLevel*/ 0x0E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x24, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x25, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x26, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x27, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x28, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x29, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x2A, /*destLevel*/ 0x0F, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x18, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x19, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1A, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1B, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1C, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1D, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x1F, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x20, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x21, /*destLevel*/ LEVEL_TTC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x22, /*destLevel*/ LEVEL_TTC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x23, /*destLevel*/ LEVEL_TTC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x24, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x25, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x26, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x27, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x28, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x29, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x2A, /*destLevel*/ LEVEL_RR, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3002, 2816, 5886, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F0A0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1F, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_WMOTR, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -230, 4813, -3352, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F0B0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x15, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_BITS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -659, 1613, -350, /*angle*/ 0, 180, 0, /*behParam*/ 0x00320000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157, 1828, /*angle*/ 0, 270, 0, /*behParam*/ 0x00330000, /*beh*/ bhvWarps88),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -675, 1400, 3870, /*angle*/ 0, 0, 0, /*behParam*/ 0x00340000, /*beh*/ bhvWarps7C),
@@ -129,14 +130,14 @@ static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157, 1828, /*angle*/ 0, 270, 0, /*behParam*/ 0x00370000, /*beh*/ bhvWarps88),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3002, 2816, 5886, /*angle*/ 0, 90, 0, /*behParam*/ 0x00380000, /*beh*/ bhvWarps8C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3412, 2816, 5886, /*angle*/ 0, 270, 0, /*behParam*/ 0x003A0000, /*beh*/ bhvWarps8C),
- WARP_NODE(/*id*/ 0x32, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x33, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x34, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x35, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x36, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x37, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x38, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x38, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x3A, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x3A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x36, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x37, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x38, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x38, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x3A, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x3A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -659, 1613, -350, /*angle*/ 0, 180, 0, /*behParam*/ 0x00640000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4693, 2157, 1828, /*angle*/ 0, 270, 0, /*behParam*/ 0x00650000, /*beh*/ bhvWarps70),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -675, 1400, 3870, /*angle*/ 0, 0, 0, /*behParam*/ 0x00660000, /*beh*/ bhvWarps80),
@@ -146,58 +147,58 @@ static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -230, 4813, -3352, /*angle*/ 0, 180, 0, /*behParam*/ 0x006B0000, /*beh*/ bhvWarps90),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3412, 2816, 5886, /*angle*/ 0, 270, 0, /*behParam*/ 0x006C0000, /*beh*/ bhvWarps90),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3002, 2816, 5886, /*angle*/ 0, 90, 0, /*behParam*/ 0x006D0000, /*beh*/ bhvWarps90),
- WARP_NODE(/*id*/ 0x64, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x65, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x66, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x67, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x68, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x69, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x6B, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x6C, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x6D, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6D, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x68, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x69, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x6B, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x6C, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x6D, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6D, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
static const LevelScript script_func_local_3[] = {
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -1100, -1074, 922, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvDoorWarp),
OBJECT(/*model*/ MODEL_CASTLE_KEY_DOOR, /*pos*/ -946, -1074, 922, /*angle*/ 0, 180, 0, /*behParam*/ 0x00010000, /*beh*/ bhvDoorWarp),
- WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x05, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x02, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x05, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x02, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x02, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_30_STARS, /*pos*/ 307, -1074, 2074, /*angle*/ 0, 90, 0, /*behParam*/ 0x1E000000, /*beh*/ bhvStarDoor),
OBJECT(/*model*/ MODEL_CASTLE_STAR_DOOR_30_STARS, /*pos*/ 307, -1074, 1920, /*angle*/ 0, 270, 0, /*behParam*/ 0x1E000000, /*beh*/ bhvStarDoor),
- PAINTING_WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x0D, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x0E, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x0F, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x10, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x11, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x2A, /*destLevel*/ 0x07, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x15, /*destLevel*/ 0x17, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x16, /*destLevel*/ 0x17, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x17, /*destLevel*/ 0x17, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0D, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0E, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x0F, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x10, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x11, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x2A, /*destLevel*/ LEVEL_HMC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x15, /*destLevel*/ LEVEL_DDD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x16, /*destLevel*/ LEVEL_DDD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x17, /*destLevel*/ LEVEL_DDD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4147, -1280, 1997, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F180000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x18, /*destLevel*/ 0x13, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x18, /*destLevel*/ LEVEL_BITFS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382, -819, -4150, /*angle*/ 0, 180, 0, /*behParam*/ 0x00320000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2918, -870, -875, /*angle*/ 0, 0, 0, /*behParam*/ 0x00330000, /*beh*/ bhvWarps7C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2483, -1688, -2662, /*angle*/ 0, 270, 0, /*behParam*/ 0x00340000, /*beh*/ bhvWarps8C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2381, -500, 2011, /*angle*/ 0, 90, 0, /*behParam*/ 0x00350000, /*beh*/ bhvWarps88),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4147, -1100, 1997, /*angle*/ 0, 90, 0, /*behParam*/ 0x00360000, /*beh*/ bhvWarps8C),
- WARP_NODE(/*id*/ 0x32, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x33, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x34, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x35, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x36, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x32, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x33, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x34, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x35, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x36, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1382, -819, -4150, /*angle*/ 0, 180, 0, /*behParam*/ 0x00640000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2918, -870, -875, /*angle*/ 0, 0, 0, /*behParam*/ 0x00650000, /*beh*/ bhvWarps80),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2483, -1688, -2662, /*angle*/ 0, 270, 0, /*behParam*/ 0x00660000, /*beh*/ bhvWarps90),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2381, -500, 2011, /*angle*/ 0, 90, 0, /*behParam*/ 0x00670000, /*beh*/ bhvWarps70),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 4147, -1100, 1997, /*angle*/ 0, 90, 0, /*behParam*/ 0x00680000, /*beh*/ bhvWarps90),
- WARP_NODE(/*id*/ 0x64, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x65, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x66, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x67, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x68, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x64, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x65, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x66, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x67, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x68, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
@@ -218,7 +219,7 @@ static const LevelScript script_func_local_4[] = {
RETURN(),
};
-const LevelScript level_castle_entry[] = {
+const LevelScript level_castle_inside_entry[] = {
INIT_LEVEL(),
LOAD_MIO0( /*seg*/ 0x07, _castle_inside_segment_7SegmentRomStart, _castle_inside_segment_7SegmentRomEnd),
LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _inside_mio0SegmentRomStart, _inside_mio0SegmentRomEnd),
@@ -256,11 +257,11 @@ const LevelScript level_castle_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3748, 507, 773, /*angle*/ 0, -45, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTankFishGroup),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2778, 507, 1255, /*angle*/ 0, -90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvTankFishGroup),
OBJECT(/*model*/ MODEL_BOO_CASTLE, /*pos*/ -1000, 50, -3500, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvBooInCastle),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -1671, 0, 1313, /*angle*/ 0, 83, 0, /*behParam*/ 0x85000000, /*beh*/ bhvToadMessage),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 1524, 307, 458, /*angle*/ 0, 110, 0, /*behParam*/ 0x86000000, /*beh*/ bhvToadMessage),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 596, -306, -2637, /*angle*/ 0, 152, 0, /*behParam*/ 0x87000000, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -1671, 0, 1313, /*angle*/ 0, 83, 0, /*behParam*/ DIALOG_133 << 24, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 1524, 307, 458, /*angle*/ 0, 110, 0, /*behParam*/ DIALOG_134 << 24, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 596, -306, -2637, /*angle*/ 0, 152, 0, /*behParam*/ DIALOG_135 << 24, /*beh*/ bhvToadMessage),
JUMP_LINK(script_func_local_1),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ inside_castle_seg7_area_1_collision),
ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_1_rooms),
MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_1_macro_objs),
@@ -273,11 +274,11 @@ const LevelScript level_castle_entry[] = {
OBJECT(/*model*/ MODEL_CASTLE_CLOCK_HOUR_HAND, /*pos*/ -205, 2918, 7222, /*angle*/ 0, 180, 0, /*behParam*/ 0x00000000, /*beh*/ bhvClockHourHand),
OBJECT(/*model*/ MODEL_CASTLE_CLOCK_PENDULUM, /*pos*/ -205, 2611, 7140, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvDecorativePendulum),
OBJECT(/*model*/ MODEL_LAKITU, /*pos*/ 4231, 1408, 1601, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvCameraLakitu),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -977, 1203, 2569, /*angle*/ 0, 0, 0, /*behParam*/ 0x4C000000, /*beh*/ bhvToadMessage),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -1584, 2253, 7157, /*angle*/ 0, 136, 0, /*behParam*/ 0x53000000, /*beh*/ bhvToadMessage),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 837, 1203, 3020, /*angle*/ 0, 180, 0, /*behParam*/ 0x89000000, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -977, 1203, 2569, /*angle*/ 0, 0, 0, /*behParam*/ DIALOG_076 << 24, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -1584, 2253, 7157, /*angle*/ 0, 136, 0, /*behParam*/ DIALOG_083 << 24, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 837, 1203, 3020, /*angle*/ 0, 180, 0, /*behParam*/ DIALOG_137 << 24, /*beh*/ bhvToadMessage),
JUMP_LINK(script_func_local_2),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ inside_castle_seg7_area_2_collision),
ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_2_rooms),
MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_2_macro_objs),
@@ -291,11 +292,11 @@ const LevelScript level_castle_entry[] = {
OBJECT(/*model*/ MODEL_CASTLE_WATER_LEVEL_PILLAR, /*pos*/ 7066, -1178, -205, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvWaterLevelPillar),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvDddWarp),
OBJECT(/*model*/ MODEL_MIPS, /*pos*/ -1509, -1177, -1564, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvMips),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 1787, -1381, -1957, /*angle*/ 0, 126, 0, /*behParam*/ 0x52000000, /*beh*/ bhvToadMessage),
- OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -4048, -1381, -1334, /*angle*/ 0, 30, 0, /*behParam*/ 0x88000000, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ 1787, -1381, -1957, /*angle*/ 0, 126, 0, /*behParam*/ DIALOG_082 << 24, /*beh*/ bhvToadMessage),
+ OBJECT(/*model*/ MODEL_TOAD, /*pos*/ -4048, -1381, -1334, /*angle*/ 0, 30, 0, /*behParam*/ DIALOG_136 << 24, /*beh*/ bhvToadMessage),
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_4),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x03, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ inside_castle_seg7_area_3_collision),
ROOMS(/*surfaceRooms*/ inside_castle_seg7_area_3_rooms),
MACRO_OBJECTS(/*objList*/ inside_castle_seg7_area_3_macro_objs),
diff --git a/levels/castle_inside/star_door/model.inc.c b/levels/castle_inside/star_door/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0703BD28 - 0x0703BD30
-static const Ambient inside_castle_seg7_light_0703BD28 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0703BD30 - 0x0703BD40
-static const Light inside_castle_seg7_light_0703BD30 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703BD28 - 0x0703BD40
+static const Lights1 inside_castle_seg7_lights_0703BD28 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703BD40 - 0x0703BE40
static const Vtx inside_castle_seg7_vertex_0703BD40[] = {
@@ -49,8 +45,8 @@ static const Gfx inside_castle_seg7_dl_0703BEC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_castle_seg7_texture_07005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703BD30, 1),
- gsSPLight(&inside_castle_seg7_light_0703BD28, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703BD28.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703BD28.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703BD40, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/trap_door/model.inc.c b/levels/castle_inside/trap_door/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0703BAB0 - 0x0703BAB8
-static const Ambient inside_castle_seg7_light_0703BAB0 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x0703BAB8 - 0x0703BAC8
-static const Light inside_castle_seg7_light_0703BAB8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0703BAB0 - 0x0703BAC8
+static const Lights1 inside_castle_seg7_lights_0703BAB0 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0703BAC8 - 0x0703BBB8
static const Vtx inside_castle_seg7_vertex_0703BAC8[] = {
@@ -43,8 +39,8 @@ static const Gfx inside_castle_seg7_dl_0703BC28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_0703BAB8, 1),
- gsSPLight(&inside_castle_seg7_light_0703BAB0, 2),
+ gsSPLight(&inside_castle_seg7_lights_0703BAB0.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_0703BAB0.a, 2),
gsSPVertex(inside_castle_seg7_vertex_0703BAC8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/castle_inside/water_level_pillar/model.inc.c b/levels/castle_inside/water_level_pillar/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07068908 - 0x07068910
-static const Ambient inside_castle_seg7_light_07068908 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07068910 - 0x07068920
-static const Light inside_castle_seg7_light_07068910 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07068908 - 0x07068920
+static const Lights1 inside_castle_seg7_lights_07068908 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07068920 - 0x07068960
static const Vtx inside_castle_seg7_vertex_07068920[] = {
@@ -41,8 +37,8 @@ static const Gfx inside_castle_seg7_dl_07068A60[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&inside_castle_seg7_light_07068910, 1),
- gsSPLight(&inside_castle_seg7_light_07068908, 2),
+ gsSPLight(&inside_castle_seg7_lights_07068908.l, 1),
+ gsSPLight(&inside_castle_seg7_lights_07068908.a, 2),
gsSPVertex(inside_castle_seg7_vertex_07068920, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/1/1/model.inc.c b/levels/ccm/areas/1/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07005300 - 0x07005308
-static const Ambient ccm_seg7_light_07005300 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07005308 - 0x07005318
-static const Light ccm_seg7_light_07005308 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005318 - 0x07005320
-static const Ambient ccm_seg7_light_07005318 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07005320 - 0x07005330
-static const Light ccm_seg7_light_07005320 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005330 - 0x07005338
-static const Ambient ccm_seg7_light_07005330 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x07005338 - 0x07005348
-static const Light ccm_seg7_light_07005338 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005348 - 0x07005350
-static const Ambient ccm_seg7_light_07005348 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07005350 - 0x07005360
-static const Light ccm_seg7_light_07005350 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005300 - 0x07005318
+static const Lights1 ccm_seg7_lights_07005300 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07005318 - 0x07005330
+static const Lights1 ccm_seg7_lights_07005318 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07005330 - 0x07005348
+static const Lights1 ccm_seg7_lights_07005330 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07005348 - 0x07005360
+static const Lights1 ccm_seg7_lights_07005348 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
// 0x07005360 - 0x07005460
static const Vtx ccm_seg7_vertex_07005360[] = {
@@ -1451,8 +1435,8 @@ static const Gfx ccm_seg7_dl_07009820[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_07005360, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
@@ -1550,8 +1534,8 @@ static const Gfx ccm_seg7_dl_07009820[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 6, 5, 8, 0x0),
gsSP2Triangles( 4, 5, 7, 0x0, 8, 3, 2, 0x0),
- gsSPLight(&ccm_seg7_light_07005320, 1),
- gsSPLight(&ccm_seg7_light_07005318, 2),
+ gsSPLight(&ccm_seg7_lights_07005318.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005318.a, 2),
gsSPVertex(ccm_seg7_vertex_07006250, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 5, 0x0, 0, 3, 4, 0x0),
@@ -1563,8 +1547,8 @@ static const Gfx ccm_seg7_dl_07009DD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_070062B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
@@ -1574,8 +1558,8 @@ static const Gfx ccm_seg7_dl_07009DD0[] = {
gsSPVertex(ccm_seg7_vertex_070063A0, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 4, 6, 5, 0x0),
- gsSPLight(&ccm_seg7_light_07005338, 1),
- gsSPLight(&ccm_seg7_light_07005330, 2),
+ gsSPLight(&ccm_seg7_lights_07005330.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005330.a, 2),
gsSPVertex(ccm_seg7_vertex_07006410, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 0, 3, 0x0, 6, 7, 3, 0x0),
@@ -1595,8 +1579,8 @@ static const Gfx ccm_seg7_dl_07009F28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_070065B0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 4, 5, 0, 0x0, 2, 6, 0, 0x0),
@@ -1630,8 +1614,8 @@ static const Gfx ccm_seg7_dl_07009F28[] = {
gsSP2Triangles( 3, 5, 6, 0x0, 7, 5, 4, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 11, 8, 10, 0x0),
gsSP1Triangle(12, 11, 10, 0x0),
- gsSPLight(&ccm_seg7_light_07005320, 1),
- gsSPLight(&ccm_seg7_light_07005318, 2),
+ gsSPLight(&ccm_seg7_lights_07005318.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005318.a, 2),
gsSPVertex(ccm_seg7_vertex_07006B70, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 6, 3, 0x0),
@@ -1643,8 +1627,8 @@ static const Gfx ccm_seg7_dl_07009F28[] = {
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 8, 7, 0x0),
gsSP2Triangles(10, 7, 11, 0x0, 10, 12, 13, 0x0),
- gsSPLight(&ccm_seg7_light_07005338, 1),
- gsSPLight(&ccm_seg7_light_07005330, 2),
+ gsSPLight(&ccm_seg7_lights_07005330.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005330.a, 2),
gsSPVertex(ccm_seg7_vertex_07006D50, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1661,8 +1645,8 @@ static const Gfx ccm_seg7_dl_0700A248[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_07006F10, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1768,8 +1752,8 @@ static const Gfx ccm_seg7_dl_0700A248[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 11, 12, 8, 0x0),
gsSP2Triangles(11, 8, 10, 0x0, 13, 14, 15, 0x0),
- gsSPLight(&ccm_seg7_light_07005350, 1),
- gsSPLight(&ccm_seg7_light_07005348, 2),
+ gsSPLight(&ccm_seg7_lights_07005348.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005348.a, 2),
gsSPVertex(ccm_seg7_vertex_07008130, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 5, 1, 4, 0x0),
@@ -1778,8 +1762,8 @@ static const Gfx ccm_seg7_dl_0700A248[] = {
gsSP2Triangles(11, 12, 13, 0x0, 14, 7, 15, 0x0),
gsSPVertex(ccm_seg7_vertex_07008230, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ccm_seg7_light_07005320, 1),
- gsSPLight(&ccm_seg7_light_07005318, 2),
+ gsSPLight(&ccm_seg7_lights_07005318.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005318.a, 2),
gsSPVertex(ccm_seg7_vertex_07008260, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 7, 5, 8, 0x0),
@@ -1806,8 +1790,8 @@ static const Gfx ccm_seg7_dl_0700A248[] = {
gsSPVertex(ccm_seg7_vertex_07008630, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 5, 6, 0x0),
- gsSPLight(&ccm_seg7_light_07005338, 1),
- gsSPLight(&ccm_seg7_light_07005330, 2),
+ gsSPLight(&ccm_seg7_lights_07005330.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005330.a, 2),
gsSPVertex(ccm_seg7_vertex_070086A0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1836,22 +1820,22 @@ static const Gfx ccm_seg7_dl_0700AB00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_07008A20, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 6, 8, 3, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles(10, 0, 2, 0x0, 7, 11, 9, 0x0),
gsSP2Triangles( 1, 12, 2, 0x0, 7, 13, 11, 0x0),
- gsSPLight(&ccm_seg7_light_07005320, 1),
- gsSPLight(&ccm_seg7_light_07005318, 2),
+ gsSPLight(&ccm_seg7_lights_07005318.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005318.a, 2),
gsSPVertex(ccm_seg7_vertex_07008B00, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 5, 7, 0x0, 0, 6, 7, 0x0),
gsSP1Triangle( 0, 2, 6, 0x0),
- gsSPLight(&ccm_seg7_light_07005338, 1),
- gsSPLight(&ccm_seg7_light_07005330, 2),
+ gsSPLight(&ccm_seg7_lights_07005330.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005330.a, 2),
gsSPVertex(ccm_seg7_vertex_07008B80, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 2, 6, 0, 0x0),
@@ -1863,8 +1847,8 @@ static const Gfx ccm_seg7_dl_0700ABF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07005308, 1),
- gsSPLight(&ccm_seg7_light_07005300, 2),
+ gsSPLight(&ccm_seg7_lights_07005300.l, 1),
+ gsSPLight(&ccm_seg7_lights_07005300.a, 2),
gsSPVertex(ccm_seg7_vertex_07008BF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 2, 4, 3, 0x0),
diff --git a/levels/ccm/areas/1/10/1.inc.c b/levels/ccm/areas/1/10/1.inc.c
@@ -1,32 +1,20 @@
-// 0x0700FD88 - 0x0700FD90
-static const Ambient ccm_seg7_light_0700FD88 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700FD90 - 0x0700FDA0
-static const Light ccm_seg7_light_0700FD90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FDA0 - 0x0700FDA8
-static const Ambient ccm_seg7_light_0700FDA0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700FDA8 - 0x0700FDB8
-static const Light ccm_seg7_light_0700FDA8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FDB8 - 0x0700FDC0
-static const Ambient ccm_seg7_light_0700FDB8 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700FDC0 - 0x0700FDD0
-static const Light ccm_seg7_light_0700FDC0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FD88 - 0x0700FDA0
+static const Lights1 ccm_seg7_lights_0700FD88 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700FDA0 - 0x0700FDB8
+static const Lights1 ccm_seg7_lights_0700FDA0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0700FDB8 - 0x0700FDD0
+static const Lights1 ccm_seg7_lights_0700FDB8 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700FDD0 - 0x0700FE10
static const Vtx ccm_seg7_vertex_0700FDD0[] = {
@@ -165,20 +153,20 @@ static const Gfx ccm_seg7_dl_07010390[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700FD90, 1),
- gsSPLight(&ccm_seg7_light_0700FD88, 2),
+ gsSPLight(&ccm_seg7_lights_0700FD88.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FD88.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FDD0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ccm_seg7_light_0700FDA8, 1),
- gsSPLight(&ccm_seg7_light_0700FDA0, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FE10, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 10, 2, 0x0),
gsSP2Triangles( 2, 10, 0, 0x0, 12, 2, 13, 0x0),
gsSP2Triangles(13, 2, 1, 0x0, 12, 11, 2, 0x0),
- gsSPLight(&ccm_seg7_light_0700FDC0, 1),
- gsSPLight(&ccm_seg7_light_0700FDB8, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FEF0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 3, 1, 0, 0x0),
@@ -191,12 +179,12 @@ static const Gfx ccm_seg7_dl_07010480[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700FDA8, 1),
- gsSPLight(&ccm_seg7_light_0700FDA0, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FF70, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
- gsSPLight(&ccm_seg7_light_0700FDC0, 1),
- gsSPLight(&ccm_seg7_light_0700FDB8, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FFB0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 4, 7, 0x0),
@@ -210,8 +198,8 @@ static const Gfx ccm_seg7_dl_07010518[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700FDA8, 1),
- gsSPLight(&ccm_seg7_light_0700FDA0, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDA0.a, 2),
gsSPVertex(ccm_seg7_vertex_07010070, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 7, 4, 0x0),
@@ -219,8 +207,8 @@ static const Gfx ccm_seg7_dl_07010518[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(ccm_seg7_vertex_07010160, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
- gsSPLight(&ccm_seg7_light_0700FDC0, 1),
- gsSPLight(&ccm_seg7_light_0700FDB8, 2),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FDB8.a, 2),
gsSPVertex(ccm_seg7_vertex_070101A0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
diff --git a/levels/ccm/areas/1/10/3.inc.c b/levels/ccm/areas/1/10/3.inc.c
@@ -1,12 +1,8 @@
-// 0x07010A60 - 0x07010A68
-static const Ambient ccm_seg7_light_07010A60 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010A68 - 0x07010A78
-static const Light ccm_seg7_light_07010A68 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010A60 - 0x07010A78
+static const Lights1 ccm_seg7_lights_07010A60 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010A78 - 0x07010AF8
static const Vtx ccm_seg7_vertex_07010A78[] = {
@@ -25,8 +21,8 @@ static const Gfx ccm_seg7_dl_07010AF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07010A68, 1),
- gsSPLight(&ccm_seg7_light_07010A60, 2),
+ gsSPLight(&ccm_seg7_lights_07010A60.l, 1),
+ gsSPLight(&ccm_seg7_lights_07010A60.a, 2),
gsSPVertex(ccm_seg7_vertex_07010A78, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ccm/areas/1/2/model.inc.c b/levels/ccm/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B118 - 0x0700B120
-static const Ambient ccm_seg7_light_0700B118 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700B120 - 0x0700B130
-static const Light ccm_seg7_light_0700B120 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B118 - 0x0700B130
+static const Lights1 ccm_seg7_lights_0700B118 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700B130 - 0x0700B190
static const Vtx ccm_seg7_vertex_0700B130[] = {
@@ -23,8 +19,8 @@ static const Gfx ccm_seg7_dl_0700B190[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700B120, 1),
- gsSPLight(&ccm_seg7_light_0700B118, 2),
+ gsSPLight(&ccm_seg7_lights_0700B118.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B118.a, 2),
gsSPVertex(ccm_seg7_vertex_0700B130, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/1/3/model.inc.c b/levels/ccm/areas/1/3/model.inc.c
@@ -1,42 +1,26 @@
-// 0x0700B248 - 0x0700B250
-static const Ambient ccm_seg7_light_0700B248 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700B250 - 0x0700B260
-static const Light ccm_seg7_light_0700B250 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700B260 - 0x0700B268
-static const Ambient ccm_seg7_light_0700B260 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700B268 - 0x0700B278
-static const Light ccm_seg7_light_0700B268 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700B278 - 0x0700B280
-static const Ambient ccm_seg7_light_0700B278 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
+// 0x0700B248 - 0x0700B260
+static const Lights1 ccm_seg7_lights_0700B248 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700B280 - 0x0700B290
-static const Light ccm_seg7_light_0700B280 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B260 - 0x0700B278
+static const Lights1 ccm_seg7_lights_0700B260 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700B290 - 0x0700B298
-static const Ambient ccm_seg7_light_0700B290 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
+// 0x0700B278 - 0x0700B290
+static const Lights1 ccm_seg7_lights_0700B278 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
-// 0x0700B298 - 0x0700B2A8
-static const Light ccm_seg7_light_0700B298 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B290 - 0x0700B2A8
+static const Lights1 ccm_seg7_lights_0700B290 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0700B2A8 - 0x0700B3A8
static const Vtx ccm_seg7_vertex_0700B2A8[] = {
@@ -313,8 +297,8 @@ static const Gfx ccm_seg7_dl_0700BF88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 4 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700B250, 1),
- gsSPLight(&ccm_seg7_light_0700B248, 2),
+ gsSPLight(&ccm_seg7_lights_0700B248.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B248.a, 2),
gsSPVertex(ccm_seg7_vertex_0700B2A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -355,16 +339,16 @@ static const Gfx ccm_seg7_dl_0700C000[] = {
gsSPVertex(ccm_seg7_vertex_0700B988, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ccm_seg7_light_0700B268, 1),
- gsSPLight(&ccm_seg7_light_0700B260, 2),
+ gsSPLight(&ccm_seg7_lights_0700B260.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B260.a, 2),
gsSPVertex(ccm_seg7_vertex_0700BA08, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(ccm_seg7_vertex_0700BB08, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ccm_seg7_light_0700B280, 1),
- gsSPLight(&ccm_seg7_light_0700B278, 2),
+ gsSPLight(&ccm_seg7_lights_0700B278.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B278.a, 2),
gsSPVertex(ccm_seg7_vertex_0700BB38, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP1Triangle( 0, 4, 3, 0x0),
@@ -376,8 +360,8 @@ static const Gfx ccm_seg7_dl_0700C220[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700B250, 1),
- gsSPLight(&ccm_seg7_light_0700B248, 2),
+ gsSPLight(&ccm_seg7_lights_0700B248.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B248.a, 2),
gsSPVertex(ccm_seg7_vertex_0700BB88, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -401,8 +385,8 @@ static const Gfx ccm_seg7_dl_0700C220[] = {
// 0x0700C330 - 0x0700C380
static const Gfx ccm_seg7_dl_0700C330[] = {
- gsSPLight(&ccm_seg7_light_0700B298, 1),
- gsSPLight(&ccm_seg7_light_0700B290, 2),
+ gsSPLight(&ccm_seg7_lights_0700B290.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700B290.a, 2),
gsSPVertex(ccm_seg7_vertex_0700BEC8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/ccm/areas/1/6/1.inc.c b/levels/ccm/areas/1/6/1.inc.c
@@ -1,42 +1,26 @@
-// 0x0700DE68 - 0x0700DE70
-static const Ambient ccm_seg7_light_0700DE68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700DE70 - 0x0700DE80
-static const Light ccm_seg7_light_0700DE70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700DE80 - 0x0700DE88
-static const Ambient ccm_seg7_light_0700DE80 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700DE88 - 0x0700DE98
-static const Light ccm_seg7_light_0700DE88 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700DE98 - 0x0700DEA0
-static const Ambient ccm_seg7_light_0700DE98 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700DEA0 - 0x0700DEB0
-static const Light ccm_seg7_light_0700DEA0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700DEB0 - 0x0700DEB8
-static const Ambient ccm_seg7_light_0700DEB0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0700DEB8 - 0x0700DEC8
-static const Light ccm_seg7_light_0700DEB8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700DE68 - 0x0700DE80
+static const Lights1 ccm_seg7_lights_0700DE68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700DE80 - 0x0700DE98
+static const Lights1 ccm_seg7_lights_0700DE80 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0700DE98 - 0x0700DEB0
+static const Lights1 ccm_seg7_lights_0700DE98 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x0700DEB0 - 0x0700DEC8
+static const Lights1 ccm_seg7_lights_0700DEB0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0700DEC8 - 0x0700DF88
static const Vtx ccm_seg7_vertex_0700DEC8[] = {
@@ -173,8 +157,8 @@ static const Gfx ccm_seg7_dl_0700E4A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700DE70, 1),
- gsSPLight(&ccm_seg7_light_0700DE68, 2),
+ gsSPLight(&ccm_seg7_lights_0700DE68.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700DE68.a, 2),
gsSPVertex(ccm_seg7_vertex_0700DEC8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
@@ -193,8 +177,8 @@ static const Gfx ccm_seg7_dl_0700E530[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),
- gsSPLight(&ccm_seg7_light_0700DE88, 1),
- gsSPLight(&ccm_seg7_light_0700DE80, 2),
+ gsSPLight(&ccm_seg7_lights_0700DE80.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700DE80.a, 2),
gsSPVertex(ccm_seg7_vertex_0700E068, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -205,8 +189,8 @@ static const Gfx ccm_seg7_dl_0700E530[] = {
gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(ccm_seg7_vertex_0700E268, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ccm_seg7_light_0700DEA0, 1),
- gsSPLight(&ccm_seg7_light_0700DE98, 2),
+ gsSPLight(&ccm_seg7_lights_0700DE98.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700DE98.a, 2),
gsSPVertex(ccm_seg7_vertex_0700E2C8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -219,8 +203,8 @@ static const Gfx ccm_seg7_dl_0700E668[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700DE70, 1),
- gsSPLight(&ccm_seg7_light_0700DE68, 2),
+ gsSPLight(&ccm_seg7_lights_0700DE68.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700DE68.a, 2),
gsSPVertex(ccm_seg7_vertex_0700E3A8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -231,8 +215,8 @@ static const Gfx ccm_seg7_dl_0700E668[] = {
static const Gfx ccm_seg7_dl_0700E6C0[] = {
gsSPVertex(ccm_seg7_vertex_0700E428, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
- gsSPLight(&ccm_seg7_light_0700DEB8, 1),
- gsSPLight(&ccm_seg7_light_0700DEB0, 2),
+ gsSPLight(&ccm_seg7_lights_0700DEB0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700DEB0.a, 2),
gsSPVertex(ccm_seg7_vertex_0700E468, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/1/7/1.inc.c b/levels/ccm/areas/1/7/1.inc.c
@@ -1,32 +1,20 @@
-// 0x0700EA00 - 0x0700EA08
-static const Ambient ccm_seg7_light_0700EA00 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x0700EA00 - 0x0700EA18
+static const Lights1 ccm_seg7_lights_0700EA00 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700EA08 - 0x0700EA18
-static const Light ccm_seg7_light_0700EA08 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EA18 - 0x0700EA30
+static const Lights1 ccm_seg7_lights_0700EA18 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
-// 0x0700EA18 - 0x0700EA20
-static const Ambient ccm_seg7_light_0700EA18 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0700EA20 - 0x0700EA30
-static const Light ccm_seg7_light_0700EA20 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700EA30 - 0x0700EA38
-static const Ambient ccm_seg7_light_0700EA30 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700EA38 - 0x0700EA48
-static const Light ccm_seg7_light_0700EA38 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EA30 - 0x0700EA48
+static const Lights1 ccm_seg7_lights_0700EA30 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700EA48 - 0x0700EAE8
static const Vtx ccm_seg7_vertex_0700EA48[] = {
@@ -192,8 +180,8 @@ static const Gfx ccm_seg7_dl_0700F1B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700EA08, 1),
- gsSPLight(&ccm_seg7_light_0700EA00, 2),
+ gsSPLight(&ccm_seg7_lights_0700EA00.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700EA00.a, 2),
gsSPVertex(ccm_seg7_vertex_0700EA48, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
@@ -222,16 +210,16 @@ static const Gfx ccm_seg7_dl_0700F210[] = {
gsSPVertex(ccm_seg7_vertex_0700ED98, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
- gsSPLight(&ccm_seg7_light_0700EA20, 1),
- gsSPLight(&ccm_seg7_light_0700EA18, 2),
+ gsSPLight(&ccm_seg7_lights_0700EA18.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700EA18.a, 2),
gsSPVertex(ccm_seg7_vertex_0700EE38, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(ccm_seg7_vertex_0700EF38, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ccm_seg7_light_0700EA38, 1),
- gsSPLight(&ccm_seg7_light_0700EA30, 2),
+ gsSPLight(&ccm_seg7_lights_0700EA30.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700EA30.a, 2),
gsSPVertex(ccm_seg7_vertex_0700EF98, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -243,8 +231,8 @@ static const Gfx ccm_seg7_dl_0700F3B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700EA20, 1),
- gsSPLight(&ccm_seg7_light_0700EA18, 2),
+ gsSPLight(&ccm_seg7_lights_0700EA18.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700EA18.a, 2),
gsSPVertex(ccm_seg7_vertex_0700F058, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ccm/areas/1/7/3.inc.c b/levels/ccm/areas/1/7/3.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F6E0 - 0x0700F6E8
-static const Ambient ccm_seg7_light_0700F6E0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700F6E8 - 0x0700F6F8
-static const Light ccm_seg7_light_0700F6E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F6E0 - 0x0700F6F8
+static const Lights1 ccm_seg7_lights_0700F6E0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F6F8 - 0x0700F738
static const Vtx ccm_seg7_vertex_0700F6F8[] = {
@@ -21,8 +17,8 @@ static const Gfx ccm_seg7_dl_0700F738[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700F6E8, 1),
- gsSPLight(&ccm_seg7_light_0700F6E0, 2),
+ gsSPLight(&ccm_seg7_lights_0700F6E0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700F6E0.a, 2),
gsSPVertex(ccm_seg7_vertex_0700F6F8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/1/8/model.inc.c b/levels/ccm/areas/1/8/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F800 - 0x0700F808
-static const Ambient ccm_seg7_light_0700F800 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700F808 - 0x0700F818
-static const Light ccm_seg7_light_0700F808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F800 - 0x0700F818
+static const Lights1 ccm_seg7_lights_0700F800 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F818 - 0x0700F878
static const Vtx ccm_seg7_vertex_0700F818[] = {
@@ -57,8 +53,8 @@ static const Gfx ccm_seg7_dl_0700FA18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700F808, 1),
- gsSPLight(&ccm_seg7_light_0700F800, 2),
+ gsSPLight(&ccm_seg7_lights_0700F800.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700F800.a, 2),
gsSPVertex(ccm_seg7_vertex_0700F818, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 4, 5, 0x0),
diff --git a/levels/ccm/areas/1/9/model.inc.c b/levels/ccm/areas/1/9/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700FB78 - 0x0700FB80
-static const Ambient ccm_seg7_light_0700FB78 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700FB80 - 0x0700FB90
-static const Light ccm_seg7_light_0700FB80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FB78 - 0x0700FB90
+static const Lights1 ccm_seg7_lights_0700FB78 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700FB90 - 0x0700FC90
static const Vtx ccm_seg7_vertex_0700FB90[] = {
@@ -33,8 +29,8 @@ static const Gfx ccm_seg7_dl_0700FC90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0700FB80, 1),
- gsSPLight(&ccm_seg7_light_0700FB78, 2),
+ gsSPLight(&ccm_seg7_lights_0700FB78.l, 1),
+ gsSPLight(&ccm_seg7_lights_0700FB78.a, 2),
gsSPVertex(ccm_seg7_vertex_0700FB90, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ccm/areas/1/geo.inc.c b/levels/ccm/areas/1/geo.inc.c
@@ -29,7 +29,7 @@ const GeoLayout ccm_geo_00051C[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/ccm/areas/1/macro.inc.c b/levels/ccm/areas/1/macro.inc.c
@@ -1,6 +1,6 @@
// 0x07016284 - 0x070163F8
const MacroObject ccm_seg7_area_1_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -2412, 2912, -878, /*behParam*/ 40),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -2412, 2912, -878, /*behParam*/ DIALOG_040),
MACRO_OBJECT(/*preset*/ macro_mr_blizzard, /*yaw*/ 0, /*pos*/ 3054, -2674, 2072),
MACRO_OBJECT(/*preset*/ macro_spindrift, /*yaw*/ 0, /*pos*/ 2542, 2622, -1714),
MACRO_OBJECT(/*preset*/ macro_spindrift, /*yaw*/ 0, /*pos*/ -6090, -1740, 1936),
@@ -11,17 +11,17 @@ const MacroObject ccm_seg7_area_1_macro_objs[] = {
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ -3615, -4607, 4790, /*behParam*/ 0x00),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ -5045, -1740, 4615, /*behParam*/ 0x00),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 1090, -4607, 5729, /*behParam*/ 0x80),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -1060, 2560, -1840, /*behParam*/ 87),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -1060, 2560, -1840, /*behParam*/ DIALOG_087),
MACRO_OBJECT(/*preset*/ macro_coin_line_vertical, /*yaw*/ 0, /*pos*/ -180, 3100, -1480),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 3560, 2100, -280),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 77, /*pos*/ -1942, 1334, 1678),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ -1020, 646, -2706),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 93, /*pos*/ -1460, -888, -3933),
MACRO_OBJECT(/*preset*/ macro_coin_arrow, /*yaw*/ 75, /*pos*/ -2586, -4889, -4093),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4350, -4864, -4813, /*behParam*/ 94),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -1037, -3583, 5872, /*behParam*/ 91),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -309, -4889, -3690, /*behParam*/ 49),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 1900, -1535, 3500, /*behParam*/ 40),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -4350, -4864, -4813, /*behParam*/ DIALOG_094),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -1037, -3583, 5872, /*behParam*/ DIALOG_091),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -309, -4889, -3690, /*behParam*/ DIALOG_049),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 1900, -1535, 3500, /*behParam*/ DIALOG_040),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -488, 3100, -2305),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -3120, -1200, -2080),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ -5200, -1345, 2995),
diff --git a/levels/ccm/areas/2/1/model.inc.c b/levels/ccm/areas/2/1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07016718 - 0x07016720
-static const Ambient ccm_seg7_light_07016718 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07016720 - 0x07016730
-static const Light ccm_seg7_light_07016720 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07016718 - 0x07016730
+static const Lights1 ccm_seg7_lights_07016718 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07016730 - 0x07016770
static const Vtx ccm_seg7_vertex_07016730[] = {
@@ -1504,8 +1500,8 @@ static const Gfx ccm_seg7_dl_0701B0E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07016720, 1),
- gsSPLight(&ccm_seg7_light_07016718, 2),
+ gsSPLight(&ccm_seg7_lights_07016718.l, 1),
+ gsSPLight(&ccm_seg7_lights_07016718.a, 2),
gsSPVertex(ccm_seg7_vertex_07016730, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/2/2/model.inc.c b/levels/ccm/areas/2/2/model.inc.c
@@ -1,42 +1,26 @@
-// 0x0701CED8 - 0x0701CEE0
-static const Ambient ccm_seg7_light_0701CED8 = {
- {{0x15, 0x15, 0x15}, 0, {0x15, 0x15, 0x15}, 0}
-};
-
-// 0x0701CEE0 - 0x0701CEF0
-static const Light ccm_seg7_light_0701CEE0 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701CEF0 - 0x0701CEF8
-static const Ambient ccm_seg7_light_0701CEF0 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x0701CEF8 - 0x0701CF08
-static const Light ccm_seg7_light_0701CEF8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701CF08 - 0x0701CF10
-static const Ambient ccm_seg7_light_0701CF08 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0701CF10 - 0x0701CF20
-static const Light ccm_seg7_light_0701CF10 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701CF20 - 0x0701CF28
-static const Ambient ccm_seg7_light_0701CF20 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701CF28 - 0x0701CF38
-static const Light ccm_seg7_light_0701CF28 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701CED8 - 0x0701CEF0
+static const Lights1 ccm_seg7_lights_0701CED8 = gdSPDefLights1(
+ 0x15, 0x15, 0x15,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x0701CEF0 - 0x0701CF08
+static const Lights1 ccm_seg7_lights_0701CEF0 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0701CF08 - 0x0701CF20
+static const Lights1 ccm_seg7_lights_0701CF08 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x0701CF20 - 0x0701CF38
+static const Lights1 ccm_seg7_lights_0701CF20 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701CF38 - 0x0701D028
static const Vtx ccm_seg7_vertex_0701CF38[] = {
@@ -382,8 +366,8 @@ static const Gfx ccm_seg7_dl_0701DF68[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701CEE0, 1),
- gsSPLight(&ccm_seg7_light_0701CED8, 2),
+ gsSPLight(&ccm_seg7_lights_0701CED8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CED8.a, 2),
gsSPVertex(ccm_seg7_vertex_0701CF38, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -394,8 +378,8 @@ static const Gfx ccm_seg7_dl_0701DF68[] = {
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
gsSP1Triangle( 0, 2, 14, 0x0),
- gsSPLight(&ccm_seg7_light_0701CEF8, 1),
- gsSPLight(&ccm_seg7_light_0701CEF0, 2),
+ gsSPLight(&ccm_seg7_lights_0701CEF0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CEF0.a, 2),
gsSPVertex(ccm_seg7_vertex_0701D118, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 8, 0x0),
@@ -451,14 +435,14 @@ static const Gfx ccm_seg7_dl_0701DF68[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSP1Triangle(10, 0, 2, 0x0),
- gsSPLight(&ccm_seg7_light_0701CF10, 1),
- gsSPLight(&ccm_seg7_light_0701CF08, 2),
+ gsSPLight(&ccm_seg7_lights_0701CF08.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CF08.a, 2),
gsSPVertex(ccm_seg7_vertex_0701DA58, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 6, 3, 5, 0x0),
- gsSPLight(&ccm_seg7_light_0701CF28, 1),
- gsSPLight(&ccm_seg7_light_0701CF20, 2),
+ gsSPLight(&ccm_seg7_lights_0701CF20.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CF20.a, 2),
gsSPVertex(ccm_seg7_vertex_0701DAD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -477,14 +461,14 @@ static const Gfx ccm_seg7_dl_0701E3F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701CEF8, 1),
- gsSPLight(&ccm_seg7_light_0701CEF0, 2),
+ gsSPLight(&ccm_seg7_lights_0701CEF0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CEF0.a, 2),
gsSPVertex(ccm_seg7_vertex_0701DC78, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&ccm_seg7_light_0701CF28, 1),
- gsSPLight(&ccm_seg7_light_0701CF20, 2),
+ gsSPLight(&ccm_seg7_lights_0701CF20.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701CF20.a, 2),
gsSPVertex(ccm_seg7_vertex_0701DD38, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ccm/areas/2/3/model.inc.c b/levels/ccm/areas/2/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701E610 - 0x0701E618
-static const Ambient ccm_seg7_light_0701E610 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701E618 - 0x0701E628
-static const Light ccm_seg7_light_0701E618 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701E610 - 0x0701E628
+static const Lights1 ccm_seg7_lights_0701E610 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701E628 - 0x0701E668
static const Vtx ccm_seg7_vertex_0701E628[] = {
@@ -21,8 +17,8 @@ static const Gfx ccm_seg7_dl_0701E668[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07004B00),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701E618, 1),
- gsSPLight(&ccm_seg7_light_0701E610, 2),
+ gsSPLight(&ccm_seg7_lights_0701E610.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701E610.a, 2),
gsSPVertex(ccm_seg7_vertex_0701E628, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/2/4/model.inc.c b/levels/ccm/areas/2/4/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701E720 - 0x0701E728
-static const Ambient ccm_seg7_light_0701E720 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0701E728 - 0x0701E738
-static const Light ccm_seg7_light_0701E728 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701E720 - 0x0701E738
+static const Lights1 ccm_seg7_lights_0701E720 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701E738 - 0x0701E828
static const Vtx ccm_seg7_vertex_0701E738[] = {
@@ -350,8 +346,8 @@ static const Gfx ccm_seg7_dl_0701F7C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701E728, 1),
- gsSPLight(&ccm_seg7_light_0701E720, 2),
+ gsSPLight(&ccm_seg7_lights_0701E720.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701E720.a, 2),
gsSPVertex(ccm_seg7_vertex_0701E738, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
diff --git a/levels/ccm/areas/2/5/model.inc.c b/levels/ccm/areas/2/5/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701FCD8 - 0x0701FCE0
-static const Ambient ccm_seg7_light_0701FCD8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701FCE0 - 0x0701FCF0
-static const Light ccm_seg7_light_0701FCE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701FCD8 - 0x0701FCF0
+static const Lights1 ccm_seg7_lights_0701FCD8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701FCF0 - 0x0701FD30
static const Vtx ccm_seg7_vertex_0701FCF0[] = {
@@ -21,8 +17,8 @@ static const Gfx ccm_seg7_dl_0701FD30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701FCE0, 1),
- gsSPLight(&ccm_seg7_light_0701FCD8, 2),
+ gsSPLight(&ccm_seg7_lights_0701FCD8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701FCD8.a, 2),
gsSPVertex(ccm_seg7_vertex_0701FCF0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ccm/areas/2/7/model.inc.c b/levels/ccm/areas/2/7/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0701FEE0 - 0x0701FEE8
-static const Ambient ccm_seg7_light_0701FEE0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0701FEE8 - 0x0701FEF8
-static const Light ccm_seg7_light_0701FEE8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701FEE0 - 0x0701FEF8
+static const Lights1 ccm_seg7_lights_0701FEE0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
-// 0x0701FEF8 - 0x0701FF00
-static const Ambient ccm_seg7_light_0701FEF8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701FF00 - 0x0701FF10
-static const Light ccm_seg7_light_0701FF00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701FEF8 - 0x0701FF10
+static const Lights1 ccm_seg7_lights_0701FEF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701FF10 - 0x0701FF70
static const Vtx ccm_seg7_vertex_0701FF10[] = {
@@ -159,8 +151,8 @@ static const Gfx ccm_seg7_dl_07020590[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07003900),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 16 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701FEE8, 1),
- gsSPLight(&ccm_seg7_light_0701FEE0, 2),
+ gsSPLight(&ccm_seg7_lights_0701FEE0.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701FEE0.a, 2),
gsSPVertex(ccm_seg7_vertex_0701FF10, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 0, 4, 0x0),
@@ -172,8 +164,8 @@ static const Gfx ccm_seg7_dl_070205E8[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07003B00),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_0701FF00, 1),
- gsSPLight(&ccm_seg7_light_0701FEF8, 2),
+ gsSPLight(&ccm_seg7_lights_0701FEF8.l, 1),
+ gsSPLight(&ccm_seg7_lights_0701FEF8.a, 2),
gsSPVertex(ccm_seg7_vertex_0701FF70, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ccm/areas/2/macro.inc.c b/levels/ccm/areas/2/macro.inc.c
@@ -5,7 +5,7 @@ const MacroObject ccm_seg7_area_2_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1843, 4486, -433),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1603, 4567, -347),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 1397, 4530, -287),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -5320, 6656, -6540, /*behParam*/ 54),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -5320, 6656, -6540, /*behParam*/ DIALOG_054),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -4980, 2180, -1980),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 6640, -60, -800),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 6640, -1020, 440),
diff --git a/levels/ccm/leveldata.c b/levels/ccm/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/ccm/texture.inc.c"
diff --git a/levels/ccm/ropeway_lift/2.inc.c b/levels/ccm/ropeway_lift/2.inc.c
@@ -1,12 +1,8 @@
-// 0x07010FB8 - 0x07010FC0
-static const Ambient ccm_seg7_light_07010FB8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010FC0 - 0x07010FD0
-static const Light ccm_seg7_light_07010FC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010FB8 - 0x07010FD0
+static const Lights1 ccm_seg7_lights_07010FB8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010FD0 - 0x070110C0
static const Vtx ccm_seg7_vertex_07010FD0[] = {
@@ -150,8 +146,8 @@ static const Gfx ccm_seg7_dl_07011660[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 4 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07010FC0, 1),
- gsSPLight(&ccm_seg7_light_07010FB8, 2),
+ gsSPLight(&ccm_seg7_lights_07010FB8.l, 1),
+ gsSPLight(&ccm_seg7_lights_07010FB8.a, 2),
gsSPVertex(ccm_seg7_vertex_07010FD0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ccm/script.c b/levels/ccm/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -81,29 +82,29 @@ const LevelScript level_ccm_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -181, 2918, -1486, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F1E0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1847, 2815, -321, /*angle*/ 0, -158, 0, /*behParam*/ 0x001F0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3349, -4694, -183, /*angle*/ 0, -34, 0, /*behParam*/ 0x00200000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x05, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x1E, /*destLevel*/ 0x05, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x1F, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x20, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1F, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x20, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
TERRAIN(/*terrainData*/ ccm_seg7_area_1_collision),
MACRO_OBJECTS(/*objList*/ ccm_seg7_area_1_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x30),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_048),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SNOW),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_SNOW),
END_AREA(),
AREA(/*index*/ 2, ccm_geo_0005E8),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5836, 7465, -6143, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x05, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x05, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_CCM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_4),
TERRAIN(/*terrainData*/ ccm_seg7_area_2_collision),
MACRO_OBJECTS(/*objList*/ ccm_seg7_area_2_macro_objs),
diff --git a/levels/ccm/snowman_base/model.inc.c b/levels/ccm/snowman_base/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07011940 - 0x07011948
-static const Ambient ccm_seg7_light_07011940 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0}
-};
-
-// 0x07011948 - 0x07011958
-static const Light ccm_seg7_light_07011948 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011940 - 0x07011958
+static const Lights1 ccm_seg7_lights_07011940 = gdSPDefLights1(
+ 0xcc, 0xcc, 0xcc,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011958 - 0x07012158
ALIGNED8 static const u8 ccm_seg7_texture_07011958[] = {
@@ -171,8 +167,8 @@ static const Gfx ccm_seg7_dl_070128E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07011958),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07011948, 1),
- gsSPLight(&ccm_seg7_light_07011940, 2),
+ gsSPLight(&ccm_seg7_lights_07011940.l, 1),
+ gsSPLight(&ccm_seg7_lights_07011940.a, 2),
gsSPVertex(ccm_seg7_vertex_07012158, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
diff --git a/levels/ccm/snowman_head/1.inc.c b/levels/ccm/snowman_head/1.inc.c
@@ -1,12 +1,8 @@
-// 0x07012C38 - 0x07012C40
-static const Ambient ccm_seg7_light_07012C38 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0}
-};
-
-// 0x07012C40 - 0x07012C50
-static const Light ccm_seg7_light_07012C40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012C38 - 0x07012C50
+static const Lights1 ccm_seg7_lights_07012C38 = gdSPDefLights1(
+ 0xcc, 0xcc, 0xcc,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012C50 - 0x07012D50
static const Vtx ccm_seg7_vertex_07012C50[] = {
@@ -166,8 +162,8 @@ static const Gfx ccm_seg7_dl_070133E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ccm_seg7_texture_07011958),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ccm_seg7_light_07012C40, 1),
- gsSPLight(&ccm_seg7_light_07012C38, 2),
+ gsSPLight(&ccm_seg7_lights_07012C38.l, 1),
+ gsSPLight(&ccm_seg7_lights_07012C38.a, 2),
gsSPVertex(ccm_seg7_vertex_07012C50, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
diff --git a/levels/cotmc/areas/1/1/model.inc.c b/levels/cotmc/areas/1/1/model.inc.c
@@ -1,72 +1,44 @@
-// 0x07003000 - 0x07003008
-static const Ambient cotmc_seg7_light_07003000 = {
- {{0x4b, 0x78, 0x70}, 0, {0x4b, 0x78, 0x70}, 0}
-};
-
-// 0x07003008 - 0x07003018
-static const Light cotmc_seg7_light_07003008 = {
- {{0x96, 0xf0, 0xe1}, 0, {0x96, 0xf0, 0xe1}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003018 - 0x07003020
-static const Ambient cotmc_seg7_light_07003018 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0}
-};
-
-// 0x07003020 - 0x07003030
-static const Light cotmc_seg7_light_07003020 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003030 - 0x07003038
-static const Ambient cotmc_seg7_light_07003030 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07003038 - 0x07003048
-static const Light cotmc_seg7_light_07003038 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003048 - 0x07003050
-static const Ambient cotmc_seg7_light_07003048 = {
- {{0x00, 0x3c, 0x3c}, 0, {0x00, 0x3c, 0x3c}, 0}
-};
-
-// 0x07003050 - 0x07003060
-static const Light cotmc_seg7_light_07003050 = {
- {{0x00, 0x78, 0x78}, 0, {0x00, 0x78, 0x78}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003060 - 0x07003068
-static const Ambient cotmc_seg7_light_07003060 = {
- {{0x3b, 0x3b, 0x3b}, 0, {0x3b, 0x3b, 0x3b}, 0}
-};
-
-// 0x07003068 - 0x07003078
-static const Light cotmc_seg7_light_07003068 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003078 - 0x07003080
-static const Ambient cotmc_seg7_light_07003078 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07003080 - 0x07003090
-static const Light cotmc_seg7_light_07003080 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003090 - 0x07003098
-static const Ambient cotmc_seg7_light_07003090 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07003098 - 0x070030A8
-static const Light cotmc_seg7_light_07003098 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003000 - 0x07003018
+static const Lights1 cotmc_seg7_lights_07003000 = gdSPDefLights1(
+ 0x4b, 0x78, 0x70,
+ 0x96, 0xf0, 0xe1, 0x28, 0x28, 0x28
+);
+
+// 0x07003018 - 0x07003030
+static const Lights1 cotmc_seg7_lights_07003018 = gdSPDefLights1(
+ 0x44, 0x44, 0x44,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x07003030 - 0x07003048
+static const Lights1 cotmc_seg7_lights_07003030 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07003048 - 0x07003060
+static const Lights1 cotmc_seg7_lights_07003048 = gdSPDefLights1(
+ 0x00, 0x3c, 0x3c,
+ 0x00, 0x78, 0x78, 0x28, 0x28, 0x28
+);
+
+// 0x07003060 - 0x07003078
+static const Lights1 cotmc_seg7_lights_07003060 = gdSPDefLights1(
+ 0x3b, 0x3b, 0x3b,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x07003078 - 0x07003090
+static const Lights1 cotmc_seg7_lights_07003078 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07003090 - 0x070030A8
+static const Lights1 cotmc_seg7_lights_07003090 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x070030A8 - 0x070031A8
static const Vtx cotmc_seg7_vertex_070030A8[] = {
@@ -1197,8 +1169,8 @@ static const Gfx cotmc_seg7_dl_070066E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003008, 1),
- gsSPLight(&cotmc_seg7_light_07003000, 2),
+ gsSPLight(&cotmc_seg7_lights_07003000.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003000.a, 2),
gsSPVertex(cotmc_seg7_vertex_070030A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 6, 7, 5, 0x0),
@@ -1266,8 +1238,8 @@ static const Gfx cotmc_seg7_dl_070066E8[] = {
gsSP2Triangles( 4, 1, 3, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 5, 8, 6, 0x0, 5, 9, 8, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
- gsSPLight(&cotmc_seg7_light_07003020, 1),
- gsSPLight(&cotmc_seg7_light_07003018, 2),
+ gsSPLight(&cotmc_seg7_lights_07003018.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003018.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003A48, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 4, 2, 5, 0x0),
@@ -1275,14 +1247,14 @@ static const Gfx cotmc_seg7_dl_070066E8[] = {
gsSP2Triangles( 6, 5, 8, 0x0, 6, 8, 9, 0x0),
gsSP2Triangles( 8, 10, 11, 0x0, 9, 8, 11, 0x0),
gsSP2Triangles(11, 10, 7, 0x0, 11, 7, 3, 0x0),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003B08, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 1, 5, 2, 0x0),
gsSP2Triangles( 5, 6, 2, 0x0, 2, 6, 4, 0x0),
- gsSPLight(&cotmc_seg7_light_07003050, 1),
- gsSPLight(&cotmc_seg7_light_07003048, 2),
+ gsSPLight(&cotmc_seg7_lights_07003048.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003048.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003B78, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 5, 7, 0x0),
@@ -1298,22 +1270,22 @@ static const Gfx cotmc_seg7_dl_07006C18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003068, 1),
- gsSPLight(&cotmc_seg7_light_07003060, 2),
+ gsSPLight(&cotmc_seg7_lights_07003060.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003060.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003C38, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 1, 5, 2, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 7, 4, 9, 0x0),
gsSP2Triangles( 7, 9, 8, 0x0, 4, 3, 9, 0x0),
- gsSPLight(&cotmc_seg7_light_07003020, 1),
- gsSPLight(&cotmc_seg7_light_07003018, 2),
+ gsSPLight(&cotmc_seg7_lights_07003018.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003018.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003CD8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 2, 5, 0x0, 4, 0, 2, 0x0),
gsSP2Triangles( 5, 6, 4, 0x0, 7, 4, 6, 0x0),
gsSP2Triangles( 7, 8, 4, 0x0, 8, 9, 4, 0x0),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_07003D78, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1369,8 +1341,8 @@ static const Gfx cotmc_seg7_dl_07006F88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003020, 1),
- gsSPLight(&cotmc_seg7_light_07003018, 2),
+ gsSPLight(&cotmc_seg7_lights_07003018.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003018.a, 2),
gsSPVertex(cotmc_seg7_vertex_070043E8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 8, 0x0),
@@ -1382,8 +1354,8 @@ static const Gfx cotmc_seg7_dl_07006F88[] = {
gsSPVertex(cotmc_seg7_vertex_070044E8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 4, 3, 5, 0x0),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_07004548, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 2, 3, 5, 0x0, 2, 6, 3, 0x0),
@@ -1407,8 +1379,8 @@ static const Gfx cotmc_seg7_dl_07006F88[] = {
gsSPVertex(cotmc_seg7_vertex_07004838, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 3, 4, 1, 0x0, 5, 6, 7, 0x0),
- gsSPLight(&cotmc_seg7_light_07003050, 1),
- gsSPLight(&cotmc_seg7_light_07003048, 2),
+ gsSPLight(&cotmc_seg7_lights_07003048.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003048.a, 2),
gsSPVertex(cotmc_seg7_vertex_070048B8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 0, 5, 4, 0x0),
@@ -1426,8 +1398,8 @@ static const Gfx cotmc_seg7_dl_07007248[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_070049B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 4, 2, 5, 0x0),
@@ -1526,8 +1498,8 @@ static const Gfx cotmc_seg7_dl_07007688[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 16 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003008, 1),
- gsSPLight(&cotmc_seg7_light_07003000, 2),
+ gsSPLight(&cotmc_seg7_lights_07003000.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003000.a, 2),
gsSPVertex(cotmc_seg7_vertex_07005668, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1541,8 +1513,8 @@ static const Gfx cotmc_seg7_dl_07007688[] = {
gsSPVertex(cotmc_seg7_vertex_07005848, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&cotmc_seg7_light_07003068, 1),
- gsSPLight(&cotmc_seg7_light_07003060, 2),
+ gsSPLight(&cotmc_seg7_lights_07003060.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003060.a, 2),
gsSPVertex(cotmc_seg7_vertex_070058C8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 3, 4, 0x0),
@@ -1563,15 +1535,15 @@ static const Gfx cotmc_seg7_dl_07007688[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 6, 7, 8, 0x0),
gsSP2Triangles( 6, 5, 7, 0x0, 5, 9, 7, 0x0),
gsSP2Triangles(10, 11, 2, 0x0, 3, 10, 2, 0x0),
- gsSPLight(&cotmc_seg7_light_07003020, 1),
- gsSPLight(&cotmc_seg7_light_07003018, 2),
+ gsSPLight(&cotmc_seg7_lights_07003018.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003018.a, 2),
gsSPVertex(cotmc_seg7_vertex_07005C48, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 4, 5, 3, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 6, 0x0),
gsSP2Triangles( 6, 10, 7, 0x0, 9, 11, 10, 0x0),
- gsSPLight(&cotmc_seg7_light_07003080, 1),
- gsSPLight(&cotmc_seg7_light_07003078, 2),
+ gsSPLight(&cotmc_seg7_lights_07003078.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003078.a, 2),
gsSPVertex(cotmc_seg7_vertex_07005D08, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 2, 4, 5, 0x0),
@@ -1584,12 +1556,12 @@ static const Gfx cotmc_seg7_dl_07007920[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07003098, 1),
- gsSPLight(&cotmc_seg7_light_07003090, 2),
+ gsSPLight(&cotmc_seg7_lights_07003090.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003090.a, 2),
gsSPVertex(cotmc_seg7_vertex_07005DA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&cotmc_seg7_light_07003020, 1),
- gsSPLight(&cotmc_seg7_light_07003018, 2),
+ gsSPLight(&cotmc_seg7_lights_07003018.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003018.a, 2),
gsSPVertex(cotmc_seg7_vertex_07005DE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 3, 2, 0x0, 5, 4, 2, 0x0),
@@ -1612,8 +1584,8 @@ static const Gfx cotmc_seg7_dl_07007920[] = {
gsSP2Triangles(11, 8, 7, 0x0, 9, 12, 10, 0x0),
gsSP2Triangles( 7, 13, 11, 0x0, 14, 11, 13, 0x0),
gsSP2Triangles(14, 12, 11, 0x0, 12, 14, 10, 0x0),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_070060C8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 3, 0x0, 4, 3, 7, 0x0),
@@ -1634,8 +1606,8 @@ static const Gfx cotmc_seg7_dl_07007920[] = {
// 0x07007B90 - 0x07007D48
static const Gfx cotmc_seg7_dl_07007B90[] = {
- gsSPLight(&cotmc_seg7_light_07003098, 1),
- gsSPLight(&cotmc_seg7_light_07003090, 2),
+ gsSPLight(&cotmc_seg7_lights_07003090.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003090.a, 2),
gsSPVertex(cotmc_seg7_vertex_07006358, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 0, 2, 5, 0x0),
@@ -1663,8 +1635,8 @@ static const Gfx cotmc_seg7_dl_07007B90[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 3, 4, 1, 0x0, 5, 4, 3, 0x0),
gsSP1Triangle( 5, 6, 4, 0x0),
- gsSPLight(&cotmc_seg7_light_07003038, 1),
- gsSPLight(&cotmc_seg7_light_07003030, 2),
+ gsSPLight(&cotmc_seg7_lights_07003030.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07003030.a, 2),
gsSPVertex(cotmc_seg7_vertex_070066A8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/cotmc/areas/1/2/model.inc.c b/levels/cotmc/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007E88 - 0x07007E90
-static const Ambient cotmc_seg7_light_07007E88 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07007E90 - 0x07007EA0
-static const Light cotmc_seg7_light_07007E90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007E88 - 0x07007EA0
+static const Lights1 cotmc_seg7_lights_07007E88 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007EA0 - 0x07007F90
static const Vtx cotmc_seg7_vertex_07007EA0[] = {
@@ -596,8 +592,8 @@ static const Gfx cotmc_seg7_dl_07009B50[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cotmc_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&cotmc_seg7_light_07007E90, 1),
- gsSPLight(&cotmc_seg7_light_07007E88, 2),
+ gsSPLight(&cotmc_seg7_lights_07007E88.l, 1),
+ gsSPLight(&cotmc_seg7_lights_07007E88.a, 2),
gsSPVertex(cotmc_seg7_vertex_07007EA0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/cotmc/areas/1/macro.inc.c b/levels/cotmc/areas/1/macro.inc.c
@@ -11,7 +11,7 @@ const MacroObject cotmc_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 900, 260, -3620),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 0, -170, -1660),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ -20, -211, -3940),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -71, 20, 720, /*behParam*/ 123),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -71, 20, 720, /*behParam*/ DIALOG_123),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 200, -291, -5600),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 980, 260, -3430),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -540, -352, -5940),
diff --git a/levels/cotmc/leveldata.c b/levels/cotmc/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/cotmc/texture.inc.c"
diff --git a/levels/cotmc/script.c b/levels/cotmc/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -45,15 +46,15 @@ const LevelScript level_cotmc_entry[] = {
AREA(/*index*/ 1, cotmc_geo_0001A0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4185, 1020, -47, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_COTMC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_1),
TERRAIN(/*terrainData*/ cotmc_seg7_collision_level),
MACRO_OBJECTS(/*objList*/ cotmc_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x82),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_130),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
diff --git a/levels/course_defines.h b/levels/course_defines.h
@@ -0,0 +1,29 @@
+// Define lists for list of course for macros. Each of the following fields are described:
+// Argument 1: Course macro for define.
+// Argument 2, 3, 4, 5: Each hex digit is an index into D_8032E8A4 which is for a table of cutscene dance indexes. Defined by course index so we must define these.
+DEFINE_COURSE(COURSE_BOB, 0x00, 0x20, 0x22, 0x04) // (1) Bob Omb Battlefield
+DEFINE_COURSE(COURSE_WF, 0x00, 0x00, 0x02, 0x04) // (2) Whomp's Fortress
+DEFINE_COURSE(COURSE_JRB, 0x22, 0x22, 0x22, 0x04) // (3) Jolly Rodger's Bay
+DEFINE_COURSE(COURSE_CCM, 0x00, 0x22, 0x00, 0x04) // (4) Cool Cool Mountain
+DEFINE_COURSE(COURSE_BBH, 0x22, 0x22, 0x22, 0x04) // (5) Big Boo's Haunt
+DEFINE_COURSE(COURSE_HMC, 0x22, 0x22, 0x22, 0x04) // (6) Hazy Maze Cave
+DEFINE_COURSE(COURSE_LLL, 0x12, 0x12, 0x12, 0x04) // (7) Lethal Lava Land
+DEFINE_COURSE(COURSE_SSL, 0x02, 0x22, 0x22, 0x04) // (8) Shifting Sand Land
+DEFINE_COURSE(COURSE_DDD, 0x22, 0x22, 0x22, 0x04) // (9) Dire Dire Docks
+DEFINE_COURSE(COURSE_SL, 0x20, 0x20, 0x20, 0x04) // (10) Snowman's Land
+DEFINE_COURSE(COURSE_WDW, 0x22, 0x01, 0x22, 0x04) // (11) Wet Dry World
+DEFINE_COURSE(COURSE_TTM, 0x00, 0x00, 0x00, 0x04) // (12) Tall Tall Mountain
+DEFINE_COURSE(COURSE_THI, 0x11, 0x11, 0x12, 0x04) // (13) Tiny Huge Island
+DEFINE_COURSE(COURSE_TTC, 0x22, 0x22, 0x22, 0x04) // (14) Tick Tock Clock
+DEFINE_COURSE(COURSE_RR, 0x00, 0x00, 0x00, 0x04) // (15) Rainbow Ride
+DEFINE_COURSES_END()
+DEFINE_BONUS_COURSE(COURSE_BITDW, 0x43, 0x44, 0x44, 0x04) // (16) Bowser in the Dark World
+DEFINE_BONUS_COURSE(COURSE_BITFS, 0x43, 0x44, 0x44, 0x04) // (17) Bowser in the Fire Sea
+DEFINE_BONUS_COURSE(COURSE_BITS, 0x43, 0x44, 0x44, 0x04) // (18) Bowser in the Sky
+DEFINE_BONUS_COURSE(COURSE_PSS, 0x42, 0x44, 0x44, 0x04) // (19) Princess's Secret Slide
+DEFINE_BONUS_COURSE(COURSE_COTMC, 0x44, 0x44, 0x44, 0x04) // (20) Cavern of the Metal Cap
+DEFINE_BONUS_COURSE(COURSE_TOTWC, 0x40, 0x44, 0x44, 0x04) // (21) Tower of the Wing Cap
+DEFINE_BONUS_COURSE(COURSE_VCUTM, 0x42, 0x44, 0x44, 0x04) // (22) Vanish Cap Under the Moat
+DEFINE_BONUS_COURSE(COURSE_WMOTR, 0x40, 0x44, 0x44, 0x04) // (23) Winged Mario over the Rainbow
+DEFINE_BONUS_COURSE(COURSE_SA, 0x42, 0x44, 0x44, 0x04) // (24) Secret Aquarium
+DEFINE_BONUS_COURSE(COURSE_CAKE_END, 0x44, 0x44, 0x44, 0x04) // (25) The End (Cake Scene)
diff --git a/levels/ddd/areas/1/1/model.inc.c b/levels/ddd/areas/1/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07003800 - 0x07003808
-static const Ambient ddd_seg7_light_07003800 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003808 - 0x07003818
-static const Light ddd_seg7_light_07003808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003818 - 0x07003820
-static const Ambient ddd_seg7_light_07003818 = {
- {{0x1a, 0x1a, 0x3f}, 0, {0x1a, 0x1a, 0x3f}, 0}
-};
-
-// 0x07003820 - 0x07003830
-static const Light ddd_seg7_light_07003820 = {
- {{0x69, 0x69, 0xfe}, 0, {0x69, 0x69, 0xfe}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003830 - 0x07003838
-static const Ambient ddd_seg7_light_07003830 = {
- {{0x26, 0x26, 0x3f}, 0, {0x26, 0x26, 0x3f}, 0}
-};
+// 0x07003800 - 0x07003818
+static const Lights1 ddd_seg7_lights_07003800 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07003838 - 0x07003848
-static const Light ddd_seg7_light_07003838 = {
- {{0x9b, 0x9b, 0xff}, 0, {0x9b, 0x9b, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003818 - 0x07003830
+static const Lights1 ddd_seg7_lights_07003818 = gdSPDefLights1(
+ 0x1a, 0x1a, 0x3f,
+ 0x69, 0x69, 0xfe, 0x28, 0x28, 0x28
+);
-// 0x07003848 - 0x07003850
-static const Ambient ddd_seg7_light_07003848 = {
- {{0x32, 0x32, 0x3f}, 0, {0x32, 0x32, 0x3f}, 0}
-};
+// 0x07003830 - 0x07003848
+static const Lights1 ddd_seg7_lights_07003830 = gdSPDefLights1(
+ 0x26, 0x26, 0x3f,
+ 0x9b, 0x9b, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07003850 - 0x07003860
-static const Light ddd_seg7_light_07003850 = {
- {{0xc8, 0xc8, 0xff}, 0, {0xc8, 0xc8, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003848 - 0x07003860
+static const Lights1 ddd_seg7_lights_07003848 = gdSPDefLights1(
+ 0x32, 0x32, 0x3f,
+ 0xc8, 0xc8, 0xff, 0x28, 0x28, 0x28
+);
// 0x07003860 - 0x07003960
static const Vtx ddd_seg7_vertex_07003860[] = {
@@ -345,8 +329,8 @@ static const Gfx ddd_seg7_dl_07004700[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07003808, 1),
- gsSPLight(&ddd_seg7_light_07003800, 2),
+ gsSPLight(&ddd_seg7_lights_07003800.l, 1),
+ gsSPLight(&ddd_seg7_lights_07003800.a, 2),
gsSPVertex(ddd_seg7_vertex_07003860, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 5, 6, 7, 0x0),
@@ -367,12 +351,12 @@ static const Gfx ddd_seg7_dl_07004700[] = {
gsSP2Triangles( 2, 3, 4, 0x0, 4, 3, 5, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP1Triangle( 5, 8, 7, 0x0),
- gsSPLight(&ddd_seg7_light_07003820, 1),
- gsSPLight(&ddd_seg7_light_07003818, 2),
+ gsSPLight(&ddd_seg7_lights_07003818.l, 1),
+ gsSPLight(&ddd_seg7_lights_07003818.a, 2),
gsSPVertex(ddd_seg7_vertex_07003AF0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ddd_seg7_light_07003838, 1),
- gsSPLight(&ddd_seg7_light_07003830, 2),
+ gsSPLight(&ddd_seg7_lights_07003830.l, 1),
+ gsSPLight(&ddd_seg7_lights_07003830.a, 2),
gsSPVertex(ddd_seg7_vertex_07003B30, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 4, 6, 0x0),
@@ -418,8 +402,8 @@ static const Gfx ddd_seg7_dl_07004700[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 6, 3, 0x0),
gsSP2Triangles( 5, 7, 6, 0x0, 6, 7, 8, 0x0),
- gsSPLight(&ddd_seg7_light_07003850, 1),
- gsSPLight(&ddd_seg7_light_07003848, 2),
+ gsSPLight(&ddd_seg7_lights_07003848.l, 1),
+ gsSPLight(&ddd_seg7_lights_07003848.a, 2),
gsSPVertex(ddd_seg7_vertex_070041C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 4, 1, 6, 0x0),
diff --git a/levels/ddd/areas/1/2/model.inc.c b/levels/ddd/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07004DA8 - 0x07004DB0
-static const Ambient ddd_seg7_light_07004DA8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004DB0 - 0x07004DC0
-static const Light ddd_seg7_light_07004DB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004DA8 - 0x07004DC0
+static const Lights1 ddd_seg7_lights_07004DA8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004DC0 - 0x07004EC0
static const Vtx ddd_seg7_vertex_07004DC0[] = {
@@ -172,8 +168,8 @@ static const Gfx ddd_seg7_dl_07005570[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07004DB0, 1),
- gsSPLight(&ddd_seg7_light_07004DA8, 2),
+ gsSPLight(&ddd_seg7_lights_07004DA8.l, 1),
+ gsSPLight(&ddd_seg7_lights_07004DA8.a, 2),
gsSPVertex(ddd_seg7_vertex_07004DC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ddd/areas/1/3/model.inc.c b/levels/ddd/areas/1/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07005850 - 0x07005858
-static const Ambient ddd_seg7_light_07005850 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07005858 - 0x07005868
-static const Light ddd_seg7_light_07005858 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005850 - 0x07005868
+static const Lights1 ddd_seg7_lights_07005850 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07005868 - 0x07005968
static const Vtx ddd_seg7_vertex_07005868[] = {
@@ -66,8 +62,8 @@ static const Gfx ddd_seg7_dl_07005AF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07005858, 1),
- gsSPLight(&ddd_seg7_light_07005850, 2),
+ gsSPLight(&ddd_seg7_lights_07005850.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005850.a, 2),
gsSPVertex(ddd_seg7_vertex_07005868, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 4, 6, 0x0),
diff --git a/levels/ddd/areas/2/1/model.inc.c b/levels/ddd/areas/2/1/model.inc.c
@@ -1,52 +1,32 @@
-// 0x07005FC8 - 0x07005FD0
-static const Ambient ddd_seg7_light_07005FC8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07005FD0 - 0x07005FE0
-static const Light ddd_seg7_light_07005FD0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005FE0 - 0x07005FE8
-static const Ambient ddd_seg7_light_07005FE0 = {
- {{0x1b, 0x1b, 0x1b}, 0, {0x1b, 0x1b, 0x1b}, 0}
-};
-
-// 0x07005FE8 - 0x07005FF8
-static const Light ddd_seg7_light_07005FE8 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005FF8 - 0x07006000
-static const Ambient ddd_seg7_light_07005FF8 = {
- {{0x2f, 0x2f, 0x2f}, 0, {0x2f, 0x2f, 0x2f}, 0}
-};
-
-// 0x07006000 - 0x07006010
-static const Light ddd_seg7_light_07006000 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006010 - 0x07006018
-static const Ambient ddd_seg7_light_07006010 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0}
-};
-
-// 0x07006018 - 0x07006028
-static const Light ddd_seg7_light_07006018 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07006028 - 0x07006030
-static const Ambient ddd_seg7_light_07006028 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07006030 - 0x07006040
-static const Light ddd_seg7_light_07006030 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005FC8 - 0x07005FE0
+static const Lights1 ddd_seg7_lights_07005FC8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x07005FE0 - 0x07005FF8
+static const Lights1 ddd_seg7_lights_07005FE0 = gdSPDefLights1(
+ 0x1b, 0x1b, 0x1b,
+ 0x44, 0x44, 0x44, 0x28, 0x28, 0x28
+);
+
+// 0x07005FF8 - 0x07006010
+static const Lights1 ddd_seg7_lights_07005FF8 = gdSPDefLights1(
+ 0x2f, 0x2f, 0x2f,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x07006010 - 0x07006028
+static const Lights1 ddd_seg7_lights_07006010 = gdSPDefLights1(
+ 0x44, 0x44, 0x44,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x07006028 - 0x07006040
+static const Lights1 ddd_seg7_lights_07006028 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07006040 - 0x07006080
static const Vtx ddd_seg7_vertex_07006040[] = {
@@ -363,20 +343,20 @@ static const Gfx ddd_seg7_dl_07006E20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07005FD0, 1),
- gsSPLight(&ddd_seg7_light_07005FC8, 2),
+ gsSPLight(&ddd_seg7_lights_07005FC8.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FC8.a, 2),
gsSPVertex(ddd_seg7_vertex_07006040, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ddd_seg7_light_07005FE8, 1),
- gsSPLight(&ddd_seg7_light_07005FE0, 2),
+ gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),
gsSPVertex(ddd_seg7_vertex_07006080, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ddd_seg7_light_07006000, 1),
- gsSPLight(&ddd_seg7_light_07005FF8, 2),
+ gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),
gsSPVertex(ddd_seg7_vertex_070060C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ddd_seg7_light_07006018, 1),
- gsSPLight(&ddd_seg7_light_07006010, 2),
+ gsSPLight(&ddd_seg7_lights_07006010.l, 1),
+ gsSPLight(&ddd_seg7_lights_07006010.a, 2),
gsSPVertex(ddd_seg7_vertex_07006100, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -387,23 +367,23 @@ static const Gfx ddd_seg7_dl_07006EE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07005FE8, 1),
- gsSPLight(&ddd_seg7_light_07005FE0, 2),
+ gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),
gsSPVertex(ddd_seg7_vertex_07006140, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ddd_seg7_light_07006000, 1),
- gsSPLight(&ddd_seg7_light_07005FF8, 2),
+ gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),
gsSPVertex(ddd_seg7_vertex_070061C0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ddd_seg7_light_07006018, 1),
- gsSPLight(&ddd_seg7_light_07006010, 2),
+ gsSPLight(&ddd_seg7_lights_07006010.l, 1),
+ gsSPLight(&ddd_seg7_lights_07006010.a, 2),
gsSPVertex(ddd_seg7_vertex_07006240, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ddd_seg7_light_07006030, 1),
- gsSPLight(&ddd_seg7_light_07006028, 2),
+ gsSPLight(&ddd_seg7_lights_07006028.l, 1),
+ gsSPLight(&ddd_seg7_lights_07006028.a, 2),
gsSPVertex(ddd_seg7_vertex_070062C0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 3, 5, 7, 0x0),
@@ -427,20 +407,20 @@ static const Gfx ddd_seg7_dl_07007080[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07005FE8, 1),
- gsSPLight(&ddd_seg7_light_07005FE0, 2),
+ gsSPLight(&ddd_seg7_lights_07005FE0.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FE0.a, 2),
gsSPVertex(ddd_seg7_vertex_07006520, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ddd_seg7_light_07006000, 1),
- gsSPLight(&ddd_seg7_light_07005FF8, 2),
+ gsSPLight(&ddd_seg7_lights_07005FF8.l, 1),
+ gsSPLight(&ddd_seg7_lights_07005FF8.a, 2),
gsSPVertex(ddd_seg7_vertex_07006560, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ddd_seg7_light_07006018, 1),
- gsSPLight(&ddd_seg7_light_07006010, 2),
+ gsSPLight(&ddd_seg7_lights_07006010.l, 1),
+ gsSPLight(&ddd_seg7_lights_07006010.a, 2),
gsSPVertex(ddd_seg7_vertex_070065A0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ddd_seg7_light_07006030, 1),
- gsSPLight(&ddd_seg7_light_07006028, 2),
+ gsSPLight(&ddd_seg7_lights_07006028.l, 1),
+ gsSPLight(&ddd_seg7_lights_07006028.a, 2),
gsSPVertex(ddd_seg7_vertex_070065E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 6, 8, 0x0),
diff --git a/levels/ddd/areas/2/2/model.inc.c b/levels/ddd/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070074C8 - 0x070074D0
-static const Ambient ddd_seg7_light_070074C8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070074D0 - 0x070074E0
-static const Light ddd_seg7_light_070074D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070074C8 - 0x070074E0
+static const Lights1 ddd_seg7_lights_070074C8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070074E0 - 0x070075E0
static const Vtx ddd_seg7_vertex_070074E0[] = {
@@ -138,8 +134,8 @@ static const Gfx ddd_seg7_dl_07007AF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_070074D0, 1),
- gsSPLight(&ddd_seg7_light_070074C8, 2),
+ gsSPLight(&ddd_seg7_lights_070074C8.l, 1),
+ gsSPLight(&ddd_seg7_lights_070074C8.a, 2),
gsSPVertex(ddd_seg7_vertex_070074E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ddd/areas/2/3/model.inc.c b/levels/ddd/areas/2/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007D18 - 0x07007D20
-static const Ambient ddd_seg7_light_07007D18 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07007D20 - 0x07007D30
-static const Light ddd_seg7_light_07007D20 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007D18 - 0x07007D30
+static const Lights1 ddd_seg7_lights_07007D18 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007D30 - 0x07007E20
static const Vtx ddd_seg7_vertex_07007D30[] = {
@@ -253,8 +249,8 @@ static const Gfx ddd_seg7_dl_070088F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07007D20, 1),
- gsSPLight(&ddd_seg7_light_07007D18, 2),
+ gsSPLight(&ddd_seg7_lights_07007D18.l, 1),
+ gsSPLight(&ddd_seg7_lights_07007D18.a, 2),
gsSPVertex(ddd_seg7_vertex_07007D30, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ddd/areas/2/5/model.inc.c b/levels/ddd/areas/2/5/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B0D8 - 0x0700B0E0
-static const Ambient ddd_seg7_light_0700B0D8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700B0E0 - 0x0700B0F0
-static const Light ddd_seg7_light_0700B0E0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B0D8 - 0x0700B0F0
+static const Lights1 ddd_seg7_lights_0700B0D8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700B0F0 - 0x0700B1D0
static const Vtx ddd_seg7_vertex_0700B0F0[] = {
@@ -167,8 +163,8 @@ static const Gfx ddd_seg7_dl_0700B890[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_0700B0E0, 1),
- gsSPLight(&ddd_seg7_light_0700B0D8, 2),
+ gsSPLight(&ddd_seg7_lights_0700B0D8.l, 1),
+ gsSPLight(&ddd_seg7_lights_0700B0D8.a, 2),
gsSPVertex(ddd_seg7_vertex_0700B0F0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 5, 0x0, 6, 7, 8, 0x0),
diff --git a/levels/ddd/areas/2/6/model.inc.c b/levels/ddd/areas/2/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BB50 - 0x0700BB58
-static const Ambient ddd_seg7_light_0700BB50 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700BB58 - 0x0700BB68
-static const Light ddd_seg7_light_0700BB58 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BB50 - 0x0700BB68
+static const Lights1 ddd_seg7_lights_0700BB50 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BB68 - 0x0700BC58
static const Vtx ddd_seg7_vertex_0700BB68[] = {
@@ -312,8 +308,8 @@ static const Gfx ddd_seg7_dl_0700C9D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_0700BB58, 1),
- gsSPLight(&ddd_seg7_light_0700BB50, 2),
+ gsSPLight(&ddd_seg7_lights_0700BB50.l, 1),
+ gsSPLight(&ddd_seg7_lights_0700BB50.a, 2),
gsSPVertex(ddd_seg7_vertex_0700BB68, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ddd/areas/2/macro.inc.c b/levels/ddd/areas/2/macro.inc.c
@@ -23,7 +23,7 @@ const MacroObject ddd_seg7_area_2_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_fish_group, /*yaw*/ 0, /*pos*/ 2061, -3323, 2246),
MACRO_OBJECT(/*preset*/ macro_fish_group_2, /*yaw*/ 0, /*pos*/ 5661, -2923, -1415),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 90, /*pos*/ 1273, -4106, 2320),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 3086, 110, 6120, /*behParam*/ 53),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 3086, 110, 6120, /*behParam*/ DIALOG_053),
MACRO_OBJECT(/*preset*/ macro_seaweed_bundle, /*yaw*/ 0, /*pos*/ 6420, -4106, -2026),
MACRO_OBJECT(/*preset*/ macro_seaweed_bundle, /*yaw*/ 0, /*pos*/ 6340, -4106, -1413),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 135, /*pos*/ 1966, -4106, 3226),
diff --git a/levels/ddd/leveldata.c b/levels/ddd/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/ddd/texture.inc.c"
diff --git a/levels/ddd/pole/model.inc.c b/levels/ddd/pole/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700CEE0 - 0x0700CEE8
-static const Ambient ddd_seg7_light_0700CEE0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700CEE8 - 0x0700CEF8
-static const Light ddd_seg7_light_0700CEE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CEE0 - 0x0700CEF8
+static const Lights1 ddd_seg7_lights_0700CEE0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700CEF8 - 0x0700CFE8
static const Vtx ddd_seg7_vertex_0700CEF8[] = {
@@ -69,8 +65,8 @@ static const Gfx ddd_seg7_dl_0700D1B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_0700CEE8, 1),
- gsSPLight(&ddd_seg7_light_0700CEE0, 2),
+ gsSPLight(&ddd_seg7_lights_0700CEE0.l, 1),
+ gsSPLight(&ddd_seg7_lights_0700CEE0.a, 2),
gsSPVertex(ddd_seg7_vertex_0700CEF8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ddd/script.c b/levels/ddd/script.c
@@ -83,9 +83,9 @@ const LevelScript level_ddd_entry[] = {
AREA(/*index*/ 1, ddd_geo_0004C0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3071, 3000, 0, /*angle*/ 0, 7, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x17, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_DDD, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 0, /*pos*/ -3174, -4915, 102, /*strength*/ 20),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
@@ -99,9 +99,9 @@ const LevelScript level_ddd_entry[] = {
AREA(/*index*/ 2, ddd_geo_000570),
WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 0, /*pos*/ 3355, -3575, -515, /*strength*/ -30),
WHIRLPOOL(/*unk2*/ 1, /*unk3*/ 2, /*pos*/ 3917, -2040, -6041, /*strength*/ 50),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x1E, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_4),
JUMP_LINK(script_func_local_5),
diff --git a/levels/ddd/sub_door/2.inc.c b/levels/ddd/sub_door/2.inc.c
@@ -1,12 +1,8 @@
-// 0x07009080 - 0x07009088
-static const Ambient ddd_seg7_light_07009080 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07009088 - 0x07009098
-static const Light ddd_seg7_light_07009088 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009080 - 0x07009098
+static const Lights1 ddd_seg7_lights_07009080 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009098 - 0x070090D8
static const Vtx ddd_seg7_vertex_07009098[] = {
@@ -21,8 +17,8 @@ static const Gfx ddd_seg7_dl_070090D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07009088, 1),
- gsSPLight(&ddd_seg7_light_07009080, 2),
+ gsSPLight(&ddd_seg7_lights_07009080.l, 1),
+ gsSPLight(&ddd_seg7_lights_07009080.a, 2),
gsSPVertex(ddd_seg7_vertex_07009098, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ddd/submarine/1.inc.c b/levels/ddd/submarine/1.inc.c
@@ -1,52 +1,32 @@
-// 0x07009288 - 0x07009290
-static const Ambient ddd_seg7_light_07009288 = {
- {{0x3f, 0x1f, 0x19}, 0, {0x3f, 0x1f, 0x19}, 0}
-};
-
-// 0x07009290 - 0x070092A0
-static const Light ddd_seg7_light_07009290 = {
- {{0xff, 0x7f, 0x65}, 0, {0xff, 0x7f, 0x65}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070092A0 - 0x070092A8
-static const Ambient ddd_seg7_light_070092A0 = {
- {{0x2f, 0x1a, 0x0f}, 0, {0x2f, 0x1a, 0x0f}, 0}
-};
-
-// 0x070092A8 - 0x070092B8
-static const Light ddd_seg7_light_070092A8 = {
- {{0xbf, 0x6a, 0x3f}, 0, {0xbf, 0x6a, 0x3f}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070092B8 - 0x070092C0
-static const Ambient ddd_seg7_light_070092B8 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x070092C0 - 0x070092D0
-static const Light ddd_seg7_light_070092C0 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070092D0 - 0x070092D8
-static const Ambient ddd_seg7_light_070092D0 = {
- {{0x1d, 0x1d, 0x1d}, 0, {0x1d, 0x1d, 0x1d}, 0}
-};
-
-// 0x070092D8 - 0x070092E8
-static const Light ddd_seg7_light_070092D8 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070092E8 - 0x070092F0
-static const Ambient ddd_seg7_light_070092E8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070092F0 - 0x07009300
-static const Light ddd_seg7_light_070092F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009288 - 0x070092A0
+static const Lights1 ddd_seg7_lights_07009288 = gdSPDefLights1(
+ 0x3f, 0x1f, 0x19,
+ 0xff, 0x7f, 0x65, 0x28, 0x28, 0x28
+);
+
+// 0x070092A0 - 0x070092B8
+static const Lights1 ddd_seg7_lights_070092A0 = gdSPDefLights1(
+ 0x2f, 0x1a, 0x0f,
+ 0xbf, 0x6a, 0x3f, 0x28, 0x28, 0x28
+);
+
+// 0x070092B8 - 0x070092D0
+static const Lights1 ddd_seg7_lights_070092B8 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x33, 0x33, 0x33, 0x28, 0x28, 0x28
+);
+
+// 0x070092D0 - 0x070092E8
+static const Lights1 ddd_seg7_lights_070092D0 = gdSPDefLights1(
+ 0x1d, 0x1d, 0x1d,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x070092E8 - 0x07009300
+static const Lights1 ddd_seg7_lights_070092E8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009300 - 0x07009400
static const Vtx ddd_seg7_vertex_07009300[] = {
@@ -445,8 +425,8 @@ static const Gfx ddd_seg7_dl_0700A600[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_07009290, 1),
- gsSPLight(&ddd_seg7_light_07009288, 2),
+ gsSPLight(&ddd_seg7_lights_07009288.l, 1),
+ gsSPLight(&ddd_seg7_lights_07009288.a, 2),
gsSPVertex(ddd_seg7_vertex_07009300, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 5, 4, 7, 0x0),
@@ -461,8 +441,8 @@ static const Gfx ddd_seg7_dl_0700A600[] = {
gsSP2Triangles( 1, 3, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 4, 7, 6, 0x0),
gsSP1Triangle( 8, 7, 4, 0x0),
- gsSPLight(&ddd_seg7_light_070092A8, 1),
- gsSPLight(&ddd_seg7_light_070092A0, 2),
+ gsSPLight(&ddd_seg7_lights_070092A0.l, 1),
+ gsSPLight(&ddd_seg7_lights_070092A0.a, 2),
gsSPVertex(ddd_seg7_vertex_07009490, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 5, 3, 0, 0x0),
@@ -478,14 +458,14 @@ static const Gfx ddd_seg7_dl_0700A600[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 4, 1, 0, 0x0),
gsSP1Triangle( 2, 1, 3, 0x0),
- gsSPLight(&ddd_seg7_light_070092C0, 1),
- gsSPLight(&ddd_seg7_light_070092B8, 2),
+ gsSPLight(&ddd_seg7_lights_070092B8.l, 1),
+ gsSPLight(&ddd_seg7_lights_070092B8.a, 2),
gsSPVertex(ddd_seg7_vertex_070095E0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 2, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 0, 4, 7, 0x0),
- gsSPLight(&ddd_seg7_light_070092D8, 1),
- gsSPLight(&ddd_seg7_light_070092D0, 2),
+ gsSPLight(&ddd_seg7_lights_070092D0.l, 1),
+ gsSPLight(&ddd_seg7_lights_070092D0.a, 2),
gsSPVertex(ddd_seg7_vertex_07009660, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 5, 0x0),
@@ -498,8 +478,8 @@ static const Gfx ddd_seg7_dl_0700A600[] = {
gsSP2Triangles( 6, 7, 2, 0x0, 7, 8, 2, 0x0),
gsSP2Triangles( 8, 9, 2, 0x0, 9, 10, 2, 0x0),
gsSP1Triangle(10, 0, 2, 0x0),
- gsSPLight(&ddd_seg7_light_070092F0, 1),
- gsSPLight(&ddd_seg7_light_070092E8, 2),
+ gsSPLight(&ddd_seg7_lights_070092E8.l, 1),
+ gsSPLight(&ddd_seg7_lights_070092E8.a, 2),
gsSPVertex(ddd_seg7_vertex_07009800, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 3, 5, 1, 0x0),
diff --git a/levels/ddd/submarine/2.inc.c b/levels/ddd/submarine/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AF78 - 0x0700AF80
-static const Ambient ddd_seg7_light_0700AF78 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700AF80 - 0x0700AF90
-static const Light ddd_seg7_light_0700AF80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AF78 - 0x0700AF90
+static const Lights1 ddd_seg7_lights_0700AF78 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700AF90 - 0x0700B010
static const Vtx ddd_seg7_vertex_0700AF90[] = {
@@ -25,8 +21,8 @@ static const Gfx ddd_seg7_dl_0700B010[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ddd_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ddd_seg7_light_0700AF80, 1),
- gsSPLight(&ddd_seg7_light_0700AF78, 2),
+ gsSPLight(&ddd_seg7_lights_0700AF78.l, 1),
+ gsSPLight(&ddd_seg7_lights_0700AF78.a, 2),
gsSPVertex(ddd_seg7_vertex_0700AF90, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ending/script.c b/levels/ending/script.c
@@ -6,6 +6,7 @@
#include "segment_symbols.h"
#include "level_commands.h"
+#include "game/area.h"
#include "game/level_update.h"
#include "levels/scripts.h"
@@ -27,7 +28,7 @@ const LevelScript level_ending_entry[] = {
/*9*/ SLEEP(/*frames*/ 60),
/*10*/ BLACKOUT(/*active*/ FALSE),
/*11*/ LOAD_AREA(/*area*/ 1),
- /*12*/ TRANSITION(/*transType*/ 0, /*time*/ 75, /*color*/ 0, 0, 0),
+ /*12*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 75, /*color*/ 0x00, 0x00, 0x00),
/*14*/ SLEEP(/*frames*/ 120),
/*15*/ CALL(/*arg*/ 0, /*func*/ lvl_play_the_end_screen_sound),
// L1:
diff --git a/levels/hmc/areas/1/1/model.inc.c b/levels/hmc/areas/1/1/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07005800 - 0x07005808
-static const Ambient hmc_seg7_light_07005800 = {
- {{0x48, 0x48, 0x48}, 0, {0x48, 0x48, 0x48}, 0}
-};
-
-// 0x07005808 - 0x07005818
-static const Light hmc_seg7_light_07005808 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005818 - 0x07005820
-static const Ambient hmc_seg7_light_07005818 = {
- {{0x79, 0x00, 0x00}, 0, {0x79, 0x00, 0x00}, 0}
-};
-
-// 0x07005820 - 0x07005830
-static const Light hmc_seg7_light_07005820 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005830 - 0x07005838
-static const Ambient hmc_seg7_light_07005830 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07005838 - 0x07005848
-static const Light hmc_seg7_light_07005838 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005800 - 0x07005818
+static const Lights1 hmc_seg7_lights_07005800 = gdSPDefLights1(
+ 0x48, 0x48, 0x48,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07005818 - 0x07005830
+static const Lights1 hmc_seg7_lights_07005818 = gdSPDefLights1(
+ 0x79, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x07005830 - 0x07005848
+static const Lights1 hmc_seg7_lights_07005830 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07005848 - 0x070058A8
static const Vtx hmc_seg7_vertex_07005848[] = {
@@ -528,13 +516,13 @@ static const Gfx hmc_seg7_dl_07006FF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07005808, 1),
- gsSPLight(&hmc_seg7_light_07005800, 2),
+ gsSPLight(&hmc_seg7_lights_07005800.l, 1),
+ gsSPLight(&hmc_seg7_lights_07005800.a, 2),
gsSPVertex(hmc_seg7_vertex_07005848, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 4, 5, 0x0),
- gsSPLight(&hmc_seg7_light_07005820, 1),
- gsSPLight(&hmc_seg7_light_07005818, 2),
+ gsSPLight(&hmc_seg7_lights_07005818.l, 1),
+ gsSPLight(&hmc_seg7_lights_07005818.a, 2),
gsSPVertex(hmc_seg7_vertex_070058A8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 5, 6, 0x0),
@@ -546,8 +534,8 @@ static const Gfx hmc_seg7_dl_07007080[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07005838, 1),
- gsSPLight(&hmc_seg7_light_07005830, 2),
+ gsSPLight(&hmc_seg7_lights_07005830.l, 1),
+ gsSPLight(&hmc_seg7_lights_07005830.a, 2),
gsSPVertex(hmc_seg7_vertex_07005918, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/hmc/areas/1/10/model.inc.c b/levels/hmc/areas/1/10/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700FF70 - 0x0700FF78
-static const Ambient hmc_seg7_light_0700FF70 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x0700FF78 - 0x0700FF88
-static const Light hmc_seg7_light_0700FF78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FF70 - 0x0700FF88
+static const Lights1 hmc_seg7_lights_0700FF70 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700FF88 - 0x07010008
static const Vtx hmc_seg7_vertex_0700FF88[] = {
@@ -25,8 +21,8 @@ static const Gfx hmc_seg7_dl_07010008[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_0700FF78, 1),
- gsSPLight(&hmc_seg7_light_0700FF70, 2),
+ gsSPLight(&hmc_seg7_lights_0700FF70.l, 1),
+ gsSPLight(&hmc_seg7_lights_0700FF70.a, 2),
gsSPVertex(hmc_seg7_vertex_0700FF88, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 0, 5, 4, 0x0),
diff --git a/levels/hmc/areas/1/11/model.inc.c b/levels/hmc/areas/1/11/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07010118 - 0x07010120
-static const Ambient hmc_seg7_light_07010118 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07010120 - 0x07010130
-static const Light hmc_seg7_light_07010120 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010118 - 0x07010130
+static const Lights1 hmc_seg7_lights_07010118 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
-// 0x07010130 - 0x07010138
-static const Ambient hmc_seg7_light_07010130 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07010138 - 0x07010148
-static const Light hmc_seg7_light_07010138 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010130 - 0x07010148
+static const Lights1 hmc_seg7_lights_07010130 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010148 - 0x07010248
static const Vtx hmc_seg7_vertex_07010148[] = {
@@ -910,8 +902,8 @@ static const Gfx hmc_seg7_dl_07012C78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07010120, 1),
- gsSPLight(&hmc_seg7_light_07010118, 2),
+ gsSPLight(&hmc_seg7_lights_07010118.l, 1),
+ gsSPLight(&hmc_seg7_lights_07010118.a, 2),
gsSPVertex(hmc_seg7_vertex_07010148, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 3, 6, 0x0),
@@ -931,8 +923,8 @@ static const Gfx hmc_seg7_dl_07012C78[] = {
gsSP2Triangles(12, 9, 13, 0x0, 11, 10, 14, 0x0),
gsSP2Triangles(11, 15, 0, 0x0, 11, 14, 15, 0x0),
gsSP1Triangle(12, 10, 9, 0x0),
- gsSPLight(&hmc_seg7_light_07010138, 1),
- gsSPLight(&hmc_seg7_light_07010130, 2),
+ gsSPLight(&hmc_seg7_lights_07010130.l, 1),
+ gsSPLight(&hmc_seg7_lights_07010130.a, 2),
gsSPVertex(hmc_seg7_vertex_07010448, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
@@ -1248,8 +1240,8 @@ static const Gfx hmc_seg7_dl_07013BC8[] = {
// 0x07013C78 - 0x07013CA8
static const Gfx hmc_seg7_dl_07013C78[] = {
- gsSPLight(&hmc_seg7_light_07010120, 1),
- gsSPLight(&hmc_seg7_light_07010118, 2),
+ gsSPLight(&hmc_seg7_lights_07010118.l, 1),
+ gsSPLight(&hmc_seg7_lights_07010118.a, 2),
gsSPVertex(hmc_seg7_vertex_07012C38, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/hmc/areas/1/16/model.inc.c b/levels/hmc/areas/1/16/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07014CB8 - 0x07014CC0
-static const Ambient hmc_seg7_light_07014CB8 = {
- {{0x23, 0x2b, 0x14}, 0, {0x23, 0x2b, 0x14}, 0}
-};
-
-// 0x07014CC0 - 0x07014CD0
-static const Light hmc_seg7_light_07014CC0 = {
- {{0x8e, 0xac, 0x52}, 0, {0x8e, 0xac, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07014CB8 - 0x07014CD0
+static const Lights1 hmc_seg7_lights_07014CB8 = gdSPDefLights1(
+ 0x23, 0x2b, 0x14,
+ 0x8e, 0xac, 0x52, 0x28, 0x28, 0x28
+);
// 0x07014CD0 - 0x07014DD0
static const Vtx hmc_seg7_vertex_07014CD0[] = {
@@ -33,8 +29,8 @@ static const Gfx hmc_seg7_dl_07014DD0[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, cave_0900C000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07014CC0, 1),
- gsSPLight(&hmc_seg7_light_07014CB8, 2),
+ gsSPLight(&hmc_seg7_lights_07014CB8.l, 1),
+ gsSPLight(&hmc_seg7_lights_07014CB8.a, 2),
gsSPVertex(hmc_seg7_vertex_07014CD0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/hmc/areas/1/17/model.inc.c b/levels/hmc/areas/1/17/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07014EB8 - 0x07014EC0
-static const Ambient hmc_seg7_light_07014EB8 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07014EC0 - 0x07014ED0
-static const Light hmc_seg7_light_07014EC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07014ED0 - 0x07014ED8
-static const Ambient hmc_seg7_light_07014ED0 = {
- {{0x79, 0x00, 0x00}, 0, {0x79, 0x00, 0x00}, 0}
-};
-
-// 0x07014ED8 - 0x07014EE8
-static const Light hmc_seg7_light_07014ED8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07014EB8 - 0x07014ED0
+static const Lights1 hmc_seg7_lights_07014EB8 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07014ED0 - 0x07014EE8
+static const Lights1 hmc_seg7_lights_07014ED0 = gdSPDefLights1(
+ 0x79, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07014EE8 - 0x07014FE8
static const Vtx hmc_seg7_vertex_07014EE8[] = {
@@ -562,8 +554,8 @@ static const Gfx hmc_seg7_dl_07016918[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07014EC0, 1),
- gsSPLight(&hmc_seg7_light_07014EB8, 2),
+ gsSPLight(&hmc_seg7_lights_07014EB8.l, 1),
+ gsSPLight(&hmc_seg7_lights_07014EB8.a, 2),
gsSPVertex(hmc_seg7_vertex_07014EE8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -609,8 +601,8 @@ static const Gfx hmc_seg7_dl_07016A90[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 4, 8, 9, 0x0, 4, 6, 8, 0x0),
- gsSPLight(&hmc_seg7_light_07014ED8, 1),
- gsSPLight(&hmc_seg7_light_07014ED0, 2),
+ gsSPLight(&hmc_seg7_lights_07014ED0.l, 1),
+ gsSPLight(&hmc_seg7_lights_07014ED0.a, 2),
gsSPVertex(hmc_seg7_vertex_07015558, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 2, 6, 0x0),
@@ -622,8 +614,8 @@ static const Gfx hmc_seg7_dl_07016BA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07014EC0, 1),
- gsSPLight(&hmc_seg7_light_07014EB8, 2),
+ gsSPLight(&hmc_seg7_lights_07014EB8.l, 1),
+ gsSPLight(&hmc_seg7_lights_07014EB8.a, 2),
gsSPVertex(hmc_seg7_vertex_070155C8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 6, 3, 0x0),
diff --git a/levels/hmc/areas/1/22/model.inc.c b/levels/hmc/areas/1/22/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07019430 - 0x07019438
-static const Ambient hmc_seg7_light_07019430 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07019438 - 0x07019448
-static const Light hmc_seg7_light_07019438 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07019430 - 0x07019448
+static const Lights1 hmc_seg7_lights_07019430 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07019448 - 0x07019548
static const Vtx hmc_seg7_vertex_07019448[] = {
@@ -198,8 +194,8 @@ static const Gfx hmc_seg7_dl_07019D18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07019438, 1),
- gsSPLight(&hmc_seg7_light_07019430, 2),
+ gsSPLight(&hmc_seg7_lights_07019430.l, 1),
+ gsSPLight(&hmc_seg7_lights_07019430.a, 2),
gsSPVertex(hmc_seg7_vertex_07019448, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/hmc/areas/1/24/model.inc.c b/levels/hmc/areas/1/24/model.inc.c
@@ -1,52 +1,32 @@
-// 0x0701A4B8 - 0x0701A4C0
-static const Ambient hmc_seg7_light_0701A4B8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0701A4C0 - 0x0701A4D0
-static const Light hmc_seg7_light_0701A4C0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701A4D0 - 0x0701A4D8
-static const Ambient hmc_seg7_light_0701A4D0 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x0701A4D8 - 0x0701A4E8
-static const Light hmc_seg7_light_0701A4D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701A4E8 - 0x0701A4F0
-static const Ambient hmc_seg7_light_0701A4E8 = {
- {{0x79, 0x00, 0x00}, 0, {0x79, 0x00, 0x00}, 0}
-};
-
-// 0x0701A4F0 - 0x0701A500
-static const Light hmc_seg7_light_0701A4F0 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701A500 - 0x0701A508
-static const Ambient hmc_seg7_light_0701A500 = {
- {{0x51, 0x43, 0x26}, 0, {0x51, 0x43, 0x26}, 0}
-};
-
-// 0x0701A508 - 0x0701A518
-static const Light hmc_seg7_light_0701A508 = {
- {{0xac, 0x8e, 0x52}, 0, {0xac, 0x8e, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701A518 - 0x0701A520
-static const Ambient hmc_seg7_light_0701A518 = {
- {{0x5a, 0x46, 0x1d}, 0, {0x5a, 0x46, 0x1d}, 0}
-};
-
-// 0x0701A520 - 0x0701A530
-static const Light hmc_seg7_light_0701A520 = {
- {{0xbf, 0x94, 0x3f}, 0, {0xbf, 0x94, 0x3f}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A4B8 - 0x0701A4D0
+static const Lights1 hmc_seg7_lights_0701A4B8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0701A4D0 - 0x0701A4E8
+static const Lights1 hmc_seg7_lights_0701A4D0 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0701A4E8 - 0x0701A500
+static const Lights1 hmc_seg7_lights_0701A4E8 = gdSPDefLights1(
+ 0x79, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0701A500 - 0x0701A518
+static const Lights1 hmc_seg7_lights_0701A500 = gdSPDefLights1(
+ 0x51, 0x43, 0x26,
+ 0xac, 0x8e, 0x52, 0x28, 0x28, 0x28
+);
+
+// 0x0701A518 - 0x0701A530
+static const Lights1 hmc_seg7_lights_0701A518 = gdSPDefLights1(
+ 0x5a, 0x46, 0x1d,
+ 0xbf, 0x94, 0x3f, 0x28, 0x28, 0x28
+);
// 0x0701A530 - 0x0701A610
static const Vtx hmc_seg7_vertex_0701A530[] = {
@@ -1048,8 +1028,8 @@ static const Gfx hmc_seg7_dl_0701D5A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_0701A4C0, 1),
- gsSPLight(&hmc_seg7_light_0701A4B8, 2),
+ gsSPLight(&hmc_seg7_lights_0701A4B8.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A4B8.a, 2),
gsSPVertex(hmc_seg7_vertex_0701A530, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
@@ -1057,8 +1037,8 @@ static const Gfx hmc_seg7_dl_0701D5A0[] = {
gsSP2Triangles( 3, 5, 10, 0x0, 8, 3, 10, 0x0),
gsSP2Triangles( 8, 10, 9, 0x0, 11, 1, 0, 0x0),
gsSP2Triangles(11, 12, 1, 0x0, 0, 2, 13, 0x0),
- gsSPLight(&hmc_seg7_light_0701A4D8, 1),
- gsSPLight(&hmc_seg7_light_0701A4D0, 2),
+ gsSPLight(&hmc_seg7_lights_0701A4D0.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A4D0.a, 2),
gsSPVertex(hmc_seg7_vertex_0701A610, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 5, 1, 0x0),
@@ -1103,8 +1083,8 @@ static const Gfx hmc_seg7_dl_0701D708[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 4, 3, 5, 0x0),
gsSP1Triangle( 6, 4, 5, 0x0),
- gsSPLight(&hmc_seg7_light_0701A4F0, 1),
- gsSPLight(&hmc_seg7_light_0701A4E8, 2),
+ gsSPLight(&hmc_seg7_lights_0701A4E8.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A4E8.a, 2),
gsSPVertex(hmc_seg7_vertex_0701AB50, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1117,8 +1097,8 @@ static const Gfx hmc_seg7_dl_0701D8B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_0701A508, 1),
- gsSPLight(&hmc_seg7_light_0701A500, 2),
+ gsSPLight(&hmc_seg7_lights_0701A500.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A500.a, 2),
gsSPVertex(hmc_seg7_vertex_0701AC30, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 2, 5, 0x0, 0, 5, 4, 0x0),
@@ -1127,8 +1107,8 @@ static const Gfx hmc_seg7_dl_0701D8B0[] = {
gsSP2Triangles( 8, 10, 13, 0x0, 9, 11, 10, 0x0),
gsSP2Triangles( 6, 14, 15, 0x0, 6, 15, 7, 0x0),
gsSP2Triangles(14, 13, 15, 0x0, 14, 8, 13, 0x0),
- gsSPLight(&hmc_seg7_light_0701A520, 1),
- gsSPLight(&hmc_seg7_light_0701A518, 2),
+ gsSPLight(&hmc_seg7_lights_0701A518.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A518.a, 2),
gsSPVertex(hmc_seg7_vertex_0701AD30, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 3, 2, 5, 0x0),
@@ -1137,15 +1117,15 @@ static const Gfx hmc_seg7_dl_0701D8B0[] = {
gsSPVertex(hmc_seg7_vertex_0701AE10, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 6, 1, 0x0),
- gsSPLight(&hmc_seg7_light_0701A4C0, 1),
- gsSPLight(&hmc_seg7_light_0701A4B8, 2),
+ gsSPLight(&hmc_seg7_lights_0701A4B8.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A4B8.a, 2),
gsSPVertex(hmc_seg7_vertex_0701AE80, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 5, 7, 0x0),
gsSP2Triangles( 5, 8, 9, 0x0, 5, 9, 7, 0x0),
gsSP2Triangles( 5, 10, 8, 0x0, 10, 11, 8, 0x0),
- gsSPLight(&hmc_seg7_light_0701A4D8, 1),
- gsSPLight(&hmc_seg7_light_0701A4D0, 2),
+ gsSPLight(&hmc_seg7_lights_0701A4D0.l, 1),
+ gsSPLight(&hmc_seg7_lights_0701A4D0.a, 2),
gsSPVertex(hmc_seg7_vertex_0701AF40, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 5, 7, 0x0, 5, 4, 7, 0x0),
diff --git a/levels/hmc/areas/1/29/model.inc.c b/levels/hmc/areas/1/29/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070200B0 - 0x070200B8
-static const Ambient hmc_seg7_light_070200B0 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x070200B8 - 0x070200C8
-static const Light hmc_seg7_light_070200B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070200B0 - 0x070200C8
+static const Lights1 hmc_seg7_lights_070200B0 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070200C8 - 0x070201C8
static const Vtx hmc_seg7_vertex_070200C8[] = {
@@ -226,8 +222,8 @@ static const Gfx hmc_seg7_dl_07020B18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_070200B8, 1),
- gsSPLight(&hmc_seg7_light_070200B0, 2),
+ gsSPLight(&hmc_seg7_lights_070200B0.l, 1),
+ gsSPLight(&hmc_seg7_lights_070200B0.a, 2),
gsSPVertex(hmc_seg7_vertex_070200C8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 3, 0x0),
diff --git a/levels/hmc/areas/1/30/model.inc.c b/levels/hmc/areas/1/30/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070210E0 - 0x070210E8
-static const Ambient hmc_seg7_light_070210E0 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x070210E8 - 0x070210F8
-static const Light hmc_seg7_light_070210E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070210E0 - 0x070210F8
+static const Lights1 hmc_seg7_lights_070210E0 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070210F8 - 0x070211F8
static const Vtx hmc_seg7_vertex_070210F8[] = {
@@ -109,8 +105,8 @@ static const Gfx hmc_seg7_dl_070215B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_070210E8, 1),
- gsSPLight(&hmc_seg7_light_070210E0, 2),
+ gsSPLight(&hmc_seg7_lights_070210E0.l, 1),
+ gsSPLight(&hmc_seg7_lights_070210E0.a, 2),
gsSPVertex(hmc_seg7_vertex_070210F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/hmc/areas/1/5/model.inc.c b/levels/hmc/areas/1/5/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07009460 - 0x07009468
-static const Ambient hmc_seg7_light_07009460 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07009468 - 0x07009478
-static const Light hmc_seg7_light_07009468 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07009478 - 0x07009480
-static const Ambient hmc_seg7_light_07009478 = {
- {{0x79, 0x00, 0x00}, 0, {0x79, 0x00, 0x00}, 0}
-};
-
-// 0x07009480 - 0x07009490
-static const Light hmc_seg7_light_07009480 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07009490 - 0x07009498
-static const Ambient hmc_seg7_light_07009490 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x07009498 - 0x070094A8
-static const Light hmc_seg7_light_07009498 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009460 - 0x07009478
+static const Lights1 hmc_seg7_lights_07009460 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07009478 - 0x07009490
+static const Lights1 hmc_seg7_lights_07009478 = gdSPDefLights1(
+ 0x79, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x07009490 - 0x070094A8
+static const Lights1 hmc_seg7_lights_07009490 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
// 0x070094A8 - 0x07009588
static const Vtx hmc_seg7_vertex_070094A8[] = {
@@ -1250,8 +1238,8 @@ static const Gfx hmc_seg7_dl_0700CF78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07009468, 1),
- gsSPLight(&hmc_seg7_light_07009460, 2),
+ gsSPLight(&hmc_seg7_lights_07009460.l, 1),
+ gsSPLight(&hmc_seg7_lights_07009460.a, 2),
gsSPVertex(hmc_seg7_vertex_070094A8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1333,8 +1321,8 @@ static const Gfx hmc_seg7_dl_0700D1C8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 1, 7, 0x0, 6, 7, 8, 0x0),
gsSP1Triangle( 0, 7, 1, 0x0),
- gsSPLight(&hmc_seg7_light_07009480, 1),
- gsSPLight(&hmc_seg7_light_07009478, 2),
+ gsSPLight(&hmc_seg7_lights_07009478.l, 1),
+ gsSPLight(&hmc_seg7_lights_07009478.a, 2),
gsSPVertex(hmc_seg7_vertex_0700A148, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 5, 6, 0x0),
@@ -1346,8 +1334,8 @@ static const Gfx hmc_seg7_dl_0700D3D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07009498, 1),
- gsSPLight(&hmc_seg7_light_07009490, 2),
+ gsSPLight(&hmc_seg7_lights_07009490.l, 1),
+ gsSPLight(&hmc_seg7_lights_07009490.a, 2),
gsSPVertex(hmc_seg7_vertex_0700A1B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
@@ -1357,8 +1345,8 @@ static const Gfx hmc_seg7_dl_0700D3D8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&hmc_seg7_light_07009468, 1),
- gsSPLight(&hmc_seg7_light_07009460, 2),
+ gsSPLight(&hmc_seg7_lights_07009460.l, 1),
+ gsSPLight(&hmc_seg7_lights_07009460.a, 2),
gsSPVertex(hmc_seg7_vertex_0700A358, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 7, 0x0, 3, 5, 7, 0x0),
diff --git a/levels/hmc/areas/1/macro.inc.c b/levels/hmc/areas/1/macro.inc.c
@@ -1,14 +1,14 @@
// 0x0702AA78 - 0x0702ADC2
const MacroObject hmc_seg7_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ -6060, 2048, 5960, /*behParam*/ 89),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -6770, 1845, 4577, /*behParam*/ 50),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ -6060, 2048, 5960, /*behParam*/ DIALOG_089),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -6770, 1845, 4577, /*behParam*/ DIALOG_050),
MACRO_OBJECT(/*preset*/ macro_swoop_2, /*yaw*/ 0, /*pos*/ -439, 220, -2540),
MACRO_OBJECT(/*preset*/ macro_swoop, /*yaw*/ 0, /*pos*/ 80, 140, -4660),
MACRO_OBJECT(/*preset*/ macro_swoop, /*yaw*/ 0, /*pos*/ 800, 60, -7500),
MACRO_OBJECT(/*preset*/ macro_swoop_2, /*yaw*/ 0, /*pos*/ 1880, 100, -7620),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2500, 217, 50, /*behParam*/ 71),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2900, 217, 50, /*behParam*/ 62),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 838, 2052, 3580, /*behParam*/ 88),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2500, 217, 50, /*behParam*/ DIALOG_071),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2900, 217, 50, /*behParam*/ DIALOG_062),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 838, 2052, 3580, /*behParam*/ DIALOG_088),
MACRO_OBJECT(/*preset*/ macro_scuttlebug, /*yaw*/ 0, /*pos*/ -6320, 2048, 6740),
MACRO_OBJECT(/*preset*/ macro_scuttlebug, /*yaw*/ 0, /*pos*/ -5455, 1536, 521),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 2140, 2048, 6540),
@@ -41,15 +41,15 @@ const MacroObject hmc_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_swoop_2, /*yaw*/ 0, /*pos*/ -5440, 1720, -320),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2220, 2048, 4440),
MACRO_OBJECT(/*preset*/ macro_recovery_heart, /*yaw*/ 0, /*pos*/ -7511, 1420, -666),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -3359, 1536, 298, /*behParam*/ 122),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3092, 2033, -7685, /*behParam*/ 138),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5439, 0, 2785, /*behParam*/ 125),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3184, 0, 699, /*behParam*/ 126),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 500, -4300, 3644, /*behParam*/ 127),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -3359, 1536, 298, /*behParam*/ DIALOG_122),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3092, 2033, -7685, /*behParam*/ DIALOG_138),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5439, 0, 2785, /*behParam*/ DIALOG_125),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3184, 0, 699, /*behParam*/ DIALOG_126),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 500, -4300, 3644, /*behParam*/ DIALOG_127),
MACRO_OBJECT(/*preset*/ macro_box_1up, /*yaw*/ 0, /*pos*/ -4960, 2700, 80),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 2006, 0, 6713, /*behParam*/ 124),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2510, 0, 2800, /*behParam*/ 140),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 510, 0, 5380, /*behParam*/ 139),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 2006, 0, 6713, /*behParam*/ DIALOG_124),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 2510, 0, 2800, /*behParam*/ DIALOG_140),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 510, 0, 5380, /*behParam*/ DIALOG_139),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2340, 2040, 4560),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2460, 2040, 4660),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2060, 2040, 4380),
@@ -79,7 +79,7 @@ const MacroObject hmc_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_breakable_box_no_coins, /*yaw*/ 0, /*pos*/ 2960, 1024, 5140),
MACRO_OBJECT(/*preset*/ macro_breakable_box_no_coins, /*yaw*/ 0, /*pos*/ 4080, 1024, 5760),
MACRO_OBJECT(/*preset*/ macro_breakable_box_no_coins, /*yaw*/ 0, /*pos*/ 6260, 1024, 4960),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -4370, 2860, -2243, /*behParam*/ 43),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -4370, 2860, -2243, /*behParam*/ DIALOG_043),
MACRO_OBJECT(/*preset*/ macro_flamethrower, /*yaw*/ 0, /*pos*/ -2900, 1620, 4640),
MACRO_OBJECT(/*preset*/ macro_fire_spitter, /*yaw*/ 0, /*pos*/ 1420, -380, -7040),
MACRO_OBJECT(/*preset*/ macro_fire_spitter, /*yaw*/ 0, /*pos*/ 2500, -380, -7740),
diff --git a/levels/hmc/areas/1/painting.inc.c b/levels/hmc/areas/1/painting.inc.c
@@ -1,23 +1,16 @@
#include "game/paintings.h"
-// 0x070241B8 - 0x070241C0
-static const Ambient hmc_seg7_light_070241B8 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x070241C0 - 0x070241D0
-static const Light hmc_seg7_light_070241C0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// 0x070241D0 - 0x070241D8
-static const Ambient hmc_seg7_light_070241D0 = {
- {{0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0}
-};
+// 0x070241B8 - 0x070241D0
+static const Lights1 hmc_seg7_lights_070241B8 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xff, 0xff, 0xff, 0x32, 0x32, 0x32
+);
-// 0x070241D8 - 0x070241E8
-static const Light hmc_seg7_light_070241D8 = {
- {{0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28}, 0}
+// 0x070241D0 - 0x070241E8
+// No gdSPDefLights1 macro defined because of odd different light value (0xff and 0xfa)
+static const Lights1 hmc_seg7_lights_070241D0 = {
+ {{ {0x40, 0x40, 0x80}, 0, {0x40, 0x40, 0x80}, 0} },
+ {{{ {0x64, 0x64, 0xff}, 0, {0x64, 0x64, 0xfa}, 0, {0x28, 0x28, 0x28},0} }}
};
// Appears to lock 4 of the sides when shimmering and in use. Unused.
@@ -42,8 +35,8 @@ static const Vtx hmc_seg7_vertex_07024228[] = {
const Gfx hmc_seg7_dl_07024268[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
- gsSPLight(&hmc_seg7_light_070241C0, 1),
- gsSPLight(&hmc_seg7_light_070241B8, 2),
+ gsSPLight(&hmc_seg7_lights_070241B8.l, 1),
+ gsSPLight(&hmc_seg7_lights_070241B8.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPVertex(hmc_seg7_vertex_070241E8, 4, 0),
gsSPEndDisplayList(),
@@ -512,8 +505,8 @@ ALIGNED8 static const u8 hmc_seg7_texture_07024CE0[] = {
// 0x070254E0 - 0x07025518
static const Gfx hmc_seg7_painting_dl_070254E0[] = {
gsDPPipeSync(),
- gsSPLight(&hmc_seg7_light_070241D8, 1),
- gsSPLight(&hmc_seg7_light_070241D0, 2),
+ gsSPLight(&hmc_seg7_lights_070241D0.l, 1),
+ gsSPLight(&hmc_seg7_lights_070241D0.a, 2),
gsSPVertex(hmc_seg7_vertex_07024228, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/hmc/arrow_platform/model.inc.c b/levels/hmc/arrow_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07022B48 - 0x07022B50
-static const Ambient hmc_seg7_light_07022B48 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07022B50 - 0x07022B60
-static const Light hmc_seg7_light_07022B50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022B48 - 0x07022B60
+static const Lights1 hmc_seg7_lights_07022B48 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07022B60 - 0x07022C60
static const Vtx hmc_seg7_vertex_07022B60[] = {
@@ -45,8 +41,8 @@ static const Gfx hmc_seg7_dl_07022CE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07022B50, 1),
- gsSPLight(&hmc_seg7_light_07022B48, 2),
+ gsSPLight(&hmc_seg7_lights_07022B48.l, 1),
+ gsSPLight(&hmc_seg7_lights_07022B48.a, 2),
gsSPVertex(hmc_seg7_vertex_07022B60, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/hmc/arrow_platform_button/model.inc.c b/levels/hmc/arrow_platform_button/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07022E78 - 0x07022E80
-static const Ambient hmc_seg7_light_07022E78 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07022E80 - 0x07022E90
-static const Light hmc_seg7_light_07022E80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022E78 - 0x07022E90
+static const Lights1 hmc_seg7_lights_07022E78 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07022E90 - 0x07022E98
-static const Ambient hmc_seg7_light_07022E90 = {
- {{0x4f, 0x64, 0x5b}, 0, {0x4f, 0x64, 0x5b}, 0}
-};
-
-// 0x07022E98 - 0x07022EA8
-static const Light hmc_seg7_light_07022E98 = {
- {{0xa8, 0xd3, 0xc0}, 0, {0xa8, 0xd3, 0xc0}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022E90 - 0x07022EA8
+static const Lights1 hmc_seg7_lights_07022E90 = gdSPDefLights1(
+ 0x4f, 0x64, 0x5b,
+ 0xa8, 0xd3, 0xc0, 0x28, 0x28, 0x28
+);
// 0x07022EA8 - 0x07022EE8
static const Vtx hmc_seg7_vertex_07022EA8[] = {
@@ -51,8 +43,8 @@ static const Gfx hmc_seg7_dl_07022FE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07022E80, 1),
- gsSPLight(&hmc_seg7_light_07022E78, 2),
+ gsSPLight(&hmc_seg7_lights_07022E78.l, 1),
+ gsSPLight(&hmc_seg7_lights_07022E78.a, 2),
gsSPVertex(hmc_seg7_vertex_07022EA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
@@ -60,8 +52,8 @@ static const Gfx hmc_seg7_dl_07022FE8[] = {
// 0x07023030 - 0x07023090
static const Gfx hmc_seg7_dl_07023030[] = {
- gsSPLight(&hmc_seg7_light_07022E98, 1),
- gsSPLight(&hmc_seg7_light_07022E90, 2),
+ gsSPLight(&hmc_seg7_lights_07022E90.l, 1),
+ gsSPLight(&hmc_seg7_lights_07022E90.a, 2),
gsSPVertex(hmc_seg7_vertex_07022EE8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
diff --git a/levels/hmc/elevator_platform/model.inc.c b/levels/hmc/elevator_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07022910 - 0x07022918
-static const Ambient hmc_seg7_light_07022910 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07022918 - 0x07022928
-static const Light hmc_seg7_light_07022918 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022910 - 0x07022928
+static const Lights1 hmc_seg7_lights_07022910 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07022928 - 0x07022A08
static const Vtx hmc_seg7_vertex_07022928[] = {
@@ -31,8 +27,8 @@ static const Gfx hmc_seg7_dl_07022A08[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cave_09002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07022918, 1),
- gsSPLight(&hmc_seg7_light_07022910, 2),
+ gsSPLight(&hmc_seg7_lights_07022910.l, 1),
+ gsSPLight(&hmc_seg7_lights_07022910.a, 2),
gsSPVertex(hmc_seg7_vertex_07022928, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 1, 0x0),
diff --git a/levels/hmc/leveldata.c b/levels/hmc/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/hmc/texture.inc.c"
diff --git a/levels/hmc/rolling_rock/model.inc.c b/levels/hmc/rolling_rock/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07023160 - 0x07023168
-static const Ambient hmc_seg7_light_07023160 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07023168 - 0x07023178
-static const Light hmc_seg7_light_07023168 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07023160 - 0x07023178
+static const Lights1 hmc_seg7_lights_07023160 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07023178 - 0x07023278
static const Vtx hmc_seg7_vertex_07023178[] = {
@@ -163,8 +159,8 @@ static const Gfx hmc_seg7_dl_070238D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07023168, 1),
- gsSPLight(&hmc_seg7_light_07023160, 2),
+ gsSPLight(&hmc_seg7_lights_07023160.l, 1),
+ gsSPLight(&hmc_seg7_lights_07023160.a, 2),
gsSPVertex(hmc_seg7_vertex_07023178, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 3, 4, 1, 0x0, 3, 5, 4, 0x0),
diff --git a/levels/hmc/rolling_rock_fragment_1/model.inc.c b/levels/hmc/rolling_rock_fragment_1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07023C70 - 0x07023C78
-static const Ambient hmc_seg7_light_07023C70 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07023C78 - 0x07023C88
-static const Light hmc_seg7_light_07023C78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07023C70 - 0x07023C88
+static const Lights1 hmc_seg7_lights_07023C70 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07023C88 - 0x07023D48
static const Vtx hmc_seg7_vertex_07023C88[] = {
@@ -29,8 +25,8 @@ static const Gfx hmc_seg7_dl_07023D48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07023C78, 1),
- gsSPLight(&hmc_seg7_light_07023C70, 2),
+ gsSPLight(&hmc_seg7_lights_07023C70.l, 1),
+ gsSPLight(&hmc_seg7_lights_07023C70.a, 2),
gsSPVertex(hmc_seg7_vertex_07023C88, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 5, 6, 4, 0x0),
diff --git a/levels/hmc/rolling_rock_fragment_2/model.inc.c b/levels/hmc/rolling_rock_fragment_2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07023EB8 - 0x07023EC0
-static const Ambient hmc_seg7_light_07023EB8 = {
- {{0x79, 0x79, 0x79}, 0, {0x79, 0x79, 0x79}, 0}
-};
-
-// 0x07023EC0 - 0x07023ED0
-static const Light hmc_seg7_light_07023EC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07023EB8 - 0x07023ED0
+static const Lights1 hmc_seg7_lights_07023EB8 = gdSPDefLights1(
+ 0x79, 0x79, 0x79,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07023ED0 - 0x07023FD0
static const Vtx hmc_seg7_vertex_07023ED0[] = {
@@ -48,8 +44,8 @@ static const Gfx hmc_seg7_dl_07024080[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, hmc_seg7_texture_07004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&hmc_seg7_light_07023EC0, 1),
- gsSPLight(&hmc_seg7_light_07023EB8, 2),
+ gsSPLight(&hmc_seg7_lights_07023EB8.l, 1),
+ gsSPLight(&hmc_seg7_lights_07023EB8.a, 2),
gsSPVertex(hmc_seg7_vertex_07023ED0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/hmc/script.c b/levels/hmc/script.c
@@ -97,10 +97,10 @@ const LevelScript level_hmc_entry[] = {
AREA(/*index*/ 1, hmc_geo_000B90),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7152, 3161, 7181, /*angle*/ 0, 135, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3351, -4690, 4773, /*angle*/ 0, 0, 0, /*behParam*/ 0x340B0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x07, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x1C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_HMC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_COTMC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
diff --git a/levels/intro/script.c b/levels/intro/script.c
@@ -6,6 +6,7 @@
#include "segment_symbols.h"
#include "level_commands.h"
+#include "game/area.h"
#include "game/level_update.h"
#include "menu/level_select_menu.h"
@@ -31,7 +32,7 @@ const LevelScript level_intro_entry_1[] = {
LOAD_AREA(/*area*/ 1),
CALL(/*arg*/ 0, /*func*/ LevelProc_8016F508),
SLEEP(/*frames*/ 75),
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ 0, 0, 0),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0x00, 0x00, 0x00),
SLEEP(/*frames*/ 16),
CMD2A(/*unk2*/ 1),
CLEAR_LEVEL(),
@@ -56,7 +57,7 @@ const LevelScript level_intro_entry_2[] = {
BLACKOUT(/*active*/ FALSE),
LOAD_AREA(/*area*/ 1),
SET_MENU_MUSIC(/*seq*/ 0x0002),
- TRANSITION(/*transType*/ 8, /*time*/ 20, /*color*/ 0, 0, 0),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),
SLEEP(/*frames*/ 20),
CALL_LOOP(/*arg*/ 1, /*func*/ LevelProc_8016F508),
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),
@@ -81,7 +82,7 @@ const LevelScript level_intro_entry_3[] = {
BLACKOUT(/*active*/ FALSE),
LOAD_AREA(/*area*/ 1),
SET_MENU_MUSIC(/*seq*/ 0x0082),
- TRANSITION(/*transType*/ 8, /*time*/ 20, /*color*/ 0, 0, 0),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_STAR, /*time*/ 20, /*color*/ 0x00, 0x00, 0x00),
SLEEP(/*frames*/ 20),
CALL_LOOP(/*arg*/ 2, /*func*/ LevelProc_8016F508),
JUMP_IF(/*op*/ OP_EQ, /*arg*/ 100, script_intro_L1),
@@ -103,7 +104,7 @@ const LevelScript level_intro_entry_4[] = {
FREE_LEVEL_POOL(),
LOAD_AREA(/*area*/ 1),
SET_MENU_MUSIC(/*seq*/ 0x0002),
- TRANSITION(/*transType*/ 0, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CALL_LOOP(/*arg*/ 3, /*func*/ LevelProc_8016F508),
JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_intro_L5),
@@ -114,7 +115,7 @@ const LevelScript level_intro_entry_4[] = {
const LevelScript script_intro_L1[] = {
STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP(/*frames*/ 2),
@@ -123,7 +124,7 @@ const LevelScript script_intro_L1[] = {
};
const LevelScript script_intro_L2[] = {
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP(/*frames*/ 2),
@@ -132,7 +133,7 @@ const LevelScript script_intro_L2[] = {
const LevelScript script_intro_L3[] = {
STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP(/*frames*/ 2),
@@ -140,7 +141,7 @@ const LevelScript script_intro_L3[] = {
};
const LevelScript script_intro_L4[] = {
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP(/*frames*/ 2),
@@ -149,7 +150,7 @@ const LevelScript script_intro_L4[] = {
const LevelScript script_intro_L5[] = {
STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ 0, 0, 0),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0x00, 0x00, 0x00),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP(/*frames*/ 2),
diff --git a/levels/jrb/areas/1/2/model.inc.c b/levels/jrb/areas/1/2/model.inc.c
@@ -1,32 +1,20 @@
-// 0x070030A8 - 0x070030B0
-static const Ambient jrb_seg7_light_070030A8 = {
- {{0x10, 0x25, 0x1e}, 0, {0x10, 0x25, 0x1e}, 0}
-};
+// 0x070030A8 - 0x070030C0
+static const Lights1 jrb_seg7_lights_070030A8 = gdSPDefLights1(
+ 0x10, 0x25, 0x1e,
+ 0x41, 0x96, 0x78, 0x28, 0x28, 0x28
+);
-// 0x070030B0 - 0x070030C0
-static const Light jrb_seg7_light_070030B0 = {
- {{0x41, 0x96, 0x78}, 0, {0x41, 0x96, 0x78}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070030C0 - 0x070030D8
+static const Lights1 jrb_seg7_lights_070030C0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x070030C0 - 0x070030C8
-static const Ambient jrb_seg7_light_070030C0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070030C8 - 0x070030D8
-static const Light jrb_seg7_light_070030C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070030D8 - 0x070030E0
-static const Ambient jrb_seg7_light_070030D8 = {
- {{0x1e, 0x27, 0x3a}, 0, {0x1e, 0x27, 0x3a}, 0}
-};
-
-// 0x070030E0 - 0x070030F0
-static const Light jrb_seg7_light_070030E0 = {
- {{0x79, 0x9f, 0xeb}, 0, {0x79, 0x9f, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070030D8 - 0x070030F0
+static const Lights1 jrb_seg7_lights_070030D8 = gdSPDefLights1(
+ 0x1e, 0x27, 0x3a,
+ 0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28
+);
// 0x070030F0 - 0x070031F0
static const Vtx jrb_seg7_vertex_070030F0[] = {
@@ -385,8 +373,8 @@ static const Gfx jrb_seg7_dl_070041F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070030B0, 1),
- gsSPLight(&jrb_seg7_light_070030A8, 2),
+ gsSPLight(&jrb_seg7_lights_070030A8.l, 1),
+ gsSPLight(&jrb_seg7_lights_070030A8.a, 2),
gsSPVertex(jrb_seg7_vertex_070030F0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 5, 3, 2, 0x0, 4, 3, 6, 0x0),
@@ -401,8 +389,8 @@ static const Gfx jrb_seg7_dl_070041F0[] = {
gsSPVertex(jrb_seg7_vertex_070031F0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 4, 3, 5, 0x0),
- gsSPLight(&jrb_seg7_light_070030C8, 1),
- gsSPLight(&jrb_seg7_light_070030C0, 2),
+ gsSPLight(&jrb_seg7_lights_070030C0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070030C0.a, 2),
gsSPVertex(jrb_seg7_vertex_07003250, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 2, 4, 5, 0x0),
@@ -444,8 +432,8 @@ static const Gfx jrb_seg7_dl_070044C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070030E0, 1),
- gsSPLight(&jrb_seg7_light_070030D8, 2),
+ gsSPLight(&jrb_seg7_lights_070030D8.l, 1),
+ gsSPLight(&jrb_seg7_lights_070030D8.a, 2),
gsSPVertex(jrb_seg7_vertex_07003700, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 5, 4, 0x0),
@@ -492,8 +480,8 @@ static const Gfx jrb_seg7_dl_070046C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070030C8, 1),
- gsSPLight(&jrb_seg7_light_070030C0, 2),
+ gsSPLight(&jrb_seg7_lights_070030C0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070030C0.a, 2),
gsSPVertex(jrb_seg7_vertex_07003B10, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 1, 5, 2, 0x0),
diff --git a/levels/jrb/areas/1/3/model.inc.c b/levels/jrb/areas/1/3/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07004A18 - 0x07004A20
-static const Ambient jrb_seg7_light_07004A18 = {
- {{0x1e, 0x27, 0x3a}, 0, {0x1e, 0x27, 0x3a}, 0}
-};
-
-// 0x07004A20 - 0x07004A30
-static const Light jrb_seg7_light_07004A20 = {
- {{0x79, 0x9f, 0xeb}, 0, {0x79, 0x9f, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004A18 - 0x07004A30
+static const Lights1 jrb_seg7_lights_07004A18 = gdSPDefLights1(
+ 0x1e, 0x27, 0x3a,
+ 0x79, 0x9f, 0xeb, 0x28, 0x28, 0x28
+);
-// 0x07004A30 - 0x07004A38
-static const Ambient jrb_seg7_light_07004A30 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004A38 - 0x07004A48
-static const Light jrb_seg7_light_07004A38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004A30 - 0x07004A48
+static const Lights1 jrb_seg7_lights_07004A30 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004A48 - 0x07004AC8
static const Vtx jrb_seg7_vertex_07004A48[] = {
@@ -51,8 +43,8 @@ static const Gfx jrb_seg7_dl_07004B88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07004A20, 1),
- gsSPLight(&jrb_seg7_light_07004A18, 2),
+ gsSPLight(&jrb_seg7_lights_07004A18.l, 1),
+ gsSPLight(&jrb_seg7_lights_07004A18.a, 2),
gsSPVertex(jrb_seg7_vertex_07004A48, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 4, 5, 0x0),
@@ -65,8 +57,8 @@ static const Gfx jrb_seg7_dl_07004BF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07004A38, 1),
- gsSPLight(&jrb_seg7_light_07004A30, 2),
+ gsSPLight(&jrb_seg7_lights_07004A30.l, 1),
+ gsSPLight(&jrb_seg7_lights_07004A30.a, 2),
gsSPVertex(jrb_seg7_vertex_07004AC8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
diff --git a/levels/jrb/areas/1/4/model.inc.c b/levels/jrb/areas/1/4/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07004D40 - 0x07004D48
-static const Ambient jrb_seg7_light_07004D40 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07004D48 - 0x07004D58
-static const Light jrb_seg7_light_07004D48 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004D40 - 0x07004D58
+static const Lights1 jrb_seg7_lights_07004D40 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
-// 0x07004D58 - 0x07004D60
-static const Ambient jrb_seg7_light_07004D58 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004D60 - 0x07004D70
-static const Light jrb_seg7_light_07004D60 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004D58 - 0x07004D70
+static const Lights1 jrb_seg7_lights_07004D58 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004D70 - 0x07004DF0
static const Vtx jrb_seg7_vertex_07004D70[] = {
@@ -186,14 +178,14 @@ static const Gfx jrb_seg7_dl_07005560[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07004D48, 1),
- gsSPLight(&jrb_seg7_light_07004D40, 2),
+ gsSPLight(&jrb_seg7_lights_07004D40.l, 1),
+ gsSPLight(&jrb_seg7_lights_07004D40.a, 2),
gsSPVertex(jrb_seg7_vertex_07004D70, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 2, 3, 0x0, 0, 5, 6, 0x0),
gsSP2Triangles( 0, 6, 7, 0x0, 0, 4, 5, 0x0),
- gsSPLight(&jrb_seg7_light_07004D60, 1),
- gsSPLight(&jrb_seg7_light_07004D58, 2),
+ gsSPLight(&jrb_seg7_lights_07004D58.l, 1),
+ gsSPLight(&jrb_seg7_lights_07004D58.a, 2),
gsSPVertex(jrb_seg7_vertex_07004DF0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 0, 5, 1, 0x0),
diff --git a/levels/jrb/areas/1/5/model.inc.c b/levels/jrb/areas/1/5/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07005990 - 0x07005998
-static const Ambient jrb_seg7_light_07005990 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
+// 0x07005990 - 0x070059A8
+static const Lights1 jrb_seg7_lights_07005990 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07005998 - 0x070059A8
-static const Light jrb_seg7_light_07005998 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070059A8 - 0x070059C0
+static const Lights1 jrb_seg7_lights_070059A8 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x070059A8 - 0x070059B0
-static const Ambient jrb_seg7_light_070059A8 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x070059B0 - 0x070059C0
-static const Light jrb_seg7_light_070059B0 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070059C0 - 0x070059C8
-static const Ambient jrb_seg7_light_070059C0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x070059C8 - 0x070059D8
-static const Light jrb_seg7_light_070059C8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070059C0 - 0x070059D8
+static const Lights1 jrb_seg7_lights_070059C0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x070059D8 - 0x07005AC8
static const Vtx jrb_seg7_vertex_070059D8[] = {
@@ -268,8 +256,8 @@ static const Gfx jrb_seg7_dl_07006508[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07005998, 1),
- gsSPLight(&jrb_seg7_light_07005990, 2),
+ gsSPLight(&jrb_seg7_lights_07005990.l, 1),
+ gsSPLight(&jrb_seg7_lights_07005990.a, 2),
gsSPVertex(jrb_seg7_vertex_070059D8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -287,15 +275,15 @@ static const Gfx jrb_seg7_dl_070065A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070059B0, 1),
- gsSPLight(&jrb_seg7_light_070059A8, 2),
+ gsSPLight(&jrb_seg7_lights_070059A8.l, 1),
+ gsSPLight(&jrb_seg7_lights_070059A8.a, 2),
gsSPVertex(jrb_seg7_vertex_07005B78, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 2, 3, 4, 0x0, 0, 5, 1, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 7, 6, 5, 0x0, 7, 5, 0, 0x0),
- gsSPLight(&jrb_seg7_light_07005998, 1),
- gsSPLight(&jrb_seg7_light_07005990, 2),
+ gsSPLight(&jrb_seg7_lights_07005990.l, 1),
+ gsSPLight(&jrb_seg7_lights_07005990.a, 2),
gsSPVertex(jrb_seg7_vertex_07005BF8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -368,8 +356,8 @@ static const Gfx jrb_seg7_dl_070067F0[] = {
// 0x07006980 - 0x070069B0
static const Gfx jrb_seg7_dl_07006980[] = {
- gsSPLight(&jrb_seg7_light_070059C8, 1),
- gsSPLight(&jrb_seg7_light_070059C0, 2),
+ gsSPLight(&jrb_seg7_lights_070059C0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070059C0.a, 2),
gsSPVertex(jrb_seg7_vertex_070064C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/jrb/areas/1/6/model.inc.c b/levels/jrb/areas/1/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07006A98 - 0x07006AA0
-static const Ambient jrb_seg7_light_07006A98 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07006AA0 - 0x07006AB0
-static const Light jrb_seg7_light_07006AA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07006A98 - 0x07006AB0
+static const Lights1 jrb_seg7_lights_07006A98 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07006AB0 - 0x07006BA0
static const Vtx jrb_seg7_vertex_07006AB0[] = {
@@ -176,8 +172,8 @@ static const Gfx jrb_seg7_dl_070072A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07006AA0, 1),
- gsSPLight(&jrb_seg7_light_07006A98, 2),
+ gsSPLight(&jrb_seg7_lights_07006A98.l, 1),
+ gsSPLight(&jrb_seg7_lights_07006A98.a, 2),
gsSPVertex(jrb_seg7_vertex_07006AB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/jrb/areas/1/geo.inc.c b/levels/jrb/areas/1/geo.inc.c
@@ -32,7 +32,7 @@ const GeoLayout jrb_geo_000A18[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/jrb/areas/1/macro.inc.c b/levels/jrb/areas/1/macro.inc.c
@@ -1,6 +1,6 @@
// 0x0700C4E8 - 0x0700C756
const MacroObject jrb_seg7_area_1_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 250, /*pos*/ -6325, 1126, 1730, /*behParam*/ 60),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 250, /*pos*/ -6325, 1126, 1730, /*behParam*/ DIALOG_060),
MACRO_OBJECT(/*preset*/ macro_coin_ring_vertical, /*yaw*/ 0, /*pos*/ 5060, -4420, 720),
MACRO_OBJECT(/*preset*/ macro_box_metal_cap, /*yaw*/ 0, /*pos*/ 2077, 1832, 7465),
MACRO_OBJECT(/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/ 0, /*pos*/ -1780, -650, 4200),
@@ -27,8 +27,8 @@ const MacroObject jrb_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 3642, -5103, 3175),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 4400, 2200, 1300),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 5400, 2200, 1300),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -900, -2966, -2200, /*behParam*/ 73),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 80, /*pos*/ -2552, 1331, 6573, /*behParam*/ 51),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -900, -2966, -2200, /*behParam*/ DIALOG_073),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 80, /*pos*/ -2552, 1331, 6573, /*behParam*/ DIALOG_051),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 315, /*pos*/ -1800, -1023, 3500),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 225, /*pos*/ -480, 512, 5980),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 270, /*pos*/ 700, -511, 4250),
@@ -56,11 +56,11 @@ const MacroObject jrb_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 45, /*pos*/ 3280, 1536, 5940),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 45, /*pos*/ 3200, 1536, 6720),
MACRO_OBJECT(/*preset*/ macro_box_metal_cap, /*yaw*/ 0, /*pos*/ -7160, 1340, 2580),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -6910, 1120, 2380, /*behParam*/ 113),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -6910, 1120, 2380, /*behParam*/ DIALOG_113),
MACRO_OBJECT(/*preset*/ macro_box_three_coins, /*yaw*/ 0, /*pos*/ -5800, 1340, -750),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 670, 3000, 3315),
MACRO_OBJECT(/*preset*/ macro_koopa_shell_underwater, /*yaw*/ 0, /*pos*/ -1480, -1000, 4820),
MACRO_OBJECT(/*preset*/ macro_clam_shell, /*yaw*/ 180, /*pos*/ -1480, -1040, 4820),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5290, -2966, -4740, /*behParam*/ 169),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5290, -2966, -4740, /*behParam*/ DIALOG_169),
MACRO_OBJECT_END(),
};
diff --git a/levels/jrb/areas/2/1/model.inc.c b/levels/jrb/areas/2/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x0700D318 - 0x0700D320
-static const Ambient jrb_seg7_light_0700D318 = {
- {{0x14, 0x30, 0x2c}, 0, {0x14, 0x30, 0x2c}, 0}
-};
-
-// 0x0700D320 - 0x0700D330
-static const Light jrb_seg7_light_0700D320 = {
- {{0x32, 0x78, 0x6e}, 0, {0x32, 0x78, 0x6e}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D330 - 0x0700D338
-static const Ambient jrb_seg7_light_0700D330 = {
- {{0x3c, 0x52, 0x4a}, 0, {0x3c, 0x52, 0x4a}, 0}
-};
-
-// 0x0700D338 - 0x0700D348
-static const Light jrb_seg7_light_0700D338 = {
- {{0x97, 0xcd, 0xbb}, 0, {0x97, 0xcd, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D348 - 0x0700D350
-static const Ambient jrb_seg7_light_0700D348 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700D350 - 0x0700D360
-static const Light jrb_seg7_light_0700D350 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D360 - 0x0700D368
-static const Ambient jrb_seg7_light_0700D360 = {
- {{0x50, 0x66, 0x58}, 0, {0x50, 0x66, 0x58}, 0}
-};
-
-// 0x0700D368 - 0x0700D378
-static const Light jrb_seg7_light_0700D368 = {
- {{0xc8, 0xff, 0xdc}, 0, {0xc8, 0xff, 0xdc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D318 - 0x0700D330
+static const Lights1 jrb_seg7_lights_0700D318 = gdSPDefLights1(
+ 0x14, 0x30, 0x2c,
+ 0x32, 0x78, 0x6e, 0x28, 0x28, 0x28
+);
+
+// 0x0700D330 - 0x0700D348
+static const Lights1 jrb_seg7_lights_0700D330 = gdSPDefLights1(
+ 0x3c, 0x52, 0x4a,
+ 0x97, 0xcd, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x0700D348 - 0x0700D360
+static const Lights1 jrb_seg7_lights_0700D348 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700D360 - 0x0700D378
+static const Lights1 jrb_seg7_lights_0700D360 = gdSPDefLights1(
+ 0x50, 0x66, 0x58,
+ 0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28
+);
// 0x0700D378 - 0x0700D3F8
static const Vtx jrb_seg7_vertex_0700D378[] = {
@@ -450,15 +434,15 @@ static const Gfx jrb_seg7_dl_0700E6E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700D320, 1),
- gsSPLight(&jrb_seg7_light_0700D318, 2),
+ gsSPLight(&jrb_seg7_lights_0700D318.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D318.a, 2),
gsSPVertex(jrb_seg7_vertex_0700D378, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 3, 2, 4, 0x0, 5, 3, 4, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 6, 1, 0x0),
gsSP2Triangles( 7, 5, 6, 0x0, 0, 7, 1, 0x0),
- gsSPLight(&jrb_seg7_light_0700D338, 1),
- gsSPLight(&jrb_seg7_light_0700D330, 2),
+ gsSPLight(&jrb_seg7_lights_0700D330.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D330.a, 2),
gsSPVertex(jrb_seg7_vertex_0700D3F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 4, 7, 5, 0x0),
@@ -493,18 +477,18 @@ static const Gfx jrb_seg7_dl_0700E8C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700D320, 1),
- gsSPLight(&jrb_seg7_light_0700D318, 2),
+ gsSPLight(&jrb_seg7_lights_0700D318.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D318.a, 2),
gsSPVertex(jrb_seg7_vertex_0700D878, 11, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle(10, 0, 2, 0x0),
- gsSPLight(&jrb_seg7_light_0700D338, 1),
- gsSPLight(&jrb_seg7_light_0700D330, 2),
+ gsSPLight(&jrb_seg7_lights_0700D330.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D330.a, 2),
gsSPVertex(jrb_seg7_vertex_0700D928, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
- gsSPLight(&jrb_seg7_light_0700D350, 1),
- gsSPLight(&jrb_seg7_light_0700D348, 2),
+ gsSPLight(&jrb_seg7_lights_0700D348.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D348.a, 2),
gsSPVertex(jrb_seg7_vertex_0700D968, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -517,8 +501,8 @@ static const Gfx jrb_seg7_dl_0700E998[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700D368, 1),
- gsSPLight(&jrb_seg7_light_0700D360, 2),
+ gsSPLight(&jrb_seg7_lights_0700D360.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D360.a, 2),
gsSPVertex(jrb_seg7_vertex_0700DA28, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 5, 2, 1, 0x0),
@@ -594,16 +578,16 @@ static const Gfx jrb_seg7_dl_0700ECB8[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 5, 4, 7, 0x0),
gsSP2Triangles( 8, 9, 6, 0x0, 10, 8, 6, 0x0),
gsSP2Triangles( 9, 4, 6, 0x0, 11, 5, 7, 0x0),
- gsSPLight(&jrb_seg7_light_0700D320, 1),
- gsSPLight(&jrb_seg7_light_0700D318, 2),
+ gsSPLight(&jrb_seg7_lights_0700D318.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D318.a, 2),
gsSPVertex(jrb_seg7_vertex_0700E458, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 2, 4, 5, 0x0),
gsSP2Triangles( 2, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 7, 9, 0x0, 3, 10, 9, 0x0),
gsSP2Triangles( 3, 11, 10, 0x0, 0, 11, 3, 0x0),
- gsSPLight(&jrb_seg7_light_0700D350, 1),
- gsSPLight(&jrb_seg7_light_0700D348, 2),
+ gsSPLight(&jrb_seg7_lights_0700D348.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D348.a, 2),
gsSPVertex(jrb_seg7_vertex_0700E518, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -614,8 +598,8 @@ static const Gfx jrb_seg7_dl_0700EE28[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700D368, 1),
- gsSPLight(&jrb_seg7_light_0700D360, 2),
+ gsSPLight(&jrb_seg7_lights_0700D360.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700D360.a, 2),
gsSPVertex(jrb_seg7_vertex_0700E558, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 6, 5, 0x0),
diff --git a/levels/jrb/areas/2/2/model.inc.c b/levels/jrb/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700EF98 - 0x0700EFA0
-static const Ambient jrb_seg7_light_0700EF98 = {
- {{0x3c, 0x66, 0x66}, 0, {0x3c, 0x66, 0x66}, 0}
-};
-
-// 0x0700EFA0 - 0x0700EFB0
-static const Light jrb_seg7_light_0700EFA0 = {
- {{0x96, 0xff, 0xff}, 0, {0x96, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EF98 - 0x0700EFB0
+static const Lights1 jrb_seg7_lights_0700EF98 = gdSPDefLights1(
+ 0x3c, 0x66, 0x66,
+ 0x96, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700EFB0 - 0x0700F0B0
static const Vtx jrb_seg7_vertex_0700EFB0[] = {
@@ -249,8 +245,8 @@ static const Gfx jrb_seg7_dl_0700FB30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09006000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700EFA0, 1),
- gsSPLight(&jrb_seg7_light_0700EF98, 2),
+ gsSPLight(&jrb_seg7_lights_0700EF98.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700EF98.a, 2),
gsSPVertex(jrb_seg7_vertex_0700EFB0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
diff --git a/levels/jrb/areas/2/3/model.inc.c b/levels/jrb/areas/2/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700FEB8 - 0x0700FEC0
-static const Ambient jrb_seg7_light_0700FEB8 = {
- {{0x50, 0x66, 0x58}, 0, {0x50, 0x66, 0x58}, 0}
-};
-
-// 0x0700FEC0 - 0x0700FED0
-static const Light jrb_seg7_light_0700FEC0 = {
- {{0xc8, 0xff, 0xdc}, 0, {0xc8, 0xff, 0xdc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FEB8 - 0x0700FED0
+static const Lights1 jrb_seg7_lights_0700FEB8 = gdSPDefLights1(
+ 0x50, 0x66, 0x58,
+ 0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28
+);
// 0x0700FED0 - 0x0700FFC0
static const Vtx jrb_seg7_vertex_0700FED0[] = {
@@ -109,8 +105,8 @@ static const Gfx jrb_seg7_dl_07010390[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700FEC0, 1),
- gsSPLight(&jrb_seg7_light_0700FEB8, 2),
+ gsSPLight(&jrb_seg7_lights_0700FEB8.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700FEB8.a, 2),
gsSPVertex(jrb_seg7_vertex_0700FED0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
diff --git a/levels/jrb/falling_pillar/model.inc.c b/levels/jrb/falling_pillar/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AD38 - 0x0700AD40
-static const Ambient jrb_seg7_light_0700AD38 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700AD40 - 0x0700AD50
-static const Light jrb_seg7_light_0700AD40 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AD38 - 0x0700AD50
+static const Lights1 jrb_seg7_lights_0700AD38 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700AD50 - 0x0700ADD0
static const Vtx jrb_seg7_vertex_0700AD50[] = {
@@ -25,8 +21,8 @@ static const Gfx jrb_seg7_dl_0700ADD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700AD40, 1),
- gsSPLight(&jrb_seg7_light_0700AD38, 2),
+ gsSPLight(&jrb_seg7_lights_0700AD38.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700AD38.a, 2),
gsSPVertex(jrb_seg7_vertex_0700AD50, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 0, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 6, 4, 7, 0x0),
diff --git a/levels/jrb/falling_pillar_base/model.inc.c b/levels/jrb/falling_pillar_base/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AEF0 - 0x0700AEF8
-static const Ambient jrb_seg7_light_0700AEF0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700AEF8 - 0x0700AF08
-static const Light jrb_seg7_light_0700AEF8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AEF0 - 0x0700AF08
+static const Lights1 jrb_seg7_lights_0700AEF0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700AF08 - 0x0700AF58
static const Vtx jrb_seg7_vertex_0700AF08[] = {
@@ -22,8 +18,8 @@ static const Gfx jrb_seg7_dl_0700AF58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700AEF8, 1),
- gsSPLight(&jrb_seg7_light_0700AEF0, 2),
+ gsSPLight(&jrb_seg7_lights_0700AEF0.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700AEF0.a, 2),
gsSPVertex(jrb_seg7_vertex_0700AF08, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 0, 3, 0x0),
diff --git a/levels/jrb/floating_platform/model.inc.c b/levels/jrb/floating_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007B70 - 0x07007B78
-static const Ambient jrb_seg7_light_07007B70 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07007B78 - 0x07007B88
-static const Light jrb_seg7_light_07007B78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007B70 - 0x07007B88
+static const Lights1 jrb_seg7_lights_07007B70 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007B88 - 0x07007C88
static const Vtx jrb_seg7_vertex_07007B88[] = {
@@ -45,8 +41,8 @@ static const Gfx jrb_seg7_dl_07007D08[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_0900A000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07007B78, 1),
- gsSPLight(&jrb_seg7_light_07007B70, 2),
+ gsSPLight(&jrb_seg7_lights_07007B70.l, 1),
+ gsSPLight(&jrb_seg7_lights_07007B70.a, 2),
gsSPVertex(jrb_seg7_vertex_07007B88, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/jrb/leveldata.c b/levels/jrb/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/jrb/texture.inc.c"
diff --git a/levels/jrb/rock/model.inc.c b/levels/jrb/rock/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070077F0 - 0x070077F8
-static const Ambient jrb_seg7_light_070077F0 = {
- {{0x32, 0x38, 0x3f}, 0, {0x32, 0x38, 0x3f}, 0}
-};
-
-// 0x070077F8 - 0x07007808
-static const Light jrb_seg7_light_070077F8 = {
- {{0xc8, 0xe1, 0xff}, 0, {0xc8, 0xe1, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070077F0 - 0x07007808
+static const Lights1 jrb_seg7_lights_070077F0 = gdSPDefLights1(
+ 0x32, 0x38, 0x3f,
+ 0xc8, 0xe1, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007808 - 0x07007908
static const Vtx jrb_seg7_vertex_07007808[] = {
@@ -51,8 +47,8 @@ static const Gfx jrb_seg7_dl_070079E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070077F8, 1),
- gsSPLight(&jrb_seg7_light_070077F0, 2),
+ gsSPLight(&jrb_seg7_lights_070077F0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070077F0.a, 2),
gsSPVertex(jrb_seg7_vertex_07007808, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 3, 6, 0, 0x0),
diff --git a/levels/jrb/script.c b/levels/jrb/script.c
@@ -143,10 +143,10 @@ const LevelScript level_jrb_entry[] = {
AREA(/*index*/ 1, jrb_geo_000A18),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6750, 2126, 1482, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0C, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x0C, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
WHIRLPOOL(/*unk2*/ 0, /*unk3*/ 3, /*pos*/ 4979, -5222, 2482, /*strength*/ -30),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
@@ -159,9 +159,9 @@ const LevelScript level_jrb_entry[] = {
AREA(/*index*/ 2, jrb_geo_000AFC),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 928, 1050, -1248, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps94),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0C, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_JRB, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_4),
JUMP_LINK(script_func_local_5),
TERRAIN(/*terrainData*/ jrb_seg7_area_2_collision),
diff --git a/levels/jrb/sliding_box/model.inc.c b/levels/jrb/sliding_box/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007EA0 - 0x07007EA8
-static const Ambient jrb_seg7_light_07007EA0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07007EA8 - 0x07007EB8
-static const Light jrb_seg7_light_07007EA8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007EA0 - 0x07007EB8
+static const Lights1 jrb_seg7_lights_07007EA0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007EB8 - 0x07007FB8
static const Vtx jrb_seg7_vertex_07007EB8[] = {
@@ -45,8 +41,8 @@ static const Gfx jrb_seg7_dl_07008038[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, jrb_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07007EA8, 1),
- gsSPLight(&jrb_seg7_light_07007EA0, 2),
+ gsSPLight(&jrb_seg7_lights_07007EA0.l, 1),
+ gsSPLight(&jrb_seg7_lights_07007EA0.a, 2),
gsSPVertex(jrb_seg7_vertex_07007EB8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/jrb/wooden_ship/model.inc.c b/levels/jrb/wooden_ship/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070081A8 - 0x070081B0
-static const Ambient jrb_seg7_light_070081A8 = {
- {{0x1e, 0x2c, 0x3a}, 0, {0x1e, 0x2c, 0x3a}, 0}
-};
-
-// 0x070081B0 - 0x070081C0
-static const Light jrb_seg7_light_070081B0 = {
- {{0x79, 0xb2, 0xeb}, 0, {0x79, 0xb2, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070081C0 - 0x070081C8
-static const Ambient jrb_seg7_light_070081C0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070081C8 - 0x070081D8
-static const Light jrb_seg7_light_070081C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070081A8 - 0x070081C0
+static const Lights1 jrb_seg7_lights_070081A8 = gdSPDefLights1(
+ 0x1e, 0x2c, 0x3a,
+ 0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28
+);
+
+// 0x070081C0 - 0x070081D8
+static const Lights1 jrb_seg7_lights_070081C0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070081D8 - 0x070082C8
static const Vtx jrb_seg7_vertex_070081D8[] = {
@@ -226,8 +218,8 @@ static const Gfx jrb_seg7_dl_07008B88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070081B0, 1),
- gsSPLight(&jrb_seg7_light_070081A8, 2),
+ gsSPLight(&jrb_seg7_lights_070081A8.l, 1),
+ gsSPLight(&jrb_seg7_lights_070081A8.a, 2),
gsSPVertex(jrb_seg7_vertex_070081D8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -252,8 +244,8 @@ static const Gfx jrb_seg7_dl_07008C90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070081C8, 1),
- gsSPLight(&jrb_seg7_light_070081C0, 2),
+ gsSPLight(&jrb_seg7_lights_070081C0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070081C0.a, 2),
gsSPVertex(jrb_seg7_vertex_07008478, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 5, 6, 7, 0x0),
@@ -388,35 +380,23 @@ const Gfx jrb_seg7_dl_070090B0[] = {
gsSPEndDisplayList(),
};
-// 0x07009190 - 0x07009198
-static const Ambient jrb_seg7_light_07009190 = {
- {{0x1e, 0x2c, 0x3a}, 0, {0x1e, 0x2c, 0x3a}, 0}
-};
-
-// 0x07009198 - 0x070091A8
-static const Light jrb_seg7_light_07009198 = {
- {{0x79, 0xb2, 0xeb}, 0, {0x79, 0xb2, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070091A8 - 0x070091B0
-static const Ambient jrb_seg7_light_070091A8 = {
- {{0x19, 0x2c, 0x3f}, 0, {0x19, 0x2c, 0x3f}, 0}
-};
-
-// 0x070091B0 - 0x070091C0
-static const Light jrb_seg7_light_070091B0 = {
- {{0x65, 0xb2, 0xff}, 0, {0x65, 0xb2, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009190 - 0x070091A8
+static const Lights1 jrb_seg7_lights_07009190 = gdSPDefLights1(
+ 0x1e, 0x2c, 0x3a,
+ 0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28
+);
-// 0x070091C0 - 0x070091C8
-static const Ambient jrb_seg7_light_070091C0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
+// 0x070091A8 - 0x070091C0
+static const Lights1 jrb_seg7_lights_070091A8 = gdSPDefLights1(
+ 0x19, 0x2c, 0x3f,
+ 0x65, 0xb2, 0xff, 0x28, 0x28, 0x28
+);
-// 0x070091C8 - 0x070091D8
-static const Light jrb_seg7_light_070091C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070091C0 - 0x070091D8
+static const Lights1 jrb_seg7_lights_070091C0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070091D8 - 0x07009218
static const Vtx jrb_seg7_vertex_070091D8[] = {
@@ -551,12 +531,12 @@ static const Gfx jrb_seg7_dl_07009798[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07009198, 1),
- gsSPLight(&jrb_seg7_light_07009190, 2),
+ gsSPLight(&jrb_seg7_lights_07009190.l, 1),
+ gsSPLight(&jrb_seg7_lights_07009190.a, 2),
gsSPVertex(jrb_seg7_vertex_070091D8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&jrb_seg7_light_070091B0, 1),
- gsSPLight(&jrb_seg7_light_070091A8, 2),
+ gsSPLight(&jrb_seg7_lights_070091A8.l, 1),
+ gsSPLight(&jrb_seg7_lights_070091A8.a, 2),
gsSPVertex(jrb_seg7_vertex_07009218, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -567,8 +547,8 @@ static const Gfx jrb_seg7_dl_07009808[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_070091C8, 1),
- gsSPLight(&jrb_seg7_light_070091C0, 2),
+ gsSPLight(&jrb_seg7_lights_070091C0.l, 1),
+ gsSPLight(&jrb_seg7_lights_070091C0.a, 2),
gsSPVertex(jrb_seg7_vertex_07009258, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 7, 0x0, 3, 5, 7, 0x0),
@@ -686,35 +666,23 @@ const Gfx jrb_seg7_dl_07009B30[] = {
gsSPEndDisplayList(),
};
-// 0x07009C10 - 0x07009C18
-static const Ambient jrb_seg7_light_07009C10 = {
- {{0x1e, 0x2c, 0x3a}, 0, {0x1e, 0x2c, 0x3a}, 0}
-};
-
-// 0x07009C18 - 0x07009C28
-static const Light jrb_seg7_light_07009C18 = {
- {{0x79, 0xb2, 0xeb}, 0, {0x79, 0xb2, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07009C28 - 0x07009C30
-static const Ambient jrb_seg7_light_07009C28 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
+// 0x07009C10 - 0x07009C28
+static const Lights1 jrb_seg7_lights_07009C10 = gdSPDefLights1(
+ 0x1e, 0x2c, 0x3a,
+ 0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28
+);
-// 0x07009C30 - 0x07009C40
-static const Light jrb_seg7_light_07009C30 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009C28 - 0x07009C40
+static const Lights1 jrb_seg7_lights_07009C28 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07009C40 - 0x07009C48
-static const Ambient jrb_seg7_light_07009C40 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07009C48 - 0x07009C58
-static const Light jrb_seg7_light_07009C48 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009C40 - 0x07009C58
+static const Lights1 jrb_seg7_lights_07009C40 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07009C58 - 0x07009D48
static const Vtx jrb_seg7_vertex_07009C58[] = {
@@ -859,8 +827,8 @@ static const Gfx jrb_seg7_dl_0700A2F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07009C18, 1),
- gsSPLight(&jrb_seg7_light_07009C10, 2),
+ gsSPLight(&jrb_seg7_lights_07009C10.l, 1),
+ gsSPLight(&jrb_seg7_lights_07009C10.a, 2),
gsSPVertex(jrb_seg7_vertex_07009C58, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -879,8 +847,8 @@ static const Gfx jrb_seg7_dl_0700A3A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07009C30, 1),
- gsSPLight(&jrb_seg7_light_07009C28, 2),
+ gsSPLight(&jrb_seg7_lights_07009C28.l, 1),
+ gsSPLight(&jrb_seg7_lights_07009C28.a, 2),
gsSPVertex(jrb_seg7_vertex_07009E38, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 6, 5, 7, 0x0),
@@ -900,16 +868,16 @@ static const Gfx jrb_seg7_dl_0700A470[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_07009C48, 1),
- gsSPLight(&jrb_seg7_light_07009C40, 2),
+ gsSPLight(&jrb_seg7_lights_07009C40.l, 1),
+ gsSPLight(&jrb_seg7_lights_07009C40.a, 2),
gsSPVertex(jrb_seg7_vertex_07009FC8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 4, 3, 0x0, 4, 5, 6, 0x0),
gsSP2Triangles( 4, 0, 5, 0x0, 7, 1, 3, 0x0),
gsSP2Triangles( 7, 2, 1, 0x0, 6, 7, 3, 0x0),
gsSP2Triangles( 0, 2, 5, 0x0, 6, 3, 4, 0x0),
- gsSPLight(&jrb_seg7_light_07009C30, 1),
- gsSPLight(&jrb_seg7_light_07009C28, 2),
+ gsSPLight(&jrb_seg7_lights_07009C28.l, 1),
+ gsSPLight(&jrb_seg7_lights_07009C28.a, 2),
gsSPVertex(jrb_seg7_vertex_0700A048, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -961,25 +929,17 @@ const Gfx jrb_seg7_dl_0700A608[] = {
gsSPEndDisplayList(),
};
-// 0x0700A6D8 - 0x0700A6E0
-static const Ambient jrb_seg7_light_0700A6D8 = {
- {{0x1e, 0x2c, 0x3a}, 0, {0x1e, 0x2c, 0x3a}, 0}
-};
-
-// 0x0700A6E0 - 0x0700A6F0
-static const Light jrb_seg7_light_0700A6E0 = {
- {{0x79, 0xb2, 0xeb}, 0, {0x79, 0xb2, 0xeb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A6D8 - 0x0700A6F0
+static const Lights1 jrb_seg7_lights_0700A6D8 = gdSPDefLights1(
+ 0x1e, 0x2c, 0x3a,
+ 0x79, 0xb2, 0xeb, 0x28, 0x28, 0x28
+);
-// 0x0700A6F0 - 0x0700A6F8
-static const Ambient jrb_seg7_light_0700A6F0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700A6F8 - 0x0700A708
-static const Light jrb_seg7_light_0700A6F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A6F0 - 0x0700A708
+static const Lights1 jrb_seg7_lights_0700A6F0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A708 - 0x0700A748
static const Vtx jrb_seg7_vertex_0700A708[] = {
@@ -1063,8 +1023,8 @@ static const Gfx jrb_seg7_dl_0700AA98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700A6E0, 1),
- gsSPLight(&jrb_seg7_light_0700A6D8, 2),
+ gsSPLight(&jrb_seg7_lights_0700A6D8.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700A6D8.a, 2),
gsSPVertex(jrb_seg7_vertex_0700A708, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
@@ -1075,8 +1035,8 @@ static const Gfx jrb_seg7_dl_0700AAE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, water_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&jrb_seg7_light_0700A6F8, 1),
- gsSPLight(&jrb_seg7_light_0700A6F0, 2),
+ gsSPLight(&jrb_seg7_lights_0700A6F0.l, 1),
+ gsSPLight(&jrb_seg7_lights_0700A6F0.a, 2),
gsSPVertex(jrb_seg7_vertex_0700A748, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 4, 7, 6, 0x0),
diff --git a/levels/level_defines.h b/levels/level_defines.h
@@ -0,0 +1,61 @@
+#ifdef VERSION_JP
+#define VAL_DIFF 25000
+#else
+#define VAL_DIFF 60000
+#endif
+
+// Define lists for list of level for macros. Each of the following fields are described:
+// Argument 1: Internal ROM name of the level.
+// Argument 2: Level enumerator for enum used to identify the level ID.
+// Argument 3: Course enumerator for enum used to identify the course ID.
+// Argument 4: Shorthand name of the level which should be the name of the levels/ folder of the level.
+// Argument 5: The shared texture bin used.
+// Argument 6: Acoustic reaches for each levels.
+// Argument 7, 8, 9: Echo levels for individual areas.
+// Argument 10: Specify dynamic music tables for levels, if specified. _ for none.
+// Argument 11: Specify level camera table, if specified. _ for none.
+
+// NOTE: Be sure to edit zoomOutAreaMasks in camera.c, as there isnt a good way to macro those right now.
+// TODO: Figure something out for zoomOutAreaMasks?
+#ifndef SKIP_FIRST_LAST_STUBS // this is needed for the zoomOutAreaMasks array which has a weird way of doing the bit array packs.
+STUB_LEVEL( "", LEVEL_UNKNOWN_1, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
+#endif
+STUB_LEVEL( "", LEVEL_UNKNOWN_2, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
+STUB_LEVEL( "", LEVEL_UNKNOWN_3, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
+DEFINE_LEVEL("TERESA OBAKE", LEVEL_BBH, COURSE_BBH, bbh, spooky, 28000, 0x28, 0x28, 0x28, sDynBbh, TableCameraBBH)
+DEFINE_LEVEL("YYAMA1 % YSLD1", LEVEL_CCM, COURSE_CCM, ccm, snow, 17000, 0x10, 0x38, 0x38, _, TableCameraCCM)
+DEFINE_LEVEL("SELECT ROOM", LEVEL_CASTLE, COURSE_NONE, castle_inside, inside, 20000, 0x20, 0x20, 0x30, _, TableCameraInside)
+DEFINE_LEVEL("HORROR DUNGEON", LEVEL_HMC, COURSE_HMC, hmc, cave, 16000, 0x28, 0x28, 0x28, sDynHmc, TableCameraHMC)
+DEFINE_LEVEL("SABAKU % PYRMD", LEVEL_SSL, COURSE_SSL, ssl, generic, 15000, 0x08, 0x30, 0x30, _, TableCameraSSL)
+DEFINE_LEVEL("BATTLE FIELD", LEVEL_BOB, COURSE_BOB, bob, generic, 15000, 0x08, 0x08, 0x08, _, _)
+DEFINE_LEVEL("YUKIYAMA2", LEVEL_SL, COURSE_SL, sl, snow, 14000, 0x10, 0x28, 0x28, _, TableCameraSL)
+DEFINE_LEVEL("POOL KAI", LEVEL_WDW, COURSE_WDW, wdw, grass, 17000, 0x10, 0x18, 0x18, sDynWdw, _)
+DEFINE_LEVEL("WTDG % TINBOTU", LEVEL_JRB, COURSE_JRB, jrb, water, 20000, 0x10, 0x18, 0x18, sDynJrb, _)
+DEFINE_LEVEL("BIG WORLD", LEVEL_THI, COURSE_THI, thi, grass, 20000, 0x0c, 0x0c, 0x20, _, TableCameraTHI)
+DEFINE_LEVEL("CLOCK TOWER", LEVEL_TTC, COURSE_TTC, ttc, machine, 18000, 0x18, 0x18, 0x18, _, _)
+DEFINE_LEVEL("RAINBOW CRUISE", LEVEL_RR, COURSE_RR, rr, sky, 20000, 0x20, 0x20, 0x20, _, TableCameraRR)
+DEFINE_LEVEL("MAIN MAP", LEVEL_CASTLE_GROUNDS, COURSE_NONE, castle_grounds, outside, 25000, 0x08, 0x08, 0x08, _, _)
+DEFINE_LEVEL("EXT1 YOKO SCRL", LEVEL_BITDW, COURSE_BITDW, bitdw, sky, 16000, 0x28, 0x28, 0x28, _, _)
+DEFINE_LEVEL("EXT7 HORI MINI", LEVEL_VCUTM, COURSE_VCUTM, vcutm, outside, 30000, 0x28, 0x28, 0x28, _, _)
+DEFINE_LEVEL("EXT2 TIKA LAVA", LEVEL_BITFS, COURSE_BITFS, bitfs, sky, 16000, 0x28, 0x28, 0x28, _, _)
+DEFINE_LEVEL("EXT9 SUISOU", LEVEL_SA, COURSE_SA, sa, inside, 20000, 0x10, 0x10, 0x10, _, _)
+DEFINE_LEVEL("EXT3 HEAVEN", LEVEL_BITS, COURSE_BITS, bits, sky, 16000, 0x28, 0x28, 0x28, _, _)
+DEFINE_LEVEL("FIREB1 % INVLC", LEVEL_LLL, COURSE_LLL, lll, fire, 22000, 0x08, 0x30, 0x30, _, _)
+DEFINE_LEVEL("WATER LAND", LEVEL_DDD, COURSE_DDD, ddd, water, 17000, 0x10, 0x20, 0x20, sDynDdd, _)
+DEFINE_LEVEL("MOUNTAIN", LEVEL_WF, COURSE_WF, wf, grass, 13000, 0x08, 0x08, 0x08, _, _)
+DEFINE_LEVEL("ENDING", LEVEL_ENDING, COURSE_CAKE_END, ending, generic, 20000, 0x00, 0x00, 0x00, _, _)
+DEFINE_LEVEL("URANIWA", LEVEL_CASTLE_COURTYARD, COURSE_NONE, castle_courtyard, outside, 20000, 0x08, 0x08, 0x08, _, _)
+DEFINE_LEVEL("EXT4 MINI SLID", LEVEL_PSS, COURSE_PSS, pss, mountain, 20000, 0x28, 0x28, 0x28, _, _)
+DEFINE_LEVEL("IN THE FALL", LEVEL_COTMC, COURSE_COTMC, cotmc, cave, 18000, 0x28, 0x28, 0x28, _, TableCameraCotMC)
+DEFINE_LEVEL("EXT6 MARIO FLY", LEVEL_TOTWC, COURSE_TOTWC, totwc, sky, 20000, 0x20, 0x20, 0x20, _, _)
+DEFINE_LEVEL("KUPPA1", LEVEL_BOWSER_1, COURSE_BITDW, bowser_1, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
+DEFINE_LEVEL("EXT8 BLUE SKY", LEVEL_WMOTR, COURSE_WMOTR, wmotr, generic, 20000, 0x28, 0x28, 0x28, _, _)
+STUB_LEVEL( "", LEVEL_UNKNOWN_32, COURSE_NONE, 20000, 0x70, 0x00, 0x00, _, _)
+DEFINE_LEVEL("KUPPA2", LEVEL_BOWSER_2, COURSE_BITFS, bowser_2, fire, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
+DEFINE_LEVEL("KUPPA3", LEVEL_BOWSER_3, COURSE_BITS, bowser_3, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
+STUB_LEVEL( "", LEVEL_UNKNOWN_35, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
+DEFINE_LEVEL("DONKEY % SLID2", LEVEL_TTM, COURSE_TTM, ttm, mountain, 15000, 0x08, 0x08, 0x08, _, _)
+STUB_LEVEL( "", LEVEL_UNKNOWN_37, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
+#ifndef SKIP_FIRST_LAST_STUBS
+STUB_LEVEL( "", LEVEL_UNKNOWN_38, COURSE_NONE, 20000, 0x00, 0x00, 0x00, sDynUnk38, _)
+#endif
diff --git a/levels/level_headers.h.in b/levels/level_headers.h.in
@@ -0,0 +1,9 @@
+// This file is to be processed by the Makefile to add #include "" before being included in build.
+
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) levels/folder/header.h
+
+#include "levels/level_defines.h"
+
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
diff --git a/levels/level_rules.mk b/levels/level_rules.mk
@@ -0,0 +1,7 @@
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, folder, texturebin, _5, _6, _7, _8, _9, _10) $(eval $(call level_rules,folder,texturebin))
+
+#include "levels/level_defines.h"
+
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
diff --git a/levels/lll/areas/1/1/model.inc.c b/levels/lll/areas/1/1/model.inc.c
@@ -895,8 +895,8 @@ static const Gfx lll_seg7_dl_070127D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC80, 1),
- gsSPLight(&lll_seg7_light_0700FC78, 2),
+ gsSPLight(&lll_seg7_lights_0700FC78.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC78.a, 2),
gsSPVertex(lll_seg7_vertex_0700FC90, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/areas/1/10/model.inc.c b/levels/lll/areas/1/10/model.inc.c
@@ -47,8 +47,8 @@ static const Gfx lll_seg7_dl_070164E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_070162E0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 4, 5, 0x0),
diff --git a/levels/lll/areas/1/11/model.inc.c b/levels/lll/areas/1/11/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07016658 - 0x07016660
-static const Ambient lll_seg7_light_07016658 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07016660 - 0x07016670
-static const Light lll_seg7_light_07016660 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07016658 - 0x07016670
+static const Lights1 lll_seg7_lights_07016658 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07016670 - 0x07016770
static const Vtx lll_seg7_vertex_07016670[] = {
@@ -73,8 +69,8 @@ static const Gfx lll_seg7_dl_07016930[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_07016660, 1),
- gsSPLight(&lll_seg7_light_07016658, 2),
+ gsSPLight(&lll_seg7_lights_07016658.l, 1),
+ gsSPLight(&lll_seg7_lights_07016658.a, 2),
gsSPVertex(lll_seg7_vertex_07016670, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 2, 0x0),
gsSP2Triangles( 5, 0, 2, 0x0, 5, 2, 6, 0x0),
diff --git a/levels/lll/areas/1/12/model.inc.c b/levels/lll/areas/1/12/model.inc.c
@@ -145,8 +145,8 @@ static const Gfx lll_seg7_dl_07017250[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07016B70, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 5, 6, 0x0),
diff --git a/levels/lll/areas/1/13/model.inc.c b/levels/lll/areas/1/13/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07017578 - 0x07017580
-static const Ambient lll_seg7_light_07017578 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07017580 - 0x07017590
-static const Light lll_seg7_light_07017580 = {
- {{0xfe, 0xff, 0xff}, 0, {0xfe, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07017578 - 0x07017590
+static const Lights1 lll_seg7_lights_07017578 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xfe, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07017590 - 0x07017650
static const Vtx lll_seg7_vertex_07017590[] = {
@@ -59,8 +55,8 @@ static const Gfx lll_seg7_dl_070177B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_07017580, 1),
- gsSPLight(&lll_seg7_light_07017578, 2),
+ gsSPLight(&lll_seg7_lights_07017578.l, 1),
+ gsSPLight(&lll_seg7_lights_07017578.a, 2),
gsSPVertex(lll_seg7_vertex_07017590, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/lll/areas/1/14/model.inc.c b/levels/lll/areas/1/14/model.inc.c
@@ -35,8 +35,8 @@ static const Gfx lll_seg7_dl_07017A78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07017938, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/lll/areas/1/2/model.inc.c b/levels/lll/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013620 - 0x07013628
-static const Ambient lll_seg7_light_07013620 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07013628 - 0x07013638
-static const Light lll_seg7_light_07013628 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013620 - 0x07013638
+static const Lights1 lll_seg7_lights_07013620 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013638 - 0x07013738
static const Vtx lll_seg7_vertex_07013638[] = {
@@ -33,8 +29,8 @@ static const Gfx lll_seg7_dl_07013738[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_07013628, 1),
- gsSPLight(&lll_seg7_light_07013620, 2),
+ gsSPLight(&lll_seg7_lights_07013620.l, 1),
+ gsSPLight(&lll_seg7_lights_07013620.a, 2),
gsSPVertex(lll_seg7_vertex_07013638, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 8, 0x0),
diff --git a/levels/lll/areas/1/4/model.inc.c b/levels/lll/areas/1/4/model.inc.c
@@ -61,8 +61,8 @@ static const Gfx lll_seg7_dl_07013C08[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07013968, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 5, 6, 0x0),
diff --git a/levels/lll/areas/1/5/model.inc.c b/levels/lll/areas/1/5/model.inc.c
@@ -151,8 +151,8 @@ static const Gfx lll_seg7_dl_070144F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07013DB8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/areas/1/6/model.inc.c b/levels/lll/areas/1/6/model.inc.c
@@ -61,8 +61,8 @@ static const Gfx lll_seg7_dl_07014AB8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07014818, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/areas/1/7/model.inc.c b/levels/lll/areas/1/7/model.inc.c
@@ -125,8 +125,8 @@ static const Gfx lll_seg7_dl_07015208[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07014C68, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 5, 6, 0x0),
diff --git a/levels/lll/areas/1/8/model.inc.c b/levels/lll/areas/1/8/model.inc.c
@@ -133,8 +133,8 @@ static const Gfx lll_seg7_dl_07015B38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_070154F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 5, 7, 0x0),
@@ -192,8 +192,8 @@ static const Gfx lll_seg7_dl_07015D18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07015858, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/areas/1/9/model.inc.c b/levels/lll/areas/1/9/model.inc.c
@@ -61,8 +61,8 @@ static const Gfx lll_seg7_dl_07016130[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07015E90, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 5, 6, 0x0),
diff --git a/levels/lll/areas/1/light.inc.c b/levels/lll/areas/1/light.inc.c
@@ -1,59 +1,35 @@
-// 0x0700FC00 - 0x0700FC08
-static const Ambient lll_seg7_light_0700FC00 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700FC08 - 0x0700FC18
-static const Light lll_seg7_light_0700FC08 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient lll_light_1 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light lll_light_2 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Ambient lll_light_3 = {
- {{0x3f, 0x00, 0x00}, 0, {0x3f, 0x00, 0x00}, 0}
-};
-
-// Unreferenced light
-UNUSED static const Light lll_light_4 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FC48 - 0x0700FC50
-static const Ambient lll_seg7_light_0700FC48 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x0700FC50 - 0x0700FC60
-static const Light lll_seg7_light_0700FC50 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FC60 - 0x0700FC68
-static const Ambient lll_seg7_light_0700FC60 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// 0x0700FC68 - 0x0700FC78
-static const Light lll_seg7_light_0700FC68 = {
- {{0xc8, 0xc8, 0xc8}, 0, {0xc8, 0xc8, 0xc8}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FC78 - 0x0700FC80
-static const Ambient lll_seg7_light_0700FC78 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700FC80 - 0x0700FC90
-static const Light lll_seg7_light_0700FC80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FC00 - 0x0700FC18
+static const Lights1 lll_seg7_lights_0700FC00 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 lll_lights_unused1 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// Unreferenced light group
+UNUSED static const Lights1 lll_lights_unused2 = gdSPDefLights1(
+ 0x3f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x0700FC48 - 0x0700FC60
+static const Lights1 lll_seg7_lights_0700FC48 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
+
+// 0x0700FC60 - 0x0700FC78
+static const Lights1 lll_seg7_lights_0700FC60 = gdSPDefLights1(
+ 0x32, 0x32, 0x32,
+ 0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28
+);
+
+// 0x0700FC78 - 0x0700FC90
+static const Lights1 lll_seg7_lights_0700FC78 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
diff --git a/levels/lll/areas/1/macro.inc.c b/levels/lll/areas/1/macro.inc.c
@@ -8,8 +8,8 @@ const MacroObject lll_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -5100, 220, 1750),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -5800, 220, 1750),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -5800, 220, 1000),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3728, 154, 6057, /*behParam*/ 68),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ 1350, 154, 5942, /*behParam*/ 16),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3728, 154, 6057, /*behParam*/ DIALOG_068),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ 1350, 154, 5942, /*behParam*/ DIALOG_016),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal_flying, /*yaw*/ 0, /*pos*/ -5760, 100, 3040),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -5100, 540, -4070, /*behParam*/ 4),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -5400, 320, -4070),
@@ -44,7 +44,7 @@ const MacroObject lll_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -6806, 188, 4653),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -6033, 70, 4973),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -6780, 275, -6766),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3980, 154, 6057, /*behParam*/ 86),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3980, 154, 6057, /*behParam*/ DIALOG_086),
MACRO_OBJECT(/*preset*/ macro_jumping_box, /*yaw*/ 0, /*pos*/ 4170, 154, -1940),
MACRO_OBJECT(/*preset*/ macro_flamethrower, /*yaw*/ 0, /*pos*/ 1400, -20, 3720),
MACRO_OBJECT(/*preset*/ macro_flamethrower, /*yaw*/ 0, /*pos*/ 7100, -20, 3420),
diff --git a/levels/lll/areas/2/2/model.inc.c b/levels/lll/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070236E8 - 0x070236F0
-static const Ambient lll_seg7_light_070236E8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070236F0 - 0x07023700
-static const Light lll_seg7_light_070236F0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070236E8 - 0x07023700
+static const Lights1 lll_seg7_lights_070236E8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07023700 - 0x070237E0
static const Vtx lll_seg7_vertex_07023700[] = {
@@ -324,8 +320,8 @@ static const Gfx lll_seg7_dl_07024630[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_0700D400),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_070236F0, 1),
- gsSPLight(&lll_seg7_light_070236E8, 2),
+ gsSPLight(&lll_seg7_lights_070236E8.l, 1),
+ gsSPLight(&lll_seg7_lights_070236E8.a, 2),
gsSPVertex(lll_seg7_vertex_07023700, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 4, 5, 0x0),
diff --git a/levels/lll/collapsing_wooden_platform/model.inc.c b/levels/lll/collapsing_wooden_platform/model.inc.c
@@ -31,8 +31,8 @@ static const Gfx lll_seg7_dl_070190B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07018F70, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/lll/drawbridge_part/model.inc.c b/levels/lll/drawbridge_part/model.inc.c
@@ -43,8 +43,8 @@ static const Gfx lll_seg7_dl_07018570[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_070183F0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/lll/leveldata.c b/levels/lll/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/lll/texture.inc.c"
diff --git a/levels/lll/long_wooden_bridge/model.inc.c b/levels/lll/long_wooden_bridge/model.inc.c
@@ -31,8 +31,8 @@ static const Gfx lll_seg7_dl_07019330[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_070191F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/lll/moving_octagonal_mesh_platform/model.inc.c b/levels/lll/moving_octagonal_mesh_platform/model.inc.c
@@ -60,8 +60,8 @@ static const Gfx lll_seg7_dl_07018280[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07017FB0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
diff --git a/levels/lll/puzzle_piece/model.inc.c b/levels/lll/puzzle_piece/model.inc.c
@@ -29,8 +29,8 @@ static const Gfx lll_seg7_dl_0701A2F0[] = {
// 0x0701A338 - 0x0701A388
static const Gfx lll_seg7_dl_0701A338[] = {
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_0701A270, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
diff --git a/levels/lll/rolling_log/model.inc.c b/levels/lll/rolling_log/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701A8E8 - 0x0701A8F0
-static const Ambient lll_seg7_light_0701A8E8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701A8F0 - 0x0701A900
-static const Light lll_seg7_light_0701A8F0 = {
- {{0xfe, 0xff, 0xff}, 0, {0xfe, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A8E8 - 0x0701A900
+static const Lights1 lll_seg7_lights_0701A8E8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xfe, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701A900 - 0x0701A9F0
static const Vtx lll_seg7_vertex_0701A900[] = {
@@ -79,8 +75,8 @@ static const Gfx lll_seg7_dl_0701AC20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0701A8F0, 1),
- gsSPLight(&lll_seg7_light_0701A8E8, 2),
+ gsSPLight(&lll_seg7_lights_0701A8E8.l, 1),
+ gsSPLight(&lll_seg7_lights_0701A8E8.a, 2),
gsSPVertex(lll_seg7_vertex_0701A900, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/rotating_block_fire_bars/model.inc.c b/levels/lll/rotating_block_fire_bars/model.inc.c
@@ -53,8 +53,8 @@ static const Gfx lll_seg7_dl_07018968[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07018708, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/lll/rotating_hexagonal_ring/model.inc.c b/levels/lll/rotating_hexagonal_ring/model.inc.c
@@ -87,8 +87,8 @@ static const Gfx lll_seg7_dl_07019870[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07019470, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 3, 1, 0, 0x0, 5, 6, 7, 0x0),
diff --git a/levels/lll/script.c b/levels/lll/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -46,10 +47,10 @@ static const LevelScript script_func_local_2[] = {
OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, /*pos*/ 2816, 0, 512, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllSinkingRectangularPlatform),
OBJECT(/*model*/ MODEL_LLL_SINKING_RECTANGULAR_PLATFORM, /*pos*/ -1791, 0, -4095, /*angle*/ 0, 90, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllSinkingRectangularPlatform),
OBJECT(/*model*/ MODEL_LLL_SINKING_SQUARE_PLATFORMS, /*pos*/ 3840, 0, -3199, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllSinkingSquarePlatforms),
- OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 922, -153, 2150, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingSquarePlatform),
- OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 1741, -153, 1741, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingSquarePlatform),
- OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 1741, -153, 2560, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingSquarePlatform),
- OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 2099, -153, -306, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingSquarePlatform),
+ OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 922, -153, 2150, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingInvertedPyramid),
+ OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 1741, -153, 1741, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingInvertedPyramid),
+ OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 1741, -153, 2560, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingInvertedPyramid),
+ OBJECT(/*model*/ MODEL_LLL_TILTING_SQUARE_PLATFORM, /*pos*/ 2099, -153, -306, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllTiltingInvertedPyramid),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5119, 102, 1024, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLllBowserPuzzle),
RETURN(),
};
@@ -178,12 +179,12 @@ const LevelScript level_lll_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 105, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x190B0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3200, 11, 3456, /*angle*/ 0, -100, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5888, 154, 6656, /*angle*/ 0, 100, 0, /*behParam*/ 0x000D0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x16, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0D, /*destLevel*/ 0x16, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0D, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
@@ -191,16 +192,16 @@ const LevelScript level_lll_entry[] = {
JUMP_LINK(script_func_local_5),
TERRAIN(/*terrainData*/ lll_seg7_area_1_collision),
MACRO_OBJECTS(/*objList*/ lll_seg7_area_1_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x61),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_097),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_HOT),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
AREA(/*index*/ 2, lll_geo_000EC0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -955, 1103, -1029, /*angle*/ 0, 118, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x16, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_LLL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_6),
JUMP_LINK(script_func_local_7),
TERRAIN(/*terrainData*/ lll_seg7_area_2_collision),
diff --git a/levels/lll/sinking_rectangular_platform/model.inc.c b/levels/lll/sinking_rectangular_platform/model.inc.c
@@ -25,8 +25,8 @@ static const Gfx lll_seg7_dl_07019B78[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07019A98, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/lll/sinking_rock_block/model.inc.c b/levels/lll/sinking_rock_block/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701A670 - 0x0701A678
-static const Ambient lll_seg7_light_0701A670 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701A678 - 0x0701A688
-static const Light lll_seg7_light_0701A678 = {
- {{0xfe, 0xff, 0xff}, 0, {0xfe, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A670 - 0x0701A688
+static const Lights1 lll_seg7_lights_0701A670 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xfe, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701A688 - 0x0701A778
static const Vtx lll_seg7_vertex_0701A688[] = {
@@ -43,8 +39,8 @@ static const Gfx lll_seg7_dl_0701A7E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0701A678, 1),
- gsSPLight(&lll_seg7_light_0701A670, 2),
+ gsSPLight(&lll_seg7_lights_0701A670.l, 1),
+ gsSPLight(&lll_seg7_lights_0701A670.a, 2),
gsSPVertex(lll_seg7_vertex_0701A688, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/lll/sinking_square_platform/model.inc.c b/levels/lll/sinking_square_platform/model.inc.c
@@ -61,21 +61,21 @@ static const Gfx lll_seg7_dl_07019F20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC50, 1),
- gsSPLight(&lll_seg7_light_0700FC48, 2),
+ gsSPLight(&lll_seg7_lights_0700FC48.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC48.a, 2),
gsSPVertex(lll_seg7_vertex_07019C80, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 2, 8, 9, 0x0),
- gsSPLight(&lll_seg7_light_0700FC68, 1),
- gsSPLight(&lll_seg7_light_0700FC60, 2),
+ gsSPLight(&lll_seg7_lights_0700FC60.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC60.a, 2),
gsSPVertex(lll_seg7_vertex_07019D20, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 5, 7, 0x0, 8, 9, 10, 0x0),
gsSP2Triangles( 9, 11, 12, 0x0, 13, 14, 15, 0x0),
gsSPVertex(lll_seg7_vertex_07019E20, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07019E80, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 8, 9, 7, 0x0),
diff --git a/levels/lll/tilting_square_platform/model.inc.c b/levels/lll/tilting_square_platform/model.inc.c
@@ -36,8 +36,8 @@ static const Gfx lll_seg7_dl_0701A1A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, fire_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_0701A120, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/lll/wooden_float_large/model.inc.c b/levels/lll/wooden_float_large/model.inc.c
@@ -31,8 +31,8 @@ static const Gfx lll_seg7_dl_07018E48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07018D08, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/lll/wooden_float_small/model.inc.c b/levels/lll/wooden_float_small/model.inc.c
@@ -31,8 +31,8 @@ static const Gfx lll_seg7_dl_07018BE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, lll_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&lll_seg7_light_0700FC08, 1),
- gsSPLight(&lll_seg7_light_0700FC00, 2),
+ gsSPLight(&lll_seg7_lights_0700FC00.l, 1),
+ gsSPLight(&lll_seg7_lights_0700FC00.a, 2),
gsSPVertex(lll_seg7_vertex_07018AA0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/menu/leveldata.c b/levels/menu/leveldata.c
@@ -9,15 +9,11 @@
#include "make_const_nonconst.h"
-// 0x07000000 - 0x07000008
-static const Ambient ambient_light_menu_1 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07000008 - 0x07000018
-static const Light diffuse_light_menu_1 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07000000 - 0x07000018
+static const Lights1 lights_menu_save_button = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07000018 - 0x07000818
ALIGNED8 static const u8 texture_menu_stone[] = {
@@ -82,8 +78,8 @@ static const Gfx dl_tex_block_menu_save_button_base[] = {
// 0x070031A0 - 0x07003218
static const Gfx dl_vertex_menu_save_button_borders[] = {
- gsSPLight(&diffuse_light_menu_1, 1),
- gsSPLight(&ambient_light_menu_1, 2),
+ gsSPLight(&lights_menu_save_button.l, 1),
+ gsSPLight(&lights_menu_save_button.a, 2),
gsSPVertex(vertex_menu_save_button_borders, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
@@ -129,8 +125,8 @@ static const Gfx dl_tex_block_menu_save_button_back[] = {
// 0x070032E0 - 0x07003330
static const Gfx dl_vertex_menu_save_button_back[] = {
- gsSPLight(&diffuse_light_menu_1, 1),
- gsSPLight(&ambient_light_menu_1, 2),
+ gsSPLight(&lights_menu_save_button.l, 1),
+ gsSPLight(&lights_menu_save_button.a, 2),
gsSPVertex(vertex_menu_save_button_back, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
@@ -182,8 +178,8 @@ const Gfx dl_menu_save_button_back[] = {
const Gfx dl_menu_save_button_fade_back[] = {
gsDPPipeSync(),
gsSPClearGeometryMode(G_SHADING_SMOOTH),
- gsSPLight(&diffuse_light_menu_1, 1),
- gsSPLight(&ambient_light_menu_1, 2),
+ gsSPLight(&lights_menu_save_button.l, 1),
+ gsSPLight(&lights_menu_save_button.a, 2),
gsSPVertex(vertex_menu_save_button_back, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsDPPipeSync(),
@@ -191,15 +187,11 @@ const Gfx dl_menu_save_button_fade_back[] = {
gsSPEndDisplayList(),
};
-// 0x07003450 - 0x07003458
-static const Ambient ambient_light_menu_2 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003458 - 0x07003468
-static const Light diffuse_light_menu_2 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003450 - 0x07003468
+static const Lights1 lights_menu_main_button = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07003468 - 0x07003468
ALIGNED8 static const u8 texture_menu_erase[] = {
@@ -305,8 +297,8 @@ static const Vtx vertex_menu_main_button_group4[] = {
// 0x07006038 - 0x07006150
static const Gfx dl_vertex_menu_main_button[] = {
- gsSPLight(&diffuse_light_menu_2, 1),
- gsSPLight(&ambient_light_menu_2, 2),
+ gsSPLight(&lights_menu_main_button.l, 1),
+ gsSPLight(&lights_menu_main_button.a, 2),
gsSPVertex(vertex_menu_main_button_group1, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
diff --git a/levels/menu/script.c b/levels/menu/script.c
@@ -6,6 +6,7 @@
#include "segment_symbols.h"
#include "level_commands.h"
+#include "game/area.h"
#include "game/level_update.h"
#include "menu/file_select.h"
#include "menu/star_select.h"
@@ -43,16 +44,16 @@ const LevelScript level_main_menu_entry_1[] = {
FREE_LEVEL_POOL(),
LOAD_AREA(/*area*/ 1),
SET_MENU_MUSIC(/*seq*/ 0x0021),
- TRANSITION(/*transType*/ 0, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
CALL(/*arg*/ 0, /*func*/ lvl_init_menu_values_and_cursor_pos),
CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_file_selected),
GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_SAVE_FILE_NUM),
STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
- TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
SLEEP(/*frames*/ 16),
CLEAR_LEVEL(),
SLEEP_BEFORE_EXIT(/*frames*/ 1),
- SET_REG(/*value*/ 16),
+ SET_REG(/*value*/ LEVEL_CASTLE_GROUNDS),
EXIT_AND_EXECUTE(/*seg*/ 0x15, _scriptsSegmentRomStart, _scriptsSegmentRomEnd, level_main_scripts_entry),
};
@@ -71,14 +72,14 @@ const LevelScript level_main_menu_entry_2[] = {
/*25*/ FREE_LEVEL_POOL(),
/*26*/ LOAD_AREA(/*area*/ 2),
- /*27*/ TRANSITION(/*transType*/ 0, /*time*/ 16, /*color*/ -1, -1, -1),
+ /*27*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_FROM_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
/*29*/ SLEEP(/*frames*/ 16),
/*30*/ SET_MENU_MUSIC(/*seq*/ 0x000D),
/*31*/ CALL(/*arg*/ 0, /*func*/ lvl_init_act_selector_values_and_stars),
/*33*/ CALL_LOOP(/*arg*/ 0, /*func*/ lvl_update_obj_and_load_act_button_actions),
/*35*/ GET_OR_SET(/*op*/ OP_SET, /*var*/ VAR_CURR_ACT_NUM),
/*36*/ STOP_MUSIC(/*fadeOutTime*/ 0x00BE),
- /*37*/ TRANSITION(/*transType*/ 1, /*time*/ 16, /*color*/ -1, -1, -1),
+ /*37*/ TRANSITION(/*transType*/ WARP_TRANSITION_FADE_INTO_COLOR, /*time*/ 16, /*color*/ 0xFF, 0xFF, 0xFF),
/*39*/ SLEEP(/*frames*/ 16),
/*40*/ CLEAR_LEVEL(),
/*41*/ SLEEP_BEFORE_EXIT(/*frames*/ 1),
diff --git a/levels/pss/areas/1/1/model.inc.c b/levels/pss/areas/1/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07001800 - 0x07001808
-static const Ambient pss_seg7_light_07001800 = {
- {{0x23, 0x23, 0x23}, 0, {0x23, 0x23, 0x23}, 0}
-};
-
-// 0x07001808 - 0x07001818
-static const Light pss_seg7_light_07001808 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001818 - 0x07001820
-static const Ambient pss_seg7_light_07001818 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07001820 - 0x07001830
-static const Light pss_seg7_light_07001820 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07001800 - 0x07001818
+static const Lights1 pss_seg7_lights_07001800 = gdSPDefLights1(
+ 0x23, 0x23, 0x23,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x07001818 - 0x07001830
+static const Lights1 pss_seg7_lights_07001818 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07001830 - 0x07001930
static const Vtx pss_seg7_vertex_07001830[] = {
@@ -2207,8 +2199,8 @@ static const Gfx pss_seg7_dl_070083B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900C000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&pss_seg7_light_07001808, 1),
- gsSPLight(&pss_seg7_light_07001800, 2),
+ gsSPLight(&pss_seg7_lights_07001800.l, 1),
+ gsSPLight(&pss_seg7_lights_07001800.a, 2),
gsSPVertex(pss_seg7_vertex_07001830, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2226,8 +2218,8 @@ static const Gfx pss_seg7_dl_070083B0[] = {
gsSPVertex(pss_seg7_vertex_07001A30, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP1Triangle( 2, 3, 4, 0x0),
- gsSPLight(&pss_seg7_light_07001820, 1),
- gsSPLight(&pss_seg7_light_07001818, 2),
+ gsSPLight(&pss_seg7_lights_07001818.l, 1),
+ gsSPLight(&pss_seg7_lights_07001818.a, 2),
gsSPVertex(pss_seg7_vertex_07001A80, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 4, 0, 6, 0x0),
diff --git a/levels/pss/areas/1/7/model.inc.c b/levels/pss/areas/1/7/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700E348 - 0x0700E350
-static const Ambient pss_seg7_light_0700E348 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700E350 - 0x0700E360
-static const Light pss_seg7_light_0700E350 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E348 - 0x0700E360
+static const Lights1 pss_seg7_lights_0700E348 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E360 - 0x0700E3A0
static const Vtx pss_seg7_vertex_0700E360[] = {
@@ -21,8 +17,8 @@ static const Gfx pss_seg7_dl_0700E3A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, pss_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&pss_seg7_light_0700E350, 1),
- gsSPLight(&pss_seg7_light_0700E348, 2),
+ gsSPLight(&pss_seg7_lights_0700E348.l, 1),
+ gsSPLight(&pss_seg7_lights_0700E348.a, 2),
gsSPVertex(pss_seg7_vertex_0700E360, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/pss/areas/1/macro.inc.c b/levels/pss/areas/1/macro.inc.c
@@ -16,7 +16,7 @@ const MacroObject pss_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -2565, -3268, -3525),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -4909, -3633, -4218),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ -6290, -3937, -2545),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 3580, 6140, -5180, /*behParam*/ 149),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 3580, 6140, -5180, /*behParam*/ DIALOG_149),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ 3000, 6180, -5640),
MACRO_OBJECT(/*preset*/ macro_blue_coin_switch, /*yaw*/ 0, /*pos*/ 5423, 6140, -6540),
MACRO_OBJECT(/*preset*/ macro_hidden_blue_coin, /*yaw*/ 0, /*pos*/ 780, 5613, -5600),
diff --git a/levels/pss/leveldata.c b/levels/pss/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/pss/texture.inc.c"
diff --git a/levels/pss/script.c b/levels/pss/script.c
@@ -30,10 +30,10 @@ const LevelScript level_pss_entry[] = {
AREA(/*index*/ 1, pss_geo_000100),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5632, 6751, -5631, /*angle*/ 0, 270, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_PSS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ pss_seg7_collision),
MACRO_OBJECTS(/*objList*/ pss_seg7_macro_objs),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_SLIDE),
diff --git a/levels/rr/areas/1/geo.inc.c b/levels/rr/areas/1/geo.inc.c
@@ -24,7 +24,7 @@ const GeoLayout rr_geo_0009D0[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/rr/flying_carpet/model.inc.c b/levels/rr/flying_carpet/model.inc.c
@@ -1,19 +1,14 @@
// Not a traditional model file. The vertexes are generated in src/geo_misc.c.
-// 0x07019230 - 0x07019238
-static const Ambient rr_seg7_light_07019230 = {
- {{0x5f, 0x5f, 0x5f}, 0, {0x5f, 0x5f, 0x5f}, 0}
-};
-
-// 0x07019238 - 0x07019248
-static const Light rr_seg7_light_07019238 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
+// 0x07019230 - 0x07019248
+static const Lights1 rr_seg7_lights_07019230 = gdSPDefLights1(
+ 0x5f, 0x5f, 0x5f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07019248 - 0x070192F0
const s16 flying_carpet_static_vertex_data[] = {
- // X Z tx ty
+// x z tx ty
-306, 205, 0, 0,
-306, 0, 992, 0,
-306, -204, 0, 0,
@@ -50,8 +45,8 @@ const Gfx dl_flying_carpet_begin[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_quarter_flying_carpet),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&rr_seg7_light_07019238, 1),
- gsSPLight(&rr_seg7_light_07019230, 2),
+ gsSPLight(&rr_seg7_lights_07019230.l, 1),
+ gsSPLight(&rr_seg7_lights_07019230.a, 2),
gsSPEndDisplayList(),
};
diff --git a/levels/rr/octagonal_platform/model.inc.c b/levels/rr/octagonal_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701A6F0 - 0x0701A6F8
-static const Ambient rr_seg7_light_0701A6F0 = {
- {{0x55, 0x5f, 0x53}, 0, {0x55, 0x5f, 0x53}, 0}
-};
-
-// 0x0701A6F8 - 0x0701A708
-static const Light rr_seg7_light_0701A6F8 = {
- {{0xe3, 0xfe, 0xdf}, 0, {0xe3, 0xfe, 0xdf}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701A6F0 - 0x0701A708
+static const Lights1 rr_seg7_lights_0701A6F0 = gdSPDefLights1(
+ 0x55, 0x5f, 0x53,
+ 0xe3, 0xfe, 0xdf, 0x28, 0x28, 0x28
+);
// 0x0701A708 - 0x0701A7F8
static const Vtx rr_seg7_vertex_0701A708[] = {
@@ -81,8 +77,8 @@ static const Gfx rr_seg7_dl_0701AA48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&rr_seg7_light_0701A6F8, 1),
- gsSPLight(&rr_seg7_light_0701A6F0, 2),
+ gsSPLight(&rr_seg7_lights_0701A6F0.l, 1),
+ gsSPLight(&rr_seg7_lights_0701A6F0.a, 2),
gsSPVertex(rr_seg7_vertex_0701A708, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/rr/rotating_bridge_platform/model.inc.c b/levels/rr/rotating_bridge_platform/model.inc.c
@@ -1,52 +1,32 @@
-// 0x07019B68 - 0x07019B70
-static const Ambient rr_seg7_light_07019B68 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0}
-};
-
-// 0x07019B70 - 0x07019B80
-static const Light rr_seg7_light_07019B70 = {
- {{0xc8, 0xc8, 0xc8}, 0, {0xc8, 0xc8, 0xc8}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07019B80 - 0x07019B88
-static const Ambient rr_seg7_light_07019B80 = {
- {{0x23, 0x2b, 0x14}, 0, {0x23, 0x2b, 0x14}, 0}
-};
+// 0x07019B68 - 0x07019B80
+static const Lights1 rr_seg7_lights_07019B68 = gdSPDefLights1(
+ 0x32, 0x32, 0x32,
+ 0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28
+);
-// 0x07019B88 - 0x07019B98
-static const Light rr_seg7_light_07019B88 = {
- {{0x8e, 0xac, 0x52}, 0, {0x8e, 0xac, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07019B80 - 0x07019B98
+static const Lights1 rr_seg7_lights_07019B80 = gdSPDefLights1(
+ 0x23, 0x2b, 0x14,
+ 0x8e, 0xac, 0x52, 0x28, 0x28, 0x28
+);
-// 0x07019B98 - 0x07019BA0
-static const Ambient rr_seg7_light_07019B98 = {
- {{0x1f, 0x2b, 0x14}, 0, {0x1f, 0x2b, 0x14}, 0}
-};
+// 0x07019B98 - 0x07019BB0
+static const Lights1 rr_seg7_lights_07019B98 = gdSPDefLights1(
+ 0x1f, 0x2b, 0x14,
+ 0x7f, 0xac, 0x52, 0x28, 0x28, 0x28
+);
-// 0x07019BA0 - 0x07019BB0
-static const Light rr_seg7_light_07019BA0 = {
- {{0x7f, 0xac, 0x52}, 0, {0x7f, 0xac, 0x52}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07019BB0 - 0x07019BC8
+static const Lights1 rr_seg7_lights_07019BB0 = gdSPDefLights1(
+ 0x2f, 0x2a, 0x0f,
+ 0xbf, 0xaa, 0x3f, 0x28, 0x28, 0x28
+);
-// 0x07019BB0 - 0x07019BB8
-static const Ambient rr_seg7_light_07019BB0 = {
- {{0x2f, 0x2a, 0x0f}, 0, {0x2f, 0x2a, 0x0f}, 0}
-};
-
-// 0x07019BB8 - 0x07019BC8
-static const Light rr_seg7_light_07019BB8 = {
- {{0xbf, 0xaa, 0x3f}, 0, {0xbf, 0xaa, 0x3f}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07019BC8 - 0x07019BD0
-static const Ambient rr_seg7_light_07019BC8 = {
- {{0x14, 0x23, 0x2b}, 0, {0x14, 0x23, 0x2b}, 0}
-};
-
-// 0x07019BD0 - 0x07019BE0
-static const Light rr_seg7_light_07019BD0 = {
- {{0x52, 0x8e, 0xac}, 0, {0x52, 0x8e, 0xac}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07019BC8 - 0x07019BE0
+static const Lights1 rr_seg7_lights_07019BC8 = gdSPDefLights1(
+ 0x14, 0x23, 0x2b,
+ 0x52, 0x8e, 0xac, 0x28, 0x28, 0x28
+);
// 0x07019BE0 - 0x07019CD0
static const Vtx rr_seg7_vertex_07019BE0[] = {
@@ -199,8 +179,8 @@ static const Gfx rr_seg7_dl_0701A2C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&rr_seg7_light_07019B70, 1),
- gsSPLight(&rr_seg7_light_07019B68, 2),
+ gsSPLight(&rr_seg7_lights_07019B68.l, 1),
+ gsSPLight(&rr_seg7_lights_07019B68.a, 2),
gsSPVertex(rr_seg7_vertex_07019BE0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -233,20 +213,20 @@ static const Gfx rr_seg7_dl_0701A3E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&rr_seg7_light_07019B88, 1),
- gsSPLight(&rr_seg7_light_07019B80, 2),
+ gsSPLight(&rr_seg7_lights_07019B80.l, 1),
+ gsSPLight(&rr_seg7_lights_07019B80.a, 2),
gsSPVertex(rr_seg7_vertex_07019EC0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&rr_seg7_light_07019BA0, 1),
- gsSPLight(&rr_seg7_light_07019B98, 2),
+ gsSPLight(&rr_seg7_lights_07019B98.l, 1),
+ gsSPLight(&rr_seg7_lights_07019B98.a, 2),
gsSPVertex(rr_seg7_vertex_07019F40, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&rr_seg7_light_07019BB8, 1),
- gsSPLight(&rr_seg7_light_07019BB0, 2),
+ gsSPLight(&rr_seg7_lights_07019BB0.l, 1),
+ gsSPLight(&rr_seg7_lights_07019BB0.a, 2),
gsSPVertex(rr_seg7_vertex_0701A040, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -260,8 +240,8 @@ static const Gfx rr_seg7_dl_0701A4E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sky_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&rr_seg7_light_07019BD0, 1),
- gsSPLight(&rr_seg7_light_07019BC8, 2),
+ gsSPLight(&rr_seg7_lights_07019BC8.l, 1),
+ gsSPLight(&rr_seg7_lights_07019BC8.a, 2),
gsSPVertex(rr_seg7_vertex_0701A140, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/rr/script.c b/levels/rr/script.c
@@ -122,11 +122,11 @@ const LevelScript level_rr_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2599, -833, 2071, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -7092, 2364, -63, /*angle*/ 0, 90, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4213, 3379, -2815, /*angle*/ 0, 180, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0F, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0F, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0F, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x3A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_RR, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_RR, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_RR, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x3A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6C, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
diff --git a/levels/sa/areas/1/1/model.inc.c b/levels/sa/areas/1/1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07000000 - 0x07000008
-static const Ambient sa_light_07000000 = {
- {{0x00, 0x7f, 0x99}, 0, {0x00, 0x7f, 0x99}, 0}
-};
-
-// 0x07000008 - 0x07000018
-static const Light sa_light_07000008 = {
- {{0x00, 0xd4, 0xff}, 0, {0x00, 0xd4, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07000000 - 0x07000018
+static const Lights1 sa_lights = gdSPDefLights1(
+ 0x00, 0x7f, 0x99,
+ 0x00, 0xd4, 0xff, 0x28, 0x28, 0x28
+);
// 0x07000018 - 0x070000D8
static const Vtx sa_vertex_07000018[] = {
@@ -738,8 +734,8 @@ static const Gfx sa_dl_070023E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, inside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sa_light_07000008, 1),
- gsSPLight(&sa_light_07000000, 2),
+ gsSPLight(&sa_lights.l, 1),
+ gsSPLight(&sa_lights.a, 2),
gsSPVertex(sa_vertex_07000018, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 5, 0x0, 0, 5, 1, 0x0),
diff --git a/levels/sa/script.c b/levels/sa/script.c
@@ -43,9 +43,9 @@ const LevelScript level_sa_entry[] = {
AREA(/*index*/ 1, sa_geo_000170),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1535, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps94),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x14, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x27, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x28, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SA, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x27, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x28, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ sa_seg7_collision),
diff --git a/levels/scripts.c b/levels/scripts.c
@@ -2,6 +2,7 @@
#include "sm64.h"
#include "game/level_update.h"
#include "level_commands.h"
+#include "game/area.h"
#include "segment_symbols.h"
@@ -28,76 +29,32 @@
#include "levels/menu/header.h"
#include "levels/intro/header.h"
-#include "levels/bbh/header.h"
-#include "levels/ccm/header.h"
-#include "levels/castle_inside/header.h"
-#include "levels/hmc/header.h"
-#include "levels/ssl/header.h"
-#include "levels/bob/header.h"
-#include "levels/sl/header.h"
-#include "levels/wdw/header.h"
-#include "levels/jrb/header.h"
-#include "levels/thi/header.h"
-#include "levels/ttc/header.h"
-#include "levels/rr/header.h"
-#include "levels/castle_grounds/header.h"
-#include "levels/bitdw/header.h"
-#include "levels/vcutm/header.h"
-#include "levels/bitfs/header.h"
-#include "levels/sa/header.h"
-#include "levels/bits/header.h"
-#include "levels/lll/header.h"
-#include "levels/ddd/header.h"
-#include "levels/wf/header.h"
-#include "levels/ending/header.h"
-#include "levels/castle_courtyard/header.h"
-#include "levels/pss/header.h"
-#include "levels/cotmc/header.h"
-#include "levels/totwc/header.h"
-#include "levels/bowser_1/header.h"
-#include "levels/wmotr/header.h"
-#include "levels/bowser_2/header.h"
-#include "levels/bowser_3/header.h"
-#include "levels/ttm/header.h"
-
-static const LevelScript script_func_local_1[1 + 31 * 3 + 1];
+
+#include "level_headers.h"
+
+#include "level_table.h"
+
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + 3
+static const LevelScript script_exec_level_table[2
+ #include "level_defines.h"
+];
+#undef DEFINE_LEVEL
+#undef STUB_LEVEL
+
static const LevelScript script_L1[4];
static const LevelScript script_L2[4];
static const LevelScript script_L3[4];
static const LevelScript script_L4[4];
static const LevelScript script_L5[4];
-static const LevelScript script_L6[4 + 1];
-static const LevelScript script_L7[4 + 1];
-static const LevelScript script_L8[4 + 1];
-static const LevelScript script_L9[4 + 1];
-static const LevelScript script_L10[4 + 1];
-static const LevelScript script_L11[4 + 1];
-static const LevelScript script_L12[4 + 1];
-static const LevelScript script_L13[4 + 1];
-static const LevelScript script_L14[4 + 1];
-static const LevelScript script_L15[4 + 1];
-static const LevelScript script_L16[4 + 1];
-static const LevelScript script_L17[4 + 1];
-static const LevelScript script_L18[4 + 1];
-static const LevelScript script_L19[4 + 1];
-static const LevelScript script_L20[4 + 1];
-static const LevelScript script_L21[4 + 1];
-static const LevelScript script_L22[4 + 1];
-static const LevelScript script_L23[4 + 1];
-static const LevelScript script_L24[4 + 1];
-static const LevelScript script_L25[4 + 1];
-static const LevelScript script_L26[4 + 1];
-static const LevelScript script_L27[4 + 1];
-static const LevelScript script_L28[4 + 1];
-static const LevelScript script_L29[4 + 1];
-static const LevelScript script_L30[4 + 1];
-static const LevelScript script_L31[4 + 1];
-static const LevelScript script_L32[4 + 1];
-static const LevelScript script_L33[4 + 1];
-static const LevelScript script_L34[4 + 1];
-static const LevelScript script_L35[4 + 1];
-static const LevelScript script_L36[4 + 1];
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) static const LevelScript script_exec_ ## folder [4 + 1];
+
+#include "level_defines.h"
+
+#undef DEFINE_LEVEL
+#undef STUB_LEVEL
const LevelScript level_main_scripts_entry[] = {
LOAD_MIO0(/*seg*/ 0x04, _group0_mio0SegmentRomStart, _group0_mio0SegmentRomEnd),
@@ -157,7 +114,7 @@ const LevelScript level_main_scripts_entry[] = {
CALL(/*arg*/ 0, /*func*/ lvl_init_from_save_file),
LOOP_BEGIN(),
EXECUTE(/*seg*/ 0x14, _menuSegmentRomStart, _menuSegmentRomEnd, level_main_menu_entry_2),
- JUMP_LINK(script_func_local_1),
+ JUMP_LINK(script_exec_level_table),
SLEEP(/*frames*/ 1),
LOOP_UNTIL(/*op*/ OP_LT, /*arg*/ 0),
JUMP_IF(/*op*/ OP_EQ, /*arg*/ -1, script_L2),
@@ -187,196 +144,28 @@ static const LevelScript script_L5[] = {
EXIT_AND_EXECUTE(/*seg*/ 0x14, _introSegmentRomStart, _introSegmentRomEnd, level_intro_entry_4),
};
-static const LevelScript script_func_local_1[] = {
- GET_OR_SET(/*op*/ OP_GET, /*var*/ VAR_CURR_LEVEL_NUM),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 4, script_L6),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 5, script_L7),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 6, script_L8),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 7, script_L9),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 8, script_L10),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 9, script_L11),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 10, script_L12),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 11, script_L13),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 12, script_L14),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 13, script_L15),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 14, script_L16),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 15, script_L17),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 16, script_L18),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 17, script_L19),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 18, script_L20),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 19, script_L21),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 20, script_L22),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 21, script_L23),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 22, script_L24),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 23, script_L25),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 24, script_L26),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 25, script_L27),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 26, script_L28),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 27, script_L29),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 28, script_L30),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 29, script_L31),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 30, script_L32),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 31, script_L33),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 33, script_L34),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 34, script_L35),
- JUMP_IF(/*op*/ OP_EQ, /*arg*/ 36, script_L36),
- EXIT(),
-};
+// Include the level jumptable.
-static const LevelScript script_L6[] = {
- EXECUTE(/*seg*/ 0x0E, _bbhSegmentRomStart, _bbhSegmentRomEnd, level_bbh_entry),
- RETURN(),
-};
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
-static const LevelScript script_L7[] = {
- EXECUTE(/*seg*/ 0x0E, _ccmSegmentRomStart, _ccmSegmentRomEnd, level_ccm_entry),
- RETURN(),
-};
-
-static const LevelScript script_L8[] = {
- EXECUTE(/*seg*/ 0x0E, _castle_insideSegmentRomStart, _castle_insideSegmentRomEnd, level_castle_entry),
- RETURN(),
-};
-
-static const LevelScript script_L9[] = {
- EXECUTE(/*seg*/ 0x0E, _hmcSegmentRomStart, _hmcSegmentRomEnd, level_hmc_entry),
- RETURN(),
-};
-
-static const LevelScript script_L10[] = {
- EXECUTE(/*seg*/ 0x0E, _sslSegmentRomStart, _sslSegmentRomEnd, level_ssl_entry),
- RETURN(),
-};
-
-static const LevelScript script_L11[] = {
- EXECUTE(/*seg*/ 0x0E, _bobSegmentRomStart, _bobSegmentRomEnd, level_bob_entry),
- RETURN(),
-};
-
-static const LevelScript script_L12[] = {
- EXECUTE(/*seg*/ 0x0E, _slSegmentRomStart, _slSegmentRomEnd, level_sl_entry),
- RETURN(),
-};
-
-static const LevelScript script_L13[] = {
- EXECUTE(/*seg*/ 0x0E, _wdwSegmentRomStart, _wdwSegmentRomEnd, level_wdw_entry),
- RETURN(),
-};
-
-static const LevelScript script_L14[] = {
- EXECUTE(/*seg*/ 0x0E, _jrbSegmentRomStart, _jrbSegmentRomEnd, level_jrb_entry),
- RETURN(),
-};
-
-static const LevelScript script_L15[] = {
- EXECUTE(/*seg*/ 0x0E, _thiSegmentRomStart, _thiSegmentRomEnd, level_thi_entry),
- RETURN(),
-};
-
-static const LevelScript script_L16[] = {
- EXECUTE(/*seg*/ 0x0E, _ttcSegmentRomStart, _ttcSegmentRomEnd, level_ttc_entry),
- RETURN(),
-};
-
-static const LevelScript script_L17[] = {
- EXECUTE(/*seg*/ 0x0E, _rrSegmentRomStart, _rrSegmentRomEnd, level_rr_entry),
- RETURN(),
-};
-
-static const LevelScript script_L18[] = {
- EXECUTE(/*seg*/ 0x0E, _castle_groundsSegmentRomStart, _castle_groundsSegmentRomEnd, level_castle_grounds_entry),
- RETURN(),
-};
-
-static const LevelScript script_L19[] = {
- EXECUTE(/*seg*/ 0x0E, _bitdwSegmentRomStart, _bitdwSegmentRomEnd, level_bitdw_entry),
- RETURN(),
-};
+#define DEFINE_LEVEL(_0, levelenum, _2, folder, _4, _5, _6, _7, _8, _9, _10) JUMP_IF(OP_EQ, levelenum, script_exec_ ## folder),
-static const LevelScript script_L20[] = {
- EXECUTE(/*seg*/ 0x0E, _vcutmSegmentRomStart, _vcutmSegmentRomEnd, level_vcutm_entry),
- RETURN(),
-};
-
-static const LevelScript script_L21[] = {
- EXECUTE(/*seg*/ 0x0E, _bitfsSegmentRomStart, _bitfsSegmentRomEnd, level_bitfs_entry),
- RETURN(),
-};
-
-static const LevelScript script_L22[] = {
- EXECUTE(/*seg*/ 0x0E, _saSegmentRomStart, _saSegmentRomEnd, level_sa_entry),
- RETURN(),
-};
-
-static const LevelScript script_L23[] = {
- EXECUTE(/*seg*/ 0x0E, _bitsSegmentRomStart, _bitsSegmentRomEnd, level_bits_entry),
- RETURN(),
-};
-
-static const LevelScript script_L24[] = {
- EXECUTE(/*seg*/ 0x0E, _lllSegmentRomStart, _lllSegmentRomEnd, level_lll_entry),
- RETURN(),
-};
-
-static const LevelScript script_L25[] = {
- EXECUTE(/*seg*/ 0x0E, _dddSegmentRomStart, _dddSegmentRomEnd, level_ddd_entry),
- RETURN(),
-};
-
-static const LevelScript script_L26[] = {
- EXECUTE(/*seg*/ 0x0E, _wfSegmentRomStart, _wfSegmentRomEnd, level_wf_entry),
- RETURN(),
-};
-
-static const LevelScript script_L27[] = {
- EXECUTE(/*seg*/ 0x0E, _endingSegmentRomStart, _endingSegmentRomEnd, level_ending_entry),
- RETURN(),
-};
-
-static const LevelScript script_L28[] = {
- EXECUTE(/*seg*/ 0x0E, _castle_courtyardSegmentRomStart, _castle_courtyardSegmentRomEnd, level_castle_courtyard_entry),
- RETURN(),
-};
-
-static const LevelScript script_L29[] = {
- EXECUTE(/*seg*/ 0x0E, _pssSegmentRomStart, _pssSegmentRomEnd, level_pss_entry),
- RETURN(),
-};
-
-static const LevelScript script_L30[] = {
- EXECUTE(/*seg*/ 0x0E, _cotmcSegmentRomStart, _cotmcSegmentRomEnd, level_cotmc_entry),
- RETURN(),
-};
-
-static const LevelScript script_L31[] = {
- EXECUTE(/*seg*/ 0x0E, _totwcSegmentRomStart, _totwcSegmentRomEnd, level_totwc_entry),
- RETURN(),
-};
-
-static const LevelScript script_L32[] = {
- EXECUTE(/*seg*/ 0x0E, _bowser_1SegmentRomStart, _bowser_1SegmentRomEnd, level_bowser_1_entry),
- RETURN(),
-};
-
-static const LevelScript script_L33[] = {
- EXECUTE(/*seg*/ 0x0E, _wmotrSegmentRomStart, _wmotrSegmentRomEnd, level_wmotr_entry),
- RETURN(),
-};
-
-static const LevelScript script_L34[] = {
- EXECUTE(/*seg*/ 0x0E, _bowser_2SegmentRomStart, _bowser_2SegmentRomEnd, level_bowser_2_entry),
- RETURN(),
+static const LevelScript script_exec_level_table[] = {
+ GET_OR_SET(/*op*/ OP_GET, /*var*/ VAR_CURR_LEVEL_NUM),
+ #include "levels/level_defines.h"
+ EXIT(),
};
+#undef DEFINE_LEVEL
-static const LevelScript script_L35[] = {
- EXECUTE(/*seg*/ 0x0E, _bowser_3SegmentRomStart, _bowser_3SegmentRomEnd, level_bowser_3_entry),
- RETURN(),
+#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) \
+static const LevelScript script_exec_ ## folder [] = { \
+ EXECUTE(0x0E, _ ## folder ## SegmentRomStart, _ ## folder ## SegmentRomEnd, level_ ## folder ## _entry), \
+ RETURN(), \
};
-static const LevelScript script_L36[] = {
- EXECUTE(/*seg*/ 0x0E, _ttmSegmentRomStart, _ttmSegmentRomEnd, level_ttm_entry),
- RETURN(),
-};
+#include "levels/level_defines.h"
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
const LevelScript script_func_global_1[] = {
LOAD_MODEL_FROM_GEO(MODEL_BLUE_COIN_SWITCH, blue_coin_switch_geo),
diff --git a/levels/sl/areas/1/1/model.inc.c b/levels/sl/areas/1/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002800 - 0x07002808
-static const Ambient sl_seg7_light_07002800 = {
- {{0x59, 0x59, 0x59}, 0, {0x59, 0x59, 0x59}, 0}
-};
-
-// 0x07002808 - 0x07002818
-static const Light sl_seg7_light_07002808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07002818 - 0x07002820
-static const Ambient sl_seg7_light_07002818 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07002820 - 0x07002830
-static const Light sl_seg7_light_07002820 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002800 - 0x07002818
+static const Lights1 sl_seg7_lights_07002800 = gdSPDefLights1(
+ 0x59, 0x59, 0x59,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07002818 - 0x07002830
+static const Lights1 sl_seg7_lights_07002818 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07002830 - 0x07002910
static const Vtx sl_seg7_vertex_07002830[] = {
@@ -679,8 +671,8 @@ static const Gfx sl_seg7_dl_07004830[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07002808, 1),
- gsSPLight(&sl_seg7_light_07002800, 2),
+ gsSPLight(&sl_seg7_lights_07002800.l, 1),
+ gsSPLight(&sl_seg7_lights_07002800.a, 2),
gsSPVertex(sl_seg7_vertex_07002830, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 3, 8, 0x0),
@@ -881,8 +873,8 @@ static const Gfx sl_seg7_dl_07004830[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 5, 4, 7, 0x0),
gsSP1Triangle( 4, 8, 7, 0x0),
- gsSPLight(&sl_seg7_light_07002820, 1),
- gsSPLight(&sl_seg7_light_07002818, 2),
+ gsSPLight(&sl_seg7_lights_07002818.l, 1),
+ gsSPLight(&sl_seg7_lights_07002818.a, 2),
gsSPVertex(sl_seg7_vertex_07004620, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP1Triangle( 3, 4, 0, 0x0),
@@ -894,8 +886,8 @@ static const Gfx sl_seg7_dl_07005370[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07002808, 1),
- gsSPLight(&sl_seg7_light_07002800, 2),
+ gsSPLight(&sl_seg7_lights_07002800.l, 1),
+ gsSPLight(&sl_seg7_lights_07002800.a, 2),
gsSPVertex(sl_seg7_vertex_07004670, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/sl/areas/1/2/model.inc.c b/levels/sl/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07005520 - 0x07005528
-static const Ambient sl_seg7_light_07005520 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07005528 - 0x07005538
-static const Light sl_seg7_light_07005528 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005520 - 0x07005538
+static const Lights1 sl_seg7_lights_07005520 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07005538 - 0x07005638
static const Vtx sl_seg7_vertex_07005538[] = {
@@ -33,8 +29,8 @@ static const Gfx sl_seg7_dl_07005638[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07005528, 1),
- gsSPLight(&sl_seg7_light_07005520, 2),
+ gsSPLight(&sl_seg7_lights_07005520.l, 1),
+ gsSPLight(&sl_seg7_lights_07005520.a, 2),
gsSPVertex(sl_seg7_vertex_07005538, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/sl/areas/1/3/model.inc.c b/levels/sl/areas/1/3/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07005730 - 0x07005738
-static const Ambient sl_seg7_light_07005730 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07005738 - 0x07005748
-static const Light sl_seg7_light_07005738 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005748 - 0x07005750
-static const Ambient sl_seg7_light_07005748 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07005750 - 0x07005760
-static const Light sl_seg7_light_07005750 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005730 - 0x07005748
+static const Lights1 sl_seg7_lights_07005730 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07005748 - 0x07005760
+static const Lights1 sl_seg7_lights_07005748 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07005760 - 0x070057D0
static const Vtx sl_seg7_vertex_07005760[] = {
@@ -484,13 +476,13 @@ static const Gfx sl_seg7_dl_07006D70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07005738, 1),
- gsSPLight(&sl_seg7_light_07005730, 2),
+ gsSPLight(&sl_seg7_lights_07005730.l, 1),
+ gsSPLight(&sl_seg7_lights_07005730.a, 2),
gsSPVertex(sl_seg7_vertex_07005760, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 6, 4, 0x0),
- gsSPLight(&sl_seg7_light_07005750, 1),
- gsSPLight(&sl_seg7_light_07005748, 2),
+ gsSPLight(&sl_seg7_lights_07005748.l, 1),
+ gsSPLight(&sl_seg7_lights_07005748.a, 2),
gsSPVertex(sl_seg7_vertex_070057D0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -501,8 +493,8 @@ static const Gfx sl_seg7_dl_07006DE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07005738, 1),
- gsSPLight(&sl_seg7_light_07005730, 2),
+ gsSPLight(&sl_seg7_lights_07005730.l, 1),
+ gsSPLight(&sl_seg7_lights_07005730.a, 2),
gsSPVertex(sl_seg7_vertex_07005810, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/sl/areas/1/5/model.inc.c b/levels/sl/areas/1/5/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007910 - 0x07007918
-static const Ambient sl_seg7_light_07007910 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07007918 - 0x07007928
-static const Light sl_seg7_light_07007918 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007910 - 0x07007928
+static const Lights1 sl_seg7_lights_07007910 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007928 - 0x07007A18
static const Vtx sl_seg7_vertex_07007928[] = {
@@ -257,8 +253,8 @@ static const Gfx sl_seg7_dl_07008528[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07007918, 1),
- gsSPLight(&sl_seg7_light_07007910, 2),
+ gsSPLight(&sl_seg7_lights_07007910.l, 1),
+ gsSPLight(&sl_seg7_lights_07007910.a, 2),
gsSPVertex(sl_seg7_vertex_07007928, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/sl/areas/1/6/model.inc.c b/levels/sl/areas/1/6/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07008930 - 0x07008938
-static const Ambient sl_seg7_light_07008930 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07008938 - 0x07008948
-static const Light sl_seg7_light_07008938 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07008930 - 0x07008948
+static const Lights1 sl_seg7_lights_07008930 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07008948 - 0x07008950
-static const Ambient sl_seg7_light_07008948 = {
- {{0x22, 0x17, 0x00}, 0, {0x22, 0x17, 0x00}, 0}
-};
-
-// 0x07008950 - 0x07008960
-static const Light sl_seg7_light_07008950 = {
- {{0x44, 0x2f, 0x00}, 0, {0x44, 0x2f, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07008948 - 0x07008960
+static const Lights1 sl_seg7_lights_07008948 = gdSPDefLights1(
+ 0x22, 0x17, 0x00,
+ 0x44, 0x2f, 0x00, 0x28, 0x28, 0x28
+);
// 0x07008960 - 0x07008A60
static const Vtx sl_seg7_vertex_07008960[] = {
@@ -84,8 +76,8 @@ static const Gfx sl_seg7_dl_07008C30[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07008938, 1),
- gsSPLight(&sl_seg7_light_07008930, 2),
+ gsSPLight(&sl_seg7_lights_07008930.l, 1),
+ gsSPLight(&sl_seg7_lights_07008930.a, 2),
gsSPVertex(sl_seg7_vertex_07008960, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 6, 7, 0x0),
@@ -107,8 +99,8 @@ static const Gfx sl_seg7_dl_07008D10[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, snow_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07008950, 1),
- gsSPLight(&sl_seg7_light_07008948, 2),
+ gsSPLight(&sl_seg7_lights_07008948.l, 1),
+ gsSPLight(&sl_seg7_lights_07008948.a, 2),
gsSPVertex(sl_seg7_vertex_07008BF0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/sl/areas/1/7/model.inc.c b/levels/sl/areas/1/7/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07008DE8 - 0x07008DF0
-static const Ambient sl_seg7_light_07008DE8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07008DF0 - 0x07008E00
-static const Light sl_seg7_light_07008DF0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07008DE8 - 0x07008E00
+static const Lights1 sl_seg7_lights_07008DE8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07008E00 - 0x07008F00
static const Vtx sl_seg7_vertex_07008E00[] = {
@@ -368,8 +364,8 @@ static const Gfx sl_seg7_dl_07009F30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_07008DF0, 1),
- gsSPLight(&sl_seg7_light_07008DE8, 2),
+ gsSPLight(&sl_seg7_lights_07008DE8.l, 1),
+ gsSPLight(&sl_seg7_lights_07008DE8.a, 2),
gsSPVertex(sl_seg7_vertex_07008E00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 1, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 6, 1, 5, 0x0),
diff --git a/levels/sl/areas/1/geo.inc.c b/levels/sl/areas/1/geo.inc.c
@@ -31,7 +31,7 @@ const GeoLayout sl_geo_0003A8[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/sl/areas/1/macro.inc.c b/levels/sl/areas/1/macro.inc.c
@@ -1,6 +1,6 @@
// 0x0700ED94 - 0x0700EF6C
const MacroObject sl_seg7_area_1_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 4086, 1024, 400, /*behParam*/ 86),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 4086, 1024, 400, /*behParam*/ DIALOG_086),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ 1285, 2210, 385),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ 1728, 2560, -671),
MACRO_OBJECT(/*preset*/ macro_yellow_coin_2, /*yaw*/ 0, /*pos*/ 1371, 2188, -500),
@@ -36,10 +36,10 @@ const MacroObject sl_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1520, 1040, 940),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1340, 1280, 1020),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -1180, 1520, 1120),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 295, /*pos*/ -835, 1125, -3856, /*behParam*/ 61),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -5050, 1020, 6026, /*behParam*/ 16),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 295, /*pos*/ -835, 1125, -3856, /*behParam*/ DIALOG_061),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -5050, 1020, 6026, /*behParam*/ DIALOG_016),
MACRO_OBJECT(/*preset*/ macro_fly_guy, /*yaw*/ 0, /*pos*/ 2766, 1522, -3633),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3600, 1024, -800, /*behParam*/ 148),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 135, /*pos*/ -3600, 1024, -800, /*behParam*/ DIALOG_148),
MACRO_OBJECT(/*preset*/ macro_moneybag, /*yaw*/ 0, /*pos*/ 2440, 1024, 4840),
MACRO_OBJECT(/*preset*/ macro_moneybag, /*yaw*/ 0, /*pos*/ -2400, 1177, -4200),
MACRO_OBJECT(/*preset*/ macro_box_1up_running_away, /*yaw*/ 0, /*pos*/ -3380, 1360, -4140),
diff --git a/levels/sl/areas/2/1/model.inc.c b/levels/sl/areas/2/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700A9B0 - 0x0700A9B8
-static const Ambient sl_seg7_light_0700A9B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A9B8 - 0x0700A9C8
-static const Light sl_seg7_light_0700A9B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A9B0 - 0x0700A9C8
+static const Lights1 sl_seg7_lights_0700A9B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700A9C8 - 0x0700A9D0
-static const Ambient sl_seg7_light_0700A9C8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0700A9D0 - 0x0700A9E0
-static const Light sl_seg7_light_0700A9D0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A9C8 - 0x0700A9E0
+static const Lights1 sl_seg7_lights_0700A9C8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0700A9E0 - 0x0700AAE0
static const Vtx sl_seg7_vertex_0700A9E0[] = {
@@ -289,8 +281,8 @@ static const Gfx sl_seg7_dl_0700B6C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700A9B8, 1),
- gsSPLight(&sl_seg7_light_0700A9B0, 2),
+ gsSPLight(&sl_seg7_lights_0700A9B0.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A9B0.a, 2),
gsSPVertex(sl_seg7_vertex_0700A9E0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -354,8 +346,8 @@ static const Gfx sl_seg7_dl_0700B6C0[] = {
gsSP2Triangles( 3, 6, 7, 0x0, 3, 7, 8, 0x0),
gsSP2Triangles( 0, 9, 10, 0x0, 0, 11, 9, 0x0),
gsSP1Triangle( 0, 2, 11, 0x0),
- gsSPLight(&sl_seg7_light_0700A9D0, 1),
- gsSPLight(&sl_seg7_light_0700A9C8, 2),
+ gsSPLight(&sl_seg7_lights_0700A9C8.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A9C8.a, 2),
gsSPVertex(sl_seg7_vertex_0700B5D0, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP1Triangle( 0, 4, 1, 0x0),
@@ -367,8 +359,8 @@ static const Gfx sl_seg7_dl_0700BA70[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700A9B8, 1),
- gsSPLight(&sl_seg7_light_0700A9B0, 2),
+ gsSPLight(&sl_seg7_lights_0700A9B0.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A9B0.a, 2),
gsSPVertex(sl_seg7_vertex_0700B620, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 2, 1, 0x0, 4, 1, 5, 0x0),
diff --git a/levels/sl/areas/2/2/model.inc.c b/levels/sl/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BB68 - 0x0700BB70
-static const Ambient sl_seg7_light_0700BB68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700BB70 - 0x0700BB80
-static const Light sl_seg7_light_0700BB70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BB68 - 0x0700BB80
+static const Lights1 sl_seg7_lights_0700BB68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BB80 - 0x0700BC80
static const Vtx sl_seg7_vertex_0700BB80[] = {
@@ -33,8 +29,8 @@ static const Gfx sl_seg7_dl_0700BC80[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700BB70, 1),
- gsSPLight(&sl_seg7_light_0700BB68, 2),
+ gsSPLight(&sl_seg7_lights_0700BB68.l, 1),
+ gsSPLight(&sl_seg7_lights_0700BB68.a, 2),
gsSPVertex(sl_seg7_vertex_0700BB80, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/sl/areas/2/3/model.inc.c b/levels/sl/areas/2/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BD68 - 0x0700BD70
-static const Ambient sl_seg7_light_0700BD68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700BD70 - 0x0700BD80
-static const Light sl_seg7_light_0700BD70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BD68 - 0x0700BD80
+static const Lights1 sl_seg7_lights_0700BD68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BD80 - 0x0700BE70
static const Vtx sl_seg7_vertex_0700BD80[] = {
@@ -211,8 +207,8 @@ static const Gfx sl_seg7_dl_0700C720[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700BD70, 1),
- gsSPLight(&sl_seg7_light_0700BD68, 2),
+ gsSPLight(&sl_seg7_lights_0700BD68.l, 1),
+ gsSPLight(&sl_seg7_lights_0700BD68.a, 2),
gsSPVertex(sl_seg7_vertex_0700BD80, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/sl/areas/2/4/model.inc.c b/levels/sl/areas/2/4/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700CA68 - 0x0700CA70
-static const Ambient sl_seg7_light_0700CA68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700CA70 - 0x0700CA80
-static const Light sl_seg7_light_0700CA70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CA68 - 0x0700CA80
+static const Lights1 sl_seg7_lights_0700CA68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700CA80 - 0x0700CB00
static const Vtx sl_seg7_vertex_0700CA80[] = {
@@ -25,8 +21,8 @@ static const Gfx sl_seg7_dl_0700CB00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700CA70, 1),
- gsSPLight(&sl_seg7_light_0700CA68, 2),
+ gsSPLight(&sl_seg7_lights_0700CA68.l, 1),
+ gsSPLight(&sl_seg7_lights_0700CA68.a, 2),
gsSPVertex(sl_seg7_vertex_0700CA80, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/sl/leveldata.c b/levels/sl/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/sl/texture.inc.c"
diff --git a/levels/sl/script.c b/levels/sl/script.c
@@ -69,16 +69,16 @@ const LevelScript level_sl_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 569, 2150, 1336, /*angle*/ 0, 0, 0, /*behParam*/ 0x060C0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 5468, 1056, -5400, /*angle*/ 0, -20, 0, /*behParam*/ 0x000D0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -3698, 1024, -1237, /*angle*/ 0, 6, 0, /*behParam*/ 0x000E0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0A, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0D, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0E, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0E, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0D, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0E, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0E, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0D, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ sl_seg7_area_1_collision),
MACRO_OBJECTS(/*objList*/ sl_seg7_area_1_macro_objs),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SNOW),
@@ -88,11 +88,11 @@ const LevelScript level_sl_entry[] = {
AREA(/*index*/ 2, sl_geo_000484),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 2867, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps60),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 0, 3277, /*angle*/ 0, 0, 0, /*behParam*/ 0x140B0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0A, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0A, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_SL, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_4),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x36, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x68, /*flags*/ WARP_NO_CHECKPOINT),
TERRAIN(/*terrainData*/ sl_seg7_area_2_collision),
MACRO_OBJECTS(/*objList*/ sl_seg7_area_2_macro_objs),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0004, /*seq*/ SEQ_LEVEL_UNDERGROUND),
diff --git a/levels/sl/snow_mound/model.inc.c b/levels/sl/snow_mound/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A620 - 0x0700A628
-static const Ambient sl_seg7_light_0700A620 = {
- {{0x73, 0x73, 0x73}, 0, {0x73, 0x73, 0x73}, 0}
-};
-
-// 0x0700A628 - 0x0700A638
-static const Light sl_seg7_light_0700A628 = {
- {{0xe6, 0xe6, 0xe6}, 0, {0xe6, 0xe6, 0xe6}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A620 - 0x0700A638
+static const Lights1 sl_seg7_lights_0700A620 = gdSPDefLights1(
+ 0x73, 0x73, 0x73,
+ 0xe6, 0xe6, 0xe6, 0x28, 0x28, 0x28
+);
// 0x0700A638 - 0x0700A718
static const Vtx sl_seg7_vertex_0700A638[] = {
@@ -31,8 +27,8 @@ static const Gfx sl_seg7_dl_0700A718[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, snow_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700A628, 1),
- gsSPLight(&sl_seg7_light_0700A620, 2),
+ gsSPLight(&sl_seg7_lights_0700A620.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A620.a, 2),
gsSPVertex(sl_seg7_vertex_0700A638, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/sl/unused_cracked_ice/model.inc.c b/levels/sl/unused_cracked_ice/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A7F0 - 0x0700A7F8
-static const Ambient sl_seg7_light_0700A7F0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A7F8 - 0x0700A808
-static const Light sl_seg7_light_0700A7F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A7F0 - 0x0700A808
+static const Lights1 sl_seg7_lights_0700A7F0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A808 - 0x0700A848
static const Vtx sl_seg7_vertex_0700A808[] = {
@@ -21,8 +17,8 @@ static const Gfx sl_seg7_dl_0700A848[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, sl_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&sl_seg7_light_0700A7F8, 1),
- gsSPLight(&sl_seg7_light_0700A7F0, 2),
+ gsSPLight(&sl_seg7_lights_0700A7F0.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A7F0.a, 2),
gsSPVertex(sl_seg7_vertex_0700A808, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/sl/unused_ice_shard/model.inc.c b/levels/sl/unused_ice_shard/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A910 - 0x0700A918
-static const Ambient sl_seg7_light_0700A910 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A918 - 0x0700A928
-static const Light sl_seg7_light_0700A918 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A910 - 0x0700A928
+static const Lights1 sl_seg7_lights_0700A910 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A928 - 0x0700A958
static const Vtx sl_seg7_vertex_0700A928[] = {
@@ -17,8 +13,8 @@ static const Vtx sl_seg7_vertex_0700A928[] = {
// 0x0700A958 - 0x0700A980
static const Gfx sl_seg7_dl_0700A958[] = {
- gsSPLight(&sl_seg7_light_0700A918, 1),
- gsSPLight(&sl_seg7_light_0700A910, 2),
+ gsSPLight(&sl_seg7_lights_0700A910.l, 1),
+ gsSPLight(&sl_seg7_lights_0700A910.a, 2),
gsSPVertex(sl_seg7_vertex_0700A928, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ssl/areas/1/1/model.inc.c b/levels/ssl/areas/1/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07004BE0 - 0x07004BE8
-static const Ambient ssl_seg7_light_07004BE0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07004BE8 - 0x07004BF8
-static const Light ssl_seg7_light_07004BE8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07004BF8 - 0x07004C00
-static const Ambient ssl_seg7_light_07004BF8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004C00 - 0x07004C10
-static const Light ssl_seg7_light_07004C00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07004C10 - 0x07004C18
-static const Ambient ssl_seg7_light_07004C10 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x07004C18 - 0x07004C28
-static const Light ssl_seg7_light_07004C18 = {
- {{0x32, 0x32, 0x32}, 0, {0x32, 0x32, 0x32}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07004C28 - 0x07004C30
-static const Ambient ssl_seg7_light_07004C28 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x07004C30 - 0x07004C40
-static const Light ssl_seg7_light_07004C30 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004BE0 - 0x07004BF8
+static const Lights1 ssl_seg7_lights_07004BE0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x07004BF8 - 0x07004C10
+static const Lights1 ssl_seg7_lights_07004BF8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07004C10 - 0x07004C28
+static const Lights1 ssl_seg7_lights_07004C10 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x32, 0x32, 0x32, 0x28, 0x28, 0x28
+);
+
+// 0x07004C28 - 0x07004C40
+static const Lights1 ssl_seg7_lights_07004C28 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
// 0x07004C40 - 0x07004C80
static const Vtx ssl_seg7_vertex_07004C40[] = {
@@ -1359,12 +1343,12 @@ static const Gfx ssl_seg7_dl_07008C40[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07004BE8, 1),
- gsSPLight(&ssl_seg7_light_07004BE0, 2),
+ gsSPLight(&ssl_seg7_lights_07004BE0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004BE0.a, 2),
gsSPVertex(ssl_seg7_vertex_07004C40, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ssl_seg7_light_07004C00, 1),
- gsSPLight(&ssl_seg7_light_07004BF8, 2),
+ gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),
gsSPVertex(ssl_seg7_vertex_07004C80, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1383,12 +1367,12 @@ static const Gfx ssl_seg7_dl_07008C40[] = {
gsSP2Triangles(10, 9, 3, 0x0, 10, 7, 9, 0x0),
gsSP2Triangles(10, 11, 5, 0x0, 7, 10, 5, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),
- gsSPLight(&ssl_seg7_light_07004C18, 1),
- gsSPLight(&ssl_seg7_light_07004C10, 2),
+ gsSPLight(&ssl_seg7_lights_07004C10.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004C10.a, 2),
gsSPVertex(ssl_seg7_vertex_07004F60, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ssl_seg7_light_07004C30, 1),
- gsSPLight(&ssl_seg7_light_07004C28, 2),
+ gsSPLight(&ssl_seg7_lights_07004C28.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004C28.a, 2),
gsSPVertex(ssl_seg7_vertex_07004FA0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -1399,8 +1383,8 @@ static const Gfx ssl_seg7_dl_07008DE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07004C00, 1),
- gsSPLight(&ssl_seg7_light_07004BF8, 2),
+ gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),
gsSPVertex(ssl_seg7_vertex_07004FE0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1516,8 +1500,8 @@ static const Gfx ssl_seg7_dl_07009170[] = {
gsSPVertex(ssl_seg7_vertex_070063F0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ssl_seg7_light_07004C18, 1),
- gsSPLight(&ssl_seg7_light_07004C10, 2),
+ gsSPLight(&ssl_seg7_lights_07004C10.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004C10.a, 2),
gsSPVertex(ssl_seg7_vertex_07006470, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1534,8 +1518,8 @@ static const Gfx ssl_seg7_dl_07009410[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07004C00, 1),
- gsSPLight(&ssl_seg7_light_07004BF8, 2),
+ gsSPLight(&ssl_seg7_lights_07004BF8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07004BF8.a, 2),
gsSPVertex(ssl_seg7_vertex_070065D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ssl/areas/1/2/model.inc.c b/levels/ssl/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A020 - 0x0700A028
-static const Ambient ssl_seg7_light_0700A020 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700A028 - 0x0700A038
-static const Light ssl_seg7_light_0700A028 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A020 - 0x0700A038
+static const Lights1 ssl_seg7_lights_0700A020 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A038 - 0x0700A138
static const Vtx ssl_seg7_vertex_0700A038[] = {
@@ -392,8 +388,8 @@ static const Gfx ssl_seg7_dl_0700B2E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0700A028, 1),
- gsSPLight(&ssl_seg7_light_0700A020, 2),
+ gsSPLight(&ssl_seg7_lights_0700A020.l, 1),
+ gsSPLight(&ssl_seg7_lights_0700A020.a, 2),
gsSPVertex(ssl_seg7_vertex_0700A038, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 5, 3, 0x0),
diff --git a/levels/ssl/areas/1/3/model.inc.c b/levels/ssl/areas/1/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BAD8 - 0x0700BAE0
-static const Ambient ssl_seg7_light_0700BAD8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700BAE0 - 0x0700BAF0
-static const Light ssl_seg7_light_0700BAE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BAD8 - 0x0700BAF0
+static const Lights1 ssl_seg7_lights_0700BAD8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BAF0 - 0x0700BBB0
static const Vtx ssl_seg7_vertex_0700BAF0[] = {
@@ -29,8 +25,8 @@ static const Gfx ssl_seg7_dl_0700BBB0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0700BAE0, 1),
- gsSPLight(&ssl_seg7_light_0700BAD8, 2),
+ gsSPLight(&ssl_seg7_lights_0700BAD8.l, 1),
+ gsSPLight(&ssl_seg7_lights_0700BAD8.a, 2),
gsSPVertex(ssl_seg7_vertex_0700BAF0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ssl/areas/1/geo.inc.c b/levels/ssl/areas/1/geo.inc.c
@@ -33,7 +33,7 @@ const GeoLayout ssl_geo_000648[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/ssl/areas/1/macro.inc.c b/levels/ssl/areas/1/macro.inc.c
@@ -28,8 +28,8 @@ const MacroObject ssl_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 5900, 70, 2311),
MACRO_OBJECT(/*preset*/ macro_box_koopa_shell, /*yaw*/ 0, /*pos*/ 5840, 940, 2500),
MACRO_OBJECT(/*preset*/ macro_box_wing_cap, /*yaw*/ 0, /*pos*/ 5860, 940, 4180),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5702, 614, 2974, /*behParam*/ 16),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3260, 256, 800, /*behParam*/ 32),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5702, 614, 2974, /*behParam*/ DIALOG_016),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3260, 256, 800, /*behParam*/ DIALOG_032),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ -6000, 600, -4800),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -250, 0, 4200),
MACRO_OBJECT(/*preset*/ macro_fly_guy, /*yaw*/ 0, /*pos*/ 3500, 149, 5600),
@@ -45,6 +45,6 @@ const MacroObject ssl_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ 5757, 230, 5761),
MACRO_OBJECT(/*preset*/ macro_jumping_box, /*yaw*/ 0, /*pos*/ -5200, 0, 1700),
MACRO_OBJECT(/*preset*/ macro_box_1up_running_away, /*yaw*/ 0, /*pos*/ -1200, 500, 800),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5130, 26, -370, /*behParam*/ 157),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 5130, 26, -370, /*behParam*/ DIALOG_157),
MACRO_OBJECT_END(),
};
diff --git a/levels/ssl/areas/2/1/model.inc.c b/levels/ssl/areas/2/1/model.inc.c
@@ -1,52 +1,32 @@
-// 0x07012BD0 - 0x07012BD8
-static const Ambient ssl_seg7_light_07012BD0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07012BD8 - 0x07012BE8
-static const Light ssl_seg7_light_07012BD8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012BE8 - 0x07012BF0
-static const Ambient ssl_seg7_light_07012BE8 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x07012BF0 - 0x07012C00
-static const Light ssl_seg7_light_07012BF0 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012C00 - 0x07012C08
-static const Ambient ssl_seg7_light_07012C00 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07012C08 - 0x07012C18
-static const Light ssl_seg7_light_07012C08 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012C18 - 0x07012C20
-static const Ambient ssl_seg7_light_07012C18 = {
- {{0x4b, 0x4b, 0x4b}, 0, {0x4b, 0x4b, 0x4b}, 0}
-};
-
-// 0x07012C20 - 0x07012C30
-static const Light ssl_seg7_light_07012C20 = {
- {{0x96, 0x96, 0x96}, 0, {0x96, 0x96, 0x96}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012C30 - 0x07012C38
-static const Ambient ssl_seg7_light_07012C30 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0}
-};
-
-// 0x07012C38 - 0x07012C48
-static const Light ssl_seg7_light_07012C38 = {
- {{0xc8, 0xc8, 0xc8}, 0, {0xc8, 0xc8, 0xc8}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012BD0 - 0x07012BE8
+static const Lights1 ssl_seg7_lights_07012BD0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07012BE8 - 0x07012C00
+static const Lights1 ssl_seg7_lights_07012BE8 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x07012C00 - 0x07012C18
+static const Lights1 ssl_seg7_lights_07012C00 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07012C18 - 0x07012C30
+static const Lights1 ssl_seg7_lights_07012C18 = gdSPDefLights1(
+ 0x4b, 0x4b, 0x4b,
+ 0x96, 0x96, 0x96, 0x28, 0x28, 0x28
+);
+
+// 0x07012C30 - 0x07012C48
+static const Lights1 ssl_seg7_lights_07012C30 = gdSPDefLights1(
+ 0x64, 0x64, 0x64,
+ 0xc8, 0xc8, 0xc8, 0x28, 0x28, 0x28
+);
// 0x07012C48 - 0x07012CC8
static const Vtx ssl_seg7_vertex_07012C48[] = {
@@ -3094,20 +3074,20 @@ static const Gfx ssl_seg7_dl_0701C198[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07012BD8, 1),
- gsSPLight(&ssl_seg7_light_07012BD0, 2),
+ gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),
gsSPVertex(ssl_seg7_vertex_07012C48, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ssl_seg7_light_07012BF0, 1),
- gsSPLight(&ssl_seg7_light_07012BE8, 2),
+ gsSPLight(&ssl_seg7_lights_07012BE8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012BE8.a, 2),
gsSPVertex(ssl_seg7_vertex_07012CC8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 3, 1, 0x0, 1, 5, 2, 0x0),
gsSP2Triangles( 1, 6, 5, 0x0, 3, 4, 7, 0x0),
gsSP2Triangles( 5, 7, 4, 0x0, 5, 6, 7, 0x0),
- gsSPLight(&ssl_seg7_light_07012BD8, 1),
- gsSPLight(&ssl_seg7_light_07012BD0, 2),
+ gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),
gsSPVertex(ssl_seg7_vertex_07012D48, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 3, 4, 0, 0x0, 3, 5, 4, 0x0),
@@ -3117,8 +3097,8 @@ static const Gfx ssl_seg7_dl_0701C198[] = {
gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),
gsSPVertex(ssl_seg7_vertex_07012E48, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ssl_seg7_light_07012C08, 1),
- gsSPLight(&ssl_seg7_light_07012C00, 2),
+ gsSPLight(&ssl_seg7_lights_07012C00.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012C00.a, 2),
gsSPVertex(ssl_seg7_vertex_07012E78, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -3132,8 +3112,8 @@ static const Gfx ssl_seg7_dl_0701C198[] = {
gsSP2Triangles(11, 10, 9, 0x0, 11, 4, 10, 0x0),
gsSP2Triangles( 0, 2, 12, 0x0, 13, 14, 15, 0x0),
gsSP2Triangles(12, 2, 14, 0x0, 13, 12, 14, 0x0),
- gsSPLight(&ssl_seg7_light_07012C20, 1),
- gsSPLight(&ssl_seg7_light_07012C18, 2),
+ gsSPLight(&ssl_seg7_lights_07012C18.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012C18.a, 2),
gsSPVertex(ssl_seg7_vertex_07013068, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 4, 7, 8, 0x0),
@@ -3231,8 +3211,8 @@ static const Gfx ssl_seg7_dl_0701C198[] = {
gsSP2Triangles( 2, 5, 0, 0x0, 6, 1, 4, 0x0),
gsSP2Triangles( 6, 4, 7, 0x0, 8, 9, 10, 0x0),
gsSP2Triangles( 8, 11, 9, 0x0, 12, 11, 8, 0x0),
- gsSPLight(&ssl_seg7_light_07012BD8, 1),
- gsSPLight(&ssl_seg7_light_07012BD0, 2),
+ gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),
gsSPVertex(ssl_seg7_vertex_07014098, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -3391,21 +3371,21 @@ static const Gfx ssl_seg7_dl_0701D060[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07012C08, 1),
- gsSPLight(&ssl_seg7_light_07012C00, 2),
+ gsSPLight(&ssl_seg7_lights_07012C00.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012C00.a, 2),
gsSPVertex(ssl_seg7_vertex_07015B48, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 3, 4, 1, 0x0, 3, 5, 4, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
- gsSPLight(&ssl_seg7_light_07012C38, 1),
- gsSPLight(&ssl_seg7_light_07012C30, 2),
+ gsSPLight(&ssl_seg7_lights_07012C30.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012C30.a, 2),
gsSPVertex(ssl_seg7_vertex_07015BE8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 1, 15, 2, 0x0),
- gsSPLight(&ssl_seg7_light_07012C20, 1),
- gsSPLight(&ssl_seg7_light_07012C18, 2),
+ gsSPLight(&ssl_seg7_lights_07012C18.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012C18.a, 2),
gsSPVertex(ssl_seg7_vertex_07015CE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -3507,8 +3487,8 @@ static const Gfx ssl_seg7_dl_0701D060[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(ssl_seg7_vertex_07016FB8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ssl_seg7_light_07012BD8, 1),
- gsSPLight(&ssl_seg7_light_07012BD0, 2),
+ gsSPLight(&ssl_seg7_lights_07012BD0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07012BD0.a, 2),
gsSPVertex(ssl_seg7_vertex_07016FF8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ssl/areas/2/4/model.inc.c b/levels/ssl/areas/2/4/model.inc.c
@@ -1,14 +1,10 @@
// Quicksand Pit
-// 0x07004000 - 0x07004008
-static const Ambient ssl_amb_light_quicksand_pit = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07004008 - 0x07004018
-static const Light ssl_diff_light_quicksand_pit = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07004000 - 0x07004018
+static const Lights1 ssl_lights_quicksand_pit = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07004018 - 0x07004818
ALIGNED8 const u8 ssl_quicksand[] = {
@@ -19,8 +15,8 @@ ALIGNED8 const u8 ssl_quicksand[] = {
const Gfx ssl_dl_quicksand_pit_begin[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
- gsSPLight(&ssl_diff_light_quicksand_pit, 1),
- gsSPLight(&ssl_amb_light_quicksand_pit, 2),
+ gsSPLight(&ssl_lights_quicksand_pit.l, 1),
+ gsSPLight(&ssl_lights_quicksand_pit.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),
@@ -46,8 +42,8 @@ const Gfx ssl_dl_pyramid_quicksand_pit_begin[] = {
gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7
gsSPSetGeometryMode(G_FOG),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),
- gsSPLight(&ssl_diff_light_quicksand_pit, 1),
- gsSPLight(&ssl_amb_light_quicksand_pit, 2),
+ gsSPLight(&ssl_lights_quicksand_pit.l, 1),
+ gsSPLight(&ssl_lights_quicksand_pit.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),
@@ -123,8 +119,8 @@ const Gfx ssl_dl_pyramid_quicksand_pit_static[] = {
gsSPFogFactor(0x0E49, 0xF2B7), // This isn't gsSPFogPosition since there is no valid min/max pair that corresponds to 0x0E49F2B7
gsSPSetGeometryMode(G_FOG),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),
- gsSPLight(&ssl_diff_light_quicksand_pit, 1),
- gsSPLight(&ssl_amb_light_quicksand_pit, 2),
+ gsSPLight(&ssl_lights_quicksand_pit.l, 1),
+ gsSPLight(&ssl_lights_quicksand_pit.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPLoadTextureBlock(ssl_pyramid_sand, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsSPVertex(ssl_seg7_vertex_07004A70, 7, 0),
diff --git a/levels/ssl/areas/2/macro.inc.c b/levels/ssl/areas/2/macro.inc.c
@@ -1,7 +1,7 @@
// 0x07027CD4 - 0x07027ECA
const MacroObject ssl_seg7_area_2_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 3263, 778, 3157),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 2196, 640, -3329, /*behParam*/ 43),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ 2196, 640, -3329, /*behParam*/ DIALOG_043),
MACRO_OBJECT(/*preset*/ macro_box_1up, /*yaw*/ 0, /*pos*/ -3536, 252, -3705),
MACRO_OBJECT(/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ 3389, 0, -1978),
MACRO_OBJECT(/*preset*/ macro_goomba, /*yaw*/ 0, /*pos*/ -3638, 0, 1928),
@@ -36,7 +36,7 @@ const MacroObject ssl_seg7_area_2_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ -1940, 1229, -600),
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ -1940, 1229, 2320),
MACRO_OBJECT(/*preset*/ macro_coin_line_vertical, /*yaw*/ 0, /*pos*/ 290, 4479, -940),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3560, 0, -4065, /*behParam*/ 103),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -3560, 0, -4065, /*behParam*/ DIALOG_103),
MACRO_OBJECT(/*preset*/ macro_hidden_star_trigger, /*yaw*/ 0, /*pos*/ 260, 3913, -600),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ -260, 2950, -600),
MACRO_OBJECT(/*preset*/ macro_yellow_coin, /*yaw*/ 0, /*pos*/ 260, 1977, -600),
diff --git a/levels/ssl/areas/3/1/model.inc.c b/levels/ssl/areas/3/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0701FD60 - 0x0701FD68
-static const Ambient ssl_seg7_light_0701FD60 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x0701FD68 - 0x0701FD78
-static const Light ssl_seg7_light_0701FD68 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701FD78 - 0x0701FD80
-static const Ambient ssl_seg7_light_0701FD78 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0701FD80 - 0x0701FD90
-static const Light ssl_seg7_light_0701FD80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701FD60 - 0x0701FD78
+static const Lights1 ssl_seg7_lights_0701FD60 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
+
+// 0x0701FD78 - 0x0701FD90
+static const Lights1 ssl_seg7_lights_0701FD78 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701FD90 - 0x0701FE50
static const Vtx ssl_seg7_vertex_0701FD90[] = {
@@ -459,14 +451,14 @@ static const Gfx ssl_seg7_dl_07021290[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0701FD68, 1),
- gsSPLight(&ssl_seg7_light_0701FD60, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),
gsSPVertex(ssl_seg7_vertex_0701FD90, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
- gsSPLight(&ssl_seg7_light_0701FD80, 1),
- gsSPLight(&ssl_seg7_light_0701FD78, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),
gsSPVertex(ssl_seg7_vertex_0701FE50, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -513,15 +505,15 @@ static const Gfx ssl_seg7_dl_070214E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0701FD68, 1),
- gsSPLight(&ssl_seg7_light_0701FD60, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),
gsSPVertex(ssl_seg7_vertex_07020550, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 3, 1, 0x0, 1, 5, 2, 0x0),
gsSP2Triangles( 1, 6, 5, 0x0, 3, 4, 7, 0x0),
gsSP2Triangles( 5, 7, 4, 0x0, 5, 6, 7, 0x0),
- gsSPLight(&ssl_seg7_light_0701FD80, 1),
- gsSPLight(&ssl_seg7_light_0701FD78, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),
gsSPVertex(ssl_seg7_vertex_070205D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -545,8 +537,8 @@ static const Gfx ssl_seg7_dl_07021638[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0701FD68, 1),
- gsSPLight(&ssl_seg7_light_0701FD60, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD60.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD60.a, 2),
gsSPVertex(ssl_seg7_vertex_07020870, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -558,8 +550,8 @@ static const Gfx ssl_seg7_dl_07021638[] = {
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
gsSP1Triangle( 0, 2, 12, 0x0),
- gsSPLight(&ssl_seg7_light_0701FD80, 1),
- gsSPLight(&ssl_seg7_light_0701FD78, 2),
+ gsSPLight(&ssl_seg7_lights_0701FD78.l, 1),
+ gsSPLight(&ssl_seg7_lights_0701FD78.a, 2),
gsSPVertex(ssl_seg7_vertex_07020A20, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 4, 7, 8, 0x0),
diff --git a/levels/ssl/areas/3/2/model.inc.c b/levels/ssl/areas/3/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07021AC8 - 0x07021AD0
-static const Ambient ssl_seg7_light_07021AC8 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x07021AD0 - 0x07021AE0
-static const Light ssl_seg7_light_07021AD0 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07021AC8 - 0x07021AE0
+static const Lights1 ssl_seg7_lights_07021AC8 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
// 0x07021AE0 - 0x07021BA0
static const Vtx ssl_seg7_vertex_07021AE0[] = {
@@ -59,8 +55,8 @@ static const Gfx ssl_seg7_dl_07021D00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07021AD0, 1),
- gsSPLight(&ssl_seg7_light_07021AC8, 2),
+ gsSPLight(&ssl_seg7_lights_07021AC8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07021AC8.a, 2),
gsSPVertex(ssl_seg7_vertex_07021AE0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/ssl/grindel/model.inc.c b/levels/ssl/grindel/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07021E50 - 0x07021E58
-static const Ambient ssl_seg7_light_07021E50 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07021E58 - 0x07021E68
-static const Light ssl_seg7_light_07021E58 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07021E50 - 0x07021E68
+static const Lights1 ssl_seg7_lights_07021E50 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07021E68 - 0x07021EE8
static const Vtx ssl_seg7_vertex_07021E68[] = {
@@ -45,8 +41,8 @@ static const Gfx ssl_seg7_dl_07021FE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07021E58, 1),
- gsSPLight(&ssl_seg7_light_07021E50, 2),
+ gsSPLight(&ssl_seg7_lights_07021E50.l, 1),
+ gsSPLight(&ssl_seg7_lights_07021E50.a, 2),
gsSPVertex(ssl_seg7_vertex_07021E68, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ssl/leveldata.c b/levels/ssl/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
// LEVEL DATA
diff --git a/levels/ssl/moving_pyramid_wall/model.inc.c b/levels/ssl/moving_pyramid_wall/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07022AA0 - 0x07022AA8
-static const Ambient ssl_seg7_light_07022AA0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07022AA8 - 0x07022AB8
-static const Light ssl_seg7_light_07022AA8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022AA0 - 0x07022AB8
+static const Lights1 ssl_seg7_lights_07022AA0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07022AB8 - 0x07022BB8
static const Vtx ssl_seg7_vertex_07022AB8[] = {
@@ -45,8 +41,8 @@ static const Gfx ssl_seg7_dl_07022C38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07022AA8, 1),
- gsSPLight(&ssl_seg7_light_07022AA0, 2),
+ gsSPLight(&ssl_seg7_lights_07022AA0.l, 1),
+ gsSPLight(&ssl_seg7_lights_07022AA0.a, 2),
gsSPVertex(ssl_seg7_vertex_07022AB8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ssl/pyramid_elevator/model.inc.c b/levels/ssl/pyramid_elevator/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07022DA8 - 0x07022DB0
-static const Ambient ssl_seg7_light_07022DA8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07022DB0 - 0x07022DC0
-static const Light ssl_seg7_light_07022DB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07022DA8 - 0x07022DC0
+static const Lights1 ssl_seg7_lights_07022DA8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07022DC0 - 0x07022E80
static const Vtx ssl_seg7_vertex_07022DC0[] = {
@@ -98,8 +94,8 @@ static const Gfx ssl_seg7_dl_070231D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_07022DB0, 1),
- gsSPLight(&ssl_seg7_light_07022DA8, 2),
+ gsSPLight(&ssl_seg7_lights_07022DA8.l, 1),
+ gsSPLight(&ssl_seg7_lights_07022DA8.a, 2),
gsSPVertex(ssl_seg7_vertex_07022DC0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 1, 3, 5, 0x0),
diff --git a/levels/ssl/pyramid_top/model.inc.c b/levels/ssl/pyramid_top/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BD70 - 0x0700BD78
-static const Ambient ssl_seg7_light_0700BD70 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700BD78 - 0x0700BD88
-static const Light ssl_seg7_light_0700BD78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BD70 - 0x0700BD88
+static const Lights1 ssl_seg7_lights_0700BD70 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BD88 - 0x0700BE48
static const Vtx ssl_seg7_vertex_0700BD88[] = {
@@ -37,8 +33,8 @@ static const Gfx ssl_seg7_dl_0700BE88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0700BD78, 1),
- gsSPLight(&ssl_seg7_light_0700BD70, 2),
+ gsSPLight(&ssl_seg7_lights_0700BD70.l, 1),
+ gsSPLight(&ssl_seg7_lights_0700BD70.a, 2),
gsSPVertex(ssl_seg7_vertex_0700BD88, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/ssl/script.c b/levels/ssl/script.c
@@ -96,13 +96,13 @@ const LevelScript level_ssl_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2048, 768, -1024, /*angle*/ 0, 0, 0, /*behParam*/ 0x0F1E0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 6930, 0, -4871, /*angle*/ 0, 159, 0, /*behParam*/ 0x001F0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -5943, 0, -4903, /*angle*/ 0, 49, 0, /*behParam*/ 0x00200000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
- WARP_NODE(/*id*/ 0x1E, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_CHECKPOINT),
- WARP_NODE(/*id*/ 0x1F, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x20, /*destLevel*/ 0x08, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1E, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x1F, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x20, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x01, /*destNode*/ 0x1F, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
@@ -117,12 +117,12 @@ const LevelScript level_ssl_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 5500, 256, /*angle*/ 0, 180, 0, /*behParam*/ 0x00140000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3070, 1280, 2900, /*angle*/ 0, 180, 0, /*behParam*/ 0x00150000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2546, 1150, -2647, /*angle*/ 0, 78, 0, /*behParam*/ 0x00160000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x15, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x16, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x16, /*destLevel*/ 0x08, /*destArea*/ 0x02, /*destNode*/ 0x15, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x15, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x16, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x16, /*destLevel*/ LEVEL_SSL, /*destArea*/ 0x02, /*destNode*/ 0x15, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_4),
JUMP_LINK(script_func_local_5),
INSTANT_WARP(/*index*/ 3, /*destArea*/ 3, /*displace*/ 0, 0, 0),
@@ -133,8 +133,8 @@ const LevelScript level_ssl_entry[] = {
END_AREA(),
AREA(/*index*/ 3, ssl_geo_00088C),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x03, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_6),
TERRAIN(/*terrainData*/ ssl_seg7_area_3_collision),
MACRO_OBJECTS(/*objList*/ ssl_seg7_area_3_macro_objs),
diff --git a/levels/ssl/spindel/model.inc.c b/levels/ssl/spindel/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070222A0 - 0x070222A8
-static const Ambient ssl_seg7_light_070222A0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x070222A8 - 0x070222B8
-static const Light ssl_seg7_light_070222A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070222A0 - 0x070222B8
+static const Lights1 ssl_seg7_lights_070222A0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070222B8 - 0x070223B8
static const Vtx ssl_seg7_vertex_070222B8[] = {
@@ -108,8 +104,8 @@ static const Gfx ssl_seg7_dl_07022728[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, generic_09002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_070222A8, 1),
- gsSPLight(&ssl_seg7_light_070222A0, 2),
+ gsSPLight(&ssl_seg7_lights_070222A0.l, 1),
+ gsSPLight(&ssl_seg7_lights_070222A0.a, 2),
gsSPVertex(ssl_seg7_vertex_070222B8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 6, 0x0, 0, 7, 8, 0x0),
diff --git a/levels/ssl/tox_box/model.inc.c b/levels/ssl/tox_box/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BF90 - 0x0700BF98
-static const Ambient ssl_seg7_light_0700BF90 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700BF98 - 0x0700BFA8
-static const Light ssl_seg7_light_0700BF98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BF90 - 0x0700BFA8
+static const Lights1 ssl_seg7_lights_0700BF90 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BFA8 - 0x0700C7A8
ALIGNED8 static const u8 ssl_seg7_texture_0700BFA8[] = {
@@ -111,8 +107,8 @@ static const Gfx ssl_seg7_dl_0700FB48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ssl_seg7_texture_0700BFA8),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ssl_seg7_light_0700BF98, 1),
- gsSPLight(&ssl_seg7_light_0700BF90, 2),
+ gsSPLight(&ssl_seg7_lights_0700BF90.l, 1),
+ gsSPLight(&ssl_seg7_lights_0700BF90.a, 2),
gsSPVertex(ssl_seg7_vertex_0700F7A8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/thi/areas/1/1/model.inc.c b/levels/thi/areas/1/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07001000 - 0x07001008
-static const Ambient thi_seg7_light_07001000 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07001008 - 0x07001018
-static const Light thi_seg7_light_07001008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001018 - 0x07001020
-static const Ambient thi_seg7_light_07001018 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07001020 - 0x07001030
-static const Light thi_seg7_light_07001020 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001030 - 0x07001038
-static const Ambient thi_seg7_light_07001030 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x07001038 - 0x07001048
-static const Light thi_seg7_light_07001038 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001048 - 0x07001050
-static const Ambient thi_seg7_light_07001048 = {
- {{0x7f, 0x7f, 0x3c}, 0, {0x7f, 0x7f, 0x3c}, 0}
-};
-
-// 0x07001050 - 0x07001060
-static const Light thi_seg7_light_07001050 = {
- {{0xff, 0xff, 0x78}, 0, {0xff, 0xff, 0x78}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07001000 - 0x07001018
+static const Lights1 thi_seg7_lights_07001000 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07001018 - 0x07001030
+static const Lights1 thi_seg7_lights_07001018 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07001030 - 0x07001048
+static const Lights1 thi_seg7_lights_07001030 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07001048 - 0x07001060
+static const Lights1 thi_seg7_lights_07001048 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x3c,
+ 0xff, 0xff, 0x78, 0x28, 0x28, 0x28
+);
// 0x07001060 - 0x07001140
static const Vtx thi_seg7_vertex_07001060[] = {
@@ -1060,8 +1044,8 @@ static const Gfx thi_seg7_dl_07004130[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07001060, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1108,8 +1092,8 @@ static const Gfx thi_seg7_dl_07004130[] = {
gsSP2Triangles(11, 14, 12, 0x0, 11, 10, 15, 0x0),
gsSPVertex(thi_seg7_vertex_070017D0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&thi_seg7_light_07001020, 1),
- gsSPLight(&thi_seg7_light_07001018, 2),
+ gsSPLight(&thi_seg7_lights_07001018.l, 1),
+ gsSPLight(&thi_seg7_lights_07001018.a, 2),
gsSPVertex(thi_seg7_vertex_07001830, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 1, 4, 0x0),
@@ -1124,18 +1108,18 @@ static const Gfx thi_seg7_dl_07004440[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07001920, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
- gsSPLight(&thi_seg7_light_07001020, 1),
- gsSPLight(&thi_seg7_light_07001018, 2),
+ gsSPLight(&thi_seg7_lights_07001018.l, 1),
+ gsSPLight(&thi_seg7_lights_07001018.a, 2),
gsSPVertex(thi_seg7_vertex_07001960, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 7, 4, 0x0),
gsSP1Triangle( 0, 2, 8, 0x0),
- gsSPLight(&thi_seg7_light_07001038, 1),
- gsSPLight(&thi_seg7_light_07001030, 2),
+ gsSPLight(&thi_seg7_lights_07001030.l, 1),
+ gsSPLight(&thi_seg7_lights_07001030.a, 2),
gsSPVertex(thi_seg7_vertex_070019F0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
@@ -1146,8 +1130,8 @@ static const Gfx thi_seg7_dl_070044F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07001A50, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1185,13 +1169,13 @@ static const Gfx thi_seg7_dl_070044F0[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle( 8, 10, 14, 0x0),
- gsSPLight(&thi_seg7_light_07001020, 1),
- gsSPLight(&thi_seg7_light_07001018, 2),
+ gsSPLight(&thi_seg7_lights_07001018.l, 1),
+ gsSPLight(&thi_seg7_lights_07001018.a, 2),
gsSPVertex(thi_seg7_vertex_070021C0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 5, 4, 2, 0x0),
- gsSPLight(&thi_seg7_light_07001038, 1),
- gsSPLight(&thi_seg7_light_07001030, 2),
+ gsSPLight(&thi_seg7_lights_07001030.l, 1),
+ gsSPLight(&thi_seg7_lights_07001030.a, 2),
gsSPVertex(thi_seg7_vertex_07002220, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
@@ -1204,8 +1188,8 @@ static const Gfx thi_seg7_dl_07004788[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07002260, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 4, 6, 0x0),
@@ -1280,8 +1264,8 @@ static const Gfx thi_seg7_dl_07004788[] = {
gsSP2Triangles(12, 13, 14, 0x0, 13, 15, 14, 0x0),
gsSPVertex(thi_seg7_vertex_07002F00, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
- gsSPLight(&thi_seg7_light_07001020, 1),
- gsSPLight(&thi_seg7_light_07001018, 2),
+ gsSPLight(&thi_seg7_lights_07001018.l, 1),
+ gsSPLight(&thi_seg7_lights_07001018.a, 2),
gsSPVertex(thi_seg7_vertex_07002F40, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -1294,8 +1278,8 @@ static const Gfx thi_seg7_dl_07004BF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07002F80, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 4, 3, 0x0),
@@ -1371,8 +1355,8 @@ static const Gfx thi_seg7_dl_07004BF0[] = {
gsSP2Triangles(11, 12, 0, 0x0, 13, 14, 15, 0x0),
gsSPVertex(thi_seg7_vertex_07003D00, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&thi_seg7_light_07001020, 1),
- gsSPLight(&thi_seg7_light_07001018, 2),
+ gsSPLight(&thi_seg7_lights_07001018.l, 1),
+ gsSPLight(&thi_seg7_lights_07001018.a, 2),
gsSPVertex(thi_seg7_vertex_07003D60, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1390,8 +1374,8 @@ static const Gfx thi_seg7_dl_070050C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thi_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001008, 1),
- gsSPLight(&thi_seg7_light_07001000, 2),
+ gsSPLight(&thi_seg7_lights_07001000.l, 1),
+ gsSPLight(&thi_seg7_lights_07001000.a, 2),
gsSPVertex(thi_seg7_vertex_07003EE0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 1, 3, 4, 0x0, 2, 1, 5, 0x0),
@@ -1423,8 +1407,8 @@ static const Gfx thi_seg7_dl_070051E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07001050, 1),
- gsSPLight(&thi_seg7_light_07001048, 2),
+ gsSPLight(&thi_seg7_lights_07001048.l, 1),
+ gsSPLight(&thi_seg7_lights_07001048.a, 2),
gsSPVertex(thi_seg7_vertex_07004090, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 0, 3, 0x0),
gsSP2Triangles( 4, 1, 5, 0x0, 3, 5, 1, 0x0),
diff --git a/levels/thi/areas/1/2/model.inc.c b/levels/thi/areas/1/2/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07005330 - 0x07005338
-static const Ambient thi_seg7_light_07005330 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07005338 - 0x07005348
-static const Light thi_seg7_light_07005338 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005348 - 0x07005350
-static const Ambient thi_seg7_light_07005348 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07005350 - 0x07005360
-static const Light thi_seg7_light_07005350 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005360 - 0x07005368
-static const Ambient thi_seg7_light_07005360 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07005368 - 0x07005378
-static const Light thi_seg7_light_07005368 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005378 - 0x07005380
-static const Ambient thi_seg7_light_07005378 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07005380 - 0x07005390
-static const Light thi_seg7_light_07005380 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005330 - 0x07005348
+static const Lights1 thi_seg7_lights_07005330 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07005348 - 0x07005360
+static const Lights1 thi_seg7_lights_07005348 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07005360 - 0x07005378
+static const Lights1 thi_seg7_lights_07005360 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07005378 - 0x07005390
+static const Lights1 thi_seg7_lights_07005378 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07005390 - 0x07005470
static const Vtx thi_seg7_vertex_07005390[] = {
@@ -378,8 +362,8 @@ static const Gfx thi_seg7_dl_070063C0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07005338, 1),
- gsSPLight(&thi_seg7_light_07005330, 2),
+ gsSPLight(&thi_seg7_lights_07005330.l, 1),
+ gsSPLight(&thi_seg7_lights_07005330.a, 2),
gsSPVertex(thi_seg7_vertex_07005390, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -391,8 +375,8 @@ static const Gfx thi_seg7_dl_070063C0[] = {
gsSPVertex(thi_seg7_vertex_07005550, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&thi_seg7_light_07005350, 1),
- gsSPLight(&thi_seg7_light_07005348, 2),
+ gsSPLight(&thi_seg7_lights_07005348.l, 1),
+ gsSPLight(&thi_seg7_lights_07005348.a, 2),
gsSPVertex(thi_seg7_vertex_070055D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -435,8 +419,8 @@ static const Gfx thi_seg7_dl_07006660[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07005338, 1),
- gsSPLight(&thi_seg7_light_07005330, 2),
+ gsSPLight(&thi_seg7_lights_07005330.l, 1),
+ gsSPLight(&thi_seg7_lights_07005330.a, 2),
gsSPVertex(thi_seg7_vertex_07005C30, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 3, 0x0),
@@ -447,8 +431,8 @@ static const Gfx thi_seg7_dl_07006660[] = {
gsSPVertex(thi_seg7_vertex_07005D30, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 3, 5, 0x0),
- gsSPLight(&thi_seg7_light_07005368, 1),
- gsSPLight(&thi_seg7_light_07005360, 2),
+ gsSPLight(&thi_seg7_lights_07005360.l, 1),
+ gsSPLight(&thi_seg7_lights_07005360.a, 2),
gsSPVertex(thi_seg7_vertex_07005DA0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -462,8 +446,8 @@ static const Gfx thi_seg7_dl_07006770[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07005350, 1),
- gsSPLight(&thi_seg7_light_07005348, 2),
+ gsSPLight(&thi_seg7_lights_07005348.l, 1),
+ gsSPLight(&thi_seg7_lights_07005348.a, 2),
gsSPVertex(thi_seg7_vertex_07005EA0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 3, 5, 7, 0x0),
@@ -507,8 +491,8 @@ static const Gfx thi_seg7_dl_07006868[] = {
// 0x07006908 - 0x07006968
static const Gfx thi_seg7_dl_07006908[] = {
- gsSPLight(&thi_seg7_light_07005380, 1),
- gsSPLight(&thi_seg7_light_07005378, 2),
+ gsSPLight(&thi_seg7_lights_07005378.l, 1),
+ gsSPLight(&thi_seg7_lights_07005378.a, 2),
gsSPVertex(thi_seg7_vertex_070062C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/thi/areas/1/4/model.inc.c b/levels/thi/areas/1/4/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007078 - 0x07007080
-static const Ambient thi_seg7_light_07007078 = {
- {{0x7f, 0x7f, 0x3c}, 0, {0x7f, 0x7f, 0x3c}, 0}
-};
-
-// 0x07007080 - 0x07007090
-static const Light thi_seg7_light_07007080 = {
- {{0xff, 0xff, 0x78}, 0, {0xff, 0xff, 0x78}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007078 - 0x07007090
+static const Lights1 thi_seg7_lights_07007078 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x3c,
+ 0xff, 0xff, 0x78, 0x28, 0x28, 0x28
+);
// 0x07007090 - 0x07007180
static const Vtx thi_seg7_vertex_07007090[] = {
@@ -48,8 +44,8 @@ static const Gfx thi_seg7_dl_07007240[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, grass_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07007080, 1),
- gsSPLight(&thi_seg7_light_07007078, 2),
+ gsSPLight(&thi_seg7_lights_07007078.l, 1),
+ gsSPLight(&thi_seg7_lights_07007078.a, 2),
gsSPVertex(thi_seg7_vertex_07007090, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
diff --git a/levels/thi/areas/1/6/model.inc.c b/levels/thi/areas/1/6/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070075A8 - 0x070075B0
-static const Ambient thi_seg7_light_070075A8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x070075B0 - 0x070075C0
-static const Light thi_seg7_light_070075B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070075A8 - 0x070075C0
+static const Lights1 thi_seg7_lights_070075A8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070075C0 - 0x07007600
static const Vtx thi_seg7_vertex_070075C0[] = {
@@ -21,8 +17,8 @@ static const Gfx thi_seg7_dl_07007600[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, thi_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_070075B0, 1),
- gsSPLight(&thi_seg7_light_070075A8, 2),
+ gsSPLight(&thi_seg7_lights_070075A8.l, 1),
+ gsSPLight(&thi_seg7_lights_070075A8.a, 2),
gsSPVertex(thi_seg7_vertex_070075C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/thi/areas/1/7/model.inc.c b/levels/thi/areas/1/7/model.inc.c
@@ -1,22 +1,14 @@
-// 0x070076A8 - 0x070076B0
-static const Ambient thi_seg7_light_070076A8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x070076B0 - 0x070076C0
-static const Light thi_seg7_light_070076B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070076A8 - 0x070076C0
+static const Lights1 thi_seg7_lights_070076A8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x070076C0 - 0x070076C8
-static const Ambient thi_seg7_light_070076C0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x070076C8 - 0x070076D8
-static const Light thi_seg7_light_070076C8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070076C0 - 0x070076D8
+static const Lights1 thi_seg7_lights_070076C0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x070076D8 - 0x07007718
static const Vtx thi_seg7_vertex_070076D8[] = {
@@ -56,8 +48,8 @@ static const Gfx thi_seg7_dl_07007828[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_070076B0, 1),
- gsSPLight(&thi_seg7_light_070076A8, 2),
+ gsSPLight(&thi_seg7_lights_070076A8.l, 1),
+ gsSPLight(&thi_seg7_lights_070076A8.a, 2),
gsSPVertex(thi_seg7_vertex_070076D8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -81,8 +73,8 @@ static const Gfx thi_seg7_dl_070078D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_070076C8, 1),
- gsSPLight(&thi_seg7_light_070076C0, 2),
+ gsSPLight(&thi_seg7_lights_070076C0.l, 1),
+ gsSPLight(&thi_seg7_lights_070076C0.a, 2),
gsSPVertex(thi_seg7_vertex_070077D8, 5, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 3, 4, 2, 0x0, 4, 0, 2, 0x0),
diff --git a/levels/thi/areas/1/geo.inc.c b/levels/thi/areas/1/geo.inc.c
@@ -29,7 +29,7 @@ const GeoLayout thi_geo_000608[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/thi/areas/1/macro.inc.c b/levels/thi/areas/1/macro.inc.c
@@ -3,7 +3,7 @@ const MacroObject thi_seg7_area_1_macro_objs[] = {
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ 6656, -2832, 6964, /*behParam*/ 0x80),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 870, -502, 2828),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ 4800, -110, 2250),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 6728, -2559, 1561, /*behParam*/ 91),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 6728, -2559, 1561, /*behParam*/ DIALOG_091),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ -66, -1637, -4944),
MACRO_OBJECT(/*preset*/ macro_huge_goomba, /*yaw*/ 0, /*pos*/ 7069, -1535, -4758),
MACRO_OBJECT(/*preset*/ macro_huge_goomba, /*yaw*/ 0, /*pos*/ 7177, -1535, -3522),
@@ -31,8 +31,8 @@ const MacroObject thi_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_box_1up_running_away, /*yaw*/ 0, /*pos*/ -5712, -2190, 1100),
MACRO_OBJECT(/*preset*/ macro_box_1up_running_away, /*yaw*/ 0, /*pos*/ 6022, -1722, -633),
MACRO_OBJECT(/*preset*/ macro_wooden_post, /*yaw*/ 0, /*pos*/ -5822, -2969, 5822),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ -886, -2559, 6655, /*behParam*/ 165),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2370, -511, 2320, /*behParam*/ 166),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ -886, -2559, 6655, /*behParam*/ DIALOG_165),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2370, -511, 2320, /*behParam*/ DIALOG_166),
MACRO_OBJECT(/*preset*/ macro_box_star_2, /*yaw*/ 0, /*pos*/ 2600, 3500, -2400),
MACRO_OBJECT(/*preset*/ macro_huge_goomba, /*yaw*/ 0, /*pos*/ -3180, -511, 2080),
MACRO_OBJECT(/*preset*/ macro_fly_guy, /*yaw*/ 0, /*pos*/ -300, -2340, 3940),
diff --git a/levels/thi/areas/3/2/model.inc.c b/levels/thi/areas/3/2/model.inc.c
@@ -1,52 +1,32 @@
-// 0x07007C90 - 0x07007C98
-static const Ambient thi_seg7_light_07007C90 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07007C98 - 0x07007CA8
-static const Light thi_seg7_light_07007C98 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07007CA8 - 0x07007CB0
-static const Ambient thi_seg7_light_07007CA8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07007CB0 - 0x07007CC0
-static const Light thi_seg7_light_07007CB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07007CC0 - 0x07007CC8
-static const Ambient thi_seg7_light_07007CC0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07007CC8 - 0x07007CD8
-static const Light thi_seg7_light_07007CC8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07007CD8 - 0x07007CE0
-static const Ambient thi_seg7_light_07007CD8 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x07007CE0 - 0x07007CF0
-static const Light thi_seg7_light_07007CE0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07007CF0 - 0x07007CF8
-static const Ambient thi_seg7_light_07007CF0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07007CF8 - 0x07007D08
-static const Light thi_seg7_light_07007CF8 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007C90 - 0x07007CA8
+static const Lights1 thi_seg7_lights_07007C90 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
+
+// 0x07007CA8 - 0x07007CC0
+static const Lights1 thi_seg7_lights_07007CA8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07007CC0 - 0x07007CD8
+static const Lights1 thi_seg7_lights_07007CC0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07007CD8 - 0x07007CF0
+static const Lights1 thi_seg7_lights_07007CD8 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07007CF0 - 0x07007D08
+static const Lights1 thi_seg7_lights_07007CF0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
// 0x07007D08 - 0x07007D88
static const Vtx thi_seg7_vertex_07007D08[] = {
@@ -446,8 +426,8 @@ static const Gfx thi_seg7_dl_07008F98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07007C98, 1),
- gsSPLight(&thi_seg7_light_07007C90, 2),
+ gsSPLight(&thi_seg7_lights_07007C90.l, 1),
+ gsSPLight(&thi_seg7_lights_07007C90.a, 2),
gsSPVertex(thi_seg7_vertex_07007D08, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 4, 0x0),
gsSP2Triangles( 0, 2, 5, 0x0, 3, 1, 0, 0x0),
@@ -461,12 +441,12 @@ static const Gfx thi_seg7_dl_07009010[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07007CB0, 1),
- gsSPLight(&thi_seg7_light_07007CA8, 2),
+ gsSPLight(&thi_seg7_lights_07007CA8.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CA8.a, 2),
gsSPVertex(thi_seg7_vertex_07007D88, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&thi_seg7_light_07007CC8, 1),
- gsSPLight(&thi_seg7_light_07007CC0, 2),
+ gsSPLight(&thi_seg7_lights_07007CC0.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CC0.a, 2),
gsSPVertex(thi_seg7_vertex_07007DC8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -477,15 +457,15 @@ static const Gfx thi_seg7_dl_07009080[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07007CB0, 1),
- gsSPLight(&thi_seg7_light_07007CA8, 2),
+ gsSPLight(&thi_seg7_lights_07007CA8.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CA8.a, 2),
gsSPVertex(thi_seg7_vertex_07007E08, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
gsSP2Triangles( 8, 6, 7, 0x0, 8, 7, 9, 0x0),
gsSP2Triangles( 0, 10, 1, 0x0, 11, 12, 13, 0x0),
- gsSPLight(&thi_seg7_light_07007CE0, 1),
- gsSPLight(&thi_seg7_light_07007CD8, 2),
+ gsSPLight(&thi_seg7_lights_07007CD8.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CD8.a, 2),
gsSPVertex(thi_seg7_vertex_07007EE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -553,8 +533,8 @@ static const Gfx thi_seg7_dl_07009080[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(thi_seg7_vertex_07008B18, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&thi_seg7_light_07007CF8, 1),
- gsSPLight(&thi_seg7_light_07007CF0, 2),
+ gsSPLight(&thi_seg7_lights_07007CF0.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CF0.a, 2),
gsSPVertex(thi_seg7_vertex_07008B78, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 4, 5, 0x0),
@@ -575,8 +555,8 @@ static const Gfx thi_seg7_dl_07009530[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&thi_seg7_light_07007CC8, 1),
- gsSPLight(&thi_seg7_light_07007CC0, 2),
+ gsSPLight(&thi_seg7_lights_07007CC0.l, 1),
+ gsSPLight(&thi_seg7_lights_07007CC0.a, 2),
gsSPVertex(thi_seg7_vertex_07008D78, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 4, 5, 0x0, 3, 2, 4, 0x0),
@@ -600,8 +580,8 @@ static const Gfx thi_seg7_dl_070095A8[] = {
// 0x07009610 - 0x07009670
static const Gfx thi_seg7_dl_07009610[] = {
- gsSPLight(&thi_seg7_light_07007C98, 1),
- gsSPLight(&thi_seg7_light_07007C90, 2),
+ gsSPLight(&thi_seg7_lights_07007C90.l, 1),
+ gsSPLight(&thi_seg7_lights_07007C90.a, 2),
gsSPVertex(thi_seg7_vertex_07008F18, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 3, 5, 0x0),
diff --git a/levels/thi/leveldata.c b/levels/thi/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/thi/texture.inc.c"
diff --git a/levels/thi/script.c b/levels/thi/script.c
@@ -61,9 +61,9 @@ static const LevelScript script_func_local_7[] = {
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ 6656, -1536, -5632, /*angle*/ 0, 0, 0, /*behParam*/ 0x00320000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -5888, -2048, -5888, /*angle*/ 0, 0, 0, /*behParam*/ 0x00330000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -3072, 512, -3840, /*angle*/ 0, 0, 0, /*behParam*/ 0x00340000, /*beh*/ bhvWarpPipe),
- WARP_NODE(/*id*/ 0x32, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x33, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x34, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x32, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x33, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x34, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
@@ -71,9 +71,9 @@ static const LevelScript script_func_local_8[] = {
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ 1997, -461, -1690, /*angle*/ 0, 0, 0, /*behParam*/ 0x00320000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -1766, -614, -1766, /*angle*/ 0, 0, 0, /*behParam*/ 0x00330000, /*beh*/ bhvWarpPipe),
OBJECT(/*model*/ MODEL_THI_WARP_PIPE, /*pos*/ -922, 154, -1152, /*angle*/ 0, 0, 0, /*behParam*/ 0x00340000, /*beh*/ bhvWarpPipe),
- WARP_NODE(/*id*/ 0x32, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x33, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x34, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x32, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x33, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x34, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
RETURN(),
};
@@ -104,12 +104,12 @@ const LevelScript level_thi_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 410, -512, 922, /*angle*/ 0, 0, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvWarps60),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 410, -512, 717, /*angle*/ 0, 0, 0, /*behParam*/ 0x050C0000, /*beh*/ bhvWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 3170, -1570, /*angle*/ 0, 0, 0, /*behParam*/ 0x0A0D0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0D, /*destArea*/ 0x03, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0D, /*destLevel*/ 0x0D, /*destArea*/ 0x03, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x03, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0D, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x03, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_7),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_5),
@@ -124,11 +124,11 @@ const LevelScript level_thi_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2211, 110, 2212, /*angle*/ 0, 149, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 280, -767, -4180, /*angle*/ 0, 0, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -1638, 0, -1988, /*angle*/ 0, -126, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0D, /*destArea*/ 0x02, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x02, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x33, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x65, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_8),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_6),
@@ -142,11 +142,11 @@ const LevelScript level_thi_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 512, 1024, 2150, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps60),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, 3277, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 512, 1024, 2355, /*angle*/ 0, 0, 0, /*behParam*/ 0x050C0000, /*beh*/ bhvWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0D, /*destArea*/ 0x03, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0D, /*destArea*/ 0x03, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0D, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x03, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x03, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_THI, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x37, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x69, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_3),
TERRAIN(/*terrainData*/ thi_seg7_area_3_collision),
MACRO_OBJECTS(/*objList*/ thi_seg7_area_3_macro_objs),
diff --git a/levels/totwc/script.c b/levels/totwc/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -42,15 +43,15 @@ const LevelScript level_totwc_entry[] = {
AREA(/*index*/ 1, totwc_geo_000188),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -4095, 2935, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps78),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1D, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_TOTWC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x20, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x26, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x23, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_1),
TERRAIN(/*terrainData*/ totwc_seg7_collision),
MACRO_OBJECTS(/*objList*/ totwc_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x83),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_131),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
diff --git a/levels/ttc/areas/1/1/model.inc.c b/levels/ttc/areas/1/1/model.inc.c
@@ -1,52 +1,32 @@
-// 0x07001000 - 0x07001008
-static const Ambient ttc_seg7_light_07001000 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07001008 - 0x07001018
-static const Light ttc_seg7_light_07001008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001018 - 0x07001020
-static const Ambient ttc_seg7_light_07001018 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x07001020 - 0x07001030
-static const Light ttc_seg7_light_07001020 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001030 - 0x07001038
-static const Ambient ttc_seg7_light_07001030 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x07001038 - 0x07001048
-static const Light ttc_seg7_light_07001038 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001048 - 0x07001050
-static const Ambient ttc_seg7_light_07001048 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07001050 - 0x07001060
-static const Light ttc_seg7_light_07001050 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001060 - 0x07001068
-static const Ambient ttc_seg7_light_07001060 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07001068 - 0x07001078
-static const Light ttc_seg7_light_07001068 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07001000 - 0x07001018
+static const Lights1 ttc_seg7_lights_07001000 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07001018 - 0x07001030
+static const Lights1 ttc_seg7_lights_07001018 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07001030 - 0x07001048
+static const Lights1 ttc_seg7_lights_07001030 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07001048 - 0x07001060
+static const Lights1 ttc_seg7_lights_07001048 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07001060 - 0x07001078
+static const Lights1 ttc_seg7_lights_07001060 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07001078 - 0x07001168
static const Vtx ttc_seg7_vertex_07001078[] = {
@@ -2528,8 +2508,8 @@ static const Gfx ttc_seg7_dl_070089A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 64 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07001008, 1),
- gsSPLight(&ttc_seg7_light_07001000, 2),
+ gsSPLight(&ttc_seg7_lights_07001000.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001000.a, 2),
gsSPVertex(ttc_seg7_vertex_07001078, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2622,12 +2602,12 @@ static const Gfx ttc_seg7_dl_07008DD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07001020, 1),
- gsSPLight(&ttc_seg7_light_07001018, 2),
+ gsSPLight(&ttc_seg7_lights_07001018.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001018.a, 2),
gsSPVertex(ttc_seg7_vertex_07001E38, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ttc_seg7_light_07001008, 1),
- gsSPLight(&ttc_seg7_light_07001000, 2),
+ gsSPLight(&ttc_seg7_lights_07001000.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001000.a, 2),
gsSPVertex(ttc_seg7_vertex_07001E78, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2717,13 +2697,13 @@ static const Gfx ttc_seg7_dl_07009278[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09008400),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07001038, 1),
- gsSPLight(&ttc_seg7_light_07001030, 2),
+ gsSPLight(&ttc_seg7_lights_07001030.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001030.a, 2),
gsSPVertex(ttc_seg7_vertex_07002D08, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttc_seg7_light_07001008, 1),
- gsSPLight(&ttc_seg7_light_07001000, 2),
+ gsSPLight(&ttc_seg7_lights_07001000.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001000.a, 2),
gsSPVertex(ttc_seg7_vertex_07002D88, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -3241,8 +3221,8 @@ static const Gfx ttc_seg7_dl_0700A700[] = {
gsSPVertex(ttc_seg7_vertex_070082F8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 2, 6, 0x0),
- gsSPLight(&ttc_seg7_light_07001050, 1),
- gsSPLight(&ttc_seg7_light_07001048, 2),
+ gsSPLight(&ttc_seg7_lights_07001048.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001048.a, 2),
gsSPVertex(ttc_seg7_vertex_07008368, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -3272,8 +3252,8 @@ static const Gfx ttc_seg7_dl_0700A700[] = {
// 0x0700ACD8 - 0x0700AD38
static const Gfx ttc_seg7_dl_0700ACD8[] = {
- gsSPLight(&ttc_seg7_light_07001068, 1),
- gsSPLight(&ttc_seg7_light_07001060, 2),
+ gsSPLight(&ttc_seg7_lights_07001060.l, 1),
+ gsSPLight(&ttc_seg7_lights_07001060.a, 2),
gsSPVertex(ttc_seg7_vertex_070088A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/areas/1/2/model.inc.c b/levels/ttc/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AED8 - 0x0700AEE0
-static const Ambient ttc_seg7_light_0700AED8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700AEE0 - 0x0700AEF0
-static const Light ttc_seg7_light_0700AEE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AED8 - 0x0700AEF0
+static const Lights1 ttc_seg7_lights_0700AED8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700AEF0 - 0x0700AFE0
static const Vtx ttc_seg7_vertex_0700AEF0[] = {
@@ -59,8 +55,8 @@ static const Gfx ttc_seg7_dl_0700B110[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700AEE0, 1),
- gsSPLight(&ttc_seg7_light_0700AED8, 2),
+ gsSPLight(&ttc_seg7_lights_0700AED8.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700AED8.a, 2),
gsSPVertex(ttc_seg7_vertex_0700AEF0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/areas/1/movtext.inc.c b/levels/ttc/areas/1/movtext.inc.c
@@ -1,12 +1,8 @@
-// 0x07015F78 - 0x07015F80
-static const Ambient ttc_amb_light_surface_treadmill = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07015F80 - 0x07015F90
-static const Light ttc_diff_light_surface_treadmill = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07015F78 - 0x07015F90
+static const Lights1 ttc_lights_surface_treadmill = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07015F90 - 0x07016790
ALIGNED8 const u8 ttc_yellow_triangle[] = {
@@ -23,8 +19,8 @@ const Gfx ttc_dl_surface_treadmill_begin[] = {
gsSPFogPosition(900, 1000),
gsSPSetGeometryMode(G_FOG),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_PASS2),
- gsSPLight(&ttc_diff_light_surface_treadmill, 1),
- gsSPLight(&ttc_amb_light_surface_treadmill, 2),
+ gsSPLight(&ttc_lights_surface_treadmill.l, 1),
+ gsSPLight(&ttc_lights_surface_treadmill.a, 2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, 5, G_TX_NOLOD),
diff --git a/levels/ttc/clock_hand/model.inc.c b/levels/ttc/clock_hand/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07011758 - 0x07011760
-static const Ambient ttc_seg7_light_07011758 = {
- {{0x5a, 0x41, 0x23}, 0, {0x5a, 0x41, 0x23}, 0}
-};
-
-// 0x07011760 - 0x07011770
-static const Light ttc_seg7_light_07011760 = {
- {{0xb4, 0x82, 0x46}, 0, {0xb4, 0x82, 0x46}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07011770 - 0x07011778
-static const Ambient ttc_seg7_light_07011770 = {
- {{0x7f, 0x66, 0x32}, 0, {0x7f, 0x66, 0x32}, 0}
-};
-
-// 0x07011778 - 0x07011788
-static const Light ttc_seg7_light_07011778 = {
- {{0xff, 0xcc, 0x65}, 0, {0xff, 0xcc, 0x65}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07011788 - 0x07011790
-static const Ambient ttc_seg7_light_07011788 = {
- {{0x49, 0x00, 0x00}, 0, {0x49, 0x00, 0x00}, 0}
-};
+// 0x07011758 - 0x07011770
+static const Lights1 ttc_seg7_lights_07011758 = gdSPDefLights1(
+ 0x5a, 0x41, 0x23,
+ 0xb4, 0x82, 0x46, 0x28, 0x28, 0x28
+);
-// 0x07011790 - 0x070117A0
-static const Light ttc_seg7_light_07011790 = {
- {{0x93, 0x00, 0x00}, 0, {0x93, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011770 - 0x07011788
+static const Lights1 ttc_seg7_lights_07011770 = gdSPDefLights1(
+ 0x7f, 0x66, 0x32,
+ 0xff, 0xcc, 0x65, 0x28, 0x28, 0x28
+);
-// 0x070117A0 - 0x070117A8
-static const Ambient ttc_seg7_light_070117A0 = {
- {{0x7f, 0x00, 0x00}, 0, {0x7f, 0x00, 0x00}, 0}
-};
+// 0x07011788 - 0x070117A0
+static const Lights1 ttc_seg7_lights_07011788 = gdSPDefLights1(
+ 0x49, 0x00, 0x00,
+ 0x93, 0x00, 0x00, 0x28, 0x28, 0x28
+);
-// 0x070117A8 - 0x070117B8
-static const Light ttc_seg7_light_070117A8 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070117A0 - 0x070117B8
+static const Lights1 ttc_seg7_lights_070117A0 = gdSPDefLights1(
+ 0x7f, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x070117B8 - 0x07011838
static const Vtx ttc_seg7_vertex_070117B8[] = {
@@ -95,26 +79,26 @@ static const Gfx ttc_seg7_dl_070119F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07011760, 1),
- gsSPLight(&ttc_seg7_light_07011758, 2),
+ gsSPLight(&ttc_seg7_lights_07011758.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011758.a, 2),
gsSPVertex(ttc_seg7_vertex_070117B8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 1, 0x0, 4, 1, 3, 0x0),
gsSP2Triangles( 0, 2, 6, 0x0, 0, 6, 7, 0x0),
- gsSPLight(&ttc_seg7_light_07011778, 1),
- gsSPLight(&ttc_seg7_light_07011770, 2),
+ gsSPLight(&ttc_seg7_lights_07011770.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011770.a, 2),
gsSPVertex(ttc_seg7_vertex_07011838, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttc_seg7_light_07011790, 1),
- gsSPLight(&ttc_seg7_light_07011788, 2),
+ gsSPLight(&ttc_seg7_lights_07011788.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011788.a, 2),
gsSPVertex(ttc_seg7_vertex_070118B8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 3, 2, 4, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 5, 6, 7, 0x0),
gsSP2Triangles( 7, 6, 8, 0x0, 7, 8, 9, 0x0),
- gsSPLight(&ttc_seg7_light_070117A8, 1),
- gsSPLight(&ttc_seg7_light_070117A0, 2),
+ gsSPLight(&ttc_seg7_lights_070117A0.l, 1),
+ gsSPLight(&ttc_seg7_lights_070117A0.a, 2),
gsSPVertex(ttc_seg7_vertex_07011958, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 5, 6, 7, 0x0),
diff --git a/levels/ttc/elevator_platform/model.inc.c b/levels/ttc/elevator_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07011428 - 0x07011430
-static const Ambient ttc_seg7_light_07011428 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07011430 - 0x07011440
-static const Light ttc_seg7_light_07011430 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011428 - 0x07011440
+static const Lights1 ttc_seg7_lights_07011428 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011440 - 0x07011530
static const Vtx ttc_seg7_vertex_07011440[] = {
@@ -51,8 +47,8 @@ static const Gfx ttc_seg7_dl_070115E0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07011430, 1),
- gsSPLight(&ttc_seg7_light_07011428, 2),
+ gsSPLight(&ttc_seg7_lights_07011428.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011428.a, 2),
gsSPVertex(ttc_seg7_vertex_07011440, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/large_treadmill/model.inc.c b/levels/ttc/large_treadmill/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700F830 - 0x0700F838
-static const Ambient ttc_seg7_light_0700F830 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700F838 - 0x0700F848
-static const Light ttc_seg7_light_0700F838 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F830 - 0x0700F848
+static const Lights1 ttc_seg7_lights_0700F830 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700F848 - 0x0700F850
-static const Ambient ttc_seg7_light_0700F848 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x0700F850 - 0x0700F860
-static const Light ttc_seg7_light_0700F850 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F848 - 0x0700F860
+static const Lights1 ttc_seg7_lights_0700F848 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
// 0x0700F860 - 0x0700F8E0
static const Vtx ttc_seg7_vertex_0700F860[] = {
@@ -75,8 +67,8 @@ static const Gfx ttc_seg7_dl_0700FAA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700F838, 1),
- gsSPLight(&ttc_seg7_light_0700F830, 2),
+ gsSPLight(&ttc_seg7_lights_0700F830.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700F830.a, 2),
gsSPVertex(ttc_seg7_vertex_0700F860, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -102,8 +94,8 @@ static const Gfx ttc_seg7_dl_0700FAF8[] = {
// 0x0700FB88 - 0x0700FBB8
static const Gfx ttc_seg7_dl_0700FB88[] = {
- gsSPLight(&ttc_seg7_light_0700F850, 1),
- gsSPLight(&ttc_seg7_light_0700F848, 2),
+ gsSPLight(&ttc_seg7_lights_0700F848.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700F848.a, 2),
gsSPVertex(ttc_seg7_vertex_0700FA60, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttc/pendulum/model.inc.c b/levels/ttc/pendulum/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F090 - 0x0700F098
-static const Ambient ttc_seg7_light_0700F090 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700F098 - 0x0700F0A8
-static const Light ttc_seg7_light_0700F098 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F090 - 0x0700F0A8
+static const Lights1 ttc_seg7_lights_0700F090 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F0A8 - 0x0700F188
static const Vtx ttc_seg7_vertex_0700F0A8[] = {
@@ -105,8 +101,8 @@ static const Gfx ttc_seg7_dl_0700F528[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttc_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 16 * 64 - 1, CALC_DXT(16, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700F098, 1),
- gsSPLight(&ttc_seg7_light_0700F090, 2),
+ gsSPLight(&ttc_seg7_lights_0700F090.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700F090.a, 2),
gsSPVertex(ttc_seg7_vertex_0700F0A8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/pit_block/model.inc.c b/levels/ttc/pit_block/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07010DE8 - 0x07010DF0
-static const Ambient ttc_seg7_light_07010DE8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010DF0 - 0x07010E00
-static const Light ttc_seg7_light_07010DF0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010DE8 - 0x07010E00
+static const Lights1 ttc_seg7_lights_07010DE8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010E00 - 0x07010E80
static const Vtx ttc_seg7_vertex_07010E00[] = {
@@ -45,8 +41,8 @@ static const Gfx ttc_seg7_dl_07010F80[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07010DF0, 1),
- gsSPLight(&ttc_seg7_light_07010DE8, 2),
+ gsSPLight(&ttc_seg7_lights_07010DE8.l, 1),
+ gsSPLight(&ttc_seg7_lights_07010DE8.a, 2),
gsSPVertex(ttc_seg7_vertex_07010E00, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ttc/pit_block_2/model.inc.c b/levels/ttc/pit_block_2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07011108 - 0x07011110
-static const Ambient ttc_seg7_light_07011108 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07011110 - 0x07011120
-static const Light ttc_seg7_light_07011110 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011108 - 0x07011120
+static const Lights1 ttc_seg7_lights_07011108 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011120 - 0x070111A0
static const Vtx ttc_seg7_vertex_07011120[] = {
@@ -45,8 +41,8 @@ static const Gfx ttc_seg7_dl_070112A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07011110, 1),
- gsSPLight(&ttc_seg7_light_07011108, 2),
+ gsSPLight(&ttc_seg7_lights_07011108.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011108.a, 2),
gsSPVertex(ttc_seg7_vertex_07011120, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ttc/push_block/model.inc.c b/levels/ttc/push_block/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070100B0 - 0x070100B8
-static const Ambient ttc_seg7_light_070100B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x070100B8 - 0x070100C8
-static const Light ttc_seg7_light_070100B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070100B0 - 0x070100C8
+static const Lights1 ttc_seg7_lights_070100B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070100C8 - 0x070101C8
static const Vtx ttc_seg7_vertex_070100C8[] = {
@@ -41,8 +37,8 @@ static const Gfx ttc_seg7_dl_07010208[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_070100B8, 1),
- gsSPLight(&ttc_seg7_light_070100B0, 2),
+ gsSPLight(&ttc_seg7_lights_070100B0.l, 1),
+ gsSPLight(&ttc_seg7_lights_070100B0.a, 2),
gsSPVertex(ttc_seg7_vertex_070100C8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/rotating_cube/model.inc.c b/levels/ttc/rotating_cube/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700E950 - 0x0700E958
-static const Ambient ttc_seg7_light_0700E950 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0}
-};
-
-// 0x0700E958 - 0x0700E968
-static const Light ttc_seg7_light_0700E958 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E950 - 0x0700E968
+static const Lights1 ttc_seg7_lights_0700E950 = gdSPDefLights1(
+ 0x55, 0x55, 0x55,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
-// 0x0700E968 - 0x0700E970
-static const Ambient ttc_seg7_light_0700E968 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700E970 - 0x0700E980
-static const Light ttc_seg7_light_0700E970 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E968 - 0x0700E980
+static const Lights1 ttc_seg7_lights_0700E968 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E980 - 0x0700EA20
static const Vtx ttc_seg7_vertex_0700E980[] = {
@@ -71,13 +63,13 @@ static const Gfx ttc_seg7_dl_0700EBC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700E958, 1),
- gsSPLight(&ttc_seg7_light_0700E950, 2),
+ gsSPLight(&ttc_seg7_lights_0700E950.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700E950.a, 2),
gsSPVertex(ttc_seg7_vertex_0700E980, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 8, 6, 9, 0x0),
- gsSPLight(&ttc_seg7_light_0700E970, 1),
- gsSPLight(&ttc_seg7_light_0700E968, 2),
+ gsSPLight(&ttc_seg7_lights_0700E968.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700E968.a, 2),
gsSPVertex(ttc_seg7_vertex_0700EA20, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 8, 6, 9, 0x0),
diff --git a/levels/ttc/rotating_hexagon/model.inc.c b/levels/ttc/rotating_hexagon/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07010380 - 0x07010388
-static const Ambient ttc_seg7_light_07010380 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010388 - 0x07010398
-static const Light ttc_seg7_light_07010388 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010380 - 0x07010398
+static const Lights1 ttc_seg7_lights_07010380 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010398 - 0x07010488
static const Vtx ttc_seg7_vertex_07010398[] = {
@@ -87,8 +83,8 @@ static const Gfx ttc_seg7_dl_07010738[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07010388, 1),
- gsSPLight(&ttc_seg7_light_07010380, 2),
+ gsSPLight(&ttc_seg7_lights_07010380.l, 1),
+ gsSPLight(&ttc_seg7_lights_07010380.a, 2),
gsSPVertex(ttc_seg7_vertex_07010398, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttc/rotating_prism/model.inc.c b/levels/ttc/rotating_prism/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700ED68 - 0x0700ED70
-static const Ambient ttc_seg7_light_0700ED68 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700ED70 - 0x0700ED80
-static const Light ttc_seg7_light_0700ED70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700ED68 - 0x0700ED80
+static const Lights1 ttc_seg7_lights_0700ED68 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700ED80 - 0x0700EE60
static const Vtx ttc_seg7_vertex_0700ED80[] = {
@@ -47,8 +43,8 @@ static const Gfx ttc_seg7_dl_0700EF20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700ED70, 1),
- gsSPLight(&ttc_seg7_light_0700ED68, 2),
+ gsSPLight(&ttc_seg7_lights_0700ED68.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700ED68.a, 2),
gsSPVertex(ttc_seg7_vertex_0700ED80, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 7, 0x0, 8, 4, 9, 0x0),
diff --git a/levels/ttc/rotating_triangle/model.inc.c b/levels/ttc/rotating_triangle/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07010930 - 0x07010938
-static const Ambient ttc_seg7_light_07010930 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010938 - 0x07010948
-static const Light ttc_seg7_light_07010938 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010930 - 0x07010948
+static const Lights1 ttc_seg7_lights_07010930 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010948 - 0x07010A28
static const Vtx ttc_seg7_vertex_07010948[] = {
@@ -72,8 +68,8 @@ static const Gfx ttc_seg7_dl_07010BF8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07010938, 1),
- gsSPLight(&ttc_seg7_light_07010930, 2),
+ gsSPLight(&ttc_seg7_lights_07010930.l, 1),
+ gsSPLight(&ttc_seg7_lights_07010930.a, 2),
gsSPVertex(ttc_seg7_vertex_07010948, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 3, 5, 7, 0x0),
diff --git a/levels/ttc/script.c b/levels/ttc/script.c
@@ -61,9 +61,9 @@ const LevelScript level_ttc_entry[] = {
AREA(/*index*/ 1, ttc_geo_0003B8),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 1417, -3822, -548, /*angle*/ 0, 316, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0E, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_TTC, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x35, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x67, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ ttc_seg7_collision_level),
diff --git a/levels/ttc/small_treadmill/model.inc.c b/levels/ttc/small_treadmill/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700FC80 - 0x0700FC88
-static const Ambient ttc_seg7_light_0700FC80 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700FC88 - 0x0700FC98
-static const Light ttc_seg7_light_0700FC88 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FC80 - 0x0700FC98
+static const Lights1 ttc_seg7_lights_0700FC80 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700FC98 - 0x0700FCA0
-static const Ambient ttc_seg7_light_0700FC98 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x0700FCA0 - 0x0700FCB0
-static const Light ttc_seg7_light_0700FCA0 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FC98 - 0x0700FCB0
+static const Lights1 ttc_seg7_lights_0700FC98 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
// 0x0700FCB0 - 0x0700FD30
static const Vtx ttc_seg7_vertex_0700FCB0[] = {
@@ -73,8 +65,8 @@ static const Gfx ttc_seg7_dl_0700FED0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_0700FC88, 1),
- gsSPLight(&ttc_seg7_light_0700FC80, 2),
+ gsSPLight(&ttc_seg7_lights_0700FC80.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700FC80.a, 2),
gsSPVertex(ttc_seg7_vertex_0700FCB0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -100,8 +92,8 @@ static const Gfx ttc_seg7_dl_0700FF28[] = {
// 0x0700FFB8 - 0x0700FFE8
static const Gfx ttc_seg7_dl_0700FFB8[] = {
- gsSPLight(&ttc_seg7_light_0700FCA0, 1),
- gsSPLight(&ttc_seg7_light_0700FC98, 2),
+ gsSPLight(&ttc_seg7_lights_0700FC98.l, 1),
+ gsSPLight(&ttc_seg7_lights_0700FC98.a, 2),
gsSPVertex(ttc_seg7_vertex_0700FE90, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttc/spinner/model.inc.c b/levels/ttc/spinner/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07011BE0 - 0x07011BE8
-static const Ambient ttc_seg7_light_07011BE0 = {
- {{0x46, 0x46, 0x46}, 0, {0x46, 0x46, 0x46}, 0}
-};
-
-// 0x07011BE8 - 0x07011BF8
-static const Light ttc_seg7_light_07011BE8 = {
- {{0x8c, 0x8c, 0x8c}, 0, {0x8c, 0x8c, 0x8c}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011BE0 - 0x07011BF8
+static const Lights1 ttc_seg7_lights_07011BE0 = gdSPDefLights1(
+ 0x46, 0x46, 0x46,
+ 0x8c, 0x8c, 0x8c, 0x28, 0x28, 0x28
+);
-// 0x07011BF8 - 0x07011C00
-static const Ambient ttc_seg7_light_07011BF8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07011C00 - 0x07011C10
-static const Light ttc_seg7_light_07011C00 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011BF8 - 0x07011C10
+static const Lights1 ttc_seg7_lights_07011BF8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011C10 - 0x07011D10
static const Vtx ttc_seg7_vertex_07011C10[] = {
@@ -78,8 +70,8 @@ static const Gfx ttc_seg7_dl_07011EC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, machine_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttc_seg7_light_07011BE8, 1),
- gsSPLight(&ttc_seg7_light_07011BE0, 2),
+ gsSPLight(&ttc_seg7_lights_07011BE0.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011BE0.a, 2),
gsSPVertex(ttc_seg7_vertex_07011C10, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 2, 6, 3, 0x0),
@@ -95,8 +87,8 @@ static const Gfx ttc_seg7_dl_07011EC0[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 7, 4, 0x0, 8, 4, 9, 0x0),
gsSP2Triangles( 8, 10, 3, 0x0, 8, 3, 2, 0x0),
- gsSPLight(&ttc_seg7_light_07011C00, 1),
- gsSPLight(&ttc_seg7_light_07011BF8, 2),
+ gsSPLight(&ttc_seg7_lights_07011BF8.l, 1),
+ gsSPLight(&ttc_seg7_lights_07011BF8.a, 2),
gsSPVertex(ttc_seg7_vertex_07011DC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttm/areas/1/1/model.inc.c b/levels/ttm/areas/1/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07005000 - 0x07005008
-static const Ambient ttm_seg7_light_07005000 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07005008 - 0x07005018
-static const Light ttm_seg7_light_07005008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005018 - 0x07005020
-static const Ambient ttm_seg7_light_07005018 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07005020 - 0x07005030
-static const Light ttm_seg7_light_07005020 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005030 - 0x07005038
-static const Ambient ttm_seg7_light_07005030 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x07005038 - 0x07005048
-static const Light ttm_seg7_light_07005038 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07005048 - 0x07005050
-static const Ambient ttm_seg7_light_07005048 = {
- {{0x37, 0x29, 0x22}, 0, {0x37, 0x29, 0x22}, 0}
-};
-
-// 0x07005050 - 0x07005060
-static const Light ttm_seg7_light_07005050 = {
- {{0x6e, 0x52, 0x44}, 0, {0x6e, 0x52, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005000 - 0x07005018
+static const Lights1 ttm_seg7_lights_07005000 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07005018 - 0x07005030
+static const Lights1 ttm_seg7_lights_07005018 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07005030 - 0x07005048
+static const Lights1 ttm_seg7_lights_07005030 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07005048 - 0x07005060
+static const Lights1 ttm_seg7_lights_07005048 = gdSPDefLights1(
+ 0x37, 0x29, 0x22,
+ 0x6e, 0x52, 0x44, 0x28, 0x28, 0x28
+);
// 0x07005060 - 0x07005160
static const Vtx ttm_seg7_vertex_07005060[] = {
@@ -1362,8 +1346,8 @@ static const Gfx ttm_seg7_dl_070090D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07005008, 1),
- gsSPLight(&ttm_seg7_light_07005000, 2),
+ gsSPLight(&ttm_seg7_lights_07005000.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005000.a, 2),
gsSPVertex(ttm_seg7_vertex_07005060, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1456,8 +1440,8 @@ static const Gfx ttm_seg7_dl_070090D0[] = {
gsSPVertex(ttm_seg7_vertex_07006430, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
- gsSPLight(&ttm_seg7_light_07005020, 1),
- gsSPLight(&ttm_seg7_light_07005018, 2),
+ gsSPLight(&ttm_seg7_lights_07005018.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005018.a, 2),
gsSPVertex(ttm_seg7_vertex_070064C0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 5, 0, 3, 0x0),
@@ -1521,8 +1505,8 @@ static const Gfx ttm_seg7_dl_070090D0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
- gsSPLight(&ttm_seg7_light_07005038, 1),
- gsSPLight(&ttm_seg7_light_07005030, 2),
+ gsSPLight(&ttm_seg7_lights_07005030.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005030.a, 2),
gsSPVertex(ttm_seg7_vertex_07007200, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 3, 6, 0x0, 3, 7, 6, 0x0),
@@ -1597,8 +1581,8 @@ static const Gfx ttm_seg7_dl_07009C98[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07005008, 1),
- gsSPLight(&ttm_seg7_light_07005000, 2),
+ gsSPLight(&ttm_seg7_lights_07005000.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005000.a, 2),
gsSPVertex(ttm_seg7_vertex_07007FC0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSPEndDisplayList(),
@@ -1647,8 +1631,8 @@ static const Gfx ttm_seg7_dl_07009CE0[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(ttm_seg7_vertex_07008880, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_07005020, 1),
- gsSPLight(&ttm_seg7_light_07005018, 2),
+ gsSPLight(&ttm_seg7_lights_07005018.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005018.a, 2),
gsSPVertex(ttm_seg7_vertex_070088E0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1658,8 +1642,8 @@ static const Gfx ttm_seg7_dl_07009CE0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07005038, 1),
- gsSPLight(&ttm_seg7_light_07005030, 2),
+ gsSPLight(&ttm_seg7_lights_07005030.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005030.a, 2),
gsSPVertex(ttm_seg7_vertex_07008A80, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -1686,8 +1670,8 @@ static const Gfx ttm_seg7_dl_0700A038[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07005008, 1),
- gsSPLight(&ttm_seg7_light_07005000, 2),
+ gsSPLight(&ttm_seg7_lights_07005000.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005000.a, 2),
gsSPVertex(ttm_seg7_vertex_07008E60, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1697,8 +1681,8 @@ static const Gfx ttm_seg7_dl_0700A038[] = {
// 0x0700A098 - 0x0700A120
static const Gfx ttm_seg7_dl_0700A098[] = {
- gsSPLight(&ttm_seg7_light_07005050, 1),
- gsSPLight(&ttm_seg7_light_07005048, 2),
+ gsSPLight(&ttm_seg7_lights_07005048.l, 1),
+ gsSPLight(&ttm_seg7_lights_07005048.a, 2),
gsSPVertex(ttm_seg7_vertex_07008F30, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
diff --git a/levels/ttm/areas/1/10/model.inc.c b/levels/ttm/areas/1/10/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700C488 - 0x0700C490
-static const Ambient ttm_seg7_light_0700C488 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700C490 - 0x0700C4A0
-static const Light ttm_seg7_light_0700C490 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C4A0 - 0x0700C4A8
-static const Ambient ttm_seg7_light_0700C4A0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700C4A8 - 0x0700C4B8
-static const Light ttm_seg7_light_0700C4A8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C4B8 - 0x0700C4C0
-static const Ambient ttm_seg7_light_0700C4B8 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700C4C0 - 0x0700C4D0
-static const Light ttm_seg7_light_0700C4C0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C488 - 0x0700C4A0
+static const Lights1 ttm_seg7_lights_0700C488 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700C4A0 - 0x0700C4B8
+static const Lights1 ttm_seg7_lights_0700C4A0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0700C4B8 - 0x0700C4D0
+static const Lights1 ttm_seg7_lights_0700C4B8 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700C4D0 - 0x0700C5D0
static const Vtx ttm_seg7_vertex_0700C4D0[] = {
@@ -136,21 +124,21 @@ static const Gfx ttm_seg7_dl_0700C900[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700C490, 1),
- gsSPLight(&ttm_seg7_light_0700C488, 2),
+ gsSPLight(&ttm_seg7_lights_0700C488.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C488.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C4D0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 14, 13, 15, 0x0),
gsSPVertex(ttm_seg7_vertex_0700C5D0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0700C4A8, 1),
- gsSPLight(&ttm_seg7_light_0700C4A0, 2),
+ gsSPLight(&ttm_seg7_lights_0700C4A0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C4A0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C600, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
- gsSPLight(&ttm_seg7_light_0700C4C0, 1),
- gsSPLight(&ttm_seg7_light_0700C4B8, 2),
+ gsSPLight(&ttm_seg7_lights_0700C4B8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C4B8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C690, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -165,13 +153,13 @@ static const Gfx ttm_seg7_dl_0700C9F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700C490, 1),
- gsSPLight(&ttm_seg7_light_0700C488, 2),
+ gsSPLight(&ttm_seg7_lights_0700C488.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C488.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C7B0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 2, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700C4C0, 1),
- gsSPLight(&ttm_seg7_light_0700C4B8, 2),
+ gsSPLight(&ttm_seg7_lights_0700C4B8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C4B8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C810, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -185,8 +173,8 @@ static const Gfx ttm_seg7_dl_0700CA78[] = {
gsSPVertex(ttm_seg7_vertex_0700C850, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 6, 4, 0x0),
- gsSPLight(&ttm_seg7_light_0700C490, 1),
- gsSPLight(&ttm_seg7_light_0700C488, 2),
+ gsSPLight(&ttm_seg7_lights_0700C488.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C488.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C8C0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/11/model.inc.c b/levels/ttm/areas/1/11/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700CB60 - 0x0700CB68
-static const Ambient ttm_seg7_light_0700CB60 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700CB68 - 0x0700CB78
-static const Light ttm_seg7_light_0700CB68 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CB60 - 0x0700CB78
+static const Lights1 ttm_seg7_lights_0700CB60 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700CB78 - 0x0700CB80
-static const Ambient ttm_seg7_light_0700CB78 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700CB80 - 0x0700CB90
-static const Light ttm_seg7_light_0700CB80 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CB78 - 0x0700CB90
+static const Lights1 ttm_seg7_lights_0700CB78 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700CB90 - 0x0700CBF0
static const Vtx ttm_seg7_vertex_0700CB90[] = {
@@ -48,12 +40,12 @@ static const Gfx ttm_seg7_dl_0700CC60[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700CB68, 1),
- gsSPLight(&ttm_seg7_light_0700CB60, 2),
+ gsSPLight(&ttm_seg7_lights_0700CB60.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CB60.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CB90, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700CB80, 1),
- gsSPLight(&ttm_seg7_light_0700CB78, 2),
+ gsSPLight(&ttm_seg7_lights_0700CB78.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CB78.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CBF0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
@@ -64,8 +56,8 @@ static const Gfx ttm_seg7_dl_0700CCC8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700CB68, 1),
- gsSPLight(&ttm_seg7_light_0700CB60, 2),
+ gsSPLight(&ttm_seg7_lights_0700CB60.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CB60.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CC20, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/12/model.inc.c b/levels/ttm/areas/1/12/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700CD88 - 0x0700CD90
-static const Ambient ttm_seg7_light_0700CD88 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x0700CD88 - 0x0700CDA0
+static const Lights1 ttm_seg7_lights_0700CD88 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700CD90 - 0x0700CDA0
-static const Light ttm_seg7_light_0700CD90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CDA0 - 0x0700CDB8
+static const Lights1 ttm_seg7_lights_0700CDA0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700CDA0 - 0x0700CDA8
-static const Ambient ttm_seg7_light_0700CDA0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700CDA8 - 0x0700CDB8
-static const Light ttm_seg7_light_0700CDA8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700CDB8 - 0x0700CDC0
-static const Ambient ttm_seg7_light_0700CDB8 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700CDC0 - 0x0700CDD0
-static const Light ttm_seg7_light_0700CDC0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700CDB8 - 0x0700CDD0
+static const Lights1 ttm_seg7_lights_0700CDB8 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700CDD0 - 0x0700CEC0
static const Vtx ttm_seg7_vertex_0700CDD0[] = {
@@ -97,19 +85,19 @@ static const Gfx ttm_seg7_dl_0700D090[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700CD90, 1),
- gsSPLight(&ttm_seg7_light_0700CD88, 2),
+ gsSPLight(&ttm_seg7_lights_0700CD88.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CD88.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CDD0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 9, 10, 7, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle( 0, 2, 14, 0x0),
- gsSPLight(&ttm_seg7_light_0700CDA8, 1),
- gsSPLight(&ttm_seg7_light_0700CDA0, 2),
+ gsSPLight(&ttm_seg7_lights_0700CDA0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CDA0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CEC0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0700CDC0, 1),
- gsSPLight(&ttm_seg7_light_0700CDB8, 2),
+ gsSPLight(&ttm_seg7_lights_0700CDB8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CDB8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700CF00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
@@ -124,8 +112,8 @@ static const Gfx ttm_seg7_dl_0700D180[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700CD90, 1),
- gsSPLight(&ttm_seg7_light_0700CD88, 2),
+ gsSPLight(&ttm_seg7_lights_0700CD88.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700CD88.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D030, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 2, 5, 0, 0x0),
diff --git a/levels/ttm/areas/1/13/model.inc.c b/levels/ttm/areas/1/13/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700D250 - 0x0700D258
-static const Ambient ttm_seg7_light_0700D250 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x0700D250 - 0x0700D268
+static const Lights1 ttm_seg7_lights_0700D250 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700D258 - 0x0700D268
-static const Light ttm_seg7_light_0700D258 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D268 - 0x0700D280
+static const Lights1 ttm_seg7_lights_0700D268 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700D268 - 0x0700D270
-static const Ambient ttm_seg7_light_0700D268 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700D270 - 0x0700D280
-static const Light ttm_seg7_light_0700D270 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D280 - 0x0700D288
-static const Ambient ttm_seg7_light_0700D280 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700D288 - 0x0700D298
-static const Light ttm_seg7_light_0700D288 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D280 - 0x0700D298
+static const Lights1 ttm_seg7_lights_0700D280 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700D298 - 0x0700D398
static const Vtx ttm_seg7_vertex_0700D298[] = {
@@ -96,8 +84,8 @@ static const Gfx ttm_seg7_dl_0700D548[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700D258, 1),
- gsSPLight(&ttm_seg7_light_0700D250, 2),
+ gsSPLight(&ttm_seg7_lights_0700D250.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D250.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D298, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -105,13 +93,13 @@ static const Gfx ttm_seg7_dl_0700D548[] = {
gsSPVertex(ttm_seg7_vertex_0700D398, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 3, 5, 9, 0x0),
- gsSPLight(&ttm_seg7_light_0700D270, 1),
- gsSPLight(&ttm_seg7_light_0700D268, 2),
+ gsSPLight(&ttm_seg7_lights_0700D268.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D268.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D438, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 0, 2, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700D288, 1),
- gsSPLight(&ttm_seg7_light_0700D280, 2),
+ gsSPLight(&ttm_seg7_lights_0700D280.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D280.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D498, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 2, 6, 0x0),
@@ -123,8 +111,8 @@ static const Gfx ttm_seg7_dl_0700D640[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700D258, 1),
- gsSPLight(&ttm_seg7_light_0700D250, 2),
+ gsSPLight(&ttm_seg7_lights_0700D250.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D250.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D508, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/14/model.inc.c b/levels/ttm/areas/1/14/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700D700 - 0x0700D708
-static const Ambient ttm_seg7_light_0700D700 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700D708 - 0x0700D718
-static const Light ttm_seg7_light_0700D708 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D718 - 0x0700D720
-static const Ambient ttm_seg7_light_0700D718 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700D720 - 0x0700D730
-static const Light ttm_seg7_light_0700D720 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700D730 - 0x0700D738
-static const Ambient ttm_seg7_light_0700D730 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700D738 - 0x0700D748
-static const Light ttm_seg7_light_0700D738 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D700 - 0x0700D718
+static const Lights1 ttm_seg7_lights_0700D700 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700D718 - 0x0700D730
+static const Lights1 ttm_seg7_lights_0700D718 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0700D730 - 0x0700D748
+static const Lights1 ttm_seg7_lights_0700D730 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700D748 - 0x0700D848
static const Vtx ttm_seg7_vertex_0700D748[] = {
@@ -172,8 +160,8 @@ static const Gfx ttm_seg7_dl_0700DDB8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700D708, 1),
- gsSPLight(&ttm_seg7_light_0700D700, 2),
+ gsSPLight(&ttm_seg7_lights_0700D700.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D700.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D748, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 0, 6, 1, 0x0, 7, 8, 9, 0x0),
@@ -185,8 +173,8 @@ static const Gfx ttm_seg7_dl_0700DDB8[] = {
gsSPVertex(ttm_seg7_vertex_0700D938, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&ttm_seg7_light_0700D720, 1),
- gsSPLight(&ttm_seg7_light_0700D718, 2),
+ gsSPLight(&ttm_seg7_lights_0700D718.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D718.a, 2),
gsSPVertex(ttm_seg7_vertex_0700D9F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -201,12 +189,12 @@ static const Gfx ttm_seg7_dl_0700DDB8[] = {
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(ttm_seg7_vertex_0700DCC8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700D738, 1),
- gsSPLight(&ttm_seg7_light_0700D730, 2),
+ gsSPLight(&ttm_seg7_lights_0700D730.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D730.a, 2),
gsSPVertex(ttm_seg7_vertex_0700DD28, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700D708, 1),
- gsSPLight(&ttm_seg7_light_0700D700, 2),
+ gsSPLight(&ttm_seg7_lights_0700D700.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700D700.a, 2),
gsSPVertex(ttm_seg7_vertex_0700DD88, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/15/model.inc.c b/levels/ttm/areas/1/15/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700DFE8 - 0x0700DFF0
-static const Ambient ttm_seg7_light_0700DFE8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700DFF0 - 0x0700E000
-static const Light ttm_seg7_light_0700DFF0 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700DFE8 - 0x0700E000
+static const Lights1 ttm_seg7_lights_0700DFE8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700E000 - 0x0700E100
static const Vtx ttm_seg7_vertex_0700E000[] = {
@@ -61,8 +57,8 @@ static const Gfx ttm_seg7_dl_0700E240[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700DFF0, 1),
- gsSPLight(&ttm_seg7_light_0700DFE8, 2),
+ gsSPLight(&ttm_seg7_lights_0700DFE8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700DFE8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700E000, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttm/areas/1/16/1.inc.c b/levels/ttm/areas/1/16/1.inc.c
@@ -1,32 +1,20 @@
-// 0x0700E378 - 0x0700E380
-static const Ambient ttm_seg7_light_0700E378 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700E380 - 0x0700E390
-static const Light ttm_seg7_light_0700E380 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700E390 - 0x0700E398
-static const Ambient ttm_seg7_light_0700E390 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700E398 - 0x0700E3A8
-static const Light ttm_seg7_light_0700E398 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700E3A8 - 0x0700E3B0
-static const Ambient ttm_seg7_light_0700E3A8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0700E3B0 - 0x0700E3C0
-static const Light ttm_seg7_light_0700E3B0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E378 - 0x0700E390
+static const Lights1 ttm_seg7_lights_0700E378 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700E390 - 0x0700E3A8
+static const Lights1 ttm_seg7_lights_0700E390 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x0700E3A8 - 0x0700E3C0
+static const Lights1 ttm_seg7_lights_0700E3A8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0700E3C0 - 0x0700E4B0
static const Vtx ttm_seg7_vertex_0700E3C0[] = {
@@ -150,8 +138,8 @@ static const Gfx ttm_seg7_dl_0700E910[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700E380, 1),
- gsSPLight(&ttm_seg7_light_0700E378, 2),
+ gsSPLight(&ttm_seg7_lights_0700E378.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700E378.a, 2),
gsSPVertex(ttm_seg7_vertex_0700E3C0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -164,12 +152,12 @@ static const Gfx ttm_seg7_dl_0700E910[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(12, 13, 14, 0x0),
- gsSPLight(&ttm_seg7_light_0700E398, 1),
- gsSPLight(&ttm_seg7_light_0700E390, 2),
+ gsSPLight(&ttm_seg7_lights_0700E390.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700E390.a, 2),
gsSPVertex(ttm_seg7_vertex_0700E680, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0700E380, 1),
- gsSPLight(&ttm_seg7_light_0700E378, 2),
+ gsSPLight(&ttm_seg7_lights_0700E378.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700E378.a, 2),
gsSPVertex(ttm_seg7_vertex_0700E6E0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -187,8 +175,8 @@ static const Gfx ttm_seg7_dl_0700EA28[] = {
gsSPVertex(ttm_seg7_vertex_0700E820, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
- gsSPLight(&ttm_seg7_light_0700E3B0, 1),
- gsSPLight(&ttm_seg7_light_0700E3A8, 2),
+ gsSPLight(&ttm_seg7_lights_0700E3A8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700E3A8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700E8B0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/17/2.inc.c b/levels/ttm/areas/1/17/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F300 - 0x0700F308
-static const Ambient ttm_seg7_light_0700F300 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700F308 - 0x0700F318
-static const Light ttm_seg7_light_0700F308 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F300 - 0x0700F318
+static const Lights1 ttm_seg7_lights_0700F300 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F318 - 0x0700F418
static const Vtx ttm_seg7_vertex_0700F318[] = {
@@ -121,8 +117,8 @@ static const Gfx ttm_seg7_dl_0700F858[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700F308, 1),
- gsSPLight(&ttm_seg7_light_0700F300, 2),
+ gsSPLight(&ttm_seg7_lights_0700F300.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700F300.a, 2),
gsSPVertex(ttm_seg7_vertex_0700F318, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttm/areas/1/18/1.inc.c b/levels/ttm/areas/1/18/1.inc.c
@@ -1,32 +1,20 @@
-// 0x0700FA90 - 0x0700FA98
-static const Ambient ttm_seg7_light_0700FA90 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x0700FA90 - 0x0700FAA8
+static const Lights1 ttm_seg7_lights_0700FA90 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700FA98 - 0x0700FAA8
-static const Light ttm_seg7_light_0700FA98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FAA8 - 0x0700FAC0
+static const Lights1 ttm_seg7_lights_0700FAA8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700FAA8 - 0x0700FAB0
-static const Ambient ttm_seg7_light_0700FAA8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700FAB0 - 0x0700FAC0
-static const Light ttm_seg7_light_0700FAB0 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700FAC0 - 0x0700FAC8
-static const Ambient ttm_seg7_light_0700FAC0 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700FAC8 - 0x0700FAD8
-static const Light ttm_seg7_light_0700FAC8 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700FAC0 - 0x0700FAD8
+static const Lights1 ttm_seg7_lights_0700FAC0 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700FAD8 - 0x0700FBB8
static const Vtx ttm_seg7_vertex_0700FAD8[] = {
@@ -271,8 +259,8 @@ static const Gfx ttm_seg7_dl_07010638[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700FA98, 1),
- gsSPLight(&ttm_seg7_light_0700FA90, 2),
+ gsSPLight(&ttm_seg7_lights_0700FA90.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FA90.a, 2),
gsSPVertex(ttm_seg7_vertex_0700FAD8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -284,8 +272,8 @@ static const Gfx ttm_seg7_dl_07010638[] = {
gsSPVertex(ttm_seg7_vertex_0700FCB8, 9, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 6, 7, 8, 0x0),
- gsSPLight(&ttm_seg7_light_0700FAB0, 1),
- gsSPLight(&ttm_seg7_light_0700FAA8, 2),
+ gsSPLight(&ttm_seg7_lights_0700FAA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FAA8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700FD48, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -297,8 +285,8 @@ static const Gfx ttm_seg7_dl_07010638[] = {
gsSPVertex(ttm_seg7_vertex_0700FF38, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&ttm_seg7_light_0700FAC8, 1),
- gsSPLight(&ttm_seg7_light_0700FAC0, 2),
+ gsSPLight(&ttm_seg7_lights_0700FAC0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FAC0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700FFF8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
@@ -318,8 +306,8 @@ static const Gfx ttm_seg7_dl_07010830[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700FA98, 1),
- gsSPLight(&ttm_seg7_light_0700FA90, 2),
+ gsSPLight(&ttm_seg7_lights_0700FA90.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FA90.a, 2),
gsSPVertex(ttm_seg7_vertex_07010278, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 5, 6, 7, 0x0),
@@ -332,13 +320,13 @@ static const Gfx ttm_seg7_dl_07010830[] = {
gsSP1Triangle(14, 0, 2, 0x0),
gsSPVertex(ttm_seg7_vertex_07010468, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_0700FAB0, 1),
- gsSPLight(&ttm_seg7_light_0700FAA8, 2),
+ gsSPLight(&ttm_seg7_lights_0700FAA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FAA8.a, 2),
gsSPVertex(ttm_seg7_vertex_070104A8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
- gsSPLight(&ttm_seg7_light_0700FAC8, 1),
- gsSPLight(&ttm_seg7_light_0700FAC0, 2),
+ gsSPLight(&ttm_seg7_lights_0700FAC0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700FAC0.a, 2),
gsSPVertex(ttm_seg7_vertex_07010568, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/ttm/areas/1/19/model.inc.c b/levels/ttm/areas/1/19/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07010AD8 - 0x07010AE0
-static const Ambient ttm_seg7_light_07010AD8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x07010AE0 - 0x07010AF0
-static const Light ttm_seg7_light_07010AE0 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07010AF0 - 0x07010AF8
-static const Ambient ttm_seg7_light_07010AF0 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x07010AF8 - 0x07010B08
-static const Light ttm_seg7_light_07010AF8 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07010B08 - 0x07010B10
-static const Ambient ttm_seg7_light_07010B08 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07010B10 - 0x07010B20
-static const Light ttm_seg7_light_07010B10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07010AD8 - 0x07010AF0
+static const Lights1 ttm_seg7_lights_07010AD8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07010AF0 - 0x07010B08
+static const Lights1 ttm_seg7_lights_07010AF0 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07010B08 - 0x07010B20
+static const Lights1 ttm_seg7_lights_07010B08 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07010B20 - 0x07010C10
static const Vtx ttm_seg7_vertex_07010B20[] = {
@@ -136,24 +124,24 @@ static const Gfx ttm_seg7_dl_07010F90[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07010AE0, 1),
- gsSPLight(&ttm_seg7_light_07010AD8, 2),
+ gsSPLight(&ttm_seg7_lights_07010AD8.l, 1),
+ gsSPLight(&ttm_seg7_lights_07010AD8.a, 2),
gsSPVertex(ttm_seg7_vertex_07010B20, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(ttm_seg7_vertex_07010C10, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ttm_seg7_light_07010AF8, 1),
- gsSPLight(&ttm_seg7_light_07010AF0, 2),
+ gsSPLight(&ttm_seg7_lights_07010AF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_07010AF0.a, 2),
gsSPVertex(ttm_seg7_vertex_07010C40, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle(12, 13, 14, 0x0),
gsSPVertex(ttm_seg7_vertex_07010D30, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&ttm_seg7_light_07010B10, 1),
- gsSPLight(&ttm_seg7_light_07010B08, 2),
+ gsSPLight(&ttm_seg7_lights_07010B08.l, 1),
+ gsSPLight(&ttm_seg7_lights_07010B08.a, 2),
gsSPVertex(ttm_seg7_vertex_07010D60, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -164,12 +152,12 @@ static const Gfx ttm_seg7_dl_07011078[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07010AE0, 1),
- gsSPLight(&ttm_seg7_light_07010AD8, 2),
+ gsSPLight(&ttm_seg7_lights_07010AD8.l, 1),
+ gsSPLight(&ttm_seg7_lights_07010AD8.a, 2),
gsSPVertex(ttm_seg7_vertex_07010DA0, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&ttm_seg7_light_07010B10, 1),
- gsSPLight(&ttm_seg7_light_07010B08, 2),
+ gsSPLight(&ttm_seg7_lights_07010B08.l, 1),
+ gsSPLight(&ttm_seg7_lights_07010B08.a, 2),
gsSPVertex(ttm_seg7_vertex_07010E00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/ttm/areas/1/2/model.inc.c b/levels/ttm/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A1B0 - 0x0700A1B8
-static const Ambient ttm_seg7_light_0700A1B0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A1B8 - 0x0700A1C8
-static const Light ttm_seg7_light_0700A1B8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A1B0 - 0x0700A1C8
+static const Lights1 ttm_seg7_lights_0700A1B0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A1C8 - 0x0700A268
static const Vtx ttm_seg7_vertex_0700A1C8[] = {
@@ -27,8 +23,8 @@ static const Gfx ttm_seg7_dl_0700A268[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700A1B8, 1),
- gsSPLight(&ttm_seg7_light_0700A1B0, 2),
+ gsSPLight(&ttm_seg7_lights_0700A1B0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700A1B0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700A1C8, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 5, 4, 0x0),
diff --git a/levels/ttm/areas/1/20/model.inc.c b/levels/ttm/areas/1/20/model.inc.c
@@ -1,32 +1,20 @@
-// 0x070111A0 - 0x070111A8
-static const Ambient ttm_seg7_light_070111A0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x070111A0 - 0x070111B8
+static const Lights1 ttm_seg7_lights_070111A0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x070111A8 - 0x070111B8
-static const Light ttm_seg7_light_070111A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070111B8 - 0x070111D0
+static const Lights1 ttm_seg7_lights_070111B8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x070111B8 - 0x070111C0
-static const Ambient ttm_seg7_light_070111B8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x070111C0 - 0x070111D0
-static const Light ttm_seg7_light_070111C0 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070111D0 - 0x070111D8
-static const Ambient ttm_seg7_light_070111D0 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x070111D8 - 0x070111E8
-static const Light ttm_seg7_light_070111D8 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070111D0 - 0x070111E8
+static const Lights1 ttm_seg7_lights_070111D0 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x070111E8 - 0x07011228
static const Vtx ttm_seg7_vertex_070111E8[] = {
@@ -98,23 +86,23 @@ static const Gfx ttm_seg7_dl_070114B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_070111A8, 1),
- gsSPLight(&ttm_seg7_light_070111A0, 2),
+ gsSPLight(&ttm_seg7_lights_070111A0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070111A0.a, 2),
gsSPVertex(ttm_seg7_vertex_070111E8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070111C0, 1),
- gsSPLight(&ttm_seg7_light_070111B8, 2),
+ gsSPLight(&ttm_seg7_lights_070111B8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070111B8.a, 2),
gsSPVertex(ttm_seg7_vertex_07011228, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
gsSP1Triangle( 0, 2, 12, 0x0),
- gsSPLight(&ttm_seg7_light_070111D8, 1),
- gsSPLight(&ttm_seg7_light_070111D0, 2),
+ gsSPLight(&ttm_seg7_lights_070111D0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070111D0.a, 2),
gsSPVertex(ttm_seg7_vertex_070112F8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_070111A8, 1),
- gsSPLight(&ttm_seg7_light_070111A0, 2),
+ gsSPLight(&ttm_seg7_lights_070111A0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070111A0.a, 2),
gsSPVertex(ttm_seg7_vertex_07011378, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/ttm/areas/1/21/1.inc.c b/levels/ttm/areas/1/21/1.inc.c
@@ -1,32 +1,20 @@
-// 0x07011680 - 0x07011688
-static const Ambient ttm_seg7_light_07011680 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07011688 - 0x07011698
-static const Light ttm_seg7_light_07011688 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07011698 - 0x070116A0
-static const Ambient ttm_seg7_light_07011698 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x070116A0 - 0x070116B0
-static const Light ttm_seg7_light_070116A0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070116B0 - 0x070116B8
-static const Ambient ttm_seg7_light_070116B0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x070116B8 - 0x070116C8
-static const Light ttm_seg7_light_070116B8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011680 - 0x07011698
+static const Lights1 ttm_seg7_lights_07011680 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07011698 - 0x070116B0
+static const Lights1 ttm_seg7_lights_07011698 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x070116B0 - 0x070116C8
+static const Lights1 ttm_seg7_lights_070116B0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x070116C8 - 0x070117C8
static const Vtx ttm_seg7_vertex_070116C8[] = {
@@ -123,8 +111,8 @@ static const Gfx ttm_seg7_dl_07011AA8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07011688, 1),
- gsSPLight(&ttm_seg7_light_07011680, 2),
+ gsSPLight(&ttm_seg7_lights_07011680.l, 1),
+ gsSPLight(&ttm_seg7_lights_07011680.a, 2),
gsSPVertex(ttm_seg7_vertex_070116C8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -140,8 +128,8 @@ static const Gfx ttm_seg7_dl_07011B20[] = {
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
gsSPVertex(ttm_seg7_vertex_070117C8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070116A0, 1),
- gsSPLight(&ttm_seg7_light_07011698, 2),
+ gsSPLight(&ttm_seg7_lights_07011698.l, 1),
+ gsSPLight(&ttm_seg7_lights_07011698.a, 2),
gsSPVertex(ttm_seg7_vertex_07011808, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -170,8 +158,8 @@ static const Gfx ttm_seg7_dl_07011C10[] = {
// 0x07011C48 - 0x07011C78
static const Gfx ttm_seg7_dl_07011C48[] = {
- gsSPLight(&ttm_seg7_light_070116B8, 1),
- gsSPLight(&ttm_seg7_light_070116B0, 2),
+ gsSPLight(&ttm_seg7_lights_070116B0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070116B0.a, 2),
gsSPVertex(ttm_seg7_vertex_07011A68, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/3/1.inc.c b/levels/ttm/areas/1/3/1.inc.c
@@ -1,22 +1,14 @@
-// 0x0700A340 - 0x0700A348
-static const Ambient ttm_seg7_light_0700A340 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A348 - 0x0700A358
-static const Light ttm_seg7_light_0700A348 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A340 - 0x0700A358
+static const Lights1 ttm_seg7_lights_0700A340 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700A358 - 0x0700A360
-static const Ambient ttm_seg7_light_0700A358 = {
- {{0x7f, 0x7f, 0x64}, 0, {0x7f, 0x7f, 0x64}, 0}
-};
-
-// 0x0700A360 - 0x0700A370
-static const Light ttm_seg7_light_0700A360 = {
- {{0xff, 0xff, 0xc9}, 0, {0xff, 0xff, 0xc9}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A358 - 0x0700A370
+static const Lights1 ttm_seg7_lights_0700A358 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x64,
+ 0xff, 0xff, 0xc9, 0x28, 0x28, 0x28
+);
// 0x0700A370 - 0x0700A460
static const Vtx ttm_seg7_vertex_0700A370[] = {
@@ -97,8 +89,8 @@ static const Gfx ttm_seg7_dl_0700A710[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700A348, 1),
- gsSPLight(&ttm_seg7_light_0700A340, 2),
+ gsSPLight(&ttm_seg7_lights_0700A340.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700A340.a, 2),
gsSPVertex(ttm_seg7_vertex_0700A370, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 5, 6, 7, 0x0),
@@ -125,8 +117,8 @@ static const Gfx ttm_seg7_dl_0700A848[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700A360, 1),
- gsSPLight(&ttm_seg7_light_0700A358, 2),
+ gsSPLight(&ttm_seg7_lights_0700A358.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700A358.a, 2),
gsSPVertex(ttm_seg7_vertex_0700A640, 13, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 5, 3, 0x0, 0, 6, 7, 0x0),
diff --git a/levels/ttm/areas/1/3/2.inc.c b/levels/ttm/areas/1/3/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A928 - 0x0700A930
-static const Ambient ttm_seg7_light_0700A928 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700A930 - 0x0700A940
-static const Light ttm_seg7_light_0700A930 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A928 - 0x0700A940
+static const Lights1 ttm_seg7_lights_0700A928 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A940 - 0x0700A9C0
static const Vtx ttm_seg7_vertex_0700A940[] = {
@@ -37,8 +33,8 @@ static const Gfx ttm_seg7_dl_0700AA40[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700A930, 1),
- gsSPLight(&ttm_seg7_light_0700A928, 2),
+ gsSPLight(&ttm_seg7_lights_0700A928.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700A928.a, 2),
gsSPVertex(ttm_seg7_vertex_0700A940, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 0, 3, 0x0, 2, 1, 5, 0x0),
diff --git a/levels/ttm/areas/1/4/1.inc.c b/levels/ttm/areas/1/4/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AB70 - 0x0700AB78
-static const Ambient ttm_seg7_light_0700AB70 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700AB78 - 0x0700AB88
-static const Light ttm_seg7_light_0700AB78 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AB70 - 0x0700AB88
+static const Lights1 ttm_seg7_lights_0700AB70 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700AB88 - 0x0700AC78
static const Vtx ttm_seg7_vertex_0700AB88[] = {
@@ -70,8 +66,8 @@ static const Gfx ttm_seg7_dl_0700AE58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700AB78, 1),
- gsSPLight(&ttm_seg7_light_0700AB70, 2),
+ gsSPLight(&ttm_seg7_lights_0700AB70.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700AB70.a, 2),
gsSPVertex(ttm_seg7_vertex_0700AB88, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 5, 6, 7, 0x0),
diff --git a/levels/ttm/areas/1/4/2.inc.c b/levels/ttm/areas/1/4/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AFF0 - 0x0700AFF8
-static const Ambient ttm_seg7_light_0700AFF0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700AFF8 - 0x0700B008
-static const Light ttm_seg7_light_0700AFF8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AFF0 - 0x0700B008
+static const Lights1 ttm_seg7_lights_0700AFF0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700B008 - 0x0700B068
static const Vtx ttm_seg7_vertex_0700B008[] = {
@@ -23,8 +19,8 @@ static const Gfx ttm_seg7_dl_0700B068[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700AFF8, 1),
- gsSPLight(&ttm_seg7_light_0700AFF0, 2),
+ gsSPLight(&ttm_seg7_lights_0700AFF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700AFF0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700B008, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 3, 4, 0, 0x0),
diff --git a/levels/ttm/areas/1/5/1.inc.c b/levels/ttm/areas/1/5/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B130 - 0x0700B138
-static const Ambient ttm_seg7_light_0700B130 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700B138 - 0x0700B148
-static const Light ttm_seg7_light_0700B138 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B130 - 0x0700B148
+static const Lights1 ttm_seg7_lights_0700B130 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700B148 - 0x0700B248
static const Vtx ttm_seg7_vertex_0700B148[] = {
@@ -68,8 +64,8 @@ static const Gfx ttm_seg7_dl_0700B3F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700B138, 1),
- gsSPLight(&ttm_seg7_light_0700B130, 2),
+ gsSPLight(&ttm_seg7_lights_0700B130.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700B130.a, 2),
gsSPVertex(ttm_seg7_vertex_0700B148, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/ttm/areas/1/5/2.inc.c b/levels/ttm/areas/1/5/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B590 - 0x0700B598
-static const Ambient ttm_seg7_light_0700B590 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700B598 - 0x0700B5A8
-static const Light ttm_seg7_light_0700B598 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B590 - 0x0700B5A8
+static const Lights1 ttm_seg7_lights_0700B590 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700B5A8 - 0x0700B608
static const Vtx ttm_seg7_vertex_0700B5A8[] = {
@@ -23,8 +19,8 @@ static const Gfx ttm_seg7_dl_0700B608[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700B598, 1),
- gsSPLight(&ttm_seg7_light_0700B590, 2),
+ gsSPLight(&ttm_seg7_lights_0700B590.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700B590.a, 2),
gsSPVertex(ttm_seg7_vertex_0700B5A8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 0, 5, 1, 0x0),
diff --git a/levels/ttm/areas/1/6/1.inc.c b/levels/ttm/areas/1/6/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B6D0 - 0x0700B6D8
-static const Ambient ttm_seg7_light_0700B6D0 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700B6D8 - 0x0700B6E8
-static const Light ttm_seg7_light_0700B6D8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B6D0 - 0x0700B6E8
+static const Lights1 ttm_seg7_lights_0700B6D0 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700B6E8 - 0x0700B7D8
static const Vtx ttm_seg7_vertex_0700B6E8[] = {
@@ -68,8 +64,8 @@ static const Gfx ttm_seg7_dl_0700B998[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700B6D8, 1),
- gsSPLight(&ttm_seg7_light_0700B6D0, 2),
+ gsSPLight(&ttm_seg7_lights_0700B6D0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700B6D0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700B6E8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 5, 6, 7, 0x0),
diff --git a/levels/ttm/areas/1/6/2.inc.c b/levels/ttm/areas/1/6/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BB30 - 0x0700BB38
-static const Ambient ttm_seg7_light_0700BB30 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700BB38 - 0x0700BB48
-static const Light ttm_seg7_light_0700BB38 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BB30 - 0x0700BB48
+static const Lights1 ttm_seg7_lights_0700BB30 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x0700BB48 - 0x0700BBA8
static const Vtx ttm_seg7_vertex_0700BB48[] = {
@@ -23,8 +19,8 @@ static const Gfx ttm_seg7_dl_0700BBA8[] = {
gsDPSetTextureImage(G_IM_FMT_IA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700BB38, 1),
- gsSPLight(&ttm_seg7_light_0700BB30, 2),
+ gsSPLight(&ttm_seg7_lights_0700BB30.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700BB30.a, 2),
gsSPVertex(ttm_seg7_vertex_0700BB48, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 2, 1, 4, 0x0, 1, 5, 4, 0x0),
diff --git a/levels/ttm/areas/1/7/model.inc.c b/levels/ttm/areas/1/7/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700BC70 - 0x0700BC78
-static const Ambient ttm_seg7_light_0700BC70 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x0700BC78 - 0x0700BC88
-static const Light ttm_seg7_light_0700BC78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BC70 - 0x0700BC88
+static const Lights1 ttm_seg7_lights_0700BC70 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700BC88 - 0x0700BC90
-static const Ambient ttm_seg7_light_0700BC88 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700BC90 - 0x0700BCA0
-static const Light ttm_seg7_light_0700BC90 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BC88 - 0x0700BCA0
+static const Lights1 ttm_seg7_lights_0700BC88 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700BCA0 - 0x0700BCE0
static const Vtx ttm_seg7_vertex_0700BCA0[] = {
@@ -47,12 +39,12 @@ static const Gfx ttm_seg7_dl_0700BDA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700BC78, 1),
- gsSPLight(&ttm_seg7_light_0700BC70, 2),
+ gsSPLight(&ttm_seg7_lights_0700BC70.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700BC70.a, 2),
gsSPVertex(ttm_seg7_vertex_0700BCA0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0700BC90, 1),
- gsSPLight(&ttm_seg7_light_0700BC88, 2),
+ gsSPLight(&ttm_seg7_lights_0700BC88.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700BC88.a, 2),
gsSPVertex(ttm_seg7_vertex_0700BCE0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/ttm/areas/1/8/model.inc.c b/levels/ttm/areas/1/8/model.inc.c
@@ -1,22 +1,14 @@
-// 0x0700BE90 - 0x0700BE98
-static const Ambient ttm_seg7_light_0700BE90 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700BE98 - 0x0700BEA8
-static const Light ttm_seg7_light_0700BE98 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BE90 - 0x0700BEA8
+static const Lights1 ttm_seg7_lights_0700BE90 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700BEA8 - 0x0700BEB0
-static const Ambient ttm_seg7_light_0700BEA8 = {
- {{0x5d, 0x5d, 0x5d}, 0, {0x5d, 0x5d, 0x5d}, 0}
-};
-
-// 0x0700BEB0 - 0x0700BEC0
-static const Light ttm_seg7_light_0700BEB0 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BEA8 - 0x0700BEC0
+static const Lights1 ttm_seg7_lights_0700BEA8 = gdSPDefLights1(
+ 0x5d, 0x5d, 0x5d,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
// 0x0700BEC0 - 0x0700BF40
static const Vtx ttm_seg7_vertex_0700BEC0[] = {
@@ -49,13 +41,13 @@ static const Gfx ttm_seg7_dl_0700BFE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700BE98, 1),
- gsSPLight(&ttm_seg7_light_0700BE90, 2),
+ gsSPLight(&ttm_seg7_lights_0700BE90.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700BE90.a, 2),
gsSPVertex(ttm_seg7_vertex_0700BEC0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 6, 7, 4, 0x0),
- gsSPLight(&ttm_seg7_light_0700BEB0, 1),
- gsSPLight(&ttm_seg7_light_0700BEA8, 2),
+ gsSPLight(&ttm_seg7_lights_0700BEA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700BEA8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700BF40, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttm/areas/1/9/model.inc.c b/levels/ttm/areas/1/9/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0700C0E0 - 0x0700C0E8
-static const Ambient ttm_seg7_light_0700C0E0 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
+// 0x0700C0E0 - 0x0700C0F8
+static const Lights1 ttm_seg7_lights_0700C0E0 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
-// 0x0700C0E8 - 0x0700C0F8
-static const Light ttm_seg7_light_0700C0E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C0F8 - 0x0700C110
+static const Lights1 ttm_seg7_lights_0700C0F8 = gdSPDefLights1(
+ 0x4c, 0x4c, 0x4c,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
-// 0x0700C0F8 - 0x0700C100
-static const Ambient ttm_seg7_light_0700C0F8 = {
- {{0x4c, 0x4c, 0x4c}, 0, {0x4c, 0x4c, 0x4c}, 0}
-};
-
-// 0x0700C100 - 0x0700C110
-static const Light ttm_seg7_light_0700C100 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700C110 - 0x0700C118
-static const Ambient ttm_seg7_light_0700C110 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0700C118 - 0x0700C128
-static const Light ttm_seg7_light_0700C118 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C110 - 0x0700C128
+static const Lights1 ttm_seg7_lights_0700C110 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0700C128 - 0x0700C228
static const Vtx ttm_seg7_vertex_0700C128[] = {
@@ -73,8 +61,8 @@ static const Gfx ttm_seg7_dl_0700C2E8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700C0E8, 1),
- gsSPLight(&ttm_seg7_light_0700C0E0, 2),
+ gsSPLight(&ttm_seg7_lights_0700C0E0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C0E0.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C128, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -88,8 +76,8 @@ static const Gfx ttm_seg7_dl_0700C360[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09003800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0700C100, 1),
- gsSPLight(&ttm_seg7_light_0700C0F8, 2),
+ gsSPLight(&ttm_seg7_lights_0700C0F8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C0F8.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C228, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 3, 1, 0x0, 4, 1, 5, 0x0),
@@ -100,8 +88,8 @@ static const Gfx ttm_seg7_dl_0700C360[] = {
// 0x0700C3D8 - 0x0700C408
static const Gfx ttm_seg7_dl_0700C3D8[] = {
- gsSPLight(&ttm_seg7_light_0700C118, 1),
- gsSPLight(&ttm_seg7_light_0700C110, 2),
+ gsSPLight(&ttm_seg7_lights_0700C110.l, 1),
+ gsSPLight(&ttm_seg7_lights_0700C110.a, 2),
gsSPVertex(ttm_seg7_vertex_0700C2A8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/ttm/areas/1/geo.inc.c b/levels/ttm/areas/1/geo.inc.c
@@ -33,7 +33,7 @@ const GeoLayout ttm_geo_000A70[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/ttm/areas/1/macro.inc.c b/levels/ttm/areas/1/macro.inc.c
@@ -2,8 +2,8 @@
const MacroObject ttm_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_bobomb_buddy_opens_cannon, /*yaw*/ 0, /*pos*/ 799, -2668, 3320),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 45, /*pos*/ 5035, -3994, -3445, /*behParam*/ 0xC0),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 3644, -1304, 1422, /*behParam*/ 72),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 622, -4331, 5466, /*behParam*/ 94),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 3644, -1304, 1422, /*behParam*/ DIALOG_072),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 622, -4331, 5466, /*behParam*/ DIALOG_094),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 1450, -2750, -4250),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 2550, -2750, -3400),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 4150, -2700, -2800),
@@ -11,7 +11,7 @@ const MacroObject ttm_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -1200, -1600, -3250),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -1850, 100, -2850),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -1500, -800, -2750),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -1126, -3448, -4400, /*behParam*/ 91),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ -1126, -3448, -4400, /*behParam*/ DIALOG_091),
MACRO_OBJECT(/*preset*/ macro_goomba_triplet_spawner, /*yaw*/ 0, /*pos*/ 1740, -4236, 5320),
MACRO_OBJECT(/*preset*/ macro_coin_ring_horizontal, /*yaw*/ 0, /*pos*/ 4540, -4607, 1060),
MACRO_OBJECT(/*preset*/ macro_1up, /*yaw*/ 0, /*pos*/ -3713, -4130, 3530),
diff --git a/levels/ttm/areas/1/painting.inc.c b/levels/ttm/areas/1/painting.inc.c
@@ -1,14 +1,10 @@
#include "game/paintings.h"
-// 0x070122F0 - 0x070122F8
-static const Ambient ttm_seg7_light_070122F0 = {
- {{0x50, 0x50, 0x50}, 0, {0x50, 0x50, 0x50}, 0}
-};
-
-// 0x070122F8 - 0x07012308
-static const Light ttm_seg7_light_070122F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x32, 0x32, 0x32}, 0}
-};
+// 0x070122F0 - 0x07012308
+static const Lights1 ttm_seg7_lights_070122F0 = gdSPDefLights1(
+ 0x50, 0x50, 0x50,
+ 0xff, 0xff, 0xff, 0x32, 0x32, 0x32
+);
// 0x07012308 - 0x07012388
static const Vtx ttm_seg7_vertex_07012308[] = {
@@ -39,8 +35,8 @@ const Gfx ttm_seg7_dl_070123B8[] = {
gsDPPipeSync(),
gsSPSetGeometryMode(G_LIGHTING | G_SHADING_SMOOTH),
gsDPSetCombineMode(G_CC_MODULATERGB, G_CC_MODULATERGB),
- gsSPLight(&ttm_seg7_light_070122F8, 1),
- gsSPLight(&ttm_seg7_light_070122F0, 2),
+ gsSPLight(&ttm_seg7_lights_070122F0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070122F0.a, 2),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPTileSync(),
gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD),
diff --git a/levels/ttm/areas/2/1/model.inc.c b/levels/ttm/areas/2/1/model.inc.c
@@ -1,132 +1,80 @@
-// 0x070172D8 - 0x070172E0
-static const Ambient ttm_seg7_light_070172D8 = {
- {{0x08, 0x08, 0x08}, 0, {0x08, 0x08, 0x08}, 0}
-};
-
-// 0x070172E0 - 0x070172F0
-static const Light ttm_seg7_light_070172E0 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070172F0 - 0x070172F8
-static const Ambient ttm_seg7_light_070172F0 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x070172F8 - 0x07017308
-static const Light ttm_seg7_light_070172F8 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017308 - 0x07017310
-static const Ambient ttm_seg7_light_07017308 = {
- {{0x11, 0x11, 0x11}, 0, {0x11, 0x11, 0x11}, 0}
-};
-
-// 0x07017310 - 0x07017320
-static const Light ttm_seg7_light_07017310 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017320 - 0x07017328
-static const Ambient ttm_seg7_light_07017320 = {
- {{0x15, 0x15, 0x15}, 0, {0x15, 0x15, 0x15}, 0}
-};
-
-// 0x07017328 - 0x07017338
-static const Light ttm_seg7_light_07017328 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017338 - 0x07017340
-static const Ambient ttm_seg7_light_07017338 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x07017340 - 0x07017350
-static const Light ttm_seg7_light_07017340 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017350 - 0x07017358
-static const Ambient ttm_seg7_light_07017350 = {
- {{0x1d, 0x1d, 0x1d}, 0, {0x1d, 0x1d, 0x1d}, 0}
-};
-
-// 0x07017358 - 0x07017368
-static const Light ttm_seg7_light_07017358 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017368 - 0x07017370
-static const Ambient ttm_seg7_light_07017368 = {
- {{0x2a, 0x2a, 0x2a}, 0, {0x2a, 0x2a, 0x2a}, 0}
-};
-
-// 0x07017370 - 0x07017380
-static const Light ttm_seg7_light_07017370 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017380 - 0x07017388
-static const Ambient ttm_seg7_light_07017380 = {
- {{0x2e, 0x2e, 0x2e}, 0, {0x2e, 0x2e, 0x2e}, 0}
-};
-
-// 0x07017388 - 0x07017398
-static const Light ttm_seg7_light_07017388 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07017398 - 0x070173A0
-static const Ambient ttm_seg7_light_07017398 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x070173A0 - 0x070173B0
-static const Light ttm_seg7_light_070173A0 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070173B0 - 0x070173B8
-static const Ambient ttm_seg7_light_070173B0 = {
- {{0x37, 0x37, 0x37}, 0, {0x37, 0x37, 0x37}, 0}
-};
-
-// 0x070173B8 - 0x070173C8
-static const Light ttm_seg7_light_070173B8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070173C8 - 0x070173D0
-static const Ambient ttm_seg7_light_070173C8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070173D0 - 0x070173E0
-static const Light ttm_seg7_light_070173D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070173E0 - 0x070173E8
-static const Ambient ttm_seg7_light_070173E0 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x070173E8 - 0x070173F8
-static const Light ttm_seg7_light_070173E8 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070173F8 - 0x07017400
-static const Ambient ttm_seg7_light_070173F8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07017400 - 0x07017410
-static const Light ttm_seg7_light_07017400 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070172D8 - 0x070172F0
+static const Lights1 ttm_seg7_lights_070172D8 = gdSPDefLights1(
+ 0x08, 0x08, 0x08,
+ 0x22, 0x22, 0x22, 0x28, 0x28, 0x28
+);
+
+// 0x070172F0 - 0x07017308
+static const Lights1 ttm_seg7_lights_070172F0 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x33, 0x33, 0x33, 0x28, 0x28, 0x28
+);
+
+// 0x07017308 - 0x07017320
+static const Lights1 ttm_seg7_lights_07017308 = gdSPDefLights1(
+ 0x11, 0x11, 0x11,
+ 0x44, 0x44, 0x44, 0x28, 0x28, 0x28
+);
+
+// 0x07017320 - 0x07017338
+static const Lights1 ttm_seg7_lights_07017320 = gdSPDefLights1(
+ 0x15, 0x15, 0x15,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x07017338 - 0x07017350
+static const Lights1 ttm_seg7_lights_07017338 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07017350 - 0x07017368
+static const Lights1 ttm_seg7_lights_07017350 = gdSPDefLights1(
+ 0x1d, 0x1d, 0x1d,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x07017368 - 0x07017380
+static const Lights1 ttm_seg7_lights_07017368 = gdSPDefLights1(
+ 0x2a, 0x2a, 0x2a,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x07017380 - 0x07017398
+static const Lights1 ttm_seg7_lights_07017380 = gdSPDefLights1(
+ 0x2e, 0x2e, 0x2e,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07017398 - 0x070173B0
+static const Lights1 ttm_seg7_lights_07017398 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x070173B0 - 0x070173C8
+static const Lights1 ttm_seg7_lights_070173B0 = gdSPDefLights1(
+ 0x37, 0x37, 0x37,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x070173C8 - 0x070173E0
+static const Lights1 ttm_seg7_lights_070173C8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x070173E0 - 0x070173F8
+static const Lights1 ttm_seg7_lights_070173E0 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x070173F8 - 0x07017410
+static const Lights1 ttm_seg7_lights_070173F8 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07017410 - 0x07017450
static const Vtx ttm_seg7_vertex_07017410[] = {
@@ -1686,27 +1634,27 @@ static const Gfx ttm_seg7_dl_0701BEE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_070172E0, 1),
- gsSPLight(&ttm_seg7_light_070172D8, 2),
+ gsSPLight(&ttm_seg7_lights_070172D8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070172D8.a, 2),
gsSPVertex(ttm_seg7_vertex_07017410, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ttm_seg7_light_070172F8, 1),
- gsSPLight(&ttm_seg7_light_070172F0, 2),
+ gsSPLight(&ttm_seg7_lights_070172F0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070172F0.a, 2),
gsSPVertex(ttm_seg7_vertex_07017450, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttm_seg7_light_07017310, 1),
- gsSPLight(&ttm_seg7_light_07017308, 2),
+ gsSPLight(&ttm_seg7_lights_07017308.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017308.a, 2),
gsSPVertex(ttm_seg7_vertex_070174D0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_07017328, 1),
- gsSPLight(&ttm_seg7_light_07017320, 2),
+ gsSPLight(&ttm_seg7_lights_07017320.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017320.a, 2),
gsSPVertex(ttm_seg7_vertex_07017550, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_07017340, 1),
- gsSPLight(&ttm_seg7_light_07017338, 2),
+ gsSPLight(&ttm_seg7_lights_07017338.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017338.a, 2),
gsSPVertex(ttm_seg7_vertex_070175D0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1718,12 +1666,12 @@ static const Gfx ttm_seg7_dl_0701C008[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07017358, 1),
- gsSPLight(&ttm_seg7_light_07017350, 2),
+ gsSPLight(&ttm_seg7_lights_07017350.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017350.a, 2),
gsSPVertex(ttm_seg7_vertex_07017650, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ttm_seg7_light_07017370, 1),
- gsSPLight(&ttm_seg7_light_07017368, 2),
+ gsSPLight(&ttm_seg7_lights_07017368.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017368.a, 2),
gsSPVertex(ttm_seg7_vertex_07017690, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
@@ -1736,8 +1684,8 @@ static const Gfx ttm_seg7_dl_0701C008[] = {
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
gsSP2Triangles(12, 9, 11, 0x0, 1, 13, 2, 0x0),
gsSP1Triangle(13, 14, 2, 0x0),
- gsSPLight(&ttm_seg7_light_07017388, 1),
- gsSPLight(&ttm_seg7_light_07017380, 2),
+ gsSPLight(&ttm_seg7_lights_07017380.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017380.a, 2),
gsSPVertex(ttm_seg7_vertex_07017870, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
@@ -1752,8 +1700,8 @@ static const Gfx ttm_seg7_dl_0701C008[] = {
gsSPVertex(ttm_seg7_vertex_07017A60, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 2, 4, 0x0),
gsSP1Triangle( 5, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_070173A0, 1),
- gsSPLight(&ttm_seg7_light_07017398, 2),
+ gsSPLight(&ttm_seg7_lights_07017398.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017398.a, 2),
gsSPVertex(ttm_seg7_vertex_07017AE0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 4, 7, 8, 0x0),
@@ -1769,8 +1717,8 @@ static const Gfx ttm_seg7_dl_0701C008[] = {
gsSPVertex(ttm_seg7_vertex_07017CC0, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
- gsSPLight(&ttm_seg7_light_070173B8, 1),
- gsSPLight(&ttm_seg7_light_070173B0, 2),
+ gsSPLight(&ttm_seg7_lights_070173B0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173B0.a, 2),
gsSPVertex(ttm_seg7_vertex_07017D60, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
@@ -1786,8 +1734,8 @@ static const Gfx ttm_seg7_dl_0701C008[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
gsSP1Triangle( 6, 8, 7, 0x0),
- gsSPLight(&ttm_seg7_light_070173D0, 1),
- gsSPLight(&ttm_seg7_light_070173C8, 2),
+ gsSPLight(&ttm_seg7_lights_070173C8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173C8.a, 2),
gsSPVertex(ttm_seg7_vertex_07017FC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1851,12 +1799,12 @@ static const Gfx ttm_seg7_dl_0701C688[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_070173A0, 1),
- gsSPLight(&ttm_seg7_light_07017398, 2),
+ gsSPLight(&ttm_seg7_lights_07017398.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017398.a, 2),
gsSPVertex(ttm_seg7_vertex_070187F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ttm_seg7_light_070173D0, 1),
- gsSPLight(&ttm_seg7_light_070173C8, 2),
+ gsSPLight(&ttm_seg7_lights_070173C8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173C8.a, 2),
gsSPVertex(ttm_seg7_vertex_07018830, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
@@ -1867,15 +1815,15 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07017310, 1),
- gsSPLight(&ttm_seg7_light_07017308, 2),
+ gsSPLight(&ttm_seg7_lights_07017308.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017308.a, 2),
gsSPVertex(ttm_seg7_vertex_07018870, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07017328, 1),
- gsSPLight(&ttm_seg7_light_07017320, 2),
+ gsSPLight(&ttm_seg7_lights_07017320.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017320.a, 2),
gsSPVertex(ttm_seg7_vertex_07018970, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1885,8 +1833,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07017340, 1),
- gsSPLight(&ttm_seg7_light_07017338, 2),
+ gsSPLight(&ttm_seg7_lights_07017338.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017338.a, 2),
gsSPVertex(ttm_seg7_vertex_07018B10, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1899,8 +1847,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSP1Triangle( 0, 2, 14, 0x0),
gsSPVertex(ttm_seg7_vertex_07018CF0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07017358, 1),
- gsSPLight(&ttm_seg7_light_07017350, 2),
+ gsSPLight(&ttm_seg7_lights_07017350.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017350.a, 2),
gsSPVertex(ttm_seg7_vertex_07018D30, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1910,8 +1858,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070173E8, 1),
- gsSPLight(&ttm_seg7_light_070173E0, 2),
+ gsSPLight(&ttm_seg7_lights_070173E0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173E0.a, 2),
gsSPVertex(ttm_seg7_vertex_07018ED0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2017,12 +1965,12 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSPVertex(ttm_seg7_vertex_0701A270, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_07017370, 1),
- gsSPLight(&ttm_seg7_light_07017368, 2),
+ gsSPLight(&ttm_seg7_lights_07017368.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017368.a, 2),
gsSPVertex(ttm_seg7_vertex_0701A2F0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&ttm_seg7_light_07017388, 1),
- gsSPLight(&ttm_seg7_light_07017380, 2),
+ gsSPLight(&ttm_seg7_lights_07017380.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017380.a, 2),
gsSPVertex(ttm_seg7_vertex_0701A330, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 2, 4, 3, 0x0, 4, 5, 3, 0x0),
@@ -2062,8 +2010,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&ttm_seg7_light_070173A0, 1),
- gsSPLight(&ttm_seg7_light_07017398, 2),
+ gsSPLight(&ttm_seg7_lights_07017398.l, 1),
+ gsSPLight(&ttm_seg7_lights_07017398.a, 2),
gsSPVertex(ttm_seg7_vertex_0701AA70, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 1, 4, 5, 0x0, 1, 5, 6, 0x0),
@@ -2073,8 +2021,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
gsSPVertex(ttm_seg7_vertex_0701AB50, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_070173D0, 1),
- gsSPLight(&ttm_seg7_light_070173C8, 2),
+ gsSPLight(&ttm_seg7_lights_070173C8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173C8.a, 2),
gsSPVertex(ttm_seg7_vertex_0701ABD0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2186,8 +2134,8 @@ static const Gfx ttm_seg7_dl_0701C6F8[] = {
// 0x0701D708 - 0x0701D798
static const Gfx ttm_seg7_dl_0701D708[] = {
- gsSPLight(&ttm_seg7_light_07017400, 1),
- gsSPLight(&ttm_seg7_light_070173F8, 2),
+ gsSPLight(&ttm_seg7_lights_070173F8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070173F8.a, 2),
gsSPVertex(ttm_seg7_vertex_0701BE00, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 3, 0, 0x0, 4, 0, 5, 0x0),
diff --git a/levels/ttm/areas/2/2/model.inc.c b/levels/ttm/areas/2/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0701D888 - 0x0701D890
-static const Ambient ttm_seg7_light_0701D888 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701D890 - 0x0701D8A0
-static const Light ttm_seg7_light_0701D890 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701D888 - 0x0701D8A0
+static const Lights1 ttm_seg7_lights_0701D888 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0701D8A0 - 0x0701D9A0
static const Vtx ttm_seg7_vertex_0701D8A0[] = {
@@ -61,8 +57,8 @@ static const Gfx ttm_seg7_dl_0701DAE0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0701D890, 1),
- gsSPLight(&ttm_seg7_light_0701D888, 2),
+ gsSPLight(&ttm_seg7_lights_0701D888.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701D888.a, 2),
gsSPVertex(ttm_seg7_vertex_0701D8A0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 0, 2, 5, 0x0),
diff --git a/levels/ttm/areas/3/1/model.inc.c b/levels/ttm/areas/3/1/model.inc.c
@@ -1,152 +1,92 @@
-// 0x0701DC60 - 0x0701DC68
-static const Ambient ttm_seg7_light_0701DC60 = {
- {{0x08, 0x08, 0x08}, 0, {0x08, 0x08, 0x08}, 0}
-};
-
-// 0x0701DC68 - 0x0701DC78
-static const Light ttm_seg7_light_0701DC68 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DC78 - 0x0701DC80
-static const Ambient ttm_seg7_light_0701DC78 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
-
-// 0x0701DC80 - 0x0701DC90
-static const Light ttm_seg7_light_0701DC80 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DC90 - 0x0701DC98
-static const Ambient ttm_seg7_light_0701DC90 = {
- {{0x11, 0x11, 0x11}, 0, {0x11, 0x11, 0x11}, 0}
-};
-
-// 0x0701DC98 - 0x0701DCA8
-static const Light ttm_seg7_light_0701DC98 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DCA8 - 0x0701DCB0
-static const Ambient ttm_seg7_light_0701DCA8 = {
- {{0x15, 0x15, 0x15}, 0, {0x15, 0x15, 0x15}, 0}
-};
-
-// 0x0701DCB0 - 0x0701DCC0
-static const Light ttm_seg7_light_0701DCB0 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DCC0 - 0x0701DCC8
-static const Ambient ttm_seg7_light_0701DCC0 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x0701DCC8 - 0x0701DCD8
-static const Light ttm_seg7_light_0701DCC8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DCD8 - 0x0701DCE0
-static const Ambient ttm_seg7_light_0701DCD8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0701DCE0 - 0x0701DCF0
-static const Light ttm_seg7_light_0701DCE0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DCF0 - 0x0701DCF8
-static const Ambient ttm_seg7_light_0701DCF0 = {
- {{0x1d, 0x1d, 0x1d}, 0, {0x1d, 0x1d, 0x1d}, 0}
-};
-
-// 0x0701DCF8 - 0x0701DD08
-static const Light ttm_seg7_light_0701DCF8 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD08 - 0x0701DD10
-static const Ambient ttm_seg7_light_0701DD08 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x0701DD10 - 0x0701DD20
-static const Light ttm_seg7_light_0701DD10 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD20 - 0x0701DD28
-static const Ambient ttm_seg7_light_0701DD20 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x0701DD28 - 0x0701DD38
-static const Light ttm_seg7_light_0701DD28 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD38 - 0x0701DD40
-static const Ambient ttm_seg7_light_0701DD38 = {
- {{0x2a, 0x2a, 0x2a}, 0, {0x2a, 0x2a, 0x2a}, 0}
-};
-
-// 0x0701DD40 - 0x0701DD50
-static const Light ttm_seg7_light_0701DD40 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD50 - 0x0701DD58
-static const Ambient ttm_seg7_light_0701DD50 = {
- {{0x2e, 0x2e, 0x2e}, 0, {0x2e, 0x2e, 0x2e}, 0}
-};
-
-// 0x0701DD58 - 0x0701DD68
-static const Light ttm_seg7_light_0701DD58 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD68 - 0x0701DD70
-static const Ambient ttm_seg7_light_0701DD68 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x0701DD70 - 0x0701DD80
-static const Light ttm_seg7_light_0701DD70 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD80 - 0x0701DD88
-static const Ambient ttm_seg7_light_0701DD80 = {
- {{0x37, 0x37, 0x37}, 0, {0x37, 0x37, 0x37}, 0}
-};
-
-// 0x0701DD88 - 0x0701DD98
-static const Light ttm_seg7_light_0701DD88 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DD98 - 0x0701DDA0
-static const Ambient ttm_seg7_light_0701DD98 = {
- {{0x3b, 0x3b, 0x3b}, 0, {0x3b, 0x3b, 0x3b}, 0}
-};
-
-// 0x0701DDA0 - 0x0701DDB0
-static const Light ttm_seg7_light_0701DDA0 = {
- {{0xee, 0xee, 0xee}, 0, {0xee, 0xee, 0xee}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0701DDB0 - 0x0701DDB8
-static const Ambient ttm_seg7_light_0701DDB0 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x0701DDB8 - 0x0701DDC8
-static const Light ttm_seg7_light_0701DDB8 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0701DC60 - 0x0701DC78
+static const Lights1 ttm_seg7_lights_0701DC60 = gdSPDefLights1(
+ 0x08, 0x08, 0x08,
+ 0x22, 0x22, 0x22, 0x28, 0x28, 0x28
+);
+
+// 0x0701DC78 - 0x0701DC90
+static const Lights1 ttm_seg7_lights_0701DC78 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x33, 0x33, 0x33, 0x28, 0x28, 0x28
+);
+
+// 0x0701DC90 - 0x0701DCA8
+static const Lights1 ttm_seg7_lights_0701DC90 = gdSPDefLights1(
+ 0x11, 0x11, 0x11,
+ 0x44, 0x44, 0x44, 0x28, 0x28, 0x28
+);
+
+// 0x0701DCA8 - 0x0701DCC0
+static const Lights1 ttm_seg7_lights_0701DCA8 = gdSPDefLights1(
+ 0x15, 0x15, 0x15,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x0701DCC0 - 0x0701DCD8
+static const Lights1 ttm_seg7_lights_0701DCC0 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x0701DCD8 - 0x0701DCF0
+static const Lights1 ttm_seg7_lights_0701DCD8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0701DCF0 - 0x0701DD08
+static const Lights1 ttm_seg7_lights_0701DCF0 = gdSPDefLights1(
+ 0x1d, 0x1d, 0x1d,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD08 - 0x0701DD20
+static const Lights1 ttm_seg7_lights_0701DD08 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD20 - 0x0701DD38
+static const Lights1 ttm_seg7_lights_0701DD20 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD38 - 0x0701DD50
+static const Lights1 ttm_seg7_lights_0701DD38 = gdSPDefLights1(
+ 0x2a, 0x2a, 0x2a,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD50 - 0x0701DD68
+static const Lights1 ttm_seg7_lights_0701DD50 = gdSPDefLights1(
+ 0x2e, 0x2e, 0x2e,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD68 - 0x0701DD80
+static const Lights1 ttm_seg7_lights_0701DD68 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD80 - 0x0701DD98
+static const Lights1 ttm_seg7_lights_0701DD80 = gdSPDefLights1(
+ 0x37, 0x37, 0x37,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x0701DD98 - 0x0701DDB0
+static const Lights1 ttm_seg7_lights_0701DD98 = gdSPDefLights1(
+ 0x3b, 0x3b, 0x3b,
+ 0xee, 0xee, 0xee, 0x28, 0x28, 0x28
+);
+
+// 0x0701DDB0 - 0x0701DDC8
+static const Lights1 ttm_seg7_lights_0701DDB0 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x0701DDC8 - 0x0701DE08
static const Vtx ttm_seg7_vertex_0701DDC8[] = {
@@ -1837,32 +1777,32 @@ static const Gfx ttm_seg7_dl_07022F08[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0701DC68, 1),
- gsSPLight(&ttm_seg7_light_0701DC60, 2),
+ gsSPLight(&ttm_seg7_lights_0701DC60.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DC60.a, 2),
gsSPVertex(ttm_seg7_vertex_0701DDC8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_0701DC80, 1),
- gsSPLight(&ttm_seg7_light_0701DC78, 2),
+ gsSPLight(&ttm_seg7_lights_0701DC78.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DC78.a, 2),
gsSPVertex(ttm_seg7_vertex_0701DE08, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0701DC98, 1),
- gsSPLight(&ttm_seg7_light_0701DC90, 2),
+ gsSPLight(&ttm_seg7_lights_0701DC90.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DC90.a, 2),
gsSPVertex(ttm_seg7_vertex_0701DE88, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCB0, 1),
- gsSPLight(&ttm_seg7_light_0701DCA8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),
gsSPVertex(ttm_seg7_vertex_0701DF08, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCC8, 1),
- gsSPLight(&ttm_seg7_light_0701DCC0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),
gsSPVertex(ttm_seg7_vertex_0701DF88, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCE0, 1),
- gsSPLight(&ttm_seg7_light_0701DCD8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),
gsSPVertex(ttm_seg7_vertex_0701E008, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1886,8 +1826,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0701DCB0, 1),
- gsSPLight(&ttm_seg7_light_0701DCA8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),
gsSPVertex(ttm_seg7_vertex_0701E2E8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1906,14 +1846,14 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSPVertex(ttm_seg7_vertex_0701E5E8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 1, 6, 2, 0x0, 7, 3, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCC8, 1),
- gsSPLight(&ttm_seg7_light_0701DCC0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),
gsSPVertex(ttm_seg7_vertex_0701E668, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 9, 11, 10, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCF8, 1),
- gsSPLight(&ttm_seg7_light_0701DCF0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCF0.a, 2),
gsSPVertex(ttm_seg7_vertex_0701E728, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1931,8 +1871,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSP1Triangle(12, 14, 13, 0x0),
gsSPVertex(ttm_seg7_vertex_0701EA08, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD10, 1),
- gsSPLight(&ttm_seg7_light_0701DD08, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD08.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD08.a, 2),
gsSPVertex(ttm_seg7_vertex_0701EA48, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1940,14 +1880,14 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSPVertex(ttm_seg7_vertex_0701EB28, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 1, 6, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD28, 1),
- gsSPLight(&ttm_seg7_light_0701DD20, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD20.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD20.a, 2),
gsSPVertex(ttm_seg7_vertex_0701EB98, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 1, 3, 0x0),
gsSP2Triangles( 3, 1, 4, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 6, 8, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD40, 1),
- gsSPLight(&ttm_seg7_light_0701DD38, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD38.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD38.a, 2),
gsSPVertex(ttm_seg7_vertex_0701EC38, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 8, 0x0),
@@ -1963,8 +1903,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSPVertex(ttm_seg7_vertex_0701EE18, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD58, 1),
- gsSPLight(&ttm_seg7_light_0701DD50, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD50.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD50.a, 2),
gsSPVertex(ttm_seg7_vertex_0701EE98, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
@@ -1980,8 +1920,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSPVertex(ttm_seg7_vertex_0701F088, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 5, 4, 6, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD70, 1),
- gsSPLight(&ttm_seg7_light_0701DD68, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD68.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD68.a, 2),
gsSPVertex(ttm_seg7_vertex_0701F0F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 6, 7, 4, 0x0),
@@ -2044,8 +1984,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP1Triangle(10, 4, 6, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD88, 1),
- gsSPLight(&ttm_seg7_light_0701DD80, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD80.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD80.a, 2),
gsSPVertex(ttm_seg7_vertex_0701FCE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -2110,8 +2050,8 @@ static const Gfx ttm_seg7_dl_07023108[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 7, 9, 0x0, 11, 12, 13, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCE0, 1),
- gsSPLight(&ttm_seg7_light_0701DCD8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),
gsSPVertex(ttm_seg7_vertex_07020908, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 4, 7, 8, 0x0),
@@ -2221,8 +2161,8 @@ static const Gfx ttm_seg7_dl_07024178[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0701DC98, 1),
- gsSPLight(&ttm_seg7_light_0701DC90, 2),
+ gsSPLight(&ttm_seg7_lights_0701DC90.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DC90.a, 2),
gsSPVertex(ttm_seg7_vertex_070219C8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -2233,23 +2173,23 @@ static const Gfx ttm_seg7_dl_07024178[] = {
gsSP2Triangles( 6, 7, 4, 0x0, 8, 3, 5, 0x0),
gsSP2Triangles( 9, 10, 11, 0x0, 10, 0, 2, 0x0),
gsSP1Triangle(10, 2, 11, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCB0, 1),
- gsSPLight(&ttm_seg7_light_0701DCA8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCA8.a, 2),
gsSPVertex(ttm_seg7_vertex_07021B78, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCC8, 1),
- gsSPLight(&ttm_seg7_light_0701DCC0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCC0.a, 2),
gsSPVertex(ttm_seg7_vertex_07021BF8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCF8, 1),
- gsSPLight(&ttm_seg7_light_0701DCF0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCF0.a, 2),
gsSPVertex(ttm_seg7_vertex_07021C78, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD10, 1),
- gsSPLight(&ttm_seg7_light_0701DD08, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD08.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD08.a, 2),
gsSPVertex(ttm_seg7_vertex_07021CF8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2269,29 +2209,29 @@ static const Gfx ttm_seg7_dl_07024178[] = {
gsSP2Triangles( 6, 7, 8, 0x0, 9, 6, 8, 0x0),
gsSP2Triangles(10, 0, 2, 0x0, 10, 2, 11, 0x0),
gsSP1Triangle(12, 10, 11, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD28, 1),
- gsSPLight(&ttm_seg7_light_0701DD20, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD20.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD20.a, 2),
gsSPVertex(ttm_seg7_vertex_07022098, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 8, 7, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(12, 14, 13, 0x0, 1, 15, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD40, 1),
- gsSPLight(&ttm_seg7_light_0701DD38, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD38.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD38.a, 2),
gsSPVertex(ttm_seg7_vertex_07022198, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 8, 7, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(12, 14, 13, 0x0, 1, 15, 2, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD58, 1),
- gsSPLight(&ttm_seg7_light_0701DD50, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD50.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD50.a, 2),
gsSPVertex(ttm_seg7_vertex_07022298, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 8, 7, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD70, 1),
- gsSPLight(&ttm_seg7_light_0701DD68, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD68.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD68.a, 2),
gsSPVertex(ttm_seg7_vertex_07022398, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2311,22 +2251,22 @@ static const Gfx ttm_seg7_dl_07024178[] = {
gsSPVertex(ttm_seg7_vertex_07022678, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 3, 5, 0x0),
- gsSPLight(&ttm_seg7_light_0701DD88, 1),
- gsSPLight(&ttm_seg7_light_0701DD80, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD80.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD80.a, 2),
gsSPVertex(ttm_seg7_vertex_070226F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&ttm_seg7_light_0701DDA0, 1),
- gsSPLight(&ttm_seg7_light_0701DD98, 2),
+ gsSPLight(&ttm_seg7_lights_0701DD98.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DD98.a, 2),
gsSPVertex(ttm_seg7_vertex_070227F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&ttm_seg7_light_0701DCE0, 1),
- gsSPLight(&ttm_seg7_light_0701DCD8, 2),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DCD8.a, 2),
gsSPVertex(ttm_seg7_vertex_070228F8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -2358,8 +2298,8 @@ static const Gfx ttm_seg7_dl_07024708[] = {
// 0x070247F0 - 0x070249A0
static const Gfx ttm_seg7_dl_070247F0[] = {
- gsSPLight(&ttm_seg7_light_0701DDB8, 1),
- gsSPLight(&ttm_seg7_light_0701DDB0, 2),
+ gsSPLight(&ttm_seg7_lights_0701DDB0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0701DDB0.a, 2),
gsSPVertex(ttm_seg7_vertex_07022AF8, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 6, 0x0),
diff --git a/levels/ttm/areas/3/3/model.inc.c b/levels/ttm/areas/3/3/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07024CA8 - 0x07024CB0
-static const Ambient ttm_seg7_light_07024CA8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07024CB0 - 0x07024CC0
-static const Light ttm_seg7_light_07024CB0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07024CA8 - 0x07024CC0
+static const Lights1 ttm_seg7_lights_07024CA8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07024CC0 - 0x07024DC0
static const Vtx ttm_seg7_vertex_07024CC0[] = {
@@ -308,8 +304,8 @@ static const Gfx ttm_seg7_dl_07025B30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07024CB0, 1),
- gsSPLight(&ttm_seg7_light_07024CA8, 2),
+ gsSPLight(&ttm_seg7_lights_07024CA8.l, 1),
+ gsSPLight(&ttm_seg7_lights_07024CA8.a, 2),
gsSPVertex(ttm_seg7_vertex_07024CC0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 1, 4, 3, 0x0, 5, 0, 6, 0x0),
diff --git a/levels/ttm/areas/4/1/model.inc.c b/levels/ttm/areas/4/1/model.inc.c
@@ -1,132 +1,80 @@
-// 0x07025FF0 - 0x07025FF8
-static const Ambient ttm_seg7_light_07025FF0 = {
- {{0x15, 0x15, 0x15}, 0, {0x15, 0x15, 0x15}, 0}
-};
-
-// 0x07025FF8 - 0x07026008
-static const Light ttm_seg7_light_07025FF8 = {
- {{0x55, 0x55, 0x55}, 0, {0x55, 0x55, 0x55}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026008 - 0x07026010
-static const Ambient ttm_seg7_light_07026008 = {
- {{0x19, 0x19, 0x19}, 0, {0x19, 0x19, 0x19}, 0}
-};
-
-// 0x07026010 - 0x07026020
-static const Light ttm_seg7_light_07026010 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026020 - 0x07026028
-static const Ambient ttm_seg7_light_07026020 = {
- {{0x1d, 0x1d, 0x1d}, 0, {0x1d, 0x1d, 0x1d}, 0}
-};
-
-// 0x07026028 - 0x07026038
-static const Light ttm_seg7_light_07026028 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026038 - 0x07026040
-static const Ambient ttm_seg7_light_07026038 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07026040 - 0x07026050
-static const Light ttm_seg7_light_07026040 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026050 - 0x07026058
-static const Ambient ttm_seg7_light_07026050 = {
- {{0x26, 0x26, 0x26}, 0, {0x26, 0x26, 0x26}, 0}
-};
-
-// 0x07026058 - 0x07026068
-static const Light ttm_seg7_light_07026058 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026068 - 0x07026070
-static const Ambient ttm_seg7_light_07026068 = {
- {{0x2a, 0x2a, 0x2a}, 0, {0x2a, 0x2a, 0x2a}, 0}
-};
-
-// 0x07026070 - 0x07026080
-static const Light ttm_seg7_light_07026070 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026080 - 0x07026088
-static const Ambient ttm_seg7_light_07026080 = {
- {{0x2e, 0x2e, 0x2e}, 0, {0x2e, 0x2e, 0x2e}, 0}
-};
-
-// 0x07026088 - 0x07026098
-static const Light ttm_seg7_light_07026088 = {
- {{0xbb, 0xbb, 0xbb}, 0, {0xbb, 0xbb, 0xbb}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026098 - 0x070260A0
-static const Ambient ttm_seg7_light_07026098 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0}
-};
-
-// 0x070260A0 - 0x070260B0
-static const Light ttm_seg7_light_070260A0 = {
- {{0xcc, 0xcc, 0xcc}, 0, {0xcc, 0xcc, 0xcc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070260B0 - 0x070260B8
-static const Ambient ttm_seg7_light_070260B0 = {
- {{0x37, 0x37, 0x37}, 0, {0x37, 0x37, 0x37}, 0}
-};
-
-// 0x070260B8 - 0x070260C8
-static const Light ttm_seg7_light_070260B8 = {
- {{0xdd, 0xdd, 0xdd}, 0, {0xdd, 0xdd, 0xdd}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070260C8 - 0x070260D0
-static const Ambient ttm_seg7_light_070260C8 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x070260D0 - 0x070260E0
-static const Light ttm_seg7_light_070260D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070260E0 - 0x070260E8
-static const Ambient ttm_seg7_light_070260E0 = {
- {{0x11, 0x11, 0x11}, 0, {0x11, 0x11, 0x11}, 0}
-};
-
-// 0x070260E8 - 0x070260F8
-static const Light ttm_seg7_light_070260E8 = {
- {{0x44, 0x44, 0x44}, 0, {0x44, 0x44, 0x44}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x070260F8 - 0x07026100
-static const Ambient ttm_seg7_light_070260F8 = {
- {{0x3b, 0x3b, 0x3b}, 0, {0x3b, 0x3b, 0x3b}, 0}
-};
-
-// 0x07026100 - 0x07026110
-static const Light ttm_seg7_light_07026100 = {
- {{0xee, 0xee, 0xee}, 0, {0xee, 0xee, 0xee}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07026110 - 0x07026118
-static const Ambient ttm_seg7_light_07026110 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0}
-};
-
-// 0x07026118 - 0x07026128
-static const Light ttm_seg7_light_07026118 = {
- {{0x00, 0x00, 0x00}, 0, {0x00, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07025FF0 - 0x07026008
+static const Lights1 ttm_seg7_lights_07025FF0 = gdSPDefLights1(
+ 0x15, 0x15, 0x15,
+ 0x55, 0x55, 0x55, 0x28, 0x28, 0x28
+);
+
+// 0x07026008 - 0x07026020
+static const Lights1 ttm_seg7_lights_07026008 = gdSPDefLights1(
+ 0x19, 0x19, 0x19,
+ 0x66, 0x66, 0x66, 0x28, 0x28, 0x28
+);
+
+// 0x07026020 - 0x07026038
+static const Lights1 ttm_seg7_lights_07026020 = gdSPDefLights1(
+ 0x1d, 0x1d, 0x1d,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
+
+// 0x07026038 - 0x07026050
+static const Lights1 ttm_seg7_lights_07026038 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
+
+// 0x07026050 - 0x07026068
+static const Lights1 ttm_seg7_lights_07026050 = gdSPDefLights1(
+ 0x26, 0x26, 0x26,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
+
+// 0x07026068 - 0x07026080
+static const Lights1 ttm_seg7_lights_07026068 = gdSPDefLights1(
+ 0x2a, 0x2a, 0x2a,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
+
+// 0x07026080 - 0x07026098
+static const Lights1 ttm_seg7_lights_07026080 = gdSPDefLights1(
+ 0x2e, 0x2e, 0x2e,
+ 0xbb, 0xbb, 0xbb, 0x28, 0x28, 0x28
+);
+
+// 0x07026098 - 0x070260B0
+static const Lights1 ttm_seg7_lights_07026098 = gdSPDefLights1(
+ 0x33, 0x33, 0x33,
+ 0xcc, 0xcc, 0xcc, 0x28, 0x28, 0x28
+);
+
+// 0x070260B0 - 0x070260C8
+static const Lights1 ttm_seg7_lights_070260B0 = gdSPDefLights1(
+ 0x37, 0x37, 0x37,
+ 0xdd, 0xdd, 0xdd, 0x28, 0x28, 0x28
+);
+
+// 0x070260C8 - 0x070260E0
+static const Lights1 ttm_seg7_lights_070260C8 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x070260E0 - 0x070260F8
+static const Lights1 ttm_seg7_lights_070260E0 = gdSPDefLights1(
+ 0x11, 0x11, 0x11,
+ 0x44, 0x44, 0x44, 0x28, 0x28, 0x28
+);
+
+// 0x070260F8 - 0x07026110
+static const Lights1 ttm_seg7_lights_070260F8 = gdSPDefLights1(
+ 0x3b, 0x3b, 0x3b,
+ 0xee, 0xee, 0xee, 0x28, 0x28, 0x28
+);
+
+// 0x07026110 - 0x07026128
+static const Lights1 ttm_seg7_lights_07026110 = gdSPDefLights1(
+ 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07026128 - 0x07026228
static const Vtx ttm_seg7_vertex_07026128[] = {
@@ -1142,8 +1090,8 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900B800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07025FF8, 1),
- gsSPLight(&ttm_seg7_light_07025FF0, 2),
+ gsSPLight(&ttm_seg7_lights_07025FF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_07025FF0.a, 2),
gsSPVertex(ttm_seg7_vertex_07026128, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1162,14 +1110,14 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSPVertex(ttm_seg7_vertex_07026428, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 1, 6, 2, 0x0, 7, 3, 5, 0x0),
- gsSPLight(&ttm_seg7_light_07026010, 1),
- gsSPLight(&ttm_seg7_light_07026008, 2),
+ gsSPLight(&ttm_seg7_lights_07026008.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026008.a, 2),
gsSPVertex(ttm_seg7_vertex_070264A8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 0, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 9, 11, 10, 0x0),
- gsSPLight(&ttm_seg7_light_07026028, 1),
- gsSPLight(&ttm_seg7_light_07026020, 2),
+ gsSPLight(&ttm_seg7_lights_07026020.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026020.a, 2),
gsSPVertex(ttm_seg7_vertex_07026568, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1185,8 +1133,8 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP1Triangle(14, 11, 13, 0x0),
- gsSPLight(&ttm_seg7_light_07026040, 1),
- gsSPLight(&ttm_seg7_light_07026038, 2),
+ gsSPLight(&ttm_seg7_lights_07026038.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026038.a, 2),
gsSPVertex(ttm_seg7_vertex_07026848, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1194,19 +1142,19 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSPVertex(ttm_seg7_vertex_07026928, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 1, 6, 2, 0x0),
- gsSPLight(&ttm_seg7_light_07026058, 1),
- gsSPLight(&ttm_seg7_light_07026050, 2),
+ gsSPLight(&ttm_seg7_lights_07026050.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026050.a, 2),
gsSPVertex(ttm_seg7_vertex_07026998, 10, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 1, 4, 0x0),
gsSP2Triangles( 2, 1, 3, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 6, 8, 0x0),
- gsSPLight(&ttm_seg7_light_07026070, 1),
- gsSPLight(&ttm_seg7_light_07026068, 2),
+ gsSPLight(&ttm_seg7_lights_07026068.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026068.a, 2),
gsSPVertex(ttm_seg7_vertex_07026A38, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_07026088, 1),
- gsSPLight(&ttm_seg7_light_07026080, 2),
+ gsSPLight(&ttm_seg7_lights_07026080.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026080.a, 2),
gsSPVertex(ttm_seg7_vertex_07026AB8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
@@ -1228,8 +1176,8 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSPVertex(ttm_seg7_vertex_07026E78, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070260A0, 1),
- gsSPLight(&ttm_seg7_light_07026098, 2),
+ gsSPLight(&ttm_seg7_lights_07026098.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026098.a, 2),
gsSPVertex(ttm_seg7_vertex_07026EB8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1249,8 +1197,8 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),
- gsSPLight(&ttm_seg7_light_070260B8, 1),
- gsSPLight(&ttm_seg7_light_070260B0, 2),
+ gsSPLight(&ttm_seg7_lights_070260B0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260B0.a, 2),
gsSPVertex(ttm_seg7_vertex_07027288, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1270,8 +1218,8 @@ static const Gfx ttm_seg7_dl_070291B8[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
- gsSPLight(&ttm_seg7_light_070260D0, 1),
- gsSPLight(&ttm_seg7_light_070260C8, 2),
+ gsSPLight(&ttm_seg7_lights_070260C8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260C8.a, 2),
gsSPVertex(ttm_seg7_vertex_07027668, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1308,8 +1256,8 @@ static const Gfx ttm_seg7_dl_070299D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_0900A800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07026088, 1),
- gsSPLight(&ttm_seg7_light_07026080, 2),
+ gsSPLight(&ttm_seg7_lights_07026080.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026080.a, 2),
gsSPVertex(ttm_seg7_vertex_07027BA8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -1320,8 +1268,8 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09008800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_070260E8, 1),
- gsSPLight(&ttm_seg7_light_070260E0, 2),
+ gsSPLight(&ttm_seg7_lights_070260E0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260E0.a, 2),
gsSPVertex(ttm_seg7_vertex_07027BE8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1335,20 +1283,20 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsSPVertex(ttm_seg7_vertex_07027DC8, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 0, 6, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07025FF8, 1),
- gsSPLight(&ttm_seg7_light_07025FF0, 2),
+ gsSPLight(&ttm_seg7_lights_07025FF0.l, 1),
+ gsSPLight(&ttm_seg7_lights_07025FF0.a, 2),
gsSPVertex(ttm_seg7_vertex_07027E38, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 5, 7, 6, 0x0),
- gsSPLight(&ttm_seg7_light_07026010, 1),
- gsSPLight(&ttm_seg7_light_07026008, 2),
+ gsSPLight(&ttm_seg7_lights_07026008.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026008.a, 2),
gsSPVertex(ttm_seg7_vertex_07027EB8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 8, 10, 9, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 13, 14, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07026028, 1),
- gsSPLight(&ttm_seg7_light_07026020, 2),
+ gsSPLight(&ttm_seg7_lights_07026020.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026020.a, 2),
gsSPVertex(ttm_seg7_vertex_07027FB8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1359,8 +1307,8 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 8, 0x0),
gsSP2Triangles( 3, 5, 7, 0x0, 2, 8, 0, 0x0),
gsSP1Triangle( 0, 9, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07026040, 1),
- gsSPLight(&ttm_seg7_light_07026038, 2),
+ gsSPLight(&ttm_seg7_lights_07026038.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026038.a, 2),
gsSPVertex(ttm_seg7_vertex_07028148, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1383,8 +1331,8 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsSPVertex(ttm_seg7_vertex_07028508, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP1Triangle( 3, 6, 4, 0x0),
- gsSPLight(&ttm_seg7_light_07026058, 1),
- gsSPLight(&ttm_seg7_light_07026050, 2),
+ gsSPLight(&ttm_seg7_lights_07026050.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026050.a, 2),
gsSPVertex(ttm_seg7_vertex_07028578, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
@@ -1394,22 +1342,22 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
gsSP1Triangle( 0, 10, 1, 0x0),
- gsSPLight(&ttm_seg7_light_07026070, 1),
- gsSPLight(&ttm_seg7_light_07026068, 2),
+ gsSPLight(&ttm_seg7_lights_07026068.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026068.a, 2),
gsSPVertex(ttm_seg7_vertex_07028718, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 4, 3, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 8, 7, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(12, 14, 13, 0x0, 1, 15, 2, 0x0),
- gsSPLight(&ttm_seg7_light_07026088, 1),
- gsSPLight(&ttm_seg7_light_07026080, 2),
+ gsSPLight(&ttm_seg7_lights_07026080.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026080.a, 2),
gsSPVertex(ttm_seg7_vertex_07028818, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles(10, 8, 7, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070260A0, 1),
- gsSPLight(&ttm_seg7_light_07026098, 2),
+ gsSPLight(&ttm_seg7_lights_07026098.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026098.a, 2),
gsSPVertex(ttm_seg7_vertex_07028918, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -1429,22 +1377,22 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
gsSPVertex(ttm_seg7_vertex_07028BF8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 7, 0x0, 4, 7, 5, 0x0),
- gsSPLight(&ttm_seg7_light_070260B8, 1),
- gsSPLight(&ttm_seg7_light_070260B0, 2),
+ gsSPLight(&ttm_seg7_lights_070260B0.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260B0.a, 2),
gsSPVertex(ttm_seg7_vertex_07028C78, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 10, 8, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 0, 2, 15, 0x0),
- gsSPLight(&ttm_seg7_light_07026100, 1),
- gsSPLight(&ttm_seg7_light_070260F8, 2),
+ gsSPLight(&ttm_seg7_lights_070260F8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260F8.a, 2),
gsSPVertex(ttm_seg7_vertex_07028D78, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
gsSP2Triangles(11, 14, 12, 0x0, 0, 15, 1, 0x0),
- gsSPLight(&ttm_seg7_light_070260D0, 1),
- gsSPLight(&ttm_seg7_light_070260C8, 2),
+ gsSPLight(&ttm_seg7_lights_070260C8.l, 1),
+ gsSPLight(&ttm_seg7_lights_070260C8.a, 2),
gsSPVertex(ttm_seg7_vertex_07028E78, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 2, 3, 0, 0x0),
gsSP2Triangles( 1, 4, 2, 0x0, 2, 5, 6, 0x0),
@@ -1460,8 +1408,8 @@ static const Gfx ttm_seg7_dl_07029A18[] = {
// 0x0702A0D8 - 0x0702A1B8
static const Gfx ttm_seg7_dl_0702A0D8[] = {
- gsSPLight(&ttm_seg7_light_07026118, 1),
- gsSPLight(&ttm_seg7_light_07026110, 2),
+ gsSPLight(&ttm_seg7_lights_07026110.l, 1),
+ gsSPLight(&ttm_seg7_lights_07026110.a, 2),
gsSPVertex(ttm_seg7_vertex_07029028, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 6, 7, 0x0, 5, 7, 3, 0x0),
diff --git a/levels/ttm/areas/4/2/model.inc.c b/levels/ttm/areas/4/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0702A2A0 - 0x0702A2A8
-static const Ambient ttm_seg7_light_0702A2A0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0702A2A8 - 0x0702A2B8
-static const Light ttm_seg7_light_0702A2A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702A2A0 - 0x0702A2B8
+static const Lights1 ttm_seg7_lights_0702A2A0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702A2B8 - 0x0702A3A8
static const Vtx ttm_seg7_vertex_0702A2B8[] = {
@@ -105,8 +101,8 @@ static const Gfx ttm_seg7_dl_0702A738[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0702A2A8, 1),
- gsSPLight(&ttm_seg7_light_0702A2A0, 2),
+ gsSPLight(&ttm_seg7_lights_0702A2A0.l, 1),
+ gsSPLight(&ttm_seg7_lights_0702A2A0.a, 2),
gsSPVertex(ttm_seg7_vertex_0702A2B8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/ttm/leveldata.c b/levels/ttm/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/ttm/texture.inc.c"
diff --git a/levels/ttm/rolling_log/model.inc.c b/levels/ttm/rolling_log/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07011DE8 - 0x07011DF0
-static const Ambient ttm_seg7_light_07011DE8 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07011DF0 - 0x07011E00
-static const Light ttm_seg7_light_07011DF0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011DE8 - 0x07011E00
+static const Lights1 ttm_seg7_lights_07011DE8 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011E00 - 0x07011F00
static const Vtx ttm_seg7_vertex_07011E00[] = {
@@ -79,8 +75,8 @@ static const Gfx ttm_seg7_dl_07012120[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_07002000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07011DF0, 1),
- gsSPLight(&ttm_seg7_light_07011DE8, 2),
+ gsSPLight(&ttm_seg7_lights_07011DE8.l, 1),
+ gsSPLight(&ttm_seg7_lights_07011DE8.a, 2),
gsSPVertex(ttm_seg7_vertex_07011E00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 7, 8, 0x0),
diff --git a/levels/ttm/script.c b/levels/ttm/script.c
@@ -125,15 +125,15 @@ const LevelScript level_ttm_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2447, -2457, 3952, /*angle*/ 0, -105, 0, /*behParam*/ 0x00140000, /*beh*/ bhvWarps64),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2267, -3006, -3788, /*angle*/ 0, 148, 0, /*behParam*/ 0x00150000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -557, -3448, -4146, /*angle*/ 0, -168, 0, /*behParam*/ 0x00160000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x14, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x15, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x16, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x16, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x15, /*flags*/ WARP_NO_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x00, /*destLevel*/ 0x24, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x01, /*destLevel*/ 0x24, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
- PAINTING_WARP_NODE(/*id*/ 0x02, /*destLevel*/ 0x24, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x14, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x15, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x16, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x16, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x15, /*flags*/ WARP_NO_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x00, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x01, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
+ PAINTING_WARP_NODE(/*id*/ 0x02, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
@@ -145,9 +145,9 @@ const LevelScript level_ttm_entry[] = {
AREA(/*index*/ 2, ttm_geo_000B5C),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 7000, 5381, 6750, /*angle*/ 0, 225, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x24, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x02, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_4),
TERRAIN(/*terrainData*/ ttm_seg7_area_2_collision),
MACRO_OBJECTS(/*objList*/ ttm_seg7_area_2_macro_objs),
@@ -157,8 +157,8 @@ const LevelScript level_ttm_entry[] = {
END_AREA(),
AREA(/*index*/ 3, ttm_geo_000BEC),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_5),
TERRAIN(/*terrainData*/ ttm_seg7_area_3_collision),
MACRO_OBJECTS(/*objList*/ ttm_seg7_area_3_macro_objs),
@@ -169,9 +169,9 @@ const LevelScript level_ttm_entry[] = {
AREA(/*index*/ 4, ttm_geo_000C84),
OBJECT(/*model*/ MODEL_TTM_SLIDE_EXIT_PODIUM, /*pos*/ -7285, -1866, -4812, /*angle*/ 0, 0, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvExitPodiumWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x24, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_TTM, /*destArea*/ 0x01, /*destNode*/ 0x14, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_6),
JUMP_LINK(script_func_local_7),
TERRAIN(/*terrainData*/ ttm_seg7_area_4_collision),
diff --git a/levels/ttm/slide_exit_podium/model.inc.c b/levels/ttm/slide_exit_podium/model.inc.c
@@ -1,32 +1,20 @@
-// 0x0702ACE8 - 0x0702ACF0
-static const Ambient ttm_seg7_light_0702ACE8 = {
- {{0x0c, 0x0c, 0x0c}, 0, {0x0c, 0x0c, 0x0c}, 0}
-};
+// 0x0702ACE8 - 0x0702AD00
+static const Lights1 ttm_seg7_lights_0702ACE8 = gdSPDefLights1(
+ 0x0c, 0x0c, 0x0c,
+ 0x33, 0x33, 0x33, 0x28, 0x28, 0x28
+);
-// 0x0702ACF0 - 0x0702AD00
-static const Light ttm_seg7_light_0702ACF0 = {
- {{0x33, 0x33, 0x33}, 0, {0x33, 0x33, 0x33}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702AD00 - 0x0702AD18
+static const Lights1 ttm_seg7_lights_0702AD00 = gdSPDefLights1(
+ 0x1d, 0x1d, 0x1d,
+ 0x77, 0x77, 0x77, 0x28, 0x28, 0x28
+);
-// 0x0702AD00 - 0x0702AD08
-static const Ambient ttm_seg7_light_0702AD00 = {
- {{0x1d, 0x1d, 0x1d}, 0, {0x1d, 0x1d, 0x1d}, 0}
-};
-
-// 0x0702AD08 - 0x0702AD18
-static const Light ttm_seg7_light_0702AD08 = {
- {{0x77, 0x77, 0x77}, 0, {0x77, 0x77, 0x77}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0702AD18 - 0x0702AD20
-static const Ambient ttm_seg7_light_0702AD18 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0702AD20 - 0x0702AD30
-static const Light ttm_seg7_light_0702AD20 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0702AD18 - 0x0702AD30
+static const Lights1 ttm_seg7_lights_0702AD18 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0702AD30 - 0x0702B530
ALIGNED8 static const u8 ttm_seg7_texture_0702AD30[] = {
@@ -136,19 +124,19 @@ static const Gfx ttm_seg7_dl_0702B9D0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, ttm_seg7_texture_0702AD30),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_0702ACF0, 1),
- gsSPLight(&ttm_seg7_light_0702ACE8, 2),
+ gsSPLight(&ttm_seg7_lights_0702ACE8.l, 1),
+ gsSPLight(&ttm_seg7_lights_0702ACE8.a, 2),
gsSPVertex(ttm_seg7_vertex_0702B530, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
- gsSPLight(&ttm_seg7_light_0702AD08, 1),
- gsSPLight(&ttm_seg7_light_0702AD00, 2),
+ gsSPLight(&ttm_seg7_lights_0702AD00.l, 1),
+ gsSPLight(&ttm_seg7_lights_0702AD00.a, 2),
gsSPVertex(ttm_seg7_vertex_0702B570, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 14, 15, 0x0),
- gsSPLight(&ttm_seg7_light_0702AD20, 1),
- gsSPLight(&ttm_seg7_light_0702AD18, 2),
+ gsSPLight(&ttm_seg7_lights_0702AD18.l, 1),
+ gsSPLight(&ttm_seg7_lights_0702AD18.a, 2),
gsSPVertex(ttm_seg7_vertex_0702B670, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
diff --git a/levels/ttm/star_cage/1.inc.c b/levels/ttm/star_cage/1.inc.c
@@ -1,22 +1,14 @@
-// 0x07012F78 - 0x07012F80
-static const Ambient ttm_seg7_light_07012F78 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07012F80 - 0x07012F90
-static const Light ttm_seg7_light_07012F80 = {
- {{0xfe, 0xfe, 0xfe}, 0, {0xfe, 0xfe, 0xfe}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012F78 - 0x07012F90
+static const Lights1 ttm_seg7_lights_07012F78 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xfe, 0xfe, 0xfe, 0x28, 0x28, 0x28
+);
-// 0x07012F90 - 0x07012F98
-static const Ambient ttm_seg7_light_07012F90 = {
- {{0x7f, 0x7f, 0x7f}, 0, {0x7f, 0x7f, 0x7f}, 0}
-};
-
-// 0x07012F98 - 0x07012FA8
-static const Light ttm_seg7_light_07012F98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012F90 - 0x07012FA8
+static const Lights1 ttm_seg7_lights_07012F90 = gdSPDefLights1(
+ 0x7f, 0x7f, 0x7f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012FA8 - 0x07013028
static const Vtx ttm_seg7_vertex_07012FA8[] = {
@@ -97,13 +89,13 @@ static const Gfx ttm_seg7_dl_07013308[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, mountain_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&ttm_seg7_light_07012F80, 1),
- gsSPLight(&ttm_seg7_light_07012F78, 2),
+ gsSPLight(&ttm_seg7_lights_07012F78.l, 1),
+ gsSPLight(&ttm_seg7_lights_07012F78.a, 2),
gsSPVertex(ttm_seg7_vertex_07012FA8, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
- gsSPLight(&ttm_seg7_light_07012F98, 1),
- gsSPLight(&ttm_seg7_light_07012F90, 2),
+ gsSPLight(&ttm_seg7_lights_07012F90.l, 1),
+ gsSPLight(&ttm_seg7_lights_07012F90.a, 2),
gsSPVertex(ttm_seg7_vertex_07013028, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 9, 7, 0x0),
diff --git a/levels/vcutm/areas/1/1/model.inc.c b/levels/vcutm/areas/1/1/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07003000 - 0x07003008
-static const Ambient vcutm_seg7_light_07003000 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07003008 - 0x07003018
-static const Light vcutm_seg7_light_07003008 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003018 - 0x07003020
-static const Ambient vcutm_seg7_light_07003018 = {
- {{0x32, 0x3f, 0x37}, 0, {0x32, 0x3f, 0x37}, 0}
-};
-
-// 0x07003020 - 0x07003030
-static const Light vcutm_seg7_light_07003020 = {
- {{0xc8, 0xff, 0xdc}, 0, {0xc8, 0xff, 0xdc}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07003030 - 0x07003038
-static const Ambient vcutm_seg7_light_07003030 = {
- {{0x2a, 0x2a, 0x2a}, 0, {0x2a, 0x2a, 0x2a}, 0}
-};
-
-// 0x07003038 - 0x07003048
-static const Light vcutm_seg7_light_07003038 = {
- {{0xaa, 0xaa, 0xaa}, 0, {0xaa, 0xaa, 0xaa}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07003000 - 0x07003018
+static const Lights1 vcutm_seg7_lights_07003000 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07003018 - 0x07003030
+static const Lights1 vcutm_seg7_lights_07003018 = gdSPDefLights1(
+ 0x32, 0x3f, 0x37,
+ 0xc8, 0xff, 0xdc, 0x28, 0x28, 0x28
+);
+
+// 0x07003030 - 0x07003048
+static const Lights1 vcutm_seg7_lights_07003030 = gdSPDefLights1(
+ 0x2a, 0x2a, 0x2a,
+ 0xaa, 0xaa, 0xaa, 0x28, 0x28, 0x28
+);
// 0x07003048 - 0x07003128
static const Vtx vcutm_seg7_vertex_07003048[] = {
@@ -1253,8 +1241,8 @@ static const Gfx vcutm_seg7_dl_07006C48[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_0900B000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07003008, 1),
- gsSPLight(&vcutm_seg7_light_07003000, 2),
+ gsSPLight(&vcutm_seg7_lights_07003000.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003000.a, 2),
gsSPVertex(vcutm_seg7_vertex_07003048, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 0, 4, 5, 0x0),
@@ -1412,8 +1400,8 @@ static const Gfx vcutm_seg7_dl_070074A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07003020, 1),
- gsSPLight(&vcutm_seg7_light_07003018, 2),
+ gsSPLight(&vcutm_seg7_lights_07003018.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003018.a, 2),
gsSPVertex(vcutm_seg7_vertex_07004FB8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1424,8 +1412,8 @@ static const Gfx vcutm_seg7_dl_070074A0[] = {
gsSP2Triangles( 6, 7, 8, 0x0, 7, 9, 8, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 11, 13, 12, 0x0),
gsSP1Triangle(14, 0, 2, 0x0),
- gsSPLight(&vcutm_seg7_light_07003008, 1),
- gsSPLight(&vcutm_seg7_light_07003000, 2),
+ gsSPLight(&vcutm_seg7_lights_07003000.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003000.a, 2),
gsSPVertex(vcutm_seg7_vertex_07005198, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1454,8 +1442,8 @@ static const Gfx vcutm_seg7_dl_07007660[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, outside_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07003038, 1),
- gsSPLight(&vcutm_seg7_light_07003030, 2),
+ gsSPLight(&vcutm_seg7_lights_07003030.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003030.a, 2),
gsSPVertex(vcutm_seg7_vertex_07005558, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -1466,8 +1454,8 @@ static const Gfx vcutm_seg7_dl_07007660[] = {
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP2Triangles(10, 11, 12, 0x0, 10, 12, 13, 0x0),
gsSP1Triangle( 0, 2, 14, 0x0),
- gsSPLight(&vcutm_seg7_light_07003008, 1),
- gsSPLight(&vcutm_seg7_light_07003000, 2),
+ gsSPLight(&vcutm_seg7_lights_07003000.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003000.a, 2),
gsSPVertex(vcutm_seg7_vertex_07005738, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 1, 3, 4, 0x0),
gsSP2Triangles( 4, 3, 5, 0x0, 3, 6, 5, 0x0),
@@ -1515,15 +1503,15 @@ static const Gfx vcutm_seg7_dl_07007940[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07002800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07003038, 1),
- gsSPLight(&vcutm_seg7_light_07003030, 2),
+ gsSPLight(&vcutm_seg7_lights_07003030.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003030.a, 2),
gsSPVertex(vcutm_seg7_vertex_07005D18, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 4, 11, 5, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),
- gsSPLight(&vcutm_seg7_light_07003008, 1),
- gsSPLight(&vcutm_seg7_light_07003000, 2),
+ gsSPLight(&vcutm_seg7_lights_07003000.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003000.a, 2),
gsSPVertex(vcutm_seg7_vertex_07005E18, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
@@ -1623,8 +1611,8 @@ static const Gfx vcutm_seg7_dl_07007D80[] = {
// 0x07007E00 - 0x07007E88
static const Gfx vcutm_seg7_dl_07007E00[] = {
- gsSPLight(&vcutm_seg7_light_07003038, 1),
- gsSPLight(&vcutm_seg7_light_07003030, 2),
+ gsSPLight(&vcutm_seg7_lights_07003030.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07003030.a, 2),
gsSPVertex(vcutm_seg7_vertex_07006AD8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/vcutm/areas/1/2/model.inc.c b/levels/vcutm/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007F90 - 0x07007F98
-static const Ambient vcutm_seg7_light_07007F90 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07007F98 - 0x07007FA8
-static const Light vcutm_seg7_light_07007F98 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007F90 - 0x07007FA8
+static const Lights1 vcutm_seg7_lights_07007F90 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07007FA8 - 0x07008068
static const Vtx vcutm_seg7_vertex_07007FA8[] = {
@@ -29,8 +25,8 @@ static const Gfx vcutm_seg7_dl_07008068[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07007F98, 1),
- gsSPLight(&vcutm_seg7_light_07007F90, 2),
+ gsSPLight(&vcutm_seg7_lights_07007F90.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07007F90.a, 2),
gsSPVertex(vcutm_seg7_vertex_07007FA8, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/vcutm/script.c b/levels/vcutm/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -53,16 +54,16 @@ const LevelScript level_vcutm_entry[] = {
AREA(/*index*/ 1, vcutm_geo_000208),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -6143, 6734, -6143, /*angle*/ 0, 0, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x12, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x07, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x08, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_VCUTM, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x07, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x08, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x06, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ vcutm_seg7_collision),
MACRO_OBJECTS(/*objList*/ vcutm_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x81),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_129),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0000, /*seq*/ SEQ_LEVEL_SLIDE),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
diff --git a/levels/vcutm/seesaw/model.inc.c b/levels/vcutm/seesaw/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07009458 - 0x07009460
-static const Ambient vcutm_seg7_light_07009458 = {
- {{0x22, 0x22, 0x22}, 0, {0x22, 0x22, 0x22}, 0}
-};
-
-// 0x07009460 - 0x07009470
-static const Light vcutm_seg7_light_07009460 = {
- {{0x88, 0x88, 0x88}, 0, {0x88, 0x88, 0x88}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009458 - 0x07009470
+static const Lights1 vcutm_seg7_lights_07009458 = gdSPDefLights1(
+ 0x22, 0x22, 0x22,
+ 0x88, 0x88, 0x88, 0x28, 0x28, 0x28
+);
-// 0x07009470 - 0x07009478
-static const Ambient vcutm_seg7_light_07009470 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x07009478 - 0x07009488
-static const Light vcutm_seg7_light_07009478 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009470 - 0x07009488
+static const Lights1 vcutm_seg7_lights_07009470 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009488 - 0x07009578
static const Vtx vcutm_seg7_vertex_07009488[] = {
@@ -61,8 +53,8 @@ static const Gfx vcutm_seg7_dl_07009628[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, vcutm_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 64 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&vcutm_seg7_light_07009460, 1),
- gsSPLight(&vcutm_seg7_light_07009458, 2),
+ gsSPLight(&vcutm_seg7_lights_07009458.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07009458.a, 2),
gsSPVertex(vcutm_seg7_vertex_07009488, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -71,8 +63,8 @@ static const Gfx vcutm_seg7_dl_07009628[] = {
gsSPVertex(vcutm_seg7_vertex_07009578, 7, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP1Triangle( 4, 5, 6, 0x0),
- gsSPLight(&vcutm_seg7_light_07009478, 1),
- gsSPLight(&vcutm_seg7_light_07009470, 2),
+ gsSPLight(&vcutm_seg7_lights_07009470.l, 1),
+ gsSPLight(&vcutm_seg7_lights_07009470.a, 2),
gsSPVertex(vcutm_seg7_vertex_070095E8, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wdw/areas/1/1/model.inc.c b/levels/wdw/areas/1/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07002800 - 0x07002808
-static const Ambient wdw_seg7_light_07002800 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07002808 - 0x07002818
-static const Light wdw_seg7_light_07002808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07002818 - 0x07002820
-static const Ambient wdw_seg7_light_07002818 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x07002820 - 0x07002830
-static const Light wdw_seg7_light_07002820 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002800 - 0x07002818
+static const Lights1 wdw_seg7_lights_07002800 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07002818 - 0x07002830
+static const Lights1 wdw_seg7_lights_07002818 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
// 0x07002830 - 0x07002920
static const Vtx wdw_seg7_vertex_07002830[] = {
@@ -1850,8 +1842,8 @@ static const Gfx wdw_seg7_dl_07008160[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07002808, 1),
- gsSPLight(&wdw_seg7_light_07002800, 2),
+ gsSPLight(&wdw_seg7_lights_07002800.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002800.a, 2),
gsSPVertex(wdw_seg7_vertex_07002830, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1918,8 +1910,8 @@ static const Gfx wdw_seg7_dl_07008160[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
gsSP2Triangles( 7, 9, 10, 0x0, 11, 12, 13, 0x0),
- gsSPLight(&wdw_seg7_light_07002820, 1),
- gsSPLight(&wdw_seg7_light_07002818, 2),
+ gsSPLight(&wdw_seg7_lights_07002818.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002818.a, 2),
gsSPVertex(wdw_seg7_vertex_07003630, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1937,8 +1929,8 @@ static const Gfx wdw_seg7_dl_07008598[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07002808, 1),
- gsSPLight(&wdw_seg7_light_07002800, 2),
+ gsSPLight(&wdw_seg7_lights_07002800.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002800.a, 2),
gsSPVertex(wdw_seg7_vertex_070037D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -1970,8 +1962,8 @@ static const Gfx wdw_seg7_dl_07008598[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 3, 7, 6, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
- gsSPLight(&wdw_seg7_light_07002820, 1),
- gsSPLight(&wdw_seg7_light_07002818, 2),
+ gsSPLight(&wdw_seg7_lights_07002818.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002818.a, 2),
gsSPVertex(wdw_seg7_vertex_07003D70, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
@@ -1984,8 +1976,8 @@ static const Gfx wdw_seg7_dl_070087B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07002808, 1),
- gsSPLight(&wdw_seg7_light_07002800, 2),
+ gsSPLight(&wdw_seg7_lights_07002800.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002800.a, 2),
gsSPVertex(wdw_seg7_vertex_07003E30, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2046,8 +2038,8 @@ static const Gfx wdw_seg7_dl_07008910[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 0, 2, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 3, 7, 0, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 10, 11, 0x0),
- gsSPLight(&wdw_seg7_light_07002820, 1),
- gsSPLight(&wdw_seg7_light_07002818, 2),
+ gsSPLight(&wdw_seg7_lights_07002818.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002818.a, 2),
gsSPVertex(wdw_seg7_vertex_070047D0, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2061,8 +2053,8 @@ static const Gfx wdw_seg7_dl_07008B00[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07002808, 1),
- gsSPLight(&wdw_seg7_light_07002800, 2),
+ gsSPLight(&wdw_seg7_lights_07002800.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002800.a, 2),
gsSPVertex(wdw_seg7_vertex_070048D0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -2401,8 +2393,8 @@ static const Gfx wdw_seg7_dl_070099B0[] = {
gsSP1Triangle(13, 14, 15, 0x0),
gsSPVertex(wdw_seg7_vertex_070080F0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
- gsSPLight(&wdw_seg7_light_07002820, 1),
- gsSPLight(&wdw_seg7_light_07002818, 2),
+ gsSPLight(&wdw_seg7_lights_07002818.l, 1),
+ gsSPLight(&wdw_seg7_lights_07002818.a, 2),
gsSPVertex(wdw_seg7_vertex_07008120, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wdw/areas/1/2/model.inc.c b/levels/wdw/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07009B78 - 0x07009B80
-static const Ambient wdw_seg7_light_07009B78 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07009B80 - 0x07009B90
-static const Light wdw_seg7_light_07009B80 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009B78 - 0x07009B90
+static const Lights1 wdw_seg7_lights_07009B78 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009B90 - 0x07009C70
static const Vtx wdw_seg7_vertex_07009B90[] = {
@@ -99,8 +95,8 @@ static const Gfx wdw_seg7_dl_07009FB0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07009B80, 1),
- gsSPLight(&wdw_seg7_light_07009B78, 2),
+ gsSPLight(&wdw_seg7_lights_07009B78.l, 1),
+ gsSPLight(&wdw_seg7_lights_07009B78.a, 2),
gsSPVertex(wdw_seg7_vertex_07009B90, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/wdw/areas/1/geo.inc.c b/levels/wdw/areas/1/geo.inc.c
@@ -29,7 +29,7 @@ const GeoLayout wdw_geo_000658[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/wdw/areas/1/macro.inc.c b/levels/wdw/areas/1/macro.inc.c
@@ -1,6 +1,6 @@
// 0x070160D8 - 0x0701633C
const MacroObject wdw_seg7_area_1_macro_objs[] = {
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2077, 2816, -660, /*behParam*/ 81),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2077, 2816, -660, /*behParam*/ DIALOG_081),
MACRO_OBJECT(/*preset*/ macro_bobomb_buddy_opens_cannon, /*yaw*/ 0, /*pos*/ -2, 2944, 3583),
MACRO_OBJECT(/*preset*/ macro_coin_ring_horizontal, /*yaw*/ 0, /*pos*/ -2057, 2800, -500),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ 1500, 1741, 2191),
@@ -59,7 +59,7 @@ const MacroObject wdw_seg7_area_1_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_box_three_coins, /*yaw*/ 0, /*pos*/ 3388, 1600, 1155),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 90, /*pos*/ 740, 3072, -3560),
MACRO_OBJECT(/*preset*/ macro_box_star_2, /*yaw*/ 0, /*pos*/ 1550, 4350, 100),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 740, 3060, -3680, /*behParam*/ 53),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 740, 3060, -3680, /*behParam*/ DIALOG_053),
MACRO_OBJECT(/*preset*/ macro_breakable_box_three_coins, /*yaw*/ 0, /*pos*/ 4500, 0, 1040),
MACRO_OBJECT_END(),
};
diff --git a/levels/wdw/areas/2/1/model.inc.c b/levels/wdw/areas/2/1/model.inc.c
@@ -1,42 +1,26 @@
-// 0x0700A1B0 - 0x0700A1B8
-static const Ambient wdw_seg7_light_0700A1B0 = {
- {{0x99, 0x99, 0x82}, 0, {0x99, 0x99, 0x82}, 0}
-};
-
-// 0x0700A1B8 - 0x0700A1C8
-static const Light wdw_seg7_light_0700A1B8 = {
- {{0xff, 0xff, 0xd9}, 0, {0xff, 0xff, 0xd9}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700A1C8 - 0x0700A1D0
-static const Ambient wdw_seg7_light_0700A1C8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x0700A1D0 - 0x0700A1E0
-static const Light wdw_seg7_light_0700A1D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700A1E0 - 0x0700A1E8
-static const Ambient wdw_seg7_light_0700A1E0 = {
- {{0x3c, 0x3c, 0x3c}, 0, {0x3c, 0x3c, 0x3c}, 0}
-};
-
-// 0x0700A1E8 - 0x0700A1F8
-static const Light wdw_seg7_light_0700A1E8 = {
- {{0x64, 0x64, 0x64}, 0, {0x64, 0x64, 0x64}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x0700A1F8 - 0x0700A200
-static const Ambient wdw_seg7_light_0700A1F8 = {
- {{0x7b, 0x0d, 0x1f}, 0, {0x7b, 0x0d, 0x1f}, 0}
-};
-
-// 0x0700A200 - 0x0700A210
-static const Light wdw_seg7_light_0700A200 = {
- {{0xce, 0x16, 0x35}, 0, {0xce, 0x16, 0x35}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A1B0 - 0x0700A1C8
+static const Lights1 wdw_seg7_lights_0700A1B0 = gdSPDefLights1(
+ 0x99, 0x99, 0x82,
+ 0xff, 0xff, 0xd9, 0x28, 0x28, 0x28
+);
+
+// 0x0700A1C8 - 0x0700A1E0
+static const Lights1 wdw_seg7_lights_0700A1C8 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x0700A1E0 - 0x0700A1F8
+static const Lights1 wdw_seg7_lights_0700A1E0 = gdSPDefLights1(
+ 0x3c, 0x3c, 0x3c,
+ 0x64, 0x64, 0x64, 0x28, 0x28, 0x28
+);
+
+// 0x0700A1F8 - 0x0700A210
+static const Lights1 wdw_seg7_lights_0700A1F8 = gdSPDefLights1(
+ 0x7b, 0x0d, 0x1f,
+ 0xce, 0x16, 0x35, 0x28, 0x28, 0x28
+);
// 0x0700A210 - 0x0700A270
static const Vtx wdw_seg7_vertex_0700A210[] = {
@@ -2000,13 +1984,13 @@ static const Gfx wdw_seg7_dl_07010120[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_0700A1B8, 1),
- gsSPLight(&wdw_seg7_light_0700A1B0, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1B0.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1B0.a, 2),
gsSPVertex(wdw_seg7_vertex_0700A210, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 4, 1, 0x0, 0, 2, 5, 0x0),
- gsSPLight(&wdw_seg7_light_0700A1D0, 1),
- gsSPLight(&wdw_seg7_light_0700A1C8, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),
gsSPVertex(wdw_seg7_vertex_0700A270, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
@@ -2071,8 +2055,8 @@ static const Gfx wdw_seg7_dl_07010120[] = {
gsSP2Triangles(10, 11, 12, 0x0, 10, 13, 11, 0x0),
gsSPVertex(wdw_seg7_vertex_0700ACD0, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&wdw_seg7_light_0700A1E8, 1),
- gsSPLight(&wdw_seg7_light_0700A1E0, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1E0.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1E0.a, 2),
gsSPVertex(wdw_seg7_vertex_0700AD10, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2091,8 +2075,8 @@ static const Gfx wdw_seg7_dl_07010578[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_0700A200, 1),
- gsSPLight(&wdw_seg7_light_0700A1F8, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1F8.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1F8.a, 2),
gsSPVertex(wdw_seg7_vertex_0700AED0, 14, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -2102,8 +2086,8 @@ static const Gfx wdw_seg7_dl_07010578[] = {
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
gsSP2Triangles( 8, 9, 10, 0x0, 8, 11, 9, 0x0),
gsSP2Triangles(12, 13, 14, 0x0, 12, 15, 13, 0x0),
- gsSPLight(&wdw_seg7_light_0700A1D0, 1),
- gsSPLight(&wdw_seg7_light_0700A1C8, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),
gsSPVertex(wdw_seg7_vertex_0700B0B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2357,8 +2341,8 @@ static const Gfx wdw_seg7_dl_07010EA0[] = {
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 6, 8, 9, 0x0),
gsSP1Triangle( 0, 2, 10, 0x0),
- gsSPLight(&wdw_seg7_light_0700A1E8, 1),
- gsSPLight(&wdw_seg7_light_0700A1E0, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1E0.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1E0.a, 2),
gsSPVertex(wdw_seg7_vertex_0700D770, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
@@ -2369,8 +2353,8 @@ static const Gfx wdw_seg7_dl_07011208[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_0700A1D0, 1),
- gsSPLight(&wdw_seg7_light_0700A1C8, 2),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.l, 1),
+ gsSPLight(&wdw_seg7_lights_0700A1C8.a, 2),
gsSPVertex(wdw_seg7_vertex_0700D7B0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/wdw/areas/2/2/model.inc.c b/levels/wdw/areas/2/2/model.inc.c
@@ -1,32 +1,20 @@
-// 0x07011F58 - 0x07011F60
-static const Ambient wdw_seg7_light_07011F58 = {
- {{0x54, 0x90, 0x88}, 0, {0x54, 0x90, 0x88}, 0}
-};
+// 0x07011F58 - 0x07011F70
+static const Lights1 wdw_seg7_lights_07011F58 = gdSPDefLights1(
+ 0x54, 0x90, 0x88,
+ 0x8d, 0xf0, 0xe3, 0x28, 0x28, 0x28
+);
-// 0x07011F60 - 0x07011F70
-static const Light wdw_seg7_light_07011F60 = {
- {{0x8d, 0xf0, 0xe3}, 0, {0x8d, 0xf0, 0xe3}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011F70 - 0x07011F88
+static const Lights1 wdw_seg7_lights_07011F70 = gdSPDefLights1(
+ 0x56, 0x57, 0x8e,
+ 0x90, 0x92, 0xee, 0x28, 0x28, 0x28
+);
-// 0x07011F70 - 0x07011F78
-static const Ambient wdw_seg7_light_07011F70 = {
- {{0x56, 0x57, 0x8e}, 0, {0x56, 0x57, 0x8e}, 0}
-};
-
-// 0x07011F78 - 0x07011F88
-static const Light wdw_seg7_light_07011F78 = {
- {{0x90, 0x92, 0xee}, 0, {0x90, 0x92, 0xee}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07011F88 - 0x07011F90
-static const Ambient wdw_seg7_light_07011F88 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07011F90 - 0x07011FA0
-static const Light wdw_seg7_light_07011F90 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07011F88 - 0x07011FA0
+static const Lights1 wdw_seg7_lights_07011F88 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07011FA0 - 0x07012020
static const Vtx wdw_seg7_vertex_07011FA0[] = {
@@ -73,20 +61,20 @@ static const Gfx wdw_seg7_dl_07012160[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07011F60, 1),
- gsSPLight(&wdw_seg7_light_07011F58, 2),
+ gsSPLight(&wdw_seg7_lights_07011F58.l, 1),
+ gsSPLight(&wdw_seg7_lights_07011F58.a, 2),
gsSPVertex(wdw_seg7_vertex_07011FA0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 3, 4, 0x0, 0, 5, 6, 0x0),
gsSP2Triangles( 0, 6, 7, 0x0, 0, 4, 5, 0x0),
- gsSPLight(&wdw_seg7_light_07011F78, 1),
- gsSPLight(&wdw_seg7_light_07011F70, 2),
+ gsSPLight(&wdw_seg7_lights_07011F70.l, 1),
+ gsSPLight(&wdw_seg7_lights_07011F70.a, 2),
gsSPVertex(wdw_seg7_vertex_07012020, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 4, 0x0),
gsSP2Triangles( 0, 4, 5, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 0, 5, 6, 0x0, 0, 6, 7, 0x0),
- gsSPLight(&wdw_seg7_light_07011F90, 1),
- gsSPLight(&wdw_seg7_light_07011F88, 2),
+ gsSPLight(&wdw_seg7_lights_07011F88.l, 1),
+ gsSPLight(&wdw_seg7_lights_07011F88.a, 2),
gsSPVertex(wdw_seg7_vertex_070120A0, 12, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 0, 7, 1, 0x0),
diff --git a/levels/wdw/arrow_lift/model.inc.c b/levels/wdw/arrow_lift/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07012C08 - 0x07012C10
-static const Ambient wdw_seg7_light_07012C08 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07012C10 - 0x07012C20
-static const Light wdw_seg7_light_07012C10 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012C08 - 0x07012C20
+static const Lights1 wdw_seg7_lights_07012C08 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012C20 - 0x07012C60
static const Vtx wdw_seg7_vertex_07012C20[] = {
@@ -51,8 +47,8 @@ static const Gfx wdw_seg7_dl_07012DC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07012C10, 1),
- gsSPLight(&wdw_seg7_light_07012C08, 2),
+ gsSPLight(&wdw_seg7_lights_07012C08.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012C08.a, 2),
gsSPVertex(wdw_seg7_vertex_07012C20, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wdw/express_elevator/model.inc.c b/levels/wdw/express_elevator/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013500 - 0x07013508
-static const Ambient wdw_seg7_light_07013500 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07013508 - 0x07013518
-static const Light wdw_seg7_light_07013508 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013500 - 0x07013518
+static const Lights1 wdw_seg7_lights_07013500 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013518 - 0x07013618
static const Vtx wdw_seg7_vertex_07013518[] = {
@@ -109,8 +105,8 @@ static const Gfx wdw_seg7_dl_070139D8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07013508, 1),
- gsSPLight(&wdw_seg7_light_07013500, 2),
+ gsSPLight(&wdw_seg7_lights_07013500.l, 1),
+ gsSPLight(&wdw_seg7_lights_07013500.a, 2),
gsSPVertex(wdw_seg7_vertex_07013518, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wdw/hidden_platform/model.inc.c b/levels/wdw/hidden_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013238 - 0x07013240
-static const Ambient wdw_seg7_light_07013238 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07013240 - 0x07013250
-static const Light wdw_seg7_light_07013240 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013238 - 0x07013250
+static const Lights1 wdw_seg7_lights_07013238 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013250 - 0x07013340
static const Vtx wdw_seg7_vertex_07013250[] = {
@@ -47,8 +43,8 @@ static const Gfx wdw_seg7_dl_070133F0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07013240, 1),
- gsSPLight(&wdw_seg7_light_07013238, 2),
+ gsSPLight(&wdw_seg7_lights_07013238.l, 1),
+ gsSPLight(&wdw_seg7_lights_07013238.a, 2),
gsSPVertex(wdw_seg7_vertex_07013250, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wdw/leveldata.c b/levels/wdw/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/wdw/texture.inc.c"
diff --git a/levels/wdw/rectangular_floating_platform/model.inc.c b/levels/wdw/rectangular_floating_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013BE8 - 0x07013BF0
-static const Ambient wdw_seg7_light_07013BE8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07013BF0 - 0x07013C00
-static const Light wdw_seg7_light_07013BF0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013BE8 - 0x07013C00
+static const Lights1 wdw_seg7_lights_07013BE8 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013C00 - 0x07013D00
static const Vtx wdw_seg7_vertex_07013C00[] = {
@@ -45,8 +41,8 @@ static const Gfx wdw_seg7_dl_07013D80[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07013BF0, 1),
- gsSPLight(&wdw_seg7_light_07013BE8, 2),
+ gsSPLight(&wdw_seg7_lights_07013BE8.l, 1),
+ gsSPLight(&wdw_seg7_lights_07013BE8.a, 2),
gsSPVertex(wdw_seg7_vertex_07013C00, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/wdw/rotating_platform/model.inc.c b/levels/wdw/rotating_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07013EB8 - 0x07013EC0
-static const Ambient wdw_seg7_light_07013EB8 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07013EC0 - 0x07013ED0
-static const Light wdw_seg7_light_07013EC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07013EB8 - 0x07013ED0
+static const Lights1 wdw_seg7_lights_07013EB8 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07013ED0 - 0x07013FC0
static const Vtx wdw_seg7_vertex_07013ED0[] = {
@@ -45,8 +41,8 @@ static const Gfx wdw_seg7_dl_07014050[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07013EC0, 1),
- gsSPLight(&wdw_seg7_light_07013EB8, 2),
+ gsSPLight(&wdw_seg7_lights_07013EB8.l, 1),
+ gsSPLight(&wdw_seg7_lights_07013EB8.a, 2),
gsSPVertex(wdw_seg7_vertex_07013ED0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 6, 7, 0x0),
diff --git a/levels/wdw/script.c b/levels/wdw/script.c
@@ -96,13 +96,13 @@ const LevelScript level_wdw_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 3395, 3580, 384, /*angle*/ 0, 180, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 818, 0, 3634, /*angle*/ 0, 45, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2865, 3328, 3065, /*angle*/ 0, 0, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x0B, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_WDW, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_1),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
INSTANT_WARP(/*index*/ 1, /*destArea*/ 2, /*displace*/ 0, 0, 0),
TERRAIN(/*terrainData*/ wdw_seg7_area_1_collision),
MACRO_OBJECTS(/*objList*/ wdw_seg7_area_1_macro_objs),
@@ -113,8 +113,8 @@ const LevelScript level_wdw_entry[] = {
AREA(/*index*/ 2, wdw_geo_000724),
JUMP_LINK(script_func_local_4),
JUMP_LINK(script_func_local_2),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x32, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x64, /*flags*/ WARP_NO_CHECKPOINT),
INSTANT_WARP(/*index*/ 0, /*destArea*/ 1, /*displace*/ 0, 0, 0),
TERRAIN(/*terrainData*/ wdw_seg7_area_2_collision),
MACRO_OBJECTS(/*objList*/ wdw_seg7_area_2_macro_objs),
diff --git a/levels/wdw/square_floating_platform/model.inc.c b/levels/wdw/square_floating_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07012938 - 0x07012940
-static const Ambient wdw_seg7_light_07012938 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0}
-};
-
-// 0x07012940 - 0x07012950
-static const Light wdw_seg7_light_07012940 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012938 - 0x07012950
+static const Lights1 wdw_seg7_lights_07012938 = gdSPDefLights1(
+ 0x99, 0x99, 0x99,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07012950 - 0x07012A50
static const Vtx wdw_seg7_vertex_07012950[] = {
@@ -45,8 +41,8 @@ static const Gfx wdw_seg7_dl_07012AD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07012940, 1),
- gsSPLight(&wdw_seg7_light_07012938, 2),
+ gsSPLight(&wdw_seg7_lights_07012938.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012938.a, 2),
gsSPVertex(wdw_seg7_vertex_07012950, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/wdw/water_level_diamond/model.inc.c b/levels/wdw/water_level_diamond/model.inc.c
@@ -1,42 +1,26 @@
-// 0x07012F18 - 0x07012F20
-static const Ambient wdw_seg7_light_07012F18 = {
- {{0x99, 0x99, 0x00}, 0, {0x99, 0x99, 0x00}, 0}
-};
-
-// 0x07012F20 - 0x07012F30
-static const Light wdw_seg7_light_07012F20 = {
- {{0xff, 0xff, 0x00}, 0, {0xff, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012F30 - 0x07012F38
-static const Ambient wdw_seg7_light_07012F30 = {
- {{0x00, 0x00, 0x99}, 0, {0x00, 0x00, 0x99}, 0}
-};
-
-// 0x07012F38 - 0x07012F48
-static const Light wdw_seg7_light_07012F38 = {
- {{0x00, 0x00, 0xff}, 0, {0x00, 0x00, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07012F48 - 0x07012F50
-static const Ambient wdw_seg7_light_07012F48 = {
- {{0x00, 0x99, 0x00}, 0, {0x00, 0x99, 0x00}, 0}
-};
+// 0x07012F18 - 0x07012F30
+static const Lights1 wdw_seg7_lights_07012F18 = gdSPDefLights1(
+ 0x99, 0x99, 0x00,
+ 0xff, 0xff, 0x00, 0x28, 0x28, 0x28
+);
-// 0x07012F50 - 0x07012F60
-static const Light wdw_seg7_light_07012F50 = {
- {{0x00, 0xff, 0x00}, 0, {0x00, 0xff, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012F30 - 0x07012F48
+static const Lights1 wdw_seg7_lights_07012F30 = gdSPDefLights1(
+ 0x00, 0x00, 0x99,
+ 0x00, 0x00, 0xff, 0x28, 0x28, 0x28
+);
-// 0x07012F60 - 0x07012F68
-static const Ambient wdw_seg7_light_07012F60 = {
- {{0x99, 0x00, 0x00}, 0, {0x99, 0x00, 0x00}, 0}
-};
+// 0x07012F48 - 0x07012F60
+static const Lights1 wdw_seg7_lights_07012F48 = gdSPDefLights1(
+ 0x00, 0x99, 0x00,
+ 0x00, 0xff, 0x00, 0x28, 0x28, 0x28
+);
-// 0x07012F68 - 0x07012F78
-static const Light wdw_seg7_light_07012F68 = {
- {{0xff, 0x00, 0x00}, 0, {0xff, 0x00, 0x00}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07012F60 - 0x07012F78
+static const Lights1 wdw_seg7_lights_07012F60 = gdSPDefLights1(
+ 0x99, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x28, 0x28, 0x28
+);
// 0x07012F78 - 0x07012FD8
static const Vtx wdw_seg7_vertex_07012F78[] = {
@@ -83,20 +67,20 @@ static const Gfx wdw_seg7_dl_070130F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wdw_seg7_texture_07001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wdw_seg7_light_07012F20, 1),
- gsSPLight(&wdw_seg7_light_07012F18, 2),
+ gsSPLight(&wdw_seg7_lights_07012F18.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012F18.a, 2),
gsSPVertex(wdw_seg7_vertex_07012F78, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&wdw_seg7_light_07012F38, 1),
- gsSPLight(&wdw_seg7_light_07012F30, 2),
+ gsSPLight(&wdw_seg7_lights_07012F30.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012F30.a, 2),
gsSPVertex(wdw_seg7_vertex_07012FD8, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&wdw_seg7_light_07012F50, 1),
- gsSPLight(&wdw_seg7_light_07012F48, 2),
+ gsSPLight(&wdw_seg7_lights_07012F48.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012F48.a, 2),
gsSPVertex(wdw_seg7_vertex_07013038, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
- gsSPLight(&wdw_seg7_light_07012F68, 1),
- gsSPLight(&wdw_seg7_light_07012F60, 2),
+ gsSPLight(&wdw_seg7_lights_07012F60.l, 1),
+ gsSPLight(&wdw_seg7_lights_07012F60.a, 2),
gsSPVertex(wdw_seg7_vertex_07013098, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/1/model.inc.c b/levels/wf/areas/1/1/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07002900 - 0x07002908
-static const Ambient wf_seg7_light_07002900 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07002908 - 0x07002918
-static const Light wf_seg7_light_07002908 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07002900 - 0x07002918
+static const Lights1 wf_seg7_lights_07002900 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07002918 - 0x07002A18
static const Vtx wf_seg7_vertex_07002918[] = {
@@ -635,8 +631,8 @@ static const Gfx wf_seg7_dl_070046B8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07002908, 1),
- gsSPLight(&wf_seg7_light_07002900, 2),
+ gsSPLight(&wf_seg7_lights_07002900.l, 1),
+ gsSPLight(&wf_seg7_lights_07002900.a, 2),
gsSPVertex(wf_seg7_vertex_07002918, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/10/1.inc.c b/levels/wf/areas/1/10/1.inc.c
@@ -1,12 +1,8 @@
-// 0x07007590 - 0x07007598
-static const Ambient wf_seg7_light_07007590 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07007598 - 0x070075A8
-static const Light wf_seg7_light_07007598 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007590 - 0x070075A8
+static const Lights1 wf_seg7_lights_07007590 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070075A8 - 0x070076A8
static const Vtx wf_seg7_vertex_070075A8[] = {
@@ -293,8 +289,8 @@ static const Gfx wf_seg7_dl_07008368[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07007598, 1),
- gsSPLight(&wf_seg7_light_07007590, 2),
+ gsSPLight(&wf_seg7_lights_07007590.l, 1),
+ gsSPLight(&wf_seg7_lights_07007590.a, 2),
gsSPVertex(wf_seg7_vertex_070075A8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/10/2.inc.c b/levels/wf/areas/1/10/2.inc.c
@@ -1,12 +1,8 @@
-// 0x07008838 - 0x07008840
-static const Ambient wf_seg7_light_07008838 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07008840 - 0x07008850
-static const Light wf_seg7_light_07008840 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07008838 - 0x07008850
+static const Lights1 wf_seg7_lights_07008838 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07008850 - 0x07008950
static const Vtx wf_seg7_vertex_07008850[] = {
@@ -129,8 +125,8 @@ static const Gfx wf_seg7_dl_07008DD0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07001800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07008840, 1),
- gsSPLight(&wf_seg7_light_07008838, 2),
+ gsSPLight(&wf_seg7_lights_07008838.l, 1),
+ gsSPLight(&wf_seg7_lights_07008838.a, 2),
gsSPVertex(wf_seg7_vertex_07008850, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/11/model.inc.c b/levels/wf/areas/1/11/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07009070 - 0x07009078
-static const Ambient wf_seg7_light_07009070 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07009078 - 0x07009088
-static const Light wf_seg7_light_07009078 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009070 - 0x07009088
+static const Lights1 wf_seg7_lights_07009070 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009088 - 0x070090C8
static const Vtx wf_seg7_vertex_07009088[] = {
@@ -41,8 +37,8 @@ static const Gfx wf_seg7_dl_070091C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07000000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07009078, 1),
- gsSPLight(&wf_seg7_light_07009070, 2),
+ gsSPLight(&wf_seg7_lights_07009070.l, 1),
+ gsSPLight(&wf_seg7_lights_07009070.a, 2),
gsSPVertex(wf_seg7_vertex_07009088, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/12/1.inc.c b/levels/wf/areas/1/12/1.inc.c
@@ -1,12 +1,8 @@
-// 0x070092F0 - 0x070092F8
-static const Ambient wf_seg7_light_070092F0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070092F8 - 0x07009308
-static const Light wf_seg7_light_070092F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070092F0 - 0x07009308
+static const Lights1 wf_seg7_lights_070092F0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009308 - 0x070093F8
static const Vtx wf_seg7_vertex_07009308[] = {
@@ -86,8 +82,8 @@ static const Gfx wf_seg7_dl_07009698[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_070092F8, 1),
- gsSPLight(&wf_seg7_light_070092F0, 2),
+ gsSPLight(&wf_seg7_lights_070092F0.l, 1),
+ gsSPLight(&wf_seg7_lights_070092F0.a, 2),
gsSPVertex(wf_seg7_vertex_07009308, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/wf/areas/1/12/2.inc.c b/levels/wf/areas/1/12/2.inc.c
@@ -1,12 +1,8 @@
-// 0x070097F0 - 0x070097F8
-static const Ambient wf_seg7_light_070097F0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070097F8 - 0x07009808
-static const Light wf_seg7_light_070097F8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070097F0 - 0x07009808
+static const Lights1 wf_seg7_lights_070097F0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009808 - 0x07009848
static const Vtx wf_seg7_vertex_07009808[] = {
@@ -21,8 +17,8 @@ static const Gfx wf_seg7_dl_07009848[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_070097F8, 1),
- gsSPLight(&wf_seg7_light_070097F0, 2),
+ gsSPLight(&wf_seg7_lights_070097F0.l, 1),
+ gsSPLight(&wf_seg7_lights_070097F0.a, 2),
gsSPVertex(wf_seg7_vertex_07009808, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/13/model.inc.c b/levels/wf/areas/1/13/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07009900 - 0x07009908
-static const Ambient wf_seg7_light_07009900 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07009908 - 0x07009918
-static const Light wf_seg7_light_07009908 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009900 - 0x07009918
+static const Lights1 wf_seg7_lights_07009900 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009918 - 0x07009958
static const Vtx wf_seg7_vertex_07009918[] = {
@@ -85,8 +81,8 @@ static const Gfx wf_seg7_dl_07009C58[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07009908, 1),
- gsSPLight(&wf_seg7_light_07009900, 2),
+ gsSPLight(&wf_seg7_lights_07009900.l, 1),
+ gsSPLight(&wf_seg7_lights_07009900.a, 2),
gsSPVertex(wf_seg7_vertex_07009918, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/14/model.inc.c b/levels/wf/areas/1/14/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07009E30 - 0x07009E38
-static const Ambient wf_seg7_light_07009E30 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07009E38 - 0x07009E48
-static const Light wf_seg7_light_07009E38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07009E30 - 0x07009E48
+static const Lights1 wf_seg7_lights_07009E30 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07009E48 - 0x07009F48
static const Vtx wf_seg7_vertex_07009E48[] = {
@@ -63,8 +59,8 @@ static const Gfx wf_seg7_dl_0700A0A8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07009E38, 1),
- gsSPLight(&wf_seg7_light_07009E30, 2),
+ gsSPLight(&wf_seg7_lights_07009E30.l, 1),
+ gsSPLight(&wf_seg7_lights_07009E30.a, 2),
gsSPVertex(wf_seg7_vertex_07009E48, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 3, 6, 7, 0x0),
diff --git a/levels/wf/areas/1/15/1.inc.c b/levels/wf/areas/1/15/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700A1E0 - 0x0700A1E8
-static const Ambient wf_seg7_light_0700A1E0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700A1E8 - 0x0700A1F8
-static const Light wf_seg7_light_0700A1E8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700A1E0 - 0x0700A1F8
+static const Lights1 wf_seg7_lights_0700A1E0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700A1F8 - 0x0700A2E8
static const Vtx wf_seg7_vertex_0700A1F8[] = {
@@ -161,8 +157,8 @@ static const Gfx wf_seg7_dl_0700A8F8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700A1E8, 1),
- gsSPLight(&wf_seg7_light_0700A1E0, 2),
+ gsSPLight(&wf_seg7_lights_0700A1E0.l, 1),
+ gsSPLight(&wf_seg7_lights_0700A1E0.a, 2),
gsSPVertex(wf_seg7_vertex_0700A1F8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/15/2.inc.c b/levels/wf/areas/1/15/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700AC70 - 0x0700AC78
-static const Ambient wf_seg7_light_0700AC70 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700AC78 - 0x0700AC88
-static const Light wf_seg7_light_0700AC78 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700AC70 - 0x0700AC88
+static const Lights1 wf_seg7_lights_0700AC70 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700AC88 - 0x0700ACE8
static const Vtx wf_seg7_vertex_0700AC88[] = {
@@ -43,8 +39,8 @@ static const Gfx wf_seg7_dl_0700ADE8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700AC78, 1),
- gsSPLight(&wf_seg7_light_0700AC70, 2),
+ gsSPLight(&wf_seg7_lights_0700AC70.l, 1),
+ gsSPLight(&wf_seg7_lights_0700AC70.a, 2),
gsSPVertex(wf_seg7_vertex_0700AC88, 6, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 0, 2, 4, 0x0, 0, 5, 3, 0x0),
diff --git a/levels/wf/areas/1/16/model.inc.c b/levels/wf/areas/1/16/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700B028 - 0x0700B030
-static const Ambient wf_seg7_light_0700B028 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700B030 - 0x0700B040
-static const Light wf_seg7_light_0700B030 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700B028 - 0x0700B040
+static const Lights1 wf_seg7_lights_0700B028 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700B040 - 0x0700B070
static const Vtx wf_seg7_vertex_0700B040[] = {
@@ -166,8 +162,8 @@ static const Gfx wf_seg7_dl_0700B750[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700B030, 1),
- gsSPLight(&wf_seg7_light_0700B028, 2),
+ gsSPLight(&wf_seg7_lights_0700B028.l, 1),
+ gsSPLight(&wf_seg7_lights_0700B028.a, 2),
gsSPVertex(wf_seg7_vertex_0700B040, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/17/model.inc.c b/levels/wf/areas/1/17/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BB18 - 0x0700BB20
-static const Ambient wf_seg7_light_0700BB18 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700BB20 - 0x0700BB30
-static const Light wf_seg7_light_0700BB20 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BB18 - 0x0700BB30
+static const Lights1 wf_seg7_lights_0700BB18 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BB30 - 0x0700BC20
static const Vtx wf_seg7_vertex_0700BB30[] = {
@@ -77,8 +73,8 @@ static const Gfx wf_seg7_dl_0700BE30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09005000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700BB20, 1),
- gsSPLight(&wf_seg7_light_0700BB18, 2),
+ gsSPLight(&wf_seg7_lights_0700BB18.l, 1),
+ gsSPLight(&wf_seg7_lights_0700BB18.a, 2),
gsSPVertex(wf_seg7_vertex_0700BB30, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/wf/areas/1/18/model.inc.c b/levels/wf/areas/1/18/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700BFE0 - 0x0700BFE8
-static const Ambient wf_seg7_light_0700BFE0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700BFE8 - 0x0700BFF8
-static const Light wf_seg7_light_0700BFE8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700BFE0 - 0x0700BFF8
+static const Lights1 wf_seg7_lights_0700BFE0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700BFF8 - 0x0700C0E8
static const Vtx wf_seg7_vertex_0700BFF8[] = {
@@ -265,8 +261,8 @@ static const Gfx wf_seg7_dl_0700CC38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700BFE8, 1),
- gsSPLight(&wf_seg7_light_0700BFE0, 2),
+ gsSPLight(&wf_seg7_lights_0700BFE0.l, 1),
+ gsSPLight(&wf_seg7_lights_0700BFE0.a, 2),
gsSPVertex(wf_seg7_vertex_0700BFF8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/19/model.inc.c b/levels/wf/areas/1/19/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700D0A8 - 0x0700D0B0
-static const Ambient wf_seg7_light_0700D0A8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700D0B0 - 0x0700D0C0
-static const Light wf_seg7_light_0700D0B0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D0A8 - 0x0700D0C0
+static const Lights1 wf_seg7_lights_0700D0A8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700D0C0 - 0x0700D1B0
static const Vtx wf_seg7_vertex_0700D0C0[] = {
@@ -47,8 +43,8 @@ static const Gfx wf_seg7_dl_0700D260[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700D0B0, 1),
- gsSPLight(&wf_seg7_light_0700D0A8, 2),
+ gsSPLight(&wf_seg7_lights_0700D0A8.l, 1),
+ gsSPLight(&wf_seg7_lights_0700D0A8.a, 2),
gsSPVertex(wf_seg7_vertex_0700D0C0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 3, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/2/model.inc.c b/levels/wf/areas/1/2/model.inc.c
@@ -1,12 +1,8 @@
-// 0x070051C8 - 0x070051D0
-static const Ambient wf_seg7_light_070051C8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070051D0 - 0x070051E0
-static const Light wf_seg7_light_070051D0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070051C8 - 0x070051E0
+static const Lights1 wf_seg7_lights_070051C8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070051E0 - 0x07005260
static const Vtx wf_seg7_vertex_070051E0[] = {
@@ -25,8 +21,8 @@ static const Gfx wf_seg7_dl_07005260[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wf_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_070051D0, 1),
- gsSPLight(&wf_seg7_light_070051C8, 2),
+ gsSPLight(&wf_seg7_lights_070051C8.l, 1),
+ gsSPLight(&wf_seg7_lights_070051C8.a, 2),
gsSPVertex(wf_seg7_vertex_070051E0, 8, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/wf/areas/1/5/1.inc.c b/levels/wf/areas/1/5/1.inc.c
@@ -1,12 +1,8 @@
-// 0x070056C0 - 0x070056C8
-static const Ambient wf_seg7_light_070056C0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070056C8 - 0x070056D8
-static const Light wf_seg7_light_070056C8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x070056C0 - 0x070056D8
+static const Lights1 wf_seg7_lights_070056C0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070056D8 - 0x070057C8
static const Vtx wf_seg7_vertex_070056D8[] = {
@@ -123,8 +119,8 @@ static const Gfx wf_seg7_dl_07005C38[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_070056C8, 1),
- gsSPLight(&wf_seg7_light_070056C0, 2),
+ gsSPLight(&wf_seg7_lights_070056C0.l, 1),
+ gsSPLight(&wf_seg7_lights_070056C0.a, 2),
gsSPVertex(wf_seg7_vertex_070056D8, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 5, 4, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/5/2.inc.c b/levels/wf/areas/1/5/2.inc.c
@@ -1,12 +1,8 @@
-// 0x07005E48 - 0x07005E50
-static const Ambient wf_seg7_light_07005E48 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07005E50 - 0x07005E60
-static const Light wf_seg7_light_07005E50 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005E48 - 0x07005E60
+static const Lights1 wf_seg7_lights_07005E48 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07005E60 - 0x07005EA0
static const Vtx wf_seg7_vertex_07005E60[] = {
@@ -21,8 +17,8 @@ static const Gfx wf_seg7_dl_07005EA0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09009800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07005E50, 1),
- gsSPLight(&wf_seg7_light_07005E48, 2),
+ gsSPLight(&wf_seg7_lights_07005E48.l, 1),
+ gsSPLight(&wf_seg7_lights_07005E48.a, 2),
gsSPVertex(wf_seg7_vertex_07005E60, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/6/1.inc.c b/levels/wf/areas/1/6/1.inc.c
@@ -1,12 +1,8 @@
-// 0x07005F58 - 0x07005F60
-static const Ambient wf_seg7_light_07005F58 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07005F60 - 0x07005F70
-static const Light wf_seg7_light_07005F60 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07005F58 - 0x07005F70
+static const Lights1 wf_seg7_lights_07005F58 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07005F70 - 0x07006060
static const Vtx wf_seg7_vertex_07005F70[] = {
@@ -100,8 +96,8 @@ static const Gfx wf_seg7_dl_070063A0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07005F60, 1),
- gsSPLight(&wf_seg7_light_07005F58, 2),
+ gsSPLight(&wf_seg7_lights_07005F58.l, 1),
+ gsSPLight(&wf_seg7_lights_07005F58.a, 2),
gsSPVertex(wf_seg7_vertex_07005F70, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 4, 6, 5, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/6/2.inc.c b/levels/wf/areas/1/6/2.inc.c
@@ -1,12 +1,8 @@
-// 0x07006558 - 0x07006560
-static const Ambient wf_seg7_light_07006558 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07006560 - 0x07006570
-static const Light wf_seg7_light_07006560 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07006558 - 0x07006570
+static const Lights1 wf_seg7_lights_07006558 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07006570 - 0x070065B0
static const Vtx wf_seg7_vertex_07006570[] = {
@@ -21,8 +17,8 @@ static const Gfx wf_seg7_dl_070065B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07006560, 1),
- gsSPLight(&wf_seg7_light_07006558, 2),
+ gsSPLight(&wf_seg7_lights_07006558.l, 1),
+ gsSPLight(&wf_seg7_lights_07006558.a, 2),
gsSPVertex(wf_seg7_vertex_07006570, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/7/model.inc.c b/levels/wf/areas/1/7/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07006668 - 0x07006670
-static const Ambient wf_seg7_light_07006668 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x07006670 - 0x07006680
-static const Light wf_seg7_light_07006670 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07006668 - 0x07006680
+static const Lights1 wf_seg7_lights_07006668 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x07006680 - 0x070066C0
static const Vtx wf_seg7_vertex_07006680[] = {
@@ -37,8 +33,8 @@ static const Gfx wf_seg7_dl_07006780[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_07006670, 1),
- gsSPLight(&wf_seg7_light_07006668, 2),
+ gsSPLight(&wf_seg7_lights_07006668.l, 1),
+ gsSPLight(&wf_seg7_lights_07006668.a, 2),
gsSPVertex(wf_seg7_vertex_07006680, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/areas/1/9/model.inc.c b/levels/wf/areas/1/9/model.inc.c
@@ -1,12 +1,8 @@
-// 0x07007298 - 0x070072A0
-static const Ambient wf_seg7_light_07007298 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x070072A0 - 0x070072B0
-static const Light wf_seg7_light_070072A0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07007298 - 0x070072B0
+static const Lights1 wf_seg7_lights_07007298 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x070072B0 - 0x070073A0
static const Vtx wf_seg7_vertex_070072B0[] = {
@@ -51,8 +47,8 @@ static const Gfx wf_seg7_dl_07007450[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_070072A0, 1),
- gsSPLight(&wf_seg7_light_07007298, 2),
+ gsSPLight(&wf_seg7_lights_07007298.l, 1),
+ gsSPLight(&wf_seg7_lights_07007298.a, 2),
gsSPVertex(wf_seg7_vertex_070072B0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/areas/1/geo.inc.c b/levels/wf/areas/1/geo.inc.c
@@ -28,7 +28,7 @@ const GeoLayout wf_geo_000BF8[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/wf/areas/1/macro.inc.c b/levels/wf/areas/1/macro.inc.c
@@ -16,13 +16,13 @@ const MacroObject wf_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_hidden_1up_in_pole, /*yaw*/ 0, /*pos*/ -2500, 4560, -256),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ 0, 2650, 2900),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_hidden_1up, /*yaw*/ 0, /*pos*/ -250, 2650, 2400, /*behParam*/ 2),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ 4200, 256, 5160, /*behParam*/ 18),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2540, 2560, -900, /*behParam*/ 36),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 1600, 2560, 2600, /*behParam*/ 42),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2705, 2560, 59, /*behParam*/ 51),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 3460, 2304, -40, /*behParam*/ 96),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 315, /*pos*/ 4200, 256, 5160, /*behParam*/ DIALOG_018),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ -2540, 2560, -900, /*behParam*/ DIALOG_036),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 1600, 2560, 2600, /*behParam*/ DIALOG_042),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2705, 2560, 59, /*behParam*/ DIALOG_051),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 180, /*pos*/ 3460, 2304, -40, /*behParam*/ DIALOG_096),
MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_cannon_closed, /*yaw*/ 0, /*pos*/ -1844, 1026, 3893, /*behParam*/ 0x40),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2932, 386, -157, /*behParam*/ 78),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 270, /*pos*/ -2932, 386, -157, /*behParam*/ DIALOG_078),
MACRO_OBJECT(/*preset*/ macro_hidden_1up_trigger, /*yaw*/ 0, /*pos*/ -500, 2650, 2900),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ -250, 2650, 2970),
MACRO_OBJECT(/*preset*/ macro_red_coin, /*yaw*/ 0, /*pos*/ 1746, 3620, -3120),
@@ -38,8 +38,8 @@ const MacroObject wf_seg7_macro_objs[] = {
MACRO_OBJECT(/*preset*/ macro_coin_ring_horizontal, /*yaw*/ 0, /*pos*/ 1558, 922, 2329),
MACRO_OBJECT(/*preset*/ macro_coin_line_horizontal, /*yaw*/ 0, /*pos*/ 3396, 1380, 3280),
MACRO_OBJECT(/*preset*/ macro_coin_ring_horizontal_flying, /*yaw*/ 0, /*pos*/ 3234, 3345, -1787),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 4800, 256, 3000, /*behParam*/ 104),
- MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 2930, 1075, -3740, /*behParam*/ 113),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 0, /*pos*/ 4800, 256, 3000, /*behParam*/ DIALOG_104),
+ MACRO_OBJECT_WITH_BEH_PARAM(/*preset*/ macro_wooden_signpost, /*yaw*/ 90, /*pos*/ 2930, 1075, -3740, /*behParam*/ DIALOG_113),
MACRO_OBJECT(/*preset*/ macro_breakable_box_small, /*yaw*/ 0, /*pos*/ 4320, 256, 1880),
MACRO_OBJECT(/*preset*/ macro_breakable_box_small, /*yaw*/ 0, /*pos*/ -2940, 384, -1320),
MACRO_OBJECT(/*preset*/ macro_butterfly_triplet_2, /*yaw*/ 0, /*pos*/ 4574, 300, 1130),
diff --git a/levels/wf/beta_extending_platform/model.inc.c b/levels/wf/beta_extending_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700EBB8 - 0x0700EBC0
-static const Ambient wf_seg7_light_0700EBB8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700EBC0 - 0x0700EBD0
-static const Light wf_seg7_light_0700EBC0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EBB8 - 0x0700EBD0
+static const Lights1 wf_seg7_lights_0700EBB8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700EBD0 - 0x0700ECC0
static const Vtx wf_seg7_vertex_0700EBD0[] = {
@@ -43,8 +39,8 @@ static const Gfx wf_seg7_dl_0700ED30[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700EBC0, 1),
- gsSPLight(&wf_seg7_light_0700EBB8, 2),
+ gsSPLight(&wf_seg7_lights_0700EBB8.l, 1),
+ gsSPLight(&wf_seg7_lights_0700EBB8.a, 2),
gsSPVertex(wf_seg7_vertex_0700EBD0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/breakable_wall_left/model.inc.c b/levels/wf/breakable_wall_left/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F220 - 0x0700F228
-static const Ambient wf_seg7_light_0700F220 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700F228 - 0x0700F238
-static const Light wf_seg7_light_0700F228 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F220 - 0x0700F238
+static const Lights1 wf_seg7_lights_0700F220 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F238 - 0x0700F268
static const Vtx wf_seg7_vertex_0700F238[] = {
@@ -30,8 +26,8 @@ static const Gfx wf_seg7_dl_0700F2C8[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700F228, 1),
- gsSPLight(&wf_seg7_light_0700F220, 2),
+ gsSPLight(&wf_seg7_lights_0700F220.l, 1),
+ gsSPLight(&wf_seg7_lights_0700F220.a, 2),
gsSPVertex(wf_seg7_vertex_0700F238, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/breakable_wall_right/model.inc.c b/levels/wf/breakable_wall_right/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F088 - 0x0700F090
-static const Ambient wf_seg7_light_0700F088 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700F090 - 0x0700F0A0
-static const Light wf_seg7_light_0700F090 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F088 - 0x0700F0A0
+static const Lights1 wf_seg7_lights_0700F088 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F0A0 - 0x0700F0D0
static const Vtx wf_seg7_vertex_0700F0A0[] = {
@@ -30,8 +26,8 @@ static const Gfx wf_seg7_dl_0700F130[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09001000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700F090, 1),
- gsSPLight(&wf_seg7_light_0700F088, 2),
+ gsSPLight(&wf_seg7_lights_0700F088.l, 1),
+ gsSPLight(&wf_seg7_lights_0700F088.a, 2),
gsSPVertex(wf_seg7_vertex_0700F0A0, 3, 0),
gsSP1Triangle( 0, 1, 2, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/extending_platform/model.inc.c b/levels/wf/extending_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700EE30 - 0x0700EE38
-static const Ambient wf_seg7_light_0700EE30 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700EE38 - 0x0700EE48
-static const Light wf_seg7_light_0700EE38 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EE30 - 0x0700EE48
+static const Lights1 wf_seg7_lights_0700EE30 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700EE48 - 0x0700EF48
static const Vtx wf_seg7_vertex_0700EE48[] = {
@@ -41,8 +37,8 @@ static const Gfx wf_seg7_dl_0700EF88[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700EE38, 1),
- gsSPLight(&wf_seg7_light_0700EE30, 2),
+ gsSPLight(&wf_seg7_lights_0700EE30.l, 1),
+ gsSPLight(&wf_seg7_lights_0700EE30.a, 2),
gsSPVertex(wf_seg7_vertex_0700EE48, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 7, 5, 0x0),
diff --git a/levels/wf/kickable_board/1.inc.c b/levels/wf/kickable_board/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F3B8 - 0x0700F3C0
-static const Ambient wf_seg7_light_0700F3B8 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700F3C0 - 0x0700F3D0
-static const Light wf_seg7_light_0700F3C0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F3B8 - 0x0700F3D0
+static const Lights1 wf_seg7_lights_0700F3B8 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F3D0 - 0x0700F4C0
static const Vtx wf_seg7_vertex_0700F3D0[] = {
@@ -47,8 +43,8 @@ static const Gfx wf_seg7_dl_0700F570[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700F3C0, 1),
- gsSPLight(&wf_seg7_light_0700F3B8, 2),
+ gsSPLight(&wf_seg7_lights_0700F3B8.l, 1),
+ gsSPLight(&wf_seg7_lights_0700F3B8.a, 2),
gsSPVertex(wf_seg7_vertex_0700F3D0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/large_bomp/model.inc.c b/levels/wf/large_bomp/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700DA68 - 0x0700DA70
-static const Ambient wf_seg7_light_0700DA68 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700DA70 - 0x0700DA80
-static const Light wf_seg7_light_0700DA70 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700DA68 - 0x0700DA80
+static const Lights1 wf_seg7_lights_0700DA68 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700DA80 - 0x0700DB70
static const Vtx wf_seg7_vertex_0700DA80[] = {
@@ -71,8 +67,8 @@ static const Gfx wf_seg7_dl_0700DD20[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700DA70, 1),
- gsSPLight(&wf_seg7_light_0700DA68, 2),
+ gsSPLight(&wf_seg7_lights_0700DA68.l, 1),
+ gsSPLight(&wf_seg7_lights_0700DA68.a, 2),
gsSPVertex(wf_seg7_vertex_0700DA80, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/wf/leveldata.c b/levels/wf/leveldata.c
@@ -6,6 +6,7 @@
#include "macro_preset_names.h"
#include "special_preset_names.h"
#include "textures.h"
+#include "dialog_ids.h"
#include "make_const_nonconst.h"
#include "levels/wf/texture.inc.c"
diff --git a/levels/wf/rotating_wooden_platform/1.inc.c b/levels/wf/rotating_wooden_platform/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700E440 - 0x0700E448
-static const Ambient wf_seg7_light_0700E440 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700E448 - 0x0700E458
-static const Light wf_seg7_light_0700E448 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E440 - 0x0700E458
+static const Lights1 wf_seg7_lights_0700E440 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E458 - 0x0700E548
static const Vtx wf_seg7_vertex_0700E458[] = {
@@ -61,8 +57,8 @@ static const Gfx wf_seg7_dl_0700E698[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700E448, 1),
- gsSPLight(&wf_seg7_light_0700E440, 2),
+ gsSPLight(&wf_seg7_lights_0700E440.l, 1),
+ gsSPLight(&wf_seg7_lights_0700E440.a, 2),
gsSPVertex(wf_seg7_vertex_0700E458, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 6, 7, 8, 0x0, 9, 10, 11, 0x0),
diff --git a/levels/wf/rotating_wooden_platform/2.inc.c b/levels/wf/rotating_wooden_platform/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700E7D0 - 0x0700E7D8
-static const Ambient wf_seg7_light_0700E7D0 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700E7D8 - 0x0700E7E8
-static const Light wf_seg7_light_0700E7D8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E7D0 - 0x0700E7E8
+static const Lights1 wf_seg7_lights_0700E7D0 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E7E8 - 0x0700E8E8
static const Vtx wf_seg7_vertex_0700E7E8[] = {
@@ -40,8 +36,8 @@ static const Gfx wf_seg7_dl_0700E918[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09006800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700E7D8, 1),
- gsSPLight(&wf_seg7_light_0700E7D0, 2),
+ gsSPLight(&wf_seg7_lights_0700E7D0.l, 1),
+ gsSPLight(&wf_seg7_lights_0700E7D0.a, 2),
gsSPVertex(wf_seg7_vertex_0700E7E8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 4, 6, 7, 0x0),
diff --git a/levels/wf/script.c b/levels/wf/script.c
@@ -3,6 +3,7 @@
#include "behavior_data.h"
#include "model_ids.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "segment_symbols.h"
#include "level_commands.h"
@@ -142,18 +143,18 @@ const LevelScript level_wf_entry[] = {
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2600, 1256, 5120, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps74),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -2925, 2560, -947, /*angle*/ 0, 19, 0, /*behParam*/ 0x000B0000, /*beh*/ bhvFadingWarp),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 2548, 1075, -3962, /*angle*/ 0, 51, 0, /*behParam*/ 0x000C0000, /*beh*/ bhvFadingWarp),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0B, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0x0C, /*destLevel*/ 0x18, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x01, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0B, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0C, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0C, /*destLevel*/ LEVEL_WF, /*destArea*/ 0x01, /*destNode*/ 0x0B, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x34, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x66, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
JUMP_LINK(script_func_local_3),
JUMP_LINK(script_func_local_4),
TERRAIN(/*terrainData*/ wf_seg7_collision_070102D8),
MACRO_OBJECTS(/*objList*/ wf_seg7_macro_objs),
- SHOW_DIALOG(/*index*/ 0x00, /*dialogid*/ 0x1E),
+ SHOW_DIALOG(/*index*/ 0x00, DIALOG_030),
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0005, /*seq*/ SEQ_LEVEL_GRASS),
TERRAIN_TYPE(/*terrainType*/ TERRAIN_STONE),
END_AREA(),
diff --git a/levels/wf/sliding_platform/model.inc.c b/levels/wf/sliding_platform/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700EA28 - 0x0700EA30
-static const Ambient wf_seg7_light_0700EA28 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700EA30 - 0x0700EA40
-static const Light wf_seg7_light_0700EA30 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700EA28 - 0x0700EA40
+static const Lights1 wf_seg7_lights_0700EA28 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700EA40 - 0x0700EA80
static const Vtx wf_seg7_vertex_0700EA40[] = {
@@ -29,8 +25,8 @@ static const Gfx wf_seg7_dl_0700EAC0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700EA30, 1),
- gsSPLight(&wf_seg7_light_0700EA28, 2),
+ gsSPLight(&wf_seg7_lights_0700EA28.l, 1),
+ gsSPLight(&wf_seg7_lights_0700EA28.a, 2),
gsSPVertex(wf_seg7_vertex_0700EA40, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/small_bomp/1.inc.c b/levels/wf/small_bomp/1.inc.c
@@ -1,12 +1,8 @@
-// 0x0700D370 - 0x0700D378
-static const Ambient wf_seg7_light_0700D370 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700D378 - 0x0700D388
-static const Light wf_seg7_light_0700D378 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D370 - 0x0700D388
+static const Lights1 wf_seg7_lights_0700D370 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700D388 - 0x0700D488
static const Vtx wf_seg7_vertex_0700D388[] = {
@@ -69,8 +65,8 @@ static const Gfx wf_seg7_dl_0700D608[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700D378, 1),
- gsSPLight(&wf_seg7_light_0700D370, 2),
+ gsSPLight(&wf_seg7_lights_0700D370.l, 1),
+ gsSPLight(&wf_seg7_lights_0700D370.a, 2),
gsSPVertex(wf_seg7_vertex_0700D388, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/small_bomp/2.inc.c b/levels/wf/small_bomp/2.inc.c
@@ -1,12 +1,8 @@
-// 0x0700D780 - 0x0700D788
-static const Ambient wf_seg7_light_0700D780 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700D788 - 0x0700D798
-static const Light wf_seg7_light_0700D788 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700D780 - 0x0700D798
+static const Lights1 wf_seg7_lights_0700D780 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700D798 - 0x0700D898
static const Vtx wf_seg7_vertex_0700D798[] = {
@@ -51,8 +47,8 @@ static const Gfx wf_seg7_dl_0700D938[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09008000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700D788, 1),
- gsSPLight(&wf_seg7_light_0700D780, 2),
+ gsSPLight(&wf_seg7_lights_0700D780.l, 1),
+ gsSPLight(&wf_seg7_lights_0700D780.a, 2),
gsSPVertex(wf_seg7_vertex_0700D798, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 3, 1, 0x0),
gsSP2Triangles( 4, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/tower_door/model.inc.c b/levels/wf/tower_door/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700F758 - 0x0700F760
-static const Ambient wf_seg7_light_0700F758 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700F760 - 0x0700F770
-static const Light wf_seg7_light_0700F760 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700F758 - 0x0700F770
+static const Lights1 wf_seg7_lights_0700F758 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700F770 - 0x0700F7B0
static const Vtx wf_seg7_vertex_0700F770[] = {
@@ -21,8 +17,8 @@ static const Gfx wf_seg7_dl_0700F7B0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09007000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700F760, 1),
- gsSPLight(&wf_seg7_light_0700F758, 2),
+ gsSPLight(&wf_seg7_lights_0700F758.l, 1),
+ gsSPLight(&wf_seg7_lights_0700F758.a, 2),
gsSPVertex(wf_seg7_vertex_0700F770, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPEndDisplayList(),
diff --git a/levels/wf/tumbling_bridge_far/model.inc.c b/levels/wf/tumbling_bridge_far/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700E160 - 0x0700E168
-static const Ambient wf_seg7_light_0700E160 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700E168 - 0x0700E178
-static const Light wf_seg7_light_0700E168 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700E160 - 0x0700E178
+static const Lights1 wf_seg7_lights_0700E160 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700E178 - 0x0700E278
static const Vtx wf_seg7_vertex_0700E178[] = {
@@ -48,8 +44,8 @@ static const Gfx wf_seg7_dl_0700E328[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700E168, 1),
- gsSPLight(&wf_seg7_light_0700E160, 2),
+ gsSPLight(&wf_seg7_lights_0700E160.l, 1),
+ gsSPLight(&wf_seg7_lights_0700E160.a, 2),
gsSPVertex(wf_seg7_vertex_0700E178, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wf/tumbling_bridge_near/model.inc.c b/levels/wf/tumbling_bridge_near/model.inc.c
@@ -1,12 +1,8 @@
-// 0x0700DE98 - 0x0700DEA0
-static const Ambient wf_seg7_light_0700DE98 = {
- {{0x66, 0x66, 0x66}, 0, {0x66, 0x66, 0x66}, 0}
-};
-
-// 0x0700DEA0 - 0x0700DEB0
-static const Light wf_seg7_light_0700DEA0 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700DE98 - 0x0700DEB0
+static const Lights1 wf_seg7_lights_0700DE98 = gdSPDefLights1(
+ 0x66, 0x66, 0x66,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700DEB0 - 0x0700DFA0
static const Vtx wf_seg7_vertex_0700DEB0[] = {
@@ -47,8 +43,8 @@ static const Gfx wf_seg7_dl_0700E050[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, grass_09004000),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wf_seg7_light_0700DEA0, 1),
- gsSPLight(&wf_seg7_light_0700DE98, 2),
+ gsSPLight(&wf_seg7_lights_0700DE98.l, 1),
+ gsSPLight(&wf_seg7_lights_0700DE98.a, 2),
gsSPVertex(wf_seg7_vertex_0700DEB0, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
diff --git a/levels/wmotr/areas/1/geo.inc.c b/levels/wmotr/areas/1/geo.inc.c
@@ -25,7 +25,7 @@ const GeoLayout wmotr_geo_0001F0[] = {
GEO_CLOSE_NODE(),
GEO_ZBUFFER(0),
GEO_OPEN_NODE(),
- GEO_ASM(0, Geo18_802CD1E8),
+ GEO_ASM(0, geo_cannon_circle_base),
GEO_CLOSE_NODE(),
GEO_CLOSE_NODE(),
GEO_END(),
diff --git a/levels/wmotr/areas/1/model.inc.c b/levels/wmotr/areas/1/model.inc.c
@@ -1,22 +1,14 @@
-// 0x07001800 - 0x07001808
-static const Ambient wmotr_seg7_light_07001800 = {
- {{0xbf, 0xbf, 0xbf}, 0, {0xbf, 0xbf, 0xbf}, 0}
-};
-
-// 0x07001808 - 0x07001818
-static const Light wmotr_seg7_light_07001808 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
-
-// 0x07001818 - 0x07001820
-static const Ambient wmotr_seg7_light_07001818 = {
- {{0x72, 0x72, 0x72}, 0, {0x72, 0x72, 0x72}, 0}
-};
-
-// 0x07001820 - 0x07001830
-static const Light wmotr_seg7_light_07001820 = {
- {{0x99, 0x99, 0x99}, 0, {0x99, 0x99, 0x99}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x07001800 - 0x07001818
+static const Lights1 wmotr_seg7_lights_07001800 = gdSPDefLights1(
+ 0xbf, 0xbf, 0xbf,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
+
+// 0x07001818 - 0x07001830
+static const Lights1 wmotr_seg7_lights_07001818 = gdSPDefLights1(
+ 0x72, 0x72, 0x72,
+ 0x99, 0x99, 0x99, 0x28, 0x28, 0x28
+);
// 0x07001830 - 0x07001920
static const Vtx wmotr_seg7_vertex_07001830[] = {
@@ -2423,8 +2415,8 @@ static const Gfx wmotr_seg7_dl_07008EF0[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07001600),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 8 * 32 - 1, CALC_DXT(8, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wmotr_seg7_light_07001808, 1),
- gsSPLight(&wmotr_seg7_light_07001800, 2),
+ gsSPLight(&wmotr_seg7_lights_07001800.l, 1),
+ gsSPLight(&wmotr_seg7_lights_07001800.a, 2),
gsSPVertex(wmotr_seg7_vertex_07001830, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2476,8 +2468,8 @@ static const Gfx wmotr_seg7_dl_07009148[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000800),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 16 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wmotr_seg7_light_07001820, 1),
- gsSPLight(&wmotr_seg7_light_07001818, 2),
+ gsSPLight(&wmotr_seg7_lights_07001818.l, 1),
+ gsSPLight(&wmotr_seg7_lights_07001818.a, 2),
gsSPVertex(wmotr_seg7_vertex_07002010, 15, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 6, 4, 0x0, 7, 8, 9, 0x0),
@@ -2521,8 +2513,8 @@ static const Gfx wmotr_seg7_dl_070092A0[] = {
gsSP1Triangle( 0, 14, 1, 0x0),
gsSPVertex(wmotr_seg7_vertex_07002630, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
- gsSPLight(&wmotr_seg7_light_07001808, 1),
- gsSPLight(&wmotr_seg7_light_07001800, 2),
+ gsSPLight(&wmotr_seg7_lights_07001800.l, 1),
+ gsSPLight(&wmotr_seg7_lights_07001800.a, 2),
gsSPVertex(wmotr_seg7_vertex_07002670, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 3, 4, 5, 0x0),
gsSP2Triangles( 3, 5, 6, 0x0, 7, 8, 9, 0x0),
@@ -3384,15 +3376,11 @@ const Gfx wmotr_seg7_dl_0700C1F8[] = {
gsSPEndDisplayList(),
};
-// 0x0700C2A0 - 0x0700C2A8
-static const Ambient wmotr_seg7_light_0700C2A0 = {
- {{0x3f, 0x3f, 0x3f}, 0, {0x3f, 0x3f, 0x3f}, 0}
-};
-
-// 0x0700C2A8 - 0x0700C2B8
-static const Light wmotr_seg7_light_0700C2A8 = {
- {{0xff, 0xff, 0xff}, 0, {0xff, 0xff, 0xff}, 0, {0x28, 0x28, 0x28}, 0}
-};
+// 0x0700C2A0 - 0x0700C2B8
+static const Lights1 wmotr_seg7_lights_0700C2A0 = gdSPDefLights1(
+ 0x3f, 0x3f, 0x3f,
+ 0xff, 0xff, 0xff, 0x28, 0x28, 0x28
+);
// 0x0700C2B8 - 0x0700C3B8
static const Vtx wmotr_seg7_vertex_0700C2B8[] = {
@@ -4020,8 +4008,8 @@ static const Gfx wmotr_seg7_dl_0700E188[] = {
gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, wmotr_seg7_texture_07000C00),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsSPLight(&wmotr_seg7_light_0700C2A8, 1),
- gsSPLight(&wmotr_seg7_light_0700C2A0, 2),
+ gsSPLight(&wmotr_seg7_lights_0700C2A0.l, 1),
+ gsSPLight(&wmotr_seg7_lights_0700C2A0.a, 2),
gsSPVertex(wmotr_seg7_vertex_0700C2B8, 16, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSP2Triangles( 2, 4, 5, 0x0, 2, 5, 6, 0x0),
diff --git a/levels/wmotr/script.c b/levels/wmotr/script.c
@@ -49,10 +49,10 @@ const LevelScript level_wmotr_entry[] = {
AREA(/*index*/ 1, wmotr_geo_0001F0),
OBJECT(/*model*/ MODEL_NONE, /*pos*/ -67, 2669, -16, /*angle*/ 0, 270, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvWarps64),
- WARP_NODE(/*id*/ 0x0A, /*destLevel*/ 0x1F, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF0, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x38, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF1, /*destLevel*/ 0x06, /*destArea*/ 0x02, /*destNode*/ 0x6D, /*flags*/ WARP_NO_CHECKPOINT),
- WARP_NODE(/*id*/ 0xF3, /*destLevel*/ 0x10, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_WMOTR, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x38, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x02, /*destNode*/ 0x6D, /*flags*/ WARP_NO_CHECKPOINT),
+ WARP_NODE(/*id*/ 0xF3, /*destLevel*/ LEVEL_CASTLE_GROUNDS, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
JUMP_LINK(script_func_local_1),
JUMP_LINK(script_func_local_2),
TERRAIN(/*terrainData*/ wmotr_seg7_collision),
diff --git a/rename_sym.sh b/rename_sym.sh
@@ -10,4 +10,4 @@ fi
#echo "Replace $1 with $2?"
#read
-grep -rl "$1" assets/*.s enhancements/**.{c,h,s} lib/**/*.{c,h} asm/**/*.s bin/*.s data/*.s levels/**/*.s actors/**/*.c src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
+grep -rl "$1" text/**/*.{c,h} assets/**/*.c enhancements/**/*.{c,h,s} lib/**/*.{c,h,s} asm/**/*.s bin/**/*.c data/*.c levels/**/*.c actors/**/*.c src/**/*.{c,h} include/**/*.{h,in} undefined_syms.txt | xargs sed -i "s/\b$1\b/$2/g"
diff --git a/sm64.ld b/sm64.ld
@@ -75,6 +75,11 @@ SECTIONS
}
END_SEG(boot)
+ . = 0x80000400;
+ BEGIN_NOLOAD(zbuffer) {
+ BUILD_DIR/src/buffers/zbuffer.o(.bss*);
+ }
+
/* lib/src/__osDevMgrMain.c and lib/src/osCreateViManager.c contain infinite
* loops compiled without -g, which cause the return statements and the .o
* files themselves to be aligned to 32-byte boundaries. But in the binary,
@@ -755,37 +760,13 @@ SECTIONS
MIO0_SEG(inside, 0x09000000)
MIO0_SEG(effect, 0x0B000000)
- STANDARD_LEVEL(bbh)
- STANDARD_LEVEL(ccm)
- STANDARD_LEVEL(castle_inside)
- STANDARD_LEVEL(hmc)
- STANDARD_LEVEL(ssl)
- STANDARD_LEVEL(bob)
- STANDARD_LEVEL(sl)
- STANDARD_LEVEL(wdw)
- STANDARD_LEVEL(jrb)
- STANDARD_LEVEL(thi)
- STANDARD_LEVEL(ttc)
- STANDARD_LEVEL(rr)
- STANDARD_LEVEL(castle_grounds)
- STANDARD_LEVEL(bitdw)
- STANDARD_LEVEL(vcutm)
- STANDARD_LEVEL(bitfs)
- STANDARD_LEVEL(sa)
- STANDARD_LEVEL(bits)
- STANDARD_LEVEL(lll)
- STANDARD_LEVEL(ddd)
- STANDARD_LEVEL(wf)
- STANDARD_LEVEL(ending)
- STANDARD_LEVEL(castle_courtyard)
- STANDARD_LEVEL(pss)
- STANDARD_LEVEL(cotmc)
- STANDARD_LEVEL(totwc)
- STANDARD_LEVEL(bowser_1)
- STANDARD_LEVEL(wmotr)
- STANDARD_LEVEL(bowser_2)
- STANDARD_LEVEL(bowser_3)
- STANDARD_LEVEL(ttm)
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8)
+#define DEFINE_LEVEL(_0, _1, _2, folder, _4, _5, _6, _7, _8, _9, _10) STANDARD_LEVEL(folder)
+
+ #include "levels/level_defines.h"
+
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
/* 4E9FA0-? [?] */
BEGIN_SEG(assets, __romPos)
diff --git a/sound/sequences/00_sound_player.s b/sound/sequences/00_sound_player.s
@@ -2757,17 +2757,17 @@ sound_ref .sound_general_boat_tilt1
sound_ref .sound_general_boat_tilt2
sound_ref .sound_general_coin_drop
sound_ref .chan_1429
-sound_ref .sound_general_switch1
+sound_ref .sound_general_pendulum_swing
sound_ref .sound_general_chain_chomp1
sound_ref .sound_general_chain_chomp2
-sound_ref .sound_general_switch2
+sound_ref .sound_general_door_turn_key
sound_ref .sound_general_moving_in_sand
sound_ref .chan_1519
-sound_ref .sound_general_switch3
+sound_ref .sound_general_moving_platform_switch
sound_ref .sound_general_cage_open
sound_ref .sound_general_quiet_pound1
sound_ref .sound_general_break_box
-sound_ref .sound_general_switch4
+sound_ref .sound_general_door_insert_key
sound_ref .sound_general_quiet_pound2
sound_ref .sound_general_big_pound
sound_ref .chan_15CD
@@ -3426,7 +3426,7 @@ layer_note1 51, 0x3, 50
layer_note1 27, 0xa, 75
layer_end
-.sound_general_switch1:
+.sound_general_pendulum_swing:
chan_setbank 4
chan_setinstr 9
chan_setval 50
@@ -3519,7 +3519,7 @@ layer_loop 2
layer_loopend
layer_end
-.sound_general_switch2:
+.sound_general_door_turn_key:
chan_setbank 4
chan_setinstr 9
chan_setlayer 0, .layer_14F2
@@ -3562,7 +3562,7 @@ layer_transpose 1
layer_note1 15, 0x2c, 127
layer_end
-.sound_general_switch3:
+.sound_general_moving_platform_switch:
chan_setbank 4
chan_setinstr 9
chan_setlayer 0, .layer_1539
@@ -3621,7 +3621,7 @@ layer_note1 38, 0x10, 110
layer_note1 27, 0x64, 110
layer_end
-.sound_general_switch4:
+.sound_general_door_insert_key:
chan_setbank 4
chan_setinstr 9
chan_setlayer 0, .layer_1599
diff --git a/src/audio/data.c b/src/audio/data.c
@@ -131,9 +131,9 @@ u8 gDefaultShortNoteDurationTable[16] = {
s8 gVibratoCurve[16] = { 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 96, 104, 112, 120 };
struct AdsrEnvelope gDefaultEnvelope[] = {
- { 4, 32000 }, // go from 0 to 32000 over the course of 16ms
- { 1000, 32000 }, // stay there for 4.16 seconds
- { ADSR_HANG, 0 } // then continue staying there
+ { BSWAP16(4), BSWAP16(32000) }, // go from 0 to 32000 over the course of 16ms
+ { BSWAP16(1000), BSWAP16(32000) }, // stay there for 4.16 seconds
+ { BSWAP16(ADSR_HANG), 0 } // then continue staying there
};
s16 sSineWave[0x40] = {
@@ -375,16 +375,16 @@ s8 sUnused8033EF8 = 24;
struct CtlEntry *gCtlEntries;
s32 gAiFrequency;
u32 D_80226D68;
-s32 D_80226D6C;
+s32 gMaxAudioCmds;
s32 gMaxSimultaneousNotes;
-s32 D_80226D74;
+s32 gSamplesPerFrameTarget;
s32 gMinAiBufferLength;
s16 gTempoInternalToExternal;
s8 gAudioUpdatesPerFrame;
s8 gSoundMode;
-volatile s32 gActiveAudioFrames;
+volatile s32 gAudioFrameCount;
volatile s32 gCurrAudioFrameDmaCount;
s32 gAudioTaskIndex;
@@ -402,4 +402,4 @@ s16 gAiBufferLengths[NUMAIBUFFERS];
u32 gUnused80226E58[0x10];
u16 gUnused80226E98[0x10];
-u32 D_80226EB8;
+u32 gAudioRandom;
diff --git a/src/audio/data.h b/src/audio/data.h
@@ -1,5 +1,5 @@
-#ifndef _AUDIO_DATA_H
-#define _AUDIO_DATA_H
+#ifndef AUDIO_DATA_H
+#define AUDIO_DATA_H
#include "internal.h"
@@ -46,16 +46,16 @@ extern volatile s32 gAudioLoadLock;
extern struct CtlEntry *gCtlEntries;
extern s32 gAiFrequency;
extern u32 D_80226D68;
-extern s32 D_80226D6C;
+extern s32 gMaxAudioCmds;
extern s32 gMaxSimultaneousNotes;
-extern s32 D_80226D74;
+extern s32 gSamplesPerFrameTarget;
extern s32 gMinAiBufferLength;
extern s16 gTempoInternalToExternal;
extern s8 gAudioUpdatesPerFrame; // = 4
extern s8 gSoundMode;
-extern volatile s32 gActiveAudioFrames;
+extern volatile s32 gAudioFrameCount;
extern volatile s32 gCurrAudioFrameDmaCount; // number of DMAs performed during this frame
extern s32 gAudioTaskIndex;
@@ -73,6 +73,6 @@ extern s16 gAiBufferLengths[NUMAIBUFFERS];
extern u32 gUnused80226E58[0x10];
extern u16 gUnused80226E98[0x10];
-extern u32 D_80226EB8;
+extern u32 gAudioRandom;
-#endif /* _AUDIO_DATA_H */
+#endif /* AUDIO_DATA_H */
diff --git a/src/audio/effects.c b/src/audio/effects.c
@@ -57,7 +57,7 @@ void sequence_player_process_sound(struct SequencePlayer *seqPlayer) {
channelVolume =
seqChannel->seqPlayer->fadeVolume * (seqChannel->volume * seqChannel->volumeScale);
- if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_20) != 0) {
+ if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) {
channelVolume *= seqChannel->seqPlayer->muteVolumeScale;
}
@@ -257,7 +257,7 @@ s32 adsr_update(struct AdsrState *adsr) {
// fallthrough
case ADSR_STATE_LOOP:
- adsr->delay = adsr->envelope[adsr->envIndex].delay;
+ adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay);
switch (adsr->delay) {
case ADSR_DISABLE:
adsr->state = ADSR_STATE_DISABLED;
@@ -266,14 +266,14 @@ s32 adsr_update(struct AdsrState *adsr) {
adsr->state = ADSR_STATE_HANG;
break;
case ADSR_GOTO:
- adsr->envIndex = adsr->envelope[adsr->envIndex].arg;
+ adsr->envIndex = BSWAP16(adsr->envelope[adsr->envIndex].arg);
break;
case ADSR_RESTART:
adsr->state = ADSR_STATE_INITIAL;
break;
default:
- adsr->target = adsr->envelope[adsr->envIndex].arg;
+ adsr->target = BSWAP16(adsr->envelope[adsr->envIndex].arg);
adsr->velocity = ((adsr->target - adsr->current) << 0x10) / adsr->delay;
adsr->state = ADSR_STATE_FADE;
adsr->envIndex++;
diff --git a/src/audio/effects.h b/src/audio/effects.h
@@ -1,7 +1,8 @@
-#ifndef _AUDIO_EFFECTS_H
-#define _AUDIO_EFFECTS_H
+#ifndef AUDIO_EFFECTS_H
+#define AUDIO_EFFECTS_H
#include "internal.h"
+#include "platform_info.h"
#define ADSR_STATE_DISABLED 0
#define ADSR_STATE_INITIAL 1
@@ -22,10 +23,18 @@
#define ADSR_GOTO -2
#define ADSR_RESTART -3
+// Envelopes are always stored as big endian, to match sequence files which are
+// byte blobs and can embed envelopes. Hence this byteswapping macro.
+#if IS_BIG_ENDIAN
+#define BSWAP16(x) (x)
+#else
+#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff))
+#endif
+
void sequence_player_process_sound(struct SequencePlayer *seqPlayer);
void note_vibrato_update(struct Note *note);
void note_vibrato_init(struct Note *note);
void adsr_init(struct AdsrState *adsr, struct AdsrEnvelope *envelope, s16 *volOut);
s32 adsr_update(struct AdsrState *adsr);
-#endif /* _AUDIO_EFFECTS_H */
+#endif /* AUDIO_EFFECTS_H */
diff --git a/src/audio/external.c b/src/audio/external.c
@@ -14,21 +14,27 @@
#include "game/room.h"
#include "game/camera.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
+#include "level_table.h"
// N.B. sound banks are different from the audio banks referred to in other
// files. We should really fix our naming to be less ambiguous...
#define MAX_BG_MUSIC_QUEUE_SIZE 6
#define SOUND_BANK_COUNT 10
+#define MAX_CHANNELS_PER_SOUND 1
#define SEQUENCE_NONE 0xFF
+#define SAMPLES_TO_OVERPRODUCE 0x10
+#define EXTRA_BUFFERED_AI_SAMPLES_TARGET 0x40
+
// No-op printf macro which leaves string literals in rodata in IDO. (IDO
// doesn't support variadic macros, so instead they let the parameter list
-// expand to a no-op comma expression.) See goddard/gd_main.h.
-#ifdef __GNUC__
-#define stubbed_printf(...)
-#else
+// expand to a no-op comma expression.) See also goddard/gd_main.h.
+#ifdef __sgi
#define stubbed_printf
+#else
+#define stubbed_printf(...)
#endif
struct Sound {
@@ -66,7 +72,7 @@ s32 gAudioErrorFlags = 0;
s32 sGameLoopTicked = 0;
// Dialog sounds
-// The US difference is the sound for Dialog037 ("I win! You lose! Ha ha ha ha!
+// The US difference is the sound for DIALOG_037 ("I win! You lose! Ha ha ha ha!
// You're no slouch, but I'm a better sledder! Better luck next time!"), spoken
// by Koopa instead of the penguin in JP.
@@ -89,7 +95,7 @@ s32 sGameLoopTicked = 0;
#define DIFF TUXIE
#endif
-u8 sDialogSpeaker[170] = {
+u8 sDialogSpeaker[] = {
// 0 1 2 3 4 5 6 7 8 9
/* 0*/ _, BOMB, BOMB, BOMB, BOMB, KOOPA, KOOPA, KOOPA, _, KOOPA,
/* 1*/ _, _, _, _, _, _, _, KBOMB, _, _,
@@ -110,6 +116,7 @@ u8 sDialogSpeaker[170] = {
/*16*/ _, YOSHI, _, _, _, _, _, _, WIGLR, _
};
#undef _
+STATIC_ASSERT(ARRAY_COUNT(sDialogSpeaker) == DIALOG_COUNT, "change this array if you are adding dialogs");
s32 sDialogSpeakerVoice[15] = {
SOUND_OBJ_UKIKI_CHATTER_LONG,
@@ -150,10 +157,11 @@ u8 sSoundRequestCount = 0;
#define MARIO_IS_IN_AREA 6
#define MARIO_IS_IN_ROOM 7
-#define DYN1(cond1, val1, res) 1 << (15 - cond1) | res, val1
-#define DYN2(cond1, val1, cond2, val2, res) 1 << (15 - cond1) | 1 << (15 - cond2) | res, val1, val2
-#define DYN3(cond1, val1, cond2, val2, cond3, val3, res) \
- 1 << (15 - cond1) | 1 << (15 - cond2) | 1 << (15 - cond3) | res, val1, val2, val3
+#define DYN1(cond1, val1, res) (s16)(1 << (15 - cond1) | res), val1
+#define DYN2(cond1, val1, cond2, val2, res) \
+ (s16)(1 << (15 - cond1) | 1 << (15 - cond2) | res), val1, val2
+#define DYN3(cond1, val1, cond2, val2, cond3, val3, res) \
+ (s16)(1 << (15 - cond1) | 1 << (15 - cond2) | 1 << (15 - cond3) | res), val1, val2, val3
s16 sDynBbh[] = {
SEQ_LEVEL_SPOOKY,
@@ -201,167 +209,58 @@ s16 sDynNone[] = { SEQ_SOUND_PLAYER, 0 };
u8 sCurrentMusicDynamic = 0xff;
u8 sBackgroundMusicForDynamics = SEQUENCE_NONE;
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, leveldyn, _8) leveldyn,
+#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, leveldyn, _10) leveldyn,
+
#define _ sDynNone
-s16 *sLevelDynamics[] = {
+s16 *sLevelDynamics[LEVEL_COUNT] = {
_, // LEVEL_NONE
- _, // LEVEL_UNKNOWN_1
- _, // LEVEL_UNKNOWN_2
- _, // LEVEL_UNKNOWN_3
- sDynBbh, // LEVEL_BBH
- _, // LEVEL_CCM
- _, // LEVEL_CASTLE
- sDynHmc, // LEVEL_HMC
- _, // LEVEL_SSL
- _, // LEVEL_BOB
- _, // LEVEL_SL
- sDynWdw, // LEVEL_WDW
- sDynJrb, // LEVEL_JRB
- _, // LEVEL_THI
- _, // LEVEL_TTC
- _, // LEVEL_RR
- _, // LEVEL_CASTLE_GROUNDS
- _, // LEVEL_BITDW
- _, // LEVEL_VCUTM
- _, // LEVEL_BITFS
- _, // LEVEL_SA
- _, // LEVEL_BITS
- _, // LEVEL_LLL
- sDynDdd, // LEVEL_DDD
- _, // LEVEL_WF
- _, // LEVEL_ENDING
- _, // LEVEL_CASTLE_COURTYARD
- _, // LEVEL_PSS
- _, // LEVEL_COTMC
- _, // LEVEL_TOTWC
- _, // LEVEL_BOWSER_1
- _, // LEVEL_WMOTR
- _, // LEVEL_UNKNOWN_32
- _, // LEVEL_BOWSER_2
- _, // LEVEL_BOWSER_3
- _, // LEVEL_UNKNOWN_35
- _, // LEVEL_TTM
- _, // LEVEL_UNKNOWN_37
- sDynUnk38, // LEVEL_UNKNOWN_38
+ #include "levels/level_defines.h"
};
-STATIC_ASSERT(ARRAY_COUNT(sLevelDynamics) == LEVEL_COUNT, "change this array if you are adding levels");
#undef _
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
struct MusicDynamic {
/*0x0*/ s16 bits1;
- /*0x2*/ u8 unused1;
- /*0x3*/ u8 volScale1; // maybe this is an u16, loaded as u8?
+ /*0x2*/ u16 volScale1;
/*0x4*/ s16 dur1;
/*0x6*/ s16 bits2;
- /*0x8*/ u8 unused2;
- /*0x9*/ u8 volScale2;
+ /*0x8*/ u16 volScale2;
/*0xA*/ s16 dur2;
}; // size = 0xC
struct MusicDynamic sMusicDynamics[8] = {
- { 0x0000, 0, 127, 100, 0x0e43, 0, 0, 100 }, // SEQ_LEVEL_WATER
- { 0x0003, 0, 127, 100, 0x0e40, 0, 0, 100 }, // SEQ_LEVEL_WATER
- { 0x0e43, 0, 127, 200, 0x0000, 0, 0, 200 }, // SEQ_LEVEL_WATER
- { 0x02ff, 0, 127, 100, 0x0100, 0, 0, 100 }, // SEQ_LEVEL_UNDERGROUND
- { 0x03f7, 0, 127, 100, 0x0008, 0, 0, 100 }, // SEQ_LEVEL_UNDERGROUND
- { 0x0070, 0, 127, 10, 0x0000, 0, 0, 100 }, // SEQ_LEVEL_SPOOKY
- { 0x0000, 0, 127, 100, 0x0070, 0, 0, 10 }, // SEQ_LEVEL_SPOOKY
- { 0xffff, 0, 127, 100, 0x0000, 0, 0, 100 }, // any (unused)
+ { 0x0000, 127, 100, 0x0e43, 0, 100 }, // SEQ_LEVEL_WATER
+ { 0x0003, 127, 100, 0x0e40, 0, 100 }, // SEQ_LEVEL_WATER
+ { 0x0e43, 127, 200, 0x0000, 0, 200 }, // SEQ_LEVEL_WATER
+ { 0x02ff, 127, 100, 0x0100, 0, 100 }, // SEQ_LEVEL_UNDERGROUND
+ { 0x03f7, 127, 100, 0x0008, 0, 100 }, // SEQ_LEVEL_UNDERGROUND
+ { 0x0070, 127, 10, 0x0000, 0, 100 }, // SEQ_LEVEL_SPOOKY
+ { 0x0000, 127, 100, 0x0070, 0, 10 }, // SEQ_LEVEL_SPOOKY
+ { 0xffff, 127, 100, 0x0000, 0, 100 }, // any (unused)
};
-u8 gAreaEchoLevel[][3] = {
+#define STUB_LEVEL(_0, _1, _2, _3, echo1, echo2, echo3, _7, _8) { echo1, echo2, echo3 },
+#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, echo1, echo2, echo3, _9, _10) { echo1, echo2, echo3 },
+
+u8 gAreaEchoLevel[LEVEL_COUNT][3] = {
{ 0x00, 0x00, 0x00 }, // LEVEL_NONE
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_1
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_2
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_3
- { 0x28, 0x28, 0x28 }, // LEVEL_BBH
- { 0x10, 0x38, 0x38 }, // LEVEL_CCM
- { 0x20, 0x20, 0x30 }, // LEVEL_CASTLE
- { 0x28, 0x28, 0x28 }, // LEVEL_HMC
- { 0x08, 0x30, 0x30 }, // LEVEL_SSL
- { 0x08, 0x08, 0x08 }, // LEVEL_BOB
- { 0x10, 0x28, 0x28 }, // LEVEL_SL
- { 0x10, 0x18, 0x18 }, // LEVEL_WDW
- { 0x10, 0x18, 0x18 }, // LEVEL_JRB
- { 0x0c, 0x0c, 0x20 }, // LEVEL_THI
- { 0x18, 0x18, 0x18 }, // LEVEL_TTC
- { 0x20, 0x20, 0x20 }, // LEVEL_RR
- { 0x08, 0x08, 0x08 }, // LEVEL_CASTLE_GROUNDS
- { 0x28, 0x28, 0x28 }, // LEVEL_BITDW
- { 0x28, 0x28, 0x28 }, // LEVEL_VCUTM
- { 0x28, 0x28, 0x28 }, // LEVEL_BITFS
- { 0x10, 0x10, 0x10 }, // LEVEL_SA
- { 0x28, 0x28, 0x28 }, // LEVEL_BITS
- { 0x08, 0x30, 0x30 }, // LEVEL_LLL
- { 0x10, 0x20, 0x20 }, // LEVEL_DDD
- { 0x08, 0x08, 0x08 }, // LEVEL_WF
- { 0x00, 0x00, 0x00 }, // LEVEL_ENDING
- { 0x08, 0x08, 0x08 }, // LEVEL_CASTLE_COURTYARD
- { 0x28, 0x28, 0x28 }, // LEVEL_PSS
- { 0x28, 0x28, 0x28 }, // LEVEL_COTMC
- { 0x20, 0x20, 0x20 }, // LEVEL_TOTWC
- { 0x40, 0x40, 0x40 }, // LEVEL_BOWSER_1
- { 0x28, 0x28, 0x28 }, // LEVEL_WMOTR
- { 0x70, 0x00, 0x00 }, // LEVEL_UNKNOWN_32
- { 0x40, 0x40, 0x40 }, // LEVEL_BOWSER_2
- { 0x40, 0x40, 0x40 }, // LEVEL_BOWSER_3
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_35
- { 0x08, 0x08, 0x08 }, // LEVEL_TTM
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_37
- { 0x00, 0x00, 0x00 }, // LEVEL_UNKNOWN_38
+ #include "levels/level_defines.h"
};
-STATIC_ASSERT(ARRAY_COUNT(gAreaEchoLevel) == LEVEL_COUNT, "change this array if you are adding levels");
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
-#ifdef VERSION_JP
-#define VAL_DIFF 25000
-#else
-#define VAL_DIFF 60000
-#endif
+#define STUB_LEVEL(_0, _1, _2, volume, _4, _5, _6, _7, _8) volume,
+#define DEFINE_LEVEL(_0, _1, _2, _3, _4, volume, _6, _7, _8, _9, _10) volume,
-u16 D_80332028[] = {
+u16 D_80332028[LEVEL_COUNT] = {
20000, // LEVEL_NONE
- 20000, // LEVEL_UNKNOWN_1
- 20000, // LEVEL_UNKNOWN_2
- 20000, // LEVEL_UNKNOWN_3
- 28000, // LEVEL_BBH
- 17000, // LEVEL_CCM
- 20000, // LEVEL_CASTLE
- 16000, // LEVEL_HMC
- 15000, // LEVEL_SSL
- 15000, // LEVEL_BOB
- 14000, // LEVEL_SL
- 17000, // LEVEL_WDW
- 20000, // LEVEL_JRB
- 20000, // LEVEL_THI
- 18000, // LEVEL_TTC
- 20000, // LEVEL_RR
- 25000, // LEVEL_CASTLE_GROUNDS
- 16000, // LEVEL_BITDW
- 30000, // LEVEL_VCUTM
- 16000, // LEVEL_BITFS
- 20000, // LEVEL_SA
- 16000, // LEVEL_BITS
- 22000, // LEVEL_LLL
- 17000, // LEVEL_DDD
- 13000, // LEVEL_WF
- 20000, // LEVEL_ENDING
- 20000, // LEVEL_CASTLE_COURTYARD
- 20000, // LEVEL_PSS
- 18000, // LEVEL_COTMC
- 20000, // LEVEL_TOTWC
- VAL_DIFF, // LEVEL_BOWSER_1
- 20000, // LEVEL_WMOTR
- 20000, // LEVEL_UNKNOWN_32
- VAL_DIFF, // LEVEL_BOWSER_2
- VAL_DIFF, // LEVEL_BOWSER_3
- 20000, // LEVEL_UNKNOWN_35
- 15000, // LEVEL_TTM
- 20000, // LEVEL_UNKNOWN_37
- 20000, // LEVEL_UNKNOWN_38
+ #include "levels/level_defines.h"
};
-#undef VAL_DIFF
-
-STATIC_ASSERT(ARRAY_COUNT(D_80332028) == LEVEL_COUNT, "change this array if you are adding levels");
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
#define AUDIO_MAX_DISTANCE US_FLOAT(22000.0)
@@ -407,12 +306,12 @@ u8 sBackgroundMusicDefaultVolume[] = {
STATIC_ASSERT(ARRAY_COUNT(sBackgroundMusicDefaultVolume) == SEQ_COUNT,
"change this array if you are adding sequences");
-u8 gPlayer0CurSeqId = SEQUENCE_NONE;
+u8 sPlayer0CurSeqId = SEQUENCE_NONE;
u8 sMusicDynamicDelay = 0;
u8 D_803320A4[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // pointers to head of list
u8 D_803320B0[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // pointers to head of list
-u8 D_803320BC[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-u8 D_803320C8[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; // sizes of D_80360C38
+u8 D_803320BC[SOUND_BANK_COUNT] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; // only used for debugging
+u8 sMaxChannelsForSoundBank[SOUND_BANK_COUNT] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
// Banks 2 and 7 both grew from 0x30 sounds to 0x40 in size in US.
#ifdef VERSION_JP
@@ -426,8 +325,8 @@ u8 sNumSoundsPerBank[SOUND_BANK_COUNT] = {
#undef BANK27_SIZE
f32 gDefaultSoundArgs[3] = { 0.0f, 0.0f, 0.0f };
-f32 gUnusedSoundArgs[3] = { 1.0f, 1.0f, 1.0f };
-u8 gSoundBankDisabled[16] = { 0 };
+f32 sUnusedSoundArgs[3] = { 1.0f, 1.0f, 1.0f };
+u8 sSoundBankDisabled[16] = { 0 };
u8 D_80332108 = 0;
u8 sHasStartedFadeOut = FALSE;
u16 D_80332110 = 0;
@@ -445,8 +344,8 @@ u8 sUnused8033323C = 0; // never read, set to 0
u16 *gCurrAiBuffer;
struct Sound sSoundRequests[0x100];
struct ChannelVolumeScaleFade D_80360928[SEQUENCE_PLAYERS][CHANNELS_MAX];
-u8 D_80360C28[SOUND_BANK_COUNT];
-u8 D_80360C38[SOUND_BANK_COUNT][1];
+u8 sUsedChannelsForSoundBank[SOUND_BANK_COUNT];
+u8 sCurrentSound[SOUND_BANK_COUNT][MAX_CHANNELS_PER_SOUND]; // index into gSoundBanks
// list item memory for D_803320A4 and D_803320B0
struct SoundCharacteristics gSoundBanks[SOUND_BANK_COUNT][40];
u8 D_80363808[SOUND_BANK_COUNT];
@@ -538,7 +437,7 @@ void unused_8031E4F0(void) {
}
void unused_8031E568(void) {
- stubbed_printf("COUNT %8d\n", gActiveAudioFrames);
+ stubbed_printf("COUNT %8d\n", gAudioFrameCount);
}
#endif
@@ -627,14 +526,14 @@ static void func_8031D838(s32 player, FadeT fadeInTime, u8 targetVolume) {
}
struct SPTask *create_next_audio_frame_task(void) {
- u32 t2;
+ u32 samplesRemainingInAI;
s32 writtenCmds;
s32 index;
OSTask_t *task;
s32 oldDmaCount;
s32 flags;
- gActiveAudioFrames++;
+ gAudioFrameCount++;
if (gAudioLoadLock != AUDIO_LOCK_NOT_LOADING) {
stubbed_printf("DAC:Lost 1 Frame.\n");
return NULL;
@@ -644,10 +543,19 @@ struct SPTask *create_next_audio_frame_task(void) {
gCurrAiBufferIndex++;
gCurrAiBufferIndex %= NUMAIBUFFERS;
index = (gCurrAiBufferIndex - 2 + NUMAIBUFFERS) % NUMAIBUFFERS;
- t2 = osAiGetLength() / 4;
-
- // Graphics lags behind a little, so make sure audio does too by playing the
- // sound that was generated two frames ago.
+ samplesRemainingInAI = osAiGetLength() / 4;
+
+ // Audio is triple buffered; the audio interface reads from two buffers
+ // while the third is being written by the RSP. More precisely, the
+ // lifecycle is:
+ // - this function computes an audio command list
+ // - wait for vblank
+ // - the command list is sent to the RSP (we could have sent it to the
+ // RSP before the vblank, but that gives the RSP less time to finish)
+ // - wait for vblank
+ // - the RSP is now expected to be finished, and we can send its output
+ // on to the AI
+ // Here we thus send to the AI the sound that was generated two frames ago.
if (gAiBufferLengths[index] != 0) {
osAiSetNextBuffer(gAiBuffers[index], gAiBufferLengths[index] * 4);
}
@@ -666,12 +574,13 @@ struct SPTask *create_next_audio_frame_task(void) {
index = gCurrAiBufferIndex;
gCurrAiBuffer = gAiBuffers[index];
- gAiBufferLengths[index] = (((D_80226D74 - t2) + 0x40) & 0xfff0) + 0x10;
+ gAiBufferLengths[index] = ((gSamplesPerFrameTarget - samplesRemainingInAI +
+ EXTRA_BUFFERED_AI_SAMPLES_TARGET) & ~0xf) + SAMPLES_TO_OVERPRODUCE;
if (gAiBufferLengths[index] < gMinAiBufferLength) {
gAiBufferLengths[index] = gMinAiBufferLength;
}
- if (gAiBufferLengths[index] > D_80226D74 + 0x10) {
- gAiBufferLengths[index] = D_80226D74 + 0x10;
+ if (gAiBufferLengths[index] > gSamplesPerFrameTarget + SAMPLES_TO_OVERPRODUCE) {
+ gAiBufferLengths[index] = gSamplesPerFrameTarget + SAMPLES_TO_OVERPRODUCE;
}
if (sGameLoopTicked != 0) {
@@ -684,7 +593,7 @@ struct SPTask *create_next_audio_frame_task(void) {
flags = 0;
gAudioCmd = synthesis_execute(gAudioCmd, &writtenCmds, gCurrAiBuffer, gAiBufferLengths[index]);
- D_80226EB8 = ((D_80226EB8 + gActiveAudioFrames) * gActiveAudioFrames);
+ gAudioRandom = ((gAudioRandom + gAudioFrameCount) * gAudioFrameCount);
index = gAudioTaskIndex;
gAudioTask->msgqueue = NULL;
@@ -736,7 +645,7 @@ static void process_sound_request(u32 bits, f32 *pos) {
bankIndex = (bits & SOUNDARGS_MASK_BANK) >> SOUNDARGS_SHIFT_BANK;
soundId = (bits & SOUNDARGS_MASK_SOUNDID) >> SOUNDARGS_SHIFT_SOUNDID;
- if (soundId >= sNumSoundsPerBank[bankIndex] || gSoundBankDisabled[bankIndex]) {
+ if (soundId >= sNumSoundsPerBank[bankIndex] || sSoundBankDisabled[bankIndex]) {
return;
}
@@ -882,9 +791,9 @@ static void func_8031E16C(u8 bankIndex) {
(u32) gSoundBanks[bankIndex][soundIndex].distance + 0x4c * (0xff - val);
}
- for (i = 0; i < D_803320C8[bankIndex]; i++) {
+ for (i = 0; i < sMaxChannelsForSoundBank[bankIndex]; i++) {
if (sp98[i] >= gSoundBanks[bankIndex][soundIndex].priority) {
- for (j = D_803320C8[bankIndex] - 1; j > i; j--) {
+ for (j = sMaxChannelsForSoundBank[bankIndex] - 1; j > i; j--) {
sp98[j] = sp98[j - 1];
sp88[j] = sp88[j - 1];
sp78[j] = sp78[j - 1];
@@ -892,7 +801,7 @@ static void func_8031E16C(u8 bankIndex) {
sp98[i] = gSoundBanks[bankIndex][soundIndex].priority;
sp88[i] = soundIndex;
sp78[i] = gSoundBanks[bankIndex][soundIndex].soundStatus;
- i = D_803320C8[bankIndex];
+ i = sMaxChannelsForSoundBank[bankIndex];
}
}
sp77++;
@@ -901,55 +810,55 @@ static void func_8031E16C(u8 bankIndex) {
}
D_803320BC[bankIndex] = sp77;
- D_80360C28[bankIndex] = D_803320C8[bankIndex];
+ sUsedChannelsForSoundBank[bankIndex] = sMaxChannelsForSoundBank[bankIndex];
- for (i = 0; i < D_80360C28[bankIndex]; i++) {
- for (soundIndex = 0; soundIndex < D_80360C28[bankIndex]; soundIndex++) {
- if (sp88[soundIndex] != 0xff && D_80360C38[bankIndex][i] == sp88[soundIndex]) {
+ for (i = 0; i < sUsedChannelsForSoundBank[bankIndex]; i++) {
+ for (soundIndex = 0; soundIndex < sUsedChannelsForSoundBank[bankIndex]; soundIndex++) {
+ if (sp88[soundIndex] != 0xff && sCurrentSound[bankIndex][i] == sp88[soundIndex]) {
sp88[soundIndex] = 0xff;
soundIndex = 0xfe;
}
}
if (soundIndex != 0xff) {
- if (D_80360C38[bankIndex][i] != 0xff) {
- if (gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundBits == NO_SOUND) {
- if (gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus
+ if (sCurrentSound[bankIndex][i] != 0xff) {
+ if (gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundBits == NO_SOUND) {
+ if (gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus
== SOUND_STATUS_PLAYING) {
- gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus =
+ gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus =
SOUND_STATUS_STOPPED;
- func_8031DFE8(bankIndex, D_80360C38[bankIndex][i]);
+ func_8031DFE8(bankIndex, sCurrentSound[bankIndex][i]);
}
}
- val2 = gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundBits
+ val2 = gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundBits
& (SOUND_LO_BITFLAG_UNK8 | SOUNDARGS_MASK_STATUS);
if (val2 >= (SOUND_LO_BITFLAG_UNK8 | SOUND_STATUS_PLAYING)
- && gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus
+ && gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus
!= SOUND_STATUS_STOPPED) {
#ifndef VERSION_JP
- func_8031E0E4(bankIndex, D_80360C38[bankIndex][i]);
+ func_8031E0E4(bankIndex, sCurrentSound[bankIndex][i]);
#endif
- gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundBits = NO_SOUND;
- gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus = SOUND_STATUS_STOPPED;
- func_8031DFE8(bankIndex, D_80360C38[bankIndex][i]);
+ gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundBits = NO_SOUND;
+ gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus = SOUND_STATUS_STOPPED;
+ func_8031DFE8(bankIndex, sCurrentSound[bankIndex][i]);
} else {
if (val2 == SOUND_STATUS_PLAYING
- && gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus
+ && gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus
!= SOUND_STATUS_STOPPED) {
- gSoundBanks[bankIndex][D_80360C38[bankIndex][i]].soundStatus =
+ gSoundBanks[bankIndex][sCurrentSound[bankIndex][i]].soundStatus =
SOUND_STATUS_STARTING;
}
}
}
- D_80360C38[bankIndex][i] = 0xff;
+ sCurrentSound[bankIndex][i] = 0xff;
}
}
- for (soundIndex = 0; soundIndex < D_80360C28[bankIndex]; soundIndex++) {
+ for (soundIndex = 0; soundIndex < sUsedChannelsForSoundBank[bankIndex]; soundIndex++) {
if (sp88[soundIndex] != 0xff) {
- for (i = 0; i < D_80360C28[bankIndex]; i++) {
- if (D_80360C38[bankIndex][i] == 0xff) {
- D_80360C38[bankIndex][i] = sp88[soundIndex];
+ for (i = 0; i < sUsedChannelsForSoundBank[bankIndex]; i++) {
+ if (sCurrentSound[bankIndex][i] == 0xff) {
+ sCurrentSound[bankIndex][i] = sp88[soundIndex];
gSoundBanks[bankIndex][sp88[soundIndex]].soundBits =
(gSoundBanks[bankIndex][sp88[soundIndex]].soundBits & ~SOUNDARGS_MASK_STATUS)
+ 1;
@@ -1044,7 +953,7 @@ static f32 get_sound_dynamics(u8 bankIndex, u8 item, f32 arg2) {
if (intensity >= 0.08f)
#endif
{
- intensity -= (f32)(D_80226EB8 & 0xf) / US_FLOAT(192.0);
+ intensity -= (f32)(gAudioRandom & 0xf) / US_FLOAT(192.0);
}
}
} else {
@@ -1060,7 +969,7 @@ static f32 get_sound_freq_scale(u8 bankIndex, u8 item) {
if (!(gSoundBanks[bankIndex][item].soundBits & SOUND_PL_BITFLAG_UNK8)) {
f2 = gSoundBanks[bankIndex][item].distance / AUDIO_MAX_DISTANCE;
if (gSoundBanks[bankIndex][item].soundBits & SOUND_PL_BITFLAG_UNK2) {
- f2 += (f32)(D_80226EB8 & 0xff) / US_FLOAT(64.0);
+ f2 += (f32)(gAudioRandom & 0xff) / US_FLOAT(64.0);
}
} else {
f2 = 0.0f;
@@ -1137,8 +1046,8 @@ void update_game_sound(void) {
for (bankIndex = 0; bankIndex < SOUND_BANK_COUNT; bankIndex++) {
func_8031E16C(bankIndex);
- for (j = 0; j < 1; j++) {
- index = D_80360C38[bankIndex][j];
+ for (j = 0; j < MAX_CHANNELS_PER_SOUND; j++) {
+ index = sCurrentSound[bankIndex][j];
if (index < 0xff && gSoundBanks[bankIndex][index].soundStatus != SOUND_STATUS_STOPPED) {
soundStatus = gSoundBanks[bankIndex][index].soundBits & SOUNDARGS_MASK_STATUS;
soundId = (gSoundBanks[bankIndex][index].soundBits >> SOUNDARGS_SHIFT_SOUNDID);
@@ -1313,8 +1222,8 @@ void update_game_sound(void) {
channelIndex++;
}
- // D_80360C28[i] = D_803320C8[i] = 1, so this doesn't do anything
- channelIndex += D_803320C8[bankIndex] - D_80360C28[bankIndex];
+ // sUsedChannelsForSoundBank[i] = sMaxChannelsForSoundBank[i] = 1, so this doesn't do anything
+ channelIndex += sMaxChannelsForSoundBank[bankIndex] - sUsedChannelsForSoundBank[bankIndex];
}
}
@@ -1326,7 +1235,7 @@ void play_sequence(u8 player, u8 seqId, u16 fadeTimer) {
u8 i;
if (player == 0) {
- gPlayer0CurSeqId = seqId & 0x7f;
+ sPlayer0CurSeqId = seqId & 0x7f;
sBackgroundMusicForDynamics = SEQUENCE_NONE;
sCurrentMusicDynamic = 0xff;
sMusicDynamicDelay = 2;
@@ -1351,7 +1260,7 @@ void play_sequence(u8 player, u8 seqId, u16 fadeTimer) {
void sequence_player_fade_out(u8 player, u16 fadeTimer) {
if (player == 0) {
- gPlayer0CurSeqId = SEQUENCE_NONE;
+ sPlayer0CurSeqId = SEQUENCE_NONE;
}
sequence_player_fade_out_internal(player, fadeTimer);
}
@@ -1396,19 +1305,19 @@ void func_8031F96C(u8 player) {
}
#ifdef NON_MATCHING
+
void process_level_music_dynamics(void) {
- u8 musicDynIndex; // sp57
- s16 conditionValues[8]; // sp44
- u8 conditionTypes[8]; // sp3C
- s16 dur1; // sp3A
- s16 dur2; // sp38
- u32 conditionBits; // s0
- u32 tempBits; // v1
- u16 bit; // a1
- u8 condIndex; // a0 (same as numConditions?)
- u8 i; // s1
+ s32 conditionBits; // s0
+ u8 musicDynIndex; // sp57 87
u8 j; // v0
- u16 bit2; // s0, v1
+ s16 conditionValues[8]; // sp44 68
+ u8 conditionTypes[8]; // sp3C 60
+ s16 dur1; // sp3A 58
+ s16 dur2; // sp38 56
+ u16 bit; // a1 (in first loop), s0, v1
+ u8 i; // s1
+ u8 condIndex; // a0, v1
+ u32 tempBits; // v1
func_8031F96C(0);
func_8031F96C(2);
@@ -1416,7 +1325,7 @@ void process_level_music_dynamics(void) {
if (sMusicDynamicDelay != 0) {
sMusicDynamicDelay--;
} else {
- sBackgroundMusicForDynamics = gPlayer0CurSeqId;
+ sBackgroundMusicForDynamics = sPlayer0CurSeqId;
}
if (sBackgroundMusicForDynamics != sLevelDynamics[gCurrLevelNum][0]) {
@@ -1427,12 +1336,9 @@ void process_level_music_dynamics(void) {
musicDynIndex = sLevelDynamics[gCurrLevelNum][1] & 0xff;
i = 2;
while (conditionBits & 0xff00) {
- condIndex = 0;
- for (j = 0, bit = 0x8000; j<8; j++, bit = bit>> 1) {
+ for (j = 0, condIndex = 0, bit = 0x8000; j < 8; j++, bit = bit >> 1) {
if (conditionBits & bit) {
- s16 val = sLevelDynamics[gCurrLevelNum][i];
- conditionValues[condIndex] = val;
- i++;
+ conditionValues[condIndex] = sLevelDynamics[gCurrLevelNum][i++];
conditionTypes[condIndex] = j;
condIndex++;
}
@@ -1440,7 +1346,6 @@ void process_level_music_dynamics(void) {
for (j = 0; j < condIndex; j++) {
// (having all 'temp' share a single variable affects regalloc)
- UNUSED s16 temp;
switch (conditionTypes[j]) {
case MARIO_X_GE: {
s16 temp = gMarioStates[0].pos[0];
@@ -1479,14 +1384,14 @@ void process_level_music_dynamics(void) {
break;
}
case MARIO_IS_IN_AREA: {
- s16 temp = gCurrAreaIndex;
- if (temp != conditionValues[j])
+ //s16 temp = gCurrAreaIndex;
+ if (gCurrAreaIndex != conditionValues[j])
j = condIndex + 1;
break;
}
case MARIO_IS_IN_ROOM: {
- s16 temp = gMarioCurrentRoom;
- if (temp != conditionValues[j])
+ //s16 temp = gMarioCurrentRoom;
+ if (gMarioCurrentRoom != conditionValues[j])
j = condIndex + 1;
break;
}
@@ -1497,7 +1402,8 @@ void process_level_music_dynamics(void) {
// The area matches. Break out of the loop.
tempBits = 0;
} else {
- tempBits = sLevelDynamics[gCurrLevelNum][i++];
+ tempBits = sLevelDynamics[gCurrLevelNum][i];
+ i++;
musicDynIndex = tempBits & 0xff, tempBits &= 0xff00;
}
@@ -1505,7 +1411,7 @@ void process_level_music_dynamics(void) {
}
if (musicDynIndex != sCurrentMusicDynamic) {
- bit2 = 1;
+ bit = 1;
if (sCurrentMusicDynamic == 0xff) {
dur1 = 1;
dur2 = 1;
@@ -1515,13 +1421,13 @@ void process_level_music_dynamics(void) {
}
for (i = 0; i < CHANNELS_MAX; i++) {
- if (sMusicDynamics[musicDynIndex].bits1 & bit2) {
+ if (sMusicDynamics[musicDynIndex].bits1 & bit) {
fade_channel_volume_scale(0, i, sMusicDynamics[musicDynIndex].volScale1, dur1);
}
- if (sMusicDynamics[musicDynIndex].bits2 & bit2) {
+ if (sMusicDynamics[musicDynIndex].bits2 & bit) {
fade_channel_volume_scale(0, i, sMusicDynamics[musicDynIndex].volScale2, dur2);
}
- bit2 <<= 1;
+ bit <<= 1;
}
sCurrentMusicDynamic = musicDynIndex;
@@ -1581,7 +1487,7 @@ u8 func_803200E4(u16 fadeTimer) {
u8 vol = 0xff;
u8 temp;
- if (gPlayer0CurSeqId == SEQUENCE_NONE || gPlayer0CurSeqId == SEQ_EVENT_CUTSCENE_CREDITS) {
+ if (sPlayer0CurSeqId == SEQUENCE_NONE || sPlayer0CurSeqId == SEQ_EVENT_CUTSCENE_CREDITS) {
return 0xff;
}
@@ -1612,7 +1518,7 @@ u8 func_803200E4(u16 fadeTimer) {
if (vol != 0xff) {
func_8031D838(0, fadeTimer, vol);
} else {
- gSequencePlayers[0].volume = sBackgroundMusicDefaultVolume[gPlayer0CurSeqId] / 127.0f;
+ gSequencePlayers[0].volume = sBackgroundMusicDefaultVolume[sPlayer0CurSeqId] / 127.0f;
func_8031D7B0(0, fadeTimer);
}
}
@@ -1636,8 +1542,8 @@ void sound_init(void) {
gSoundBanks[i][j].soundStatus = SOUND_STATUS_STOPPED;
}
- for (j = 0; j < 1; j++) {
- D_80360C38[i][j] = 0xff;
+ for (j = 0; j < MAX_CHANNELS_PER_SOUND; j++) {
+ sCurrentSound[i][j] = 0xff;
}
D_803320A4[i] = 0;
@@ -1674,7 +1580,7 @@ void sound_init(void) {
sCapVolumeTo40 = FALSE;
D_80332110 = 0;
sUnused80332114 = 0;
- gPlayer0CurSeqId = 0xff;
+ sPlayer0CurSeqId = 0xff;
gSoundMode = SOUND_MODE_STEREO;
sBackgroundMusicQueueSize = 0;
D_8033211C = 0;
@@ -1684,22 +1590,23 @@ void sound_init(void) {
sSoundRequestCount = 0;
}
-void unused_8032050C(u8 arg0, u8 *arg1, u8 *arg2, u8 *arg3) {
+// (unused)
+void get_currently_playing_sound(u8 bankIndex, u8 *numPlayingSounds, u8 *arg2, u8 *soundId) {
u8 i;
- u8 counter = 0;
+ u8 count = 0;
- for (i = 0; i < D_803320C8[arg0]; i++) {
- if (D_80360C38[arg0][i] != 0xff) {
- counter++;
+ for (i = 0; i < sMaxChannelsForSoundBank[bankIndex]; i++) {
+ if (sCurrentSound[bankIndex][i] != 0xff) {
+ count++;
}
}
- *arg1 = counter;
- *arg2 = D_803320BC[arg0];
- if (D_80360C38[arg0][0] != 0xff) {
- *arg3 = (u8)(gSoundBanks[arg0][D_80360C38[arg0][0]].soundBits >> SOUNDARGS_SHIFT_SOUNDID);
+ *numPlayingSounds = count;
+ *arg2 = D_803320BC[bankIndex];
+ if (sCurrentSound[bankIndex][0] != 0xff) {
+ *soundId = (u8)(gSoundBanks[bankIndex][sCurrentSound[bankIndex][0]].soundBits >> SOUNDARGS_SHIFT_SOUNDID);
} else {
- *arg3 = 0xff;
+ *soundId = 0xff;
}
}
@@ -1759,7 +1666,7 @@ void sound_banks_disable(UNUSED u8 player, u16 bankMask) {
for (i = 0; i < SOUND_BANK_COUNT; i++) {
if (bankMask & 1) {
- gSoundBankDisabled[i] = TRUE;
+ sSoundBankDisabled[i] = TRUE;
}
bankMask = bankMask >> 1;
}
@@ -1778,7 +1685,7 @@ void sound_banks_enable(UNUSED u8 player, u16 bankMask) {
for (i = 0; i < SOUND_BANK_COUNT; i++) {
if (bankMask & 1) {
- gSoundBankDisabled[i] = FALSE;
+ sSoundBankDisabled[i] = FALSE;
}
bankMask = bankMask >> 1;
}
@@ -1787,7 +1694,7 @@ void sound_banks_enable(UNUSED u8 player, u16 bankMask) {
u8 unused_803209D8(u8 player, u8 channelIndex, u8 arg2) {
u8 ret = 0;
if (gSequencePlayers[player].channels[channelIndex] != &gSequenceChannelNone) {
- gSequencePlayers[player].channels[channelIndex]->unk0b10 = arg2;
+ gSequencePlayers[player].channels[channelIndex]->stopSomething2 = arg2;
ret = arg2;
}
return ret;
@@ -1815,7 +1722,7 @@ void play_dialog_sound(u8 dialogID) {
#ifndef VERSION_JP
// "You've stepped on the (Wing|Metal|Vanish) Cap Switch"
- if (dialogID == 10 || dialogID == 11 || dialogID == 12) {
+ if (dialogID == DIALOG_010 || dialogID == DIALOG_011 || dialogID == DIALOG_012) {
play_puzzle_jingle();
}
#endif
@@ -1961,7 +1868,7 @@ void play_secondary_music(u8 seqId, u8 bgMusicVolume, u8 volume, u16 fadeTimer)
UNUSED u32 dummy;
sUnused80332118 = 0;
- if (gPlayer0CurSeqId == 0xff || gPlayer0CurSeqId == SEQ_MENU_TITLE_SCREEN) {
+ if (sPlayer0CurSeqId == 0xff || sPlayer0CurSeqId == SEQ_MENU_TITLE_SCREEN) {
return;
}
diff --git a/src/audio/external.h b/src/audio/external.h
@@ -1,5 +1,5 @@
-#ifndef _AUDIO_EXTERNAL_H
-#define _AUDIO_EXTERNAL_H
+#ifndef AUDIO_EXTERNAL_H
+#define AUDIO_EXTERNAL_H
#include "types.h"
@@ -53,4 +53,4 @@ void audio_set_sound_mode(u8 arg0);
void audio_init(void); // in load.c
-#endif /* _AUDIO_EXTERNAL_H */
+#endif /* AUDIO_EXTERNAL_H */
diff --git a/src/audio/internal.h b/src/audio/internal.h
@@ -1,18 +1,19 @@
-#ifndef _AUDIO_INTERNAL_H
-#define _AUDIO_INTERNAL_H
+#ifndef AUDIO_INTERNAL_H
+#define AUDIO_INTERNAL_H
#include <ultra64.h>
#include "types.h"
#define SEQUENCE_PLAYERS 3
+#define LAYERS_MAX 4
#define CHANNELS_MAX 16
#define NO_LAYER ((struct SequenceChannelLayer *)(-1))
-#define MUTE_BEHAVIOR_80 0x80
-#define MUTE_BEHAVIOR_40 0x40
-#define MUTE_BEHAVIOR_20 0x20
+#define MUTE_BEHAVIOR_STOP_SCRIPT 0x80 // stop processing sequence/channel scripts
+#define MUTE_BEHAVIOR_STOP_NOTES 0x40 // prevent further notes from playing
+#define MUTE_BEHAVIOR_SOFTEN 0x20 // lower volume, by default to half
#define SEQUENCE_PLAYER_STATE_0 0
#define SEQUENCE_PLAYER_STATE_FADE_OUT 1
@@ -151,7 +152,7 @@ struct Instrument
struct Drum
{
u8 releaseRate;
- u8 unk1;
+ u8 pan;
u8 loaded;
struct AudioBankSound sound;
struct AdsrEnvelope *envelope;
@@ -191,7 +192,7 @@ struct SequencePlayer
/*0x003*/ u8 noteAllocPolicy;
/*0x004*/ u8 muteBehavior;
/*0x005*/ u8 seqId;
- /*0x006*/ u8 anyBank[1]; // must be an array to get a comparison
+ /*0x006*/ u8 defaultBank[1]; // must be an array to get a comparison
// to match; other u8's might also be part of that array
/*0x007*/ u8 loadingBankId;
/*0x008*/ u8 loadingBankNumInstruments;
@@ -260,7 +261,7 @@ struct SequenceChannel
/*0x00*/ u8 enabled : 1;
/*0x00*/ u8 finished : 1;
/*0x00*/ u8 stopScript : 1;
- /*0x00*/ u8 unk0b10 : 1;
+ /*0x00*/ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething
/*0x00*/ u8 hasInstrument : 1;
/*0x00*/ u8 stereoHeadsetEffects : 1;
/*0x00*/ u8 largeNotes : 1; // notes specify duration and velocity
@@ -292,7 +293,7 @@ struct SequenceChannel
/*0x38*/ struct SequenceChannelLayer *layerUnused; // never read
/*0x3C*/ struct Instrument *instrument;
/*0x40*/ struct SequencePlayer *seqPlayer;
- /*0x44*/ struct SequenceChannelLayer *layers[4];
+ /*0x44*/ struct SequenceChannelLayer *layers[LAYERS_MAX];
/*0x54*/ s8 soundScriptIO[8]; // bridge between sound script and audio lib. For player 2,
// [0] contains enabled, [4] contains sound ID, [5] contains reverb adjustment
/*0x5C*/ struct M64ScriptState scriptState;
@@ -304,9 +305,9 @@ struct SequenceChannelLayer // Maybe SequenceTrack?
{
/*0x00*/ u8 enabled : 1;
/*0x00*/ u8 finished : 1;
- /*0x00*/ u8 unk0b20 : 1;
- /*0x00*/ u8 unk0b10 : 1;
- /*0x01*/ u8 unk1;
+ /*0x00*/ u8 stopSomething : 1; // ?
+ /*0x00*/ u8 continuousNotes : 1; // keep the same note for consecutive notes with the same sound
+ /*0x01*/ u8 status;
/*0x02*/ u8 noteDuration; // set to 0x80
/*0x03*/ u8 portamentoTargetNote;
/*0x04*/ struct Portamento portamento;
@@ -408,4 +409,4 @@ struct AudioSessionSettings
/*0x18*/ u32 temporaryBankMem;
}; // size = 0x1C
-#endif /* _AUDIO_INTERNAL_H */
+#endif /* AUDIO_INTERNAL_H */
diff --git a/src/audio/load.c b/src/audio/load.c
@@ -23,9 +23,9 @@ struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];
struct SequenceChannel gSequenceChannels[32];
#ifdef VERSION_JP
-struct SequenceChannelLayer D_802245D8[48];
+struct SequenceChannelLayer gSequenceLayers[48];
#else
-struct SequenceChannelLayer D_802245D8[52];
+struct SequenceChannelLayer gSequenceLayers[52];
#endif
struct SequenceChannel gSequenceChannelNone;
@@ -212,7 +212,7 @@ void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *arg3) {
}
// called from sound_reset
-void func_8031758C(UNUSED s32 arg0) {
+void init_sample_dma_buffers(UNUSED s32 arg0) {
s32 i;
s32 j;
@@ -287,7 +287,7 @@ static void unused_80317844(void) {
}
#ifdef NON_MATCHING
-void func_8031784C(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums) {
+void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums) {
// Make pointers into real pointers rather than indices
struct Instrument *instrument;
struct Instrument **itInstrs;
@@ -393,7 +393,7 @@ void func_8031784C(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 nu
}
#else
-GLOBAL_ASM("asm/non_matchings/func_8031784C.s")
+GLOBAL_ASM("asm/non_matchings/patch_audio_bank.s")
#endif
struct AudioBank *bank_load_immediate(s32 bankId, s32 arg1) {
@@ -419,7 +419,7 @@ struct AudioBank *bank_load_immediate(s32 bankId, s32 arg1) {
numInstruments = buf[0];
numDrums = buf[1];
audio_dma_copy_immediate((uintptr_t)(ctlData + 0x10), ret, alloc);
- func_8031784C(ret, gAlTbl->seqArray[bankId].offset, numInstruments, numDrums);
+ patch_audio_bank(ret, gAlTbl->seqArray[bankId].offset, numInstruments, numDrums);
gCtlEntries[bankId].numInstruments = (u8) numInstruments;
gCtlEntries[bankId].numDrums = (u8) numDrums;
gCtlEntries[bankId].instruments = ret->instruments;
@@ -635,11 +635,11 @@ void load_sequence_internal(u32 player, u32 seqId, s32 loadAsync) {
// @bug This should set the last bank (i.e. the first in the JSON)
// as default, not the missing one. This code path never gets
// taken, though -- all sequence loading is synchronous.
- seqPlayer->anyBank[0] = bankId;
- } else if (load_banks_immediate(seqId, &seqPlayer->anyBank[0]) == NULL) {
+ seqPlayer->defaultBank[0] = bankId;
+ } else if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) {
return;
}
- } else if (load_banks_immediate(seqId, &seqPlayer->anyBank[0]) == NULL) {
+ } else if (load_banks_immediate(seqId, &seqPlayer->defaultBank[0]) == NULL) {
return;
}
@@ -704,7 +704,7 @@ void audio_init() {
gAiBufferLengths[i] = 0x00a0;
}
- gActiveAudioFrames = 0;
+ gAudioFrameCount = 0;
gAudioTaskIndex = 0;
gCurrAiBufferIndex = 0;
gSoundMode = 0;
@@ -763,6 +763,6 @@ void audio_init() {
gAlBankSets = soundAlloc(&gAudioInitPool, 0x100);
audio_dma_copy_immediate((uintptr_t) gBankSetsData, gAlBankSets, 0x100);
- func_8031D4B8();
+ init_sequence_players();
gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;
}
diff --git a/src/audio/load.h b/src/audio/load.h
@@ -1,5 +1,5 @@
-#ifndef _AUDIO_LOAD_H
-#define _AUDIO_LOAD_H
+#ifndef AUDIO_LOAD_H
+#define AUDIO_LOAD_H
#include "internal.h"
@@ -21,9 +21,9 @@ extern struct SequencePlayer gSequencePlayers[SEQUENCE_PLAYERS];
extern struct SequenceChannel gSequenceChannels[32];
#ifdef VERSION_JP
-extern struct SequenceChannelLayer D_802245D8[48];
+extern struct SequenceChannelLayer gSequenceLayers[48];
#else
-extern struct SequenceChannelLayer D_802245D8[52];
+extern struct SequenceChannelLayer gSequenceLayers[52];
#endif
extern struct SequenceChannel gSequenceChannelNone;
@@ -39,9 +39,9 @@ extern u8 *gAlBankSets;
void audio_dma_partial_copy_async(uintptr_t *devAddr, u8 **vAddr, ssize_t *remaining, OSMesgQueue *queue, OSIoMesg *mesg);
void decrease_sample_dma_ttls(void);
void *dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8 *arg3);
-void func_8031758C(s32 arg0);
-void func_8031784C(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums);
+void init_sample_dma_buffers(s32 arg0);
+void patch_audio_bank(struct AudioBank *mem, u8 *offset, u32 numInstruments, u32 numDrums);
void preload_sequence(u32 seqId, u8 preloadMask);
void load_sequence(u32 player, u32 seqId, s32 loadAsync);
-#endif /* _AUDIO_LOAD_H */
+#endif /* AUDIO_LOAD_H */
diff --git a/src/audio/memory.c b/src/audio/memory.c
@@ -47,7 +47,7 @@ u8 gSeqLoadStatus[0x100];
u8 gAudioUnusedBuffer[0x1000];
-extern s32 D_80226D6C;
+extern s32 gMaxAudioCmds;
void reset_bank_and_seq_load_status(void) {
s32 i;
@@ -109,7 +109,7 @@ void *soundAlloc(struct SoundAllocPool *pool, u32 size) {
}
void sound_alloc_pool_init(struct SoundAllocPool *pool, void *memAddr, u32 size) {
- pool->cur = pool->start = (u8 *) (((uintptr_t) memAddr + 0xf) & -0x10);
+ pool->cur = pool->start = (u8 *) ALIGN16((uintptr_t) memAddr);
pool->size = size;
pool->unused = 0;
}
@@ -374,9 +374,9 @@ void decrease_reverb_gain(void) {
* Waits until a specified number of audio frames have been created
*/
void wait_for_audio_frames(s32 frames) {
- gActiveAudioFrames = 0;
- // Sound thread will update gActiveAudioFrames
- while (gActiveAudioFrames < frames) {
+ gAudioFrameCount = 0;
+ // Sound thread will update gAudioFrameCount
+ while (gAudioFrameCount < frames) {
// spin
}
}
@@ -425,8 +425,13 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
}
}
+ // Wait for the reverb to finish as well
decrease_reverb_gain();
wait_for_audio_frames(3);
+
+ // The audio interface is double buffered; thus, we have to take the
+ // load lock for 2 frames for the buffers to free up before we can
+ // repurpose memory. Make that 3 frames, just in case.
gAudioLoadLock = AUDIO_LOCK_LOADING;
wait_for_audio_frames(3);
@@ -450,7 +455,7 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
reverbWindowSize = preset->reverbWindowSize;
gAiFrequency = osAiSetFrequency(preset->frequency);
gMaxSimultaneousNotes = preset->maxSimultaneousNotes;
- D_80226D74 = ALIGN16(gAiFrequency / 60);
+ gSamplesPerFrameTarget = ALIGN16(gAiFrequency / 60);
gReverbDownsampleRate = preset->reverbDownsampleRate;
switch (gReverbDownsampleRate) {
@@ -475,9 +480,9 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
gReverbDownsampleRate = preset->reverbDownsampleRate;
gVolume = preset->volume;
- gMinAiBufferLength = D_80226D74 - 0x10;
- updatesPerFrame = D_80226D74 / 160 + 1;
- gAudioUpdatesPerFrame = D_80226D74 / 160 + 1;
+ gMinAiBufferLength = gSamplesPerFrameTarget - 0x10;
+ updatesPerFrame = gSamplesPerFrameTarget / 160 + 1;
+ gAudioUpdatesPerFrame = gSamplesPerFrameTarget / 160 + 1;
// Compute conversion ratio from the internal unit tatums/tick to the
// external beats/minute (JP) or tatums/minute (US). In practice this is
@@ -488,7 +493,7 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
gTempoInternalToExternal = (u32)(updatesPerFrame * 2880000.0f / gTatumsPerBeat / 16.713f);
#endif
- D_80226D6C = gMaxSimultaneousNotes * 20 * updatesPerFrame + 320;
+ gMaxAudioCmds = gMaxSimultaneousNotes * 20 * updatesPerFrame + 320;
persistentMem = DOUBLE_SIZE_ON_64_BIT(preset->persistentBankMem + preset->persistentSeqMem);
temporaryMem = DOUBLE_SIZE_ON_64_BIT(preset->temporaryBankMem + preset->temporarySeqMem);
totalMem = persistentMem + temporaryMem;
@@ -510,7 +515,7 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
reset_bank_and_seq_load_status();
for (j = 0; j < 2; j++) {
- gAudioCmdBuffers[j] = soundAlloc(&gNotesAndBuffersPool, D_80226D6C * 8);
+ gAudioCmdBuffers[j] = soundAlloc(&gNotesAndBuffersPool, gMaxAudioCmds * sizeof(u64));
}
gNotes = soundAlloc(&gNotesAndBuffersPool, gMaxSimultaneousNotes * sizeof(struct Note));
@@ -537,17 +542,17 @@ void audio_reset_session(struct AudioSessionSettings *preset) {
gSynthesisReverb.unk24 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
gSynthesisReverb.unk28 = soundAlloc(&gNotesAndBuffersPool, 16 * sizeof(s16));
for (i = 0; i < gAudioUpdatesPerFrame; i++) {
- mem = soundAlloc(&gNotesAndBuffersPool, 0x280);
+ mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
gSynthesisReverb.items[0][i].toDownsampleLeft = mem;
gSynthesisReverb.items[0][i].toDownsampleRight = mem + 0xA0;
- mem = soundAlloc(&gNotesAndBuffersPool, 0x280);
+ mem = soundAlloc(&gNotesAndBuffersPool, DEFAULT_LEN_2CH);
gSynthesisReverb.items[1][i].toDownsampleLeft = mem;
gSynthesisReverb.items[1][i].toDownsampleRight = mem + 0xA0;
}
}
}
- func_8031758C(gMaxSimultaneousNotes);
+ init_sample_dma_buffers(gMaxSimultaneousNotes);
osWritebackDCacheAll();
if (gAudioLoadLock != AUDIO_LOCK_UNINITIALIZED) {
gAudioLoadLock = AUDIO_LOCK_NOT_LOADING;
diff --git a/src/audio/memory.h b/src/audio/memory.h
@@ -1,5 +1,5 @@
-#ifndef _AUDIO_MEMORY_H
-#define _AUDIO_MEMORY_H
+#ifndef AUDIO_MEMORY_H
+#define AUDIO_MEMORY_H
#include "internal.h"
@@ -49,7 +49,6 @@ struct SoundMultiPool
extern u8 gAudioHeap[];
extern s16 gVolume;
extern s8 gReverbDownsampleRate;
-extern u8 sReverbDownsampleRateLog;
extern struct SoundAllocPool gAudioInitPool;
extern struct SoundAllocPool gNotesAndBuffersPool;
extern struct SoundMultiPool gSeqLoadedPool;
@@ -63,4 +62,4 @@ void *alloc_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 size, s32 arg
void *get_bank_or_seq(struct SoundMultiPool *arg0, s32 arg1, s32 arg2);
void audio_reset_session(struct AudioSessionSettings *preset);
-#endif /* _AUDIO_MEMORY_H */
+#endif /* AUDIO_MEMORY_H */
diff --git a/src/audio/playback.c b/src/audio/playback.c
@@ -11,7 +11,7 @@
s32 note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer);
-void func_80318870(struct Note *note) {
+void note_init(struct Note *note) {
if (note->parentLayer->adsr.releaseRate == 0) {
adsr_init(¬e->adsr, note->parentLayer->seqChannel->adsr.envelope, ¬e->adsrVolScale);
} else {
@@ -26,7 +26,7 @@ void note_disable2(struct Note *note) {
note_disable(note);
}
-void func_80318908(void) {
+void process_notes(void) {
f32 scale;
f32 frequency;
u8 reverb;
@@ -144,7 +144,7 @@ void seq_channel_layer_decay_release_internal(struct SequenceChannelLayer *seqLa
return;
}
- seqLayer->unk1 = 0;
+ seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;
if (note->adsr.state != ADSR_STATE_DECAY) {
attributes->freqScale = seqLayer->noteFreqScale;
attributes->velocity = seqLayer->noteVelocity;
@@ -183,8 +183,7 @@ void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer) {
seq_channel_layer_decay_release_internal(seqLayer, ADSR_STATE_RELEASE);
}
-// wave synthesizer
-void func_80318F04(struct Note *note, struct SequenceChannelLayer *seqLayer) {
+void build_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer) {
s32 i;
s32 j;
s32 pos;
@@ -239,9 +238,9 @@ void func_80318F04(struct Note *note, struct SequenceChannelLayer *seqLayer) {
osWritebackDCache(note->synthesisBuffers->samples, sizeof(note->synthesisBuffers->samples));
}
-void func_80319164(struct Note *note, struct SequenceChannelLayer *seqLayer) {
+void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer) {
s32 sampleCount = note->sampleCount;
- func_80318F04(note, seqLayer);
+ build_synthetic_wave(note, seqLayer);
if (sampleCount != 0) {
note->samplePosInt *= note->sampleCount / sampleCount;
} else {
@@ -422,14 +421,14 @@ s32 note_init_for_layer(struct Note *note, struct SequenceChannelLayer *seqLayer
note->bankId = seqLayer->seqChannel->bankId;
note->stereoHeadsetEffects = seqLayer->seqChannel->stereoHeadsetEffects;
note->sound = seqLayer->sound;
- seqLayer->unk1 = 3;
+ seqLayer->status = SOUND_LOAD_STATUS_DISCARDABLE; // "loaded"
seqLayer->note = note;
seqLayer->seqChannel->noteUnused = note;
seqLayer->seqChannel->layerUnused = seqLayer;
if (note->sound == NULL) {
- func_80318F04(note, seqLayer);
+ build_synthetic_wave(note, seqLayer);
}
- func_80318870(note);
+ note_init(note);
return FALSE;
}
@@ -495,7 +494,7 @@ struct Note *alloc_note(struct SequenceChannelLayer *seqLayer) {
if (!(ret = alloc_note_from_disabled(&seqLayer->seqChannel->notePool, seqLayer))
&& !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->notePool, seqLayer))
&& !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))) {
- seqLayer->unk1 = 0;
+ seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;
return NULL;
}
return ret;
@@ -508,7 +507,7 @@ struct Note *alloc_note(struct SequenceChannelLayer *seqLayer) {
&& !(ret = alloc_note_from_decaying(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))
&& !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))
&& !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))) {
- seqLayer->unk1 = 0;
+ seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;
return NULL;
}
return ret;
@@ -518,7 +517,7 @@ struct Note *alloc_note(struct SequenceChannelLayer *seqLayer) {
if (!(ret = alloc_note_from_disabled(&gNoteFreeLists, seqLayer))
&& !(ret = alloc_note_from_decaying(&gNoteFreeLists, seqLayer))
&& !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) {
- seqLayer->unk1 = 0;
+ seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;
return NULL;
}
return ret;
@@ -533,13 +532,13 @@ struct Note *alloc_note(struct SequenceChannelLayer *seqLayer) {
&& !(ret = alloc_note_from_active(&seqLayer->seqChannel->notePool, seqLayer))
&& !(ret = alloc_note_from_active(&seqLayer->seqChannel->seqPlayer->notePool, seqLayer))
&& !(ret = alloc_note_from_active(&gNoteFreeLists, seqLayer))) {
- seqLayer->unk1 = 0;
+ seqLayer->status = SOUND_LOAD_STATUS_NOT_LOADED;
return NULL;
}
return ret;
}
-void func_80319BC8(void) {
+void reclaim_notes(void) {
struct Note *note;
s32 i;
s32 cond;
@@ -559,7 +558,7 @@ void func_80319BC8(void) {
note->priority = NOTE_PRIORITY_STOPPING;
} else if (note->parentLayer->seqChannel->seqPlayer->muted) {
if (note->parentLayer->seqChannel->muteBehavior
- & (MUTE_BEHAVIOR_80 | MUTE_BEHAVIOR_40)) {
+ & (MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES)) {
cond = TRUE;
}
} else {
diff --git a/src/audio/playback.h b/src/audio/playback.h
@@ -14,10 +14,10 @@
#define NOTE_ALLOC_SEQ 4
#define NOTE_ALLOC_GLOBAL_FREELIST 8
-void func_80318908(void);
+void process_notes(void);
void seq_channel_layer_note_decay(struct SequenceChannelLayer *seqLayer);
void seq_channel_layer_note_release(struct SequenceChannelLayer *seqLayer);
-void func_80319164(struct Note *note, struct SequenceChannelLayer *seqLayer);
+void init_synthetic_wave(struct Note *note, struct SequenceChannelLayer *seqLayer);
void init_note_lists(struct NotePool *pool);
void init_note_free_list(void);
void note_pool_clear(struct NotePool *pool);
@@ -25,7 +25,7 @@ void note_pool_fill(struct NotePool *pool, s32 count);
void audio_list_push_front(struct AudioListItem *list, struct AudioListItem *item);
void audio_list_remove(struct AudioListItem *item);
struct Note *alloc_note(struct SequenceChannelLayer *seqLayer);
-void func_80319BC8(void);
+void reclaim_notes(void);
void note_init_all(void);
diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c
@@ -8,6 +8,14 @@
#include "external.h"
#include "effects.h"
+#define PORTAMENTO_IS_SPECIAL(x) ((x).mode & 0x80)
+#define PORTAMENTO_MODE(x) ((x).mode & ~0x80)
+#define PORTAMENTO_MODE_1 1
+#define PORTAMENTO_MODE_2 2
+#define PORTAMENTO_MODE_3 3
+#define PORTAMENTO_MODE_4 4
+#define PORTAMENTO_MODE_5 5
+
void seq_channel_layer_process_script(struct SequenceChannelLayer *layer);
void sequence_channel_process_script(struct SequenceChannel *seqChannel);
@@ -17,7 +25,7 @@ void sequence_channel_init(struct SequenceChannel *seqChannel) {
seqChannel->enabled = FALSE;
seqChannel->finished = FALSE;
seqChannel->stopScript = FALSE;
- seqChannel->unk0b10 = FALSE;
+ seqChannel->stopSomething2 = FALSE;
seqChannel->hasInstrument = FALSE;
seqChannel->stereoHeadsetEffects = FALSE;
seqChannel->transposition = 0;
@@ -71,12 +79,12 @@ s32 seq_channel_set_layer(struct SequenceChannel *seqChannel, s32 layerIndex) {
layer->adsr = seqChannel->adsr;
layer->adsr.releaseRate = 0;
layer->enabled = TRUE;
- layer->unk0b20 = FALSE;
- layer->unk0b10 = FALSE;
+ layer->stopSomething = FALSE;
+ layer->continuousNotes = FALSE;
layer->finished = FALSE;
layer->portamento.mode = 0;
layer->scriptState.depth = 0;
- layer->unk1 = 0;
+ layer->status = SOUND_LOAD_STATUS_NOT_LOADED;
layer->noteDuration = 0x80;
layer->transposition = 0;
layer->delay = 0;
@@ -120,7 +128,7 @@ void seq_channel_layer_free(struct SequenceChannel *seqChannel, s32 layerIndex)
void sequence_channel_disable(struct SequenceChannel *seqChannel) {
s32 i;
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < LAYERS_MAX; i++) {
seq_channel_layer_free(seqChannel, i);
}
@@ -158,7 +166,7 @@ void sequence_player_init_channels(struct SequencePlayer *seqPlayer, u16 channel
sequence_channel_init(seqChannel);
seqPlayer->channels[i] = seqChannel;
seqChannel->seqPlayer = seqPlayer;
- seqChannel->bankId = seqPlayer->anyBank[0];
+ seqChannel->bankId = seqPlayer->defaultBank[0];
seqChannel->muteBehavior = seqPlayer->muteBehavior;
seqChannel->noteAllocPolicy = seqPlayer->noteAllocPolicy;
}
@@ -196,7 +204,7 @@ void sequence_channel_enable(struct SequencePlayer *seqPlayer, u8 channelIndex,
seqChannel->scriptState.depth = 0;
seqChannel->scriptState.pc = arg2;
seqChannel->delay = 0;
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < LAYERS_MAX; i++) {
if (seqChannel->layers[i] != NULL) {
seq_channel_layer_free(seqChannel, i);
}
@@ -214,16 +222,16 @@ void sequence_player_disable(struct SequencePlayer *seqPlayer) {
gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_DISCARDABLE;
}
- if (IS_BANK_LOAD_COMPLETE(seqPlayer->anyBank[0])) {
- gBankLoadStatus[seqPlayer->anyBank[0]] = SOUND_LOAD_STATUS_DISCARDABLE;
+ if (IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0])) {
+ gBankLoadStatus[seqPlayer->defaultBank[0]] = SOUND_LOAD_STATUS_DISCARDABLE;
}
// (Note that if this is called from alloc_bank_or_seq, the side will get swapped
// later in that function. Thus, we signal that we want to load into the slot
// of the bank that we no longer need.)
- if (gBankLoadedPool.temporary.entries[0].id == seqPlayer->anyBank[0]) {
+ if (gBankLoadedPool.temporary.entries[0].id == seqPlayer->defaultBank[0]) {
gBankLoadedPool.temporary.nextSide = 1;
- } else if (gBankLoadedPool.temporary.entries[1].id == seqPlayer->anyBank[0]) {
+ } else if (gBankLoadedPool.temporary.entries[1].id == seqPlayer->defaultBank[0]) {
gBankLoadedPool.temporary.nextSide = 0;
}
}
@@ -257,7 +265,7 @@ void *audio_list_pop_back(struct AudioListItem *list) {
return item->u.value;
}
-void func_8031AF74(void) {
+void init_layer_freelist(void) {
s32 i;
gLayerFreeList.prev = &gLayerFreeList;
@@ -265,10 +273,10 @@ void func_8031AF74(void) {
gLayerFreeList.u.count = 0;
gLayerFreeList.pool = NULL;
- for (i = 0; i < ARRAY_COUNT(D_802245D8); i++) {
- D_802245D8[i].listItem.u.value = D_802245D8 + i;
- D_802245D8[i].listItem.prev = NULL;
- audio_list_push_back(&gLayerFreeList, &D_802245D8[i].listItem);
+ for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) {
+ gSequenceLayers[i].listItem.u.value = gSequenceLayers + i;
+ gSequenceLayers[i].listItem.prev = NULL;
+ audio_list_push_back(&gLayerFreeList, &gSequenceLayers[i].listItem);
}
}
@@ -297,39 +305,37 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
struct SequencePlayer *seqPlayer; // sp5C, t4
struct SequenceChannel *seqChannel; // sp58, t5
struct M64ScriptState *state; // v0
- struct AdsrSettings *temp_v0_11;
+ struct AdsrSettings *adsr; // v0
struct Portamento *portamento; // v0
struct Instrument **instOut; // a1
struct Instrument *inst; // a0
- struct AudioBankSound *phi_v0_5;
- struct AudioBankSound *phi_v0_6;
- struct Instrument *phi_v1_2;
+ struct AudioBankSound *sound; // v0
+ struct Instrument *instrument; // v1
struct Drum *drum;
- u8 sameSound; // sp3F
- u8 cmd; // a0
- u8 sp3D; // t0
+ u8 sameSound; // sp3F
+ u8 cmd; // a0
+ u8 allocNewNote; // sp3D, t0
u8 loBits;
u16 sp3A; // t2, a0, a1
- s32 sp30; // t3
- f32 sp28; // f0
+ s32 vel; // sp30, t3
+ f32 freqScale; // sp28, f0
f32 sp24;
u8 temp8;
u8 *old;
u8 *old2;
- u8 temp_v0_20;
- u8 phi_a1_3;
+ u8 semitone; // v0
+ u8 usedSemitone; // a1
f32 temp_f12;
f32 temp_f2;
s32 temp_a0_5;
- u8 temp_t0;
- s32 temp_t1;
- s32 temp_t1_2;
+ u8 drumIndex; // t0
+ s32 cmdBase; // t1
u8 temp_a0_6;
- u8 temp_t7_4;
- s32 temp_a3;
- u8 instIndex; // v0
- s32 phi_v1;
- f32 phi_f0;
+ u8 portamentoTargetNote; // t7
+ s32 bankId; // a3
+ u8 instId; // v0
+ s32 cmdSemitone; // v1
+ f32 tuning; // f0
sameSound = TRUE;
if (layer->enabled == FALSE) {
@@ -338,18 +344,19 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
if (layer->delay > 1) {
layer->delay--;
- if (!layer->unk0b20 && layer->delay <= layer->duration) {
+ if (!layer->stopSomething && layer->delay <= layer->duration) {
seq_channel_layer_note_decay(layer);
- layer->unk0b20 = TRUE;
+ layer->stopSomething = TRUE;
}
return;
}
- if (!layer->unk0b10) {
+ if (!layer->continuousNotes) {
seq_channel_layer_note_decay(layer);
}
- if ((layer->portamento.mode & ~0x80) == 1 || (layer->portamento.mode & ~0x80) == 2) {
+ if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_1 ||
+ PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_2) {
layer->portamento.mode = 0;
}
@@ -366,7 +373,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
switch (cmd) {
- case 0xff: // function return or end of script
+ case 0xff: // layer_end; function return or end of script
if (state->depth == 0) {
// N.B. this function call is *not* inlined even though it's
// within the same file, unlike in the rest of this function.
@@ -376,7 +383,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
state->depth--, state->pc = state->stack[state->depth];
break;
- case 0xfc: // function call
+ case 0xfc: // layer_call
// Something is wrong with the codegen here... It almost looks like
// it's inlining m64_read_s16, but it lacks a s16 cast.
// Maybe they did macro-based inlining since there are more layers
@@ -388,14 +395,14 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
state->pc = seqPlayer->seqData + sp3A;
break;
- case 0xf8: // loop start, N iterations (or 256 if N = 0)
+ case 0xf8: // layer_loop; loop start, N iterations (or 256 if N = 0)
old = state->pc++;
state->remLoopIters[state->depth] = *old;
state->depth++;
state->stack[state->depth - 1] = state->pc;
break;
- case 0xf7: // loop end
+ case 0xf7: // layer_loopend
state->remLoopIters[state->depth - 1]--;
if (state->remLoopIters[state->depth - 1] != 0) {
state->pc = state->stack[state->depth - 1];
@@ -404,14 +411,14 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
break;
- case 0xfb: // unconditional jump
+ case 0xfb: // layer_jump
sp3A = *(state->pc++) << 8;
sp3A = *(state->pc++) | sp3A;
state->pc = seqPlayer->seqData + sp3A;
break;
- case 0xc1: // set short note velocity
- case 0xca: // set pan (0..128)
+ case 0xc1: // layer_setshortnotevelocity
+ case 0xca: // layer_setpan
temp_a0_5 = *(state->pc++);
if (cmd == 0xc1) {
layer->velocitySquare = (f32)(temp_a0_5 * temp_a0_5);
@@ -420,8 +427,8 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
break;
- case 0xc2: // set transposition in semitones
- case 0xc9: // set short note duration
+ case 0xc2: // layer_transpose; set transposition in semitones
+ case 0xc9: // layer_setshortnoteduration
temp_a0_6 = *(state->pc++);
if (cmd == 0xc9) {
layer->noteDuration = temp_a0_6;
@@ -430,18 +437,18 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
break;
- case 0xc4:
- case 0xc5:
+ case 0xc4: // layer_somethingon
+ case 0xc5: // layer_somethingoff
if (cmd == 0xc4) {
temp8 = TRUE;
} else {
temp8 = FALSE;
}
- layer->unk0b10 = temp8;
+ layer->continuousNotes = temp8;
seq_channel_layer_note_decay(layer);
break;
- case 0xc3: // set short note default play percentage
+ case 0xc3: // layer_setshortnotedefaultplaypercentage
// This doesn't match very well... sp3A is definitely set here
// (it's falsely preserved until after the loop), but maybe there's
// also inlining going on, with sp3A as a temp variable being used
@@ -454,70 +461,72 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
layer->shortNoteDefaultPlayPercentage = sp3A;
break;
- case 0xc6: // set instrument
+ case 0xc6: // layer_setinstr
old = state->pc++;
- instIndex = *old;
+ instId = *old;
// The rest of this case is identical to
- // if (instIndex < 0x7f) {
- // get_instrument(seqChannel, instIndex, &layer->instrument, &layer->adsr);
+ // if (instId < 0x7f) {
+ // get_instrument(seqChannel, instId, &layer->instrument, &layer->adsr);
// }
// except without seqChannelCpy...
// interestingly, get_instrument comes just *after* this function,
// which I think wouldn't be the case with __inline (maybe if they
// both inline a common helper?)
- if (instIndex >= 0x7f) {
+ if (instId >= 0x7f) {
break;
}
- temp_a3 = seqChannel->bankId;
- if (instIndex >= gCtlEntries[temp_a3].numInstruments) {
- instIndex = gCtlEntries[temp_a3].numInstruments;
- if (instIndex == 0) {
+ bankId = seqChannel->bankId; // maybe a temp, to match get_instrument
+ if (instId >= gCtlEntries[bankId].numInstruments) {
+ instId = gCtlEntries[bankId].numInstruments;
+ if (instId == 0) {
break;
}
- instIndex--;
+ instId--;
}
instOut = &layer->instrument;
- inst = gCtlEntries[temp_a3].instruments[instIndex];
+ inst = gCtlEntries[bankId].instruments[instId];
if (inst == NULL) {
- while (instIndex != 0xff) {
- inst = gCtlEntries[temp_a3].instruments[instIndex];
+ while (instId != 0xff) {
+ inst = gCtlEntries[bankId].instruments[instId];
if (inst != NULL) {
break;
}
- instIndex--;
+ instId--;
}
}
- temp_v0_11 = &layer->adsr;
+ adsr = &layer->adsr;
if (((uintptr_t) gBankLoadedPool.persistent.pool.start <= (uintptr_t) inst
&& (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.persistent.pool.start
+ gBankLoadedPool.persistent.pool.size))
|| ((uintptr_t) gBankLoadedPool.temporary.pool.start <= (uintptr_t) inst
&& (uintptr_t) inst <= (uintptr_t)(gBankLoadedPool.temporary.pool.start
+ gBankLoadedPool.temporary.pool.size))) {
- temp_v0_11->envelope = inst->envelope;
- temp_v0_11->releaseRate = inst->releaseRate;
+ adsr->envelope = inst->envelope;
+ adsr->releaseRate = inst->releaseRate;
*instOut = inst;
+ // instId++;
} else {
- gAudioErrorFlags = instIndex + 0x20000;
+ gAudioErrorFlags = instId + 0x20000;
*instOut = NULL;
}
break;
- case 0xc7: // enable portamento
+ case 0xc7: // layer_portamento
old = state->pc++;
layer->portamento.mode = *old;
old = state->pc++;
- temp_t7_4 =
- seqChannel->transposition + *old + layer->transposition + seqPlayer->transposition;
- if (temp_t7_4 >= 0x80) {
- temp_t7_4 = 0;
+ portamentoTargetNote = *old + seqChannel->transposition +
+ layer->transposition + seqPlayer->transposition;
+ if (portamentoTargetNote >= 0x80) {
+ portamentoTargetNote = 0;
}
- layer->portamentoTargetNote = temp_t7_4;
+ layer->portamentoTargetNote = portamentoTargetNote;
- if (layer->portamento.mode & 0x80) {
+ // If special, the next param is u8 instead of var
+ if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {
layer->portamentoTime = *(state->pc++);
break;
}
@@ -530,18 +539,18 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
layer->portamentoTime = sp3A;
break;
- case 0xc8: // disable portamento
+ case 0xc8: // layer_disableportamento
layer->portamento.mode = 0;
break;
default:
loBits = cmd & 0xf;
switch (cmd & 0xf0) {
- case 0xd0: // set short note velocity via lookup table
+ case 0xd0: // layer_setshortnotevelocityfromtable
sp3A = seqPlayer->shortNoteVelocityTable[loBits];
layer->velocitySquare = (f32)(sp3A * sp3A);
break;
- case 0xe0: // set short note duration via lookup table
+ case 0xe0: // layer_setshortnotedurationfromtable
layer->noteDuration = seqPlayer->shortNoteDurationTable[loBits];
break;
}
@@ -549,7 +558,7 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
state = &layer->scriptState;
- if (cmd == 0xc0) // delay for N frames
+ if (cmd == 0xc0) // layer_delay
{
sp3A = *(state->pc++);
if (sp3A & 0x80) {
@@ -557,54 +566,54 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
sp3A = *(state->pc++) | sp3A;
}
layer->delay = sp3A;
- layer->unk0b20 = TRUE;
+ layer->stopSomething = TRUE;
} else {
- layer->unk0b20 = FALSE;
+ layer->stopSomething = FALSE;
if (seqChannel->largeNotes == TRUE) {
- temp_t1_2 = cmd & 0xc0;
+ cmdBase = cmd & 0xc0;
// phi_a0_3 = sp3A; // real assignment, or same vars?
state = &layer->scriptState;
- switch (temp_t1_2) {
- case 0x00: // play note, type 0 (play percentage, velocity, duration)
+ switch (cmdBase) {
+ case 0x00: // layer_note0 (play percentage, velocity, duration)
sp3A = *(state->pc++);
if (sp3A & 0x80) {
sp3A = (sp3A << 8) & 0x7f00;
sp3A = *(state->pc++) | sp3A;
}
- sp30 = *(state->pc++);
+ vel = *(state->pc++);
layer->noteDuration = *(state->pc++);
layer->playPercentage = sp3A;
break;
- case 0x40: // play note, type 1 (play percentage, velocity)
+ case 0x40: // layer_note1 (play percentage, velocity)
sp3A = *(state->pc++);
if (sp3A & 0x80) {
sp3A = (sp3A << 8) & 0x7f00;
sp3A = *(state->pc++) | sp3A;
}
- sp30 = *(state->pc++);
+ vel = *(state->pc++);
layer->noteDuration = 0;
layer->playPercentage = sp3A;
break;
- case 0x80: // play note, type 2 (velocity, duration; uses last play percentage)
- sp30 = *(state->pc++);
+ case 0x80: // layer_note2 (velocity, duration; uses last play percentage)
+ vel = *(state->pc++);
layer->noteDuration = *(state->pc++);
sp3A = layer->playPercentage;
break;
}
- layer->velocitySquare = sp30 * sp30;
- phi_v1 = cmd - temp_t1_2;
+ layer->velocitySquare = vel * vel;
+ cmdSemitone = cmd - cmdBase;
} else {
- temp_t1 = cmd & 0xc0;
+ cmdBase = cmd & 0xc0;
state = &layer->scriptState;
// phi_a0_3 = sp3A;
- switch (temp_t1) {
+ switch (cmdBase) {
case 0x00: // play note, type 0 (play percentage)
sp3A = *(state->pc++);
if (sp3A & 0x80) {
@@ -623,91 +632,91 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
break;
}
- phi_v1 = cmd - temp_t1;
+ cmdSemitone = cmd - cmdBase;
}
layer->delay = sp3A;
layer->duration = layer->noteDuration * sp3A / 256;
- if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_40) != 0)
- || seqChannel->unk0b10 || !seqChannel->hasInstrument) {
- layer->unk0b20 = TRUE;
+ if ((seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_NOTES) != 0)
+ || seqChannel->stopSomething2 || !seqChannel->hasInstrument) {
+ layer->stopSomething = TRUE;
} else {
- if (seqChannel->instOrWave == 0) {
- temp_t0 = phi_v1 + seqChannel->transposition + layer->transposition;
- if (temp_t0 >= gCtlEntries[seqChannel->bankId].numDrums) {
- temp_t0 = gCtlEntries[seqChannel->bankId].numDrums;
- if (temp_t0 == 0) {
- // this goto look a bit like a function return...
- layer->unk0b20 = TRUE;
+ if (seqChannel->instOrWave == 0) { // drum
+ drumIndex = cmdSemitone + seqChannel->transposition + layer->transposition;
+ if (drumIndex >= gCtlEntries[seqChannel->bankId].numDrums) {
+ drumIndex = gCtlEntries[seqChannel->bankId].numDrums;
+ if (drumIndex == 0) {
+ // this goto looks a bit like a function return...
+ layer->stopSomething = TRUE;
goto skip;
}
- temp_t0--;
+ drumIndex--;
}
- drum = gCtlEntries[seqChannel->bankId].drums[temp_t0];
+ drum = gCtlEntries[seqChannel->bankId].drums[drumIndex];
if (drum == NULL) {
- layer->unk0b20 = TRUE;
+ layer->stopSomething = TRUE;
} else {
layer->adsr.envelope = drum->envelope;
layer->adsr.releaseRate = drum->releaseRate;
- layer->pan = FLOAT_CAST(drum->unk1) / US_FLOAT(128.0);
+ layer->pan = FLOAT_CAST(drum->pan) / US_FLOAT(128.0);
layer->sound = &drum->sound;
layer->freqScale = layer->sound->tuning;
}
skip:;
- } else {
- temp_v0_20 = phi_v1 + seqPlayer->transposition + seqChannel->transposition
+ } else { // instrument
+ semitone = cmdSemitone + seqPlayer->transposition + seqChannel->transposition
+ layer->transposition;
- if (temp_v0_20 >= 0x80) {
- layer->unk0b20 = TRUE;
+ if (semitone >= 0x80) {
+ layer->stopSomething = TRUE;
} else {
- phi_v1_2 = layer->instrument;
+ instrument = layer->instrument;
if (layer->instrument == NULL) {
- phi_v1_2 = seqChannel->instrument;
+ instrument = seqChannel->instrument;
}
if (layer->portamento.mode != 0) {
- phi_a1_3 = layer->portamentoTargetNote;
- if (phi_a1_3 < temp_v0_20) {
- phi_a1_3 = temp_v0_20;
+ usedSemitone = layer->portamentoTargetNote;
+ if (usedSemitone < semitone) {
+ usedSemitone = semitone;
}
- if (phi_v1_2 != NULL) {
- if (phi_a1_3 < phi_v1_2->normalRangeLo) {
- phi_v0_5 = &phi_v1_2->lowNotesSound;
- } else if (phi_a1_3 <= phi_v1_2->normalRangeHi) {
- phi_v0_5 = &phi_v1_2->normalNotesSound;
+ if (instrument != NULL) {
+ if (usedSemitone < instrument->normalRangeLo) {
+ sound = &instrument->lowNotesSound;
+ } else if (usedSemitone <= instrument->normalRangeHi) {
+ sound = &instrument->normalNotesSound;
} else {
- phi_v0_5 = &phi_v1_2->highNotesSound;
+ sound = &instrument->highNotesSound;
}
- sameSound = (phi_v0_5 == layer->sound);
- layer->sound = phi_v0_5;
- phi_f0 = phi_v0_5->tuning;
+ sameSound = (sound == layer->sound);
+ layer->sound = sound;
+ tuning = sound->tuning;
} else {
layer->sound = NULL;
- phi_f0 = 1.0f;
+ tuning = 1.0f;
}
- temp_f2 = gNoteFrequencies[temp_v0_20] * phi_f0;
- temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * phi_f0;
+ temp_f2 = gNoteFrequencies[semitone] * tuning;
+ temp_f12 = gNoteFrequencies[layer->portamentoTargetNote] * tuning;
portamento = &layer->portamento;
- switch (layer->portamento.mode & ~0x80) {
- case 1:
- case 3:
- case 5:
+ switch (PORTAMENTO_MODE(layer->portamento)) {
+ case PORTAMENTO_MODE_1:
+ case PORTAMENTO_MODE_3:
+ case PORTAMENTO_MODE_5:
sp24 = temp_f2;
- sp28 = temp_f12;
+ freqScale = temp_f12;
break;
- case 2:
- case 4:
+ case PORTAMENTO_MODE_2:
+ case PORTAMENTO_MODE_4:
sp24 = temp_f12;
- sp28 = temp_f2;
+ freqScale = temp_f2;
break;
}
- portamento->extent = sp24 / sp28 - US_FLOAT(1.0);
- if (layer->portamento.mode & 0x80) {
+ portamento->extent = sp24 / freqScale - US_FLOAT(1.0);
+ if (PORTAMENTO_IS_SPECIAL(layer->portamento)) {
portamento->speed = US_FLOAT(32512.0) * FLOAT_CAST(seqPlayer->tempo)
/ ((f32) layer->delay * (f32) gTempoInternalToExternal
* FLOAT_CAST(layer->portamentoTime));
@@ -715,24 +724,24 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
portamento->speed = US_FLOAT(127.0) / FLOAT_CAST(layer->portamentoTime);
}
portamento->cur = 0.0f;
- layer->freqScale = sp28;
- if ((layer->portamento.mode & ~0x80) == 5) {
- layer->portamentoTargetNote = temp_v0_20;
+ layer->freqScale = freqScale;
+ if (PORTAMENTO_MODE(layer->portamento) == PORTAMENTO_MODE_5) {
+ layer->portamentoTargetNote = semitone;
}
- } else if (phi_v1_2 != NULL) {
- if (temp_v0_20 < phi_v1_2->normalRangeLo) {
- phi_v0_6 = &phi_v1_2->lowNotesSound;
- } else if (temp_v0_20 <= phi_v1_2->normalRangeHi) {
- phi_v0_6 = &phi_v1_2->normalNotesSound;
+ } else if (instrument != NULL) {
+ if (semitone < instrument->normalRangeLo) {
+ sound = &instrument->lowNotesSound;
+ } else if (semitone <= instrument->normalRangeHi) {
+ sound = &instrument->normalNotesSound;
} else {
- phi_v0_6 = &phi_v1_2->highNotesSound;
+ sound = &instrument->highNotesSound;
}
- sameSound = (phi_v0_6 == layer->sound);
- layer->sound = phi_v0_6;
- layer->freqScale = phi_v0_6->tuning * gNoteFrequencies[temp_v0_20];
+ sameSound = (sound == layer->sound);
+ layer->sound = sound;
+ layer->freqScale = sound->tuning * gNoteFrequencies[semitone];
} else {
layer->sound = NULL;
- layer->freqScale = gNoteFrequencies[temp_v0_20];
+ layer->freqScale = gNoteFrequencies[semitone];
}
}
}
@@ -740,28 +749,28 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer *layer) {
}
}
- if (layer->unk0b20 == TRUE) {
- if (layer->note != NULL || layer->unk0b10) {
+ if (layer->stopSomething == TRUE) {
+ if (layer->note != NULL || layer->continuousNotes) {
seq_channel_layer_note_decay(layer);
}
return;
}
- if (!layer->unk0b10) {
- sp3D = TRUE;
- } else if (layer->note == NULL || layer->unk1 == 0) {
- sp3D = TRUE;
+ if (!layer->continuousNotes) {
+ allocNewNote = TRUE;
+ } else if (layer->note == NULL || layer->status == SOUND_LOAD_STATUS_NOT_LOADED) {
+ allocNewNote = TRUE;
} else if (sameSound == FALSE) {
seq_channel_layer_note_decay(layer);
- sp3D = TRUE;
+ allocNewNote = TRUE;
} else {
- sp3D = FALSE;
+ allocNewNote = FALSE;
if (layer->sound == NULL) {
- func_80319164(layer->note, layer);
+ init_synthetic_wave(layer->note, layer);
}
}
- if (sp3D != FALSE) {
+ if (allocNewNote != FALSE) {
layer->note = alloc_note(layer);
}
@@ -862,7 +871,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
if (seqChannel->stopScript) {
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < LAYERS_MAX; i++) {
if (seqChannel->layers[i] != NULL) {
seq_channel_layer_process_script(seqChannel->layers[i]);
}
@@ -871,7 +880,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
seqPlayer = seqChannel->seqPlayer;
- if (seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_80) != 0) {
+ if (seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_STOP_SCRIPT) != 0) {
return;
}
@@ -883,7 +892,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
if (seqChannel->delay == 0) {
for (;;) {
cmd = m64_read_u8(state);
- if (cmd == 0xff) // function return or end of script
+ if (cmd == 0xff) // chan_end
{
// This fixes a reordering in 'case 0x90', somehow
sp5A = state->depth;
@@ -893,16 +902,16 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
state->depth--, state->pc = state->stack[state->depth];
}
- if (cmd == 0xfe) // delay for 1 frame
+ if (cmd == 0xfe) // chan_delay1
{
break;
}
- if (cmd == 0xfd) // delay for N frames
+ if (cmd == 0xfd) // chan_delay
{
seqChannel->delay = m64_read_compressed_u16(state);
break;
}
- if (cmd == 0xf3) // delay forever
+ if (cmd == 0xf3) // chan_hang
{
seqChannel->stopScript = TRUE;
break;
@@ -912,18 +921,18 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
// towards the bottom of the function)
if (cmd > 0xc0) {
switch (cmd) {
- case 0xfc: // function call
+ case 0xfc: // chan_call
sp5A = m64_read_s16(state);
state->depth++, state->stack[state->depth - 1] = state->pc;
state->pc = seqPlayer->seqData + sp5A;
break;
- case 0xf8: // loop start, N iterations (or 256 if N = 0)
+ case 0xf8: // chan_loop; loop start, N iterations (or 256 if N = 0)
state->remLoopIters[state->depth] = m64_read_u8(state);
state->depth++, state->stack[state->depth - 1] = state->pc;
break;
- case 0xf7: // loop end
+ case 0xf7: // chan_loopend
state->remLoopIters[state->depth - 1]--;
if (state->remLoopIters[state->depth - 1] != 0) {
state->pc = state->stack[state->depth - 1];
@@ -932,14 +941,14 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
break;
- case 0xf6: // break loop, if combined with jump
+ case 0xf6: // chan_break; break loop, if combined with jump
state->depth--;
break;
- case 0xfb: // unconditional jump
- case 0xfa: // jump if == 0
- case 0xf9: // jump if < 0
- case 0xf5: // jump if >= 0
+ case 0xfb: // chan_jump
+ case 0xfa: // chan_beqz
+ case 0xf9: // chan_bltz
+ case 0xf5: // chan_bgez
sp5A = m64_read_s16(state);
if (cmd == 0xfa && value != 0)
break;
@@ -950,23 +959,23 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
state->pc = seqPlayer->seqData + sp5A;
break;
- case 0xf2: // reserve N notes for channel
+ case 0xf2: // chan_reservenotes
// seqChannel->notePool should live in a saved register
note_pool_clear(&seqChannel->notePool);
temp = m64_read_u8(state);
note_pool_fill(&seqChannel->notePool, temp);
break;
- case 0xf1: // reserve 0 notes for channel
+ case 0xf1: // chan_unreservenotes
note_pool_clear(&seqChannel->notePool);
break;
- case 0xc2: // set up dynamic table
+ case 0xc2: // chan_setdyntable
sp5A = m64_read_s16(state);
seqChannel->dynTable = (void *) (seqPlayer->seqData + sp5A);
break;
- case 0xc5: // set up dynamic table, dynamically
+ case 0xc5: // chan_dynsetdyntable
if (value != -1) {
sp5A = (*seqChannel->dynTable)[value][1]
+ ((*seqChannel->dynTable)[value][0] << 8);
@@ -974,89 +983,89 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
break;
- case 0xc1: // set instrument (or "set program")
+ case 0xc1: // chan_setinstr ("set program"?)
set_instrument(seqChannel, m64_read_u8(state));
break;
- case 0xc3:
+ case 0xc3: // chan_largenotesoff
seqChannel->largeNotes = FALSE;
break;
- case 0xc4:
+ case 0xc4: // chan_largenoteson
seqChannel->largeNotes = TRUE;
break;
- case 0xdf: // set volume
+ case 0xdf: // chan_setvol
sequence_channel_set_volume(seqChannel, m64_read_u8(state));
break;
- case 0xe0: // set volume scale
+ case 0xe0: // chan_setvolscale
seqChannel->volumeScale = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);
break;
- case 0xde: // pitch bend using raw frequency multiplier N/2^15 (N is u16)
+ case 0xde: // chan_freqscale; pitch bend using raw frequency multiplier N/2^15 (N is u16)
sp5A = m64_read_s16(state);
seqChannel->freqScale = FLOAT_CAST(sp5A) / US_FLOAT(32768.0);
break;
- case 0xd3: // pitch bend by <= 1 octave in either direction (-127..127)
+ case 0xd3: // chan_pitchbend; pitch bend by <= 1 octave in either direction (-127..127)
// (m64_read_u8(state) is really s8 here)
temp = m64_read_u8(state) + 127;
seqChannel->freqScale = gPitchBendFrequencyScale[temp];
break;
- case 0xdd: // set pan
+ case 0xdd: // chan_setpan
seqChannel->pan = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);
break;
- case 0xdc: // set proportion of pan to come from channel (0..128)
+ case 0xdc: // chan_setpanmix; set proportion of pan to come from channel (0..128)
seqChannel->panChannelWeight = FLOAT_CAST(m64_read_u8(state)) / US_FLOAT(128.0);
break;
- case 0xdb: // set transposition in semitones
+ case 0xdb: // chan_transpose; set transposition in semitones
tempSigned = *state->pc;
state->pc++;
seqChannel->transposition = tempSigned;
break;
- case 0xda: // set adsr envelope
+ case 0xda: // chan_setenvelope
sp5A = m64_read_s16(state);
seqChannel->adsr.envelope = (struct AdsrEnvelope *) (seqPlayer->seqData + sp5A);
break;
- case 0xd9: // set adsr decay/release
+ case 0xd9: // chan_setdecayrelease
seqChannel->adsr.releaseRate = m64_read_u8(state);
break;
- case 0xd8: // set vibrato extent
+ case 0xd8: // chan_setvibratoextent
seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8;
seqChannel->vibratoExtentStart = 0;
seqChannel->vibratoExtentChangeDelay = 0;
break;
- case 0xd7: // set vibrato rate
+ case 0xd7: // chan_setvibratorate
seqChannel->vibratoRateStart = seqChannel->vibratoRateTarget =
m64_read_u8(state) * 32;
seqChannel->vibratoRateChangeDelay = 0;
break;
- case 0xe2: // set vibrato extent to change linearly per note
+ case 0xe2: // chan_setvibratoextentlinear
seqChannel->vibratoExtentStart = m64_read_u8(state) * 8;
seqChannel->vibratoExtentTarget = m64_read_u8(state) * 8;
seqChannel->vibratoExtentChangeDelay = m64_read_u8(state) * 16;
break;
- case 0xe1: // set vibrato rate to change linearly per note
+ case 0xe1: // chan_setvibratoratelinear
seqChannel->vibratoRateStart = m64_read_u8(state) * 32;
seqChannel->vibratoRateTarget = m64_read_u8(state) * 32;
seqChannel->vibratoRateChangeDelay = m64_read_u8(state) * 16;
break;
- case 0xe3: // set delay until vibrato start for each note
+ case 0xe3: // chan_setvibratodelay
seqChannel->vibratoDelay = m64_read_u8(state) * 16;
break;
- case 0xd6: // noop, intended to set updates per frame
+ case 0xd6: // chan_setupdatesperframe_unimplemented
temp = m64_read_u8(state);
if (temp == 0) {
temp = gAudioUpdatesPerFrame;
@@ -1064,11 +1073,11 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
seqChannel->updatesPerFrameUnused = temp;
break;
- case 0xd4: // "dry/wet mix of the effects loop", in practice reverb
+ case 0xd4: // chan_setreverb
seqChannel->reverb = m64_read_u8(state);
break;
- case 0xc6: // switch bank within set
+ case 0xc6: // chan_setbank; switch bank within set
temp = m64_read_u8(state);
// Switch to the temp's (0-indexed) bank in this sequence's
// bank set. Note that in the binary format (not in the JSON!)
@@ -1082,7 +1091,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
break;
- case 0xc7: // write to sequence data (!)
+ case 0xc7: // chan_writeseq; write to sequence data (!)
// sp38 doesn't go on the stack
sp38 = value;
temp2 = m64_read_u8(state);
@@ -1090,9 +1099,9 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
seqPlayer->seqData[sp5A] = sp38 + temp2;
break;
- case 0xc8: // subtraction
- case 0xc9: // bitand
- case 0xcc: // set temp
+ case 0xc8: // chan_subtract
+ case 0xc9: // chan_bitand
+ case 0xcc: // chan_setval
temp = m64_read_u8(state);
if (cmd == 0xc8) {
value -= temp;
@@ -1103,28 +1112,28 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
break;
- case 0xca: // set mute behavior
+ case 0xca: // chan_setmutebhv
seqChannel->muteBehavior = m64_read_u8(state);
break;
- case 0xcb: // read from array in sequence data
+ case 0xcb: // chan_readseq
sp5A = m64_read_s16(state);
value = seqPlayer->seqData[sp5A + value];
break;
- case 0xd0: // set whether stereo/headset audio plays differently
+ case 0xd0: // chan_stereoheadseteffects
seqChannel->stereoHeadsetEffects = m64_read_u8(state);
break;
- case 0xd1: // set note allocation policy (see playback.h)
+ case 0xd1: // chan_setnoteallocationpolicy
seqChannel->noteAllocPolicy = m64_read_u8(state);
break;
- case 0xd2: // set adsr sustain level (0..2^16)
+ case 0xd2: // chan_setsustain
seqChannel->adsr.sustain = m64_read_u8(state) << 8;
break;
- case 0xe4: // dynamic function pointer call
+ case 0xe4: // chan_dyncall
if (value != -1) {
u8(*thingy)[2] = *seqChannel->dynTable;
state->depth++, state->stack[state->depth - 1] = state->pc;
@@ -1138,39 +1147,39 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
loBits = cmd & 0xf;
// #define loBits (cmd & 0xf)
switch (cmd & 0xf0) {
- case 0x00: // test finished
+ case 0x00: // chan_testlayerfinished
if (seqChannel->layers[loBits] != NULL) {
value = seqChannel->layers[loBits]->finished;
}
break;
- case 0x70: // write data back to audio lib
+ case 0x70: // chan_iowriteval; write data back to audio lib
seqChannel->soundScriptIO[loBits] = value;
break;
- case 0x80: // read data from audio lib
+ case 0x80: // chan_ioreadval; read data from audio lib
value = seqChannel->soundScriptIO[loBits];
if (loBits < 4) {
seqChannel->soundScriptIO[loBits] = -1;
}
break;
- case 0x50: // subtract with read data from audio lib
+ case 0x50: // chan_ioreadvalsub; subtract with read data from audio lib
value -= seqChannel->soundScriptIO[loBits];
break;
- case 0x90: // set layer
+ case 0x90: // chan_setlayer
sp5A = m64_read_s16(state);
if (seq_channel_set_layer(seqChannel, loBits) == 0) {
seqChannel->layers[loBits]->scriptState.pc = seqPlayer->seqData + sp5A;
}
break;
- case 0xa0: // free layer
+ case 0xa0: // chan_freelayer
seq_channel_layer_free(seqChannel, loBits);
break;
- case 0xb0: // set dynamic layer
+ case 0xb0: // chan_dynsetlayer
if (value != -1 && seq_channel_set_layer(seqChannel, loBits) != -1) {
temp = (*seqChannel->dynTable)[value][0]
+ ((*seqChannel->dynTable)[value][1] << 8);
@@ -1178,24 +1187,24 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
break;
- case 0x60: // set note priority (>= 2)
+ case 0x60: // chan_setnotepriority (arg must be >= 2)
seqChannel->notePriority = loBits;
break;
- case 0x10: // start a channel with a given sound script
+ case 0x10: // chan_startchannel
sp5A = m64_read_s16(state);
sequence_channel_enable(seqPlayer, loBits, seqPlayer->seqData + sp5A);
break;
- case 0x20: // disable a channel
+ case 0x20: // chan_disablechannel
sequence_channel_disable(seqPlayer->channels[loBits]);
break;
- case 0x30: // write data back to audio lib for another channel
+ case 0x30: // chan_iowriteval2; write data back to audio lib for another channel
seqPlayer->channels[loBits]->soundScriptIO[m64_read_u8(state)] = value;
break;
- case 0x40: // read data from audio lib from another channel
+ case 0x40: // chan_ioreadval2; read data from audio lib from another channel
value = seqPlayer->channels[loBits]->soundScriptIO[m64_read_u8(state)];
break;
}
@@ -1203,7 +1212,7 @@ void sequence_channel_process_script(struct SequenceChannel *seqChannel) {
}
}
- for (i = 0; i < 4; i++) {
+ for (i = 0; i < LAYERS_MAX; i++) {
if (seqChannel->layers[i] != 0) {
seq_channel_layer_process_script(seqChannel->layers[i]);
}
@@ -1237,7 +1246,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
}
if (seqPlayer->bankDmaRemaining == 0) {
seqPlayer->bankDmaInProgress = FALSE;
- func_8031784C(seqPlayer->loadingBank, gAlTbl->seqArray[seqPlayer->loadingBankId].offset,
+ patch_audio_bank(seqPlayer->loadingBank, gAlTbl->seqArray[seqPlayer->loadingBankId].offset,
seqPlayer->loadingBankNumInstruments, seqPlayer->loadingBankNumDrums);
gCtlEntries[seqPlayer->loadingBankId].numInstruments = seqPlayer->loadingBankNumInstruments;
gCtlEntries[seqPlayer->loadingBankId].numDrums = seqPlayer->loadingBankNumDrums;
@@ -1264,16 +1273,16 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
// If discarded, bail out.
if (IS_SEQ_LOAD_COMPLETE(seqPlayer->seqId) == FALSE
- || IS_BANK_LOAD_COMPLETE(seqPlayer->anyBank[0]) == FALSE) {
+ || IS_BANK_LOAD_COMPLETE(seqPlayer->defaultBank[0]) == FALSE) {
sequence_player_disable(seqPlayer);
return;
}
// Remove possible SOUND_LOAD_STATUS_DISCARDABLE marks.
gSeqLoadStatus[seqPlayer->seqId] = SOUND_LOAD_STATUS_COMPLETE;
- gBankLoadStatus[seqPlayer->anyBank[0]] = SOUND_LOAD_STATUS_COMPLETE;
+ gBankLoadStatus[seqPlayer->defaultBank[0]] = SOUND_LOAD_STATUS_COMPLETE;
- if (seqPlayer->muted && (seqPlayer->muteBehavior & MUTE_BEHAVIOR_80) != 0) {
+ if (seqPlayer->muted && (seqPlayer->muteBehavior & MUTE_BEHAVIOR_STOP_SCRIPT) != 0) {
return;
}
@@ -1290,7 +1299,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
} else {
for (;;) {
cmd = m64_read_u8(state);
- if (cmd == 0xff) // function return or end of script
+ if (cmd == 0xff) // seq_end
{
if (state->depth == 0) {
sequence_player_disable(seqPlayer);
@@ -1299,13 +1308,13 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
state->depth--, state->pc = state->stack[state->depth];
}
- if (cmd == 0xfd) // delay for N frames
+ if (cmd == 0xfd) // seq_delay
{
seqPlayer->delay = m64_read_compressed_u16(state);
break;
}
- if (cmd == 0xfe) // delay for 1 frame
+ if (cmd == 0xfe) // seq_delay1
{
seqPlayer->delay = 1;
break;
@@ -1313,21 +1322,21 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
if (cmd >= 0xc0) {
switch (cmd) {
- case 0xff:
+ case 0xff: // seq_end
break;
- case 0xfc: // function call
+ case 0xfc: // seq_call
u16v = m64_read_s16(state);
state->depth++, state->stack[state->depth - 1] = state->pc;
state->pc = seqPlayer->seqData + u16v;
break;
- case 0xf8: // loop start, N iterations (or 256 if N = 0)
+ case 0xf8: // seq_loop; loop start, N iterations (or 256 if N = 0)
state->remLoopIters[state->depth] = m64_read_u8(state);
state->depth++, state->stack[state->depth - 1] = state->pc;
break;
- case 0xf7: // loop end
+ case 0xf7: // seq_loopend
state->remLoopIters[state->depth - 1]--;
if (state->remLoopIters[state->depth - 1] != 0) {
state->pc = state->stack[state->depth - 1];
@@ -1336,10 +1345,10 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
}
break;
- case 0xfb: // unconditional jump
- case 0xfa: // jump if == 0
- case 0xf9: // jump if < 0
- case 0xf5: // jump if >= 0
+ case 0xfb: // seq_jump
+ case 0xfa: // seq_beqz; jump if == 0
+ case 0xf9: // seq_bltz; jump if < 0
+ case 0xf5: // seq_bgez; jump if >= 0
u16v = m64_read_s16(state);
if (cmd == 0xfa && value != 0) {
break;
@@ -1353,25 +1362,25 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
state->pc = seqPlayer->seqData + u16v;
break;
- case 0xf2: // reserve N notes for sequence
+ case 0xf2: // seq_reservenotes
note_pool_clear(&seqPlayer->notePool);
note_pool_fill(&seqPlayer->notePool, m64_read_u8(state));
break;
- case 0xf1: // reserve 0 notes for sequence
+ case 0xf1: // seq_unreservenotes
note_pool_clear(&seqPlayer->notePool);
break;
- case 0xdf: // set transposition in semitones
+ case 0xdf: // seq_transpose; set transposition in semitones
seqPlayer->transposition = 0;
// fallthrough
- case 0xde: // add transposition
+ case 0xde: // seq_transposerel; add transposition
seqPlayer->transposition += (s8) m64_read_u8(state);
break;
- case 0xdd: // set tempo (bpm)
- case 0xdc: // increase tempo (bpm)
+ case 0xdd: // seq_settempo (bpm)
+ case 0xdc: // seq_addtempo (bpm)
temp = m64_read_u8(state);
if (cmd == 0xdd) {
seqPlayer->tempo = temp * TEMPO_SCALE;
@@ -1388,7 +1397,7 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
}
break;
- case 0xdb: // set volume
+ case 0xdb: // seq_setvol
temp = m64_read_u8(state);
switch (seqPlayer->state) {
case SEQUENCE_PLAYER_STATE_2:
@@ -1409,37 +1418,37 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
}
break;
- case 0xda: // increase/decrease volume
+ case 0xda: // seq_changevol
tempSigned = m64_read_u8(state);
seqPlayer->fadeVolume =
seqPlayer->fadeVolume + (f32) tempSigned / US_FLOAT(127.0);
break;
- case 0xd7: // init channels
+ case 0xd7: // seq_initchannels
u16v = m64_read_s16(state);
sequence_player_init_channels(seqPlayer, u16v);
break;
- case 0xd6: // disable channels
+ case 0xd6: // seq_disablechannels
u16v = m64_read_s16(state);
sequence_player_disable_channels(seqPlayer, u16v);
break;
- case 0xd5: // set volume multiplier for muted player
+ case 0xd5: // seq_setmutescale
tempSigned = m64_read_u8(state);
seqPlayer->muteVolumeScale = (f32) tempSigned / US_FLOAT(127.0);
break;
- case 0xd4: // mute
+ case 0xd4: // seq_mute
seqPlayer->muted = TRUE;
break;
- case 0xd3: // set mute behavior
+ case 0xd3: // seq_setmutebhv
seqPlayer->muteBehavior = m64_read_u8(state);
break;
- case 0xd2: // set short note velocity table
- case 0xd1: // set short note duration table
+ case 0xd2: // seq_setshortnotevelocitytable
+ case 0xd1: // seq_setshortnotedurationtable
u16v = m64_read_s16(state);
tempPtr = seqPlayer->seqData + u16v;
if (cmd == 0xd2) {
@@ -1449,26 +1458,26 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
}
break;
- case 0xd0: // set note allocation policy (see playback.h)
+ case 0xd0: // seq_setnoteallocationpolicy
seqPlayer->noteAllocPolicy = m64_read_u8(state);
break;
- case 0xcc: // set temp
+ case 0xcc: // seq_setval
value = m64_read_u8(state);
break;
- case 0xc9: // bitand
+ case 0xc9: // seq_bitand
value = m64_read_u8(state) & value;
break;
- case 0xc8: // subtraction
+ case 0xc8: // seq_subtract
value = value - m64_read_u8(state);
break;
}
} else {
loBits = cmd & 0xf;
switch (cmd & 0xf0) {
- case 0x00: // test whether channel has been disabled by channel script
+ case 0x00: // seq_testchdisabled
if (IS_SEQUENCE_CHANNEL_VALID(seqPlayer->channels[loBits]) == TRUE) {
value = seqPlayer->channels[loBits]->finished;
}
@@ -1479,18 +1488,18 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
break;
case 0x40:
break;
- case 0x50:
+ case 0x50: // seq_subvariation
value -= seqPlayer->seqVariation;
break;
case 0x60:
break;
- case 0x70:
+ case 0x70: // seq_setvariation
seqPlayer->seqVariation = value;
break;
- case 0x80:
+ case 0x80: // seq_getvariation
value = seqPlayer->seqVariation;
break;
- case 0x90: // start a channel with a given sound script
+ case 0x90: // seq_startchannel
u16v = m64_read_s16(state);
sequence_channel_enable(seqPlayer, loBits, seqPlayer->seqData + u16v);
break;
@@ -1515,14 +1524,14 @@ void sequence_player_process_sequence(struct SequencePlayer *seqPlayer) {
// This runs 240 times per second.
void process_sequences(UNUSED s32 iterationsRemaining) {
s32 i;
- for (i = 0; i < 3; i++) {
+ for (i = 0; i < SEQUENCE_PLAYERS; i++) {
if (gSequencePlayers[i].enabled == TRUE) {
sequence_player_process_sequence(gSequencePlayers + i);
sequence_player_process_sound(gSequencePlayers + i);
}
}
- func_80319BC8();
- func_80318908();
+ reclaim_notes();
+ process_notes();
}
void init_sequence_player(u32 player) {
@@ -1534,7 +1543,7 @@ void init_sequence_player(u32 player) {
seqPlayer->tempoAcc = 0;
seqPlayer->tempo = 120 * TEMPO_SCALE; // 120 BPM
seqPlayer->transposition = 0;
- seqPlayer->muteBehavior = MUTE_BEHAVIOR_80 | MUTE_BEHAVIOR_40 | MUTE_BEHAVIOR_20;
+ seqPlayer->muteBehavior = MUTE_BEHAVIOR_STOP_SCRIPT | MUTE_BEHAVIOR_STOP_NOTES | MUTE_BEHAVIOR_SOFTEN;
seqPlayer->noteAllocPolicy = 0;
seqPlayer->shortNoteVelocityTable = gDefaultShortNoteVelocityTable;
seqPlayer->shortNoteDurationTable = gDefaultShortNoteDurationTable;
@@ -1544,29 +1553,34 @@ void init_sequence_player(u32 player) {
seqPlayer->muteVolumeScale = 0.5f;
}
-void func_8031D4B8(void) {
+void init_sequence_players(void) {
// Initialization function, called from audio_init
s32 i, j;
- for (i = 0; i < 32; i++) {
+ for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {
gSequenceChannels[i].seqPlayer = NULL;
gSequenceChannels[i].enabled = FALSE;
}
- for (i = 0; i < 32; i++) {
- //! Size of wrong array. Zeroes out second half of gSequenceChannels[0],
- // all of gSequenceChannels[1..31], and part of D_802245D8[0].
- // However, this is only called at startup, so it's pretty harmless.
- for (j = 0; j < ARRAY_COUNT(D_802245D8); j++) {
+ for (i = 0; i < ARRAY_COUNT(gSequenceChannels); i++) {
+ // @bug Size of wrong array. Zeroes out second half of gSequenceChannels[0],
+ // all of gSequenceChannels[1..31], and part of gSequenceLayers[0].
+ // However, this is only called at startup, so it's harmless.
+#ifdef AVOID_UB
+#define LAYERS_SIZE LAYERS_MAX
+#else
+#define LAYERS_SIZE ARRAY_COUNT(gSequenceLayers)
+#endif
+ for (j = 0; j < LAYERS_SIZE; j++) {
gSequenceChannels[i].layers[j] = NULL;
}
}
- func_8031AF74();
+ init_layer_freelist();
- for (i = 0; i < ARRAY_COUNT(D_802245D8); i++) {
- D_802245D8[i].seqChannel = NULL;
- D_802245D8[i].enabled = FALSE;
+ for (i = 0; i < ARRAY_COUNT(gSequenceLayers); i++) {
+ gSequenceLayers[i].seqChannel = NULL;
+ gSequenceLayers[i].enabled = FALSE;
}
for (i = 0; i < SEQUENCE_PLAYERS; i++) {
diff --git a/src/audio/seqplayer.h b/src/audio/seqplayer.h
@@ -11,6 +11,6 @@ void audio_list_push_back(struct AudioListItem *list, struct AudioListItem *item
void *audio_list_pop_back(struct AudioListItem *list);
void process_sequences(s32 iterationsRemaining);
void init_sequence_player(u32 player);
-void func_8031D4B8(void);
+void init_sequence_players(void);
#endif /* _AUDIO_SEQPLAYER_H */
diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c
@@ -21,9 +21,6 @@
#define DMEM_ADDR_WET_LEFT_CH 0x740
#define DMEM_ADDR_WET_RIGHT_CH 0x880
-#define DEFAULT_LEN_1CH 0x140
-#define DEFAULT_LEN_2CH 0x280
-
#define aSetLoadBufferPair(pkt, c, off) \
aSetBuffer(pkt, 0, c + DMEM_ADDR_WET_LEFT_CH, 0, DEFAULT_LEN_1CH - c); \
aLoadBuffer(pkt, VIRTUAL_TO_PHYSICAL2(&gSynthesisReverb.ringBuffer.left[off])); \
@@ -49,7 +46,7 @@ struct VolumeChange {
};
u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateIndex);
-u64 *process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd);
+u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd);
u64 *load_wave_samples(u64 *cmd, struct Note *note, s32 nSamplesToLoad);
u64 *final_resample(u64 *cmd, struct Note *note, s32 count, u16 pitch, u16 dmemIn, u32 flags);
u64 *process_envelope(u64 *cmd, struct Note *note, s32 nSamples, u16 inBuf, s32 headsetPanSettings,
@@ -185,7 +182,7 @@ u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateI
if (gSynthesisReverb.useReverb == 0) {
aClearBuffer(cmd++, DMEM_ADDR_LEFT_CH, DEFAULT_LEN_2CH);
- cmd = process_notes(aiBuf, bufLen, cmd);
+ cmd = synthesis_process_notes(aiBuf, bufLen, cmd);
} else {
if (gReverbDownsampleRate == 1) {
// Put the oldest samples in the ring buffer into the wet channels
@@ -224,7 +221,7 @@ u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateI
/*out*/ DMEM_ADDR_LEFT_CH);
aDMEMMove(cmd++, DMEM_ADDR_LEFT_CH, DMEM_ADDR_WET_LEFT_CH, DEFAULT_LEN_2CH);
}
- cmd = process_notes(aiBuf, bufLen, cmd);
+ cmd = synthesis_process_notes(aiBuf, bufLen, cmd);
if (gReverbDownsampleRate == 1) {
aSetSaveBufferPair(cmd++, 0, v1->lengths[0], v1->startPos);
if (v1->lengths[1] != 0) {
@@ -246,7 +243,7 @@ u64 *synthesis_do_one_audio_update(u16 *aiBuf, s32 bufLen, u64 *cmd, u32 updateI
}
#ifdef NON_MATCHING
-u64 *process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) {
+u64 *synthesis_process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) {
s32 noteIndex; // sp174
struct Note *note; // s7
struct AudioBankSample *audioBookSample; // sp164
@@ -571,9 +568,9 @@ u64 *process_notes(u16 *aiBuf, s32 bufLen, u64 *cmd) {
}
#elif defined(VERSION_JP)
-GLOBAL_ASM("asm/non_matchings/process_notes_jp.s")
+GLOBAL_ASM("asm/non_matchings/synthesis_process_notes_jp.s")
#else
-GLOBAL_ASM("asm/non_matchings/process_notes_us.s")
+GLOBAL_ASM("asm/non_matchings/synthesis_process_notes_us.s")
#endif
u64 *load_wave_samples(u64 *cmd, struct Note *note, s32 nSamplesToLoad) {
diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h
@@ -1,8 +1,11 @@
-#ifndef _AUDIO_SYNTHESIS_H
-#define _AUDIO_SYNTHESIS_H
+#ifndef AUDIO_SYNTHESIS_H
+#define AUDIO_SYNTHESIS_H
#include "internal.h"
+#define DEFAULT_LEN_1CH 0x140
+#define DEFAULT_LEN_2CH 0x280
+
#define MAX_UPDATES_PER_FRAME 4
struct ReverbRingBufferItem
@@ -46,4 +49,4 @@ void note_set_frequency(struct Note *note, f32 frequency);
void note_enable(struct Note *note);
void note_disable(struct Note *note);
-#endif /* _AUDIO_SYNTHESIS_H */
+#endif /* AUDIO_SYNTHESIS_H */
diff --git a/src/buffers/framebuffers.c b/src/buffers/framebuffers.c
@@ -3,7 +3,7 @@
#include "sm64.h"
// 0x70800 bytes
-#if BUGFIXES_CRITICAL
+#ifdef AVOID_UB
u16 gFrameBuffers[3][SCREEN_WIDTH * SCREEN_HEIGHT];
#else
u16 gFrameBuffer0[SCREEN_WIDTH * SCREEN_HEIGHT];
diff --git a/src/buffers/framebuffers.h b/src/buffers/framebuffers.h
@@ -3,8 +3,8 @@
// level_script.c assumes that the frame buffers are adjacent, while game.c's
// -g codegen implies that they are separate variables. This is impossible to
-// reconcile without undefined behavior. Avoid that on non-IDO.
-#if BUGFIXES_CRITICAL
+// reconcile without undefined behavior. Avoid that when possible.
+#ifdef AVOID_UB
extern u16 gFrameBuffers[3][SCREEN_WIDTH * SCREEN_HEIGHT];
#define gFrameBuffer0 gFrameBuffers[0]
#define gFrameBuffer1 gFrameBuffers[1]
diff --git a/src/buffers/zbuffer.c b/src/buffers/zbuffer.c
@@ -0,0 +1,5 @@
+#include <ultra64.h>
+
+#include "zbuffer.h"
+
+ALIGNED8 u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];
diff --git a/src/buffers/zbuffer.h b/src/buffers/zbuffer.h
@@ -0,0 +1,9 @@
+#ifndef ZBUFFER_H
+#define ZBUFFER_H
+
+#include "types.h"
+#include "config.h"
+
+extern u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];
+
+#endif
diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c
@@ -628,7 +628,7 @@ static s32 beh_cmd_scale(void) {
return BEH_CONTINUE;
}
-static s32 beh_cmd_obj_set_gravity(void) {
+static s32 beh_cmd_obj_set_physics(void) {
UNUSED f32 sp04, sp00;
gCurrentObject->oWallHitboxRadius = (f32)(s16)(gBehCommand[1] >> 16);
@@ -731,7 +731,7 @@ static BehCommandProc BehaviorJumpTable[] = {
beh_cmd_obj_set_pos,
beh_cmd_obj_set_float2,
beh_cmd_interact_type,
- beh_cmd_obj_set_gravity,
+ beh_cmd_obj_set_physics,
Behavior31,
beh_cmd_scale,
beh_cmd_obj_bit_clear_int32,
diff --git a/src/engine/graph_node.h b/src/engine/graph_node.h
@@ -34,6 +34,9 @@ extern Vec3s gVec3sOne;
// Whether the node type has a function pointer of type GraphNodeFunc
#define GRAPH_NODE_TYPE_FUNCTIONAL 0x100
+// Type used for Bowser and an unused geo function in obj_behaviors.c
+#define GRAPH_NODE_TYPE_400 0x400
+
// The discriminant for different types of geo nodes
#define GRAPH_NODE_TYPE_ROOT 0x001
#define GRAPH_NODE_TYPE_ORTHO_PROJECTION 0x002
diff --git a/src/engine/level_script.c b/src/engine/level_script.c
@@ -3,9 +3,9 @@
#include "sm64.h"
#include "audio/external.h"
#include "buffers/framebuffers.h"
+#include "buffers/zbuffer.h"
#include "game/area.h"
#include "game/display.h"
-#include "game/game.h"
#include "game/mario.h"
#include "game/memory.h"
#include "game/object_helpers.h"
diff --git a/src/engine/math_util.c b/src/engine/math_util.c
@@ -568,7 +568,9 @@ void mtxf_mul_vec3s(Mat4 mtx, Vec3s b) {
* and no crashes occur.
*/
void mtxf_to_mtx(Mtx *dest, Mat4 src) {
-#if ENDIAN_IND
+#ifdef AVOID_UB
+ // Avoid type-casting which is technically UB by calling the equivalent
+ // guMtxF2L function. This helps little-endian systems, as well.
guMtxF2L(src, dest);
#else
s32 asFixedPoint;
diff --git a/src/engine/math_util.h b/src/engine/math_util.h
@@ -14,7 +14,7 @@
* Thus, for non-IDO compilers we use the standard-compliant version.
*/
extern f32 gSineTable[];
-#if BUGFIXES_CRITICAL
+#ifdef AVOID_UB
#define gCosineTable (gSineTable + 0x400)
#else
extern f32 gCosineTable[];
diff --git a/src/game/area.c b/src/game/area.c
@@ -198,7 +198,7 @@ void func_8027A7C4(void) {
if (gCurrentArea != NULL) {
geo_call_global_function_nodes(gCurrentArea->unk04, GEO_CONTEXT_AREA_UNLOAD);
gCurrentArea = NULL;
- gWarpTransition.isActive = 0;
+ gWarpTransition.isActive = FALSE;
}
for (i = 0; i < 8; i++) {
@@ -235,7 +235,7 @@ void func_8027A998(void) {
gCurrentArea->flags = 0;
gCurrentArea = NULL;
- gWarpTransition.isActive = 0;
+ gWarpTransition.isActive = FALSE;
}
}
@@ -298,42 +298,42 @@ void play_transition(s16 transType, s16 time, u8 red, u8 green, u8 blue) {
red = gWarpTransRed, green = gWarpTransGreen, blue = gWarpTransBlue;
}
- if (transType < 8) {
+ if (transType < 8) { // if transition is RGB
gWarpTransition.data.red = red;
gWarpTransition.data.green = green;
gWarpTransition.data.blue = blue;
- } else {
+ } else { // if transition is textured
gWarpTransition.data.red = red;
gWarpTransition.data.green = green;
gWarpTransition.data.blue = blue;
- // Both the start and end circles are always located in the middle of the screen.
+ // Both the start and end textured transition are always located in the middle of the screen.
// If you really wanted to, you could place the start at one corner and the end at
// the opposite corner. This will make the transition image look like it is moving
// across the screen.
- gWarpTransition.data.startCircleX = 160;
- gWarpTransition.data.startCircleY = 120;
- gWarpTransition.data.endCircleX = 160;
- gWarpTransition.data.endCircleY = 120;
+ gWarpTransition.data.startTexX = SCREEN_WIDTH / 2;
+ gWarpTransition.data.startTexY = SCREEN_HEIGHT / 2;
+ gWarpTransition.data.endTexX = SCREEN_WIDTH / 2;
+ gWarpTransition.data.endTexY = SCREEN_HEIGHT / 2;
- gWarpTransition.data.unk10 = 0;
+ gWarpTransition.data.texTimer = 0;
if (transType & 1) // Is the image fading in?
{
- gWarpTransition.data.startCircleRadius = 320;
+ gWarpTransition.data.startTexRadius = SCREEN_WIDTH;
if (transType >= 0x0F) {
- gWarpTransition.data.endCircleRadius = 16;
+ gWarpTransition.data.endTexRadius = 16;
} else {
- gWarpTransition.data.endCircleRadius = 0;
+ gWarpTransition.data.endTexRadius = 0;
}
} else // The image is fading out. (Reverses start & end circles)
{
if (transType >= 0x0E) {
- gWarpTransition.data.startCircleRadius = 16;
+ gWarpTransition.data.startTexRadius = 16;
} else {
- gWarpTransition.data.startCircleRadius = 0;
+ gWarpTransition.data.startTexRadius = 0;
}
- gWarpTransition.data.endCircleRadius = 320;
+ gWarpTransition.data.endTexRadius = SCREEN_WIDTH;
}
}
}
@@ -378,7 +378,7 @@ void render_game(void) {
if (gWarpTransition.isActive) {
if (gWarpTransDelay == 0) {
- gWarpTransition.isActive = !func_802CC108(0, gWarpTransition.type, gWarpTransition.time,
+ gWarpTransition.isActive = !render_screen_transition(0, gWarpTransition.type, gWarpTransition.time,
&gWarpTransition.data);
if (!gWarpTransition.isActive) {
if (gWarpTransition.type & 1) {
diff --git a/src/game/area.h b/src/game/area.h
@@ -3,95 +3,6 @@
#include "types.h"
-enum CourseNum
-{
- COURSE_NONE, // (0) Overworld (Castle Grounds, etc)
- COURSE_MIN,
- /* -------------- Main Courses -------------- */
- COURSE_STAGES_MIN = COURSE_MIN,
- COURSE_BOB = COURSE_STAGES_MIN, // (1) Bob Omb Battlefield
- COURSE_WF, // (2) Whomp's Fortress
- COURSE_JRB, // (3) Jolly Rodger's Bay
- COURSE_CCM, // (4) Cool Cool Mountain
- COURSE_BBH, // (5) Big Boo's Haunt
- COURSE_HMC, // (6) Hazy Maze Cave
- COURSE_LLL, // (7) Lethal Lava Land
- COURSE_SSL, // (8) Shifting Sand Land
- COURSE_DDD, // (9) Dire Dire Docks
- COURSE_SL, // (10) Snowman's Land
- COURSE_WDW, // (11) Wet Dry World
- COURSE_TTM, // (12) Tall Tall Mountain
- COURSE_THI, // (13) Tiny Huge Island
- COURSE_TTC, // (14) Tick Tock Clock
- COURSE_RR, // (15) Rainbow Ride
- COURSE_BONUS_STAGES,
- COURSE_STAGES_MAX = COURSE_BONUS_STAGES - 1,
- COURSE_STAGES_COUNT = COURSE_STAGES_MAX,
- /* -------------- Bonus Courses -------------- */
- COURSE_BITDW, // (16) Bowser in the Dark World
- COURSE_BITFS, // (17) Bowser in the Fire Sea
- COURSE_BITS, // (18) Bowser in the Sky
- COURSE_PSS, // (19) Princess's Secret Slide
- COURSE_CAP_COURSES,
- COURSE_COTMC = COURSE_CAP_COURSES, // (20) Cavern of the Metal Cap
- COURSE_TOTWC, // (21) Tower of the Wing Cap
- COURSE_VCUTM, // (22) Vanish Cap Under the Moat
- COURSE_WMOTR, // (23) Winged Mario over the Rainbow
- COURSE_SA, // (24) Secret Aquarium
- COURSE_CAKE_END, // (25) The End (Cake Scene)
- COURSE_AFTER_END,
- COURSE_MAX = COURSE_AFTER_END - 1,
- COURSE_COUNT = COURSE_MAX
-};
-
-#define COURSE_IS_MAIN_COURSE(cmd) (cmd >= COURSE_STAGES_MIN && cmd <= COURSE_STAGES_MAX)
-
-enum LevelNum
-{
- LEVEL_NONE, // not indexed
- LEVEL_MIN,
- LEVEL_UNKNOWN_1 = LEVEL_MIN, // (1) ""
- LEVEL_UNKNOWN_2, // (2) ""
- LEVEL_UNKNOWN_3, // (3) ""
- LEVEL_BBH, // (4) "TERESA OBAKE" Big Boo's Haunt
- LEVEL_CCM, // (5) "YYAMA1 % YSLD1" Cool Cool Mountain
- LEVEL_CASTLE, // (6) "SELECT ROOM" Castle lobby
- LEVEL_HMC, // (7) "HORROR DUNGEON" Hazy Maze Cave
- LEVEL_SSL, // (8) "SABAKU % PYRMD" Shifting Sand Land
- LEVEL_BOB, // (9) "BATTLE FIELD" Bob Omb Battlefield
- LEVEL_SL, // (10) "YUKIYAMA2" Snowman's Land
- LEVEL_WDW, // (11) "POOL KAI" Wet Dry World
- LEVEL_JRB, // (12) "WTDG % TINBOTU" Jolly Rodger's Bay
- LEVEL_THI, // (13) "BIG WORLD" Tiny Huge Island
- LEVEL_TTC, // (14) "CLOCK TOWER" Tick Tock Clock
- LEVEL_RR, // (15) "RAINBOW CRUISE" Rainbow Ride
- LEVEL_CASTLE_GROUNDS, // (16) "MAIN MAP" Castle grounds (outside)
- LEVEL_BITDW, // (17) "EXT1 YOKO SCRL" Bowser in the Dark World
- LEVEL_VCUTM, // (18) "EXT7 HORI MINI" Vanish Cap under the Moat
- LEVEL_BITFS, // (19) "EXT2 TIKA LAVA" Bowser in the Fire Sea
- LEVEL_SA, // (20) "EXT9 SUISOU" Secret Aquarium
- LEVEL_BITS, // (21) "EXT3 HEAVEN" Bowser in the Sky
- LEVEL_LLL, // (22) "FIREB1 % INVLC" Lethal Lava Land
- LEVEL_DDD, // (23) "WATER LAND" Dire Dire Docks
- LEVEL_WF, // (24) "MOUNTAIN" Whomp's Fortress
- LEVEL_ENDING, // (25) "ENDING" (Ending Cutscene)
- LEVEL_CASTLE_COURTYARD, // (26) "URANIWA" Castle courtyard (BBH entrance)
- LEVEL_PSS, // (27) "EXT4 MINI SLID" Princess's Secret Slide
- LEVEL_COTMC, // (28) "IN THE FALL" Cavern of the Metal Cap
- LEVEL_TOTWC, // (29) "EXT6 MARIO FLY" Tower of the Wing Cap
- LEVEL_BOWSER_1, // (30) "KUPPA1" Bowser in the Dark World (Boss)
- LEVEL_WMOTR, // (31) "EXT8 BLUE SKY" Winged Mario over the Rainbow
- LEVEL_UNKNOWN_32, // (32) ""
- LEVEL_BOWSER_2, // (33) "KUPPA2" Bowser in the Fire Sea (Boss)
- LEVEL_BOWSER_3, // (34) "KUPPA3" Bowser in the Sky (Final Boss)
- LEVEL_UNKNOWN_35, // (35) ""
- LEVEL_TTM, // (36) "DONKEY % SLID2" Tall Tall Mountain
- LEVEL_UNKNOWN_37, // (37) ""
- LEVEL_UNKNOWN_38, // (38) ""
- LEVEL_COUNT,
- LEVEL_MAX = LEVEL_COUNT - 1
-};
-
struct WarpNode
{
/*00*/ u8 id;
@@ -203,6 +114,21 @@ struct Area
/*0x38*/ u16 musicParam2;
};
+/**
+ * Helper macro for defining which areas of a level should zoom out the camera when the game is paused.
+ * Because a mask is used by two levels, the pattern will repeat when more than 4 areas are used by a level.
+ */
+#define ZOOMOUT_AREA_MASK(level1Area1, level1Area2, level1Area3, level1Area4, \
+ level2Area1, level2Area2, level2Area3, level2Area4) \
+ ((level2Area4) << 7 | \
+ (level2Area3) << 6 | \
+ (level2Area2) << 5 | \
+ (level2Area1) << 4 | \
+ (level1Area4) << 3 | \
+ (level1Area3) << 2 | \
+ (level1Area2) << 1 | \
+ (level1Area1) << 0)
+
// All the transition data to be used in screen_transition.c
struct WarpTransitionData
{
@@ -210,14 +136,14 @@ struct WarpTransitionData
/*0x01*/ u8 green;
/*0x02*/ u8 blue;
- /*0x04*/ s16 startCircleRadius;
- /*0x06*/ s16 endCircleRadius;
- /*0x08*/ s16 startCircleX;
- /*0x0A*/ s16 startCircleY;
- /*0x0C*/ s16 endCircleX;
- /*0x0E*/ s16 endCircleY;
+ /*0x04*/ s16 startTexRadius;
+ /*0x06*/ s16 endTexRadius;
+ /*0x08*/ s16 startTexX;
+ /*0x0A*/ s16 startTexY;
+ /*0x0C*/ s16 endTexX;
+ /*0x0E*/ s16 endTexY;
- /*0x10*/ s16 unk10;
+ /*0x10*/ s16 texTimer; // always 0, does seems to affect transition when disabled
};
#define WARP_TRANSITION_FADE_FROM_COLOR 0x00
diff --git a/src/game/behavior_actions.c b/src/game/behavior_actions.c
@@ -17,6 +17,7 @@
#include "level_update.h"
#include "audio/external.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "save_file.h"
#include "area.h"
#include "engine/graph_node.h"
@@ -36,6 +37,7 @@
#include "ingame_menu.h"
#include "room.h"
#include "rendering_graph_node.h"
+#include "level_table.h"
#define o gCurrentObject
@@ -186,7 +188,7 @@ void func_802AA618(s32 sp18, s32 sp1C, f32 sp20) {
#include "behaviors/breakable_box.inc.c"
// not sure what this is doing here. not in a behavior file.
-s32 Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) {
+Gfx *Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) {
Mat4 sp20;
struct Object *sp1C;
@@ -198,7 +200,7 @@ s32 Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx) {
func_8029EA0C(sp1C->prevObj);
}
}
- return 0;
+ return NULL;
}
#include "behaviors/heave_ho.inc.c"
@@ -244,7 +246,7 @@ void func_802B2328(
#include "behaviors/lll_volcano_flames.inc.c"
#include "behaviors/lll_hexagonal_ring.inc.c"
#include "behaviors/lll_sinking_rectangle.inc.c"
-#include "behaviors/lll_tilting_platform.inc.c"
+#include "behaviors/tilting_inverted_pyramid.inc.c"
#include "behaviors/koopa_shell.inc.c"
#include "behaviors/tox_box.inc.c"
#include "behaviors/piranha_plant.inc.c"
diff --git a/src/game/behavior_actions.h b/src/game/behavior_actions.h
@@ -94,8 +94,8 @@ void bhv_ukiki_cage_loop(void);
void bhv_bitfs_sinking_platform_loop(void);
void bhv_bitfs_sinking_cage_platform_loop(void);
void bhv_ddd_moving_pole_loop(void);
-void bhv_tilting_platform_init(void);
-void bhv_tilting_platform_loop(void);
+void bhv_platform_normals_init(void);
+void bhv_tilting_inverted_pyramid_loop(void);
void bhv_squishable_platform_loop(void);
void bhv_beta_moving_flames_spawn_loop(void);
void bhv_beta_moving_flames_loop(void);
@@ -548,15 +548,15 @@ void BehDustSmokeLoop(void);
void BehYoshiLoop(void);
void bhvLllVolcanoFallingTrap_loop(void);
-extern s32 Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);
+extern Gfx *Geo18_802B1BB0(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);
// Bowser
extern Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2);
extern Gfx *Geo18_802B798C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);
-extern s32 geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);
+extern Gfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);
// Tuxie
-extern s32 geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);
+extern Gfx *geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx);
// Cap switch
extern Gfx *Geo18_802A719C(s32 run, UNUSED struct GraphNode *node, Mat4 mtx);
diff --git a/src/game/behaviors/amp.inc.c b/src/game/behaviors/amp.inc.c
@@ -225,7 +225,7 @@ void bhv_homing_amp_loop(void) {
break;
}
- ObjectStep();
+ object_step();
// Oscillate
o->oAmpYPhase++;
diff --git a/src/game/behaviors/beta_holdable_object.inc.c b/src/game/behaviors/beta_holdable_object.inc.c
@@ -59,7 +59,7 @@ void bhv_beta_holdable_object_loop(void) {
switch (o->oHeldState) {
case HELD_FREE:
// Apply standard physics
- ObjectStep();
+ object_step();
break;
case HELD_HELD:
diff --git a/src/game/behaviors/bobomb.inc.c b/src/game/behaviors/bobomb.inc.c
@@ -21,7 +21,7 @@ void bhv_bobomb_init(void) {
void func_802E5B7C(void) {
if (((o->oBehParams >> 8) & 0x1) == 0) {
- ObjSpawnYellowCoins(o, 1);
+ obj_spawn_yellow_coins(o, 1);
o->oBehParams = 0x100;
set_object_respawn_info_bits(o, 1);
}
@@ -71,13 +71,13 @@ void BobombPatrolLoop(void) {
sp22 = o->header.gfx.unk38.animFrame;
o->oForwardVel = 5.0;
- collisionFlags = ObjectStep();
- if ((ObjLeaveIfMarioIsNearHome(o, o->oHomeX, o->oHomeY, o->oHomeZ, 400) == 1)
- && (func_802E46C0(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == 1)) {
+ collisionFlags = object_step();
+ if ((obj_return_home_if_safe(o, o->oHomeX, o->oHomeY, o->oHomeZ, 400) == 1)
+ && (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == 1)) {
o->oBobombFuseLit = 1;
o->oAction = BOBOMB_ACT_CHASE_MARIO;
}
- ObjCheckFloorDeath(collisionFlags, D_803600E0);
+ obj_check_floor_death(collisionFlags, sObjFloor);
}
void BobombChaseMarioLoop(void) {
@@ -87,18 +87,18 @@ void BobombChaseMarioLoop(void) {
sp1a = ++o->header.gfx.unk38.animFrame;
o->oForwardVel = 20.0;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if (sp1a == 5 || sp1a == 16)
PlaySound2(SOUND_OBJ_BOBOMB_WALK);
obj_turn_toward_object(o, gMarioObject, 16, 0x800);
- ObjCheckFloorDeath(collisionFlags, D_803600E0);
+ obj_check_floor_death(collisionFlags, sObjFloor);
}
void BobombLaunchedLoop(void) {
s16 collisionFlags = 0;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if ((collisionFlags & 0x1) == 1)
o->oAction = BOBOMB_ACT_EXPLODE; /* bit 0 */
}
@@ -122,7 +122,7 @@ void GenericBobombFreeLoop(void) {
break;
case BOBOMB_ACT_LAVA_DEATH:
- if (ObjLavaDeath() == 1)
+ if (obj_lava_death() == 1)
create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);
break;
@@ -149,7 +149,7 @@ void StationaryBobombFreeLoop(void) {
break;
case BOBOMB_ACT_LAVA_DEATH:
- if (ObjLavaDeath() == 1)
+ if (obj_lava_death() == 1)
create_respawner(MODEL_BLACK_BOBOMB, bhvBobomb, 3000);
break;
@@ -293,7 +293,7 @@ void BobombBuddyIdleLoop(void) {
o->oBobombBuddyPosYCopy = o->oPosY;
o->oBobombBuddyPosZCopy = o->oPosZ;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if ((sp1a == 5) || (sp1a == 16))
PlaySound2(SOUND_OBJ_BOBOMB_WALK);
@@ -373,9 +373,9 @@ void BobombBuddyTalkLoop(void) {
case BOBOMB_BUDDY_ROLE_CANNON:
if (gCurrCourseNum == COURSE_BOB)
- BobombBuddyCannonLoop(4, 105);
+ BobombBuddyCannonLoop(DIALOG_004, DIALOG_105);
else
- BobombBuddyCannonLoop(47, 106);
+ BobombBuddyCannonLoop(DIALOG_047, DIALOG_106);
break;
}
}
@@ -408,7 +408,7 @@ void BobombBuddyActionLoop(void) {
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void bhv_bobomb_buddy_loop(void) {
diff --git a/src/game/behaviors/boo.inc.c b/src/game/behaviors/boo.inc.c
@@ -459,16 +459,16 @@ static void ActionBoo4(void) {
// If there are no remaining "minion" boos, show the dialog of the Big Boo
if (obj_nearest_object_with_behavior(bhvGhostHuntBoo) == NULL) {
- dialogID = 108;
+ dialogID = DIALOG_108;
} else {
- dialogID = 107;
+ dialogID = DIALOG_107;
}
if (obj_update_dialog(2, 2, dialogID, 0)) {
create_sound_spawner(SOUND_OBJ_DYING_ENEMY1);
mark_object_for_deletion(o);
- if (dialogID == 108) { // If the Big Boo should spawn, play the jingle
+ if (dialogID == DIALOG_108) { // If the Big Boo should spawn, play the jingle
play_puzzle_jingle();
}
}
diff --git a/src/game/behaviors/boulder.inc.c b/src/game/behaviors/boulder.inc.c
@@ -13,7 +13,7 @@ void bhv_big_boulder_init(void) {
void func_802F05DC(void) {
s16 sp1E;
- sp1E = func_802E4204();
+ sp1E = object_step_without_floor_orient();
if ((sp1E & 0x09) == 0x01 && o->oVelY > 10.0f) {
PlaySound2(SOUND_GENERAL_GRINDEL_ROLL);
func_802A3004();
@@ -51,7 +51,7 @@ void bhv_big_boulder_generator_loop(void) {
o->oTimer = 0;
}
- if (!func_802E49A4(4) || is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1500))
+ if (!current_mario_room_check(4) || is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1500))
return;
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)) {
diff --git a/src/game/behaviors/bowling_ball.inc.c b/src/game/behaviors/bowling_ball.inc.c
@@ -68,7 +68,7 @@ void bhv_bowling_ball_roll_loop(void) {
s32 sp18;
func_802EDA6C();
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
//! Uninitialzed parameter, but the parameter is unused in the called function
sp18 = obj_follow_path(sp18);
@@ -144,7 +144,7 @@ void bhv_bowling_ball_loop(void) {
if (o->oBehParams2ndByte != 4)
func_8027F440(4, o->oPosX, o->oPosY, o->oPosZ);
- SetObjectVisibility(o, 4000);
+ set_object_visibility(o, 4000);
}
void bhv_generic_bowling_ball_spawner_init(void) {
@@ -215,7 +215,7 @@ void bhv_bob_pit_bowling_ball_init(void) {
void bhv_bob_pit_bowling_ball_loop(void) {
struct FloorGeometry *sp1c;
- UNUSED s16 collisionFlags = ObjectStep();
+ UNUSED s16 collisionFlags = object_step();
find_floor_height_and_data(o->oPosX, o->oPosY, o->oPosZ, &sp1c);
if ((sp1c->normalX == 0) && (sp1c->normalZ == 0))
@@ -224,7 +224,7 @@ void bhv_bob_pit_bowling_ball_loop(void) {
func_802EDA14();
func_8027F440(4, o->oPosX, o->oPosY, o->oPosZ);
PlaySound(SOUND_ENV_UNKNOWN2);
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void bhv_free_bowling_ball_init(void) {
@@ -239,7 +239,7 @@ void bhv_free_bowling_ball_init(void) {
}
void bhv_free_bowling_ball_roll_loop(void) {
- s16 collisionFlags = ObjectStep();
+ s16 collisionFlags = object_step();
func_802EDA14();
if (o->oForwardVel > 10.0f) {
diff --git a/src/game/behaviors/bowser.inc.c b/src/game/behaviors/bowser.inc.c
@@ -32,7 +32,7 @@ s8 D_8032F4FC[] = { 7, 8, 9, 12, 13, 14, 15, 4, 3, 16, 17, 19, 3, 3, 3, 3 };
s16 D_8032F50C[] = { 60, 0 };
s16 D_8032F510[] = { 50, 0 };
s8 D_8032F514[] = { 24, 42, 60, -1 };
-s16 sBowserDefeatedDialogText[3] = { 119, 120, 121 };
+s16 sBowserDefeatedDialogText[3] = { DIALOG_119, DIALOG_120, DIALOG_121 };
s16 D_8032F520[][3] = { { 1, 10, 40 }, { 0, 0, 74 }, { -1, -10, 114 }, { 1, -20, 134 },
{ -1, 20, 154 }, { 1, 40, 164 }, { -1, -40, 174 }, { 1, -80, 179 },
{ -1, 80, 184 }, { 1, 160, 186 }, { -1, -160, 186 }, { 1, 0, 0 }, };
@@ -865,9 +865,9 @@ s32 func_802B6254(void) {
s32 dialogID;
if (o->oBowserUnkF8 < 2) {
if (gHudDisplay.stars < 120)
- dialogID = 121;
+ dialogID = DIALOG_121;
else
- dialogID = 163;
+ dialogID = DIALOG_163;
if (o->oBowserUnkF8 == 0) {
func_8031FFB4(0, 60, 40);
o->oBowserUnkF8++;
@@ -1247,7 +1247,7 @@ void func_802B70C8(struct Object *a0, struct GraphNodeSwitchCase *switchCase) {
* state. Checks whether oBowserEyesShut is TRUE and closes eyes if so and processes
* direction otherwise.
*/
-s32 geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {
+Gfx *geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {
UNUSED s16 sp36;
UNUSED s32 unused;
struct Object *obj = (struct Object *) gCurGraphNodeObject;
@@ -1265,7 +1265,7 @@ s32 geo_switch_bowser_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {
}
obj->oBowserUnk1AE++;
}
- return 0;
+ return NULL;
}
Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2) {
@@ -1280,9 +1280,9 @@ Gfx *Geo18_802B7D44(s32 a0, struct GraphNode *node, UNUSED s32 a2) {
if (gCurGraphNodeHeldObject != 0)
sp24 = gCurGraphNodeHeldObject->objNode;
if (sp24->oOpacity == 0xFF)
- sp20->fnNode.node.flags = (sp20->fnNode.node.flags & 0xFF) | 0x100;
+ sp20->fnNode.node.flags = (sp20->fnNode.node.flags & 0xFF) | GRAPH_NODE_TYPE_FUNCTIONAL;
else
- sp20->fnNode.node.flags = (sp20->fnNode.node.flags & 0xFF) | (0x100 | 0x400);
+ sp20->fnNode.node.flags = (sp20->fnNode.node.flags & 0xFF) | (GRAPH_NODE_TYPE_FUNCTIONAL | GRAPH_NODE_TYPE_400);
sp28 = sp2C = alloc_display_list(2 * sizeof(Gfx));
if (sp24->oBowserUnk1B2 != 0) {
diff --git a/src/game/behaviors/bowser_bomb.inc.c b/src/game/behaviors/bowser_bomb.inc.c
@@ -15,7 +15,7 @@ void bhv_bowser_bomb_loop(void) {
o->activeFlags = 0;
}
- SetObjectVisibility(o, 7000);
+ set_object_visibility(o, 7000);
}
void bhv_bowser_bomb_explosion_loop(void) {
diff --git a/src/game/behaviors/breakable_box_small.inc.c b/src/game/behaviors/breakable_box_small.inc.c
@@ -29,7 +29,7 @@ void func_802F4CE8(void) {
}
void func_802F4DB4(void) {
- s16 sp1E = ObjectStep();
+ s16 sp1E = object_step();
attack_collided_non_mario_object(o);
if (sp1E == 1)
@@ -44,12 +44,12 @@ void func_802F4DB4(void) {
if (sp1E & 2) {
func_802A3004();
spawn_triangle_break_particles(20, 138, 0.7f, 3);
- ObjSpawnYellowCoins(o, 3);
+ obj_spawn_yellow_coins(o, 3);
create_sound_spawner(SOUND_GENERAL_BREAK_BOX);
o->activeFlags = 0;
}
- ObjCheckFloorDeath(sp1E, D_803600E0);
+ obj_check_floor_death(sp1E, sObjFloor);
}
void breakable_box_small_released_loop(void) {
@@ -77,7 +77,7 @@ void breakable_box_small_idle_loop(void) {
break;
case 100:
- ObjLavaDeath();
+ obj_lava_death();
break;
case 101:
diff --git a/src/game/behaviors/bully.inc.c b/src/game/behaviors/bully.inc.c
@@ -164,10 +164,10 @@ void PlayBullyStompingSound(void) {
void BullyStep(void) {
s16 collisionFlags = 0;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
BullyBackUpCheck(collisionFlags);
PlayBullyStompingSound();
- ObjCheckFloorDeath(collisionFlags, D_803600E0);
+ obj_check_floor_death(collisionFlags, sObjFloor);
if (o->oBullySubtype & BULLY_STYPE_CHILL) {
if (o->oPosY < 1030.0f)
@@ -189,7 +189,7 @@ void BullySpawnCoin(void) {
}
void BullyLavaDeath(void) {
- if (ObjLavaDeath() == 1) {
+ if (obj_lava_death() == 1) {
if (o->oBehParams2ndByte == BULLY_BP_SIZE_SMALL) {
if (o->oBullySubtype == BULLY_STYPE_MINION)
o->parentObj->oBullyKBTimerAndMinionKOCounter++;
@@ -223,7 +223,7 @@ void bhv_bully_loop(void) {
case BULLY_ACT_PATROL:
o->oForwardVel = 5.0;
- if (ObjLeaveIfMarioIsNearHome(o, o->oHomeX, o->oPosY, o->oHomeZ, 800) == 1) {
+ if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 800) == 1) {
o->oAction = BULLY_ACT_CHASE_MARIO;
SetObjAnimation(1);
}
@@ -255,7 +255,7 @@ void bhv_bully_loop(void) {
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
// sp38 = arg0
@@ -283,7 +283,7 @@ void bhv_big_bully_with_minions_init(void) {
}
void BigBullyWithMinionsLavaDeath(void) {
- if (ObjLavaDeath() == 1) {
+ if (obj_lava_death() == 1) {
func_802A3004();
create_star(3700.0f, 600.0f, -5500.0f);
}
@@ -306,7 +306,7 @@ void bhv_big_bully_with_minions_loop(void) {
case BULLY_ACT_PATROL:
o->oForwardVel = 5.0;
- if (ObjLeaveIfMarioIsNearHome(o, o->oHomeX, o->oPosY, o->oHomeZ, 1000) == 1) {
+ if (obj_return_home_if_safe(o, o->oHomeX, o->oPosY, o->oHomeZ, 1000) == 1) {
o->oAction = BULLY_ACT_CHASE_MARIO;
SetObjAnimation(1);
}
@@ -343,7 +343,7 @@ void bhv_big_bully_with_minions_loop(void) {
break;
case BULLY_ACT_ACTIVATE_AND_FALL:
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if ((collisionFlags & 0x9) == 0x9) /* bits 0 and 3 */
o->oAction = BULLY_ACT_PATROL;
diff --git a/src/game/behaviors/butterfly.inc.c b/src/game/behaviors/butterfly.inc.c
@@ -108,5 +108,5 @@ void bhv_butterfly_loop(void) {
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
diff --git a/src/game/behaviors/camera_lakitu.inc.c b/src/game/behaviors/camera_lakitu.inc.c
@@ -115,7 +115,7 @@ static void camera_lakitu_intro_act_show_dialog(void) {
}
}
}
- } else if (obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG_1, 34) != 0) {
+ } else if (obj_update_dialog_with_cutscene(2, DIALOG_UNK2_FLAG_0, CUTSCENE_DIALOG_1, DIALOG_034) != 0) {
o->oCameraLakituFinishedDialog = TRUE;
}
}
@@ -151,15 +151,15 @@ void bhv_camera_lakitu_update(void) {
break;
}
} else {
- f32 val0C = (f32) 0x875C3D / 0x800 - gCameraStatus.camFocAndPosCurrAndGoal[0][3];
- if (gCameraStatus.camFocAndPosCurrAndGoal[0][3] < 1700.0f || val0C < 0.0f) {
+ f32 val0C = (f32) 0x875C3D / 0x800 - gCameraStatus.camFocAndPosCurrAndGoal[1][0];
+ if (gCameraStatus.camFocAndPosCurrAndGoal[1][0] < 1700.0f || val0C < 0.0f) {
obj_hide();
} else {
obj_unhide();
- o->oPosX = gCameraStatus.camFocAndPosCurrAndGoal[0][3];
- o->oPosY = gCameraStatus.camFocAndPosCurrAndGoal[0][4];
- o->oPosZ = gCameraStatus.camFocAndPosCurrAndGoal[0][5];
+ o->oPosX = gCameraStatus.camFocAndPosCurrAndGoal[1][0];
+ o->oPosY = gCameraStatus.camFocAndPosCurrAndGoal[1][1];
+ o->oPosZ = gCameraStatus.camFocAndPosCurrAndGoal[1][2];
o->oHomeX = gCameraStatus.camFocAndPosCurrAndGoal[0][0];
o->oHomeZ = gCameraStatus.camFocAndPosCurrAndGoal[0][2];
diff --git a/src/game/behaviors/cap.inc.c b/src/game/behaviors/cap.inc.c
@@ -25,15 +25,15 @@ s32 func_802F0904(void) {
void func_802F0978(void) {
if (o->oTimer > 300) {
- ObjFlickerAndDisappear(o, 300);
+ obj_flicker_and_disappear(o, 300);
}
}
void func_802F09C0(void) {
- if (D_803600E0 == NULL)
+ if (sObjFloor == NULL)
return;
- switch (D_803600E0->type) {
+ switch (sObjFloor->type) {
case SURFACE_DEATH_PLANE:
o->activeFlags = 0;
break;
@@ -49,8 +49,8 @@ void func_802F09C0(void) {
case SURFACE_SHALLOW_MOVING_QUICKSAND:
case SURFACE_MOVING_QUICKSAND:
o->oAction = 11;
- o->oMoveAngleYaw = (D_803600E0->force & 0xFF) << 8;
- o->oForwardVel = -((D_803600E0->force & 0xff00) >> 8) * 2 + 8;
+ o->oMoveAngleYaw = (sObjFloor->force & 0xFF) << 8;
+ o->oForwardVel = -((sObjFloor->force & 0xff00) >> 8) * 2 + 8;
break;
case SURFACE_INSTANT_QUICKSAND:
@@ -60,8 +60,8 @@ void func_802F09C0(void) {
case SURFACE_INSTANT_MOVING_QUICKSAND:
o->oAction = 13;
- o->oMoveAngleYaw = (D_803600E0->force & 0xFF) << 8;
- o->oForwardVel = -((D_803600E0->force & 0xff00) >> 8) * 2 + 8;
+ o->oMoveAngleYaw = (sObjFloor->force & 0xFF) << 8;
+ o->oForwardVel = -((sObjFloor->force & 0xff00) >> 8) * 2 + 8;
break;
}
}
@@ -121,7 +121,7 @@ void func_802F0E0C(void) {
s16 sp1E;
o->oFaceAngleYaw += o->oForwardVel * 128.0f;
- sp1E = ObjectStep();
+ sp1E = object_step();
if (sp1E & 0x01) {
func_802F09C0();
if (o->oVelY != 0.0f) {
@@ -141,7 +141,7 @@ void bhv_wing_vanish_cap_loop(void) {
break;
default:
- ObjectStep();
+ object_step();
func_802F0B68();
break;
}
@@ -164,7 +164,7 @@ void func_802F0FE0(void) {
s16 sp1E;
o->oFaceAngleYaw += o->oForwardVel * 128.0f;
- sp1E = ObjectStep();
+ sp1E = object_step();
if (sp1E & 0x01)
func_802F09C0();
}
@@ -176,7 +176,7 @@ void bhv_metal_cap_loop(void) {
break;
default:
- ObjectStep();
+ object_step();
func_802F0B68();
break;
}
@@ -224,7 +224,7 @@ void func_802F1234(void) {
o->oFaceAngleYaw += o->oForwardVel * 128.0f;
o->oFaceAnglePitch += o->oForwardVel * 80.0f;
- sp1E = ObjectStep();
+ sp1E = object_step();
if (sp1E & 0x01) {
func_802F09C0();
@@ -246,7 +246,7 @@ void bhv_normal_cap_loop(void) {
break;
default:
- ObjectStep();
+ object_step();
func_802F0B68();
break;
}
diff --git a/src/game/behaviors/controllable_platform.inc.c b/src/game/behaviors/controllable_platform.inc.c
@@ -30,7 +30,7 @@ void bhv_controllable_platform_sub_loop(void) {
if (gMarioObject->platform == o) {
D_80331694 = o->oBehParams2ndByte;
o->oAction = 1;
- PlaySound2(SOUND_GENERAL_SWITCH3);
+ PlaySound2(SOUND_GENERAL_MOVING_PLATFORM_SWITCH);
}
break;
@@ -167,33 +167,33 @@ void bhv_controllable_platform_loop(void) {
case 1:
o->oVelZ = 10.0f;
- sp54[0] = func_802E478C(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);
- sp54[1] = func_802E478C(sp3C, o->oPosX, o->oPosY, o->oPosZ + 300.0, 50.0f);
- sp54[2] = func_802E478C(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);
+ sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);
+ sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ + 300.0, 50.0f);
+ sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ + 300.0, 50.0f);
func_802F3FD8(2, sp54, sp48, sp3C, sp30);
break;
case 2:
o->oVelZ = -10.0f;
- sp54[0] = func_802E478C(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);
- sp54[1] = func_802E478C(sp3C, o->oPosX, o->oPosY, o->oPosZ - 300.0, 50.0f);
- sp54[2] = func_802E478C(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);
+ sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);
+ sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX, o->oPosY, o->oPosZ - 300.0, 50.0f);
+ sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 250.0, o->oPosY, o->oPosZ - 300.0, 50.0f);
func_802F3FD8(1, sp54, sp48, sp3C, sp30);
break;
case 3:
o->oVelX = 10.0f;
- sp54[0] = func_802E478C(sp48, o->oPosX + 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);
- sp54[1] = func_802E478C(sp3C, o->oPosX + 300.0, o->oPosY, o->oPosZ, 50.0f);
- sp54[2] = func_802E478C(sp30, o->oPosX + 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);
+ sp54[0] = obj_find_wall_displacement(sp48, o->oPosX + 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);
+ sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX + 300.0, o->oPosY, o->oPosZ, 50.0f);
+ sp54[2] = obj_find_wall_displacement(sp30, o->oPosX + 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);
func_802F3FD8(4, sp54, sp48, sp3C, sp30);
break;
case 4:
o->oVelX = -10.0f;
- sp54[0] = func_802E478C(sp48, o->oPosX - 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);
- sp54[1] = func_802E478C(sp3C, o->oPosX - 300.0, o->oPosY, o->oPosZ, 50.0f);
- sp54[2] = func_802E478C(sp30, o->oPosX - 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);
+ sp54[0] = obj_find_wall_displacement(sp48, o->oPosX - 300.0, o->oPosY, o->oPosZ + 250.0, 50.0f);
+ sp54[1] = obj_find_wall_displacement(sp3C, o->oPosX - 300.0, o->oPosY, o->oPosZ, 50.0f);
+ sp54[2] = obj_find_wall_displacement(sp30, o->oPosX - 300.0, o->oPosY, o->oPosZ - 250.0, 50.0f);
func_802F3FD8(3, sp54, sp48, sp3C, sp30);
break;
@@ -203,7 +203,7 @@ void bhv_controllable_platform_loop(void) {
break;
case 6:
- if (ObjFlickerAndDisappear(o, 150))
+ if (obj_flicker_and_disappear(o, 150))
spawn_object_abs_with_rot(o, 0, MODEL_HMC_METAL_PLATFORM, bhvControllablePlatform,
o->oHomeX, o->oHomeY, o->oHomeZ, 0, 0, 0);
break;
diff --git a/src/game/behaviors/eyerok.inc.c b/src/game/behaviors/eyerok.inc.c
@@ -63,7 +63,7 @@ static void eyerok_boss_act_wake_up(void) {
}
static void eyerok_boss_act_show_intro_text(void) {
- if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, 117)) {
+ if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, DIALOG_117)) {
o->oAction = EYEROK_BOSS_ACT_FIGHT;
}
}
@@ -117,7 +117,7 @@ static void eyerok_boss_act_fight(void) {
static void eyerok_boss_act_die(void) {
if (o->oTimer == 60) {
- if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, 118)) {
+ if (obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, DIALOG_118)) {
create_star(0.0f, -900.0f, -3700.0f);
} else {
o->oTimer -= 1;
diff --git a/src/game/behaviors/falling_pillar.inc.c b/src/game/behaviors/falling_pillar.inc.c
@@ -79,7 +79,7 @@ void bhv_falling_pillar_loop(void) {
break;
case FALLING_PILLAR_ACT_TURNING:
- func_802E4204();
+ object_step_without_floor_orient();
// Calculate angle in front of Mario and turn towards it.
angleInFrontOfMario = bhv_falling_pillar_calculate_angle_in_front_of_mario();
@@ -91,7 +91,7 @@ void bhv_falling_pillar_loop(void) {
break;
case FALLING_PILLAR_ACT_FALLING:
- func_802E4204();
+ object_step_without_floor_orient();
// Start falling slowly, with increasing acceleration each frame.
o->oFallingPillarPitchAcceleration += 4.0f;
diff --git a/src/game/behaviors/hidden_star.inc.c b/src/game/behaviors/hidden_star.inc.c
@@ -40,7 +40,7 @@ void bhv_hidden_star_trigger_loop(void) {
if (hiddenStar != NULL) {
hiddenStar->oHiddenStarTriggerCounter++;
if (hiddenStar->oHiddenStarTriggerCounter != 5) {
- SpawnOrangeNumber(hiddenStar->oHiddenStarTriggerCounter, 0, 0, 0);
+ spawn_orange_number(hiddenStar->oHiddenStarTriggerCounter, 0, 0, 0);
}
#ifdef VERSION_JP
diff --git a/src/game/behaviors/hoot.inc.c b/src/game/behaviors/hoot.inc.c
@@ -188,7 +188,7 @@ void HootActionLoop(void) {
if (o->oPosY < 2700.0f) {
set_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
- if (cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, 45)) {
+ if (cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, DIALOG_045)) {
clear_time_stop_flags(TIME_STOP_ENABLED | TIME_STOP_MARIO_AND_DOORS);
o->oAction = HOOT_ACT_TIRED;
@@ -240,7 +240,7 @@ void HootAwakeLoop(void) {
o->oTimer = 0;
}
- SetObjectVisibility(o, 2000);
+ set_object_visibility(o, 2000);
}
void bhv_hoot_loop(void) {
@@ -255,7 +255,7 @@ void bhv_hoot_loop(void) {
case HOOT_AVAIL_WANTS_TO_TALK:
HootAwakeLoop();
- if (set_mario_npc_dialog(2) == 2 && cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, 44)) {
+ if (set_mario_npc_dialog(2) == 2 && cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, DIALOG_044)) {
set_mario_npc_dialog(0);
obj_become_tangible();
diff --git a/src/game/behaviors/king_bobomb.inc.c b/src/game/behaviors/king_bobomb.inc.c
@@ -19,7 +19,7 @@ void ActionKingBobomb0(void) {
o->oSubAction++;
func_8031FFB4(0, 60, 40);
}
- } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, 17)) {
+ } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, DIALOG_017)) {
o->oAction = 2;
o->oFlags |= OBJ_FLAG_HOLDABLE;
}
@@ -154,7 +154,7 @@ void ActionKingBobomb6(void) {
void ActionKingBobomb7(void) {
set_obj_animation_and_sound_state(2);
- if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG_1, 116)) {
+ if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG_1, DIALOG_116)) {
create_sound_spawner(SOUND_OBJ_KING_WHOMP_DEATH);
obj_hide();
obj_become_intangible();
@@ -246,7 +246,7 @@ void ActionKingBobomb5() { // bobomb returns home
o->oSubAction++;
break;
case 4:
- if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, 128))
+ if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, DIALOG_128))
o->oAction = 2;
break;
}
diff --git a/src/game/behaviors/klepto.inc.c b/src/game/behaviors/klepto.inc.c
@@ -144,8 +144,10 @@ static void klepto_circle_target(f32 radius, f32 targetSpeed) {
o->oKleptoYawToTarget += turnAmount;
func_8030F218();
+ //! The multiplied value is sometimes out of range for an s16 during the s32 -> s16 cast,
+ // which might invert sign.
turnAmount =
- (s16)(abs_angle_diff(o->oKleptoYawToTarget, o->oMoveAngleYaw) * (0.03f * o->oKleptoSpeed));
+ (s16)(s32)(abs_angle_diff(o->oKleptoYawToTarget, o->oMoveAngleYaw) * (0.03f * o->oKleptoSpeed));
clamp_s16(&turnAmount, 400, 700);
obj_rotate_yaw_and_bounce_off_walls(o->oKleptoYawToTarget, turnAmount);
diff --git a/src/game/behaviors/koopa.inc.c b/src/game/behaviors/koopa.inc.c
@@ -52,7 +52,7 @@ static u8 sKoopaShelledAttackHandlers[] = {
*/
struct KoopaTheQuickProperties {
s16 initText;
- s16 unk02;
+ s16 winText;
void *path;
Vec3s starPos;
};
@@ -61,8 +61,8 @@ struct KoopaTheQuickProperties {
* Properties for the BoB race and the THI race.
*/
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
- { 5, 7, bob_seg7_trajectory_koopa, { 3030, 4500, -4600 } },
- { 9, 31, thi_seg7_trajectory_koopa, { 7100, -1300, -6000 } }
+ { DIALOG_005, DIALOG_007, bob_seg7_trajectory_koopa, { 3030, 4500, -4600 } },
+ { DIALOG_009, DIALOG_031, thi_seg7_trajectory_koopa, { 7100, -1300, -6000 } }
};
/**
@@ -717,15 +717,15 @@ static void koopa_the_quick_act_after_race(void) {
if (o->parentObj->oKoopaRaceEndpointRaceStatus < 0) {
// Mario cheated
o->parentObj->oKoopaRaceEndpointRaceStatus = 0;
- o->parentObj->oKoopaRaceEndpointUnk100 = 6;
+ o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_006;
} else {
// Mario won
o->parentObj->oKoopaRaceEndpointUnk100 =
- sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].unk02;
+ sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].winText;
}
} else {
// KtQ won
- o->parentObj->oKoopaRaceEndpointUnk100 = 41;
+ o->parentObj->oKoopaRaceEndpointUnk100 = DIALOG_041;
}
o->oFlags &= ~OBJ_FLAG_ACTIVE_FROM_AFAR;
diff --git a/src/game/behaviors/lll_tilting_platform.inc.c b/src/game/behaviors/lll_tilting_platform.inc.c
@@ -1,94 +0,0 @@
-// lll_tilting_platform.c.inc
-
-void func_802BC544(Mat4 a0, f32 a1, f32 a2, f32 a3) {
- Vec3f sp24;
- Vec3f sp18;
- sp18[0] = o->oPosX;
- sp18[1] = o->oPosY;
- sp18[2] = o->oPosZ;
- sp24[0] = a1;
- sp24[1] = a2;
- sp24[2] = a3;
- mtxf_align_terrain_normal(a0, sp24, sp18, 0);
-}
-
-void bhv_tilting_platform_init(void) {
- Mat4 *sp1C = &o->transform;
- o->oTiltingPlatformUnkF4 = 0.0f;
- o->oTiltingPlatformUnkF8 = 1.0f;
- o->oTiltingPlatformUnkFC = 0.0f;
- func_802BC544(*sp1C, 0.0f, 1.0f, 0.0f);
-}
-
-f32 func_802BC66C(f32 a0, f32 a1, f32 a2) {
- f32 sp4;
- if (a1 <= a0) {
- if (a0 - a1 < a2)
- sp4 = a0;
- else
- sp4 = a1 + a2;
- } else if (a0 - a1 > -a2)
- sp4 = a0;
- else
- sp4 = a1 - a2;
- return sp4;
-}
-
-void bhv_tilting_platform_loop(void) {
- f32 dx;
- f32 dy;
- f32 dz;
- f32 d;
- Vec3f dist;
- Vec3f sp58;
- Vec3f sp4C;
- f32 mx;
- f32 my;
- f32 mz;
- s32 sp3C = 0;
- UNUSED s32 unused;
- Mat4 *sp34 = &o->transform;
- UNUSED s32 unused2[7];
- if (gMarioObject->platform == o) {
- get_mario_pos(&mx, &my, &mz);
- dist[0] = gMarioObject->oPosX - o->oPosX;
- dist[1] = gMarioObject->oPosY - o->oPosY;
- dist[2] = gMarioObject->oPosZ - o->oPosZ;
- linear_mtxf_mul_vec3f(*sp34, sp58, dist);
- dx = gMarioObject->oPosX - o->oPosX;
- dy = 500.0f;
- dz = gMarioObject->oPosZ - o->oPosZ;
- d = sqrtf(dx * dx + dy * dy + dz * dz);
- if (d != 0.0f) // Normalizing
- {
- d = 1.0 / d;
- dx *= d;
- dy *= d;
- dz *= d;
- } else {
- dx = 0.0f;
- dy = 1.0f;
- dz = 0.0f;
- }
- if (o->oTiltingPlatformUnk10C == 1)
- sp3C++;
- o->oTiltingPlatformUnk10C = 1;
- } else {
- dx = 0.0f;
- dy = 1.0f;
- dz = 0.0f;
- o->oTiltingPlatformUnk10C = 0;
- }
- o->oTiltingPlatformUnkF4 = func_802BC66C(dx, o->oTiltingPlatformUnkF4, 0.01f);
- o->oTiltingPlatformUnkF8 = func_802BC66C(dy, o->oTiltingPlatformUnkF8, 0.01f);
- o->oTiltingPlatformUnkFC = func_802BC66C(dz, o->oTiltingPlatformUnkFC, 0.01f);
- func_802BC544(*sp34, o->oTiltingPlatformUnkF4, o->oTiltingPlatformUnkF8, o->oTiltingPlatformUnkFC);
- if (sp3C != 0) {
- linear_mtxf_mul_vec3f(*sp34, sp4C, dist);
- mx += sp4C[0] - sp58[0];
- my += sp4C[1] - sp58[1];
- mz += sp4C[2] - sp58[2];
- set_mario_pos(mx, my, mz);
- }
- o->header.gfx.throwMatrix = sp34;
-}
diff --git a/src/game/behaviors/mips.inc.c b/src/game/behaviors/mips.inc.c
@@ -66,7 +66,7 @@ s16 bhv_mips_find_furthest_waypoint_to_mario(void) {
z = waypoint->pos[2];
// Is the waypoint within 800 units of MIPS?
- if (IsPointCloseToObject(o, x, y, z, 800)) {
+ if (is_point_close_to_object(o, x, y, z, 800)) {
// Is this further from Mario than the last waypoint?
distanceToMario =
sqr(x - gMarioObject->header.gfx.pos[0]) + sqr(z - gMarioObject->header.gfx.pos[2]);
@@ -89,7 +89,7 @@ void bhv_mips_act_wait_for_nearby_mario(void) {
UNUSED s16 collisionFlags = 0;
o->oForwardVel = 0.0f;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
// If Mario is within 500 units...
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500)) {
@@ -129,7 +129,7 @@ void bhv_mips_act_follow_path(void) {
o->oForwardVel = 45.0f;
#endif
o->oMoveAngleYaw = o->oPathedTargetYaw;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
// If we are at the end of the path, do idle animation and wait for Mario.
if (followStatus == PATH_REACHED_END) {
@@ -166,7 +166,7 @@ void bhv_mips_act_fall_down(void) {
s16 collisionFlags = 0;
#endif
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
o->header.gfx.unk38.animFrame = 0;
if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == 1) {
@@ -187,7 +187,7 @@ void bhv_mips_act_idle(void) {
UNUSED s16 collisionFlags = 0;
o->oForwardVel = 0;
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
// Spawn a star if he was just picked up for the first time.
if (o->oMipsStarStatus == MIPS_STAR_STATUS_SHOULD_SPAWN_STAR) {
@@ -238,9 +238,9 @@ void bhv_mips_held(void) {
if (o->oMipsStarStatus == MIPS_STAR_STATUS_HAVENT_SPAWNED_STAR) {
// Choose dialog based on which MIPS encounter this is.
if (o->oBehParams2ndByte == 0)
- dialogID = 84;
+ dialogID = DIALOG_084;
else
- dialogID = 162;
+ dialogID = DIALOG_162;
if (set_mario_npc_dialog(1) == 2) {
o->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;
diff --git a/src/game/behaviors/moneybag.inc.c b/src/game/behaviors/moneybag.inc.c
@@ -110,9 +110,9 @@ void MoneybagJump(s8 collisionFlags) {
void MoneybagMoveAroundLoop(void) {
s16 collisionFlags;
- ObjDisplaceHome(o, o->oHomeX, o->oHomeY, o->oHomeZ, 200);
+ obj_return_and_displace_home(o, o->oHomeX, o->oHomeY, o->oHomeZ, 200);
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if (((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)
&& (o->oMoneybagJumpState == MONEYBAG_JUMP_LANDING)) {
@@ -138,7 +138,7 @@ void MoneybagReturnHomeLoop(void) {
s16 sp22 = atan2s(sp24, sp28);
o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, sp22, 0x800);
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if (((collisionFlags & OBJ_COL_FLAGS_LANDED) == OBJ_COL_FLAGS_LANDED)
&& (o->oMoneybagJumpState == MONEYBAG_JUMP_LANDING))
o->oMoneybagJumpState = MONEYBAG_JUMP_WALK_HOME;
@@ -146,7 +146,7 @@ void MoneybagReturnHomeLoop(void) {
MoneybagJump(collisionFlags);
MoneybagCheckMarioCollision();
- if (IsPointCloseToObject(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {
+ if (is_point_close_to_object(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {
spawn_object(o, MODEL_YELLOW_COIN, bhvMoneybagHidden);
#ifndef VERSION_JP
PlaySound2(SOUND_GENERAL_VANISH_SFX);
@@ -172,7 +172,7 @@ void MoneybagDisappearLoop(void) {
void MoneybagDeathLoop(void) {
if (o->oTimer == 1) {
- ObjSpawnYellowCoins(o, 5);
+ obj_spawn_yellow_coins(o, 5);
create_sound_spawner(SOUND_GENERAL_SPLATTERING);
func_802A3004();
o->activeFlags = 0;
diff --git a/src/game/behaviors/moving_coin.inc.c b/src/game/behaviors/moving_coin.inc.c
@@ -27,9 +27,9 @@ static struct ObjectHitbox sMovingBlueCoinHitbox = {
};
s32 CoinStep(s16 *collisionFlagsPtr) {
- *collisionFlagsPtr = ObjectStep();
+ *collisionFlagsPtr = object_step();
- ObjCheckFloorDeath(*collisionFlagsPtr, D_803600E0);
+ obj_check_floor_death(*collisionFlagsPtr, sObjFloor);
if ((*collisionFlagsPtr & 0x1) != 0 && (*collisionFlagsPtr & 0x8) == 0) /* bit 0, bit 3 */
{
@@ -44,7 +44,7 @@ void MovingCoinFlickerLoop(void) {
s16 collisionFlags;
CoinStep(&collisionFlags);
- ObjFlickerAndDisappear(o, 0);
+ obj_flicker_and_disappear(o, 0);
}
void CoinCollected(void) {
@@ -117,7 +117,7 @@ void bhv_moving_blue_coin_loop(void) {
break;
case MOV_BCOIN_ACT_MOVING:
- collisionFlags = ObjectStep();
+ collisionFlags = object_step();
if ((collisionFlags & 0x1) != 0) /* bit 0 */
{
o->oForwardVel += 25.0f;
@@ -129,7 +129,7 @@ void bhv_moving_blue_coin_loop(void) {
if (o->oForwardVel > 75.0)
o->oForwardVel = 75.0f;
- ObjFlickerAndDisappear(o, 600);
+ obj_flicker_and_disappear(o, 600);
break;
}
@@ -183,7 +183,7 @@ void bhv_blue_coin_sliding_loop(void) {
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 500) == 1)
o->oAction = 1;
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
break;
case 1:
@@ -192,7 +192,7 @@ void bhv_blue_coin_sliding_loop(void) {
case 2:
func_802E54DC();
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
break;
case 3:
@@ -231,7 +231,7 @@ void bhv_blue_coin_jumping_loop(void) {
o->oVelY = 50.0;
}
- ObjectStep();
+ object_step();
if (o->oTimer == 15) {
obj_become_tangible();
@@ -245,7 +245,7 @@ void bhv_blue_coin_jumping_loop(void) {
case 2:
func_802E54DC();
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
break;
case 3:
diff --git a/src/game/behaviors/mushroom_1up.inc.c b/src/game/behaviors/mushroom_1up.inc.c
@@ -64,7 +64,7 @@ void func_802F2F8C(s16 sp1A) {
}
void bhv_1up_walking_loop(void) {
- ObjectStep();
+ object_step();
switch (o->oAction) {
case 0:
@@ -91,18 +91,18 @@ void bhv_1up_walking_loop(void) {
break;
case 2:
- ObjFlickerAndDisappear(o, 30);
+ obj_flicker_and_disappear(o, 30);
bhv_1up_interact();
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void bhv_1up_running_away_loop(void) {
s16 sp26;
- sp26 = ObjectStep();
+ sp26 = object_step();
switch (o->oAction) {
case 0:
if (o->oTimer >= 18)
@@ -126,18 +126,18 @@ void bhv_1up_running_away_loop(void) {
break;
case 2:
- ObjFlickerAndDisappear(o, 30);
+ obj_flicker_and_disappear(o, 30);
bhv_1up_interact();
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void func_802F3328(void) {
s16 sp1E;
- sp1E = ObjectStep();
+ sp1E = object_step();
if (sp1E & 0x01) {
o->oForwardVel += 25.0f;
o->oVelY = 0;
@@ -155,7 +155,7 @@ void func_802F3328(void) {
void bhv_1up_sliding_loop(void) {
switch (o->oAction) {
case 0:
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 1000))
o->oAction = 1;
break;
@@ -165,7 +165,7 @@ void bhv_1up_sliding_loop(void) {
break;
case 2:
- ObjFlickerAndDisappear(o, 30);
+ obj_flicker_and_disappear(o, 30);
bhv_1up_interact();
break;
}
@@ -176,7 +176,7 @@ void bhv_1up_sliding_loop(void) {
void bhv_1up_loop(void) {
bhv_1up_interact();
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void bhv_1up_jump_on_approach_loop(void) {
@@ -191,19 +191,19 @@ void bhv_1up_jump_on_approach_loop(void) {
break;
case 1:
- sp26 = ObjectStep();
+ sp26 = object_step();
func_802F2F8C(sp26);
spawn_object(o, MODEL_NONE, bhvSparkleSpawn);
break;
case 2:
- sp26 = ObjectStep();
+ sp26 = object_step();
bhv_1up_interact();
- ObjFlickerAndDisappear(o, 30);
+ obj_flicker_and_disappear(o, 30);
break;
}
- SetObjectVisibility(o, 3000);
+ set_object_visibility(o, 3000);
}
void bhv_1up_hidden_loop(void) {
@@ -220,19 +220,19 @@ void bhv_1up_hidden_loop(void) {
break;
case 1:
- sp26 = ObjectStep();
+ sp26 = object_step();
func_802F2F8C(sp26);
spawn_object(o, MODEL_NONE, bhvSparkleSpawn);
break;
case 2:
- sp26 = ObjectStep();
+ sp26 = object_step();
bhv_1up_interact();
- ObjFlickerAndDisappear(o, 30);
+ obj_flicker_and_disappear(o, 30);
break;
case 3:
- sp26 = ObjectStep();
+ sp26 = object_step();
if (o->oTimer >= 18)
spawn_object(o, MODEL_NONE, bhvSparkleSpawn);
@@ -273,11 +273,11 @@ void bhv_1up_hidden_in_pole_loop(void) {
case 1:
func_802F2E18();
- sp26 = ObjectStep();
+ sp26 = object_step();
break;
case 3:
- sp26 = ObjectStep();
+ sp26 = object_step();
if (o->oTimer >= 18)
spawn_object(o, MODEL_NONE, bhvSparkleSpawn);
diff --git a/src/game/behaviors/pyramid_top.inc.c b/src/game/behaviors/pyramid_top.inc.c
@@ -132,7 +132,7 @@ void bhv_pyramid_top_fragment_init(void) {
* deactivate it.
*/
void bhv_pyramid_top_fragment_loop(void) {
- ObjectStep();
+ object_step();
o->oFaceAngleYaw += 0x1000;
o->oFaceAnglePitch += 0x1000;
diff --git a/src/game/behaviors/racing_penguin.inc.c b/src/game/behaviors/racing_penguin.inc.c
@@ -5,8 +5,8 @@ struct RacingPenguinData {
};
static struct RacingPenguinData sRacingPenguinData[] = {
- { 55, 200.0f, 200.0f },
- { 164, 350.0f, 250.0f },
+ { DIALOG_055, 200.0f, 200.0f },
+ { DIALOG_164, 350.0f, 250.0f },
};
void bhv_racing_penguin_init(void) {
@@ -125,13 +125,13 @@ static void racing_penguin_act_show_final_text(void) {
if (obj_is_mario_in_range_and_ready_to_speak(400.0f, 400.0f)) {
if (o->oRacingPenguinMarioWon) {
if (o->oRacingPenguinMarioCheated) {
- o->oRacingPenguinFinalTextbox = 0x84;
+ o->oRacingPenguinFinalTextbox = DIALOG_132;
o->oRacingPenguinMarioWon = FALSE;
} else {
- o->oRacingPenguinFinalTextbox = 0x38;
+ o->oRacingPenguinFinalTextbox = DIALOG_056;
}
} else {
- o->oRacingPenguinFinalTextbox = 0x25;
+ o->oRacingPenguinFinalTextbox = DIALOG_037;
}
}
} else {
diff --git a/src/game/behaviors/red_coin.inc.c b/src/game/behaviors/red_coin.inc.c
@@ -1,5 +1,12 @@
-// red_coin.c.inc
+/**
+ * This file contains the initialization and behavior for red coins.
+ * Behavior controls audio and the orange number spawned, as well as interacting with
+ * the course's red coin star.
+ */
+/**
+ * Red coin's hitbox details.
+ */
static struct ObjectHitbox sRedCoinHitbox = {
/* interactType: */ INTERACT_COIN,
/* downOffset: */ 0,
@@ -12,36 +19,54 @@ static struct ObjectHitbox sRedCoinHitbox = {
/* hurtboxHeight: */ 0,
};
+/**
+ * Red coin initialization function. Sets the coin's hitbox and parent object.
+ */
void bhv_red_coin_init(void) {
- struct Surface *sp24;
- UNUSED f32 sp20 = find_floor(o->oPosX, o->oPosY, o->oPosZ, &sp24);
- struct Object *sp1C;
+ // This floor and floor height are unused. Perhaps for orange number spawns originally?
+ struct Surface *dummyFloor;
+ UNUSED f32 floorHeight = find_floor(o->oPosX, o->oPosY, o->oPosZ, &dummyFloor);
- sp1C = obj_nearest_object_with_behavior(bhvHiddenRedCoinStar);
- if (sp1C != NULL)
- o->parentObj = sp1C;
+ struct Object *hiddenRedCoinStar;
+
+ // Set the red coins to have a parent of the closest red coin star.
+ hiddenRedCoinStar = obj_nearest_object_with_behavior(bhvHiddenRedCoinStar);
+ if (hiddenRedCoinStar != NULL)
+ o->parentObj = hiddenRedCoinStar;
else {
- sp1C = obj_nearest_object_with_behavior(bhvBowserCourseRedCoinStar);
- if (sp1C != NULL)
- o->parentObj = sp1C;
- else
+ hiddenRedCoinStar = obj_nearest_object_with_behavior(bhvBowserCourseRedCoinStar);
+ if (hiddenRedCoinStar != NULL) {
+ o->parentObj = hiddenRedCoinStar;
+ } else {
o->parentObj = NULL;
+ }
}
set_object_hitbox(o, &sRedCoinHitbox);
}
+/**
+ * Main behavior for red coins. Primarily controls coin collection noise and spawning
+ * the orange number counter.
+ */
void bhv_red_coin_loop(void) {
+ // If Mario interacted with the object...
if (o->oInteractStatus & INT_STATUS_INTERACTED) {
+ // ...and there is a red coin star in the level...
if (o->parentObj != NULL) {
+ // ...increment the star's counter.
o->parentObj->oHiddenStarTriggerCounter++;
+
+ // For JP version, play an identical sound for all coins.
#ifdef VERSION_JP
create_sound_spawner(SOUND_GENERAL_RED_COIN);
#endif
+ // Spawn the orange number counter, as long as it isn't the last coin.
if (o->parentObj->oHiddenStarTriggerCounter != 8) {
- SpawnOrangeNumber(o->parentObj->oHiddenStarTriggerCounter, 0, 0, 0);
+ spawn_orange_number(o->parentObj->oHiddenStarTriggerCounter, 0, 0, 0);
}
+ // On all versions but the JP version, each coin collected plays a higher noise.
#ifndef VERSION_JP
play_sound(SOUND_MENU_COLLECT_RED_COIN
+ (((u8) o->parentObj->oHiddenStarTriggerCounter - 1) << 16),
@@ -50,6 +75,7 @@ void bhv_red_coin_loop(void) {
}
CoinCollected();
+ // Despawn the coin.
o->oInteractStatus = 0;
}
}
diff --git a/src/game/behaviors/rolling_log.inc.c b/src/game/behaviors/rolling_log.inc.c
@@ -35,7 +35,7 @@ void func_802F238C(void) {
if (o->oAngleVelPitch < -0x200)
o->oAngleVelPitch = -0x200;
} else {
- if (IsPointCloseToObject(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {
+ if (is_point_close_to_object(o, o->oHomeX, o->oHomeY, o->oHomeZ, 100)) {
if (o->oAngleVelPitch != 0) {
if (o->oAngleVelPitch > 0)
o->oAngleVelPitch -= 0x10;
diff --git a/src/game/behaviors/snowman.inc.c b/src/game/behaviors/snowman.inc.c
@@ -56,7 +56,7 @@ void func_802EFC44(void) {
UNUSED s16 sp1E;
o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman);
- sp26 = func_802E4204();
+ sp26 = object_step_without_floor_orient();
sp20 = obj_follow_path(sp20);
o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw;
o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400);
@@ -66,7 +66,7 @@ void func_802EFC44(void) {
if (sp20 == -1) {
sp1E = (u16) o->oAngleToMario - (u16) o->oMoveAngleYaw;
- if (func_802E46C0(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == 1 && o->oSnowmansBottomUnk1AC == 1) {
+ if (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x2000) == 1 && o->oSnowmansBottomUnk1AC == 1) {
o->oSnowmansBottomUnkF8 = o->oAngleToMario;
} else {
o->oSnowmansBottomUnkF8 = o->oMoveAngleYaw;
@@ -78,12 +78,12 @@ void func_802EFC44(void) {
void func_802EFDA0(void) {
UNUSED s16 sp26;
- sp26 = func_802E4204();
+ sp26 = object_step_without_floor_orient();
if (o->oForwardVel > 70.0)
o->oForwardVel = 70.0f;
o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oSnowmansBottomUnkF8, 0x400);
- if (IsPointCloseToObject(o, -4230.0f, -1344.0f, 1813.0f, 300)) {
+ if (is_point_close_to_object(o, -4230.0f, -1344.0f, 1813.0f, 300)) {
func_802AA618(0, 0, 70.0f);
o->oMoveAngleYaw = atan2s(1813.0f - o->oPosZ, -4230.0f - o->oPosX);
o->oVelY = 80.0f;
@@ -104,7 +104,7 @@ void func_802EFDA0(void) {
void func_802EFF58(void) {
UNUSED s16 sp1E;
- sp1E = func_802E4204();
+ sp1E = object_step_without_floor_orient();
if ((sp1E & 0x09) == 0x09) {
o->oAction = 4;
obj_become_intangible();
@@ -125,7 +125,7 @@ void bhv_snowmans_bottom_loop(void) {
case 0:
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 400) == 1
&& set_mario_npc_dialog(1) == 2) {
- sp1E = cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, 110);
+ sp1E = cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, DIALOG_110);
if (sp1E) {
o->oForwardVel = 10.0f;
o->oAction = 1;
@@ -156,7 +156,7 @@ void bhv_snowmans_bottom_loop(void) {
}
func_802EFB2C();
- SetObjectVisibility(o, 8000);
+ set_object_visibility(o, 8000);
obj_scale(o->oSnowmansBottomUnkF4);
o->oGraphYOffset = o->oSnowmansBottomUnkF4 * 180.0f;
}
@@ -190,7 +190,7 @@ void bhv_snowmans_head_loop(void) {
switch (o->oAction) {
case 0:
- if (func_802E4A38(&o->oSnowmansHeadUnkF4, 109, 400.0f, 1))
+ if (trigger_obj_dialog_when_facing(&o->oSnowmansHeadUnkF4, DIALOG_109, 400.0f, 1))
o->oAction = 1;
break;
@@ -198,13 +198,13 @@ void bhv_snowmans_head_loop(void) {
break;
case 2:
- sp1C = func_802E4204();
+ sp1C = object_step_without_floor_orient();
if (sp1C & 0x08)
o->oAction = 3;
break;
case 3:
- func_802E4204();
+ object_step_without_floor_orient();
if (o->oPosY < -994.0f) {
o->oPosY = -994.0f;
o->oAction = 4;
@@ -214,7 +214,7 @@ void bhv_snowmans_head_loop(void) {
break;
case 4:
- if (func_802E4A38(&o->oSnowmansHeadUnkF4, 111, 700.0f, 2)) {
+ if (trigger_obj_dialog_when_facing(&o->oSnowmansHeadUnkF4, DIALOG_111, 700.0f, 2)) {
func_802A3004();
create_star(-4700.0f, -1024.0f, 1890.0f);
o->oAction = 1;
diff --git a/src/game/behaviors/snowman_wind.inc.c b/src/game/behaviors/snowman_wind.inc.c
@@ -15,7 +15,7 @@ void bhv_snowman_wind_blowing_loop(void) {
o->oSubAction++;
func_802B8F7C(&o->oPosX, pos);
} else if (o->oSubAction == 1) {
- if (obj_update_dialog(2, 2, 153, 0))
+ if (obj_update_dialog(2, 2, DIALOG_153, 0))
o->oSubAction++;
} else if (o->oDistanceToMario < 1500.0f && absf(gMarioObject->oPosY - o->oHomeY) < 500.0f) {
if ((sp32 = o->oAngleToMario - o->oSnowmanWindBlowingUnkF4) > 0) {
diff --git a/src/game/behaviors/swoop.inc.c b/src/game/behaviors/swoop.inc.c
@@ -27,7 +27,7 @@ static void swoop_act_idle(void) {
set_obj_animation_and_sound_state(1);
if (approach_f32_ptr(&o->header.gfx.scale[0], 1.0f, 0.05f) && o->oDistanceToMario < 1500.0f) {
- if (obj_rotate_yaw_toward(o->oAngleToMario, 0x320)) {
+ if (obj_rotate_yaw_toward(o->oAngleToMario, 800)) {
PlaySound2(SOUND_OBJ2_SWOOP);
o->oAction = SWOOP_ACT_MOVE;
o->oVelY = -12.0f;
@@ -49,7 +49,7 @@ static void swoop_act_move(void) {
if (o->oForwardVel == 0.0f) {
// If we haven't started moving yet, begin swooping
- if (obj_face_roll_approach(0, 0x9C4)) {
+ if (obj_face_roll_approach(0, 2500)) {
o->oForwardVel = 10.0f;
o->oVelY = -10.0f;
}
@@ -74,23 +74,23 @@ static void swoop_act_move(void) {
obj_y_vel_approach(-10.0f, 0.5f);
}
} else if (o->oMoveFlags & OBJ_MOVE_HIT_WALL) {
- // Bounce off walls and get stunned for a second
+ // Bounce off a wall and don't bounce again for 30 frames.
o->oSwoopTargetYaw = obj_reflect_move_angle_off_wall();
o->oSwoopBonkCountdown = 30;
}
// Tilt upward when approaching mario
if ((o->oSwoopTargetPitch = obj_get_pitch_from_vel()) == 0) {
- o->oSwoopTargetPitch += o->oForwardVel * 0x1F4;
+ o->oSwoopTargetPitch += o->oForwardVel * 500;
}
- obj_move_pitch_approach(o->oSwoopTargetPitch, 0x8C);
+ obj_move_pitch_approach(o->oSwoopTargetPitch, 140);
// Jitter yaw a bit
- obj_rotate_yaw_toward(o->oSwoopTargetYaw + (s32)(0xBB8 * coss(0xFA0 * gGlobalTimer)), 0x4B0);
- obj_roll_to_match_yaw_turn(o->oSwoopTargetYaw, 0x3000, 0x1F4);
+ obj_rotate_yaw_toward(o->oSwoopTargetYaw + (s32)(3000 * coss(4000 * gGlobalTimer)), 1200);
+ obj_roll_to_match_yaw_turn(o->oSwoopTargetYaw, 0x3000, 500);
// Jitter roll a bit
- o->oFaceAngleRoll += (s32)(0x3E8 * coss(0x4E20 * gGlobalTimer));
+ o->oFaceAngleRoll += (s32)(1000 * coss(20000 * gGlobalTimer));
}
}
diff --git a/src/game/behaviors/tilting_inverted_pyramid.inc.c b/src/game/behaviors/tilting_inverted_pyramid.inc.c
@@ -0,0 +1,138 @@
+/**
+ * This is the behavior file for the tilting inverted pyramids in BitFS/LLL.
+ * The object essentially just tilts and moves Mario with it.
+ */
+
+/**
+ * Creates a transform matrix on a variable passed in from given normals
+ * and the object's position.
+ */
+void create_transform_from_normals(Mat4 transform, f32 xNorm, f32 yNorm, f32 zNorm) {
+ Vec3f normal;
+ Vec3f pos;
+
+ pos[0] = o->oPosX;
+ pos[1] = o->oPosY;
+ pos[2] = o->oPosZ;
+
+ normal[0] = xNorm;
+ normal[1] = yNorm;
+ normal[2] = zNorm;
+
+ mtxf_align_terrain_normal(transform, normal, pos, 0);
+}
+
+/**
+ * Initialize the object's transform matrix with Y being up.
+ */
+void bhv_platform_normals_init(void) {
+ Mat4 *transform = &o->transform;
+
+ o->oTiltingPyramidNormalX = 0.0f;
+ o->oTiltingPyramidNormalY = 1.0f;
+ o->oTiltingPyramidNormalZ = 0.0f;
+
+ create_transform_from_normals(*transform, 0.0f, 1.0f, 0.0f);
+}
+
+/**
+ * Returns a value that is src incremented/decremented by inc towards goal
+ * until goal is reached. Does not overshoot.
+ */
+f32 approach_by_increment(f32 goal, f32 src, f32 inc) {
+ f32 newVal;
+
+ if (src <= goal) {
+ if (goal - src < inc) {
+ newVal = goal;
+ } else {
+ newVal = src + inc;
+ }
+ } else if (goal - src > -inc) {
+ newVal = goal;
+ } else {
+ newVal = src - inc;
+ }
+
+ return newVal;
+}
+
+/**
+ * Main behavior for the tilting pyramids in LLL/BitFS. These platforms calculate rough normals from Mario's position,
+ * then gradually tilt back moving Mario with them.
+ */
+void bhv_tilting_inverted_pyramid_loop(void) {
+ f32 dx;
+ f32 dy;
+ f32 dz;
+ f32 d;
+
+ Vec3f dist;
+ Vec3f posBeforeRotation;
+ Vec3f posAfterRotation;
+
+ // Mario's position
+ f32 mx;
+ f32 my;
+ f32 mz;
+
+ s32 marioOnPlatform = FALSE;
+ UNUSED s32 unused;
+ Mat4 *transform = &o->transform;
+ UNUSED s32 unused2[7];
+
+ if (gMarioObject->platform == o) {
+ get_mario_pos(&mx, &my, &mz);
+
+ dist[0] = gMarioObject->oPosX - o->oPosX;
+ dist[1] = gMarioObject->oPosY - o->oPosY;
+ dist[2] = gMarioObject->oPosZ - o->oPosZ;
+ linear_mtxf_mul_vec3f(*transform, posBeforeRotation, dist);
+
+ dx = gMarioObject->oPosX - o->oPosX;
+ dy = 500.0f;
+ dz = gMarioObject->oPosZ - o->oPosZ;
+ d = sqrtf(dx * dx + dy * dy + dz * dz);
+
+ //! Always true since dy = 500, making d >= 500.
+ if (d != 0.0f) {
+ // Normalizing
+ d = 1.0 / d;
+ dx *= d;
+ dy *= d;
+ dz *= d;
+ } else {
+ dx = 0.0f;
+ dy = 1.0f;
+ dz = 0.0f;
+ }
+
+ if (o->oTiltingPyramidMarioOnPlatform == TRUE)
+ marioOnPlatform++;
+
+ o->oTiltingPyramidMarioOnPlatform = TRUE;
+ } else {
+ dx = 0.0f;
+ dy = 1.0f;
+ dz = 0.0f;
+ o->oTiltingPyramidMarioOnPlatform = FALSE;
+ }
+
+ // Approach the normals by 0.01f towards the new goal, then create a transform matrix and orient the object.
+ // Outside of the other conditionals since it needs to tilt regardless of whether Mario is on.
+ o->oTiltingPyramidNormalX = approach_by_increment(dx, o->oTiltingPyramidNormalX, 0.01f);
+ o->oTiltingPyramidNormalY = approach_by_increment(dy, o->oTiltingPyramidNormalY, 0.01f);
+ o->oTiltingPyramidNormalZ = approach_by_increment(dz, o->oTiltingPyramidNormalZ, 0.01f);
+ create_transform_from_normals(*transform, o->oTiltingPyramidNormalX, o->oTiltingPyramidNormalY, o->oTiltingPyramidNormalZ);
+
+ // If Mario is on the platform, adjust his position for the platform tilt.
+ if (marioOnPlatform != FALSE) {
+ linear_mtxf_mul_vec3f(*transform, posAfterRotation, dist);
+ mx += posAfterRotation[0] - posBeforeRotation[0];
+ my += posAfterRotation[1] - posBeforeRotation[1];
+ mz += posAfterRotation[2] - posBeforeRotation[2];
+ set_mario_pos(mx, my, mz);
+ }
+
+ o->header.gfx.throwMatrix = transform;
+}
diff --git a/src/game/behaviors/treasure_chest.inc.c b/src/game/behaviors/treasure_chest.inc.c
@@ -39,7 +39,7 @@ void bhv_treasure_chest_top_loop(void) {
o->oFaceAnglePitch = -0x4000;
o->oAction++;
if (o->parentObj->oBehParams2ndByte != 4)
- SpawnOrangeNumber(o->parentObj->oBehParams2ndByte, 0, -40, 0);
+ spawn_orange_number(o->parentObj->oBehParams2ndByte, 0, -40, 0);
}
break;
@@ -65,7 +65,7 @@ void bhv_treasure_chest_bottom_init(void) {
void bhv_treasure_chest_bottom_loop(void) {
switch (o->oAction) {
case 0:
- if (func_802E46C0(o->oMoveAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x3000)) {
+ if (obj_check_if_facing_toward_angle(o->oMoveAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x3000)) {
if (is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 150)) {
if (!o->parentObj->oTreasureChestUnkF8) {
if (o->parentObj->oTreasureChestUnkF4 == o->oBehParams2ndByte) {
diff --git a/src/game/behaviors/ttc_pendulum.inc.c b/src/game/behaviors/ttc_pendulum.inc.c
@@ -36,7 +36,7 @@ void bhv_ttc_pendulum_update(void) {
// Play sound
if (o->oTTCPendulumSoundTimer != 0) {
if (--o->oTTCPendulumSoundTimer == 0) {
- PlaySound2(SOUND_GENERAL_SWITCH1);
+ PlaySound2(SOUND_GENERAL_PENDULUM_SWING);
}
}
diff --git a/src/game/behaviors/tuxie.inc.c b/src/game/behaviors/tuxie.inc.c
@@ -62,11 +62,11 @@ void ActionTuxiesMother1(void) {
sp2C = (o->oBehParams >> 0x10) & 0xFF;
sp28 = (o->prevObj->oBehParams >> 0x10) & 0xFF;
if (sp2C == sp28)
- dialogID = 58;
+ dialogID = DIALOG_058;
else
- dialogID = 59;
+ dialogID = DIALOG_059;
if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, dialogID)) {
- if (dialogID == 58)
+ if (dialogID == DIALOG_058)
o->oSubAction = 1;
else
o->oSubAction = 2;
@@ -128,7 +128,7 @@ void ActionTuxiesMother0(void) {
o->oSubAction++;
break;
case 1:
- if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, 57))
+ if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, DIALOG_057))
o->oSubAction++;
break;
case 2:
@@ -294,7 +294,7 @@ void bhv_small_penguin_loop(void) {
/** Geo switch logic for Tuxie's mother's eyes. Cases 0-4. Interestingly, case
* 4 is unused, and is the eye state seen in Shoshinkai 1995 footage.
*/
-s32 geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {
+Gfx *geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *mtx) {
struct Object *obj;
struct GraphNodeSwitchCase *switchCase;
s32 timer;
@@ -323,5 +323,5 @@ s32 geo_switch_tuxie_mother_eyes(s32 run, struct GraphNode *node, UNUSED Mat4 *m
if (obj->oForwardVel > 5.0f)
switchCase->selectedCase = 3;
}
- return 0;
+ return NULL;
}
diff --git a/src/game/behaviors/ukiki.inc.c b/src/game/behaviors/ukiki.inc.c
@@ -384,7 +384,7 @@ void ukiki_act_go_to_cage(void) {
case UKIKI_SUB_ACT_CAGE_TALK_TO_MARIO:
set_obj_animation_and_sound_state(UKIKI_ANIM_HANDSTAND);
- if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG_1, 80)) {
+ if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG_1, DIALOG_080)) {
o->oSubAction++;
}
break;
@@ -518,7 +518,7 @@ void cage_ukiki_held_loop(void) {
switch(o->oUkikiTextState) {
case UKIKI_TEXT_DEFAULT:
if (set_mario_npc_dialog(2) == 2) {
- create_dialog_box_with_response(79);
+ create_dialog_box_with_response(DIALOG_079);
o->oUkikiTextState = UKIKI_TEXT_CAGE_TEXTBOX;
}
break;
@@ -568,7 +568,7 @@ void hat_ukiki_held_loop(void) {
break;
case UKIKI_TEXT_STEAL_HAT:
- if (obj_update_dialog(2, 2, 100, 0)) {
+ if (obj_update_dialog(2, 2, DIALOG_100, 0)) {
o->oInteractionSubtype |= INT_SUBTYPE_DROP_IMMEDIATELY;
o->oUkikiTextState = UKIKI_TEXT_STOLE_HAT;
}
@@ -578,7 +578,7 @@ void hat_ukiki_held_loop(void) {
break;
case UKIKI_TEXT_HAS_HAT:
- if (obj_update_dialog(2, 18, 101, 0)) {
+ if (obj_update_dialog(2, 18, DIALOG_101, 0)) {
mario_retrieve_cap();
set_mario_npc_dialog(0);
o->oUkikiHasHat &= ~UKIKI_HAT_ON;
diff --git a/src/game/behaviors/water_ring.inc.c b/src/game/behaviors/water_ring.inc.c
@@ -48,7 +48,7 @@ void CheckWaterRingCollection(f32 avgScale, struct Object *ringManager) {
f32 marioDistInFront = WaterRingCalcMarioDistInFront();
struct Object *ringSpawner;
- if (!IsPointCloseToObject(o, gMarioObject->header.gfx.pos[0],
+ if (!is_point_close_to_object(o, gMarioObject->header.gfx.pos[0],
gMarioObject->header.gfx.pos[1] + 80.0f, gMarioObject->header.gfx.pos[2],
(avgScale + 0.2) * 120.0)) {
o->oWaterRingMarioDistInFront = marioDistInFront;
@@ -62,7 +62,7 @@ void CheckWaterRingCollection(f32 avgScale, struct Object *ringManager) {
|| (ringSpawner->oWaterRingSpawnerRingsCollected == 0)) {
ringSpawner->oWaterRingSpawnerRingsCollected++;
if (ringSpawner->oWaterRingSpawnerRingsCollected < 6) {
- SpawnOrangeNumber(ringSpawner->oWaterRingSpawnerRingsCollected, 0, -40, 0);
+ spawn_orange_number(ringSpawner->oWaterRingSpawnerRingsCollected, 0, -40, 0);
#ifdef VERSION_JP
play_sound(SOUND_MENU_STAR_SOUND, gDefaultSoundArgs);
#else
@@ -124,7 +124,7 @@ void JetStreamWaterRingNotCollectedLoop(void) {
o->oPosY += 10.0f;
o->oFaceAngleYaw += 0x100;
- SetObjectVisibility(o, 5000);
+ set_object_visibility(o, 5000);
if (ringSpawner->oWaterRingSpawnerRingsCollected == 4
&& o->oWaterRingIndex == ringManager->oWaterRingMgrLastRingCollected + 1)
@@ -212,7 +212,7 @@ void MantaRayWaterRingNotCollectedLoop(void) {
CheckWaterRingCollection(avgScale, ringManager);
SetWaterRingScale(avgScale);
- SetObjectVisibility(o, 5000);
+ set_object_visibility(o, 5000);
if (ringSpawner->oWaterRingSpawnerRingsCollected == 4
&& o->oWaterRingIndex == ringManager->oWaterRingMgrLastRingCollected + 1)
diff --git a/src/game/behaviors/whirlpool.inc.c b/src/game/behaviors/whirlpool.inc.c
@@ -31,7 +31,7 @@ void func_802E70DC(void) {
f32 normalX = sinRoll * cosPitch;
f32 normalY = cosPitch * cosRoll;
f32 normalZ = sinPitch;
- ObjOrientGraph(o, normalX, normalY, normalZ);
+ obj_orient_graph(o, normalX, normalY, normalZ);
}
void bhv_whirlpool_loop(void) {
diff --git a/src/game/behaviors/whomp.inc.c b/src/game/behaviors/whomp.inc.c
@@ -28,7 +28,7 @@ void ActionWhomp0(void) {
obj_set_pos_to_home();
o->oHealth = 3;
}
- } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, 114))
+ } else if (obj_update_dialog_with_cutscene(2, 1, CUTSCENE_DIALOG_1, DIALOG_114))
o->oAction = 2;
} else if (o->oDistanceToMario < 500.0f)
o->oAction = 1;
@@ -209,7 +209,7 @@ void ActionWhomp6(void) {
void ActionWhomp8(void) {
if (o->oBehParams2ndByte != 0) {
- if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG_1, 115)) {
+ if (obj_update_dialog_with_cutscene(2, 2, CUTSCENE_DIALOG_1, DIALOG_115)) {
set_object_angle(o, 0, 0, 0);
obj_hide();
obj_become_intangible();
diff --git a/src/game/behaviors/wiggler.inc.c b/src/game/behaviors/wiggler.inc.c
@@ -224,13 +224,14 @@ static void wiggler_act_walk(void) {
// If Mario is positioned below the wiggler, assume he entered through the
// lower cave entrance, so don't display text.
- if (gMarioObject->oPosY < o->oPosY || obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, 150) != 0) {
+ if (gMarioObject->oPosY < o->oPosY || obj_update_dialog_with_cutscene(2, 0, CUTSCENE_DIALOG_1, DIALOG_150) != 0) {
o->oWigglerTextStatus = WIGGLER_TEXT_STATUS_COMPLETED_DIALOG;
}
} else {
//! Every object's health is initially 2048, and wiggler's doesn't change
// to 4 until after this runs the first time. It indexes out of bounds
- // and uses the value 113762.3 for one frame on US.
+ // and uses the value 113762.3 for one frame on US. This is fixed down
+ // below in bhv_wiggler_update if AVOID_UB is defined.
obj_forward_vel_approach(sWigglerSpeeds[o->oHealth - 1], 1.0f);
if (o->oWigglerWalkAwayFromWallTimer != 0) {
@@ -286,7 +287,7 @@ static void wiggler_act_walk(void) {
*/
static void wiggler_act_jumped_on(void) {
// Text to show on first, second, and third attack.
- s32 attackText[3] = { 0x98, 0xA8, 0x97 };
+ s32 attackText[3] = { DIALOG_152, DIALOG_168, DIALOG_151 };
// Shrink until the squish speed becomes 0, then unisquish
if (approach_f32_ptr(&o->oWigglerSquishSpeed, 0.0f, 0.05f)) {
@@ -398,6 +399,10 @@ void bhv_wiggler_update(void) {
// PARTIAL_UPDATE
if (o->oAction == WIGGLER_ACT_UNINITIALIZED) {
+#ifdef AVOID_UB
+ // See comment in wiggler_act_walk
+ o->oHealth = 4;
+#endif
wiggler_init_segments();
} else {
if (o->oAction == WIGGLER_ACT_FALL_THROUGH_FLOOR) {
diff --git a/src/game/behaviors/yoshi.inc.c b/src/game/behaviors/yoshi.inc.c
@@ -11,7 +11,7 @@ void bhv_yoshi_init(void) {
o->oBuoyancy = 1.3f;
o->oInteractionSubtype = INT_SUBTYPE_NPC;
- if (save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 24) < 120 || D_80331508 == 1) {
+ if (save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 24) < 120 || sYoshiDead == TRUE) {
o->activeFlags = 0;
}
}
@@ -21,9 +21,9 @@ void yoshi_walk_loop(void) {
s16 sp24 = o->header.gfx.unk38.animFrame;
o->oForwardVel = 10.0f;
- sp26 = ObjectStep();
+ sp26 = object_step();
o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500);
- if (IsPointCloseToObject(o, o->oHomeX, 3174.0f, o->oHomeZ, 200))
+ if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200))
o->oAction = YOSHI_ACT_IDLE;
SetObjAnimation(1);
@@ -76,7 +76,7 @@ void yoshi_talk_loop(void) {
SetObjAnimation(0);
if (set_mario_npc_dialog(1) == 2) {
o->activeFlags |= 0x20;
- if (cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, 161)) {
+ if (cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, DIALOG_161)) {
o->activeFlags &= ~0x20;
o->oInteractStatus = 0;
o->oHomeX = sYoshiHomeLocations[2];
@@ -96,13 +96,13 @@ void yoshi_walk_and_jump_off_roof_loop(void) {
s16 sp26 = o->header.gfx.unk38.animFrame;
o->oForwardVel = 10.0f;
- ObjectStep();
+ object_step();
SetObjAnimation(1);
if (o->oTimer == 0)
cutscene_object(CUTSCENE_STAR_SPAWN, o);
o->oMoveAngleYaw = approach_s16_symmetric(o->oMoveAngleYaw, o->oYoshiTargetYaw, 0x500);
- if (IsPointCloseToObject(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) {
+ if (is_point_close_to_object(o, o->oHomeX, 3174.0f, o->oHomeZ, 200)) {
SetObjAnimation(2);
PlaySound2(SOUND_GENERAL_ENEMY_ALERT1);
o->oForwardVel = 50.0f;
@@ -123,7 +123,7 @@ void yoshi_finish_jumping_and_despawn_loop(void) {
if (o->oPosY < 2100.0f) {
set_mario_npc_dialog(0);
gCutsceneActive = 1;
- D_80331508 = 1;
+ sYoshiDead = 1;
o->activeFlags = 0;
}
}
diff --git a/src/game/camera.c b/src/game/camera.c
@@ -5,6 +5,7 @@
#include "sm64.h"
#include "camera.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "audio/external.h"
#include "mario_misc.h"
#include "game.h"
@@ -28,6 +29,7 @@
#include "paintings.h"
#include "prevent_bss_reordering.h"
#include "engine/graph_node.h"
+#include "level_table.h"
#define CBUTTON_MASK (U_CBUTTONS | D_CBUTTONS | L_CBUTTONS | R_CBUTTONS)
@@ -2640,7 +2642,7 @@ void init_camera(struct LevelCamera *c) {
c->storedYaw = gCameraStatus.trueYaw;
}
-extern u8 D_8032E910[20];
+extern u8 zoomOutAreaMasks[20];
void func_80287404(struct GraphNodeCamera *a) {
UNUSED u8 unused1[8];
@@ -2651,13 +2653,13 @@ void func_80287404(struct GraphNodeCamera *a) {
s32 sp28 = gCurrLevelArea / 32;
s32 sp24 = 1 << (((gCurrLevelArea & 0x10) / 4) + (((gCurrLevelArea & 0xF) - 1) & 3));
- if (sp28 >= ARRAY_COUNT(D_8032E910) - 1) {
+ if (sp28 >= ARRAY_COUNT(zoomOutAreaMasks) - 1) {
sp28 = 0;
sp24 = 0;
}
if (gCameraMovementFlags & CAM_MOVE_PAUSE_SCREEN) {
if (gFramesPaused >= 2) {
- if (D_8032E910[sp28] & sp24) {
+ if (zoomOutAreaMasks[sp28] & sp24) {
a->to[0] = gCurrLevelCamera->xFocus;
a->to[1] = (sMarioStatusForCamera->pos[1] + gCurrLevelCamera->unk68) / 2.f;
a->to[2] = gCurrLevelCamera->zFocus;
@@ -5125,48 +5127,24 @@ struct TableCamera TableCameraBBH[61] = {
TABLE_EMPTY
};
-struct TableCamera *TableLevelCinematicCamera[40] = {
- NULL,
- NULL,
- NULL,
- NULL,
- TableCameraBBH,
- TableCameraCCM,
- TableCameraInside,
- TableCameraHMC,
- TableCameraSSL,
- NULL,
- TableCameraSL,
- NULL,
- NULL,
- TableCameraTHI,
- NULL,
- TableCameraRR,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- TableCameraCotMC,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
+#define _ NULL
+
+#define STUB_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, cameratable) cameratable,
+#define DEFINE_LEVEL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, cameratable) cameratable,
+
+/*
+ * This table has an extra 2 levels after the last unknown_38 stub level. What I think
+ * the programmer was thinking was that the table is null terminated and so used the
+ * level count as a coorespondance to the ID of the final level, but the enum represents
+ * an ID *after* the last stub lebel, not before or during it.
+ */
+struct TableCamera *TableLevelCinematicCamera[LEVEL_COUNT + 1] = {
NULL,
+ #include "levels/level_defines.h"
};
+#undef _
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
struct CutsceneSplinePoint sIntroStartToPipePosition[23] = {
{ 0, 0, { 2122, 8762, 9114 } }, { 0, 0, { 2122, 8762, 9114 } }, { 1, 0, { 2122, 7916, 9114 } },
@@ -5608,7 +5586,7 @@ s16 cutscene_object_with_dialog(u8 cutsceneTable, struct Object *o, s16 dialogID
if (dialogID != -1) {
D_8033B320 = dialogID;
} else {
- D_8033B320 = 1;
+ D_8033B320 = DIALOG_001;
}
} else {
sp1E = D_8032CFFC;
@@ -6533,13 +6511,13 @@ CmdRet bowser_fight_intro_dialog(UNUSED struct LevelCamera *c) {
switch (gCurrLevelNum) {
case LEVEL_BOWSER_1:
- dialog = 67;
+ dialog = DIALOG_067;
break;
case LEVEL_BOWSER_2:
- dialog = 92;
+ dialog = DIALOG_092;
break;
default:
- dialog = 93;
+ dialog = DIALOG_093;
}
create_dialog_box(dialog);
@@ -7458,7 +7436,7 @@ CmdRet CutsceneCapSwitchPress0_3(struct LevelCamera *c) {
}
CmdRet CutsceneCapSwitchPress0_6(UNUSED struct LevelCamera *c) {
- create_dialog_box_with_response(gCutsceneFocus->oBehParams2ndByte + 10);
+ create_dialog_box_with_response(gCutsceneFocus->oBehParams2ndByte + DIALOG_010);
}
static void unused_802968E8(struct LevelCamera *c) {
@@ -7570,7 +7548,7 @@ s32 intro_peach_move_camera_start_to_pipe(struct LevelCamera *c, struct Cutscene
}
CmdRet peach_letter_text(UNUSED struct LevelCamera *c) {
- create_dialog_box(20);
+ create_dialog_box(DIALOG_020);
}
#ifndef VERSION_JP
@@ -7621,7 +7599,7 @@ CmdRet CutsceneIntroPeach3_3(UNUSED struct LevelCamera *c) {
}
CmdRet intro_pipe_exit_text(UNUSED struct LevelCamera *c) {
- create_dialog_box(33);
+ create_dialog_box(DIALOG_033);
}
#ifndef VERSION_JP
@@ -8359,20 +8337,51 @@ struct CutsceneTableEntry TableCutsceneReadMessage[3] = { { CutsceneReadMessage0
{ CutsceneReadMessage1, 15 },
{ CutsceneReadMessage2, 0 } };
+#define DEFINE_COURSE(_0, i1, i2, i3, i4) { i1, i2, i3, i4 },
+#define DEFINE_COURSES_END()
+#define DEFINE_BONUS_COURSE(_0, i1, i2, i3, i4) { i1, i2, i3, i4 },
+
u8 D_8032E8A4[27][4] = {
- { 0x44, 0x44, 0x44, 0x04 }, { 0x00, 0x20, 0x22, 0x04 }, { 0x00, 0x00, 0x02, 0x04 },
- { 0x22, 0x22, 0x22, 0x04 }, { 0x00, 0x22, 0x00, 0x04 }, { 0x22, 0x22, 0x22, 0x04 },
- { 0x22, 0x22, 0x22, 0x04 }, { 0x12, 0x12, 0x12, 0x04 }, { 0x02, 0x22, 0x22, 0x04 },
- { 0x22, 0x22, 0x22, 0x04 }, { 0x20, 0x20, 0x20, 0x04 }, { 0x22, 0x01, 0x22, 0x04 },
- { 0x00, 0x00, 0x00, 0x04 }, { 0x11, 0x11, 0x12, 0x04 }, { 0x22, 0x22, 0x22, 0x04 },
- { 0x00, 0x00, 0x00, 0x04 }, { 0x43, 0x44, 0x44, 0x04 }, { 0x43, 0x44, 0x44, 0x04 },
- { 0x43, 0x44, 0x44, 0x04 }, { 0x42, 0x44, 0x44, 0x04 }, { 0x44, 0x44, 0x44, 0x04 },
- { 0x40, 0x44, 0x44, 0x04 }, { 0x42, 0x44, 0x44, 0x04 }, { 0x40, 0x44, 0x44, 0x04 },
- { 0x42, 0x44, 0x44, 0x04 }, { 0x44, 0x44, 0x44, 0x04 }, { 0x44, 0x44, 0x44, 0x04 }
+ { 0x44, 0x44, 0x44, 0x04 }, // (0) Course Hub (Castle Grounds)
+ #include "levels/course_defines.h"
+ { 0x44, 0x44, 0x44, 0x04 } // an extra course, hmm...
};
+#undef DEFINE_COURSE
+#undef DEFINE_COURSES_END
+#undef DEFINE_BONUS_COURSE
-u8 D_8032E910[20] = { 0x00, 0x00, 0x10, 0x00, 0x11, 0x11, 0x30, 0x10, 0x11, 0x10,
- 0x10, 0x01, 0x01, 0x00, 0x10, 0x11, 0x10, 0x01, 0x01, 0x00 };
+/**
+ * These masks set whether or not the camera zooms out when game is paused.
+ *
+ * Each entry is used by two levels. Even levels use the low 4 bits, odd levels use the high 4 bits
+ * Because areas are 1-indexed, a mask of 0x1 will make area 1 (not area 0) zoom out.
+ *
+ * In zoom_out_if_paused_and_outside(), the current area is converted to a shift.
+ * Then the value of (1 << shift) is &'d with the level's mask,
+ * and if the result is non-zero, the camera will zoom out.
+ */
+u8 zoomOutAreaMasks[20] = {
+ ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
+ ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // BBH | CCM
+ ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // CASTLE_INSIDE | HMC
+ ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SSL | BOB
+ ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SL | WDW
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,1,0,0), // JRB | THI
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // TTC | RR
+ ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // CASTLE_GROUNDS | BITDW
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // VCUTM | BITFS
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // SA | BITS
+ ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // LLL | DDD
+ ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // WF | ENDING
+ ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // COURTYARD | PSS
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // COTMC | TOTWC
+ ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // BOWSER_1 | WMOTR
+ ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // Unused | BOWSER_2
+ ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // BOWSER_3 | Unused
+ ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // TTM | Unused
+ ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
+};
struct CutsceneSplinePoint sBobCreditsCameraPositions[5] = { { 1, 0, { 5984, 3255, 4975 } },
{ 2, 0, { 4423, 3315, 1888 } },
diff --git a/src/game/camera.h b/src/game/camera.h
@@ -6,52 +6,56 @@
#include "engine/geo_layout.h"
#include "engine/graph_node.h"
+#include "level_table.h"
+
#define ABS(x) ((x) > 0.f ? (x) : -(x))
#define ABS2(x) ((x) >= 0.f ? (x) : -(x))
-#define AREA_BBH 0x0041
-#define AREA_CCM_OUTSIDE 0x0051
-#define AREA_CCM_SLIDE 0x0052
-#define AREA_CASTLE_LOBBY 0x0061
-#define AREA_CASTLE_TIPPY 0x0062
-#define AREA_CASTLE_BASTEMENT 0x0063
-#define AREA_HMC 0x0071
-#define AREA_SSL_OUTSIDE 0x0081
-#define AREA_SSL_PYRAMID 0x0082
-#define AREA_SSL_EYEROK 0x0083
-#define AREA_BOB 0x0091
-#define AREA_SL_OUTSIDE 0x00A1
-#define AREA_SL_IGLOO 0x00A2
-#define AREA_WDW_MAIN 0x00B1
-#define AREA_WDW_TOWN 0x00B2
-#define AREA_JRB_MAIN 0x00C1
-#define AREA_JRB_SHIP 0x00C2
-#define AREA_THI_HUGE 0x00D1
-#define AREA_THI_TINY 0x00D2
-#define AREA_THI_WIGGLER 0x00D3
-#define AREA_TTC 0x00E1
-#define AREA_RR 0x00F1
-#define AREA_OUTSIDE_CASTLE 0x0101
-#define AREA_BITDW 0x0111
-#define AREA_VCUTM 0x0121
-#define AREA_BITFS 0x0131
-#define AREA_SA 0x0141
-#define AREA_BITS 0x0151
-#define AREA_LLL_OUTSIDE 0x0161
-#define AREA_LLL_VOLCANO 0x0162
-#define AREA_DDD_WHIRLPOOL 0x0171
-#define AREA_DDD_SUB 0x0172
-#define AREA_WF 0x0181
-#define AREA_ENDING 0x0191
-#define AREA_COURTYARD 0x01A1
-#define AREA_PSS 0x01B1
-#define AREA_COTMC 0x01C1
-#define AREA_TOTWC 0x01D1
-#define AREA_BOWSER_1 0x01E1
-#define AREA_WMOTR 0x01F1
-#define AREA_BOWSER_2 0x0211
-#define AREA_BOWSER_3 0x0221
-#define AREA_TTM_OUTSIDE 0x0241
+#define LEVEL_AREA_INDEX(levelNum, areaNum) ((levelNum << 4) + areaNum)
+
+#define AREA_BBH LEVEL_AREA_INDEX(LEVEL_BBH, 1)
+#define AREA_CCM_OUTSIDE LEVEL_AREA_INDEX(LEVEL_CCM, 1)
+#define AREA_CCM_SLIDE LEVEL_AREA_INDEX(LEVEL_CCM, 2)
+#define AREA_CASTLE_LOBBY LEVEL_AREA_INDEX(LEVEL_CASTLE, 1)
+#define AREA_CASTLE_TIPPY LEVEL_AREA_INDEX(LEVEL_CASTLE, 2)
+#define AREA_CASTLE_BASTEMENT LEVEL_AREA_INDEX(LEVEL_CASTLE, 3)
+#define AREA_HMC LEVEL_AREA_INDEX(LEVEL_HMC, 1)
+#define AREA_SSL_OUTSIDE LEVEL_AREA_INDEX(LEVEL_SSL, 1)
+#define AREA_SSL_PYRAMID LEVEL_AREA_INDEX(LEVEL_SSL, 2)
+#define AREA_SSL_EYEROK LEVEL_AREA_INDEX(LEVEL_SSL, 3)
+#define AREA_BOB LEVEL_AREA_INDEX(LEVEL_BOB, 1)
+#define AREA_SL_OUTSIDE LEVEL_AREA_INDEX(LEVEL_SL, 1)
+#define AREA_SL_IGLOO LEVEL_AREA_INDEX(LEVEL_SL, 2)
+#define AREA_WDW_MAIN LEVEL_AREA_INDEX(LEVEL_WDW, 1)
+#define AREA_WDW_TOWN LEVEL_AREA_INDEX(LEVEL_WDW, 2)
+#define AREA_JRB_MAIN LEVEL_AREA_INDEX(LEVEL_JRB, 1)
+#define AREA_JRB_SHIP LEVEL_AREA_INDEX(LEVEL_JRB, 2)
+#define AREA_THI_HUGE LEVEL_AREA_INDEX(LEVEL_THI, 1)
+#define AREA_THI_TINY LEVEL_AREA_INDEX(LEVEL_THI, 2)
+#define AREA_THI_WIGGLER LEVEL_AREA_INDEX(LEVEL_THI, 3)
+#define AREA_TTC LEVEL_AREA_INDEX(LEVEL_TTC, 1)
+#define AREA_RR LEVEL_AREA_INDEX(LEVEL_RR, 1)
+#define AREA_OUTSIDE_CASTLE LEVEL_AREA_INDEX(LEVEL_CASTLE_GROUNDS, 1)
+#define AREA_BITDW LEVEL_AREA_INDEX(LEVEL_BITDW, 1)
+#define AREA_VCUTM LEVEL_AREA_INDEX(LEVEL_VCUTM, 1)
+#define AREA_BITFS LEVEL_AREA_INDEX(LEVEL_BITFS, 1)
+#define AREA_SA LEVEL_AREA_INDEX(LEVEL_SA, 1)
+#define AREA_BITS LEVEL_AREA_INDEX(LEVEL_BITS, 1)
+#define AREA_LLL_OUTSIDE LEVEL_AREA_INDEX(LEVEL_LLL, 1)
+#define AREA_LLL_VOLCANO LEVEL_AREA_INDEX(LEVEL_LLL, 2)
+#define AREA_DDD_WHIRLPOOL LEVEL_AREA_INDEX(LEVEL_DDD, 1)
+#define AREA_DDD_SUB LEVEL_AREA_INDEX(LEVEL_DDD, 2)
+#define AREA_WF LEVEL_AREA_INDEX(LEVEL_WF, 1)
+#define AREA_ENDING LEVEL_AREA_INDEX(LEVEL_ENDING, 1)
+#define AREA_COURTYARD LEVEL_AREA_INDEX(LEVEL_CASTLE_COURTYARD, 1)
+#define AREA_PSS LEVEL_AREA_INDEX(LEVEL_PSS, 1)
+#define AREA_COTMC LEVEL_AREA_INDEX(LEVEL_COTMC, 1)
+#define AREA_TOTWC LEVEL_AREA_INDEX(LEVEL_TOTWC, 1)
+#define AREA_BOWSER_1 LEVEL_AREA_INDEX(LEVEL_BOWSER_1, 1)
+#define AREA_WMOTR LEVEL_AREA_INDEX(LEVEL_WMOTR, 1)
+#define AREA_BOWSER_2 LEVEL_AREA_INDEX(LEVEL_BOWSER_2, 1)
+#define AREA_BOWSER_3 LEVEL_AREA_INDEX(LEVEL_BOWSER_3, 1)
+#define AREA_TTM_OUTSIDE LEVEL_AREA_INDEX(LEVEL_TTM, 1)
#define CAM_MODE_MARIO_ACTIVE 0x01
#define CAM_MODE_LAKITU_WAS_ZOOMED_OUT 0x02
@@ -217,7 +221,7 @@ struct Struct8033B2B8
// actually return a value. This causes undefined behavior, which we'd rather
// avoid on modern GCC. Hence, typedef. Interestingly, the void vs s32
// difference doesn't affect -g codegen, only -O2.
-#if BUGFIXES_CRITICAL
+#ifdef AVOID_UB
typedef void CmdRet;
#else
typedef s32 CmdRet;
diff --git a/src/game/display.c b/src/game/display.c
@@ -55,7 +55,7 @@ void my_rsp_init(void) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH | G_CULL_BACK | G_LIGHTING);
- gSPNumLights(gDisplayListHead++, 1);
+ gSPNumLights(gDisplayListHead++, NUMLIGHTS_1);
gSPTexture(gDisplayListHead++, 0, 0, 0, G_TX_RENDERTILE, G_OFF);
// @bug Nintendo did not explicitly define the clipping ratio.
diff --git a/src/game/eu_translation.h b/src/game/eu_translation.h
@@ -12,15 +12,15 @@ extern u8 _translation_de_mio0SegmentRomStart[];
extern u8 _translation_de_mio0SegmentRomEnd[];
extern void *dialog_table_eu_en[];
-extern void *level_name_table_eu_en[];
+extern void *course_name_table_eu_en[];
extern void *act_name_table_eu_en[];
extern void *dialog_table_eu_fr[];
-extern void *level_name_table_eu_fr[];
+extern void *course_name_table_eu_fr[];
extern void *act_name_table_eu_fr[];
extern void *dialog_table_eu_de[];
-extern void *level_name_table_eu_de[];
+extern void *course_name_table_eu_de[];
extern void *act_name_table_eu_de[];
#endif /* EU_TRANSLATION_H */
diff --git a/src/game/game.c b/src/game/game.c
@@ -3,6 +3,7 @@
#include "sm64.h"
#include "audio/external.h"
#include "buffers/framebuffers.h"
+#include "buffers/zbuffer.h"
#include "engine/level_script.h"
#include "main.h"
#include "memory.h"
diff --git a/src/game/game.h b/src/game/game.h
@@ -48,7 +48,6 @@ extern u16 func_802495B0(u32);
extern struct MarioAnimation D_80339D10;
extern struct MarioAnimation gDemo;
-extern u16 gZBuffer[SCREEN_WIDTH * SCREEN_HEIGHT];
extern u8 gMarioAnims[];
extern u8 gDemoInputs[];
diff --git a/src/game/hud.c b/src/game/hud.c
@@ -127,7 +127,7 @@ void render_dl_power_meter(s16 numHealthWedges) {
gSPDisplayList(gDisplayListHead++, &dl_power_meter_health_segments_end);
}
- gSPPopMatrix(gDisplayListHead++, 0);
+ gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
}
/**
diff --git a/src/game/ingame_menu.c b/src/game/ingame_menu.c
@@ -5,6 +5,7 @@
#include "types.h"
#include "audio/external.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "game.h"
#include "save_file.h"
#include "level_update.h"
@@ -340,7 +341,7 @@ struct MultiTextEntry {
#define TEXT_THE_RAW ASCII_TO_DIALOG('t'), ASCII_TO_DIALOG('h'), ASCII_TO_DIALOG('e'), 0x00
#define TEXT_YOU_RAW ASCII_TO_DIALOG('y'), ASCII_TO_DIALOG('o'), ASCII_TO_DIALOG('u'), 0x00
-enum MutliStringIDs { STRING_THE, STRING_YOU };
+enum MultiStringIDs { STRING_THE, STRING_YOU };
/*
* Place the multi-text string according to the ID passed. (US, EU)
@@ -970,7 +971,7 @@ void render_dialog_box_type(struct DialogEntry *dialog, s8 linesPerBox) {
// convert the speed into angle
create_dl_rotation_matrix(MENU_MTX_NOPUSH, gDialogBoxOpenTimer * 4.0f, 0, 0, 1.0f);
}
- gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 0x96);
+ gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 150);
break;
case DIALOG_TYPE_ZOOM: // Renders a dialog white box with zoom
if (gDialogBoxState == DIALOG_STATE_OPENING || gDialogBoxState == DIALOG_STATE_CLOSING) {
@@ -978,7 +979,7 @@ void render_dialog_box_type(struct DialogEntry *dialog, s8 linesPerBox) {
(40.0 / gDialogBoxScale) - 40, 0);
create_dl_scale_matrix(MENU_MTX_NOPUSH, 1.0 / gDialogBoxScale, 1.0 / gDialogBoxScale, 1.0f);
}
- gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 0x96);
+ gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, 150);
break;
}
@@ -2201,15 +2202,15 @@ void render_pause_my_score_coins(void) {
u8 textUnfilledStar[] = { TEXT_UNFILLED_STAR };
u8 strCourseNum[4];
- void **levelNameTbl;
- u8 *levelName;
+ void **courseNameTbl;
+ u8 *courseName;
void **actNameTbl;
u8 *actName;
u8 courseIndex;
u8 starFlags;
#ifndef VERSION_EU
- levelNameTbl = segmented_to_virtual(seg2_level_name_table);
+ courseNameTbl = segmented_to_virtual(seg2_course_name_table);
actNameTbl = segmented_to_virtual(seg2_act_name_table);
#endif
@@ -2220,15 +2221,15 @@ void render_pause_my_score_coins(void) {
switch (gInGameLanguage) {
case LANGUAGE_ENGLISH:
actNameTbl = segmented_to_virtual(act_name_table_eu_en);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_en);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_en);
break;
case LANGUAGE_FRENCH:
actNameTbl = segmented_to_virtual(act_name_table_eu_fr);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_fr);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);
break;
case LANGUAGE_GERMAN:
actNameTbl = segmented_to_virtual(act_name_table_eu_de);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_de);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_de);
break;
}
#endif
@@ -2250,7 +2251,7 @@ void render_pause_my_score_coins(void) {
print_generic_string(MYSCORE_X, 121, textMyScore);
}
- levelName = segmented_to_virtual(levelNameTbl[courseIndex]);
+ courseName = segmented_to_virtual(courseNameTbl[courseIndex]);
if (courseIndex < COURSE_STAGES_COUNT) {
#ifdef VERSION_EU
@@ -2274,19 +2275,19 @@ void render_pause_my_score_coins(void) {
}
print_generic_string(ACT_NAME_X, 140, actName);
#ifndef VERSION_JP
- print_generic_string(LVL_NAME_X, 157, &levelName[3]);
+ print_generic_string(LVL_NAME_X, 157, &courseName[3]);
#endif
}
#ifndef VERSION_JP
else {
#ifdef VERSION_US
- print_generic_string(94, 157, &levelName[3]);
+ print_generic_string(94, 157, &courseName[3]);
#elif defined(VERSION_EU)
- print_generic_string(get_str_x_pos_from_center(159, &levelName[3], 10.0f), 157, &levelName[3]);
+ print_generic_string(get_str_x_pos_from_center(159, &courseName[3], 10.0f), 157, &courseName[3]);
#endif
}
#else
- print_generic_string(117, 157, &levelName[3]);
+ print_generic_string(117, 157, &courseName[3]);
#endif
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
}
@@ -2498,9 +2499,9 @@ void render_pause_castle_course_stars(s16 x, s16 y, s16 fileNum, s16 courseNum)
void render_pause_castle_main_strings(s16 x, s16 y) {
#ifdef VERSION_EU
- void **levelNameTbl;
+ void **courseNameTbl;
#else
- void **levelNameTbl = segmented_to_virtual(seg2_level_name_table);
+ void **courseNameTbl = segmented_to_virtual(seg2_course_name_table);
#endif
#ifdef VERSION_EU
@@ -2510,7 +2511,7 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
u8 textCoin[] = { TEXT_COIN_X };
#endif
- void *levelName;
+ void *courseName;
u8 strVal[8];
s16 starNum = gDialogLineNum;
@@ -2518,13 +2519,13 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
#ifdef VERSION_EU
switch (gInGameLanguage) {
case LANGUAGE_ENGLISH:
- levelNameTbl = segmented_to_virtual(level_name_table_eu_en);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_en);
break;
case LANGUAGE_FRENCH:
- levelNameTbl = segmented_to_virtual(level_name_table_eu_fr);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);
break;
case LANGUAGE_GERMAN:
- levelNameTbl = segmented_to_virtual(level_name_table_eu_de);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_de);
break;
}
#endif
@@ -2558,7 +2559,7 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
gDPSetEnvColor(gDisplayListHead++, 255, 255, 255, gDialogTextAlpha);
if (gDialogLineNum < COURSE_STAGES_COUNT) {
- levelName = segmented_to_virtual(levelNameTbl[gDialogLineNum]);
+ courseName = segmented_to_virtual(courseNameTbl[gDialogLineNum]);
render_pause_castle_course_stars(x, y, gCurrSaveFileNum - 1, gDialogLineNum);
print_generic_string(x + 34, y - 5, textCoin);
#ifdef VERSION_EU
@@ -2567,21 +2568,21 @@ void render_pause_castle_main_strings(s16 x, s16 y) {
int_to_str(save_file_get_course_coin_score(gCurrSaveFileNum - 1, gDialogLineNum), strVal);
print_generic_string(x + 54, y - 5, strVal);
#ifdef VERSION_EU
- print_generic_string(x - 17, y + 30, levelName);
+ print_generic_string(x - 17, y + 30, courseName);
#endif
} else {
u8 textStarX[] = { TEXT_STAR_X };
- levelName = segmented_to_virtual(levelNameTbl[COURSE_MAX]);
+ courseName = segmented_to_virtual(courseNameTbl[COURSE_MAX]);
print_generic_string(x + 40, y + 13, textStarX);
int_to_str(save_file_get_total_star_count(gCurrSaveFileNum - 1, COURSE_BONUS_STAGES - 1, COURSE_MAX - 1), strVal);
print_generic_string(x + 60, y + 13, strVal);
#ifdef VERSION_EU
- print_generic_string(get_str_x_pos_from_center(x + 51, levelName, 10.0f), y + 30, levelName);
+ print_generic_string(get_str_x_pos_from_center(x + 51, courseName, 10.0f), y + 30, courseName);
#endif
}
#ifndef VERSION_EU
- print_generic_string(x - 9, y + 30, levelName);
+ print_generic_string(x - 9, y + 30, courseName);
#endif
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
@@ -2816,7 +2817,7 @@ void render_course_complete_lvl_info_and_hud_str(void) {
#endif
void **actNameTbl;
- void **levelNameTbl;
+ void **courseNameTbl;
u8 *name;
u8 strCourseNum[4];
@@ -2826,20 +2827,20 @@ void render_course_complete_lvl_info_and_hud_str(void) {
switch (gInGameLanguage) {
case LANGUAGE_ENGLISH:
actNameTbl = segmented_to_virtual(act_name_table_eu_en);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_en);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_en);
break;
case LANGUAGE_FRENCH:
actNameTbl = segmented_to_virtual(act_name_table_eu_fr);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_fr);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_fr);
break;
case LANGUAGE_GERMAN:
actNameTbl = segmented_to_virtual(act_name_table_eu_de);
- levelNameTbl = segmented_to_virtual(level_name_table_eu_de);
+ courseNameTbl = segmented_to_virtual(course_name_table_eu_de);
break;
}
#else
actNameTbl = segmented_to_virtual(seg2_act_name_table);
- levelNameTbl = segmented_to_virtual(seg2_level_name_table);
+ courseNameTbl = segmented_to_virtual(seg2_course_name_table);
#endif
if (gLastCompletedCourseNum <= COURSE_STAGES_MAX) {
@@ -2862,7 +2863,7 @@ void render_course_complete_lvl_info_and_hud_str(void) {
print_generic_string(CRS_NUM_X3, 167, strCourseNum);
gSPDisplayList(gDisplayListHead++, dl_ia_text_end);
} else if (gLastCompletedCourseNum == COURSE_BITDW || gLastCompletedCourseNum == COURSE_BITFS) {
- name = segmented_to_virtual(levelNameTbl[gLastCompletedCourseNum - 1]);
+ name = segmented_to_virtual(courseNameTbl[gLastCompletedCourseNum - 1]);
gSPDisplayList(gDisplayListHead++, dl_ia_text_begin);
gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, gDialogTextAlpha);
#ifdef VERSION_EU
diff --git a/src/game/interaction.c b/src/game/interaction.c
@@ -17,6 +17,8 @@
#include "behavior_actions.h"
#include "audio/external.h"
#include "behavior_data.h"
+#include "dialog_ids.h"
+#include "course_table.h"
#define INT_GROUND_POUND_OR_TWIRL (1 << 0) // 0x00000001
#define INT_PUNCH (1 << 1) // 0x00000002
@@ -857,7 +859,7 @@ u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Obj
if (!(saveFlags & SAVE_FLAG_HAVE_KEY_2)) {
if (!sDisplayingDoorText) {
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG,
- (saveFlags & SAVE_FLAG_HAVE_KEY_1) ? 0x17 : 0x16);
+ (saveFlags & SAVE_FLAG_HAVE_KEY_1) ? DIALOG_023 : DIALOG_022);
}
sDisplayingDoorText = TRUE;
@@ -872,7 +874,7 @@ u32 interact_warp_door(struct MarioState *m, UNUSED u32 interactType, struct Obj
if (!sDisplayingDoorText) {
// Moat door skip was intended confirmed
set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG,
- (saveFlags & SAVE_FLAG_HAVE_KEY_2) ? 0x17 : 0x16);
+ (saveFlags & SAVE_FLAG_HAVE_KEY_2) ? DIALOG_023 : DIALOG_022);
}
sDisplayingDoorText = TRUE;
@@ -972,26 +974,26 @@ u32 interact_door(struct MarioState *m, UNUSED u32 interactType, struct Object *
return set_mario_action(m, enterDoorAction, actionArg);
} else if (!sDisplayingDoorText) {
- u32 text = 0x00160000;
+ u32 text = DIALOG_022 << 16;
switch (requiredNumStars) {
case 1:
- text = 0x00180000;
+ text = DIALOG_024 << 16;
break;
case 3:
- text = 0x00190000;
+ text = DIALOG_025 << 16;
break;
case 8:
- text = 0x001A0000;
+ text = DIALOG_026 << 16;
break;
case 30:
- text = 0x001B0000;
+ text = DIALOG_027 << 16;
break;
case 50:
- text = 0x001C0000;
+ text = DIALOG_028 << 16;
break;
case 70:
- text = 0x001D0000;
+ text = DIALOG_029 << 16;
break;
}
diff --git a/src/game/level_update.c b/src/game/level_update.c
@@ -2,6 +2,7 @@
#include "sm64.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "audio/external.h"
#include "level_update.h"
#include "game.h"
@@ -24,6 +25,7 @@
#include "memory.h"
#include "eu_translation.h"
#endif
+#include "level_table.h"
#define PLAY_MODE_NORMAL 0
#define PLAY_MODE_PAUSED 2
@@ -227,15 +229,15 @@ void func_8024980C(u32 arg) {
u32 dialogID = gCurrentArea->dialog[arg];
switch (dialogID) {
- case 129:
+ case DIALOG_129:
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_VANISH_CAP;
break;
- case 130:
+ case DIALOG_130:
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_METAL_CAP;
break;
- case 131:
+ case DIALOG_131:
gotAchievement = save_file_get_flags() & SAVE_FLAG_HAVE_WING_CAP;
break;
@@ -1246,7 +1248,7 @@ s32 lvl_init_from_save_file(UNUSED s16 arg0, s32 levelNum) {
disable_warp_checkpoint();
save_file_move_cap_to_default_location();
select_mario_cam_mode();
- func_802E2F40();
+ set_yoshi_as_not_dead();
return levelNum;
}
diff --git a/src/game/mario.c b/src/game/mario.c
@@ -30,12 +30,13 @@
#include "save_file.h"
#include "sound_init.h"
#include "engine/surface_collision.h"
+#include "level_table.h"
u32 unused80339F10;
s8 filler80339F1C[20];
/**************************************************
- * ANIMATIONS *
+ * ANIMATIONS *
**************************************************/
/**
@@ -229,7 +230,7 @@ s16 return_mario_anim_y_translation(struct MarioState *m) {
}
/**************************************************
- * AUDIO *
+ * AUDIO *
**************************************************/
/**
@@ -249,11 +250,11 @@ void play_mario_jump_sound(struct MarioState *m) {
if (!(m->flags & MARIO_MARIO_SOUND_PLAYED)) {
#ifndef VERSION_JP
if (m->action == ACT_TRIPLE_JUMP) {
- play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((D_80226EB8 % 5) << 16),
+ play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),
m->marioObj->header.gfx.cameraToObject);
} else {
#endif
- play_sound(SOUND_MARIO_YAH_WAH_HOO + ((D_80226EB8 % 3) << 16),
+ play_sound(SOUND_MARIO_YAH_WAH_HOO + ((gAudioRandom % 3) << 16),
m->marioObj->header.gfx.cameraToObject);
#ifndef VERSION_JP
}
@@ -364,7 +365,7 @@ void play_mario_sound(struct MarioState *m, s32 actionSound, s32 marioSound) {
}
/**************************************************
- * ACTIONS *
+ * ACTIONS *
**************************************************/
/**
@@ -1658,7 +1659,7 @@ void mario_update_hitbox_and_cap_model(struct MarioState *m) {
*/
static void debug_update_mario_cap(u16 button, s32 flags, u16 capTimer, u16 capMusic) {
// This checks for Z_TRIG instead of Z_DOWN flag
- //(which is also what other debug functions do),
+ // (which is also what other debug functions do),
// so likely debug behavior rather than unused behavior.
if ((gPlayer1Controller->buttonDown & Z_TRIG) && (gPlayer1Controller->buttonPressed & button)
&& ((gMarioState->flags & flags) == 0)) {
@@ -1758,7 +1759,7 @@ s32 execute_mario_action(UNUSED struct Object *o) {
}
/**************************************************
- * INITIALIZATION *
+ * INITIALIZATION *
**************************************************/
void init_mario(void) {
diff --git a/src/game/mario.h b/src/game/mario.h
@@ -3,7 +3,7 @@
#include "types.h"
-extern u32 D_80226EB8;
+extern u32 gAudioRandom;
extern struct Object *gMarioObject;
extern struct Object *gLuigiObject;
diff --git a/src/game/mario_actions_airborne.c b/src/game/mario_actions_airborne.c
@@ -385,6 +385,15 @@ u32 common_air_action_step(struct MarioState *m, u32 landAction, s32 animation,
m->vel[1] = 0.0f;
}
+ //! Hands-free holding. Bonking while no wall is referenced
+ // sets Mario's action to a non-holding action without
+ // dropping the object, causing the hands-free holding
+ // glitch. This can be achieved using an exposed ceiling,
+ // out of bounds, grazing the bottom of a wall while
+ // falling such that the final quarter step does not find a
+ // wall collision, or by rising into the top of a wall such
+ // that the final quarter step detects a ledge, but you are
+ // not able to ledge grab it.
if (m->forwardVel >= 38.0f) {
m->particleFlags |= PARTICLE_1;
set_mario_action(m, ACT_BACKWARD_AIR_KB, 0);
@@ -1277,6 +1286,9 @@ s32 act_air_hit_wall(struct MarioState *m) {
return set_mario_action(m, ACT_SOFT_BONK, 0);
}
+#ifdef AVOID_UB
+ return
+#endif
set_mario_animation(m, MARIO_ANIM_START_WALLKICK);
//! Missing return statement. The returned value is the result of the call
@@ -1750,7 +1762,7 @@ s32 act_flying(struct MarioState *m) {
if (startPitch <= 0 && m->faceAngle[0] > 0 && m->forwardVel >= 48.0f) {
play_sound(SOUND_ACTION_FLYING_FAST, m->marioObj->header.gfx.cameraToObject);
#ifndef VERSION_JP
- play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((D_80226EB8 % 5) << 16),
+ play_sound(SOUND_MARIO_YAHOO_WAHA_YIPPEE + ((gAudioRandom % 5) << 16),
m->marioObj->header.gfx.cameraToObject);
#endif
}
diff --git a/src/game/mario_actions_automatic.c b/src/game/mario_actions_automatic.c
@@ -14,6 +14,7 @@
#include "engine/surface_collision.h"
#include "interaction.h"
#include "camera.h"
+#include "level_table.h"
#define POLE_NONE 0
#define POLE_TOUCHED_FLOOR 1
diff --git a/src/game/mario_actions_cutscene.c b/src/game/mario_actions_cutscene.c
@@ -23,6 +23,8 @@
#include "engine/behavior_script.h"
#include "behavior_data.h"
#include "object_list_processor.h"
+#include "level_table.h"
+#include "dialog_ids.h"
// TODO: put this elsewhere
enum SaveOption { SAVE_OPT_SAVE_AND_CONTINUE = 1, SAVE_OPT_SAVE_AND_QUIT, SAVE_OPT_CONTINUE_DONT_SAVE };
@@ -230,7 +232,7 @@ static void Unknown80256FF8(u16 *a0) {
/**
* get_star_collection_dialog: Determine what dialog should show when Mario
- ** collects a star.
+ * collects a star.
* Determines if Mario has collected enough stars to get a dialog for it, and
* if so, return the dialog ID. Otherwise, return 0
*/
@@ -242,7 +244,7 @@ s32 get_star_collection_dialog(struct MarioState *m) {
for (i = 0; i < 6; i++) {
numStarsRequired = sStarsNeededForDialog[i];
if (m->unkB8 < numStarsRequired && m->numStars >= numStarsRequired) {
- dialogID = i + 0x8D;
+ dialogID = i + DIALOG_141;
break;
}
}
@@ -411,7 +413,7 @@ s32 act_reading_npc_dialog(struct MarioState *m) {
if (m->flags & MARIO_CAP_IN_HAND) {
set_mario_action(m, ACT_PUTTING_ON_CAP, 0);
} else {
- set_mario_action(m, m->heldObj == NULL ? ACT_IDLE : ACT_UNKNOWN_007, 0);
+ set_mario_action(m, m->heldObj == NULL ? ACT_IDLE : ACT_HOLD_IDLE, 0);
}
}
vec3f_copy(m->marioObj->header.gfx.pos, m->pos);
@@ -624,7 +626,7 @@ void general_star_dance_handler(struct MarioState *m, s32 isInWater) {
level_trigger_warp(m, WARP_OP_STAR_EXIT);
} else {
enable_time_stop();
- create_dialog_box_with_response(gLastCompletedStarNum == 7 ? 13 : 14);
+ create_dialog_box_with_response(gLastCompletedStarNum == 7 ? DIALOG_013 : DIALOG_014);
m->actionState = 1;
}
break;
@@ -800,10 +802,10 @@ s32 act_unlocking_key_door(struct MarioState *m) {
switch (m->marioObj->header.gfx.unk38.animFrame) {
case 79:
- play_sound(SOUND_GENERAL_SWITCH4, m->marioObj->header.gfx.cameraToObject);
+ play_sound(SOUND_GENERAL_DOOR_INSERT_KEY, m->marioObj->header.gfx.cameraToObject);
break;
case 111:
- play_sound(SOUND_GENERAL_SWITCH2, m->marioObj->header.gfx.cameraToObject);
+ play_sound(SOUND_GENERAL_DOOR_TURN_KEY, m->marioObj->header.gfx.cameraToObject);
break;
}
@@ -852,7 +854,7 @@ s32 act_unlocking_star_door(struct MarioState *m) {
case 3:
if (is_anim_at_end(m)) {
save_file_set_flags(get_door_save_file_flag(m->usedObj));
- set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, 38);
+ set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_038);
}
break;
}
@@ -972,7 +974,7 @@ s32 act_warp_door_spawn(struct MarioState *m) {
}
} else if (m->usedObj->oAction == 0) {
if (gShouldNotPlayCastleMusic == TRUE && gCurrLevelNum == LEVEL_CASTLE) {
- set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, 21);
+ set_mario_action(m, ACT_READING_AUTOMATIC_DIALOG, DIALOG_021);
} else {
set_mario_action(m, ACT_IDLE, 0);
}
@@ -1822,7 +1824,7 @@ static s32 jumbo_star_cutscene_taking_off(struct MarioState *m) {
switch (animFrame) {
case 3:
- play_sound(SOUND_MARIO_YAH_WAH_HOO + (D_80226EB8 % 3 << 16),
+ play_sound(SOUND_MARIO_YAH_WAH_HOO + (gAudioRandom % 3 << 16),
m->marioObj->header.gfx.cameraToObject);
break;
diff --git a/src/game/mario_actions_moving.c b/src/game/mario_actions_moving.c
@@ -539,6 +539,7 @@ void func_802652F0(struct MarioState *m) {
if (val04 > 8.0f) {
m->actionTimer = 2;
} else {
+ //! (Speed Crash) If Mario's speed is more than 2^17.
if ((val14 = (s32)(val04 / 4.0f * 0x10000)) < 0x1000) {
val14 = 0x1000;
}
@@ -556,6 +557,7 @@ void func_802652F0(struct MarioState *m) {
if (val04 > 8.0f) {
m->actionTimer = 2;
} else {
+ //! (Speed Crash) If Mario's speed is more than 2^17.
if ((val14 = (s32)(val04 * 0x10000)) < 0x1000) {
val14 = 0x1000;
}
@@ -572,6 +574,7 @@ void func_802652F0(struct MarioState *m) {
} else if (val04 > 22.0f) {
m->actionTimer = 3;
} else {
+ //! (Speed Crash) If Mario's speed is more than 2^17.
val14 = (s32)(val04 / 4.0f * 0x10000);
set_mario_anim_with_accel(m, MARIO_ANIM_WALKING, val14);
func_80263AD4(m, 10, 49);
@@ -584,6 +587,7 @@ void func_802652F0(struct MarioState *m) {
if (val04 < 18.0f) {
m->actionTimer = 2;
} else {
+ //! (Speed Crash) If Mario's speed is more than 2^17.
val14 = (s32)(val04 / 4.0f * 0x10000);
set_mario_anim_with_accel(m, MARIO_ANIM_RUNNING, val14);
func_80263AD4(m, 9, 45);
@@ -618,6 +622,7 @@ void func_8026570C(struct MarioState *m) {
if (val04 > 6.0f) {
m->actionTimer = 1;
} else {
+ //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15.
val0C = (s32)(val04 * 0x10000);
set_mario_anim_with_accel(m, MARIO_ANIM_SLOW_WALK_WITH_LIGHT_OBJ, val0C);
func_80263AD4(m, 12, 62);
@@ -632,6 +637,7 @@ void func_8026570C(struct MarioState *m) {
} else if (val04 > 11.0f) {
m->actionTimer = 2;
} else {
+ //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^15.
val0C = (s32)(val04 * 0x10000);
set_mario_anim_with_accel(m, MARIO_ANIM_WALK_WITH_LIGHT_OBJ, val0C);
func_80263AD4(m, 12, 62);
@@ -644,6 +650,7 @@ void func_8026570C(struct MarioState *m) {
if (val04 < 8.0f) {
m->actionTimer = 1;
} else {
+ //! (Speed Crash) Crashes if Mario's speed exceeds or equals 2^16.
val0C = (s32)(val04 / 2.0f * 0x10000);
set_mario_anim_with_accel(m, MARIO_ANIM_RUN_WITH_LIGHT_OBJ, val0C);
func_80263AD4(m, 10, 49);
@@ -667,6 +674,7 @@ void func_802659E8(struct MarioState *m, Vec3f startPos) {
f32 dx = m->pos[0] - startPos[0];
f32 dz = m->pos[2] - startPos[2];
f32 movedDistance = sqrtf(dx * dx + dz * dz);
+ //! (Speed Crash) If a wall is after moving 16384 distance, this crashes.
s32 val04 = (s32)(movedDistance * 2.0f * 0x10000);
if (m->forwardVel > 6.0f) {
@@ -711,6 +719,8 @@ void func_80265C28(struct MarioState *m, s16 startYaw) {
if (animID == MARIO_ANIM_WALKING || animID == MARIO_ANIM_RUNNING) {
dYaw = m->faceAngle[1] - startYaw;
+ //! (Speed Crash) These casts can cause a crash if (dYaw * forwardVel / 12) or
+ //! (forwardVel * 170) exceed or equal 2^31.
val02 = -(s16)(dYaw * m->forwardVel / 12.0f);
val00 = (s16)(m->forwardVel * 170.0f);
@@ -741,6 +751,9 @@ void func_80265DBC(struct MarioState *m, s16 startYaw) {
struct MarioBodyState *val0C = m->marioBodyState;
struct Object *marioObj = m->marioObj;
s16 dYaw = m->faceAngle[1] - startYaw;
+ //! (Speed Crash) These casts can cause a crash if (dYaw * forwardVel / 12) or
+ //! (forwardVel * 170) exceed or equal 2^31. Harder (if not impossible to do)
+ //! while on a Koopa Shell making this less of an issue.
s16 val04 = -(s16)(dYaw * m->forwardVel / 12.0f);
s16 val02 = (s16)(m->forwardVel * 170.0f);
@@ -928,7 +941,7 @@ s32 act_hold_heavy_walking(struct MarioState *m) {
}
if (m->input & INPUT_UNKNOWN_5) {
- return set_mario_action(m, ACT_UNKNOWN_008, 0);
+ return set_mario_action(m, ACT_HOLD_HEAVY_IDLE, 0);
}
m->intendedMag *= 0.1f;
@@ -1111,6 +1124,7 @@ s32 act_decelerating(struct MarioState *m) {
adjust_sound_for_speed(m);
m->particleFlags |= PARTICLE_DUST;
} else {
+ // (Speed Crash) Crashes if speed exceeds 2^17.
if ((val0C = (s32)(m->forwardVel / 4.0f * 0x10000)) < 0x1000) {
val0C = 0x1000;
}
@@ -1151,7 +1165,7 @@ s32 act_hold_decelerating(struct MarioState *m) {
}
if (update_decelerating_speed(m)) {
- return set_mario_action(m, ACT_UNKNOWN_007, 0);
+ return set_mario_action(m, ACT_HOLD_IDLE, 0);
}
m->intendedMag *= 0.4f;
@@ -1176,6 +1190,7 @@ s32 act_hold_decelerating(struct MarioState *m) {
adjust_sound_for_speed(m);
m->particleFlags |= PARTICLE_DUST;
} else {
+ //! (Speed Crash) This crashes if Mario has more speed than 2^15 speed.
if ((val0C = (s32)(m->forwardVel * 0x10000)) < 0x1000) {
val0C = 0x1000;
}
diff --git a/src/game/mario_actions_object.c b/src/game/mario_actions_object.c
@@ -195,13 +195,13 @@ s32 act_picking_up(struct MarioState *m) {
m->marioBodyState->grabPos = GRAB_POS_HEAVY_OBJ;
set_mario_animation(m, MARIO_ANIM_GRAB_HEAVY_OBJECT);
if (is_anim_at_end(m)) {
- set_mario_action(m, ACT_UNKNOWN_008, 0);
+ set_mario_action(m, ACT_HOLD_HEAVY_IDLE, 0);
}
} else {
m->marioBodyState->grabPos = GRAB_POS_LIGHT_OBJ;
set_mario_animation(m, MARIO_ANIM_PICK_UP_LIGHT_OBJ);
if (is_anim_at_end(m)) {
- set_mario_action(m, ACT_UNKNOWN_007, 0);
+ set_mario_action(m, ACT_HOLD_IDLE, 0);
}
}
}
@@ -215,6 +215,9 @@ s32 act_dive_picking_up(struct MarioState *m) {
return drop_and_set_mario_action(m, ACT_UNKNOWN_026, 0);
}
+ //! Hands-free holding. Landing on a slope or being pushed off a ledge while
+ // landing from a dive grab sets mario's action to a non-holding action
+ // without dropping the object, causing the hands-free holding glitch.
if (m->input & INPUT_OFF_FLOOR) {
return set_mario_action(m, ACT_FREEFALL, 0);
}
@@ -223,7 +226,7 @@ s32 act_dive_picking_up(struct MarioState *m) {
return set_mario_action(m, ACT_BEGIN_SLIDING, 0);
}
- animated_stationary_ground_step(m, MARIO_ANIM_STOP_SLIDE_LIGHT_OBJ, ACT_UNKNOWN_007);
+ animated_stationary_ground_step(m, MARIO_ANIM_STOP_SLIDE_LIGHT_OBJ, ACT_HOLD_IDLE);
return FALSE;
}
diff --git a/src/game/mario_actions_stationary.c b/src/game/mario_actions_stationary.c
@@ -441,7 +441,7 @@ s32 act_coughing(struct MarioState *m) {
return 0;
}
-s32 func_802615C4(struct MarioState *m) {
+s32 act_hold_idle(struct MarioState *m) {
if (segmented_to_virtual(&bhvJumpingBox) == m->heldObj->behavior) {
return set_mario_action(m, ACT_CRAZY_BOX_BOUNCE, 0);
}
@@ -463,7 +463,7 @@ s32 func_802615C4(struct MarioState *m) {
return 0;
}
-s32 func_802616C4(struct MarioState *m) {
+s32 act_hold_heavy_idle(struct MarioState *m) {
if (m->input & INPUT_UNKNOWN_10) {
return drop_and_set_mario_action(m, ACT_UNKNOWN_026, 0);
}
@@ -582,7 +582,7 @@ s32 act_panting(struct MarioState *m) {
}
if (set_mario_animation(m, MARIO_ANIM_WALK_PANTING) == 1) {
- play_sound(SOUND_MARIO_PANTING + ((D_80226EB8 % 3U) << 0x10),
+ play_sound(SOUND_MARIO_PANTING + ((gAudioRandom % 3U) << 0x10),
m->marioObj->header.gfx.cameraToObject);
}
@@ -591,7 +591,7 @@ s32 act_panting(struct MarioState *m) {
return 0;
}
-s32 func_80261C74(struct MarioState *m) {
+s32 act_hold_panting_unused(struct MarioState *m) {
if (m->marioObj->oInteractStatus & INT_STATUS_MARIO_DROP_OBJECT) {
return drop_and_set_mario_action(m, ACT_PANTING, 0);
}
@@ -601,7 +601,7 @@ s32 func_80261C74(struct MarioState *m) {
}
if (m->health >= 0x500) {
- return set_mario_action(m, ACT_UNKNOWN_007, 0);
+ return set_mario_action(m, ACT_HOLD_IDLE, 0);
}
if (func_802606DC(m) != 0) {
@@ -678,7 +678,7 @@ s32 func_80261F8C(struct MarioState *m) {
return set_mario_action(m, ACT_THROWING, 0);
}
- func_80261D70(m, MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ, ACT_UNKNOWN_007);
+ func_80261D70(m, MARIO_ANIM_STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);
return 0;
}
@@ -963,7 +963,7 @@ s32 func_80262CEC(struct MarioState *m) {
return set_mario_action(m, ACT_THROWING, 0);
}
- func_802627B8(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_UNKNOWN_007);
+ func_802627B8(m, MARIO_ANIM_JUMP_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);
return 0;
}
@@ -983,7 +983,7 @@ s32 func_80262DE4(struct MarioState *m) {
if (m->input & INPUT_B_PRESSED) {
return set_mario_action(m, ACT_THROWING, 0);
}
- func_802627B8(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_UNKNOWN_007);
+ func_802627B8(m, MARIO_ANIM_FALL_LAND_WITH_LIGHT_OBJ, ACT_HOLD_IDLE);
return 0;
}
@@ -1130,9 +1130,9 @@ s32 mario_execute_stationary_action(struct MarioState *m) {
case ACT_SLEEPING: sp24 = act_sleeping(m); break;
case ACT_WAKING_UP: sp24 = act_waking_up(m); break;
case ACT_PANTING: sp24 = act_panting(m); break;
- case ACT_UNKNOWN_006: sp24 = func_80261C74(m); break;
- case ACT_UNKNOWN_007: sp24 = func_802615C4(m); break;
- case ACT_UNKNOWN_008: sp24 = func_802616C4(m); break;
+ case ACT_HOLD_PANTING_UNUSED: sp24 = act_hold_panting_unused(m); break;
+ case ACT_HOLD_IDLE: sp24 = act_hold_idle(m); break;
+ case ACT_HOLD_HEAVY_IDLE: sp24 = act_hold_heavy_idle(m); break;
case ACT_IN_QUICKSAND: sp24 = act_in_quicksand(m); break;
case ACT_STANDING_AGAINST_WALL: sp24 = act_standing_against_wall(m); break;
case ACT_COUGHING: sp24 = act_coughing(m); break;
diff --git a/src/game/mario_actions_submerged.c b/src/game/mario_actions_submerged.c
@@ -14,6 +14,7 @@
#include "camera.h"
#include "audio/external.h"
#include "behavior_data.h"
+#include "level_table.h"
#define MIN_SWIM_STRENGTH 160
#define MIN_SWIM_SPEED 16.0f
diff --git a/src/game/mario_misc.c b/src/game/mario_misc.c
@@ -23,6 +23,34 @@
#include "skybox.h"
#include "interaction.h"
#include "object_list_processor.h"
+#include "dialog_ids.h"
+
+#define TOAD_STAR_1_REQUIREMENT 12
+#define TOAD_STAR_2_REQUIREMENT 25
+#define TOAD_STAR_3_REQUIREMENT 35
+
+#define TOAD_STAR_1_DIALOG DIALOG_082
+#define TOAD_STAR_2_DIALOG DIALOG_076
+#define TOAD_STAR_3_DIALOG DIALOG_083
+
+#define TOAD_STAR_1_DIALOG_AFTER DIALOG_154
+#define TOAD_STAR_2_DIALOG_AFTER DIALOG_155
+#define TOAD_STAR_3_DIALOG_AFTER DIALOG_156
+
+enum ToadMessageStates {
+ TOAD_MESSAGE_FADED,
+ TOAD_MESSAGE_OPAQUE,
+ TOAD_MESSAGE_OPACIFYING,
+ TOAD_MESSAGE_FADING,
+ TOAD_MESSAGE_TALKING
+};
+
+enum UnlockDoorStarStates {
+ UNLOCK_DOOR_STAR_RISING,
+ UNLOCK_DOOR_STAR_WAITING,
+ UNLOCK_DOOR_STAR_SPAWNING_PARTICLES,
+ UNLOCK_DOOR_STAR_DONE
+};
static s8 D_8032CDF0[7] = { 0x01, 0x02, 0x01, 0x00, 0x01, 0x02, 0x01 };
static s8 D_8032CDF8[] = { 0x0a, 0x0c, 0x10, 0x18, 0x0a, 0x0a, 0x0a, 0x0e, 0x14, 0x1e,
@@ -80,20 +108,20 @@ static void bhvToadMessage_opaque(void) {
}
static void bhvToadMessage_talking(void) {
- if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG_1, gCurrentObject->oToadMessageDialogNum) != 0) {
+ if (obj_update_dialog_with_cutscene(3, 1, CUTSCENE_DIALOG_1, gCurrentObject->oToadMessageDialogId) != 0) {
gCurrentObject->oToadMessageRecentlyTalked = 1;
gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADING;
- switch (gCurrentObject->oToadMessageDialogNum) {
+ switch (gCurrentObject->oToadMessageDialogId) {
case TOAD_STAR_1_DIALOG:
- gCurrentObject->oToadMessageDialogNum = TOAD_STAR_1_DIALOG_AFTER;
+ gCurrentObject->oToadMessageDialogId = TOAD_STAR_1_DIALOG_AFTER;
bhv_spawn_star_objects(0);
break;
case TOAD_STAR_2_DIALOG:
- gCurrentObject->oToadMessageDialogNum = TOAD_STAR_2_DIALOG_AFTER;
+ gCurrentObject->oToadMessageDialogId = TOAD_STAR_2_DIALOG_AFTER;
bhv_spawn_star_objects(1);
break;
case TOAD_STAR_3_DIALOG:
- gCurrentObject->oToadMessageDialogNum = TOAD_STAR_3_DIALOG_AFTER;
+ gCurrentObject->oToadMessageDialogId = TOAD_STAR_3_DIALOG_AFTER;
bhv_spawn_star_objects(2);
break;
}
@@ -138,31 +166,31 @@ void bhvToadMessage_loop(void) {
void bhvToadMessage_init(void) {
s32 saveFlags = save_file_get_flags();
s32 starCount = save_file_get_total_star_count(gCurrSaveFileNum - 1, 0, 24);
- s32 dialogNum = (gCurrentObject->oBehParams >> 24) & 0xFF;
+ s32 dialogId = (gCurrentObject->oBehParams >> 24) & 0xFF;
s32 enoughStars = TRUE;
- switch (dialogNum) {
+ switch (dialogId) {
case TOAD_STAR_1_DIALOG:
enoughStars = (starCount >= TOAD_STAR_1_REQUIREMENT);
if (saveFlags & (1 << 24)) {
- dialogNum = TOAD_STAR_1_DIALOG_AFTER;
+ dialogId = TOAD_STAR_1_DIALOG_AFTER;
}
break;
case TOAD_STAR_2_DIALOG:
enoughStars = (starCount >= TOAD_STAR_2_REQUIREMENT);
if (saveFlags & (1 << 25)) {
- dialogNum = TOAD_STAR_2_DIALOG_AFTER;
+ dialogId = TOAD_STAR_2_DIALOG_AFTER;
}
break;
case TOAD_STAR_3_DIALOG:
enoughStars = (starCount >= TOAD_STAR_3_REQUIREMENT);
if (saveFlags & (1 << 26)) {
- dialogNum = TOAD_STAR_3_DIALOG_AFTER;
+ dialogId = TOAD_STAR_3_DIALOG_AFTER;
}
break;
}
if (enoughStars) {
- gCurrentObject->oToadMessageDialogNum = dialogNum;
+ gCurrentObject->oToadMessageDialogId = dialogId;
gCurrentObject->oToadMessageRecentlyTalked = 0;
gCurrentObject->oToadMessageState = TOAD_MESSAGE_FADED;
gCurrentObject->oOpacity = 81;
diff --git a/src/game/mario_misc.h b/src/game/mario_misc.h
@@ -3,34 +3,6 @@
#include "types.h"
-#define TOAD_STAR_1_REQUIREMENT 12
-#define TOAD_STAR_2_REQUIREMENT 25
-#define TOAD_STAR_3_REQUIREMENT 35
-
-#define TOAD_STAR_1_DIALOG 82
-#define TOAD_STAR_2_DIALOG 76
-#define TOAD_STAR_3_DIALOG 83
-
-#define TOAD_STAR_1_DIALOG_AFTER 154
-#define TOAD_STAR_2_DIALOG_AFTER 155
-#define TOAD_STAR_3_DIALOG_AFTER 156
-
-
-enum ToadMessageStates {
- TOAD_MESSAGE_FADED,
- TOAD_MESSAGE_OPAQUE,
- TOAD_MESSAGE_OPACIFYING,
- TOAD_MESSAGE_FADING,
- TOAD_MESSAGE_TALKING
-};
-
-enum UnlockDoorStarStates {
- UNLOCK_DOOR_STAR_RISING,
- UNLOCK_DOOR_STAR_WAITING,
- UNLOCK_DOOR_STAR_SPAWNING_PARTICLES,
- UNLOCK_DOOR_STAR_DONE
-};
-
extern struct GraphNodeObject D_80339FE0;
extern struct MarioBodyState gBodyStates[2];
diff --git a/src/game/moving_texture.c b/src/game/moving_texture.c
@@ -445,7 +445,7 @@ Gfx *movtex_gen_from_quad(s16 y, struct MovtexQuad *quad) {
// Only add commands to change the texture when necessary
if (textureId != gMovetexLastTextureId) {
- if (textureId == TEXTURE_MIST) { // an G_IM_FMT_IA texture
+ if (textureId == TEXTURE_MIST) { // an ia16 texture
if (0) {
}
gDPSetTextureImage(gfx++, G_IM_FMT_IA, G_IM_SIZ_16b, 1, gMovtexIdToTexture[textureId]);
diff --git a/src/game/obj_behaviors.c b/src/game/obj_behaviors.c
@@ -27,62 +27,98 @@
#include "envfx_bubbles.h"
#include "ingame_menu.h"
#include "interaction.h"
+#include "level_table.h"
+#include "dialog_ids.h"
+#include "course_table.h"
+
+/**
+ * @file obj_behaviors.c
+ * This file contains a portion of the obj behaviors and many helper functions for those
+ * specific behaviors. Few functions besides the bhv_ functions are used elsewhere in the repo.
+ */
#define o gCurrentObject
-#define OBJ_COL_FLAG_GROUNDED (1 << 0)
-#define OBJ_COL_FLAG_HIT_WALL (1 << 1)
+#define OBJ_COL_FLAG_GROUNDED (1 << 0)
+#define OBJ_COL_FLAG_HIT_WALL (1 << 1)
#define OBJ_COL_FLAG_UNDERWATER (1 << 2)
-#define OBJ_COL_FLAG_NO_Y_VEL (1 << 3)
-#define OBJ_COL_FLAGS_LANDED (OBJ_COL_FLAG_GROUNDED | OBJ_COL_FLAG_NO_Y_VEL)
+#define OBJ_COL_FLAG_NO_Y_VEL (1 << 3)
+#define OBJ_COL_FLAGS_LANDED (OBJ_COL_FLAG_GROUNDED | OBJ_COL_FLAG_NO_Y_VEL)
+
+/**
+ * Current object floor as defined in object_step.
+ */
+static struct Surface *sObjFloor;
+
+/**
+ * Set to false when an object close to the floor should not be oriented in reference
+ * to it. Happens with boulder, falling pillar, and the rolling snowman body.
+ */
+static s8 sOrientObjWithFloor = TRUE;
-struct Surface *D_803600E0;
+/**
+ * Keeps track of Mario's previous non-zero room.
+ * Helps keep track of room when Mario is over an object.
+ */
+s16 sPrevCheckMarioRoom = 0;
-/* DATA */
-s8 D_80331500 = 1;
-s16 D_80331504 = 0;
-s8 D_80331508 = 0;
-s8 D_8033150C = 0;
-s8 D_80331510 = 0;
+/**
+ * Tracks whether or not Yoshi has walked/jumped off the roof.
+ */
+s8 sYoshiDead = FALSE;
extern void *ccm_seg7_trajectory_snowman;
extern void *inside_castle_seg7_trajectory_mips;
-void func_802E2F40(void) {
- D_80331508 = 0;
+/**
+ * Resets yoshi as spawned/despawned upon new file select.
+ * Possibly a function with stubbed code.
+ */
+void set_yoshi_as_not_dead(void) {
+ sYoshiDead = FALSE;
}
-Gfx *func_802E2F58(s32 arg0, struct Object *arg1, UNUSED s32 arg2) {
- Gfx *sp34;
- Gfx *sp30;
- struct Object *sp2c;
- struct Object *sp28;
- UNUSED struct Object *sp24;
- UNUSED s32 sp20;
+/**
+ * An unused geo function. Bears strong similarity to Geo18_802B7D44, and relates something
+ * of the opacity of an object to something else. Perhaps like, giving a parent object the same
+ * opacity?
+ */
+Gfx UNUSED *geo_obj_transparency_something(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx) {
+ Gfx *gfxHead;
+ Gfx *gfx;
+ struct Object *heldObject;
+ struct Object *obj;
+ UNUSED struct Object *unusedObject;
+ UNUSED s32 pad;
+
+ gfxHead = NULL;
+
+ if (callContext == GEO_CONTEXT_RENDER) {
+ heldObject = (struct Object *) gCurGraphNodeObject;
+ obj = (struct Object *) node;
+ unusedObject = (struct Object *) node;
- sp34 = NULL;
- if (arg0 == 1) {
- sp2c = (struct Object *) gCurGraphNodeObject;
- sp28 = arg1;
- sp24 = arg1;
if (gCurGraphNodeHeldObject != NULL) {
- sp2c = gCurGraphNodeHeldObject->objNode;
+ heldObject = gCurGraphNodeHeldObject->objNode;
}
- sp34 = alloc_display_list(3 * sizeof(Gfx));
- sp30 = sp34;
- sp28->header.gfx.node.flags =
- (sp28->header.gfx.node.flags & 0xFF) | 0x500; // sets bits 8, 10 and zeros upper byte
+ gfxHead = alloc_display_list(3 * sizeof(Gfx));
+ gfx = gfxHead;
+ obj->header.gfx.node.flags =
+ (obj->header.gfx.node.flags & 0xFF) | (GRAPH_NODE_TYPE_FUNCTIONAL | GRAPH_NODE_TYPE_400); // sets bits 8, 10 and zeros upper byte
- gDPSetEnvColor(sp30++, 0xFF, 0xFF, 0xFF, sp2c->oOpacity);
+ gDPSetEnvColor(gfx++, 255, 255, 255, heldObject->oOpacity);
- gSPEndDisplayList(sp30);
+ gSPEndDisplayList(gfx);
}
- return sp34;
+ return gfxHead;
}
+/**
+ * An absolute value function.
+ */
f32 absf_2(f32 f) {
if (f < 0) {
f *= -1.0f;
@@ -90,31 +126,22 @@ f32 absf_2(f32 f) {
return f;
}
-// f12 = objVelX
-// f14 = objVelZ
-// sp8 = nX
-// spc = nY
-// sp10 = nZ
-// sp14 = objYawX
-
-void TurnObjAwayFromSurface(f32 objVelX, f32 objVelZ, f32 nX, UNUSED f32 nY, f32 nZ, f32 *objYawX,
+/**
+ * Turns an object away from floors/walls that it runs into.
+ */
+void turn_obj_away_from_surface(f32 velX, f32 velZ, f32 nX, UNUSED f32 nY, f32 nZ, f32 *objYawX,
f32 *objYawZ) {
- *objYawX = (nZ * nZ - nX * nX) * objVelX / (nX * nX + nZ * nZ)
- - 2 * objVelZ * (nX * nZ) / (nX * nX + nZ * nZ);
+ *objYawX = (nZ * nZ - nX * nX) * velX / (nX * nX + nZ * nZ)
+ - 2 * velZ * (nX * nZ) / (nX * nX + nZ * nZ);
- *objYawZ = (nX * nX - nZ * nZ) * objVelZ / (nX * nX + nZ * nZ)
- - 2 * objVelX * (nX * nZ) / (nX * nX + nZ * nZ);
+ *objYawZ = (nX * nX - nZ * nZ) * velZ / (nX * nX + nZ * nZ)
+ - 2 * velX * (nX * nZ) / (nX * nX + nZ * nZ);
}
-// sp78 = objVelX
-// sp7c = objVelZ
-// sp70, f12 = objNewX
-// sp74, f14 = objY
-// sp80 = objNewZ
-// sp38 = objVelXCopy
-// sp34 = objVelZCopy
-
-s32 ObjFindWall(f32 objNewX, f32 objY, f32 objNewZ, f32 objVelX, f32 objVelZ) {
+/**
+ * Finds any wall collisions, applies them, and turns away from the surface.
+ */
+s32 obj_find_wall(f32 objNewX, f32 objY, f32 objNewZ, f32 objVelX, f32 objVelZ) {
struct WallCollisionData hitbox;
f32 wall_nX, wall_nY, wall_nZ, objVelXCopy, objVelZCopy, objYawX, objYawZ;
@@ -128,87 +155,93 @@ s32 ObjFindWall(f32 objNewX, f32 objY, f32 objNewZ, f32 objVelX, f32 objVelZ) {
o->oPosX = hitbox.x;
o->oPosY = hitbox.y;
o->oPosZ = hitbox.z;
+
wall_nX = hitbox.walls[0]->normal.x;
wall_nY = hitbox.walls[0]->normal.y;
wall_nZ = hitbox.walls[0]->normal.z;
+
objVelXCopy = objVelX;
objVelZCopy = objVelZ;
- TurnObjAwayFromSurface(objVelXCopy, objVelZCopy, wall_nX, wall_nY, wall_nZ, &objYawX, &objYawZ);
+
+ // Turns away from the first wall only.
+ turn_obj_away_from_surface(objVelXCopy, objVelZCopy, wall_nX, wall_nY, wall_nZ, &objYawX, &objYawZ);
+
o->oMoveAngleYaw = atan2s(objYawZ, objYawX);
- return 0;
+ return FALSE;
}
- return 1;
+ return TRUE;
}
-// sp48 = objFloor
-// sp4c = floorY
-// sp50 = objVelX
-// sp54 = objVelZ
-// sp38 = objVelXCopy
-// sp34 = objVelZCopy
-
-s32 TurnObjAwayFromAwkwardFloor(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ) {
+/**
+ * Turns an object away from steep floors, similarly to walls.
+ */
+s32 turn_obj_away_from_steep_floor(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ) {
f32 floor_nX, floor_nY, floor_nZ, objVelXCopy, objVelZCopy, objYawX, objYawZ;
if (objFloor == NULL) {
- //! TRUNC overflow exception after 36 minutes
+ //! (OOB Object Crash) TRUNC overflow exception after 36 minutes
o->oMoveAngleYaw += 32767.999200000002; /* ¯\_(ツ)_/¯ */
- return 0;
+ return FALSE;
}
floor_nX = objFloor->normal.x;
floor_nY = objFloor->normal.y;
floor_nZ = objFloor->normal.z;
+ // If the floor is steep and we are below it (i.e. walking into it), turn away from the floor.
if (floor_nY < 0.5 && floorY > o->oPosY) {
objVelXCopy = objVelX;
objVelZCopy = objVelZ;
- TurnObjAwayFromSurface(objVelXCopy, objVelZCopy, floor_nX, floor_nY, floor_nZ, &objYawX,
+ turn_obj_away_from_surface(objVelXCopy, objVelZCopy, floor_nX, floor_nY, floor_nZ, &objYawX,
&objYawZ);
o->oMoveAngleYaw = atan2s(objYawZ, objYawX);
- return 0;
+ return FALSE;
}
- return 1;
+ return TRUE;
}
-// sp38 = obj
-// sp3c = normalX
-// sp40 = normalY
-// sp44 = normalZ
-
-void ObjOrientGraph(struct Object *obj, f32 normalX, f32 normalY, f32 normalZ) {
- Vec3f sp2c, sp20;
+/**
+ * Orients an object with the given normals, typically the surface under the object.
+ */
+void obj_orient_graph(struct Object *obj, f32 normalX, f32 normalY, f32 normalZ) {
+ Vec3f objVisualPosition, surfaceNormals;
Mat4 *throwMatrix;
- if (D_80331500 == 0) {
+ // Passes on orienting certain objects that shouldn't be oriented, like boulders.
+ if (sOrientObjWithFloor == FALSE) {
return;
}
- if ((obj->header.gfx.node.flags & 0x4) != 0) {
- return; // bit 2
+
+ // Passes on orienting billboard objects, i.e. coins, trees, etc.
+ if ((obj->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) != 0) {
+ return;
}
+
throwMatrix = alloc_display_list(sizeof(*throwMatrix));
+ // If out of memory, fail to try orienting the object.
if (throwMatrix == NULL) {
return;
}
- sp2c[0] = obj->oPosX;
- sp2c[1] = obj->oPosY + obj->oGraphYOffset;
- sp2c[2] = obj->oPosZ;
+ objVisualPosition[0] = obj->oPosX;
+ objVisualPosition[1] = obj->oPosY + obj->oGraphYOffset;
+ objVisualPosition[2] = obj->oPosZ;
- sp20[0] = normalX;
- sp20[1] = normalY;
- sp20[2] = normalZ;
+ surfaceNormals[0] = normalX;
+ surfaceNormals[1] = normalY;
+ surfaceNormals[2] = normalZ;
- mtxf_align_terrain_normal(*throwMatrix, sp20, sp2c, obj->oFaceAngleYaw);
+ mtxf_align_terrain_normal(*throwMatrix, surfaceNormals, objVisualPosition, obj->oFaceAngleYaw);
obj->header.gfx.throwMatrix = (void *) throwMatrix;
}
-// sp4 = floor_nY
-
-void CalcObjFriction(f32 *objFriction, f32 floor_nY) {
+/**
+ * Determines an object's forward speed multiplier.
+ */
+void calc_obj_friction(f32 *objFriction, f32 floor_nY) {
if (floor_nY < 0.2 && o->oFriction < 0.9999) {
*objFriction = 0;
} else {
@@ -216,20 +249,16 @@ void CalcObjFriction(f32 *objFriction, f32 floor_nY) {
}
}
-// sp28 = objFloor
-// sp2c = objFloorY
-// sp30 = objVelX
-// sp34 = objVelZ
-// sp24 = floor_nX
-// sp20 = floor_nY
-// sp1c = floor_nZ
-
-void CalcNewObjVelAndPosY(struct Surface *objFloor, f32 objFloorY, f32 objVelX, f32 objVelZ) {
+/**
+ * Updates an objects speed for gravity and updates Y position.
+ */
+void calc_new_obj_vel_and_pos_y(struct Surface *objFloor, f32 objFloorY, f32 objVelX, f32 objVelZ) {
f32 floor_nX = objFloor->normal.x;
f32 floor_nY = objFloor->normal.y;
f32 floor_nZ = objFloor->normal.z;
f32 objFriction;
+ // Caps vertical speed with a "terminal velocity".
o->oVelY -= o->oGravity;
if (o->oVelY > 75.0) {
o->oVelY = 75.0;
@@ -239,8 +268,12 @@ void CalcNewObjVelAndPosY(struct Surface *objFloor, f32 objFloorY, f32 objVelX,
}
o->oPosY += o->oVelY;
+
+ //Snap the object up to the floor.
if (o->oPosY < objFloorY) {
o->oPosY = objFloorY;
+
+ // Bounces an object if the ground is hit fast enough.
if (o->oVelY < -17.5) {
o->oVelY = -(o->oVelY / 2.0f);
} else {
@@ -248,15 +281,18 @@ void CalcNewObjVelAndPosY(struct Surface *objFloor, f32 objFloorY, f32 objVelX,
}
}
- //! potential TRUNC crash
+ //! (Obj Position Crash) If you got an object with height past 2^31, the game would crash.
if ((s32) o->oPosY >= (s32) objFloorY && (s32) o->oPosY < (s32) objFloorY + 37) {
- ObjOrientGraph(o, floor_nX, floor_nY, floor_nZ);
+ obj_orient_graph(o, floor_nX, floor_nY, floor_nZ);
+
+ // Adds horizontal component of gravity for horizontal speed.
objVelX += floor_nX * (floor_nX * floor_nX + floor_nZ * floor_nZ)
/ (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * o->oGravity
* 2;
objVelZ += floor_nZ * (floor_nX * floor_nX + floor_nZ * floor_nZ)
/ (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * o->oGravity
* 2;
+
if (objVelX < 0.000001 && objVelX > -0.000001) {
objVelX = 0;
}
@@ -268,22 +304,12 @@ void CalcNewObjVelAndPosY(struct Surface *objFloor, f32 objFloorY, f32 objVelX,
o->oMoveAngleYaw = atan2s(objVelZ, objVelX);
}
- CalcObjFriction(&objFriction, floor_nY);
+ calc_obj_friction(&objFriction, floor_nY);
o->oForwardVel = sqrtf(objVelX * objVelX + objVelZ * objVelZ) * objFriction;
}
}
-// sp28 = objFloor
-// sp2c = floorY
-// sp30 = objVelX
-// sp34 = objVelZ
-// sp38 = waterY
-// sp24 = floor_nX
-// sp20 = floor_nY
-// sp1c = floor_nZ
-// sp18 = netYAccel
-
-void CalcNewObjVelAndPosYUnderwater(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ,
+void calc_new_obj_vel_and_pos_y_underwater(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ,
f32 waterY) {
f32 floor_nX = objFloor->normal.x;
f32 floor_nY = objFloor->normal.y;
@@ -291,6 +317,8 @@ void CalcNewObjVelAndPosYUnderwater(struct Surface *objFloor, f32 floorY, f32 ob
f32 netYAccel = (1.0f - o->oBuoyancy) * (-1.0f * o->oGravity);
o->oVelY -= netYAccel;
+
+ // Caps vertical speed with a "terminal velocity".
if (o->oVelY > 75.0) {
o->oVelY = 75.0;
}
@@ -299,8 +327,12 @@ void CalcNewObjVelAndPosYUnderwater(struct Surface *objFloor, f32 floorY, f32 ob
}
o->oPosY += o->oVelY;
+
+ //Snap the object up to the floor.
if (o->oPosY < floorY) {
o->oPosY = floorY;
+
+ // Bounces an object if the ground is hit fast enough.
if (o->oVelY < -17.5) {
o->oVelY = -(o->oVelY / 2);
} else {
@@ -308,12 +340,15 @@ void CalcNewObjVelAndPosYUnderwater(struct Surface *objFloor, f32 floorY, f32 ob
}
}
- if (o->oForwardVel > 12.5 && (waterY + 30.0f) > o->oPosY && waterY - 30.0f < o->oPosY) {
+ // If moving fast near the surface of the water, flip vertical speed? To emulate skipping?
+ if (o->oForwardVel > 12.5 && (waterY + 30.0f) > o->oPosY && (waterY - 30.0f) < o->oPosY) {
o->oVelY = -o->oVelY;
}
if ((s32) o->oPosY >= (s32) floorY && (s32) o->oPosY < (s32) floorY + 37) {
- ObjOrientGraph(o, floor_nX, floor_nY, floor_nZ);
+ obj_orient_graph(o, floor_nX, floor_nY, floor_nZ);
+
+ // Adds horizontal component of gravity for horizontal speed.
objVelX += floor_nX * (floor_nX * floor_nX + floor_nZ * floor_nZ)
/ (floor_nX * floor_nX + floor_nY * floor_nY + floor_nZ * floor_nZ) * netYAccel * 2;
objVelZ += floor_nZ * (floor_nX * floor_nX + floor_nZ * floor_nZ)
@@ -334,14 +369,17 @@ void CalcNewObjVelAndPosYUnderwater(struct Surface *objFloor, f32 floorY, f32 ob
if (objVelX != 0 || objVelZ != 0) {
o->oMoveAngleYaw = atan2s(objVelZ, objVelX);
}
+
+ // Decreases both vertical velocity and forward velocity. Likely so that skips above
+ // don't loop infinitely.
o->oForwardVel = sqrtf(objVelX * objVelX + objVelZ * objVelZ) * 0.8;
o->oVelY *= 0.8;
}
-// sp4 = xVel
-// sp0 = zVel
-
-void ObjUpdatePosVelXZ(void) {
+/**
+ * Updates an objects position from oForwardVel and oMoveAngleYaw.
+ */
+void obj_update_pos_vel_xz(void) {
f32 xVel = o->oForwardVel * sins(o->oMoveAngleYaw);
f32 zVel = o->oForwardVel * coss(o->oMoveAngleYaw);
@@ -349,92 +387,105 @@ void ObjUpdatePosVelXZ(void) {
o->oPosZ += zVel;
}
-// sp20 = waterY
-// sp24 = objY
-// sp1c = globalTimer
-
-void ObjSplash(s32 waterY, s32 objY) {
+/**
+ * Generates splashes if at surface of water, entering water, or bubbles
+ * if underwater.
+ */
+void obj_splash(s32 waterY, s32 objY) {
u32 globalTimer = gGlobalTimer;
+
+ // Spawns waves if near surface of water and plays a noise if entering.
if ((f32)(waterY + 30) > o->oPosY && o->oPosY > (f32)(waterY - 30)) {
spawn_object(o, MODEL_WATER_WAVES_SURF, bhvObjectWaterWave);
+
if (o->oVelY < -20.0f) {
PlaySound2(SOUND_OBJ_DIVING_INTO_WATER);
}
}
+
+ // Spawns bubbles if underwater.
if ((objY + 50) < waterY && (globalTimer & 0x1F) == 0) {
- spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvObjectBubble); /* 0x1F is bits 4-0 */
+ spawn_object(o, MODEL_WHITE_PARTICLE_SMALL, bhvObjectBubble);
}
}
-// sp3c = objX
-// sp38 = objY
-// sp34 = objZ
-// sp28 = objVelX
-// sp24 = objVelZ
-// sp30 = floorY
-// sp2c = waterY
-// sp22 = collisionFlags
-
-s32 ObjectStep(void) {
+/**
+ * Generic object move function. Handles walls, water, floors, and gravity.
+ * Returns flags for certain interactions.
+ */
+s32 object_step(void) {
f32 objX = o->oPosX;
f32 objY = o->oPosY;
f32 objZ = o->oPosZ;
+
f32 floorY;
f32 waterY = -10000.0;
+
f32 objVelX = o->oForwardVel * sins(o->oMoveAngleYaw);
f32 objVelZ = o->oForwardVel * coss(o->oMoveAngleYaw);
+
s16 collisionFlags = 0;
- if (ObjFindWall(objX + objVelX, objY, objZ + objVelZ, objVelX, objVelZ) == 0) {
+ // Find any wall collisions, receive the push, and set the flag.
+ if (obj_find_wall(objX + objVelX, objY, objZ + objVelZ, objVelX, objVelZ) == 0) {
collisionFlags += OBJ_COL_FLAG_HIT_WALL;
}
- floorY = find_floor(objX + objVelX, objY, objZ + objVelZ, &D_803600E0);
- if (TurnObjAwayFromAwkwardFloor(D_803600E0, floorY, objVelX, objVelZ) == 1) {
+
+ floorY = find_floor(objX + objVelX, objY, objZ + objVelZ, &sObjFloor);
+ if (turn_obj_away_from_steep_floor(sObjFloor, floorY, objVelX, objVelZ) == 1) {
waterY = find_water_level(objX + objVelX, objZ + objVelZ);
if (waterY > objY) {
- CalcNewObjVelAndPosYUnderwater(D_803600E0, floorY, objVelX, objVelZ, waterY);
+ calc_new_obj_vel_and_pos_y_underwater(sObjFloor, floorY, objVelX, objVelZ, waterY);
collisionFlags += OBJ_COL_FLAG_UNDERWATER;
} else {
- CalcNewObjVelAndPosY(D_803600E0, floorY, objVelX, objVelZ);
+ calc_new_obj_vel_and_pos_y(sObjFloor, floorY, objVelX, objVelZ);
}
} else {
+ // Treat any awkward floors similar to a wall.
collisionFlags +=
- ((collisionFlags & OBJ_COL_FLAG_HIT_WALL) ^ OBJ_COL_FLAG_HIT_WALL); /* bit 1 = 1 */
+ ((collisionFlags & OBJ_COL_FLAG_HIT_WALL) ^ OBJ_COL_FLAG_HIT_WALL);
}
- ObjUpdatePosVelXZ();
+
+ obj_update_pos_vel_xz();
if ((s32) o->oPosY == (s32) floorY) {
collisionFlags += OBJ_COL_FLAG_GROUNDED;
}
+
if ((s32) o->oVelY == 0) {
collisionFlags += OBJ_COL_FLAG_NO_Y_VEL;
}
- ObjSplash((s32) waterY, (s32) o->oPosY);
+ // Generate a splash if in water.
+ obj_splash((s32) waterY, (s32) o->oPosY);
return collisionFlags;
}
-// sp1e = collisionFlags
-
-s32 func_802E4204(void) {
+/**
+ * Takes an object step but does not orient with the object's floor.
+ * Used for boulders, falling pillars, and the rolling snowman body.
+ *
+ * TODO: Fix fake EU matching.
+ */
+s32 object_step_without_floor_orient(void) {
#ifdef VERSION_EU
s32 collisionFlags = 0;
#else
s16 collisionFlags = 0;
#endif
- D_80331500 = 0;
- collisionFlags = ObjectStep();
- D_80331500 = 1;
+ sOrientObjWithFloor = FALSE;
+ collisionFlags = object_step();
+ sOrientObjWithFloor = TRUE;
return collisionFlags;
}
/**
- Uses an object's forward velocity and yaw to move its X, Y, and Z positions.
- This does accept an object as an argument, though it is always called with `o`.
- If it wasn't called with `o`, it would modify `o`'s X and Z velocities based on
- `obj`'s forward velocity and yaw instead of `o`'s, and wouldn't update `o`'s
- position.
-*/
+ * Uses an object's forward velocity and yaw to move its X, Y, and Z positions.
+ * This does accept an object as an argument, though it is always called with `o`.
+ * If it wasn't called with `o`, it would modify `o`'s X and Z velocities based on
+ * `obj`'s forward velocity and yaw instead of `o`'s, and wouldn't update `o`'s
+ * position.
+ */
void obj_move_xyz_using_fvel_and_yaw(struct Object *obj) {
o->oVelX = obj->oForwardVel * sins(obj->oMoveAngleYaw);
o->oVelZ = obj->oForwardVel * coss(obj->oMoveAngleYaw);
@@ -444,8 +495,9 @@ void obj_move_xyz_using_fvel_and_yaw(struct Object *obj) {
obj->oPosZ += o->oVelZ;
}
-// sp18 = arg2
-
+/**
+ * Checks if a point is within distance from Mario's graphical position. Test is exclusive.
+ */
s32 is_point_within_radius_of_mario(f32 x, f32 y, f32 z, s32 dist) {
f32 mGfxX = gMarioObject->header.gfx.pos[0];
f32 mGfxY = gMarioObject->header.gfx.pos[1];
@@ -453,75 +505,64 @@ s32 is_point_within_radius_of_mario(f32 x, f32 y, f32 z, s32 dist) {
if ((x - mGfxX) * (x - mGfxX) + (y - mGfxY) * (y - mGfxY) + (z - mGfxZ) * (z - mGfxZ)
< (f32)(dist * dist)) {
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
-// sp14 = x
-// sp18 = y
-// sp1c = z
-// spc = objX
-// sp8 = objY
-// sp4 = objZ
-
-s32 IsPointCloseToObject(struct Object *obj, f32 x, f32 y, f32 z, s32 dist) {
+/**
+ * Checks whether a point is within distance of a given point. Test is exclusive.
+ */
+s32 is_point_close_to_object(struct Object *obj, f32 x, f32 y, f32 z, s32 dist) {
f32 objX = obj->oPosX;
f32 objY = obj->oPosY;
f32 objZ = obj->oPosZ;
if ((x - objX) * (x - objX) + (y - objY) * (y - objY) + (z - objZ) * (z - objZ)
< (f32)(dist * dist)) {
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
-// sp28 = obj
-// sp2c = arg1
-// sp24 = objX
-// sp20 = objY
-// sp1c = objZ
-
-void SetObjectVisibility(struct Object *obj, s32 arg1) {
+/**
+ * Sets an object as visible if within a certain distance of Mario's graphical position.
+ */
+void set_object_visibility(struct Object *obj, s32 dist) {
f32 objX = obj->oPosX;
f32 objY = obj->oPosY;
f32 objZ = obj->oPosZ;
- if (is_point_within_radius_of_mario(objX, objY, objZ, arg1) == 1) {
- obj->header.gfx.node.flags &= ~0x10; /* bit 4 = 0 */
+ if (is_point_within_radius_of_mario(objX, objY, objZ, dist) == TRUE) {
+ obj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;
} else {
- obj->header.gfx.node.flags |= 0x10; /* bit 4 = 1 */
+ obj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;
}
}
-// sp28 = obj
-// sp2c = homeX
-// sp30 = y
-// sp34 = homeZ
-
-s32 ObjLeaveIfMarioIsNearHome(struct Object *obj, f32 homeX, f32 y, f32 homeZ, s32 dist) {
+/**
+ * Turns an object towards home if Mario is not near to it.
+ */
+s32 obj_return_home_if_safe(struct Object *obj, f32 homeX, f32 y, f32 homeZ, s32 dist) {
f32 homeDistX = homeX - obj->oPosX;
f32 homeDistZ = homeZ - obj->oPosZ;
- s16 angleAwayFromHome = atan2s(homeDistZ, homeDistX);
+ s16 angleTowardsHome = atan2s(homeDistZ, homeDistX);
- if (is_point_within_radius_of_mario(homeX, y, homeZ, dist) == 1) {
- return 1;
+ if (is_point_within_radius_of_mario(homeX, y, homeZ, dist) == TRUE) {
+ return TRUE;
} else {
- obj->oMoveAngleYaw = approach_s16_symmetric(obj->oMoveAngleYaw, angleAwayFromHome, 320);
+ obj->oMoveAngleYaw = approach_s16_symmetric(obj->oMoveAngleYaw, angleTowardsHome, 320);
}
- return 0;
+ return FALSE;
}
-// sp28 = obj
-// sp2c = homeX
-// sp30 = homeY
-// sp34 = homeZ
-
-void ObjDisplaceHome(struct Object *obj, f32 homeX, UNUSED f32 homeY, f32 homeZ, s32 baseDisp) {
+/**
+ * Randomly displaces an objects home if RNG says to, and turns the object towards its home.
+ */
+void obj_return_and_displace_home(struct Object *obj, f32 homeX, UNUSED f32 homeY, f32 homeZ, s32 baseDisp) {
s16 angleToNewHome;
f32 homeDistX, homeDistZ;
@@ -536,24 +577,25 @@ void ObjDisplaceHome(struct Object *obj, f32 homeX, UNUSED f32 homeY, f32 homeZ,
obj->oMoveAngleYaw = approach_s16_symmetric(obj->oMoveAngleYaw, angleToNewHome, 320);
}
-s32 func_802E46C0(u32 arg0, u32 arg1, s16 arg2) {
- s16 sp6 = (u16) arg1 - (u16) arg0;
+/**
+ * A series of checks using sin and cos to see if a given angle is facing in the same direction
+ * of a given angle, within a certain range.
+ */
+s32 obj_check_if_facing_toward_angle(u32 base, u32 goal, s16 range) {
+ s16 dAngle = (u16) goal - (u16) base;
- if (((f32) sins(-arg2) < (f32) sins(sp6)) && ((f32) sins(sp6) < (f32) sins(arg2))
- && (coss(sp6) > 0)) {
- return 1;
+ if (((f32) sins(-range) < (f32) sins(dAngle)) && ((f32) sins(dAngle) < (f32) sins(range))
+ && (coss(dAngle) > 0)) {
+ return TRUE;
}
- return 0;
+ return FALSE;
}
-// sp60= arg0
-// sp64 = x
-// sp68 = y
-// sp6c = z
-// sp38 = hitbox
-
-s32 func_802E478C(Vec3f dist, f32 x, f32 y, f32 z, f32 arg4) {
+/**
+ * Finds any wall collisions and returns what the displacement vector would be.
+ */
+s32 obj_find_wall_displacement(Vec3f dist, f32 x, f32 y, f32 z, f32 radius) {
struct WallCollisionData hitbox;
UNUSED u8 filler[0x20];
@@ -561,21 +603,23 @@ s32 func_802E478C(Vec3f dist, f32 x, f32 y, f32 z, f32 arg4) {
hitbox.y = y;
hitbox.z = z;
hitbox.offsetY = 10.0f;
- hitbox.radius = arg4;
+ hitbox.radius = radius;
+
if (find_wall_collisions(&hitbox) != 0) {
dist[0] = hitbox.x - x;
dist[1] = hitbox.y - y;
dist[2] = hitbox.z - z;
- return 1;
+ return TRUE;
} else {
- return 0;
+ return FALSE;
}
}
-// sp20 = obj
-// sp24 = nCoins
-
-void ObjSpawnYellowCoins(struct Object *obj, s8 nCoins) {
+/**
+ * Spawns a number of coins at the location of an object
+ * with a random forward velocity, y velocity, and direction.
+ */
+void obj_spawn_yellow_coins(struct Object *obj, s8 nCoins) {
struct Object *coin;
s8 count;
@@ -587,65 +631,73 @@ void ObjSpawnYellowCoins(struct Object *obj, s8 nCoins) {
}
}
-s32 ObjFlickerAndDisappear(struct Object *obj, s16 arg1) {
- if (obj->oTimer < arg1) {
- return 0;
+/**
+ * Controls whether certain objects should flicker/when to despawn.
+ */
+s32 obj_flicker_and_disappear(struct Object *obj, s16 lifeSpan) {
+ if (obj->oTimer < lifeSpan) {
+ return FALSE;
}
- if (obj->oTimer < arg1 + 40) {
+
+ if (obj->oTimer < lifeSpan + 40) {
if (obj->oTimer % 2 != 0) {
- obj->header.gfx.node.flags |= 0x10; /* bit 4 = 1 */
+ obj->header.gfx.node.flags |= GRAPH_RENDER_INVISIBLE;
} else {
- obj->header.gfx.node.flags &= ~0x10; /* bit 4 = 0 */
+ obj->header.gfx.node.flags &= ~GRAPH_RENDER_INVISIBLE;
}
} else {
obj->activeFlags = 0;
- return 1;
+ return TRUE;
}
- return 0;
+ return FALSE;
}
-s8 func_802E49A4(s16 arg0) {
- s16 sp6;
+/**
+ * Checks if a given room is Mario's current room, even if on an object.
+ */
+s8 current_mario_room_check(s16 room) {
+ s16 result;
+ // Since object surfaces have room 0, this tests if the surface is an
+ // object first and uses the last room if so.
if (gMarioCurrentRoom == 0) {
- if (arg0 == D_80331504) {
- return 1;
+ if (room == sPrevCheckMarioRoom) {
+ return TRUE;
} else {
- return 0;
+ return FALSE;
}
} else {
- if (arg0 == gMarioCurrentRoom) {
- sp6 = 1;
+ if (room == gMarioCurrentRoom) {
+ result = TRUE;
} else {
- sp6 = 0;
+ result = FALSE;
}
- D_80331504 = gMarioCurrentRoom;
+ sPrevCheckMarioRoom = gMarioCurrentRoom;
}
- return sp6;
+ return result;
}
-// sp20 = arg0
-// sp24 = arg1
-// sp28 = arg2
-// sp2c = arg3
-
-s16 func_802E4A38(s32 *arg0, s16 dialogID, f32 arg2, s32 arg3) {
- s16 sp1e;
-
- if ((is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, (s32) arg2) == 1
- && func_802E46C0(o->oFaceAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x1000) == 1
- && func_802E46C0(o->oMoveAngleYaw, o->oAngleToMario, 0x1000) == 1)
- || (*arg0 == 1)) {
- *arg0 = 1;
- if (set_mario_npc_dialog(arg3) == 2) {
- sp1e = cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, dialogID);
- if (sp1e != 0) {
+/**
+ * Triggers dialog when Mario is facing an object and controls it while in the dialog.
+ */
+s16 trigger_obj_dialog_when_facing(s32 *inDialog, s16 dialogID, f32 dist, s32 actionArg) {
+ s16 dialogueResponse;
+
+ if ((is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, (s32) dist) == 1
+ && obj_check_if_facing_toward_angle(o->oFaceAngleYaw, gMarioObject->header.gfx.angle[1] + 0x8000, 0x1000) == 1
+ && obj_check_if_facing_toward_angle(o->oMoveAngleYaw, o->oAngleToMario, 0x1000) == 1)
+ || (*inDialog == 1)) {
+ *inDialog = 1;
+
+ if (set_mario_npc_dialog(actionArg) == 2) { //If Mario is speaking.
+ dialogueResponse = cutscene_object_with_dialog(CUTSCENE_DIALOG_1, o, dialogID);
+ if (dialogueResponse != 0) {
set_mario_npc_dialog(0);
- *arg0 = 0;
- return sp1e;
+ *inDialog = 0;
+ return dialogueResponse;
}
return 0;
}
@@ -654,17 +706,21 @@ s16 func_802E4A38(s32 *arg0, s16 dialogID, f32 arg2, s32 arg3) {
return 0;
}
-void ObjCheckFloorDeath(s16 collisionFlags, struct Surface *floor) {
+/**
+ *Checks if a floor is one that should cause an object to "die".
+ */
+void obj_check_floor_death(s16 collisionFlags, struct Surface *floor) {
if (floor == NULL) {
return;
}
- if ((collisionFlags & 0x1) == 1) /* bit 0 */
+ if ((collisionFlags & OBJ_COL_FLAG_GROUNDED) == 1)
{
switch (floor->type) {
case SURFACE_BURNING:
o->oAction = OBJ_ACT_LAVA_DEATH;
break;
+ //! @BUG Doesn't check for the vertical wind death floor.
case SURFACE_DEATH_PLANE:
o->oAction = OBJ_ACT_DEATH_PLANE_DEATH;
break;
@@ -674,15 +730,18 @@ void ObjCheckFloorDeath(s16 collisionFlags, struct Surface *floor) {
}
}
-// sp10 = arg0
-
-s32 ObjLavaDeath(void) {
+/**
+ * Controls an object dying in lava by creating smoke, sinking the object, playing
+ * audio, and eventually despawning it. Returns TRUE when the obj is dead.
+ */
+s32 obj_lava_death(void) {
struct Object *deathSmoke;
if (o->oTimer >= 31) {
o->activeFlags = 0;
- return 1;
+ return TRUE;
} else {
+ // Sinking effect
o->oPosY -= 10.0f;
}
@@ -695,42 +754,53 @@ s32 ObjLavaDeath(void) {
deathSmoke->oForwardVel = RandomFloat() * 10.0f;
}
- return 0;
+ return FALSE;
}
-// sp30 = arg0
-// sp34 = arg1
-// sp38 = arg2
-// sp3c = arg3
-
-void SpawnOrangeNumber(s8 arg0, s16 arg1, s16 arg2, s16 arg3) {
+/**
+ * Spawns an orange number object relatively, such as those that count up for secrets.
+ */
+void spawn_orange_number(s8 behParam, s16 relX, s16 relY, s16 relZ) {
struct Object *orangeNumber;
- if (arg0 >= 10) {
+ if (behParam >= 10) {
return;
}
- orangeNumber = spawn_object_relative(arg0, arg1, arg2, arg3, o, MODEL_NUMBER, bhvOrangeNumber);
+ orangeNumber = spawn_object_relative(behParam, relX, relY, relZ, o, MODEL_NUMBER, bhvOrangeNumber);
orangeNumber->oPosY += 25.0f;
}
-s32 Unknown802E4DF4(s16 *arg0) {
- if (*(arg0 + D_8033150C) == 0) {
- D_8033150C = 0;
- return 1;
- }
-
- if ((*(arg0 + D_8033150C) & gPlayer3Controller->buttonPressed) != 0) {
- D_8033150C++;
- D_80331510 = 0;
- } else if (D_80331510 == 10 || gPlayer3Controller->buttonPressed != 0) {
- D_8033150C = 0;
- D_80331510 = 0;
- return 0;
- }
- D_80331510++;
+/**
+ * Unused variables for debug_sequence_tracker.
+ */
+s8 sDebugSequenceTracker = 0;
+s8 sDebugTimer = 0;
- return 0;
+/**
+ * Unused presumably debug function that tracks for a sequence of inputs,
+ * perhaps for the Konami code sequence of inputs.
+ */
+s32 UNUSED debug_sequence_tracker(s16 debugInputSequence[]) {
+ // If end of sequence reached, return true.
+ if (debugInputSequence[sDebugSequenceTracker] == 0) {
+ sDebugSequenceTracker = 0;
+ return TRUE;
+ }
+
+ // If the third controller button pressed is next in sequence, reset timer and progress to next value.
+ if ((debugInputSequence[sDebugSequenceTracker] & gPlayer3Controller->buttonPressed) != 0) {
+ sDebugSequenceTracker++;
+ sDebugTimer = 0;
+ // If wrong input or timer reaches 10, reset sequence progress.
+ } else if (sDebugTimer == 10 || gPlayer3Controller->buttonPressed != 0) {
+ sDebugSequenceTracker = 0;
+ sDebugTimer = 0;
+ return FALSE;
+ }
+ sDebugTimer++;
+
+ return FALSE;
}
#include "behaviors/moving_coin.inc.c"
diff --git a/src/game/obj_behaviors.h b/src/game/obj_behaviors.h
@@ -5,48 +5,12 @@
#include "object_helpers2.h"
#include "engine/surface_collision.h"
-extern struct Surface *D_803600E0;
-
-extern s8 D_80331500;
-extern s16 D_80331504;
-extern s8 D_80331508;
-extern s8 D_8033150C;
-extern s8 D_80331510;
-
extern u8 bob_seg7_metal_ball_path0[];
extern u8 ttm_seg7_trajectory_070170A0[];
extern u8 bob_seg7_metal_ball_path1[];
-void func_802E2F40(void);
-Gfx *func_802E2F58(s32 arg0, struct Object *arg1, UNUSED s32 arg2); /* unused */
-f32 absf_2(f32 f);
-void TurnObjAwayFromSurface(f32 objVelX, f32 objVelZ, f32 nX, UNUSED f32 nY, f32 nZ, f32 *objYawX, f32 *objYawZ);
-s32 ObjFindWall(f32 objNewX, f32 objY, f32 objNewZ, f32 objVelX, f32 objVelZ);
-s32 TurnObjAwayFromAwkwardFloor(struct Surface *objFloor, f32 floorY, f32 objVelX, f32 objVelZ);
-void ObjOrientGraph(struct Object *obj, f32 normalX, f32 normalY, f32 normalZ);
-void CalcObjFriction(f32 *objFriction, f32 floor_nY);
-void CalcNewObjVelAndPosY(struct Surface* objFloor, f32 objFloorY, f32 objVelX, f32 arg3);
-void CalcNewObjVelAndPosYUnderwater(struct Surface* objFloor, f32 floorY, f32 objVelX, f32 objVelZ, f32 waterY);
-void ObjUpdatePosVelXZ(void);
-void ObjSplash(s32 waterY, s32 objY);
-s32 ObjectStep(void);
-s32 func_802E4204(void);
-void obj_move_xyz_using_fvel_and_yaw(struct Object* obj);
-s32 is_point_within_radius_of_mario(f32 x, f32 y, f32 z, s32 dist);
-s32 IsPointCloseToObject(struct Object* obj, f32 x, f32 y, f32 z, s32 dist);
-void SetObjectVisibility(struct Object* obj, s32 arg1);
-s32 ObjLeaveIfMarioIsNearHome(struct Object* obj, f32 arg1, f32 arg2, f32 arg3, s32 arg4);
-void ObjDisplaceHome(struct Object* obj, f32 homeX, UNUSED f32 homeY, f32 homeZ, s32 baseDisp);
-s32 func_802E46C0(u32 arg0, u32 arg1, s16 arg2);
-s32 func_802E478C(Vec3f dist, f32 x, f32 y, f32 z, f32 arg4);
-void ObjSpawnYellowCoins(struct Object *obj, s8 nCoins);
-s32 ObjFlickerAndDisappear(struct Object *obj, s16 arg1);
-s8 func_802E49A4(s16 arg0);
-s16 func_802E4A38(s32 *arg0, s16 arg1, f32 arg2, s32 arg3);
-void ObjCheckFloorDeath(s16 collisionFlags, struct Surface *floor);
-s32 ObjLavaDeath(void);
-void SpawnOrangeNumber(s8 arg0, s16 arg1, s16 arg2, s16 arg3);
-s32 Unknown802E4DF4(s16 *arg0); /* unused */
+void set_yoshi_as_not_dead(void);
+
s32 CoinStep(s16 *collisionFlagsPtr);
void MovingCoinFlickerLoop(void);
void CoinCollected(void);
@@ -93,15 +57,8 @@ void WhirlpoolOrientGraph(void);
void bhv_whirlpool_loop(void);
void bhv_jet_stream_loop(void);
void bhv_homing_amp_init(void);
-//void check_amp_attack(void);
-//void homing_amp_appear_loop(void);
-//void homing_amp_chase_loop(void);
-//void homing_amp_give_up_loop(void);
-//void amp_attack_cooldown_loop(void);
void bhv_homing_amp_loop(void);
void bhv_circling_amp_init(void);
-//void fixed_circling_amp_idle_loop(void);
-//void circling_amp_idle_loop(void);
void bhv_circling_amp_loop(void);
void bhv_butterfly_init(void);
void ButterflyStep(s32 speed);
@@ -123,8 +80,6 @@ void HootTurnToHome(void);
void HootAwakeLoop(void);
void bhv_hoot_loop(void);
void bhv_beta_holdable_object_init(void); /* unused */
-//void beta_holdable_object_drop(void); /* unused */
-//void beta_holdable_object_throw(void); /* unused */
void bhv_beta_holdable_object_loop(void); /* unused */
void bhv_object_bubble_init(void);
void bhv_object_bubble_loop(void);
diff --git a/src/game/obj_behaviors_2.c b/src/game/obj_behaviors_2.c
@@ -15,6 +15,7 @@
#include "obj_behaviors_2.h"
#include "audio/external.h"
#include "seq_ids.h"
+#include "dialog_ids.h"
#include "level_update.h"
#include "memory.h"
#include "platform_displacement.h"
@@ -28,6 +29,7 @@
#include "geo_misc.h"
#include "save_file.h"
#include "room.h"
+#include "level_table.h"
extern struct Animation *wiggler_seg5_anims_0500C874[];
extern struct Animation *spiny_egg_seg5_anims_050157E4[];
diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c
@@ -24,6 +24,8 @@
#include "interaction.h"
#include "object_list_processor.h"
#include "room.h"
+#include "level_table.h"
+#include "dialog_ids.h"
#include "object_helpers.h"
#include "object_helpers2.h"
@@ -63,7 +65,7 @@ Gfx *Geo18_8029D890(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]) {
return NULL;
}
-Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED s32 sp48) {
+Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED void *context) {
Gfx *sp3C, *sp38;
struct Object *sp34;
struct GraphNodeGenerated *sp30;
@@ -128,7 +130,7 @@ Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED s32 sp48) {
#endif
}
- gDPSetEnvColor(sp38++, 0xFF, 0xFF, 0xFF, sp28);
+ gDPSetEnvColor(sp38++, 255, 255, 255, sp28);
gSPEndDisplayList(sp38);
}
@@ -141,7 +143,11 @@ Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED s32 sp48) {
* executor passes the 3rd argument to a function that doesn't declare it. This is
* undefined behavior, but harmless in practice due to the o32 calling convention.
*/
-s32 geo_switch_anim_state(s32 run, struct GraphNode *node) {
+#ifdef AVOID_UB
+Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node, UNUSED void *context) {
+#else
+Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node) {
+#endif
struct Object *obj;
struct GraphNodeSwitchCase *switchCase;
@@ -166,11 +172,15 @@ s32 geo_switch_anim_state(s32 run, struct GraphNode *node) {
switchCase->selectedCase = obj->oAnimState;
}
- return 0;
+ return NULL;
}
//! @bug Same issue as geo_switch_anim_state.
-s32 geo_switch_area(s32 run, struct GraphNode *node) {
+#ifdef AVOID_UB
+Gfx *geo_switch_area(s32 run, struct GraphNode *node, UNUSED void *context) {
+#else
+Gfx *geo_switch_area(s32 run, struct GraphNode *node) {
+#endif
s16 sp26;
struct Surface *sp20;
UNUSED struct Object *sp1C =
@@ -199,7 +209,7 @@ s32 geo_switch_area(s32 run, struct GraphNode *node) {
switchCase->selectedCase = 0;
}
- return 0;
+ return NULL;
}
void func_8029D558(Mat4 a0, struct Object *a1) {
@@ -2058,7 +2068,7 @@ f32 random_f32_around_zero(f32 diameter) {
return RandomFloat() * diameter - diameter / 2.0f;
}
-f32 scale_object_random(struct Object *obj, f32 rangeLength, f32 minScale) {
+void scale_object_random(struct Object *obj, f32 rangeLength, f32 minScale) {
f32 scale = RandomFloat() * rangeLength + minScale;
scale_object_xyz(obj, scale, scale, scale);
}
@@ -2336,7 +2346,7 @@ s32 func_802A362C(s32 a0) {
return 0;
}
-s32 obj_call_action_function(void (*actionFunctions[])(void)) {
+void obj_call_action_function(void (*actionFunctions[])(void)) {
void (*actionFunction)(void) = actionFunctions[o->oAction];
actionFunction();
}
@@ -2781,7 +2791,7 @@ s32 mario_is_within_rectangle(s16 minX, s16 maxX, s16 minZ, s16 maxZ) {
return TRUE;
}
-s32 ShakeScreen(s32 sp18) {
+void ShakeScreen(s32 sp18) {
func_8027F440(sp18, o->oPosX, o->oPosY, o->oPosZ);
}
diff --git a/src/game/object_helpers.h b/src/game/object_helpers.h
@@ -165,9 +165,14 @@ extern s8 dddStatus;
// extern ? D_8033670C;
extern Gfx *Geo18_8029D890(s32 run, UNUSED struct GraphNode *node, f32 mtx[4][4]);
-extern Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED s32 sp48);
-extern s32 geo_switch_anim_state(s32 run, struct GraphNode *node);
-extern s32 geo_switch_area(s32 run, struct GraphNode *node);
+extern Gfx *Geo18_8029D924(s32 run, struct GraphNode *node, UNUSED void *context);
+#ifdef AVOID_UB
+extern Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node, void *context);
+extern Gfx *geo_switch_area(s32 run, struct GraphNode *node, void *context);
+#else
+extern Gfx *geo_switch_anim_state(s32 run, struct GraphNode *node);
+extern Gfx *geo_switch_area(s32 run, struct GraphNode *node);
+#endif
extern void func_8029D558(Mat4, struct Object *);
void apply_object_scale_to_matrix(struct Object *, Mat4, Mat4);
extern void func_8029D704(Mat4,Mat4,Mat4);
@@ -319,7 +324,7 @@ void obj_rotate_face_angle_using_vel(void);
extern s32 obj_follow_path(UNUSED s32);
extern void chain_segment_init(struct ChainSegment *);
extern f32 random_f32_around_zero(f32);
-f32 scale_object_random(struct Object*,f32,f32);
+void scale_object_random(struct Object*,f32,f32);
extern void translate_object_xyz_random(struct Object *, f32);
extern void translate_object_xz_random(struct Object *, f32);
// extern ? func_802A297C(?);
diff --git a/src/game/object_helpers2.h b/src/game/object_helpers2.h
@@ -3,6 +3,8 @@
#include "types.h"
+// TODO: join this together with object_helpers.h
+
#define WAYPOINT_FLAGS_END -1
#define WAYPOINT_FLAGS_INITIALIZED 0x8000
#define WAYPOINT_MASK_00FF 0x00FF
@@ -41,7 +43,7 @@ void func_802A3470(void);
extern s32 obj_is_mario_on_platform(void);
// extern ? obj_shake_y_until(?);
s32 func_802A362C(s32);
-s32 obj_call_action_function(void(*[])(void));
+void obj_call_action_function(void(*[])(void));
// extern ? func_802A36D8(?);
// extern ? Unknown802A3750(?);
s32 func_802A377C(s32);
@@ -70,7 +72,7 @@ s32 obj_update_dialog_with_cutscene(s32 arg0, s32 dialogFlags, s32 cutsceneTable
s32 obj_has_model(u16);
extern void obj_align_gfx_with_floor(void);
// extern ? mario_is_within_rectangle(?);
-s32 ShakeScreen(s32);
+void ShakeScreen(s32);
extern s32 attack_collided_non_mario_object(struct Object *obj);
s32 obj_was_attacked_or_ground_pounded(void);
void copy_object_behavior_params(struct Object*,struct Object*);
diff --git a/src/game/paintings.c b/src/game/paintings.c
@@ -894,7 +894,7 @@ void horizontal_painting_ripple(struct Painting *painting, struct Painting *pain
}
}
-Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, UNUSED s32 c) {
+Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, UNUSED void *context) {
struct GraphNodeGenerated *sp2C = (struct GraphNodeGenerated *) node;
s32 sp28 = (sp2C->parameter >> 8) & 0xFF;
s32 id = sp2C->parameter & 0xFF;
diff --git a/src/game/paintings.h b/src/game/paintings.h
@@ -132,7 +132,7 @@ extern float (*D_8035FFA4)[3];
extern struct Painting *ripplingPainting;
extern s8 dddStatus;
-extern Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, s32 c);
+extern Gfx *Geo18_802D5B98(s32 run, struct GraphNode *node, void *context);
extern Gfx *Geo18_802D5D0C(s32 run, struct GraphNode *node, f32 c[4][4]);
#endif /* PAINTINGS_H */
diff --git a/src/game/rendering_graph_node.c b/src/game/rendering_graph_node.c
@@ -157,7 +157,7 @@ static void geo_process_master_list_sub(struct GraphNodeMasterList *node) {
gDPSetRenderMode(gDisplayListHead++, modeList->modes[i], mode2List->modes[i]);
while (currList != NULL) {
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(currList->transform),
- G_MTX_MODELVIEW | G_MTX_LOAD);
+ G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_LOAD);
gSPDisplayList(gDisplayListHead++, currList->displayList);
currList = currList->next;
}
diff --git a/src/game/save_file.c b/src/game/save_file.c
@@ -8,6 +8,7 @@
#include "level_update.h"
#include "save_file.h"
#include "sound_init.h"
+#include "level_table.h"
#define MENU_DATA_MAGIC 0x4849
#define SAVE_FILE_MAGIC 0x4441
@@ -29,46 +30,15 @@ u8 gCurrCourseStarFlags = 0;
u8 gSpecialTripleJump = 0;
+#define STUB_LEVEL(_0, _1, courseenum, _3, _4, _5, _6, _7, _8) courseenum,
+#define DEFINE_LEVEL(_0, _1, courseenum, _3, _4, _5, _6, _7, _8, _9, _10) courseenum,
+
s8 gLevelToCourseNumTable[] = {
- COURSE_NONE, // LEVEL_UNKNOWN_1
- COURSE_NONE, // LEVEL_UNKNOWN_2
- COURSE_NONE, // LEVEL_UNKNOWN_3
- COURSE_BBH, // LEVEL_BBH
- COURSE_CCM, // LEVEL_CCM
- COURSE_NONE, // LEVEL_CASTLE
- COURSE_HMC, // LEVEL_HMC
- COURSE_SSL, // LEVEL_SSL
- COURSE_BOB, // LEVEL_BOB
- COURSE_SL, // LEVEL_SL
- COURSE_WDW, // LEVEL_WDW
- COURSE_JRB, // LEVEL_JRB
- COURSE_THI, // LEVEL_THI
- COURSE_TTC, // LEVEL_TTC
- COURSE_RR, // LEVEL_RR
- COURSE_NONE, // LEVEL_CASTLE_GROUNDS
- COURSE_BITDW, // LEVEL_BITDW
- COURSE_VCUTM, // LEVEL_VCUTM
- COURSE_BITFS, // LEVEL_BITFS
- COURSE_SA, // LEVEL_SA
- COURSE_BITS, // LEVEL_BITS
- COURSE_LLL, // LEVEL_LLL
- COURSE_DDD, // LEVEL_DDD
- COURSE_WF, // LEVEL_WF
- COURSE_CAKE_END, // LEVEL_ENDING
- COURSE_NONE, // LEVEL_CASTLE_COURTYARD
- COURSE_PSS, // LEVEL_PSS
- COURSE_COTMC, // LEVEL_COTMC
- COURSE_TOTWC, // LEVEL_TOTWC
- COURSE_BITDW, // LEVEL_BOWSER_1
- COURSE_WMOTR, // LEVEL_WMOTR
- COURSE_NONE, // LEVEL_UNKNOWN_32
- COURSE_BITFS, // LEVEL_BOWSER_2
- COURSE_BITS, // LEVEL_BOWSER_3
- COURSE_NONE, // LEVEL_UNKNOWN_35
- COURSE_TTM, // LEVEL_TTM
- COURSE_NONE, // LEVEL_UNKNOWN_37
- COURSE_NONE // LEVEL_UNKNOWN_38
+ #include "levels/level_defines.h"
};
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
+
STATIC_ASSERT(ARRAY_COUNT(gLevelToCourseNumTable) == LEVEL_COUNT - 1,
"change this array if you are adding levels");
diff --git a/src/game/save_file.h b/src/game/save_file.h
@@ -4,6 +4,8 @@
#include "types.h"
#include "area.h"
+#include "course_table.h"
+
#define EEPROM_SIZE 0x200
#define NUM_SAVE_FILES 4
diff --git a/src/game/screen_transition.c b/src/game/screen_transition.c
@@ -5,42 +5,42 @@
#include "game.h"
#include "engine/math_util.h"
#include "engine/graph_node.h"
+#include "screen_transition.h"
#include "memory.h"
#include "geo_misc.h"
-
#include "segment2.h"
-u8 D_8032FF60[4] = { 0 };
-u16 D_8032FF64[2] = { 0 };
+u8 sTransitionColorFadeCount[4] = { 0 };
+u16 sTransitionTextureFadeCount[2] = { 0 };
-s32 func_802CAAE0(s8 a0, u8 a1) {
- s32 sp4 = 0;
+s32 set_and_reset_transition_fade_timer(s8 fadeTimer, u8 transTime) {
+ s32 reset = FALSE;
- D_8032FF60[a0]++;
+ sTransitionColorFadeCount[fadeTimer]++;
- if (D_8032FF60[a0] == a1) {
- D_8032FF60[a0] = 0;
- D_8032FF64[a0] = 0;
- sp4 = 1;
+ if (sTransitionColorFadeCount[fadeTimer] == transTime) {
+ sTransitionColorFadeCount[fadeTimer] = 0;
+ sTransitionTextureFadeCount[fadeTimer] = 0;
+ reset = TRUE;
}
- return sp4;
+ return reset;
}
-u8 func_802CAB60(s8 a0, s8 a1, u8 a2) {
- u8 sp7;
+u8 set_transition_color_fade_alpha(s8 fadeType, s8 fadeTimer, u8 transTime) {
+ u8 time;
- switch (a0) {
+ switch (fadeType) {
case 0:
- sp7 = (f32) D_8032FF60[a1] * 255.0 / (f32)(a2 - 1) + 0.5;
+ time = (f32) sTransitionColorFadeCount[fadeTimer] * 255.0 / (f32)(transTime - 1) + 0.5; // fade in
break;
case 1:
- sp7 = (1.0 - D_8032FF60[a1] / (f32)(a2 - 1)) * 255.0 + 0.5;
+ time = (1.0 - sTransitionColorFadeCount[fadeTimer] / (f32)(transTime - 1)) * 255.0 + 0.5; // fade out
break;
}
- return sp7;
+ return time;
}
-Vtx *func_802CADB4(struct WarpTransitionData *transData, u8 alpha) {
+Vtx *vertex_transition_color(struct WarpTransitionData *transData, u8 alpha) {
Vtx *verts = alloc_display_list(4 * sizeof(*verts));
u8 r = transData->red;
u8 g = transData->green;
@@ -48,16 +48,16 @@ Vtx *func_802CADB4(struct WarpTransitionData *transData, u8 alpha) {
if (verts != NULL) {
make_vertex(verts, 0, 0, 0, -1, 0, 0, r, g, b, alpha);
- make_vertex(verts, 1, 320, 0, -1, 0, 0, r, g, b, alpha);
- make_vertex(verts, 2, 320, 240, -1, 0, 0, r, g, b, alpha);
- make_vertex(verts, 3, 0, 240, -1, 0, 0, r, g, b, alpha);
+ make_vertex(verts, 1, SCREEN_WIDTH, 0, -1, 0, 0, r, g, b, alpha);
+ make_vertex(verts, 2, SCREEN_WIDTH, SCREEN_HEIGHT, -1, 0, 0, r, g, b, alpha);
+ make_vertex(verts, 3, 0, SCREEN_HEIGHT, -1, 0, 0, r, g, b, alpha);
} else {
}
return verts;
}
-s32 func_802CAF38(s8 a0, u8 a1, struct WarpTransitionData *transData, u8 alpha) {
- Vtx *verts = func_802CADB4(transData, alpha);
+s32 dl_transition_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData, u8 alpha) {
+ Vtx *verts = vertex_transition_color(transData, alpha);
if (verts != NULL) {
gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen);
@@ -67,192 +67,192 @@ s32 func_802CAF38(s8 a0, u8 a1, struct WarpTransitionData *transData, u8 alpha)
gSPDisplayList(gDisplayListHead++, dl_draw_quad_verts_0123);
gSPDisplayList(gDisplayListHead++, dl_screen_transition_end);
}
- return func_802CAAE0(a0, a1);
+ return set_and_reset_transition_fade_timer(fadeTimer, transTime);
}
-s32 func_802CB0E4(s8 a0, u8 a1, struct WarpTransitionData *transData) {
- u8 alpha = func_802CAB60(1, a0, a1);
+s32 render_fade_transition_from_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData) {
+ u8 alpha = set_transition_color_fade_alpha(1, fadeTimer, transTime);
- return func_802CAF38(a0, a1, transData, alpha);
+ return dl_transition_color(fadeTimer, transTime, transData, alpha);
}
-s32 func_802CB140(s8 a0, u8 a1, struct WarpTransitionData *transData) {
- u8 alpha = func_802CAB60(0, a0, a1);
+s32 render_fade_transition_into_color(s8 fadeTimer, u8 transTime, struct WarpTransitionData *transData) {
+ u8 alpha = set_transition_color_fade_alpha(0, fadeTimer, transTime);
- return func_802CAF38(a0, a1, transData, alpha);
+ return dl_transition_color(fadeTimer, transTime, transData, alpha);
}
-s16 func_802CB19C(s8 a0, s8 a1, struct WarpTransitionData *transData) {
- f32 spC = transData->endCircleRadius - transData->startCircleRadius;
- f32 sp8 = D_8032FF60[a0] * spC / (f32)(a1 - 1);
- f32 sp4 = transData->startCircleRadius + sp8;
+s16 calc_tex_transition_radius(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) {
+ f32 texRadius = transData->endTexRadius - transData->startTexRadius;
+ f32 radiusTime = sTransitionColorFadeCount[fadeTimer] * texRadius / (f32)(transTime - 1);
+ f32 result = transData->startTexRadius + radiusTime;
- return sp4 + 0.5;
+ return (s16)(result + 0.5);;
}
-f32 func_802CB274(s8 a0, s8 a1, struct WarpTransitionData *transData) {
- f32 sp2C = transData->startCircleX;
- f32 sp28 = transData->startCircleY;
- f32 sp24 = transData->endCircleX;
- f32 sp20 = transData->endCircleY;
- f32 sp1C = sqrtf((sp2C - sp24) * (sp2C - sp24) + (sp28 - sp20) * (sp28 - sp20));
- f32 sp18 = (f32) D_8032FF60[a0] * sp1C / (f32)(a1 - 1);
+f32 calc_tex_transition_time(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData) {
+ f32 startX = transData->startTexX;
+ f32 startY = transData->startTexY;
+ f32 endX = transData->endTexX;
+ f32 endY = transData->endTexY;
+ f32 sqrtfXY = sqrtf((startX - endX) * (startX - endX) + (startY - endY) * (startY - endY));
+ f32 result = (f32) sTransitionColorFadeCount[fadeTimer] * sqrtfXY / (f32)(transTime - 1);
- return sp18;
+ return result;
}
-u16 func_802CB384(struct WarpTransitionData *transData) {
- f32 sp1C = transData->endCircleX - transData->startCircleX;
- f32 sp18 = transData->endCircleY - transData->startCircleY;
+u16 convert_tex_transition_angle_to_pos(struct WarpTransitionData *transData) {
+ f32 x = transData->endTexX - transData->startTexX;
+ f32 y = transData->endTexY - transData->startTexY;
- return atan2s(sp1C, sp18);
+ return atan2s(x, y);
}
-s16 func_802CB400(struct WarpTransitionData *transData, f32 a1, u16 a2) {
- f32 sp4 = transData->startCircleX + coss(a2) * a1;
+s16 center_tex_transition_x(struct WarpTransitionData *transData, f32 texTransTime, u16 texTransPos) {
+ f32 x = transData->startTexX + coss(texTransPos) * texTransTime;
- return sp4 + 0.5;
+ return (s16)(x + 0.5);
}
-s16 func_802CB484(struct WarpTransitionData *transData, f32 a1, u16 a2) {
- f32 sp4 = transData->startCircleY + sins(a2) * a1;
+s16 center_tex_transition_y(struct WarpTransitionData *transData, f32 texTransTime, u16 texTransPos) {
+ f32 y = transData->startTexY + sins(texTransPos) * texTransTime;
- return sp4 + 0.5;
+ return (s16)(y + 0.5);
}
-void func_802CB508(Vtx *verts, s32 n, s8 a2, struct WarpTransitionData *transData, s16 sp62, s16 sp66,
- s16 sp6A, s16 sp6E, s16 sp72, s16 sp76) {
+void make_tex_transition_vertex(Vtx *verts, s32 n, s8 fadeTimer, struct WarpTransitionData *transData, s16 centerTransX, s16 centerTransY,
+ s16 texRadius1, s16 texRadius2, s16 tx, s16 ty) {
u8 r = transData->red;
u8 g = transData->green;
u8 b = transData->blue;
- u16 sp4A = D_8032FF64[a2];
- f32 sp44 = sp6A * coss(sp4A) - sp6E * sins(sp4A) + sp62;
- f32 sp40 = sp6A * sins(sp4A) + sp6E * coss(sp4A) + sp66;
- s16 x = round_float(sp44);
- s16 y = round_float(sp40);
+ u16 zeroTimer = sTransitionTextureFadeCount[fadeTimer];
+ f32 centerX = texRadius1 * coss(zeroTimer) - texRadius2 * sins(zeroTimer) + centerTransX;
+ f32 centerY = texRadius1 * sins(zeroTimer) + texRadius2 * coss(zeroTimer) + centerTransY;
+ s16 x = round_float(centerX);
+ s16 y = round_float(centerY);
- make_vertex(verts, n, x, y, -1, sp72 * 32, sp76 * 32, r, g, b, 255);
+ make_vertex(verts, n, x, y, -1, tx * 32, ty * 32, r, g, b, 255);
}
-void func_802CB6A0(Vtx *verts, s8 sp47, struct WarpTransitionData *transData, s16 sp4E, s16 sp52,
- s16 sp56, s8 sp5B) {
- switch (sp5B) {
- case 0:
- func_802CB508(verts, 0, sp47, transData, sp4E, sp52, -sp56, -sp56, -31, 63);
- func_802CB508(verts, 1, sp47, transData, sp4E, sp52, sp56, -sp56, 31, 63);
- func_802CB508(verts, 2, sp47, transData, sp4E, sp52, sp56, sp56, 31, 0);
- func_802CB508(verts, 3, sp47, transData, sp4E, sp52, -sp56, sp56, -31, 0);
+void load_tex_transition_vertex(Vtx *verts, s8 fadeTimer, struct WarpTransitionData *transData, s16 centerTransX, s16 centerTransY,
+ s16 texTransRadius, s8 transTexType) {
+ switch (transTexType) {
+ case TRANS_TYPE_MIRROR:
+ make_tex_transition_vertex(verts, 0, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, -texTransRadius, -31, 63);
+ make_tex_transition_vertex(verts, 1, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, -texTransRadius, 31, 63);
+ make_tex_transition_vertex(verts, 2, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, texTransRadius, 31, 0);
+ make_tex_transition_vertex(verts, 3, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, texTransRadius, -31, 0);
break;
- case 1:
- func_802CB508(verts, 0, sp47, transData, sp4E, sp52, -sp56, -sp56, 0, 63);
- func_802CB508(verts, 1, sp47, transData, sp4E, sp52, sp56, -sp56, 63, 63);
- func_802CB508(verts, 2, sp47, transData, sp4E, sp52, sp56, sp56, 63, 0);
- func_802CB508(verts, 3, sp47, transData, sp4E, sp52, -sp56, sp56, 0, 0);
+ case TRANS_TYPE_CLAMP:
+ make_tex_transition_vertex(verts, 0, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, -texTransRadius, 0, 63);
+ make_tex_transition_vertex(verts, 1, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, -texTransRadius, 63, 63);
+ make_tex_transition_vertex(verts, 2, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, texTransRadius, 63, 0);
+ make_tex_transition_vertex(verts, 3, fadeTimer, transData, centerTransX, centerTransY, -texTransRadius, texTransRadius, 0, 0);
break;
}
- func_802CB508(verts, 4, sp47, transData, sp4E, sp52, -2000, -2000, 0, 0);
- func_802CB508(verts, 5, sp47, transData, sp4E, sp52, 2000, -2000, 0, 0);
- func_802CB508(verts, 6, sp47, transData, sp4E, sp52, 2000, 2000, 0, 0);
- func_802CB508(verts, 7, sp47, transData, sp4E, sp52, -2000, 2000, 0, 0);
+ make_tex_transition_vertex(verts, 4, fadeTimer, transData, centerTransX, centerTransY, -2000, -2000, 0, 0);
+ make_tex_transition_vertex(verts, 5, fadeTimer, transData, centerTransX, centerTransY, 2000, -2000, 0, 0);
+ make_tex_transition_vertex(verts, 6, fadeTimer, transData, centerTransX, centerTransY, 2000, 2000, 0, 0);
+ make_tex_transition_vertex(verts, 7, fadeTimer, transData, centerTransX, centerTransY, -2000, 2000, 0, 0);
}
-void *D_8032FF68[] = {
+void *sTextureTransitionID[] = {
texture_transition_star_half,
texture_transition_circle_half,
texture_transition_mario,
texture_transition_bowser_half,
};
-s32 func_802CB9F8(s8 spBB, s8 spBF, struct WarpTransitionData *transData, s8 spC7, s8 spCB) {
- f32 spB4 = func_802CB274(spBB, spBF, transData);
- u16 spB2 = func_802CB384(transData);
- s16 spB0 = func_802CB400(transData, spB4, spB2);
- s16 spAE = func_802CB484(transData, spB4, spB2);
- s16 spAC = func_802CB19C(spBB, spBF, transData);
- Vtx *spA8 = alloc_display_list(8 * sizeof(*spA8));
+s32 render_textured_transition(s8 fadeTimer, s8 transTime, struct WarpTransitionData *transData, s8 texID, s8 transTexType) {
+ f32 texTransTime = calc_tex_transition_time(fadeTimer, transTime, transData);
+ u16 texTransPos = convert_tex_transition_angle_to_pos(transData);
+ s16 centerTransX = center_tex_transition_x(transData, texTransTime, texTransPos);
+ s16 centerTransY = center_tex_transition_y(transData, texTransTime, texTransPos);
+ s16 texTransRadius = calc_tex_transition_radius(fadeTimer, transTime, transData);
+ Vtx *verts = alloc_display_list(8 * sizeof(*verts));
- if (spA8 != NULL) {
- func_802CB6A0(spA8, spBB, transData, spB0, spAE, spAC, spCB); // TODO types
- gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen);
+ if (verts != NULL) {
+ load_tex_transition_vertex(verts, fadeTimer, transData, centerTransX, centerTransY, texTransRadius, transTexType);
+ gSPDisplayList(gDisplayListHead++, dl_proj_mtx_fullscreen)
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2);
- gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(spA8), 8, 0);
+ gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 8, 0);
gSPDisplayList(gDisplayListHead++, dl_transition_draw_filled_region);
gDPPipeSync(gDisplayListHead++);
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_XLU_SURF, G_RM_AA_XLU_SURF2);
- gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
- switch (spCB) {
- case 0:
- gDPLoadTextureBlock(gDisplayListHead++, D_8032FF68[spC7], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,
+ gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP);
+ switch (transTexType) {
+ case TRANS_TYPE_MIRROR:
+ gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,
G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD);
break;
- case 1:
- gDPLoadTextureBlock(gDisplayListHead++, D_8032FF68[spC7], G_IM_FMT_IA, G_IM_SIZ_8b, 64, 64, 0,
+ case TRANS_TYPE_CLAMP:
+ gDPLoadTextureBlock(gDisplayListHead++, sTextureTransitionID[texID], G_IM_FMT_IA, G_IM_SIZ_8b, 64, 64, 0,
G_TX_CLAMP, G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD);
break;
}
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
- gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(spA8), 4, 0);
+ gSPVertex(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(verts), 4, 0);
gSPDisplayList(gDisplayListHead++, dl_draw_quad_verts_0123);
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
gSPDisplayList(gDisplayListHead++, dl_screen_transition_end);
- D_8032FF64[spBB] += transData->unk10;
+ sTransitionTextureFadeCount[fadeTimer] += transData->texTimer;
} else {
}
- return func_802CAAE0(spBB, spBF);
+ return set_and_reset_transition_fade_timer(fadeTimer, transTime);
}
-int func_802CC108(s8 sp23, s8 sp27, u8 sp2B, struct WarpTransitionData *sp2C) {
- switch (sp27) {
- case 0:
- return func_802CB0E4(sp23, sp2B, sp2C);
+int render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData) {
+ switch (transType) {
+ case WARP_TRANSITION_FADE_FROM_COLOR:
+ return render_fade_transition_from_color(fadeTimer, transTime, transData);
break;
- case 1:
- return func_802CB140(sp23, sp2B, sp2C);
+ case WARP_TRANSITION_FADE_INTO_COLOR:
+ return render_fade_transition_into_color(fadeTimer, transTime, transData);
break;
- case 8:
- return func_802CB9F8(sp23, sp2B, sp2C, 0, 0);
+ case WARP_TRANSITION_FADE_FROM_STAR:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_STAR, TRANS_TYPE_MIRROR);
break;
- case 9:
- return func_802CB9F8(sp23, sp2B, sp2C, 0, 0);
+ case WARP_TRANSITION_FADE_INTO_STAR:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_STAR, TRANS_TYPE_MIRROR);
break;
- case 10:
- return func_802CB9F8(sp23, sp2B, sp2C, 1, 0);
+ case WARP_TRANSITION_FADE_FROM_CIRCLE:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_CIRCLE, TRANS_TYPE_MIRROR);
break;
- case 11:
- return func_802CB9F8(sp23, sp2B, sp2C, 1, 0);
+ case WARP_TRANSITION_FADE_INTO_CIRCLE:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_CIRCLE, TRANS_TYPE_MIRROR);
break;
- case 16:
- return func_802CB9F8(sp23, sp2B, sp2C, 2, 1);
+ case WARP_TRANSITION_FADE_FROM_MARIO:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_MARIO, TRANS_TYPE_CLAMP);
break;
- case 17:
- return func_802CB9F8(sp23, sp2B, sp2C, 2, 1);
+ case WARP_TRANSITION_FADE_INTO_MARIO:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_MARIO, TRANS_TYPE_CLAMP);
break;
- case 18:
- return func_802CB9F8(sp23, sp2B, sp2C, 3, 0);
+ case WARP_TRANSITION_FADE_FROM_BOWSER:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_BOWSER, TRANS_TYPE_MIRROR);
break;
- case 19:
- return func_802CB9F8(sp23, sp2B, sp2C, 3, 0);
+ case WARP_TRANSITION_FADE_INTO_BOWSER:
+ return render_textured_transition(fadeTimer, transTime, transData, TEX_TRANS_BOWSER, TRANS_TYPE_MIRROR);
break;
}
}
-Gfx *func_802CC2E8(void) {
+Gfx *render_cannon_circle_base(void) {
Vtx *verts = alloc_display_list(4 * sizeof(*verts));
Gfx *dlist = alloc_display_list(16 * sizeof(*dlist));
Gfx *g = dlist;
if (verts != NULL && dlist != NULL) {
make_vertex(verts, 0, 0, 0, -1, -1152, 1824, 0, 0, 0, 255);
- make_vertex(verts, 1, 320, 0, -1, 1152, 1824, 0, 0, 0, 255);
- make_vertex(verts, 2, 320, 240, -1, 1152, 192, 0, 0, 0, 255);
- make_vertex(verts, 3, 0, 240, -1, -1152, 192, 0, 0, 0, 255);
+ make_vertex(verts, 1, SCREEN_WIDTH, 0, -1, 1152, 1824, 0, 0, 0, 255);
+ make_vertex(verts, 2, SCREEN_WIDTH, SCREEN_HEIGHT, -1, 1152, 192, 0, 0, 0, 255);
+ make_vertex(verts, 3, 0, SCREEN_HEIGHT, -1, -1152, 192, 0, 0, 0, 255);
- gSPDisplayList(g++, dl_proj_mtx_fullscreen)
+ gSPDisplayList(g++, dl_proj_mtx_fullscreen);
gDPSetCombineMode(g++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
gDPSetTextureFilter(g++, G_TF_BILERP);
- gDPLoadTextureBlock(g++, D_8032FF68[1], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,
+ gDPLoadTextureBlock(g++, sTextureTransitionID[TEX_TRANS_CIRCLE], G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0,
G_TX_WRAP | G_TX_MIRROR, G_TX_WRAP | G_TX_MIRROR, 5, 6, G_TX_NOLOD, G_TX_NOLOD);
gSPTexture(g++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
gSPVertex(g++, VIRTUAL_TO_PHYSICAL(verts), 4, 0);
@@ -266,14 +266,14 @@ Gfx *func_802CC2E8(void) {
return dlist;
}
-Gfx *Geo18_802CD1E8(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]) {
- struct GraphNodeGenerated *sp1C = (struct GraphNodeGenerated *) node;
+Gfx *geo_cannon_circle_base(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]) {
+ struct GraphNodeGenerated *graphNode = (struct GraphNodeGenerated *) node;
Gfx *dlist = NULL;
- if (run == TRUE && gCurrentArea != NULL
+ if (callContext == GEO_CONTEXT_RENDER && gCurrentArea != NULL
&& gCurrentArea->camera->currPreset == CAMERA_PRESET_INSIDE_CANNON) {
- sp1C->fnNode.node.flags = (sp1C->fnNode.node.flags & 0xFF) | 0x500;
- dlist = func_802CC2E8();
+ graphNode->fnNode.node.flags = (graphNode->fnNode.node.flags & 0xFF) | 0x500;
+ dlist = render_cannon_circle_base();
}
return dlist;
}
diff --git a/src/game/screen_transition.h b/src/game/screen_transition.h
@@ -1,28 +1,23 @@
-#ifndef _SCREEN_TRANSITION_H
-#define _SCREEN_TRANSITION_H
+#ifndef SCREEN_TRANSITION_H
+#define SCREEN_TRANSITION_H
#include "types.h"
-// extern ? D_8032FF60;
-// extern ? D_8032FF64;
-// extern ? D_8032FF68;
+enum TextureTransitionID
+{
+ TEX_TRANS_STAR,
+ TEX_TRANS_CIRCLE,
+ TEX_TRANS_MARIO,
+ TEX_TRANS_BOWSER
+};
-// extern ? func_802CAAE0(?);
-// extern ? func_802CAB60(?);
-// extern ? func_802CADB4(?);
-// extern ? func_802CAF38(?);
-// extern ? func_802CB0E4(?);
-// extern ? func_802CB140(?);
-// extern ? func_802CB19C(?);
-// extern ? func_802CB274(?);
-// extern ? func_802CB384(?);
-// extern ? func_802CB400(?);
-// extern ? func_802CB484(?);
-// extern ? func_802CB508(?);
-// extern ? func_802CB6A0(?);
-// extern ? func_802CB9F8(?);
-int func_802CC108(s8 sp23, s8 sp27, u8 sp2B, struct WarpTransitionData *sp2C);
-// extern ? func_802CC2E8(?);
-extern Gfx *Geo18_802CD1E8(s32 run, struct GraphNode *node, UNUSED f32 mtx[4][4]);
+enum TextureTransitionType
+{
+ TRANS_TYPE_MIRROR,
+ TRANS_TYPE_CLAMP
+};
-#endif /* _SCREEN_TRANSITION_H */
+extern int render_screen_transition(s8 fadeTimer, s8 transType, u8 transTime, struct WarpTransitionData *transData);
+extern Gfx *geo_cannon_circle_base(s32 callContext, struct GraphNode *node, UNUSED f32 mtx[4][4]);
+
+#endif /* SCREEN_TRANSITION_H */
diff --git a/src/game/segment2.h b/src/game/segment2.h
@@ -6,7 +6,7 @@
extern u8 _segment2_mio0SegmentRomStart[];
extern u8 _segment2_mio0SegmentRomEnd[];
-extern u8 seg2_level_name_table[];
+extern u8 seg2_course_name_table[];
extern u8 seg2_act_name_table[];
extern Gfx dl_rgba16_text_begin[];
extern Gfx dl_rgba16_text_end[];
diff --git a/src/game/shadow.c b/src/game/shadow.c
@@ -16,6 +16,7 @@
#include "segment2.h"
#include "save_file.h"
#include "geo_misc.h"
+#include "level_table.h"
/**
* @file shadow.c
diff --git a/src/game/sound_init.c b/src/game/sound_init.c
@@ -13,6 +13,7 @@
#include "sound_init.h"
#include "engine/graph_node.h"
#include "paintings.h"
+#include "level_table.h"
#define MUSIC_NONE 0xFFFF
diff --git a/src/game/spawn_object.c b/src/game/spawn_object.c
@@ -12,6 +12,7 @@
#include "level_update.h"
#include "spawn_object.h"
#include "object_list_processor.h"
+#include "level_table.h"
/**
* An unused linked list struct that seems to have been replaced by ObjectNode.
diff --git a/src/goddard/bad_declarations.h b/src/goddard/bad_declarations.h
@@ -1,7 +1,6 @@
-#ifndef BAD_GD_DECLARATIONS_H
-#define BAD_GD_DECLARATIONS_H
+#ifndef BAD_DECLARATIONS_H
+#define BAD_DECLARATIONS_H
-#include <config.h>
#include "gd_types.h"
/**
@@ -10,28 +9,32 @@
* Match incorrect type promotion for two declared functions.
*
* There is an issue with the compiled code for these function calls in files
- * outside of the files in which they were defined.
+ * outside of the files in which they were defined: instead of passing f32's,
+ * the caller passes f64's.
+ *
* The only possible reason I can come up with for this behavior is that
* goddard only declared (not prototyped) his functions in the headers,
- * and didn't include the header in the function's defining .c file
- * (Even ido 5.0 cares about illegal promotion of types!)
+ * and didn't include the header in the function's defining .c file.
+ * (Even IDO 5.3 cares about illegal promotion of types!) This results in
+ * default argument promotion, which is incorrect in this case.
*
* Since that's an awful practice to emulate, include this file (first!) to prevent
* the proper prototypes of these functions from being seen by files with the
* the incorrectly compiled calls.
*/
-#if !BUGFIX_GODDARD_BAD_DECLARATIONS
+#ifndef AVOID_UB
-#define GD_USE_BAD_DECLARATIONS 1
+#define GD_USE_BAD_DECLARATIONS
-/* half6 */
-extern struct ObjFace *make_face_with_colour();
+/* shape_helper.h */
+extern struct ObjFace *make_face_with_colour();
/* should be: make_face_with_colour(f32, f32, f32) */
-/* oldobj */
+/* old_menu.h */
extern struct ObjLabel *make_label();
/* should be: make_label(struct ObjValPtrs *, char *, s32, f32, f32, f32) */
-#endif /* !BUGFIX_GODDARD_BAD_DECLARATIONS */
-#endif /* BAD_GD_DECLARATIONS_H */
+#endif /* !AVOID_UB */
+
+#endif /* BAD_DECLARATIONS_H */
diff --git a/src/goddard/draw_objects.c b/src/goddard/draw_objects.c
@@ -1,6 +1,5 @@
#include <ultra64.h>
#include <macros.h>
-#include <config.h>
#include <stdio.h>
#include "gd_types.h"
@@ -112,7 +111,7 @@ static struct GdVec3f sGrabCords; ///< x, y grabbable point near cur
* Set the ambient light color and turn on G_CULL_BACK.
*/
void setup_lights(void) {
- set_light_num(2);
+ set_light_num(NUMLIGHTS_2);
gd_setproperty(GD_PROP_AMB_COLOUR, 0.5f, 0.5f, 0.5f);
gd_setproperty(GD_PROP_CULLING, 1.0f, 0.0f, 0.0f); // set G_CULL_BACK
return;
@@ -211,7 +210,7 @@ void draw_shape(struct ObjShape *shape, s32 flag, f32 c, f32 d, f32 e, // "sweep
sUseSelectedColor = TRUE;
sSelectedColour = gd_get_colour(colorIdx);
if (sSelectedColour != NULL) {
- func_801A086C(-1, sSelectedColour, 64);
+ func_801A086C(-1, sSelectedColour, GD_MTL_LIGHTS);
} else {
fatal_print("Draw_shape(): Bad colour");
}
@@ -311,7 +310,7 @@ void draw_light(struct ObjLight *light) {
void draw_material(struct ObjMaterial *mtl) {
s32 mtlType = mtl->type; // 24
- if (mtlType == GD_MTL_UNK16) {
+ if (mtlType == GD_MTL_SHINE_DL) {
if (sPhongLight != NULL && sPhongLight->unk30 > 0.0f) {
if (gViewUpdateCamera != NULL) {
func_801A0478(mtl->gddlNumber, gViewUpdateCamera, &sPhongLight->position,
@@ -320,13 +319,13 @@ void draw_material(struct ObjMaterial *mtl) {
fatal_printf("draw_material() no active camera for phong");
}
} else {
- mtlType = GD_MTL_UNK04;
+ mtlType = GD_MTL_BREAK;
}
}
if (sUseSelectedColor == FALSE) {
func_801A086C(mtl->gddlNumber, &mtl->Kd, mtlType);
} else {
- func_801A086C(mtl->gddlNumber, sSelectedColour, GD_MTL_UNK64);
+ func_801A086C(mtl->gddlNumber, sSelectedColour, GD_MTL_LIGHTS);
}
}
@@ -771,25 +770,23 @@ void drawscene(enum SceneType process, struct ObjGroup *interactables, struct Ob
sUnreadShapeFlag = 0;
sUpdateViewState.unreadCounter = 0;
restart_timer("draw1");
- set_gd_mtx_parameters(5); // G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH;
+ set_gd_mtx_parameters(G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH);
if (sUpdateViewState.view->unk38 == 1) {
- // guPerspective
- func_801A3C8C(sUpdateViewState.view->clipping.z,
+ gd_create_perspective_matrix(sUpdateViewState.view->clipping.z,
sUpdateViewState.view->lowerRight.x / sUpdateViewState.view->lowerRight.y,
sUpdateViewState.view->clipping.x, sUpdateViewState.view->clipping.y);
} else {
- // guOrtho
- func_801A3AF0(
+ gd_create_ortho_matrix(
-sUpdateViewState.view->lowerRight.x / 2.0, sUpdateViewState.view->lowerRight.x / 2.0,
-sUpdateViewState.view->lowerRight.y / 2.0, sUpdateViewState.view->lowerRight.y / 2.0,
sUpdateViewState.view->clipping.x, sUpdateViewState.view->clipping.y);
}
if (lightgrp != NULL) {
- set_gd_mtx_parameters(6); // G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH
+ set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);
apply_to_obj_types_in_group(OBJ_TYPE_LIGHTS | OBJ_TYPE_PARTICLES,
(applyproc_t) apply_obj_draw_fn, lightgrp);
- set_gd_mtx_parameters(5);
+ set_gd_mtx_parameters(G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH);
}
if (gViewUpdateCamera != NULL) {
@@ -799,8 +796,8 @@ void drawscene(enum SceneType process, struct ObjGroup *interactables, struct Ob
}
setup_lights();
- set_gd_mtx_parameters(6);
- push_idn_mtx_cur_gddl();
+ set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);
+ idn_mtx_push_gddl();
sSceneProcessType = process;
if ((sNumActiveLights = sUpdateViewState.view->flags & VIEW_LIGHT)) {
@@ -845,7 +842,7 @@ void nop_obj_draw(UNUSED struct GdObj *nop) {
void draw_shape_faces(struct ObjShape *shape) {
sUpdateViewState.mtlDlNum = 0;
sUpdateViewState.unreadCounter = 0;
- func_801A2374(FALSE);
+ gddl_is_loading_stub_dl(FALSE);
sUnreadShapeFlag = (s32) shape->flag & 1;
func_801A02B8(shape->unk58);
if (shape->gdDls[gGdFrameBuf] != 0) {
@@ -1006,7 +1003,7 @@ void apply_obj_draw_fn(struct GdObj *obj) {
* Count input `ObjLight` as an active light, if it wasn't already counted.
*/
void register_light(struct ObjLight *light) {
- func_801A0324(light->id);
+ set_light_id(light->id);
gd_setproperty(GD_PROP_LIGHTING, 2.0f, 0.0f, 0.0f);
if (light->flags & LIGHT_NEW_UNCOUNTED) {
sNumActiveLights++;
@@ -1049,7 +1046,7 @@ void Proc8017A980(struct ObjLight *light) {
}
sp24 *= sp20;
}
- func_801A0324(light->id);
+ set_light_id(light->id);
gd_setproperty(GD_PROP_DIFUSE_COLOUR, light->diffuse.r * sp24, light->diffuse.g * sp24,
light->diffuse.b * sp24);
gd_setproperty(GD_PROP_LIGHT_DIR, sLightPositionCache[light->id].x,
@@ -1119,7 +1116,12 @@ void unref_8017AEDC(struct ObjGroup *grp) {
* @bug Nothing is returned if the DL is created
* @note Contains string literals that suggest a removed `printf` call
*/
-s32 create_shape_gddl(struct ObjShape *s) {
+#ifdef AVOID_UB
+void
+#else
+s32
+#endif
+create_shape_gddl(struct ObjShape *s) {
struct ObjShape *shape = s; // 24
s32 shapedl; // 20
UNUSED s32 enddl; // 1C
@@ -1127,7 +1129,11 @@ s32 create_shape_gddl(struct ObjShape *s) {
create_shape_mtl_gddls(shape);
shapedl = gd_startdisplist(7);
if (shapedl == 0) {
+#ifdef AVOID_UB
+ return;
+#else
return -1;
+#endif
}
setup_lights();
@@ -1135,7 +1141,7 @@ s32 create_shape_gddl(struct ObjShape *s) {
if (shape->unk3C == 0) {
draw_shape_faces(shape);
}
- enddl = gd_end_dl();
+ enddl = gd_enddlsplist_parent();
shape->gdDls[0] = shapedl;
shape->gdDls[1] = shapedl;
@@ -1144,10 +1150,6 @@ s32 create_shape_gddl(struct ObjShape *s) {
} else {
printf("Generated 'UNKNOWN' (%d) display list ok.(%d)\n", shapedl, enddl);
}
-
-#if BUGFIX_GODDARD_MISSING_RETURN
- return shapedl;
-#endif
}
/**
@@ -1513,7 +1515,7 @@ void update_view(struct ObjView *view) {
}
border_active_view();
- gd_end_dl();
+ gd_enddlsplist_parent();
imout();
return;
}
diff --git a/src/goddard/dynlist_proc.c b/src/goddard/dynlist_proc.c
@@ -1,6 +1,5 @@
#include <ultra64.h>
#include <macros.h>
-#include <config.h>
#include <stdio.h>
#include "gd_types.h"
#include "bad_declarations.h"
@@ -630,13 +629,10 @@ struct GdObj *d_makeobj(enum DObjTypes type, DynId id) {
d_makeobj(D_GROUP, id);
((struct ObjGroup *) sDynListCurObj)->linkType = 1;
//! @bug Returns garbage when making `D_DATA_GRP` object
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return NULL;
#else
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wreturn-type"
return;
-#pragma GCC diagnostic pop
#endif
case D_CAMERA:
dobj = &make_camera(0, NULL)->header;
diff --git a/src/goddard/gd_main.h b/src/goddard/gd_main.h
@@ -3,16 +3,14 @@
#include <ultra64.h>
+
// In various files of the Goddard subsystem, there are miscellaneous
-// unused rodata strings. These can be generated via a printf call that
-// is stubbed out, but not via define printf(...), as IDO 5.3 C
-// preprocessor did not support va_arg defines. Goddard, however, did
-// use gd_printf, which is distinct from this type of stubbed call, as
-// gd_printf actually is called. This could be because gd_printf could
-// forward to printf (currently unclear whether it might or might not,
-// gd_printf is awaiting decompilation), which would indicate goddard was
-// in the middle of moving these calls to the wrapper function. The unmoved
-// calls result in the unused rodata strings.
+// unused rodata strings. These are likely byproducts of a printf macro
+// that was stubbed out as "#define printf", letting printf calls expand
+// to no-op comma expressions. (IDO doesn't support variadic macros, so
+// "#define printf(...) /* nothing */" wasn't an option.)
+// This macro is separate from the gd_printf function; one probably
+// forwarded to the other, but it is hard to tell in which direction.
#ifdef __GNUC__
#define printf(...) \
_Pragma ("GCC diagnostic push") \
diff --git a/src/goddard/gd_types.h b/src/goddard/gd_types.h
@@ -403,11 +403,12 @@ struct ObjCamera {
/* 0x18C */ struct ObjView *unk18C; // view that has/is using this camera?
}; /* sizeof = 0x190 */
-// These might not be types, but rather flags?
enum GdMtlTypes {
- GD_MTL_UNK04 = 4,
- GD_MTL_UNK16 = 16,
- GD_MTL_UNK64 = 64
+ GD_MTL_STUB_DL = 0x01,
+ GD_MTL_BREAK = 0x04,
+ GD_MTL_SHINE_DL = 0x10,
+ GD_MTL_TEX_OFF = 0x20,
+ GD_MTL_LIGHTS = 0x40 // uses default case
};
struct ObjMaterial {
diff --git a/src/goddard/objects.c b/src/goddard/objects.c
@@ -1,7 +1,7 @@
#include <ultra64.h>
#include <stdarg.h>
+#include <stdio.h>
#include <macros.h>
-#include <config.h>
#include "gd_types.h"
#include "gd_macros.h"
@@ -343,7 +343,7 @@ struct ObjZone *make_zone(struct ObjGroup *a0, struct GdPlaneF *a1, struct ObjGr
newZone->unk30 = a0;
//! @bug Created `ObjZone` is not returned
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return newZone;
#endif
}
@@ -1024,7 +1024,7 @@ struct GdObj *UnknownRecursive8017E2F0(struct GdObj *obj, enum ObjTypeFlag type)
}
//! @bug Nothing is returned if a GdObj of `type` is not found
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return NULL;
#endif
}
@@ -1044,13 +1044,10 @@ s32 apply_to_obj_types_in_group(s32 types, applyproc_t fn, struct ObjGroup *grou
//! @bug When `group` pointer is NULL, garbage is returned, not the
//! count of `fn` calls
if (group == NULL) {
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return fnAppliedCount;
#else
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wreturn-type"
return;
-#pragma GCC diagnostic pop
#endif
}
diff --git a/src/goddard/old_menu.h b/src/goddard/old_menu.h
@@ -10,7 +10,7 @@ extern void reset_gadget(struct ObjGadget *);
extern void reset_gadgets_in_grp(struct ObjGroup *);
// see bad_declarations.h
-#if !GD_USE_BAD_DECLARATIONS
+#ifndef GD_USE_BAD_DECLARATIONS
extern struct ObjLabel *make_label(struct ObjValPtrs *, char *, s32, f32, f32, f32);
#endif
diff --git a/src/goddard/renderer.c b/src/goddard/renderer.c
@@ -1,6 +1,5 @@
#include <ultra64.h>
#include <macros.h>
-#include <config.h>
#include <stdarg.h>
#include <stdio.h>
@@ -27,6 +26,7 @@
#define GD_VIRTUAL_TO_PHYSICAL(addr) ((uintptr_t)(addr) &0x0FFFFFFF)
#define GD_LOWER_24(addr) ((uintptr_t)(addr) &0x00FFFFFF)
#define GD_LOWER_29(addr) (((uintptr_t)(addr)) & 0x1FFFFFFF)
+
#define MTX_INTPART_PACK(w1, w2) (((w1) &0xFFFF0000) | (((w2) >> 16) & 0xFFFF))
#define MTX_FRACPART_PACK(w1, w2) ((((w1) << 16) & 0xFFFF0000) | ((w2) &0xFFFF))
#define LOOKAT_PACK(c) ((s32) MIN(((c) * (128.0)), 127.0) & 0xff)
@@ -68,17 +68,10 @@ struct GdDisplayList {
#define DL_CURRENT_GFX(dl) ((dl)->gfx[(dl)->curGfxIdx])
#define DL_CURRENT_VP(dl) ((dl)->vp[(dl)->curVpIdx])
-union UnkInternal {
- s32 w;
- struct {
- s8 b0, b1, b2, b3;
- } bytes;
+struct LightDirVec {
+ s32 x, y, z;
};
-struct Unk801BB1B8 {
- union UnkInternal u0, u4, u8;
-}; // sizeof = 0x0C bytes
-
enum DynListBankFlag { TABLE_END = -1, STD_LIST_BANK = 3 };
struct DynListBankInfo {
@@ -126,13 +119,12 @@ static Mtx sIdnMtx; // @ 801BB100
static Mat4f sInitIdnMat4; // @ 801BB140
static s8 sVtxCvrtNormBuf[3]; // @ 801BB180
static s16 D_801BB184;
-static s32 D_801BB188;
+static s32 sNumLights;
static struct GdColour sAmbScaleColour; // @ 801BB190
static struct GdColour sLightScaleColours[2]; // @ 801BB1A0
-static struct Unk801BB1B8 D_801BB1B8[2];
-static s32 D_801BB1D0; // light id? from Proc8017A980 or register_light; used to offset into diffuse or
- // ambient arrays
-static Hilite D_801BB1D8[600];
+static struct LightDirVec sLightDirections[2];
+static s32 sLightId;
+static Hilite sHilites[600];
static struct GdVec3f D_801BD758;
static struct GdVec3f D_801BD768; // had to migrate earlier
static u32 D_801BD774;
@@ -185,7 +177,7 @@ static struct ObjShape *sHandShape = NULL; // @ 801A86B8
static s32 D_801A86BC = 1;
static s32 D_801A86C0 = 0; // gd_dl id for something?
static u32 unref_801a86C4 = 10;
-static s32 sMtxParameters = (G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH); // @ 801A86C8;
+static s32 sMtxParamType = G_MTX_PROJECTION;
static struct GdVec3f D_801A86CC = { 1.0f, 1.0f, 1.0f };
static struct ObjView *sActiveView = NULL; // @ 801A86D8 current view? used when drawing dl
static struct ObjView *sScreenView2 = NULL; // @ 801A86DC
@@ -210,7 +202,7 @@ static Gfx gd_texture1_dummy_aligner1[] = { // @ 801A8728
gsSPEndDisplayList(),
};
-ALIGNED8 static u8 textureHandOpen[] = {
+ALIGNED8 static u8 gd_texture_hand_open[] = {
#include "textures/intro_raw/hand_open.rgba16.inc.c"
};
@@ -218,75 +210,75 @@ static Gfx gd_texture2_dummy_aligner1[] = {
gsSPEndDisplayList()
};
-ALIGNED8 static u8 textureHandClosed[] = {
+ALIGNED8 static u8 gd_texture_hand_closed[] = {
#include "textures/intro_raw/hand_closed.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_0[] = {
+ALIGNED8 static u8 gd_texture_red_star_0[] = {
#include "textures/intro_raw/red_star_0.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_1[] = {
+ALIGNED8 static u8 gd_texture_red_star_1[] = {
#include "textures/intro_raw/red_star_1.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_2[] = {
+ALIGNED8 static u8 gd_texture_red_star_2[] = {
#include "textures/intro_raw/red_star_2.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_3[] = {
+ALIGNED8 static u8 gd_texture_red_star_3[] = {
#include "textures/intro_raw/red_star_3.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_4[] = {
+ALIGNED8 static u8 gd_texture_red_star_4[] = {
#include "textures/intro_raw/red_star_4.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_5[] = {
+ALIGNED8 static u8 gd_texture_red_star_5[] = {
#include "textures/intro_raw/red_star_5.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_6[] = {
+ALIGNED8 static u8 gd_texture_red_star_6[] = {
#include "textures/intro_raw/red_star_6.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_red_star_7[] = {
+ALIGNED8 static u8 gd_texture_red_star_7[] = {
#include "textures/intro_raw/red_star_7.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_0[] = {
+ALIGNED8 static u8 gd_texture_white_star_0[] = {
#include "textures/intro_raw/white_star_0.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_1[] = {
+ALIGNED8 static u8 gd_texture_white_star_1[] = {
#include "textures/intro_raw/white_star_1.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_2[] = {
+ALIGNED8 static u8 gd_texture_white_star_2[] = {
#include "textures/intro_raw/white_star_2.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_3[] = {
+ALIGNED8 static u8 gd_texture_white_star_3[] = {
#include "textures/intro_raw/white_star_3.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_4[] = {
+ALIGNED8 static u8 gd_texture_white_star_4[] = {
#include "textures/intro_raw/white_star_4.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_5[] = {
+ALIGNED8 static u8 gd_texture_white_star_5[] = {
#include "textures/intro_raw/white_star_5.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_6[] = {
+ALIGNED8 static u8 gd_texture_white_star_6[] = {
#include "textures/intro_raw/white_star_6.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_white_star_7[] = {
+ALIGNED8 static u8 gd_texture_white_star_7[] = {
#include "textures/intro_raw/white_star_7.rgba16.inc.c"
};
-static Vtx_t star_vertex_801B1738[] = {
+static Vtx_t gd_vertex_star[] = {
{{-64, 0, 0}, 0, { 0, 992}, {0x00, 0x00, 0x7F}},
{{ 64, 0, 0}, 0, {992, 992}, {0x00, 0x00, 0x7F}},
{{ 64, 128, 0}, 0, {992, 0}, {0x00, 0x00, 0x7F}},
@@ -294,24 +286,24 @@ static Vtx_t star_vertex_801B1738[] = {
};
//! no references to these vertices
-UNUSED static Vtx_t D_vertex_801B1778[] = {
+UNUSED static Vtx_t gd_unused_vertex[] = {
{{16384, 0, 0}, 0, {0, 16384}, {0x00, 0x00, 0x00}},
{{ 0, 0, 16384}, 0, {0, 0}, {0x00, 0x00, 0x40}},
{{ 0, 0, 0}, 0, {0, 0}, {0x00, 0x00, 0x00}},
{{ 0, 0, 0}, 0, {0, 0}, {0x00, 0x00, 0x00}},
};
-static Gfx star_dl_common[] = {
+static Gfx gd_dl_star[] = {
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsSPClearGeometryMode(G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
- gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD),
+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD, G_TX_CLAMP | G_TX_NOMIRROR, 5, G_TX_NOLOD),
+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 5, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPVertex(star_vertex_801B1738, 4, 0),
+ gsSPVertex(gd_vertex_star, 4, 0),
gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -319,182 +311,186 @@ static Gfx star_dl_common[] = {
gsSPEndDisplayList(),
};
-static Gfx red_star_dl_801B1838[] = {
+static Gfx gd_dl_red_star_0[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_0),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_0),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B1850[] = {
+static Gfx gd_dl_red_star_1[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_1),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_1),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B1868[] = {
+static Gfx gd_dl_red_star_2[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_2),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_2),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B1880[] = {
+static Gfx gd_dl_red_star_3[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_3),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_3),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B1898[] = {
+static Gfx gd_dl_red_star_4[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_4),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_4),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B18B0[] = {
+static Gfx gd_dl_red_star_5[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_5),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_5),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B18C8[] = {
+static Gfx gd_dl_red_star_6[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_6),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_6),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx red_star_dl_801B18E0[] = {
+static Gfx gd_dl_red_star_7[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_red_star_7),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_red_star_7),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B18F8[] = {
+static Gfx gd_dl_silver_star_0[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_0),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_0),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1910[] = {
+static Gfx gd_dl_silver_star_1[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_1),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_1),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1928[] = {
+static Gfx gd_dl_silver_star_2[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_2),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_2),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1940[] = {
+static Gfx gd_dl_silver_star_3[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_3),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_3),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1958[] = {
+static Gfx gd_dl_silver_star_4[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_4),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_4),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1970[] = {
+static Gfx gd_dl_silver_star_5[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_5),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_5),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B1988[] = {
+static Gfx gd_dl_silver_star_6[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_6),
- gsSPBranchList(star_dl_common),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_6),
+ gsSPBranchList(gd_dl_star),
};
-static Gfx white_star_dl_801B19A0[] = {
+static Gfx gd_dl_silver_star_7[] = {
gsDPPipeSync(),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_white_star_7),
- gsSPBranchList(star_dl_common),
-};
-
-static Gfx *redStarDlArray[] = {
- red_star_dl_801B1838,
- red_star_dl_801B1838,
- red_star_dl_801B1850,
- red_star_dl_801B1850,
- red_star_dl_801B1868,
- red_star_dl_801B1868,
- red_star_dl_801B1880,
- red_star_dl_801B1880,
- red_star_dl_801B1898,
- red_star_dl_801B1898,
- red_star_dl_801B18B0,
- red_star_dl_801B18B0,
- red_star_dl_801B18C8,
- red_star_dl_801B18C8,
- red_star_dl_801B18E0,
- red_star_dl_801B18E0,
-};
-
-static Gfx *silverStarDlArray[] = {
- white_star_dl_801B18F8,
- white_star_dl_801B18F8,
- white_star_dl_801B1910,
- white_star_dl_801B1910,
- white_star_dl_801B1928,
- white_star_dl_801B1928,
- white_star_dl_801B1940,
- white_star_dl_801B1940,
- white_star_dl_801B1958,
- white_star_dl_801B1958,
- white_star_dl_801B1970,
- white_star_dl_801B1970,
- white_star_dl_801B1988,
- white_star_dl_801B1988,
- white_star_dl_801B19A0,
- white_star_dl_801B19A0,
-};
-
-ALIGNED8 static u8 texture_sparkle_0[] = {
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_white_star_7),
+ gsSPBranchList(gd_dl_star),
+};
+
+static Gfx *gd_red_star_dl_array[] = {
+ gd_dl_red_star_0,
+ gd_dl_red_star_0,
+ gd_dl_red_star_1,
+ gd_dl_red_star_1,
+ gd_dl_red_star_2,
+ gd_dl_red_star_2,
+ gd_dl_red_star_3,
+ gd_dl_red_star_3,
+ gd_dl_red_star_4,
+ gd_dl_red_star_4,
+ gd_dl_red_star_5,
+ gd_dl_red_star_5,
+ gd_dl_red_star_6,
+ gd_dl_red_star_6,
+ gd_dl_red_star_7,
+ gd_dl_red_star_7,
+};
+
+static Gfx *gd_silver_star_dl_array[] = {
+ gd_dl_silver_star_0,
+ gd_dl_silver_star_0,
+ gd_dl_silver_star_1,
+ gd_dl_silver_star_1,
+ gd_dl_silver_star_2,
+ gd_dl_silver_star_2,
+ gd_dl_silver_star_3,
+ gd_dl_silver_star_3,
+ gd_dl_silver_star_4,
+ gd_dl_silver_star_4,
+ gd_dl_silver_star_5,
+ gd_dl_silver_star_5,
+ gd_dl_silver_star_6,
+ gd_dl_silver_star_6,
+ gd_dl_silver_star_7,
+ gd_dl_silver_star_7,
+};
+
+ALIGNED8 static u8 gd_texture_sparkle_0[] = {
#include "textures/intro_raw/sparkle_0.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_sparkle_1[] = {
+ALIGNED8 static u8 gd_texture_sparkle_1[] = {
#include "textures/intro_raw/sparkle_1.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_sparkle_2[] = {
+ALIGNED8 static u8 gd_texture_sparkle_2[] = {
#include "textures/intro_raw/sparkle_2.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_sparkle_3[] = {
+ALIGNED8 static u8 gd_texture_sparkle_3[] = {
#include "textures/intro_raw/sparkle_3.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_sparkle_4[] = {
+ALIGNED8 static u8 gd_texture_sparkle_4[] = {
#include "textures/intro_raw/sparkle_4.rgba16.inc.c"
};
-ALIGNED8 static u8 texture_sparkle_5[] = { //! no references to this texture 0x801B4238
+//! No reference to this texture. Two DL's uses the same previous texture
+// instead of using this texture.
+ALIGNED8 static u8 gd_texture_sparkle_5[] = {
#include "textures/intro_raw/sparkle_5.rgba16.inc.c"
};
-static Vtx_t sparkle_vertex_801B4A38[] = {
+static Vtx_t gd_vertex_sparkle[] = {
{{ -32, 0, 0}, 0, { 0, 1984}, { 0x00, 0x00, 0x7F, 0x00}},
{{ 32, 0, 0}, 0, { 1984, 1984}, { 0x00, 0x00, 0x7F, 0x00}},
{{ 32, 64, 0}, 0, { 1984, 0}, { 0x00, 0x00, 0x7F, 0x00}},
{{ -32, 64, 0}, 0, { 0, 0}, { 0x00, 0x00, 0x7F, 0x00}},
};
-static Gfx sparkle_dl_common[] = {
+static Gfx gd_dl_sparkle[] = {
gsDPSetCombineMode(G_CC_MODULATERGBA_PRIM, G_CC_MODULATERGBA_PRIM),
gsSPClearGeometryMode(G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_NOOP2),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
- gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
+ G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPLoadSync(),
gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 32 * 32 - 1, CALC_DXT(32, G_IM_SIZ_16b_BYTES)),
- gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, G_TX_RENDERTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD,
+ G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD),
gsDPSetTileSize(0, 0, 0, (32 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC),
- gsSPVertex(sparkle_vertex_801B4A38, 4, 0),
+ gsSPVertex(gd_vertex_sparkle, 4, 0),
gsSP2Triangles(0, 1, 2, 0x0, 0, 2, 3, 0x0),
gsSPTexture(0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
@@ -502,156 +498,157 @@ static Gfx sparkle_dl_common[] = {
gsSPEndDisplayList(),
};
-static Gfx red_dl_801B4AF8[] = {
- gsDPSetPrimColor(0, 0, 0xFF, 0x00, 0x00, 0xFF),
+static Gfx gd_dl_sparkle_red_color[] = {
+ gsDPSetPrimColor(0, 0, 255, 0, 0, 255),
gsSPEndDisplayList(),
};
-static Gfx white_dl_801B4B08[] = {
- gsDPSetPrimColor(0, 0, 0xFF, 0xFF, 0xFF, 0xFF),
+static Gfx gd_dl_sparkle_white_color[] = {
+ gsDPSetPrimColor(0, 0, 255, 255, 255, 255),
gsSPEndDisplayList(),
};
-static Gfx sparkle_dl_801B4B18[] = {
+static Gfx gd_dl_red_sparkle_0[] = {
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_0),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_0),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4B38[] = {
+static Gfx gd_dl_red_sparkle_1[] = {
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_1),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_1),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4B58[] = {
+static Gfx gd_dl_red_sparkle_2[] = {
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_2),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_2),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4B78[] = {
+static Gfx gd_dl_red_sparkle_3[] = {
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_3),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_3),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4B98[] = {
+static Gfx gd_dl_red_sparkle_4[] = {
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_4),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4BB8[] ={
+static Gfx gd_dl_red_sparkle_4_dup[] ={
gsDPPipeSync(),
- gsSPDisplayList(red_dl_801B4AF8),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_4), // 4 again, correct texture would be 5
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_red_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4), // 4 again, correct texture would be 5
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4BD8[] = {
+static Gfx gd_dl_silver_sparkle_0[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_0),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_0),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4BF8[] = {
+static Gfx gd_dl_silver_sparkle_1[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_1),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_1),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4C18[] = {
+static Gfx gd_dl_silver_sparkle_2[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_2),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_2),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4C38[] = {
+static Gfx gd_dl_silver_sparkle_3[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_3),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_3),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4C58[] = {
+static Gfx gd_dl_silver_sparkle_4[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_4),
- gsSPBranchList(sparkle_dl_common),
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4),
+ gsSPBranchList(gd_dl_sparkle),
};
-static Gfx sparkle_dl_801B4C78[] = {
+static Gfx gd_dl_silver_sparkle_4_dup[] = {
gsDPPipeSync(),
- gsSPDisplayList(white_dl_801B4B08),
- gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, texture_sparkle_4), // 4 again, correct texture would be 5
- gsSPBranchList(sparkle_dl_common),
-};
-
-static Gfx *redSparkleDlArray[] = {
- sparkle_dl_801B4B98,
- sparkle_dl_801B4B98,
- sparkle_dl_801B4B78,
- sparkle_dl_801B4B78,
- sparkle_dl_801B4B58,
- sparkle_dl_801B4B58,
- sparkle_dl_801B4B38,
- sparkle_dl_801B4B38,
- sparkle_dl_801B4B18,
- sparkle_dl_801B4B18,
- sparkle_dl_801B4BB8,
- sparkle_dl_801B4BB8,
-};
-
-static Gfx *silverSparkleDlArray[] = {
- sparkle_dl_801B4C58,
- sparkle_dl_801B4C58,
- sparkle_dl_801B4C38,
- sparkle_dl_801B4C38,
- sparkle_dl_801B4C18,
- sparkle_dl_801B4C18,
- sparkle_dl_801B4BF8,
- sparkle_dl_801B4BF8,
- sparkle_dl_801B4BD8,
- sparkle_dl_801B4BD8,
- sparkle_dl_801B4C78,
- sparkle_dl_801B4C78,
+ gsSPDisplayList(gd_dl_sparkle_white_color),
+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gd_texture_sparkle_4), // 4 again, correct texture would be 5
+ gsSPBranchList(gd_dl_sparkle),
+};
+
+static Gfx *gd_red_sparkle_dl_array[] = {
+ gd_dl_red_sparkle_4,
+ gd_dl_red_sparkle_4,
+ gd_dl_red_sparkle_3,
+ gd_dl_red_sparkle_3,
+ gd_dl_red_sparkle_2,
+ gd_dl_red_sparkle_2,
+ gd_dl_red_sparkle_1,
+ gd_dl_red_sparkle_1,
+ gd_dl_red_sparkle_0,
+ gd_dl_red_sparkle_0,
+ gd_dl_red_sparkle_4_dup,
+ gd_dl_red_sparkle_4_dup,
+};
+
+static Gfx *gd_silver_sparkle_dl_array[] = {
+ gd_dl_silver_sparkle_4,
+ gd_dl_silver_sparkle_4,
+ gd_dl_silver_sparkle_3,
+ gd_dl_silver_sparkle_3,
+ gd_dl_silver_sparkle_2,
+ gd_dl_silver_sparkle_2,
+ gd_dl_silver_sparkle_1,
+ gd_dl_silver_sparkle_1,
+ gd_dl_silver_sparkle_0,
+ gd_dl_silver_sparkle_0,
+ gd_dl_silver_sparkle_4_dup,
+ gd_dl_silver_sparkle_4_dup,
};
static Gfx gd_texture3_dummy_aligner1[] = {
gsSPEndDisplayList(),
};
-ALIGNED8 static u8 texture_mario_face_shine[] = {
+ALIGNED8 static u8 gd_texture_mario_face_shine[] = {
#include "textures/intro_raw/mario_face_shine.ia8.inc.c"
};
-static Gfx marioHeadDl801B5100[] = {
+static Gfx gd_dl_mario_face_shine[] = {
gsSPSetGeometryMode(G_TEXTURE_GEN),
gsSPTexture(0x07C0, 0x07C0, 0, G_TX_RENDERTILE, G_ON),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPSetCombineMode(G_CC_HILITERGBA, G_CC_HILITERGBA),
- gsDPLoadTextureBlock(texture_mario_face_shine, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
+ gsDPLoadTextureBlock(gd_texture_mario_face_shine, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0,
+ G_TX_WRAP | G_TX_NOMIRROR, G_TX_WRAP | G_TX_NOMIRROR, 5, 5, G_TX_NOLOD, G_TX_NOLOD),
gsDPPipeSync(),
gsSPEndDisplayList(),
};
-static Gfx marioHeadDl801B5170[] = {
+static Gfx gd_dl_rsp_init[] = {
gsSPClearGeometryMode(0xFFFFFFFF),
gsSPSetGeometryMode(G_SHADING_SMOOTH | G_SHADE),
gsSPEndDisplayList(),
};
-static Gfx marioHeadDl801B5188[] = {
+static Gfx gd_dl_rdp_init[] = {
gsDPPipeSync(),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetCycleType(G_CYC_1CYCLE),
@@ -672,7 +669,7 @@ static Gfx marioHeadDl801B5188[] = {
static u32 gd_unused_pad1 = 0;
-float D_801B520C = 1.0;
+float sGdPerspTimer = 1.0;
static u32 gd_unused_pad2 = 0;
@@ -681,32 +678,32 @@ static Gfx gd_texture4_dummy_aligner1[] = {
gsSPEndDisplayList(),
};
-static Vtx_t vertex_801B5228[] = {
+static Vtx_t gd_unused_mesh_vertex_group1[] = {
{{-8, 8, 0}, 0, { 0, 0}, { 0x00, 0x00, 0x00, 0xFF}},
{{ 8, -2, 0}, 0, { 0, 0}, { 0x00, 0x00, 0x00, 0xFF}},
{{ 2, -8, 0}, 0, { 0, 0}, { 0x00, 0x00, 0x00, 0xFF}},
};
-static Vtx_t vertex_801B5258[] = {
+static Vtx_t gd_unused_mesh_vertex_group2[] = {
{{-6, 6, 0}, 0, { 0, 0}, { 0xFF, 0xFF, 0xFF, 0xFF}},
{{ 7, -3, 0}, 0, { 0, 0}, { 0xFF, 0x00, 0x00, 0xFF}},
{{ 3, -7, 0}, 0, { 0, 0}, { 0xFF, 0x00, 0x00, 0xFF}},
};
-static Gfx dl_801B5288[] = {
+static Gfx gd_dl_unused_mesh[] = {
gsDPPipeSync(),
gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
gsSPClearGeometryMode(0xFFFFFFFF),
gsSPSetGeometryMode(G_SHADING_SMOOTH | G_SHADE),
gsDPPipeSync(),
- gsSPVertex(vertex_801B5228, 3, 0),
+ gsSPVertex(gd_unused_mesh_vertex_group1, 3, 0),
gsSP1Triangle(0, 1, 2, 0x0),
- gsSPVertex(vertex_801B5258, 3, 0),
+ gsSPVertex(gd_unused_mesh_vertex_group2, 3, 0),
gsSP1Triangle(0, 1, 2, 0x0),
gsSPEndDisplayList(),
};
-static Gfx marioHeadDl801B52D8[] = {
+static Gfx gd_dl_sprite_start_tex_block[] = {
gsDPPipeSync(),
gsDPSetCycleType(G_CYC_1CYCLE),
gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON),
@@ -730,7 +727,7 @@ void parse_p1_controller(void);
void update_cursor(void);
void update_view_and_dl(struct ObjView *);
void func_801A1A00(void);
-void func_801A2388(s32);
+void gddl_is_loading_shine_dl(s32);
void func_801A3370(f32, f32, f32);
void gd_put_sprite(u16 *, s32, s32, s32, s32);
void reset_cur_dl_indices(void);
@@ -920,7 +917,7 @@ void gd_printf(const char *format, ...) {
va_end(args);
*csr = '\0';
- if ((intptr_t) csr - (intptr_t) buf >= ARRAY_COUNT(buf) - 1) {
+ if (csr - buf >= ARRAY_COUNT(buf) - 1) {
fatal_printf("printf too long");
}
}
@@ -1026,27 +1023,28 @@ void setup_stars(void) {
gShapeRedStar = make_shape(0, "redstar");
gShapeRedStar->gdDls[0] = new_gddl_from(NULL, 0);
gShapeRedStar->gdDls[1] = gShapeRedStar->gdDls[0];
- sGdDLArray[gShapeRedStar->gdDls[0]]->dlptr = redStarDlArray;
- sGdDLArray[gShapeRedStar->gdDls[1]]->dlptr = redStarDlArray;
+ sGdDLArray[gShapeRedStar->gdDls[0]]->dlptr = gd_red_star_dl_array;
+ sGdDLArray[gShapeRedStar->gdDls[1]]->dlptr = gd_red_star_dl_array;
gShapeSilverStar = make_shape(0, "silverstar");
gShapeSilverStar->gdDls[0] = new_gddl_from(NULL, 0);
gShapeSilverStar->gdDls[1] = gShapeSilverStar->gdDls[0];
- sGdDLArray[gShapeSilverStar->gdDls[0]]->dlptr = silverStarDlArray;
- sGdDLArray[gShapeSilverStar->gdDls[1]]->dlptr = silverStarDlArray;
+ sGdDLArray[gShapeSilverStar->gdDls[0]]->dlptr = gd_silver_star_dl_array;
+ sGdDLArray[gShapeSilverStar->gdDls[1]]->dlptr = gd_silver_star_dl_array;
- // TODO: what way should we name these? based on goddard's name, or on what they do/actually are?
- gShapeSilSpark = make_shape(0, "sspark");
- gShapeSilSpark->gdDls[0] = new_gddl_from(NULL, 0);
- gShapeSilSpark->gdDls[1] = gShapeSilSpark->gdDls[0];
- sGdDLArray[gShapeSilSpark->gdDls[0]]->dlptr = redSparkleDlArray;
- sGdDLArray[gShapeSilSpark->gdDls[1]]->dlptr = redSparkleDlArray;
-
- gShapeRedSpark = make_shape(0, "rspark");
+ // make_shape names of the dl array they call are misnamed (swapped)
+ // "sspark" calls red sparkles and "rspark" calls silver sparkles
+ gShapeRedSpark = make_shape(0, "sspark");
gShapeRedSpark->gdDls[0] = new_gddl_from(NULL, 0);
gShapeRedSpark->gdDls[1] = gShapeRedSpark->gdDls[0];
- sGdDLArray[gShapeRedSpark->gdDls[0]]->dlptr = silverSparkleDlArray;
- sGdDLArray[gShapeRedSpark->gdDls[1]]->dlptr = silverSparkleDlArray;
+ sGdDLArray[gShapeRedSpark->gdDls[0]]->dlptr = gd_red_sparkle_dl_array;
+ sGdDLArray[gShapeRedSpark->gdDls[1]]->dlptr = gd_red_sparkle_dl_array;
+
+ gShapeSilverSpark = make_shape(0, "rspark");
+ gShapeSilverSpark->gdDls[0] = new_gddl_from(NULL, 0);
+ gShapeSilverSpark->gdDls[1] = gShapeSilverSpark->gdDls[0];
+ sGdDLArray[gShapeSilverSpark->gdDls[0]]->dlptr = gd_silver_sparkle_dl_array;
+ sGdDLArray[gShapeSilverSpark->gdDls[1]]->dlptr = gd_silver_sparkle_dl_array;
}
/* 24A8D0 -> 24AA40 */
@@ -1308,7 +1306,7 @@ void *gdm_gettestdl(s32 id) {
break;
case 5:
sActiveView = sScreenView2;
- set_gd_mtx_parameters(6);
+ set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);
dobj = d_use_obj("testnet2");
sCarGdDlNum = gd_startdisplist(8);
@@ -1316,7 +1314,7 @@ void *gdm_gettestdl(s32 id) {
fatal_printf("no memory for car DL\n");
}
apply_obj_draw_fn(dobj);
- gd_end_dl();
+ gd_enddlsplist_parent();
gddl = sGdDLArray[sCarGdDlNum];
sUpdateCarScene = TRUE;
break;
@@ -1336,7 +1334,7 @@ void gdm_getpos(s32 id, struct GdVec3f *dst) {
struct GdObj *dobj; // 1c
switch (id) {
case 5:
- set_gd_mtx_parameters(6);
+ set_gd_mtx_parameters(G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH);
dobj = d_use_obj("testnet2");
dst->x = ((struct ObjNet *) dobj)->unk14.x;
dst->y = ((struct ObjNet *) dobj)->unk14.y;
@@ -1418,7 +1416,7 @@ struct GdDisplayList *create_child_gdl(s32 id, struct GdDisplayList *srcDl) {
//! @bug No return statement, despite return value being used.
//! Goddard lucked out that `v0` return from alloc_displaylist()
//! is not overwriten, as that pointer is what should be returned
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return newDl;
#endif
}
@@ -1479,14 +1477,14 @@ struct GdDisplayList *new_gd_dl(s32 id, s32 gfxs, s32 verts, s32 mtxs, s32 light
}
/* 24BA48 -> 24BABC; not called */
-void gd_init_RSP(void) {
- gSPDisplayList(next_gfx(), osVirtualToPhysical(&marioHeadDl801B5170));
+void gd_rsp_init(void) {
+ gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_rsp_init));
gDPPipeSync(next_gfx());
}
/* 24BABC -> 24BB30; not called */
-void gd_init_RDP(void) {
- gSPDisplayList(next_gfx(), osVirtualToPhysical(&marioHeadDl801B5188));
+void gd_rdp_init(void) {
+ gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_rdp_init));
gDPPipeSync(next_gfx());
}
@@ -1546,12 +1544,12 @@ void gd_set_fill(struct GdColour *colour) {
}
/* 24CDB4 -> 24CE10; orig name: func_8019E5E4 */
-void gd_set_view_zbuf(void) {
+void gd_set_zb_area(void) {
gDPSetDepthImage(next_gfx(), GD_LOWER_24(sActiveView->parent->zbuf));
}
/* 24CE10 -> 24CF2C; orig name: func_8019E640 */
-void gd_set_view_framebuf(void) {
+void gd_set_color_fb(void) {
gDPSetColorImage(next_gfx(), G_IM_FMT_RGBA, G_IM_SIZ_16b, sActiveView->parent->lowerRight.x,
GD_LOWER_24(sActiveView->parent->colourBufs[gGdFrameBuf]));
}
@@ -1614,13 +1612,13 @@ s32 gd_startdisplist(s32 memarea) {
}
/* 24D1D4 -> 24D23C */
-void gd_enddisplist(void) {
+void gd_enddlsplist(void) {
gDPPipeSync(next_gfx());
gSPEndDisplayList(next_gfx());
}
/* 24D23C -> 24D39C; orig name: func_8019EA6C */
-s32 gd_end_dl(void) {
+s32 gd_enddlsplist_parent(void) {
s32 curDlIdx = 0; // 24
gDPPipeSync(next_gfx());
@@ -1661,7 +1659,7 @@ u32 Unknown8019EC88(Gfx *dl, UNUSED s32 arg1) {
}
/* 24D4C4 -> 24D63C; orig name: func_8019ECF4 */
-void mat4_to_Mtx(const Mat4f *src, Mtx *dst) {
+void mat4_to_mtx(const Mat4f *src, Mtx *dst) {
s32 i; // 14
s32 j; // 10
s32 w1;
@@ -1683,38 +1681,38 @@ void mat4_to_Mtx(const Mat4f *src, Mtx *dst) {
/* 24D63C -> 24D6E4; orig name: func_8019EE6C */
void add_mat4_to_dl(Mat4f *mtx) {
- mat4_to_Mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));
- gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParameters);
+ mat4_to_mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));
+ gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParamType | G_MTX_MUL | G_MTX_NOPUSH);
next_mtx();
}
/* 24D6E4 -> 24D790; orig name: func_8019EF14 */
void add_mat4_load_to_dl(Mat4f *mtx) {
- mat4_to_Mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));
+ mat4_to_mtx(mtx, &DL_CURRENT_MTX(sCurrentGdDl));
gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),
- sMtxParameters | G_MTX_LOAD);
+ sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);
next_mtx();
}
/* 24D790 -> 24D7FC */
-void Unknown8019EFC0(void) {
- gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParameters | G_MTX_LOAD);
+void idn_mtx_load_gddl(void) {
+ gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);
}
/* 24D7FC -> 24D868; orig name: func_8019F02C */
-void push_idn_mtx_cur_gddl(void) {
- gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParameters | G_MTX_PUSH);
+void idn_mtx_push_gddl(void) {
+ gSPMatrix(next_gfx(), osVirtualToPhysical(&sIdnMtx), sMtxParamType | G_MTX_MUL | G_MTX_PUSH);
}
/* 24D868 -> 24D8B4; orig name: func_8019F098 */
void pop_mtx_gddl(void) {
- gSPPopMatrix(next_gfx(), sMtxParameters);
+ gSPPopMatrix(next_gfx(), sMtxParamType);
}
/* 24D8B4 -> 24D96C; orig name: func_8019F0E4 */
void translate_mtx_gddl(f32 x, f32 y, f32 z) {
guTranslate(&DL_CURRENT_MTX(sCurrentGdDl), x, y, z);
- gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParameters);
+ gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)), sMtxParamType | G_MTX_MUL | G_MTX_NOPUSH);
next_mtx();
}
@@ -1722,7 +1720,7 @@ void translate_mtx_gddl(f32 x, f32 y, f32 z) {
void translate_load_mtx_gddl(f32 x, f32 y, f32 z) {
guTranslate(&DL_CURRENT_MTX(sCurrentGdDl), x, y, z);
gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),
- sMtxParameters | G_MTX_LOAD);
+ sMtxParamType | G_MTX_LOAD | G_MTX_NOPUSH);
next_mtx();
}
@@ -1758,7 +1756,7 @@ void func_8019F318(struct ObjCamera *cam, f32 arg1, f32 arg2, f32 arg3, f32 arg4
func_80193B68(&cam->unkE8, arg1, arg2, arg3, arg4, arg5, arg6, gd_sin_d(arg7), gd_cos_d(arg7),
0.0f);
// 8019F3C8
- mat4_to_Mtx(&cam->unkE8, &DL_CURRENT_MTX(sCurrentGdDl));
+ mat4_to_mtx(&cam->unkE8, &DL_CURRENT_MTX(sCurrentGdDl));
gSPMatrix(next_gfx(), osVirtualToPhysical(&DL_CURRENT_MTX(sCurrentGdDl)),
G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH);
// 8019F434
@@ -1912,7 +1910,6 @@ void func_801A0070(void) {
startvtx = D_801BB0CC;
if (D_801BB0BC != 0) {
gSPVertex(next_gfx(), osVirtualToPhysical(&sCurrentGdDl->vtx[D_801BB0CC]), D_801BB0BC, 0);
- // TODO: check gSP1Triangle macro for flag shift
for (i = 0; i < D_801BB0C4; i++) {
gSP1Triangle(next_gfx(), D_801BAF30[i][0] - D_801BB0CC, D_801BAF30[i][1] - D_801BB0CC,
D_801BAF30[i][2] - D_801BB0CC, 0);
@@ -1943,13 +1940,13 @@ void func_801A02B8(f32 arg0) {
/* 24EAF4 -> 24EB0C */
// light id?
-void func_801A0324(s32 arg0) {
- D_801BB1D0 = arg0;
+void set_light_id(s32 index) {
+ sLightId = index;
}
/* 24EB0C -> 24EB24; orig name: func_801A033C */
void set_light_num(s32 n) {
- D_801BB188 = n;
+ sNumLights = n;
}
/* 24EB24 -> 24EC18 */
@@ -1961,8 +1958,8 @@ s32 create_mtl_gddl(UNUSED s32 mtlType) {
blue.g = 0.0f;
blue.b = 1.0f;
dlnum = gd_startdisplist(7);
- func_801A086C(dlnum, &blue, 0x20);
- gd_end_dl();
+ func_801A086C(dlnum, &blue, GD_MTL_TEX_OFF);
+ gd_enddlsplist_parent();
sCurrentGdDl->totalVtx = sCurrentGdDl->curVtxIdx;
sCurrentGdDl->totalMtx = sCurrentGdDl->curMtxIdx;
sCurrentGdDl->totalLights = sCurrentGdDl->curLightIdx;
@@ -1996,7 +1993,7 @@ void func_801A0478(s32 idx, // material GdDl number; offsets into hilite array
if (idx >= 0xc8) {
fatal_printf("too many hilites");
}
- hilite = &D_801BB1D8[idx];
+ hilite = &sHilites[idx];
gDPSetPrimColor(next_gfx(), 0, 0, (s32)(colour->r * 255.0f), (s32)(colour->g * 255.0f),
(s32)(colour->b * 255.0f), 255);
@@ -2025,48 +2022,44 @@ void func_801A0478(s32 idx, // material GdDl number; offsets into hilite array
}
/* 24F03C -> 24FDB8 */
-s32 func_801A086C(s32 id, struct GdColour *colour, s32 arg2) {
+s32 func_801A086C(s32 id, struct GdColour *colour, s32 material) {
UNUSED u32 pad60[2];
- s32 i; // 5c
- s32 sp58 = D_801BB188; // number of lights?
- s32 sp4C[3]; // converted color array
- s32 sp40[3]; // bytes from weird struct in bss
+ s32 i;
+ s32 numLights = sNumLights;
+ s32 scaledColours[3];
+ s32 lightDir[3];
if (id > 0) {
reset_dlnum_indices(id);
}
// L801A08B0
- // TODO: flags?
- switch (arg2) {
- case 0x20:
- func_801A2374(FALSE);
- func_801A2374(FALSE);
- func_801A2374(FALSE);
- func_801A2374(FALSE);
- func_801A2388(FALSE);
- func_801A2388(FALSE);
- func_801A2388(FALSE);
- func_801A2388(FALSE);
- sp58 = 2;
+ switch (material) {
+ case GD_MTL_TEX_OFF:
+ gddl_is_loading_stub_dl(FALSE);
+ gddl_is_loading_stub_dl(FALSE);
+ gddl_is_loading_stub_dl(FALSE);
+ gddl_is_loading_stub_dl(FALSE);
+ gddl_is_loading_shine_dl(FALSE);
+ gddl_is_loading_shine_dl(FALSE);
+ gddl_is_loading_shine_dl(FALSE);
+ gddl_is_loading_shine_dl(FALSE);
+ numLights = NUMLIGHTS_2;
break;
- case 0x01:
- func_801A2374(TRUE);
+ case GD_MTL_STUB_DL:
+ gddl_is_loading_stub_dl(TRUE);
break;
- case 0x10:
- func_801A2388(TRUE);
+ case GD_MTL_SHINE_DL:
+ gddl_is_loading_shine_dl(TRUE);
if (id >= 200) {
fatal_printf("too many hilites");
}
- // the macro does the 0xFFF mask,
- // but it seems goddard unnecessarily masked the parameters as well
- gDPSetTileSize(next_gfx(), G_TX_RENDERTILE, D_801BB1D8[id].h.x1 & 0xFFF, D_801BB1D8[id].h.y1 & 0xFFF,
- (D_801BB1D8[id].h.x1 + ((32 - 1) << G_TEXTURE_IMAGE_FRAC)) & 0xFFF, (D_801BB1D8[id].h.y1 + ((32 - 1) << G_TEXTURE_IMAGE_FRAC)) & 0xFFF);
+ gDPSetHilite1Tile(next_gfx(), G_TX_RENDERTILE, &sHilites[id], 32, 32);
break;
- case 0x04:
+ case GD_MTL_BREAK:
break;
default:
- func_801A2374(FALSE);
- func_801A2388(FALSE);
+ gddl_is_loading_stub_dl(FALSE);
+ gddl_is_loading_shine_dl(FALSE);
DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0] = colour->r * 255.0f;
DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1] = colour->g * 255.0f;
@@ -2089,52 +2082,52 @@ s32 func_801A086C(s32 id, struct GdColour *colour, s32 arg2) {
gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl).a), LIGHT_2);
next_light();
if (id > 0) {
- gd_enddisplist();
+ gd_enddlsplist();
}
return 0;
break;
}
// L801A0EF4
- sp4C[0] = (s32)(colour->r * sAmbScaleColour.r * 255.0f);
- sp4C[1] = (s32)(colour->g * sAmbScaleColour.g * 255.0f);
- sp4C[2] = (s32)(colour->b * sAmbScaleColour.b * 255.0f);
+ scaledColours[0] = (s32)(colour->r * sAmbScaleColour.r * 255.0f);
+ scaledColours[1] = (s32)(colour->g * sAmbScaleColour.g * 255.0f);
+ scaledColours[2] = (s32)(colour->b * sAmbScaleColour.b * 255.0f);
// 801A0FE4
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0] = sp4C[0];
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1] = sp4C[1];
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[2] = sp4C[2];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[0] = scaledColours[0];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[1] = scaledColours[1];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.col[2] = scaledColours[2];
// 801A1068
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[0] = sp4C[0];
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[1] = sp4C[1];
- DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[2] = sp4C[2];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[0] = scaledColours[0];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[1] = scaledColours[1];
+ DL_CURRENT_LIGHT(sCurrentGdDl).a.l.colc[2] = scaledColours[2];
// 801A10EC
- gSPNumLights(next_gfx(), sp58);
- for (i = 0; i < sp58; i++) { // L801A1134
- sp4C[0] = colour->r * sLightScaleColours[i].r * 255.0f;
- sp4C[1] = colour->g * sLightScaleColours[i].g * 255.0f;
- sp4C[2] = colour->b * sLightScaleColours[i].b * 255.0f;
+ gSPNumLights(next_gfx(), numLights);
+ for (i = 0; i < numLights; i++) { // L801A1134
+ scaledColours[0] = colour->r * sLightScaleColours[i].r * 255.0f;
+ scaledColours[1] = colour->g * sLightScaleColours[i].g * 255.0f;
+ scaledColours[2] = colour->b * sLightScaleColours[i].b * 255.0f;
// 801A1260
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[0] = sp4C[0];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[1] = sp4C[1];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[2] = sp4C[2];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[0] = sp4C[0];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[1] = sp4C[1];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[2] = sp4C[2];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[0] = scaledColours[0];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[1] = scaledColours[1];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.col[2] = scaledColours[2];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[0] = scaledColours[0];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[1] = scaledColours[1];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.colc[2] = scaledColours[2];
// 801A13B0
- sp40[0] = D_801BB1B8[i].u0.bytes.b3;
- sp40[1] = D_801BB1B8[i].u4.bytes.b3;
- sp40[2] = D_801BB1B8[i].u8.bytes.b3;
+ lightDir[0] = (s8)sLightDirections[i].x;
+ lightDir[1] = (s8)sLightDirections[i].y;
+ lightDir[2] = (s8)sLightDirections[i].z;
// 801A141C
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[0] = sp40[0];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[1] = sp40[1];
- DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[2] = sp40[2];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[0] = lightDir[0];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[1] = lightDir[1];
+ DL_CURRENT_LIGHT(sCurrentGdDl).l[i].l.dir[2] = lightDir[2];
// 801A14C4
gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl).l[i]), i + 1);
}
// L801A1550
gSPLight(next_gfx(), osVirtualToPhysical(&DL_CURRENT_LIGHT(sCurrentGdDl)), i + 1);
next_light();
- gd_enddisplist();
+ gd_enddlsplist();
return 0;
}
@@ -2157,13 +2150,13 @@ void set_Vtx_norm_buf_2(struct GdVec3f *norm) {
}
/* 24FF80 -> 24FFDC; orig name: func_801A17B0 */
-void set_gd_mtx_parameters(s32 paramType) {
- switch (paramType) {
- case 5:
- sMtxParameters = G_MTX_PROJECTION | G_MTX_MUL | G_MTX_NOPUSH;
+void set_gd_mtx_parameters(s32 params) {
+ switch (params) {
+ case G_MTX_PROJECTION | G_MTX_MUL | G_MTX_PUSH:
+ sMtxParamType = G_MTX_PROJECTION;
break;
- case 6:
- sMtxParameters = G_MTX_MODELVIEW | G_MTX_MUL | G_MTX_NOPUSH;
+ case G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH:
+ sMtxParamType = G_MTX_MODELVIEW;
break;
}
}
@@ -2208,7 +2201,7 @@ void func_801A1A00(void) {
/* 250300 -> 250640 */
void Unknown801A1B30(void) {
gDPPipeSync(next_gfx());
- gd_set_view_framebuf();
+ gd_set_color_fb();
gd_set_fill(&sActiveView->colour);
gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x), (u32)(sActiveView->upperLeft.y),
(u32)(sActiveView->upperLeft.x + sActiveView->lowerRight.x - 1.0f),
@@ -2221,15 +2214,15 @@ void Unknown801A1E70(void) {
gDPPipeSync(next_gfx());
gDPSetCycleType(next_gfx(), G_CYC_FILL);
gDPSetRenderMode(next_gfx(), G_RM_OPA_SURF, G_RM_OPA_SURF2);
- gd_set_view_zbuf();
+ gd_set_zb_area();
gDPSetColorImage(next_gfx(), G_IM_FMT_RGBA, G_IM_SIZ_16b, sActiveView->parent->lowerRight.x,
GD_LOWER_24(sActiveView->parent->zbuf));
- gDPSetFillColor(next_gfx(), GPACK_RGBA5551(248, 248, 240, 0) << 16 | GPACK_RGBA5551(248, 248, 240, 0));
+ gDPSetFillColor(next_gfx(), GPACK_ZDZ(G_MAXFBZ, 0) << 16 | GPACK_ZDZ(G_MAXFBZ, 0));
gDPFillRectangle(next_gfx(), (u32)(sActiveView->upperLeft.x), (u32)(sActiveView->upperLeft.y),
(u32)(sActiveView->upperLeft.x + sActiveView->lowerRight.x - 1.0f),
(u32)(sActiveView->upperLeft.y + sActiveView->lowerRight.y - 1.0f));
gDPPipeSync(next_gfx());
- gd_set_view_framebuf();
+ gd_set_color_fb();
}
/* 250AE0 -> 250B30; orig name: func_801A2310 */
@@ -2244,13 +2237,13 @@ void Unknown801A2360(void) {
}
/* 250B44 -> 250B58 */
-void func_801A2374(UNUSED s32 arg0) {
+void gddl_is_loading_stub_dl(UNUSED s32 dlLoad) {
}
/* 250B58 -> 250C18 */
-void func_801A2388(s32 gotoDl) {
- if (gotoDl) {
- gSPDisplayList(next_gfx(), osVirtualToPhysical(&marioHeadDl801B5100));
+void gddl_is_loading_shine_dl(s32 dlLoad) {
+ if (dlLoad) {
+ gSPDisplayList(next_gfx(), osVirtualToPhysical(&gd_dl_mario_face_shine));
} else {
gSPTexture(next_gfx(), 0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF);
gDPSetCombineMode(next_gfx(), G_CC_SHADE, G_CC_SHADE);
@@ -2549,14 +2542,14 @@ void gd_setproperty(enum GdProperty prop, f32 f1, f32 f2, f32 f3) {
sAmbScaleColour.b = f3;
break;
case GD_PROP_LIGHT_DIR:
- D_801BB1B8[D_801BB1D0].u0.w = (s32)(f1 * 120.f);
- D_801BB1B8[D_801BB1D0].u4.w = (s32)(f2 * 120.f);
- D_801BB1B8[D_801BB1D0].u8.w = (s32)(f3 * 120.f);
+ sLightDirections[sLightId].x = (s32)(f1 * 120.f);
+ sLightDirections[sLightId].y = (s32)(f2 * 120.f);
+ sLightDirections[sLightId].z = (s32)(f3 * 120.f);
break;
case GD_PROP_DIFUSE_COLOUR:
- sLightScaleColours[D_801BB1D0].r = f1;
- sLightScaleColours[D_801BB1D0].g = f2;
- sLightScaleColours[D_801BB1D0].b = f3;
+ sLightScaleColours[sLightId].r = f1;
+ sLightScaleColours[sLightId].g = f2;
+ sLightScaleColours[sLightId].b = f3;
break;
case GD_PROP_CULLING:
parm = (s32) f1;
@@ -2613,9 +2606,9 @@ void stub_801A3AE0(void) {
}
/* 2522C0 -> 25245C */
-void func_801A3AF0(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f) {
- uintptr_t orthoMtx; // 3c
- uintptr_t rotMtx; // 38
+void gd_create_ortho_matrix(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f) {
+ uintptr_t orthoMtx;
+ uintptr_t rotMtx;
// Should produce G_RDPHALF_1 in Fast3D
gSPPerspNormalize(next_gfx(), 0xFFFF);
@@ -2634,15 +2627,15 @@ void func_801A3AF0(f32 l, f32 r, f32 b, f32 t, f32 n, f32 f) {
}
/* 25245C -> 25262C */
-void func_801A3C8C(f32 fovy, f32 aspect, f32 near, f32 far) {
- u16 perspNorm; // 4e
- UNUSED u32 pad48;
- uintptr_t perspecMtx; // 44
- uintptr_t rotMtx; // 40
- UNUSED u32 pad3C;
- UNUSED f32 sp38 = 0.0625f;
-
- D_801B520C += 0.1; //? 1.0f
+void gd_create_perspective_matrix(f32 fovy, f32 aspect, f32 near, f32 far) {
+ u16 perspNorm;
+ UNUSED u32 unused1;
+ uintptr_t perspecMtx;
+ uintptr_t rotMtx;
+ UNUSED u32 unused2;
+ UNUSED f32 unusedf = 0.0625f;
+
+ sGdPerspTimer += 0.1;
guPerspective(&DL_CURRENT_MTX(sCurrentGdDl), &perspNorm, fovy, aspect, near, far, 1.0f);
gSPPerspNormalize(next_gfx(), perspNorm);
@@ -2720,7 +2713,7 @@ s32 setup_view_buffers(const char *name, struct ObjView *view, UNUSED s32 ulx, U
//! doesn't use four of its parameters, this function may have
//! had a fair amount of its code commented out. In game, the
//! returned value is always 0, so the fix returns that value
-#if BUGFIX_GODDARD_MISSING_RETURN
+#ifdef AVOID_UB
return 0;
#endif
}
@@ -2796,7 +2789,7 @@ s32 gd_gentexture(void *texture, s32 fmt, s32 size, UNUSED u32 arg3, UNUSED u32
if (dl == 0) {
fatal_printf("Cant generate DL for texture");
}
- gd_end_dl();
+ gd_enddlsplist_parent();
D_801BB060[D_801A86A0] = dl;
return dl;
@@ -2955,11 +2948,11 @@ void update_cursor(void) {
reset_dlnum_indices(sHandShape->gdDls[gGdFrameBuf]);
if (gGdCtrl.btnApressed) {
- gd_put_sprite((u16 *) textureHandClosed, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);
+ gd_put_sprite((u16 *) gd_texture_hand_closed, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);
} else {
- gd_put_sprite((u16 *) textureHandOpen, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);
+ gd_put_sprite((u16 *) gd_texture_hand_open, sHandView->upperLeft.x, sHandView->upperLeft.y, 0x20, 0x20);
}
- gd_end_dl();
+ gd_enddlsplist_parent();
if (sHandView->upperLeft.x < sHandView->parent->upperLeft.x) {
sHandView->upperLeft.x = sHandView->parent->upperLeft.x;
@@ -3078,7 +3071,7 @@ void Unknown801A5344(void) {
sScreenView2->gdDlNum = gd_startdisplist(8);
start_view_dl(sScreenView2);
gd_set_one_cycle();
- gd_end_dl();
+ gd_enddlsplist_parent();
func_801A4848(sScreenView2->gdDlNum);
func_801A48B4();
func_801A4808();
@@ -3106,7 +3099,7 @@ void gd_init(void) {
sNewZPresses = 0;
sGdDlCount = 0;
D_801A8674 = 0;
- D_801BB1D0 = 0;
+ sLightId = 0;
sAmbScaleColour.r = 0.0f;
sAmbScaleColour.g = 0.0f;
sAmbScaleColour.b = 0.0f;
@@ -3115,14 +3108,14 @@ void gd_init(void) {
sLightScaleColours[i].r = 1.0f;
sLightScaleColours[i].g = 0.0f;
sLightScaleColours[i].b = 0.0f;
- D_801BB1B8[i].u0.w = 0;
- D_801BB1B8[i].u4.w = 120;
- D_801BB1B8[i].u8.w = 0;
+ sLightDirections[i].x = 0;
+ sLightDirections[i].y = 120;
+ sLightDirections[i].z = 0;
}
- D_801BB188 = 2;
+ sNumLights = NUMLIGHTS_2;
set_identity_mat4(&sInitIdnMat4);
- mat4_to_Mtx(&sInitIdnMat4, &sIdnMtx);
+ mat4_to_mtx(&sInitIdnMat4, &sIdnMtx);
remove_all_memtrackers();
null_obj_lists();
start_memtracker("total");
@@ -3413,7 +3406,7 @@ void gd_put_sprite(u16 *sprite, s32 x, s32 y, s32 wx, s32 wy) {
s32 c; // 5c
s32 r; // 58
- gSPDisplayList(next_gfx(), osVirtualToPhysical(marioHeadDl801B52D8));
+ gSPDisplayList(next_gfx(), osVirtualToPhysical(gd_dl_sprite_start_tex_block));
for (r = 0; r < wy; r += 0x20) {
for (c = 0; c < wx; c += 0x20) {
gDPLoadTextureBlock(next_gfx(), (r * 0x20) + sprite + c, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0,
@@ -3437,11 +3430,11 @@ void gd_setup_cursor(struct ObjGroup *parentgrp) {
sHandShape = make_shape(0, "mouse");
sHandShape->gdDls[0] = gd_startdisplist(7);
- gd_put_sprite((u16 *) textureHandOpen, 100, 100, 32, 32);
- gd_end_dl();
+ gd_put_sprite((u16 *) gd_texture_hand_open, 100, 100, 32, 32);
+ gd_enddlsplist_parent();
sHandShape->gdDls[1] = gd_startdisplist(7);
- gd_put_sprite((u16 *) textureHandOpen, 100, 100, 32, 32);
- gd_end_dl();
+ gd_put_sprite((u16 *) gd_texture_hand_open, 100, 100, 32, 32);
+ gd_enddlsplist_parent();
d_start_group("mouseg");
net = (struct ObjNet *) d_makeobj(D_NET, AsDynId(0));
diff --git a/src/goddard/renderer.h b/src/goddard/renderer.h
@@ -53,9 +53,9 @@ extern void gd_set_fill(struct GdColour *);
extern void stash_current_gddl(void);
extern void pop_gddl_stash(void);
extern s32 gd_startdisplist(s32);
-extern s32 gd_end_dl();
+extern s32 gd_enddlsplist_parent();
extern void add_mat4_load_to_dl(Mat4f *);
-extern void push_idn_mtx_cur_gddl(void);
+extern void idn_mtx_push_gddl(void);
extern void pop_mtx_gddl(void);
extern void translate_mtx_gddl(f32, f32, f32);
extern void translate_load_mtx_gddl(f32, f32, f32);
@@ -69,7 +69,7 @@ extern void add_tri_to_dl(f32, f32, f32, f32, f32, f32, f32, f32, f32);
extern void func_801A0038(void);
extern void func_801A0070(void);
extern void func_801A02B8(f32);
-extern void func_801A0324(s32);
+extern void set_light_id(s32);
extern void set_light_num(s32);
extern s32 create_mtl_gddl(s32);
extern void branch_to_gddl(s32);
@@ -79,14 +79,14 @@ extern void set_Vtx_norm_buf_1(struct GdVec3f *);
extern void set_Vtx_norm_buf_2(struct GdVec3f *);
extern void set_gd_mtx_parameters(s32);
extern void gd_set_one_cycle(void);
-extern void func_801A2374(s32);
+extern void gddl_is_loading_stub_dl(s32);
extern void start_view_dl(struct ObjView *);
extern void border_active_view(void);
extern void gd_shading(s32);
extern s32 gd_getproperty(s32, void *);
extern void gd_setproperty(enum GdProperty, f32, f32, f32);
-extern void func_801A3AF0(f32, f32, f32, f32, f32, f32);
-extern void func_801A3C8C(f32, f32, f32, f32);
+extern void gd_create_ortho_matrix(f32, f32, f32, f32, f32, f32);
+extern void gd_create_perspective_matrix(f32, f32, f32, f32);
extern s32 setup_view_buffers(const char *, struct ObjView *, s32, s32, s32, s32);
extern void gd_init_controllers(void);
extern void Proc801A43DC(struct GdObj *); //apply to OBJ_TYPE_VIEWS
diff --git a/src/goddard/shape_helper.c b/src/goddard/shape_helper.c
@@ -29,8 +29,8 @@ struct UnkData {
struct ObjGroup *gMarioFaceGrp = NULL; // @ 801A82E0; returned by load_dynlist
struct ObjShape *D_801A82E4 = NULL; // Shape used for drawing lights?
static struct ObjShape *D_801A82E8 = NULL; // returned by load_dynlist
-struct ObjShape *gShapeSilSpark = NULL; // @ 801A82EC
-struct ObjShape *gShapeRedSpark = NULL; // @ 801A82F0
+struct ObjShape *gShapeRedSpark = NULL; // @ 801A82EC
+struct ObjShape *gShapeSilverSpark = NULL; // @ 801A82F0
struct ObjShape *gShapeRedStar = NULL; // @ 801A82F4
struct ObjShape *gShapeSilverStar = NULL; // @ 801A82F8
static struct UnkData sUnref801A82FC = { { {
@@ -1344,21 +1344,21 @@ s32 load_mario_head(void (*aniFn)(struct ObjAnimator *)) {
sp24->unk60 = 3;
sp24->unk64 = 3;
sp24->unkBC = &sp2C->header;
- sp24->unk1C = gShapeRedSpark;
+ sp24->unk1C = gShapeSilverSpark;
addto_group(gGdLightGroup, &sp24->header);
sp24 = make_particle(0, 1, 0.0f, 0.0f, 0.0f);
sp24->unk60 = 3;
sp24->unk64 = 2;
sp24->unkBC = d_use_obj("N228l"); // probably a camera
- sp24->unk1C = gShapeRedSpark;
+ sp24->unk1C = gShapeSilverSpark;
addto_group(gGdLightGroup, &sp24->header);
sp24 = make_particle(0, 2, 0.0f, 0.0f, 0.0f);
sp24->unk60 = 3;
sp24->unk64 = 2;
sp24->unkBC = d_use_obj("N231l"); // probably a camera
- sp24->unk1C = gShapeSilSpark;
+ sp24->unk1C = gShapeRedSpark;
addto_group(gGdLightGroup, &sp24->header);
sp3C = (struct ObjGroup *) d_use_obj("N1000l");
diff --git a/src/goddard/shape_helper.h b/src/goddard/shape_helper.h
@@ -7,8 +7,8 @@
// data
extern struct ObjGroup *gMarioFaceGrp;
extern struct ObjShape *D_801A82E4;
-extern struct ObjShape *gShapeSilSpark;
extern struct ObjShape *gShapeRedSpark;
+extern struct ObjShape *gShapeSilverSpark;
extern struct ObjShape *gShapeRedStar;
extern struct ObjShape *gShapeSilverStar;
@@ -25,7 +25,7 @@ extern s32 load_mario_head(void (*aniFn)(struct ObjAnimator *));
extern void load_shapes2(void);
// see bad_declarations.h
-#if !GD_USE_BAD_DECLARATIONS
+#ifndef GD_USE_BAD_DECLARATIONS
extern struct ObjFace* make_face_with_colour(f32, f32, f32);
#endif
diff --git a/src/menu/file_select.c b/src/menu/file_select.c
@@ -18,6 +18,7 @@
#include "behavior_data.h"
#include "text_strings.h"
#include "file_select.h"
+#include "dialog_ids.h"
/**
* @file file_select.c
@@ -2042,13 +2043,13 @@ static void print_save_file_scores(s8 fileIndex) {
unsigned char textMario[] = { TEXT_MARIO };
#ifdef VERSION_JP
unsigned char textFileLetter[] = { TEXT_ZERO };
- void **levelNameTable = segmented_to_virtual(seg2_level_name_table);
+ void **levelNameTable = segmented_to_virtual(seg2_course_name_table);
#endif
unsigned char textHiScore[] = { TEXT_HI_SCORE };
unsigned char textMyScore[] = { TEXT_MY_SCORE };
#ifdef VERSION_US
unsigned char textFileLetter[] = { TEXT_ZERO };
- void **levelNameTable = segmented_to_virtual(seg2_level_name_table);
+ void **levelNameTable = segmented_to_virtual(seg2_course_name_table);
#endif
textFileLetter[0] = fileIndex + ASCII_TO_DIALOG('A'); // get letter of file selected
@@ -2070,33 +2071,33 @@ static void print_save_file_scores(s8 fileIndex) {
#ifdef VERSION_JP
#define PADCHAR 0
#define PRINT_COURSE_SCORES(courseIndex, pad) \
- print_menu_generic_string(23 + (pad * 3), 35 + 12 * courseIndex, segmented_to_virtual(levelNameTable[courseIndex])); \
- print_score_file_star_score(fileIndex, courseIndex, 152, 35 + 12 * courseIndex); \
- print_score_file_course_coin_score(fileIndex, courseIndex, 213, 35 + 12 * courseIndex);
+ print_menu_generic_string(23 + (pad * 3), 23 + 12 * courseIndex, segmented_to_virtual(levelNameTable[courseIndex - 1])); \
+ print_score_file_star_score(fileIndex, courseIndex - 1, 152, 23 + 12 * courseIndex); \
+ print_score_file_course_coin_score(fileIndex, courseIndex - 1, 213, 23 + 12 * courseIndex);
#else
#define PADCHAR 1
#define PRINT_COURSE_SCORES(courseIndex, pad) \
- print_menu_generic_string(23 + (pad * 3), 35 + 12 * courseIndex, segmented_to_virtual(levelNameTable[courseIndex])); \
- print_score_file_star_score(fileIndex, courseIndex, 171, 35 + 12 * courseIndex); \
- print_score_file_course_coin_score(fileIndex, courseIndex, 213, 35 + 12 * courseIndex);
+ print_menu_generic_string(23 + (pad * 3), 23 + 12 * courseIndex, segmented_to_virtual(levelNameTable[courseIndex - 1])); \
+ print_score_file_star_score(fileIndex, courseIndex - 1, 171, 23 + 12 * courseIndex); \
+ print_score_file_course_coin_score(fileIndex, courseIndex - 1, 213, 23 + 12 * courseIndex);
#endif
// Course values are indexed, from Bob-omb Battlefield to Rainbow Ride
- PRINT_COURSE_SCORES(0, PADCHAR) // BOB
- PRINT_COURSE_SCORES(1, PADCHAR) // WF
- PRINT_COURSE_SCORES(2, PADCHAR) // JRB
- PRINT_COURSE_SCORES(3, PADCHAR) // CCM
- PRINT_COURSE_SCORES(4, PADCHAR) // BBH
- PRINT_COURSE_SCORES(5, PADCHAR) // HMC
- PRINT_COURSE_SCORES(6, PADCHAR) // LLL
- PRINT_COURSE_SCORES(7, PADCHAR) // SSL
- PRINT_COURSE_SCORES(8, PADCHAR) // DDD
- PRINT_COURSE_SCORES(9, 0) // SL
- PRINT_COURSE_SCORES(10, 0) // WDW
- PRINT_COURSE_SCORES(11, 0) // TTM
- PRINT_COURSE_SCORES(12, 0) // THI
- PRINT_COURSE_SCORES(13, 0) // TTC
- PRINT_COURSE_SCORES(14, 0) // RR
+ PRINT_COURSE_SCORES(COURSE_BOB, PADCHAR) // BOB
+ PRINT_COURSE_SCORES(COURSE_WF, PADCHAR) // WF
+ PRINT_COURSE_SCORES(COURSE_JRB, PADCHAR) // JRB
+ PRINT_COURSE_SCORES(COURSE_CCM, PADCHAR) // CCM
+ PRINT_COURSE_SCORES(COURSE_BBH, PADCHAR) // BBH
+ PRINT_COURSE_SCORES(COURSE_HMC, PADCHAR) // HMC
+ PRINT_COURSE_SCORES(COURSE_LLL, PADCHAR) // LLL
+ PRINT_COURSE_SCORES(COURSE_SSL, PADCHAR) // SSL
+ PRINT_COURSE_SCORES(COURSE_DDD, PADCHAR) // DDD
+ PRINT_COURSE_SCORES(COURSE_SL, 0) // SL
+ PRINT_COURSE_SCORES(COURSE_WDW, 0) // WDW
+ PRINT_COURSE_SCORES(COURSE_TTM, 0) // TTM
+ PRINT_COURSE_SCORES(COURSE_THI, 0) // THI
+ PRINT_COURSE_SCORES(COURSE_TTC, 0) // TTC
+ PRINT_COURSE_SCORES(COURSE_RR, 0) // RR
#undef PRINT_COURSE_SCORES
#undef PADCHAR
@@ -2187,7 +2188,7 @@ Gfx *geo_file_select_strings_and_menu_cursor(s32 callContext, UNUSED struct Grap
* Relocates cursor position of the last save if the game goes back to the Mario Screen
* either completing a course choosing "SAVE & QUIT" or having a game over.
*/
-void lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {
+s32 lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {
sSelectedButtonID = MENU_BUTTON_NONE;
sCurrentMenuLevel = MENU_LAYER_MAIN;
sTextBaseAlpha = 0;
@@ -2223,6 +2224,11 @@ void lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {
sMainMenuTimer = 0;
sEraseYesNoHoverState = MENU_ERASE_HOVER_NONE;
sSoundMode = save_file_get_sound_mode();
+
+ //! no return value
+#ifdef AVOID_UB
+ return 0;
+#endif
}
/**
@@ -2230,7 +2236,7 @@ void lvl_init_menu_values_and_cursor_pos(UNUSED s32 arg, UNUSED s32 unused) {
* When a save file is selected, it returns fileNum value
* defined in load_main_menu_save_file.
*/
-int lvl_update_obj_and_load_file_selected(UNUSED s32 arg, UNUSED s32 unused) {
+s32 lvl_update_obj_and_load_file_selected(UNUSED s32 arg, UNUSED s32 unused) {
area_update_objects();
return sSelectedFileNum;
}
diff --git a/src/menu/file_select.h b/src/menu/file_select.h
@@ -123,7 +123,7 @@ extern void bhv_menu_button_manager_init(void);
extern void bhv_menu_button_manager_loop(void);
extern Gfx *geo_file_select_strings_and_menu_cursor(s32 callContext, struct GraphNode *node,
f32 mtx[4][4]);
-extern void lvl_init_menu_values_and_cursor_pos(s32 arg, s32 unused);
-extern int lvl_update_obj_and_load_file_selected(s32 arg, s32 unused);
+extern s32 lvl_init_menu_values_and_cursor_pos(s32 arg, s32 unused);
+extern s32 lvl_update_obj_and_load_file_selected(s32 arg, s32 unused);
#endif /* FILE_SELECT_H */
diff --git a/src/menu/intro_geo.c b/src/menu/intro_geo.c
@@ -77,7 +77,7 @@ s8 gameOverBackgroundTable[] = {
s8 gameOverBackgroundFlipOrder[] = { 0x00, 0x01, 0x02, 0x03, 0x07, 0x0B,
0x0a, 0x09, 0x08, 0x04, 0x05, 0x06 };
-Gfx *geo18_title_screen(u32 sp50, struct GraphNode *sp54, UNUSED u32 sp58) {
+Gfx *geo18_title_screen(u32 sp50, struct GraphNode *sp54, UNUSED void *context) {
struct GraphNode *graphNode; // sp4c
Gfx *displayList; // sp48
Gfx *displayListIter; // sp44
@@ -127,7 +127,7 @@ Gfx *geo18_title_screen(u32 sp50, struct GraphNode *sp54, UNUSED u32 sp58) {
return displayList;
}
-Gfx *geo18_fade_transition(u32 sp40, struct GraphNode *sp44, UNUSED u32 sp48) {
+Gfx *geo18_fade_transition(u32 sp40, struct GraphNode *sp44, UNUSED void *context) {
struct GraphNode *graphNode = sp44; // sp3c
Gfx *displayList = NULL; // sp38
Gfx *displayListIter = NULL; // sp34
@@ -137,8 +137,8 @@ Gfx *geo18_fade_transition(u32 sp40, struct GraphNode *sp44, UNUSED u32 sp48) {
displayList = alloc_display_list(5 * sizeof(*displayList));
displayListIter = displayList;
gSPDisplayList(displayListIter++, dl_proj_mtx_fullscreen);
- gDPSetEnvColor(displayListIter++, 0xFF, 0xFF, 0xFF, gTitleFadeCounter);
- if (gTitleFadeCounter == 0xFF) {
+ gDPSetEnvColor(displayListIter++, 255, 255, 255, gTitleFadeCounter);
+ if (gTitleFadeCounter == 255) {
if (0) {
}
graphNode->flags = (graphNode->flags & 0xFF) | 0x100;
@@ -184,7 +184,7 @@ Gfx *intro_backdrop_one_image(u32 index, s8 *backgroundTable) {
return displayList;
}
-Gfx *geo18_intro_backdrop(u32 sp48, struct GraphNode *sp4c, UNUSED u32 sp50) {
+Gfx *geo18_intro_backdrop(u32 sp48, struct GraphNode *sp4c, UNUSED void *context) {
struct GraphNodeMore *graphNode; // sp44
s32 index; // sp40
s8 *backgroundTable; // sp3c
@@ -211,7 +211,7 @@ Gfx *geo18_intro_backdrop(u32 sp48, struct GraphNode *sp4c, UNUSED u32 sp50) {
return displayList;
}
-Gfx *geo18_game_over_tile(u32 sp40, struct GraphNode *sp44, UNUSED u32 sp48) {
+Gfx *geo18_game_over_tile(u32 sp40, struct GraphNode *sp44, UNUSED void *context) {
struct GraphNode *graphNode; // sp3c
Gfx *displayList; // sp38
Gfx *displayListIter; // sp34
diff --git a/src/menu/intro_geo.h b/src/menu/intro_geo.h
@@ -3,10 +3,10 @@
#include "engine/graph_node.h"
-Gfx *geo18_title_screen(u32 a0, struct GraphNode *a1, UNUSED u32 a2);
-Gfx *geo18_fade_transition(u32 a0, struct GraphNode *a1, UNUSED u32 a2);
+Gfx *geo18_title_screen(u32 a0, struct GraphNode *a1, UNUSED void *context);
+Gfx *geo18_fade_transition(u32 a0, struct GraphNode *a1, UNUSED void *context);
Gfx *intro_backdrop_one_image(u32 index, s8 *backdrop_table);
-Gfx *geo18_intro_backdrop(u32 a0, struct GraphNode *a1, UNUSED u32 a2);
-Gfx *geo18_game_over_tile(u32 a0, struct GraphNode *a1, UNUSED u32 a2);
+Gfx *geo18_intro_backdrop(u32 a0, struct GraphNode *a1, UNUSED void *context);
+Gfx *geo18_game_over_tile(u32 a0, struct GraphNode *a1, UNUSED void *context);
#endif /* _INTRO_GEO_H */
diff --git a/src/menu/level_select_menu.c b/src/menu/level_select_menu.c
@@ -13,75 +13,18 @@
#include "game/display.h"
#include "seq_ids.h"
#include "engine/math_util.h"
+#include "level_table.h"
#define PRESS_START_DEMO_TIMER 800
+#define STUB_LEVEL(textname, _1, _2, _3, _4, _5, _6, _7, _8) textname,
+#define DEFINE_LEVEL(textname, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10) textname,
+
static char gLevelSelect_StageNamesText[64][16] = {
- "",
- "",
- "",
- "TERESA OBAKE",
- "YYAMA1 % YSLD1",
- "SELECT ROOM",
- "HORROR DUNGEON",
- "SABAKU % PYRMD",
- "BATTLE FIELD",
- "YUKIYAMA2",
- "POOL KAI",
- "WTDG % TINBOTU",
- "BIG WORLD",
- "CLOCK TOWER",
- "RAINBOW CRUISE",
- "MAIN MAP",
- "EXT1 YOKO SCRL",
- "EXT7 HORI MINI",
- "EXT2 TIKA LAVA",
- "EXT9 SUISOU",
- "EXT3 HEAVEN",
- "FIREB1 % INVLC",
- "WATER LAND",
- "MOUNTAIN",
- "ENDING",
- "URANIWA",
- "EXT4 MINI SLID",
- "IN THE FALL",
- "EXT6 MARIO FLY",
- "KUPPA1",
- "EXT8 BLUE SKY",
- "",
- "KUPPA2",
- "KUPPA3",
- "",
- "DONKEY % SLID2",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
+ #include "levels/level_defines.h"
};
+#undef STUB_LEVEL
+#undef DEFINE_LEVEL
static u16 gDemoCountdown = 0;
#ifndef VERSION_JP
diff --git a/src/menu/star_select.c b/src/menu/star_select.c
@@ -236,7 +236,7 @@ static void print_act_selector_strings(void) {
#ifndef VERSION_EU
unsigned char myScore[] = { TEXT_MYSCORE };
unsigned char starNumbers[] = { TEXT_ZERO };
- u8 **levelNameTbl = segmented_to_virtual(seg2_level_name_table);
+ u8 **levelNameTbl = segmented_to_virtual(seg2_course_name_table);
u8 *currLevelName = segmented_to_virtual(levelNameTbl[gCurrCourseNum - 1]);
u8 **actNameTbl = segmented_to_virtual(seg2_act_name_table);
u8 *selectedActName;
@@ -288,7 +288,11 @@ static void print_act_selector_strings(void) {
* Geo function that Print act selector strings.
*!@bug: This geo function is missing the third param. Harmless in practice due to o32 convention.
*/
+#ifdef AVOID_UB
+Gfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node, UNUSED void *context) {
+#else
Gfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node) {
+#endif
if (callContext == GEO_CONTEXT_RENDER) {
print_act_selector_strings();
}
@@ -299,7 +303,7 @@ Gfx *geo_act_selector_strings(s16 callContext, UNUSED struct GraphNode *node) {
* Initiates act selector values before entering a main course.
* Also load how much stars a course has, without counting the 100 coin star.
*/
-void lvl_init_act_selector_values_and_stars(UNUSED s32 arg, UNUSED s32 unused) {
+s32 lvl_init_act_selector_values_and_stars(UNUSED s32 arg, UNUSED s32 unused) {
u8 stars = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1);
sLoadedActNum = 0;
@@ -312,13 +316,18 @@ void lvl_init_act_selector_values_and_stars(UNUSED s32 arg, UNUSED s32 unused) {
if (stars & (1 << 6)) {
sObtainedStars--;
}
+
+ //! no return value
+#ifdef AVOID_UB
+ return 0;
+#endif
}
/**
* Loads act selector button actions with selected act value checks.
* Also updates objects and returns act number selected after is choosen.
*/
-int lvl_update_obj_and_load_act_button_actions(UNUSED s32 arg, UNUSED s32 unused) {
+s32 lvl_update_obj_and_load_act_button_actions(UNUSED s32 arg, UNUSED s32 unused) {
if (sActSelectorMenuTimer >= 11) {
// If any of these buttons are pressed, play sound and go to course act
if ((gPlayer3Controller->buttonPressed & A_BUTTON)
diff --git a/src/menu/star_select.h b/src/menu/star_select.h
@@ -8,8 +8,12 @@ enum StarSelectorTypes
STAR_SELECTOR_100_COINS
};
+#ifdef AVOID_UB
+extern Gfx *geo_act_selector_strings(s16 callContext, struct GraphNode *node, void *context);
+#else
extern Gfx *geo_act_selector_strings(s16 callContext, struct GraphNode *node);
-extern void lvl_init_act_selector_values_and_stars(s32 arg, s32 unused);
-extern int lvl_update_obj_and_load_act_button_actions(s32 arg, s32 unused);
+#endif
+extern s32 lvl_init_act_selector_values_and_stars(s32 arg, s32 unused);
+extern s32 lvl_update_obj_and_load_act_button_actions(s32 arg, s32 unused);
#endif /* STAR_SELECT_H */
diff --git a/text/de/courses.h b/text/de/courses.h
@@ -0,0 +1,80 @@
+COURSE_ACTS(COURSE_BOB, _(" 1 BOB-OMBS BOMBENBERG"),
+ _("BESIEGE KÖNIG BOB-OMB!") , _("BESIEGE DEN SCHNELLEN KOOPA!") , _("FLIEGE ZUR SCHWEBENDEN INSEL!"),
+ _("FINDE DIE 8 ROTEN MÜNZEN!") , _("DURCHFLIEGE ALLE MÜNZENRINGE!") , _("BEFREIE DEN KETTENHUND!"))
+
+COURSE_ACTS(COURSE_WF, _(" 2 WUMMPS WUCHTWALL"),
+ _("BESIEGE KÖNIG WUMMP!") , _("STEIGE AUF DIE BERGFESTUNG!") , _("FLIEG INS BLAUE!"),
+ _("FINDE DIE 8 ROTEN MÜNZEN!") , _("WECKE DIE EULE!") , _("ZERSTÖRE DIE FELSWAND!"))
+
+COURSE_ACTS(COURSE_JRB, _(" 3 PIRATENBUCHT PANIK"),
+ _("TAUCHE IN DAS SCHIFFSWRACK!") , _("LOCKE DEN AAL KANO HERAUS!") , _("TAUCHE ZUR SCHATZHÖHLE!"),
+ _("FINDE DIE 8 ROTEN MÜNZEN!") , _("FLIEGE ZU DEN STEINSÄULEN!") , _("LAUFE DURCH DEN STRUDEL!"))
+
+COURSE_ACTS(COURSE_CCM, _(" 4 BIBBERBERG BOB"),
+ _("RUTSCHE AUF DER EISBAHN!") , _("FINDE DAS PINGUINBABY!") , _("BESIEGE DEN SCHNELLEN PINGUIN!"),
+ _("FINDE DIE 8 ROTEN MÜNZEN!") , _("BAUE EINEN SCHNEEMANN!") , _("DENKE AN DEN WANDSPRUNG!"))
+
+COURSE_ACTS(COURSE_BBH, _(" 5 BIG BOOS BURG"),
+ _("GEHE AUF GEISTERJAGD!") , _("BESUCHE BIG BOOS KARUSSEL!") , _("LÖSE DAS BÜCHEREI-RÄTSEL!"),
+ _("FINDE DIE 8 ROTEN MÜNZEN!") , _("KLETTERE AUF BIG BOOS BALKON!") , _("FINDE DAS AUGE IM GEHEIMRAUM!"))
+
+COURSE_ACTS(COURSE_HMC, _(" 6 GRÜNE GIFTGROTTE"),
+ _("KLETTERE AUF NESSIS RÜCKEN!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("LAUFE AUF DEM GRUND DES SEES!"),
+ _("DURCHSUCHE DAS NEBELLABYRINTH!"), _("SUCHE IM NEBEL DEN NOTAUSGANG!"), _("ACHTE AUF ROLLENDE FELSEN!"))
+
+COURSE_ACTS(COURSE_LLL, _(" 7 LAVA LAGUNE"),
+ _("WERFE BIG BULLY IN DIE LAVA!") , _("WERFE DIE BULLIES IN DIE LAVA!"), _("FINDE DIE 8 ROTEN MÜNZEN!"),
+ _("TANZE AUF DEM BAUMSTAMM!") , _("ERKUNDE DEN VULKAN!") , _("GEWINNE IM VULKAN AN HÖHE!"))
+
+COURSE_ACTS(COURSE_SSL, _(" 8 WOBIWABA WÜSTE"),
+ _("FOLGE DEM RIESENGEIER!") , _("BRINGE LICHT IN DIE PYRAMIDE!") , _("BEGEBE DICH IN DIE PYRAMIDE!"),
+ _("LANDE AUF ALLEN VIER SÄULEN!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("LÖSE DAS PYRAMIDENPUZZLE!"))
+
+COURSE_ACTS(COURSE_DDD, _(" 9 WILDE WASSERWERFT"),
+ _("ENTERE BOWSERS U-BOOT!") , _("ÖFFNE DIE TRUHEN!") , _("SPRINGE ZU DEN ROTEN MÜNZEN!"),
+ _("SCHWIMME DURCH DIE RINGE!") , _("FOLGE DEM FISCH!") , _("VEREINE DIE MÜTZEN!"))
+
+COURSE_ACTS(COURSE_SL, _("10 FROSTBEULEN FRUST"),
+ _("ERKLIMME DEN KOPF!") , _("SPIELE MIT BAD BULLY!") , _("WAGE DICH INS EIS!"),
+ _("GEHE ZUM EISSEE!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("SCHAU IM IGLU NACH!"))
+
+COURSE_ACTS(COURSE_WDW, _("11 ATLANTIS AQUARIA"),
+ _("FOLGE DEN BLAUEN PFEILEN!") , _("SUCHE NACH DER SPITZE DER STADT!"), _("ERFORSCHE DIE HÖHEN UND TIEFEN!"),
+ _("BEEILE DICH - EXPRESSAUFZUG!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("BEACHTE DAS ZEITLIMIT!"))
+
+COURSE_ACTS(COURSE_TTM, _("12 FLIEGENPILZ FIASKO"),
+ _("ERKLIMME DEN BERG!") , _("ERKUNDE DEN AFFENKÄFIG!") , _("FINDE DIE 8 ROTEN MÜNZEN!"),
+ _("ERFORSCHE DIE STEILWAND!") , _("HALTE AUSSCHAU AUF DER BRÜCKE!"), _("SUCHE DEN EINSAMEN PILZ!"))
+
+COURSE_ACTS(COURSE_THI, _("13 GULLIVER GUMBA"),
+ _("PFLÜCKE DIE SCHNAPP-PIRANHA!") , _("BEGIB DICH ZUR SPITZE DER INSEL!"), _("TRETE NOCH EINMAL GEGEN KOOPA AN!"),
+ _("LÖSE DIE 5 ITTY BITTY-RÄTSEL!") , _("FINDE DIE 8 ROTEN MÜNZEN!") , _("DREHE WIGGLER IM KREIS!"))
+
+COURSE_ACTS(COURSE_TTC, _("14 TICK TACK TRAUMA"),
+ _("ROLLE DEN KÄFIG!") , _("ACHTE AUF DAS PENDEL!") , _("LASS DIR DEN WEG ZEIGEN!"),
+ _("STAMPFE MÄCHTIG AUF!") , _("SPRINGE AUF DEN SCHWEBEBALKEN!"), _("FINDE DIE 8 ROTEN MÜNZEN!"))
+
+COURSE_ACTS(COURSE_RR, _("15 REGENBOGEN RASEREI"),
+ _("REISE AUF DEN REGENBÖGEN!") , _("SUCHE DAS HAUS AM HIMMEL!") , _("FINDE DIE 8 ROTEN MÜNZEN!"),
+ _("LASS DICH VON DER BRISE TRAGEN!"), _("ÜBERWINDE DIE MACHT DER DREIECKE!"), _("SCHAU DIR DEN REGENBOGEN AN!"))
+
+SECRET_STAR(COURSE_BITDW, _(" BOWSERS SCHATTENWELT"))
+SECRET_STAR(COURSE_BITFS, _(" BOWSERS LAVASEE"))
+SECRET_STAR(COURSE_BITS, _(" BOWSERS LUFTSCHLOSS"))
+SECRET_STAR(COURSE_PSS, _(" TOADSTOOLS RUTSCHBAHN"))
+SECRET_STAR(COURSE_COTMC, _(" GRÜNER SCHALTERPALAST"))
+SECRET_STAR(COURSE_TOTWC, _(" ROTER SCHALTERPALAST"))
+SECRET_STAR(COURSE_VCUTM, _(" BLAUER SCHALTERPALAST"))
+SECRET_STAR(COURSE_WMOTR, _(" REGENBOGEN FEUERWERK"))
+SECRET_STAR(COURSE_SA, _(" VERSTECKTES AQUARIUM"))
+SECRET_STAR(COURSE_CAKE_END, _(""))
+
+CASTLE_SECRET_STARS(_(" GEHEIME STERNE"))
+
+EXTRA_TEXT(0, _("EIN GEHEIMER STERN DES SCHLOSSES!"))
+EXTRA_TEXT(1, _(""))
+EXTRA_TEXT(2, _(""))
+EXTRA_TEXT(3, _(""))
+EXTRA_TEXT(4, _(""))
+EXTRA_TEXT(5, _(""))
+EXTRA_TEXT(6, _(""))
diff --git a/text/de/dialogs.h b/text/de/dialogs.h
@@ -0,0 +1,2058 @@
+// Parameters: dialog enum ID, (unused), lines per box, left offset, width
+
+DEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _("\
+Du bist inmitten der\n\
+Kampfarena gelandet.\n\
+Sei vorsichtig!\n\
+Die von Bowser erbeuteten\n\
+Power-Sterne findest Du\n\
+in den Wandgemälden.\n\
+Sprich zuerst mit Buddy,\n\
+der rosa Bombe.\n\
+Drücke [B], um Dich mit ihr\n\
+zu unterhalten. Sie und\n\
+ihre Kolleginnen werden\n\
+Dich sicher unterstützen.\n\
+Drücke [B], um Schilder\n\
+zu lesen. Mit [A] oder [B]\n\
+kannst Du die Nachrichten\n\
+umblättern. In anderen\n\
+Kursen triffst Du weitere\n\
+Freunde, die Dir helfen."))
+
+DEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _("\
+Bewege Dich vorsichtig\n\
+durch das Gelände, damit\n\
+Du kein Opfer der\n\
+Wasserbomben wirst.\n\
+Die gegnerischen Bob-\n\
+Ombs lieben den Kampf\n\
+und erfinden immer neue\n\
+Angriffsvarianten.\n\
+Sie terrorisieren uns,\n\
+seit ihr König den\n\
+Power-Stern in die\n\
+Hände bekommen hat.\n\
+Hilf uns, den Stern\n\
+zurückzuholen! Gehe zur\n\
+Spitze des Berges, um\n\
+König Bob-Omb zu finden.\n\
+Kehre zu mir zurück,\n\
+wenn es Dir gelungen ist,\n\
+ihm den Stern abzujagen.\n\
+Viel Glück..."))
+
+DEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _("\
+Hallo! Sei wachsam, Du\n\
+befindest Dich inmitten\n\
+einer Schlacht. Aber ich\n\
+gebe Dir ein paar Tips:\n\
+Überquere die beiden\n\
+Brücken und achte auf\n\
+herunterfallende\n\
+Wasserbomben.\n\
+König Bob-Omb ist\n\
+äußerst gefährlich.\n\
+Laß Dich nicht von\n\
+ihm erwischen.\n\
+Wir sind die wahren\n\
+Bob-Ombs und werden Dir\n\
+helfen. Sprich mit uns,\n\
+wann immer Du möchtest."))
+
+DEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _("\
+Herzlichen Dank, Mario!\n\
+Du hast es diesem\n\
+Tyrannen gezeigt. Aber\n\
+Dein Kampf hat gerade\n\
+erst begonnen.\n\
+Andere Fieslinge besitzen\n\
+weitere Sterne, die Dir\n\
+die Wege zu neuen Welten\n\
+öffnen. Allerdings mußt\n\
+Du sie zuerst besiegen.\n\
+Meine Bob-Omb-Kollegen\n\
+wissen bereits Bescheid.\n\
+Sprich mit ihnen und\n\
+Du darfst bestimmt ihre\n\
+Kanonen benutzen."))
+
+DEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _("\
+Wir sind friedliebende\n\
+Bob-Ombs und mögen keine\n\
+Kanonen.\n\
+Wir stellen sie Dir aber\n\
+gerne für Luftreisen\n\
+zur Verfügung.\n\
+Alle Kanonen dieses Kurses\n\
+sind für Dich präpariert.\n\
+Guten Flug!!!"))
+
+DEFINE_DIALOG(DIALOG_005, 1, 4, 30, 200, _("\
+Hey Mario! Stimmt es,\n\
+daß Du König Bob-Omb\n\
+während eines harten\n\
+Kampfes besiegt hast?\n\
+Du scheinst ganz schön\n\
+was auf dem Kasten zu\n\
+haben. Aber glaubst Du,\n\
+es reicht auch für mich?\n\
+Bist Du schnell genug, um\n\
+mich zu schlagen? Ich\n\
+würde sagen, Du siehst\n\
+nicht danach aus!\n\
+Wie wär's mit einem\n\
+Rennen zur Bergspitze,\n\
+um herauszufinden, wer\n\
+der Schnellere ist?\n\
+\n\
+Fertig...?\n\
+\n\
+//Los!/// Später!"))
+
+DEFINE_DIALOG(DIALOG_006, 1, 3, 30, 200, _("\
+Hey!!! Willst Du mich\n\
+auf den Arm nehmen?\n\
+Abkürzen gilt nicht!\n\
+Am besten versuchst Du's\n\
+später nochmal unter\n\
+fairen Bedingungen."))
+
+DEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _("\
+Hmmmmpff...pffff...hach!\n\
+Boah! Du...hast...mich...\n\
+geschlagen! Das grenzt an\n\
+ein Wunder! Hier, Du hast\n\
+ihn Dir verdient!"))
+
+DEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _("\
+BISSIGER KETTENHUND!\n\
+Nähere Dich ihm langsam,\n\
+und benutze die [C]-Knöpfe,\n\
+um den Blickwinkel zu\n\
+ändern. Gefährlich, oder?\n\
+Siehst Du die rote Münze\n\
+auf dem Pfahl?\n\
+Du erhältst einen Stern,\n\
+wenn Du acht dieser\n\
+Münzen sammelst."))
+
+DEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _("\
+Lang, lang ist's her!\n\
+Du scheinst noch schneller\n\
+geworden zu sein. Hast Du\n\
+heimlich geübt oder\n\
+liegt's an den Sternen?\n\
+Meine letzte Niederlage\n\
+geht mir nicht aus dem\n\
+Kopf. Aber das ist meine\n\
+Hausstrecke. Wie wär's\n\
+mit einer Revanche?\n\
+Das Ziel liegt hinter\n\
+der Böen-Brücke.\n\
+Fertig?\n\
+\n\
+//Los!/// Später!"))
+
+DEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _("\
+Du hast den roten\n\
+Schalter aktiviert.\n\
+Ab jetzt kannst Du die\n\
+Federkappe einsetzen\n\
+und durch die Lüfte\n\
+fliegen. Jeder rote\n\
+Block beinhaltet eine\n\
+dieser Mützen.\n\
+Möchtest Du Deinen\n\
+Spielstand speichern?\n\
+\n\
+//Ja!////Nein!"))
+
+DEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _("\
+Du hast den grünen\n\
+Schalter aktiviert.\n\
+Ab jetzt kannst Du die\n\
+Titanenkappe einsetzen\n\
+und Unbesiegbarkeit\n\
+erlangen. Jeder grüne\n\
+Block beinhaltet eine\n\
+dieser Mützen.\n\
+Möchtest Du Deinen\n\
+Spielstand speichern?\n\
+\n\
+//Ja!////Nein!"))
+
+DEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _("\
+Du hast den blauen\n\
+Schalter aktiviert.\n\
+Ab jetzt kannst Du die\n\
+Tarnkappe einsetzen\n\
+und Unsichtbarkeit\n\
+erlangen. Jeder blaue\n\
+Block beinhaltet eine\n\
+dieser Mützen.\n\
+Möchtest Du Deinen\n\
+Spielstand speichern?\n\
+\n\
+//Ja!////Nein!"))
+
+DEFINE_DIALOG(DIALOG_013, 1, 6, 30, 200, _("\
+Du hast 100 Münzen\n\
+eingesammelt. Der\n\
+Stern verleiht Dir\n\
+zusätzliche Kraft.\n\
+Spielstand speichern?\n\
+//Ja!////Nein!"))
+
+DEFINE_DIALOG(DIALOG_014, 1, 6, 30, 200, _("\
+Unglaublich, Du hast einen\n\
+weiteren Stern erhalten.\n\
+Er verleiht Dir\n\
+zusätzliche Kraft.\n\
+Spielstand speichern?\n\
+//Ja!////Nein!"))
+
+DEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _("\
+Setze Deine Fäuste ein,\n\
+um Dich zu verteidigen.\n\
+Drücke [A] zum Springen\n\
+und [B] zum Schlagen.\n\
+Drücke [A] und [B], um einen\n\
+Tritt auszuführen.\n\
+Gegenstände kannst Du\n\
+mit [B] nehmen und werfen."))
+
+DEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _("\
+Springe auf den\n\
+funkelnden Panzer!\n\
+Der Krötensurf eröffnet\n\
+ungeahnte Möglichkeiten!"))
+
+DEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _("\
+Ich bin König Bob-Omb,\n\
+Herrscher über alle\n\
+Bomben und Gebieter der\n\
+Explosionen!\n\
+Wer gibt Dir das Recht,\n\
+diesen Berg zu betreten\n\
+und dieses königliche\n\
+Plateau zu beschmutzen?\n\
+Anscheinend haben Dich\n\
+die Wachen unterschätzt,\n\
+aber mir wird dieser\n\
+Fehler nicht unterlaufen.\n\
+Der Power-Stern ist in\n\
+meinem Besitz und wird\n\
+auch dort bleiben.\n\
+Dein Ende ist gekommen!\n\
+Oder bist Du etwa der\n\
+Meinung, Du könntest\n\
+mich von hinten packen\n\
+und besiegen? Niemals!!!"))
+
+DEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _("\
+Schlafende Gefahren\n\
+sollte man nicht wecken.\n\
+Die schleichende Weisheit\n\
+verleiht längeres Leben!"))
+
+DEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _("\
+Vorsicht, die Fliesen\n\
+sind frisch gebohnert!"))
+
+DEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _("\
+Lieber Mario!\n\
+Komm mich doch einmal\n\
+im Schloss besuchen!\n\
+Der Kuchen steht bereit!\n\
+In Freundschaft\n\
+Toadstool"))
+
+DEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _("\
+Na, wen haben wir denn\n\
+hier? Es ist niemand zu\n\
+Hause, also verschwinde\n\
+besser wieder...\n\
+Hua...hua...hua!!!"))
+
+DEFINE_DIALOG(DIALOG_022, 1, 3, 95, 200, _("\
+Ohne den passenden\n\
+Schlüssel bleibt Dir\n\
+dieser Weg versperrt!"))
+
+DEFINE_DIALOG(DIALOG_023, 1, 2, 95, 200, _("\
+Der Kellerschlüssel wird\n\
+Dir hier nichts nützen!"))
+
+DEFINE_DIALOG(DIALOG_024, 1, 4, 95, 200, _("\
+Du brauchst schon einen\n\
+Stern, um diese Tür zu\n\
+öffnen. Untersuche doch\n\
+einmal die Wandgemälde!"))
+
+DEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _("\
+Zum Öffnen dieser Tür\n\
+benötigst Du drei Sterne.\n\
+Du mußt also noch [%]\n\
+von ihnen finden!"))
+
+DEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _("\
+Zum Öffnen dieser Tür\n\
+benötigst Du acht Sterne.\n\
+Du mußt also noch [%]\n\
+von ihnen finden!"))
+
+DEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _("\
+Zum Öffnen dieser Tür\n\
+benötigst Du 30 Sterne.\n\
+Du mußt also noch [%]\n\
+von ihnen finden."))
+
+DEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _("\
+Zum Öffnen dieser Tür\n\
+benötigst Du 50 Sterne.\n\
+Du mußt also noch [%]\n\
+von ihnen finden."))
+
+DEFINE_DIALOG(DIALOG_029, 1, 4, 95, 200, _("\
+Zum Öffnen der Tür zum\n\
+„Endlosen Vergnügen』\n\
+benötigst Du 70 Sterne.\n\
+Hua...Hua...Hua...!"))
+
+DEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _("\
+Die Lakitu-Film AG\n\
+berichtet live und in\n\
+Farbe! Hier die neuesten\n\
+Meldungen:\n\
+Gegner sind sehr oft\n\
+unachtsam, wenn Du Dich\n\
+leise, also langsam,\n\
+bewegst.\n\
+Die Kameraposition kannst\n\
+Du durch [C]> und [C]<\n\
+verändern, um einen\n\
+Überblick zu erhalten.\n\
+Das Weitwinkelobjektiv\n\
+wird mit [C]| eingesetzt.\n\
+Details der Umgebung\n\
+werden so sichtbar!\n\
+Ein Warnton erklingt,\n\
+wenn die Bewegungs-\n\
+freiheit der Kamera\n\
+eingeschränkt ist.\n\
+Das waren die\n\
+Meldungen und\n\
+damit zurück zum\n\
+laufenden Programm!"))
+
+DEFINE_DIALOG(DIALOG_031, 1, 3, 30, 200, _("\
+Das darf doch alles nicht\n\
+wahr sein! Ich habe schon\n\
+wieder verloren!\n\
+Dabei habe ich mir extra\n\
+die neuen Koopa-Mach-1-\n\
+Schuhe gekauft! Hmpf!!!\n\
+Naja, ich denke, auch\n\
+dieser Stern gehört Dir!\n\
+Herzlichen Glückwunsch!"))
+
+DEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _("\
+Mit der Federkappe\n\
+kannst Du fliegen.\n\
+Besitzt Du sie, springe\n\
+dreimal hintereinander,\n\
+um einen Flug zu starten.\n\
+Benutzt Du zum Starten\n\
+des Fluges eine Kanone,\n\
+kannst Du die Flughöhe\n\
+enorm steigern. Mit dem\n\
+[Z]-Knopf kannst Du landen."))
+
+DEFINE_DIALOG(DIALOG_033, 1, 4, 30, 200, _("\
+Herzlich willkommen! Durch\n\
+eine Warpröhre bist Du\n\
+direkt zum Schloss der\n\
+Prinzessin gelangt.\n\
+Die Steuerung ist einfach:\n\
+Benutze den [A]-Knopf zum\n\
+Springen und den [B]-Knopf\n\
+zum Schlagen.\n\
+Hinweisschilder kannst\n\
+Du lesen, wenn Du Dich\n\
+davor stellst und den\n\
+[B]-Knopf betätigst.\n\
+Der Analog-Stick dient\n\
+der Steuerung. Doch jetzt\n\
+genug der vielen Worte:\n\
+Auf zum Schloss!!!"))
+
+DEFINE_DIALOG(DIALOG_034, 1, 5, 30, 200, _("\
+Guten Tag, liebe Freunde\n\
+des Actionkinos! Die\n\
+Lakitu-Film AG versorgt\n\
+Euch ständig mit den\n\
+neuesten Informationen.\n\
+Mario hat gerade\n\
+Prinzessin Toadstools\n\
+Schloss erreicht und\n\
+macht sich auf die Suche\n\
+nach den Power-Sternen.\n\
+Unser wagemutiger Kollege\n\
+wird ihn auf dieser\n\
+heiklen Mission begleiten.\n\
+Die [C]-Knöpfe dienen\n\
+seiner Steuerung.\n\
+Du kannst die Perspektiven\n\
+beliebig verändern. Sollte\n\
+sich der Blickwinkel einmal\n\
+nicht verstellen lassen,\n\
+erklingt ein Warnton.\n\
+Genauere Erklärungen\n\
+hierzu werden wir Euch\n\
+zu gegebener Zeit\n\
+mitteilen. Damit zurück\n\
+zum Hauptfilm!"))
+
+DEFINE_DIALOG(DIALOG_035, 1, 5, 30, 200, _("\
+Die [C]-Knöpfe dienen der\n\
+Steuerung der Kamera.\n\
+Benutze den ^-Knopf, um\n\
+die Kamera mit dem\n\
+Analog-Stick zu bewegen.\n\
+Normalerweise sorgt ein\n\
+Angestellter der Lakitu\n\
+AG dafür, daß Du Mario\n\
+siehst. Das ist die\n\
+Standardeinstellung.\n\
+Diese Kamera steuerst Du\n\
+mit den [C]-Knöpfen.\n\
+Drückst Du die [R]-Taste,\n\
+wechselst Du zwischen\n\
+Lakitus und Marios\n\
+Sicht hin und her. Drücke\n\
+|, um den Zoom oder\n\
+das Weitwinkelobjektiv zu\n\
+aktivieren. Dies ist in\n\
+allen Perspektiven möglich.\n\
+Welchen Kameramodus\n\
+Du gewählt hast, siehst\n\
+Du an einem kleinen Bild,\n\
+das sich rechts unten auf\n\
+dem Bildschirm befindet."))
+
+DEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _("\
+AUSSICHTSPLATTFORM\n\
+Drücke ^ und genieße die\n\
+Aussicht. Vielleicht\n\
+entdeckst Du Geheimnisse\n\
+Deiner Umgebung.\n\
+Drücke [R], um zu Marios\n\
+Kamera zu wechseln. Sie\n\
+bleibt ständig hinter ihm.\n\
+Mit dieser Taste schaltest\n\
+Du auch zurück auf Lakitu.\n\
+Im Pausenmodus kannst Du\n\
+weitere Einstellungen\n\
+vornehmen. Wähle „Stativ』\n\
+und halte die [R]-Taste\n\
+gedrückt!"))
+
+DEFINE_DIALOG(DIALOG_037, 1, 3, 30, 200, _("\
+Hihihi, ich habe gewonnen!\n\
+Du solltest noch ein paar\n\
+Trainingsrunden einlegen!"))
+
+DEFINE_DIALOG(DIALOG_038, 1, 2, 95, 200, _("\
+Die mystische Kraft der\n\
+Sterne öffnet die Tür!"))
+
+DEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _("\
+Besuchern ist das\n\
+Erklimmen des königlichen\n\
+Berges strengstens\n\
+verboten. Verstöße werden\n\
+hart bestraft!\n\
+Niemals werden die\n\
+Power-Sterne, ein\n\
+Geschenk Bowsers, diesen\n\
+Ort verlassen. Ihre Macht\n\
+bleibt in meinen Händen!\n\
+Kein Wort über ihren\n\
+Aufenthaltsort kommt\n\
+über meine Lippen!!!\n\
+Äh, naja, vielleicht\n\
+ein kleiner Tip:\n\
+Die Sternenbeschreibungen\n\
+zu Beginn dieses Kurses\n\
+könnten sich als nützlich\n\
+erweisen!\n\
+König Bob-Omb!!!"))
+
+DEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _("\
+Vorsicht, Brücke zerstört!\n\
+Überquere das Eistal in\n\
+der Gondel."))
+
+DEFINE_DIALOG(DIALOG_041, 1, 4, 30, 200, _("\
+Höhöhö, das war ja wohl\n\
+nichts! Sogar meine Uroma\n\
+Koopa ist wesentlich\n\
+schneller als Du!\n\
+Naja, mit zwei Jahren\n\
+Training könntest Du's\n\
+vielleicht schaffen.\n\
+Bis dann...und tschüß!"))
+
+DEFINE_DIALOG(DIALOG_042, 1, 4, 30, 200, _("\
+Achtung!\n\
+Dieser Steg ist ziemlich\n\
+schmal. Du solltest Dich\n\
+sehr langsam bewegen.\n\
+Überschreitest Du eine\n\
+Kante, fällt Mario nicht\n\
+in die Tiefe, sondern er\n\
+klammert sich daran fest.\n\
+Möchtest Du wieder nach\n\
+oben klettern, drücke\n\
+den Analog-Stick in\n\
+Marios Blickrichtung.\n\
+Mario läßt die Kante los,\n\
+wenn Du den Analog-Stick\n\
+in Richtung seines Rückens\n\
+bewegst oder [Z] drückst.\n\
+Bist Du in Eile, kannst\n\
+Du auch durch einen\n\
+beherzten Sprung mit dem\n\
+[A]-Knopf hinauf gelangen."))
+
+DEFINE_DIALOG(DIALOG_043, 1, 4, 30, 200, _("\
+Wenn Du springst und den\n\
+[A]-Knopf gedrückt hältst,\n\
+klammert sich Mario an\n\
+Objekte über ihm.\n\
+Auf diese Weise kannst\n\
+Du Dich auch von der\n\
+Eule durch die Lüfte\n\
+transportieren lassen."))
+
+DEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _("\
+Uh...oh...gääähn...\n\
+Weeehhr ist daaaahhh...?\n\
+Wer hat mich geweckt?\n\
+Eigentlich sollte ich um\n\
+diese Tageszeit schlafen!\n\
+Aber, da Du mich schon\n\
+geweckt hast, wie wäre\n\
+es dann mit einem\n\
+kleinen Rundflug um die\n\
+Burg?\n\
+Befinde ich mich direkt\n\
+über Dir, springe und\n\
+halte den Sprungknopf\n\
+gedrückt. Laß ihn los,\n\
+um wieder frei zu sein.\n\
+Ich transportiere Dich,\n\
+solange es meine Kraft\n\
+zuläßt. Beobachte meinen\n\
+Schatten, um Dich zu\n\
+orientieren."))
+
+DEFINE_DIALOG(DIALOG_045, 1, 6, 95, 200, _("\
+Hey, Mann, Mario! Mir\n\
+geht die Puste aus.\n\
+Du ißt zuviel Pasta!\n\
+Bitte, laß los, ich muß\n\
+mich erholen...sofooort!\n\
+Bis später...vielleicht."))
+
+DEFINE_DIALOG(DIALOG_046, 1, 4, 30, 200, _("\
+Es gibt drei verschiedene\n\
+Sprungtechniken. Du mußt\n\
+sie alle beherrschen, um\n\
+die Aufgaben zu meistern.\n\
+Versuche zuerst den\n\
+Dreisprung! Renne und\n\
+springe dreimal direkt\n\
+hintereinander.\n\
+Mit dem richtigen Timing\n\
+wird jeder Sprung höher\n\
+als der vorherige sein.\n\
+Weiter zum Weitsprung!\n\
+Während Du rennst, mußt\n\
+Du den [Z]-Knopf und dann\n\
+den [A]-Knopf drücken.\n\
+Und nun der Wandsprung!\n\
+Springe gegen eine Wand.\n\
+Sobald Du die Wand\n\
+berührst, mußt Du wieder\n\
+den Sprungknopf drücken.\n\
+Alles verstanden?\n\
+Dreisprung? Weitsprung?\n\
+Wandsprung? Dann heißt's\n\
+üben, üben, üben..."))
+
+DEFINE_DIALOG(DIALOG_047, 1, 3, 95, 200, _("\
+Hallo!\n\
+Ich mache die Kanone\n\
+zum Abschuß bereit!"))
+
+DEFINE_DIALOG(DIALOG_048, 1, 6, 30, 200, _("\
+An einigen Stellen\n\
+herrscht extreme\n\
+Rutschgefahr! Sieh\n\
+am besten zuerst im\n\
+Schornstein nach dem\n\
+Rechten!"))
+
+DEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _("\
+Du erinnerst Dich an den\n\
+Wandsprung? Auf diese\n\
+Weise kannst Du schnell\n\
+höher gelegene Stellen\n\
+erreichen.\n\
+Benutze ihn, um von\n\
+Wand zu Wand zu springen\n\
+und Stück für Stück\n\
+weiter nach oben zu\n\
+gelangen.\n\
+Denke an die uralte\n\
+Weisheit:\n\
+Übung macht den Meister!\n\
+Sie kommt hier voll zum\n\
+Tragen!!!"))
+
+DEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _("\
+Drücke den [Z]-Knopf, um\n\
+in die Hocke zu gehen und\n\
+einen Hang nach unten zu\n\
+rutschen.\n\
+Betätigst Du den [Z]-Knopf\n\
+während eines Sprungs,\n\
+führst Du eine\n\
+Stampfattacke aus.\n\
+Du machst einen\n\
+Rückwärtssalto, wenn\n\
+Du stehend den [Z]-Knopf\n\
+drückst und springst.\n\
+Es gibt weitere Varianten\n\
+zu entdecken. Nimm Dir\n\
+Zeit und versuche, andere\n\
+Kombinationen zu finden!"))
+
+DEFINE_DIALOG(DIALOG_051, 1, 5, 30, 200, _("\
+Du kannst auf Bäume und\n\
+Stangen klettern, wenn\n\
+Du gegen sie springst und\n\
+den Analog-Stick nach\n\
+oben drückst.\n\
+Mit dem [A]-Knopf kannst\n\
+Du nach HINTEN wieder\n\
+abspringen. Du kannst\n\
+sogar auf der Spitze\n\
+einen Handstand machen.\n\
+Springst Du aus dem\n\
+Handstand von einem\n\
+Objekt ab, machst Du\n\
+einen unglaublich hohen\n\
+Sprung."))
+
+DEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _("\
+Du machst einen\n\
+Rückwärtssalto, wenn\n\
+Du stehend den [Z]-Knopf\n\
+gedrückt hältst und dann\n\
+den [A]-Knopf betätigst.\n\
+Seitwärtssaltos führst\n\
+Du aus, indem Du den\n\
+Analog-Stick entgegen\n\
+Deiner Laufrichtung\n\
+bewegst und springst."))
+
+DEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _("\
+Von Zeit zu Zeit erscheint\n\
+eine farbige Zahl, wenn\n\
+Du Kisten öffnest, Ringe\n\
+durchquerst oder geheime\n\
+Orte erreichst.\n\
+Gelingt es Dir, alle fünf\n\
+farbigen Zahlen dieses\n\
+Bereichs zu finden,\n\
+erhältst Du zur Belohnung\n\
+einen Power-Stern."))
+
+DEFINE_DIALOG(DIALOG_054, 1, 6, 30, 200, _("\
+Herzlich willkommen\n\
+auf der Schlidderbahn!\n\
+Drücke den Analog-Stick\n\
+nach vorne, um zu\n\
+beschleunigen und nach\n\
+hinten, um zu bremsen."))
+
+DEFINE_DIALOG(DIALOG_055, 1, 5, 30, 200, _("\
+Hihi, hallo Mario!\n\
+Du siehst aus, als\n\
+wolltest Du mich gerade\n\
+fragen, ob wir ein\n\
+Wettrennen machen sollten.\n\
+Und ich sage: Na klar! Es\n\
+ist zwar noch niemandem\n\
+gelungen, mich, den\n\
+Schlidderkönig aller\n\
+Klassen, zu besiegen.\n\
+Aber Du kannst es ja\n\
+einmal versuchen.\n\
+Wie steht's?\n\
+\n\
+//Na klar!/ Später!"))
+
+DEFINE_DIALOG(DIALOG_056, 1, 6, 30, 200, _("\
+Du...Du...ha...hast\n\
+mich geschlagen! Das kann\n\
+doch nicht wahr sein!\n\
+Du bist der größte\n\
+Schliddermeister, den\n\
+ich kenne!\n\
+Eine Goldmedaille kann\n\
+ich Dir zwar nicht\n\
+überreichen,\n\
+aber nimm diesen\n\
+Power-Stern!\n\
+Du hast ihn verdient."))
+
+DEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _("\
+Hey Kleiner! Hast Du mein\n\
+Baby gesehen? Es ist das\n\
+schönste und süßeste\n\
+Baby der ganzen Welt!\n\
+Vor kurzem war es noch\n\
+bei mir, aber ich habe\n\
+keine Ahnung, wohin es\n\
+sich verdrückt hat.\n\
+Wenn ich doch nur wüßte,\n\
+wo ich die Suche beginnen\n\
+soll...Oh, was für eine\n\
+fürchterliche Tragödie!!!"))
+
+DEFINE_DIALOG(DIALOG_058, 1, 5, 30, 200, _("\
+Das ist doch...\n\
+Mensch, Mario, Du hast\n\
+mein Baby gefunden!!!\n\
+Wie kann ich Dir dafür\n\
+danken?\n\
+Oh, ich weiß: Ich fand\n\
+neulich diesen Stern\n\
+hier. Nimm ihn als\n\
+Zeichen meiner ewigen\n\
+Dankbarkeit!"))
+
+DEFINE_DIALOG(DIALOG_059, 1, 6, 30, 200, _("\
+Was soll ich mit diesem\n\
+Früchtchen? Das ist nicht\n\
+mein Baby! Mein Baby hat\n\
+ein weiche, zarte Stimme,\n\
+und es sieht mir natürlich\n\
+ähnlich!"))
+
+DEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _("\
+Achtung, Achtung!\n\
+Bevor Du Dich in die\n\
+Fluten stürzt, solltest\n\
+Du Dir folgendes merken:\n\
+Bleibst Du zu lange unter\n\
+Wasser, könnte Dir die\n\
+Luft ausgehen. Achte auf\n\
+die Sauerstoffanzeige!\n\
+Schwimme zur Oberfläche\n\
+oder sammle Münzen und\n\
+Luftblasen, um wieder\n\
+Sauerstoff zu tanken.\n\
+Drücke den [A]-Knopf, um\n\
+zu schwimmen. Halte ihn\n\
+gedrückt, um mit den\n\
+Füßen zu paddeln.\n\
+Bewege beim Schwimmen\n\
+den Analog-Stick nach\n\
+oben, um zu tauchen und\n\
+nach unten, um zu steigen.\n\
+Springe aus dem Wasser,\n\
+indem Du an einer Kante\n\
+den Analog-Stick abwärts\n\
+drückst und springst.\n\
+Achte jedoch darauf,\n\
+daß Du den Analog-Stick\n\
+während des Sprungs\n\
+losläßt!"))
+
+DEFINE_DIALOG(DIALOG_061, 1, 5, 30, 200, _("\
+Wer baden möchte, sollte\n\
+sich besser in wärmere\n\
+Gefilde begeben, denn\n\
+hier ist es auf jeden\n\
+Fall zu kalt!!!"))
+
+DEFINE_DIALOG(DIALOG_062, 1, 4, 30, 200, _("\
+In den grünen Blöcken\n\
+im Labyrinth findest\n\
+Du die phänomenalen\n\
+Titanenkappen.\n\
+Trägst Du diese Kappen,\n\
+bist Du unverwundbar\n\
+und brauchst kurze Zeit\n\
+nicht zu atmen.\n\
+Das einzige Problem ist:\n\
+Du kannst nicht\n\
+schwimmen, während Du\n\
+sie trägst!"))
+
+DEFINE_DIALOG(DIALOG_063, 1, 3, 30, 200, _("\
+In den blauen Blöcken\n\
+befinden sich die\n\
+fantastischen Tarnkappen.\n\
+Damit kannst Du durch\n\
+bestimmte Mauern gehen\n\
+oder Geister erschrecken."))
+
+DEFINE_DIALOG(DIALOG_064, 1, 3, 30, 200, _("\
+In den roten Blöcken\n\
+kannst Du die berühmten\n\
+Federkappen finden.\n\
+Mit einem Dreisprung\n\
+kannst Du starten und\n\
+in die Lüfte steigen.\n\
+Drücke den Analog-Stick\n\
+nach unten, um im Flug\n\
+an Höhe zu gewinnen.\n\
+Drücke den Analog-Stick\n\
+nach oben, um im Flug\n\
+an Höhe zu verlieren.\n\
+Betätige den [Z]-Knopf,\n\
+um den Flug zu beenden\n\
+und sicher zu landen."))
+
+DEFINE_DIALOG(DIALOG_065, 1, 5, 30, 200, _("\
+Schwimmen für Anfänger!\n\
+Drücke den [A]-Knopf für\n\
+einen Schwimmzug. Bei\n\
+richtigem Timing kannst\n\
+Du sehr schnell schwimmen.\n\
+Halte den [A]-Knopf\n\
+gedrückt, um mit den\n\
+Füßen zu paddeln. Mit\n\
+dieser Technik bewegst Du\n\
+Dich langsamer im Wasser.\n\
+Drücke beim Schwimmen\n\
+den Analog-Stick\n\
+nach oben, um zu\n\
+tauchen und nach unten,\n\
+um zu steigen.\n\
+Du kannst aus dem Wasser\n\
+springen, wenn Du an der\n\
+Wasseroberfläche den\n\
+Analog-Stick nach unten\n\
+drückst und springst.\n\
+Beachte: Kein Mensch\n\
+kann unter Wasser atmen!\n\
+Kehre zurück an die\n\
+Oberfläche, wenn Deine\n\
+Luft zur Neige geht.\n\
+Ach ja: Türen, die sich\n\
+unter Wasser befinden,\n\
+kannst Du nicht öffnen.\n\
+Aber vielleicht findest\n\
+Du ja einen Abfluß!!!"))
+
+DEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _("\
+Hallo Mario, ich bin's,\n\
+Peach! Paß auf Dich auf!\n\
+Bowser wird versuchen,\n\
+Dich mit seinem Feueratem\n\
+zu versengen.\n\
+Renne hinter ihn!\n\
+Versuche mit dem\n\
+[B]-Knopf Bowsers\n\
+Schwanz zu packen und\n\
+ihn herumzuschleudern.\n\
+Bewege den Analog-Stick\n\
+im Kreis, um Dich zu\n\
+drehen. Je schneller\n\
+Du Dich drehst, desto\n\
+weiter wird Dein Wurf.\n\
+Benutze die [C]-Knöpfe, um\n\
+Dich zu orientieren. Du\n\
+mußt Bowser gegen eine\n\
+der Bomben am Rand der\n\
+Plattform werfen.\n\
+Drücke den [B]-Knopf, um\n\
+Bowser loszulassen und\n\
+in Richtung der Bombe\n\
+zu schleudern.\n\
+Viel Glück!!!"))
+
+DEFINE_DIALOG(DIALOG_067, 1, 5, 30, 200, _("\
+Tja, Mario, Pech gehabt!\n\
+Die Prinzessin ist nicht\n\
+hier und wird es auch so\n\
+bald nicht sein...\n\
+Hua...Hua...Hua...Hua!\n\
+Es wird Dir niemals\n\
+gelingen, mich von hinten\n\
+zu packen und zu werfen.\n\
+Da müßte schon ein wahrer\n\
+Held kommen, keine Wurst!\n\
+Vielleicht gehst Du besser\n\
+wieder nach Hause und\n\
+reparierst weiter kaputte\n\
+Rohre, als Dich mit mir\n\
+zu messen!!!"))
+
+DEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _("\
+Du bist im Land des\n\
+flüssigen Feuers. Wenn\n\
+Du vom Weg abkommst,\n\
+bewahre Ruhe, denn Du\n\
+verlierst nicht die\n\
+gesamte Energie auf\n\
+einmal. Außerdem kannst\n\
+Du den qualmenden Mario\n\
+während seines Höhenflugs\n\
+immer noch steuern!"))
+
+DEFINE_DIALOG(DIALOG_069, 1, 4, 30, 200, _("\
+Während Deiner Abenteuer\n\
+in den Wandbildern stößt\n\
+Du an den Rändern auf\n\
+unsichtbare Mauern.\n\
+Triffst Du fliegend auf\n\
+eine solche Mauer, prallst\n\
+Du ab. Du kannst aber den\n\
+Flug fortsetzen."))
+
+DEFINE_DIALOG(DIALOG_070, 1, 4, 30, 200, _("\
+Du kannst die Wandbilder\n\
+jederzeit verlassen, um\n\
+in die Schlosshalle\n\
+zurückzukehren.\n\
+Bleibe stehen, drücke\n\
+START, um das Spiel\n\
+zu pausieren, und wähle\n\
+„Kurs verlassen』!\n\
+Du mußt nicht alle Sterne\n\
+einer Welt finden, um\n\
+den nächsten Abschnitt\n\
+betreten zu können.\n\
+Hebe Dir die schweren\n\
+Brocken für später auf,\n\
+wenn Du Deine Techniken\n\
+perfektioniert hast.\n\
+Findest Du einen Stern,\n\
+erhältst Du einen Hinweis,\n\
+wo sich der nächste\n\
+Fundort befindet.\n\
+Aber Du mußt die Sterne\n\
+in keiner bestimmten\n\
+Reihenfolge finden.\n\
+Die Wahl liegt bei Dir!"))
+
+DEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _("\
+Achtung! Hüte Dich vor\n\
+den Nebelschwaden!\n\
+Sie enthalten keinen\n\
+Sauerstoff!\n\
+Benutze die erhöhten\n\
+Plattformen, um Dich\n\
+auszuruhen und einen\n\
+sicheren Weg zu suchen.\n\
+Auf der Karte sind\n\
+Unterstände als Kreise\n\
+dargestellt, den Eingang\n\
+erkennst Du am Pfeil!"))
+
+DEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _("\
+Hier oben weht eine steife\n\
+Brise. Solltest Du Deine\n\
+Mütze verlieren, kannst\n\
+Du sie auf dem Weg zum\n\
+Gipfel wiederfinden."))
+
+DEFINE_DIALOG(DIALOG_073, 1, 5, 95, 200, _("\
+Ahoi, Landratte! Es ist\n\
+doch wohl logisch, daß\n\
+sich hier unten ein\n\
+sagenhafter Schatz\n\
+befindet!\n\
+Zur Bergung mußt Du die\n\
+Kisten in der richtigen\n\
+Reihenfolge öffnen, klar?\n\
+Aber ich sage nicht, wie\n\
+sie lautet, hehehe!"))
+
+DEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _("\
+Siehst Du den Block\n\
+nebenan? Manchmal kannst\n\
+Du im Innern dieser\n\
+Quader interessante\n\
+Entdeckungen machen.\n\
+Zerstöre sie mit einem\n\
+gezielten Schlag oder\n\
+einer Stampfattacke,\n\
+damit sie ihr Geheimnis\n\
+preisgeben!"))
+
+DEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _("\
+Hilfe, Mario! Mein Schloss\n\
+befindet sich in großer\n\
+Gefahr. Ich weiß, daß der\n\
+widerliche Bowser seine\n\
+Hände im Spiel hat.\n\
+Er hat alle Türen des\n\
+Schlosses versiegelt. Nur\n\
+die magische Kraft der\n\
+Power-Sterne kann diese\n\
+Siegel brechen.\n\
+Aber es gibt einige\n\
+Geheimwege im Innern, die\n\
+Bowser nicht entdeckt\n\
+hat. Einer davon befindet\n\
+sich in diesem Raum.\n\
+Suche den Eingang und\n\
+finde den Power-Stern,\n\
+der sich darin verbirgt.\n\
+Hilf uns, Du bist unsere\n\
+einzige Hoffnung!\n\
+Fast alle Power-Sterne\n\
+kannst Du in den\n\
+Wandgemälden finden,\n\
+manche jedoch an\n\
+geheimen Orten.\n\
+Sammle soviele Sterne\n\
+wie möglich, um Bowsers\n\
+Plan zu vereiteln.\n\
+Wir zählen auf Dich!\n\
+Viel Glück!!!"))
+
+DEFINE_DIALOG(DIALOG_076, 1, 4, 30, 200, _("\
+Hallo Mario! Du hast\n\
+bereits einiges zur\n\
+Rettung des Schlosses\n\
+getan.\n\
+Aber Du mußt noch\n\
+viele Geheimnisse\n\
+der Wandgemälde\n\
+lüften.\n\
+Manchmal spielen Dir\n\
+Deine Augen einen Streich.\n\
+Die Realität verschwindet\n\
+hinter Fassaden.\n\
+Aber Du kannst das\n\
+Trugbild durchdringen,\n\
+wenn Du es im Spiegel\n\
+betrachtest!\n\
+Wasser ist ein flüssiges\n\
+Element. Die Magie des\n\
+Wandgemäldes beeinflußt\n\
+sein Verhalten.\n\
+Wähle verschiedene Wege,\n\
+um die versunkene Stadt\n\
+durch das Gemälde zu\n\
+betreten.\n\
+Ach ja, fast hätte ich es\n\
+vergessen: Hier habe ich\n\
+etwas für Dich! Es hilft\n\
+Dir, Bowser zu besiegen."))
+
+DEFINE_DIALOG(DIALOG_077, 1, 4, 150, 200, _("\
+Einst konnte man die Tür\n\
+öffnen. Zu dieser Zeit\n\
+waren die Säulen aber\n\
+niedriger!"))
+
+DEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _("\
+Diesen Schalter kannst Du\n\
+durch eine Stampfattacke\n\
+auslösen. Er läßt einige\n\
+blaue Münzen erscheinen,\n\
+die je fünf gelbe\n\
+Münzen wert sind.\n\
+Allerdings mußt Du Dich\n\
+beeilen, denn die blauen\n\
+Münzen erscheinen nur\n\
+für kurze Zeit."))
+
+DEFINE_DIALOG(DIALOG_079, 1, 4, 30, 200, _("\
+Auuuuuaaa! Hey, laß mich\n\
+los! Das war doch nur\n\
+Spaß! Du hast wohl keinen\n\
+Humor, was?\n\
+Okay, ich mache Dir einen\n\
+Vorschlag: Wenn Du mich\n\
+losläßt, habe ich eine\n\
+Überraschung für Dich!\n\
+Na, wie sieht's aus?\n\
+\n\
+//Klar!///Vergiß es!"))
+
+DEFINE_DIALOG(DIALOG_080, 1, 3, 30, 200, _("\
+Hey Baby, komm schon!\n\
+Wo bleibst Du denn so\n\
+lange?"))
+
+DEFINE_DIALOG(DIALOG_081, 1, 5, 30, 200, _("\
+Des Rätsels Lösung ist der\n\
+Wasserstand. Tief unten\n\
+erwartet Dich die Stadt,\n\
+nachdem Du den Pegel\n\
+hast sinken lassen."))
+
+DEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _("\
+Achte auf Deine Mütze!\n\
+Solltest Du sie verlieren,\n\
+wirst Du durch Treffer\n\
+schwerer verletzt.\n\
+Solltest Du sie einmal\n\
+verlieren, findest Du die\n\
+Mütze in dem Gemälde, in\n\
+dem Du sie verloren hast.\n\
+Die Prinzessin wird\n\
+noch immer von Bowser\n\
+gefangen gehalten. Rette\n\
+sie so schnell wie möglich.\n\
+Bowsers Schergen belagern\n\
+seit langer Zeit die\n\
+Welten der Gemälde und\n\
+Wände des Schlosses.\n\
+Aber es ist mir gelungen,\n\
+ihnen diesen Stern\n\
+abzujagen.\n\
+Viel Glück!"))
+
+DEFINE_DIALOG(DIALOG_083, 1, 6, 30, 200, _("\
+Betrittst Du die Uhr zu\n\
+verschiedenen Zeiten,\n\
+werden Dir weitere\n\
+Geheimnisse offenbart.\n\
+Vielleicht hilft Dir auch\n\
+dieser Stern!"))
+
+DEFINE_DIALOG(DIALOG_084, 1, 5, 30, 200, _("\
+Hey, Du Rüpel, ich\n\
+bekomme ja blaue Flecken.\n\
+Laß mich sofort los!\n\
+Bowser hat mir diesen\n\
+Stern geschenkt.\n\
+Er wäre ziemlich böse,\n\
+wenn er das wüßte, aber\n\
+ich bin in Eile. Also\n\
+nimm ihn und laß mich\n\
+runter!"))
+
+DEFINE_DIALOG(DIALOG_085, 1, 4, 30, 200, _("\
+Im Horrorhaus solltest Du\n\
+den Mund geschlossen\n\
+halten, damit Deine Zähne\n\
+nicht vor Angst klappern!"))
+
+DEFINE_DIALOG(DIALOG_086, 1, 3, 40, 200, _("\
+Wenn Du im Kreis rennst,\n\
+werden manche Gegner\n\
+große Augen machen!"))
+
+DEFINE_DIALOG(DIALOG_087, 1, 3, 30, 200, _("\
+Der Weihnachtsmann ist\n\
+nicht der einzige, der\n\
+in Schornsteine klettert!"))
+
+DEFINE_DIALOG(DIALOG_088, 1, 2, 30, 200, _("\
+Benutze die Stange, um\n\
+nach unten zu gelangen!"))
+
+DEFINE_DIALOG(DIALOG_089, 1, 4, 95, 200, _("\
+Auf beiden Wegen lauern\n\
+Gefahren. Links benötigst\n\
+Du den Weitsprung, um\n\
+weiterzukommen.\n\
+Rechts: Arbeitsplattform\n\
+////Nebellabyrinth\n\
+Links:/Schwarzes Loch\n\
+////Höhlensee"))
+
+DEFINE_DIALOG(DIALOG_090, 1, 5, 30, 200, _("\
+Hua, hua, hua, ich wußte,\n\
+daß Du mir in die Falle\n\
+gehen würdest. Du solltest\n\
+öfter auf Deine ulkigen\n\
+Füße schauen!"))
+
+DEFINE_DIALOG(DIALOG_091, 1, 3, 30, 200, _("\
+Achtung, starke Böen!\n\
+Aber es könnte auch eine\n\
+aufregende Reise werden!"))
+
+DEFINE_DIALOG(DIALOG_092, 1, 4, 30, 200, _("\
+Was willst Du denn schon\n\
+wieder? Du bist ja\n\
+lästiger als ein Schwarm\n\
+Stubenfliegen.\n\
+Gerade jetzt, als mir\n\
+die ganze Sache so viel\n\
+Spaß machte! Aber, wenn\n\
+Du schon mal hier bist:\n\
+Gib mir die Power-Sterne\n\
+zurück! Meine Truppen\n\
+können sie besser\n\
+gebrauchen als Du."))
+
+DEFINE_DIALOG(DIALOG_093, 1, 4, 30, 200, _("\
+Mario, wie schön Dich zu\n\
+sehen! Ich dachte gerade\n\
+an eine Grillparty - schon\n\
+bist Du da.\n\
+Jetzt brauche ich mir\n\
+wenigstens keine Gedanken\n\
+zu machen, was ich grille:\n\
+Nämlich Dich!\n\
+Dann gehört die Prinzessin\n\
+endgültig mir und ich bin\n\
+auf ewig der Herrscher\n\
+des Schlosses!!!"))
+
+DEFINE_DIALOG(DIALOG_094, 1, 4, 30, 200, _("\
+Erinnerst Du Dich noch an\n\
+den Weitsprung? Renne,\n\
+drücke den [Z]-Knopf und\n\
+dann den [A]-Knopf!"))
+
+DEFINE_DIALOG(DIALOG_095, 1, 3, 30, 200, _("\
+Wie man Schilder liest,\n\
+hast Du offensichtlich\n\
+bereits herausgefunden.\n\
+Auf die gleiche Weise\n\
+kannst Du mit anderen\n\
+sprechen."))
+
+DEFINE_DIALOG(DIALOG_096, 1, 4, 30, 200, _("\
+Der Weg zur Burg ist\n\
+sehr schmal! Selbst\n\
+Wagemutige sollten sich\n\
+langsam bewegen.\n\
+Außerdem wecken leise\n\
+Schritte niemanden, der\n\
+schläft - was Dein\n\
+Vorteil sein könnte!"))
+
+DEFINE_DIALOG(DIALOG_097, 1, 6, 30, 200, _("\
+Sei nicht schüchtern,\n\
+sondern wehre Dich,\n\
+wenn jemand versucht,\n\
+Dich von einer Plattform\n\
+zu schubsen. Sonst steigt\n\
+die Temperatur!"))
+
+DEFINE_DIALOG(DIALOG_098, 1, 1, 95, 200, _("\
+Komm nur näher, hehehe!"))
+
+DEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _("\
+"))
+
+DEFINE_DIALOG(DIALOG_100, 1, 2, 95, 200, _("\
+Jippiiiiieee, ich hab' sie!\n\
+Jetzt gehört sie mir!!!"))
+
+DEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _("\
+Hgggnnnhhh! Laß...mich...\n\
+los!!! Diese Mütze? Na\n\
+gut, ich gebe sie Dir,\n\
+obwohl sie mir besser\n\
+steht als Dir!"))
+
+DEFINE_DIALOG(DIALOG_102, 1, 5, 30, 200, _("\
+Hey, pssst, paß mal auf:\n\
+Die Geister sind sehr\n\
+schüchtern. Siehst Du\n\
+ihnen in die Augen,\n\
+verschwinden sie.\n\
+Drehst Du ihnen allerdings\n\
+den Rücken zu, werden\n\
+sie wieder sichtbar.\n\
+Attackiere sie von hinten,\n\
+um sie zu besiegen."))
+
+DEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _("\
+Die Pyramide ist von vier\n\
+Säulen umgeben. Erklimme\n\
+die Spitzen der Säulen, um\n\
+das Geheimnis zu lüften."))
+
+DEFINE_DIALOG(DIALOG_104, 1, 4, 30, 200, _("\
+Der Schattenstern vor Dir\n\
+wird real, wenn Du die\n\
+acht roten Münzen dieser\n\
+Welt findest."))
+
+DEFINE_DIALOG(DIALOG_105, 1, 5, 95, 200, _("\
+Bist Du bereit? Dann rein\n\
+mit Dir in die Kanone! Du\n\
+kannst mir ihrer Hilfe\n\
+die schwebende Insel\n\
+erreichen!\n\
+Benutze den Analog-Stick\n\
+zum Zielen und feuere die\n\
+Kanone mit dem [A]-Knopf\n\
+ab. Akrobaten bevorzugen\n\
+Bäume zur Landung!"))
+
+DEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _("\
+Bist Du bereit? Dann rein\n\
+mit Dir in die Kanone!"))
+
+DEFINE_DIALOG(DIALOG_107, 1, 4, 95, 200, _("\
+Das werde ich meinem\n\
+großen Bruder erzählen!\n\
+Dann kannst Du aber was\n\
+erleben..."))
+
+DEFINE_DIALOG(DIALOG_108, 1, 6, 95, 200, _("\
+Ha-Boooo! Du bist also\n\
+der Unruhestifter...\n\
+Jetzt wirst Du das büßen,\n\
+was Du mir und meinen\n\
+Geschwistern angetan\n\
+hast..."))
+
+DEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _("\
+Schnief, schnüff! Mein\n\
+einst stattlicher Körper\n\
+hat sich in Wasser\n\
+aufgelöst.\n\
+Ich würde alles für einen\n\
+neuen Körper geben.\n\
+Vielleicht kannst Du mir\n\
+helfen, schluchz?"))
+
+DEFINE_DIALOG(DIALOG_110, 1, 5, 95, 200, _("\
+Oh Mann, ich fühle mich\n\
+so kopflos! Kennst Du\n\
+jemanden, der nach einem\n\
+Körper sucht? Unten?\n\
+Okay, dann los!"))
+
+DEFINE_DIALOG(DIALOG_111, 1, 3, 95, 200, _("\
+Boah, welch komfortables\n\
+Unterteil!\n\
+Ich bin so glücklich...\n\
+Hier, nimm den Stern.\n\
+Ich hoffe, er bringt\n\
+Dir Glück!"))
+
+DEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _("\
+Sammle so viele Münzen,\n\
+wie Du finden kannst.\n\
+Sie geben Dir verlorene\n\
+Energie zurück.\n\
+Die Bestleistung jeder\n\
+Welt wird gespeichert.\n\
+Du kannst sie jederzeit\n\
+abrufen.\n\
+In einigen Welten wirst\n\
+Du transparenten Herzen\n\
+begegnen. Auch sie füllen\n\
+Deinen Power-Meter auf.\n\
+Je schneller Du das Herz\n\
+passierst, desto mehr\n\
+verlorene Energie wird\n\
+ersetzt."))
+
+DEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _("\
+In den roten, blauen und\n\
+grünen Blöcken befinden\n\
+sich verschiedene Mützen.\n\
+Du mußt die versteckten\n\
+Schalter finden, um die\n\
+Blöcke öffnen zu können."))
+
+DEFINE_DIALOG(DIALOG_114, 1, 4, 95, 200, _("\
+Das gibt es doch gar\n\
+nicht! Was willst Du\n\
+Wicht hier in meinem\n\
+Reich?\n\
+Ich werde Dich lehren,\n\
+meine Befehle zu...\n\
+Oh, diese vermaledeiten\n\
+Rückenschmerzen...!"))
+
+DEFINE_DIALOG(DIALOG_115, 1, 4, 95, 200, _("\
+Unglaublich! Du hast mich\n\
+von meinen Kreuzschmerzen\n\
+befreit! Als Dank gebe\n\
+ich Dir diesen Stern!"))
+
+DEFINE_DIALOG(DIALOG_116, 1, 4, 95, 200, _("\
+Waaaaa...wie? Du hast\n\
+mich besiegt...\n\
+Ich verneige mein Haupt\n\
+vor Deiner Größe!\n\
+Aber Du mußt Dich\n\
+vorsehen!\n\
+Bowser wird nicht so\n\
+leicht zu besiegen sein.\n\
+Ich gebe Dir diesen\n\
+Stern, um Dir meine\n\
+Demut zu beweisen.\n\
+Trage ihn mit Stolz.\n\
+Wenn Du mich wiedersehen\n\
+willst, wähle den ersten\n\
+Stern des Kursmenüs an!\n\
+Bis dann..."))
+
+DEFINE_DIALOG(DIALOG_117, 1, 4, 95, 200, _("\
+Schritte? Grabräuber?\n\
+Wer wagt es, den ewigen\n\
+Frieden unseres Grabes\n\
+zu stören?\n\
+Jenem sei gewiß, daß\n\
+wir diesen Frevel mit\n\
+aller Härte bestrafen\n\
+werden!\n\
+Unser Zorn wird ihn\n\
+zermalmen und Ra stehe\n\
+ihm bei, daß es schnell\n\
+gehen wird..."))
+
+DEFINE_DIALOG(DIALOG_118, 1, 6, 95, 200, _("\
+Wir sind besiegt...\n\
+Du hast den Fluch des\n\
+Pharaos gebrochen.\n\
+Jetzt finden wir unseren\n\
+verdienten Frieden. Nimm\n\
+als Dank diesen Stern!"))
+
+DEFINE_DIALOG(DIALOG_119, 1, 6, 30, 200, _("\
+Grrrr, offensichtlich war\n\
+ich ein wenig unachtsam.\n\
+Aber ich habe noch immer\n\
+die Prinzessin und die\n\
+Power-Sterne in meiner\n\
+Gewalt!\n\
+Ich werde dafür sorgen,\n\
+daß Du keine weiteren\n\
+Sterne erlangen wirst.\n\
+Unser nächstes Treffen\n\
+wird einen anderen Sieger\n\
+haben...bestimmt!"))
+
+DEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _("\
+Woaaaah, Du hast schon\n\
+wieder gewonnen.\n\
+Hat mich etwa die Kraft\n\
+der Sterne verlassen?\n\
+Betrachte diesen Kampf\n\
+als Unentschieden!\n\
+Das nächste Mal bin ich\n\
+besser vorbereitet!\n\
+Ich warte am höchsten\n\
+Punkt des Schlosses auf\n\
+Dich...dort werden wir\n\
+sehen, wer stärker ist!"))
+
+DEFINE_DIALOG(DIALOG_121, 1, 6, 30, 200, _("\
+Aaaaaarrrgghh!\n\
+Du...hast...gewonnen!\n\
+Ich wollte mit meinen\n\
+Truppen dieses Schloss\n\
+erobern, doch Du hast\n\
+meine Pläne vereitelt.\n\
+Der Frieden kehrt\n\
+zurück in die Welten\n\
+der Wandgemälde...leider!\n\
+Jetzt bleibt mir nichts\n\
+anderes mehr übrig, als\n\
+mein Ende abzuwarten..."))
+
+DEFINE_DIALOG(DIALOG_122, 1, 4, 30, 200, _("\
+Das Schwarze Loch\n\
+Rechts: Arbeitsplattform\n\
+////Nebellabyrinth\n\
+Links:/Höhlensee"))
+
+DEFINE_DIALOG(DIALOG_123, 1, 3, 30, 200, _("\
+Titanenhöhle\n\
+Rechts: Wasserfall\n\
+Links:/Grüner Schalter"))
+
+DEFINE_DIALOG(DIALOG_124, 1, 5, 30, 200, _("\
+Arbeitsplattform\n\
+Zur Beachtung:\n\
+Aktiviere einen der\n\
+Richtungspfeile, um die\n\
+Plattform zu bewegen."))
+
+DEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _("\
+Rechts ist der Ausgang\n\
+des Nebellabyrinths. Bitte\n\
+Eingang links benutzen!"))
+
+DEFINE_DIALOG(DIALOG_126, 1, 3, 30, 200, _("\
+Oben:/ Schwarzes Loch\n\
+Rechts: Arbeitsplattform\n\
+////Nebellabyrinth"))
+
+DEFINE_DIALOG(DIALOG_127, 1, 4, 30, 200, _("\
+Höhlensee\n\
+Rechts: Titanenhöhle\n\
+Links:/Verlassene Mine\n\
+////(Geschlossen!!!)\n\
+Hier lebt ein Seemonster.\n\
+Führe auf seinem Rücken\n\
+eine Stampfattacke aus,\n\
+damit es den Kopf senkt!"))
+
+DEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _("\
+Hey, es ist gegen die\n\
+königlichen Regeln, den\n\
+Herrscher aus dem Ring\n\
+zu werfen!"))
+
+DEFINE_DIALOG(DIALOG_129, 1, 4, 30, 200, _("\
+Herzlich willkommen!\n\
+In diesem Kurs kannst\n\
+Du den blauen Schalter\n\
+entdecken.\n\
+Löst Du ihn aus, kannst\n\
+Du in allen blauen Blöcken\n\
+Tarnkappen finden, die\n\
+Dich unsichtbar machen!\n\
+Auf diese Weise kannst Du\n\
+durch bestimmte Wände\n\
+gehen und Gegnern\n\
+ungesehen ausweichen."))
+
+DEFINE_DIALOG(DIALOG_130, 1, 4, 30, 200, _("\
+Herzlich willkommen!\n\
+In diesem Kurs kannst\n\
+Du den grünen Schalter\n\
+entdecken.\n\
+Löst Du ihn aus, kannst\n\
+Du in allen grünen Blöcken\n\
+Titanenkappen finden, die\n\
+Dich unbesiegbar machen.\n\
+Bist Du mit diesen Mützen\n\
+ausgerüstet, kannst Du\n\
+unter Wasser laufen und\n\
+brauchst nicht zu atmen."))
+
+DEFINE_DIALOG(DIALOG_131, 1, 4, 30, 200, _("\
+Herzlich willkommen!\n\
+In diesem Kurs kannst\n\
+Du den roten Schalter\n\
+entdecken.\n\
+Löst Du ihn aus, kannst\n\
+Du in allen roten Blöcken\n\
+Federkappen finden, mit\n\
+denen Du fliegen kannst.\n\
+Benutze den Dreisprung,\n\
+um den Flug zu starten.\n\
+Die Kontrolle funktioniert\n\
+wie bei einem Flugzeug.\n\
+Bewege den Analog-Stick\n\
+nach vorne, um zu sinken,\n\
+und nach hinten, um zu\n\
+steigen!"))
+
+DEFINE_DIALOG(DIALOG_132, 1, 3, 30, 200, _("\
+Tsetsetse...Mario!\n\
+Du versuchst doch nicht\n\
+etwa, mich zu betrügen?\n\
+Abkürzungen sind nicht\n\
+erlaubt.\n\
+Du bist disqualifiziert!"))
+
+DEFINE_DIALOG(DIALOG_133, 1, 5, 30, 200, _("\
+Ich freue mich, Dich zu\n\
+sehen. Die Prinzessin...\n\
+ich...und alle anderen\n\
+sind in den Wänden des\n\
+Schlosses gefangen.\n\
+Bowser hat die Sterne\n\
+entwendet und benutzt\n\
+sie, um seine eigenen\n\
+Welten in den Gemälden\n\
+zu erschaffen.\n\
+Du mußt die Power-Sterne\n\
+finden. Mit ihrer Hilfe\n\
+kannst Du Bowsers Siegel\n\
+an den Türen des Schlosses\n\
+brechen.\n\
+Im Erdgeschoß gibt es\n\
+vier Welten. Beginne in\n\
+der Welt der Bob-Ombs.\n\
+Das ist die einzige Tür,\n\
+die nicht versiegelt ist.\n\
+Hast Du acht Sterne\n\
+gesammelt, kannst Du die\n\
+Tür mit dem großen Stern\n\
+öffnen. Dahinter befindet\n\
+sich die Prinzessin!"))
+
+DEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _("\
+Am Beginn jeder Welt\n\
+erhältst Du einen Hinweis,\n\
+wo der nächste Stern\n\
+zu finden ist.\n\
+Du kannst sie in beliebiger\n\
+Reihenfolge sammeln, aber\n\
+einige erscheinen nur unter\n\
+bestimmten Bedingungen.\n\
+Nachdem Du ein paar\n\
+Sterne gefunden hast,\n\
+kannst Du Dich in anderen\n\
+Welten umsehen."))
+
+DEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _("\
+Bowser hat sich die\n\
+Power-Sterne unter den\n\
+Nagel gerissen. In jeder\n\
+Welt hat er sechs Sterne\n\
+versteckt.\n\
+Manche der Sterne kannst\n\
+Du aber erst finden, wenn\n\
+Du die farbigen Schalter\n\
+in den Schalterpalästen\n\
+ausgelöst hast.\n\
+Bereits gefundene Sterne\n\
+kannst Du zu Beginn jeder\n\
+Welt sehen. Triff besiegte\n\
+Gegner, indem Du erneut\n\
+ihren Stern anwählst."))
+
+DEFINE_DIALOG(DIALOG_136, 1, 4, 30, 200, _("\
+Wow, Du hast bereits so\n\
+viele Sterne gefunden?\n\
+Ich bin sicher, das war\n\
+kein Kinderspiel!\n\
+Ich habe noch einige Tips,\n\
+die Dir bei der Suche nach\n\
+den Power-Sternen von\n\
+Nutzen sein könnten:\n\
+Sammle Münzen, um Deine\n\
+Energie aufzufüllen. Ihre\n\
+Farbe entscheidet, wieviel\n\
+Energie Du erhältst.\n\
+Gelbe Münzen geben eine,\n\
+rote Münzen zwei und\n\
+blaue Münzen sogar fünf\n\
+Energieeinheiten zurück.\n\
+Damit die blauen Münzen\n\
+sichtbar werden, mußt\n\
+Du ihre Schalter in den\n\
+Boden stampfen.\n\
+Halte Verletzungen gering,\n\
+indem Du bei Stürzen im\n\
+letzen Moment eine\n\
+Stampfattacke ausführst."))
+
+DEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _("\
+Vielen Dank! Du hast\n\
+schon sehr viele Sterne\n\
+gesammelt und Bowser in\n\
+ein höheres Stockwerk\n\
+verbannt.\n\
+Wußtest Du eigentlich,\n\
+daß Du in jeder Welt\n\
+einen geheimen Stern\n\
+erhältst, wenn Du\n\
+100 Münzen sammelst?"))
+
+DEFINE_DIALOG(DIALOG_138, 1, 4, 30, 200, _("\
+Unten:/Höhlensee\n\
+Links:/Schwarzes Loch\n\
+Rechts: Nebellabyrinth\n\
+////(Geschlossen!!!)"))
+
+DEFINE_DIALOG(DIALOG_139, 1, 4, 30, 200, _("\
+Automatische Plattform\n\
+Sobald Du diese Plattform\n\
+betrittst, setzt sie sich\n\
+in Bewegung.\n\
+Sie folgt einem\n\
+programmierten Kurs und\n\
+verschwindet automatisch,\n\
+wenn Du sie verläßt."))
+
+DEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _("\
+Arbeitsplattform\n\
+Rechts: Nebellabyrinth\n\
+////Eingang\n\
+Links:/Schwarzes Loch\n\
+////Aufzug 1\n\
+Pfeil:/Standort"))
+
+DEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _("\
+Du hast einen der\n\
+gestohlenen Power-Sterne\n\
+gefunden.\n\
+Damit kannst Du einige\n\
+versiegelte Türen öffnen.\n\
+Versuch's mal im Zimmer\n\
+der Prinzessin im\n\
+1. Stock oder in\n\
+Wummps Festung im\n\
+Erdgeschoß der Vorhalle.\n\
+Halte Bowser auf und\n\
+rette uns und die\n\
+Power-Sterne.\n\
+Wir zählen auf Dich und\n\
+drücken Dir die Daumen."))
+
+DEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _("\
+Du hast drei magische\n\
+Power-Sterne gesammelt.\n\
+Jetzt kannst Du jede Tür\n\
+öffnen, deren Siegel eine\n\
+Drei trägt.\n\
+Du kannst die Türen so oft\n\
+passieren, wie Du willst.\n\
+Aber paß auf: In höheren\n\
+Stockwerken werden die\n\
+Gegner viel stärker!"))
+
+DEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _("\
+Du hast acht Sterne\n\
+gesammelt. Jetzt kannst\n\
+Du die Tür mit dem\n\
+großen Stern öffnen.\n\
+Die Prinzessin hält sich\n\
+dahinter auf!"))
+
+DEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _("\
+Du hast 30 Power-Sterne\n\
+gesammelt. Jetzt kannst\n\
+Du die Tür mit dem\n\
+großen Stern öffnen. Aber\n\
+warte noch einen Moment!\n\
+Hast Du die beiden Säulen\n\
+in den Boden gestampft?\n\
+Und Du hast doch wohl\n\
+nicht Deine Mütze\n\
+verloren, oder?\n\
+Wenn ja, mußt Du den\n\
+Riesengeier mit einer\n\
+Stampfattacke besiegen!\n\
+Ach ja: Bowser hält sich\n\
+jetzt im Untergrund auf."))
+
+DEFINE_DIALOG(DIALOG_145, 1, 4, 150, 200, _("\
+Du hast 50 Power-Sterne\n\
+gesammelt. Jetzt kannst\n\
+Du die Tür mit dem großen\n\
+Stern im 3. Stock öffnen.\n\
+Hast Du bereits alle\n\
+Schalterpaläste gefunden?\n\
+Diese besonderen Mützen\n\
+sind sehr nützlich."))
+
+DEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _("\
+Du hast 70 Power-Sterne\n\
+gesammelt. Jetzt kannst\n\
+Du das Geheimnis der\n\
+endlosen Treppe lüften.\n\
+Begib Dich zum finalen\n\
+Duell mit Bowser!"))
+
+DEFINE_DIALOG(DIALOG_147, 1, 4, 30, 200, _("\
+Bevor Du weitergehst,\n\
+solltest Du nach den\n\
+versteckten Schaltern\n\
+suchen.\n\
+Hast Du sie gefunden,\n\
+kannst Du in allen\n\
+bunten Blöcken besondere\n\
+Mützen finden.\n\
+In roten Blöcken findest\n\
+Du Federkappen, in\n\
+grünen Titanenkappen\n\
+und in blauen Tarnkappen.\n\
+Allerdings mußt Du bereits\n\
+einige Sterne besitzen, um\n\
+die Schalterpaläste finden\n\
+zu können!"))
+
+DEFINE_DIALOG(DIALOG_148, 1, 4, 30, 200, _("\
+Achtung, Achtung!\n\
+Versuche bloß nicht, den\n\
+Berg mit dem Dreisprung\n\
+zu erreichen!\n\
+Außerdem ist das Wasser\n\
+sehr kalt - Deine Fitness\n\
+könnte bei einem Bad\n\
+großen Schaden nehmen!"))
+
+DEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _("\
+Willkommen auf der\n\
+Rutschbahn der Prinzessin.\n\
+Hier befindet sich ein\n\
+Stern, den Bowser nicht\n\
+entdeckt hat.\n\
+Drücke den Analog-Stick\n\
+nach vorne, um zu\n\
+beschleunigen.\n\
+Wenn Du sehr schnell bist,\n\
+erhältst Du den Stern."))
+
+DEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _("\
+Aaaaaah! Sieh Dir diese\n\
+Schweinerei an. Du hast\n\
+meine Wohnung überflutet.\n\
+Meine ganze Einrichtung\n\
+ist ruiniert!\n\
+Ich bin stinksauer! Alles\n\
+läuft schief, seit ich\n\
+diesen dämlichen Stern\n\
+gefunden habe. Ich...\n\
+Ich...werde..."))
+
+DEFINE_DIALOG(DIALOG_151, 1, 5, 30, 200, _("\
+Ich halte das nicht mehr\n\
+aus - zuerst überflutest\n\
+Du meine Wohnung und\n\
+dann hüpfst Du auch noch\n\
+auf mir herum!?\n\
+Mir reicht's! Ich werde\n\
+Dir richtiges Benehmen\n\
+beibringen! Du...Ich...\n\
+werde Dich...Ich werde\n\
+Dich lehren..."))
+
+DEFINE_DIALOG(DIALOG_152, 1, 4, 30, 200, _("\
+Ooooh, halt, halt! Ich\n\
+gebe auf. Hier, nimm\n\
+den Stern. Ich brauche\n\
+ihn nicht mehr.\n\
+Ich kann mir die Sterne\n\
+durch das Loch in der\n\
+Decke ansehen, wann\n\
+immer ich möchte."))
+
+DEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _("\
+Hey, wer ist da? Wer\n\
+meint, auf mir 'rumlaufen\n\
+zu müssen? Ein Eisfloh\n\
+oder eine Schneefliege?\n\
+Egal, was es ist, auf\n\
+jeden Fall stört es mich.\n\
+Aber mein Eisatem wird\n\
+mich davon befreien!"))
+
+DEFINE_DIALOG(DIALOG_154, 1, 6, 30, 200, _("\
+Paß gut auf Deine Mütze\n\
+auf - ohne sie bist Du\n\
+leicht verletzbar!\n\
+Wenn Du sie verloren hast,\n\
+findest Du sie in\n\
+derselben Welt wieder."))
+
+DEFINE_DIALOG(DIALOG_155, 1, 3, 30, 200, _("\
+Hi, Mario! Ich erzähle\n\
+Dir einige Geheimnisse\n\
+des Schlosses:\n\
+Es heißt, daß der Spiegel\n\
+des Spiegelsaals magische\n\
+Fähigkeiten besitzt.\n\
+Er soll Dinge zeigen, die\n\
+Du mit bloßem Auge nicht\n\
+erkennen kannst.\n\
+Aber das ist bestimmt\n\
+Unfug und lediglich\n\
+dummer Aberglaube.\n\
+Bei der versunkenen\n\
+Stadt ist das schon\n\
+etwas anderes.\n\
+Du kannst den Pegel des\n\
+Wassers durch die Sprünge\n\
+ins Gemälde beeinflussen.\n\
+Am besten schaust Du Dir\n\
+die Wirkung direkt im\n\
+Gemälde an!"))
+
+DEFINE_DIALOG(DIALOG_156, 1, 4, 30, 200, _("\
+Diese Uhr ist wirklich\n\
+ungewöhnlich. Ihr Inneres\n\
+verändert sich im Laufe\n\
+der Zeit."))
+
+DEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _("\
+Achte auf den Treibsand!\n\
+Solltest Du einmal darin\n\
+versinken, findet Dein\n\
+Gemäldebesuch ein rasches\n\
+Ende.\n\
+Schwarze Löcher sind\n\
+bodenlose Fallen. Du wirst\n\
+das Gemälde neu betreten\n\
+müssen, wenn Du in eines\n\
+dieser Löcher hineinfällst."))
+
+DEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _("\
+Mit dem richtigen Timing\n\
+kannst Du sehr hoch\n\
+springen. Den Dreisprung\n\
+kannst Du ausführen, wenn\n\
+Du rennst und dreimal\n\
+hintereinander springst.\n\
+Wandsprünge sind eine\n\
+effektive Methode, um\n\
+hohe Stellen zu erreichen.\n\
+Springe an eine Wand.\n\
+Sobald Du sie berührst,\n\
+mußt Du erneut springen!"))
+
+DEFINE_DIALOG(DIALOG_159, 1, 4, 30, 200, _("\
+Gehst Du in die Hocke und\n\
+drückst den Sprungknopf,\n\
+kannst Du einen\n\
+Rückwärtssalto ausführen.\n\
+Du machst einen\n\
+Weitsprung, wenn Du im\n\
+Rennen den [Z]-Knopf\n\
+drückst und springst."))
+
+DEFINE_DIALOG(DIALOG_160, 1, 6, 30, 200, _("\
+Drücke im Rennen den\n\
+[B]-Knopf, um einen\n\
+Hechtsprung zu machen.\n\
+Mit dem [A]- oder [B]-Knopf\n\
+kommt Mario auf die Füße\n\
+zurück."))
+
+DEFINE_DIALOG(DIALOG_161, 1, 5, 30, 200, _("\
+Hey... Mario!!! Seit\n\
+unserem letzten Abenteuer\n\
+ist viel Zeit vergangen.\n\
+Ich freue mich, Dich\n\
+wiederzusehen.\n\
+Man erzählte mir, daß ich\n\
+Dich hier treffen könnte,\n\
+aber ich hatte die\n\
+Hoffnung schon fast\n\
+aufgegeben.\n\
+Ist es wahr? Du hast\n\
+Bowser besiegt und alle\n\
+gestohlenen Power-Sterne\n\
+zurückerobert?\n\
+Unglaublich!!!\n\
+Und die Prinzessin?\n\
+Du hast sie gerettet?\n\
+Cool! Aber ich wußte\n\
+natürlich, daß Du es\n\
+schaffen würdest.\n\
+Nun habe ich noch eine\n\
+ganz spezielle Nachricht\n\
+für Dich:\n\
+Danke, daß Du SUPER\n\
+MARIO 64 gespielt hast.\n\
+Du hast jetzt alle Sterne\n\
+gefunden und damit das\n\
+Spiel beendet. Aber wir\n\
+haben noch eine kleine\n\
+Überraschung für Dich!\n\
+Wir hoffen, sie wird Dir\n\
+gefallen, denn du kannst\n\
+das Spiel nochmals unter\n\
+veränderten Bedingungen\n\
+spielen. Viel Spaß!\n\
+Es könnte sein, daß Du\n\
+dabei neue Entdeckungen\n\
+machst, die Dir bis jetzt\n\
+verborgen geblieben sind.\n\
+Das Super Mario 64 Team"))
+
+DEFINE_DIALOG(DIALOG_162, 1, 4, 30, 200, _("\
+Nein, nein, nein! Nicht\n\
+Du schon wieder! Ich habe\n\
+jetzt wirklich keine Zeit,\n\
+über Sterne zu quatschen!\n\
+Hier, nimm ihn und laß\n\
+mich runter. Ich habe noch\n\
+wichtige Geschäfte zu\n\
+erledigen!"))
+
+DEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _("\
+Ich glaub's nicht! Du hast\n\
+mich besiegt...wie konnte\n\
+das nur geschehen. Meine\n\
+Truppen, die Sterne...\n\
+alles umsonst!\n\
+Was??? Es gab insgesamt\n\
+120 Sterne im Schloss zu\n\
+finden? Dann habe ich\n\
+wohl einige bei meiner\n\
+Suche übersehen!\n\
+Jetzt kehrt der Frieden\n\
+zurück in die Welten der\n\
+Gemälde - was für ein\n\
+fürchterlicher Gedanke...\n\
+Aaaaaarrrgghhhh!!!\n\
+Das kann ich mir nicht\n\
+länger ansehen - ich\n\
+verschwinde. So long...\n\
+Bis zum nächsten Mal.\n\
+Ich komme wieder..."))
+
+DEFINE_DIALOG(DIALOG_164, 1, 6, 30, 200, _("\
+Hi! Wie geht's, Mario?\n\
+Ich bin zwar etwas außer\n\
+Übung, aber ein Rennen\n\
+gegen den Schlidderkönig\n\
+ist immer eine große\n\
+Herausforderung.\n\
+Also, Kumpel, wie steht's?\n\
+Sollen wir ein kleines\n\
+Match wagen?\n\
+\n\
+//Okay!///Später!"))
+
+DEFINE_DIALOG(DIALOG_165, 1, 4, 30, 200, _("\
+Sei vorsichtig, wenn Du\n\
+um den Pfahl herumrennst,\n\
+damit Dir nicht schlecht\n\
+wird!"))
+
+DEFINE_DIALOG(DIALOG_166, 1, 5, 30, 200, _("\
+Ich mache gerade einen\n\
+kleinen Waldlauf. Komm\n\
+doch später wieder\n\
+vorbei!\n\
+Dein Freund Koopa"))
+
+DEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _("\
+Dort vorne ist das\n\
+Schloss der Prinzessin.\n\
+Sieh Dich zunächst hier\n\
+im Schlossgarten um.\n\
+Die Steuerung ist ganz\n\
+einfach:\n\
+Drücke den [A]-Knopf, um\n\
+zu springen.\n\
+Schläge kannst Du mit\n\
+dem [B]-Knopf ausführen.\n\
+Drückst Du den [Z]-Knopf,\n\
+duckt sich Mario.\n\
+Schilder kannst Du mit\n\
+dem [A]- oder [B]-Knopf\n\
+lesen, wenn Du direkt\n\
+davor stehst."))
+
+DEFINE_DIALOG(DIALOG_168, 1, 4, 30, 200, _("\
+Bist Du immer noch hier?\n\
+Findest Du nicht, daß\n\
+Du bereits genug Schaden\n\
+angerichtet hast?"))
+
+DEFINE_DIALOG(DIALOG_169, 1, 4, 30, 200, _("\
+Dies ist die erste und\n\
+letzte Warnung:\n\
+Das Betreten dieser\n\
+Höhle ist verboten!!!\n\
+Wer sich hier ohne meine\n\
+Erlaubnis Zutritt\n\
+verschafft, handelt sich\n\
+eine Menge Ärger ein!!!"))
diff --git a/text/define_text.inc.c b/text/define_text.inc.c
@@ -0,0 +1,128 @@
+// == debug table ==
+
+#ifndef VERSION_EU
+
+// (this wasn't translated for US, and was removed in EU)
+
+static const u8 Debug0[] = {
+ _("STAGE SELECT\n"
+ " つづける?\n"
+ " 1 マウンテン\n"
+ " 2 ファイア-バブル\n"
+ " 3 スノ-スライダ-\n"
+ " 4 ウォ-タ-ランド\n"
+ " クッパ1ごう\n"
+ " もどる")
+};
+
+static const u8 Debug1[] = {
+ _("PAUSE \n"
+ " つづける?\n"
+ " やめる ?")
+};
+
+static const struct DialogEntry debug_text_entry_0 = {
+ 1, 8, 30, 200, Debug0
+};
+
+static const struct DialogEntry debug_text_entry_1 = {
+ 1, 3, 100, 150, Debug1
+};
+
+const struct DialogEntry *const seg2_debug_text_table[] = {
+ &debug_text_entry_0, &debug_text_entry_1, NULL,
+};
+
+#endif
+
+
+// == dialog ==
+// (defines en_dialog_table etc.)
+
+#define DEFINE_DIALOG(id, _1, _2, _3, _4, str) \
+ static const u8 dialog_text_ ## id[] = { str };
+
+#include "dialogs.h"
+
+#undef DEFINE_DIALOG
+#define DEFINE_DIALOG(id, unused, linesPerBox, leftOffset, width, _) \
+ static const struct DialogEntry dialog_entry_ ## id = { \
+ unused, linesPerBox, leftOffset, width, dialog_text_ ## id \
+ };
+
+#include "dialogs.h"
+
+#undef DEFINE_DIALOG
+#define DEFINE_DIALOG(id, _1, _2, _3, _4, _5) &dialog_entry_ ## id,
+
+const struct DialogEntry *const seg2_dialog_table[] = {
+#include "dialogs.h"
+ NULL
+};
+
+
+// == courses ==
+// (defines en_course_name_table etc.)
+
+#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
+ static const u8 course_name_ ## id[] = { name };
+
+#define SECRET_STAR(id, name) \
+ static const u8 course_name_ ## id[] = { name };
+
+#define CASTLE_SECRET_STARS(str) \
+ static const u8 course_name_castle_secret_stars[] = { str };
+
+#define EXTRA_TEXT(id, str)
+
+#include "courses.h"
+
+#undef COURSE_ACTS
+#undef SECRET_STAR
+#undef CASTLE_SECRET_STARS
+
+#define COURSE_ACTS(id, name, a,b,c,d,e,f) course_name_ ## id,
+#define SECRET_STAR(id, name) course_name_ ## id,
+#define CASTLE_SECRET_STARS(str) course_name_castle_secret_stars,
+
+const u8 *const seg2_course_name_table[] = {
+#include "courses.h"
+ NULL
+};
+
+#undef COURSE_ACTS
+#undef SECRET_STAR
+#undef CASTLE_SECRET_STARS
+
+// == acts ==
+// (defines en_act_name_table etc.)
+
+#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
+ static const u8 act_name_ ## id ## _1[] = { a }; \
+ static const u8 act_name_ ## id ## _2[] = { b }; \
+ static const u8 act_name_ ## id ## _3[] = { c }; \
+ static const u8 act_name_ ## id ## _4[] = { d }; \
+ static const u8 act_name_ ## id ## _5[] = { e }; \
+ static const u8 act_name_ ## id ## _6[] = { f };
+
+#define SECRET_STAR(id, name)
+#define CASTLE_SECRET_STARS(str)
+
+#undef EXTRA_TEXT
+#define EXTRA_TEXT(id, str) \
+ static const u8 extra_text_ ## id[] = { str };
+
+#include "courses.h"
+
+#undef COURSE_ACTS
+#undef EXTRA_TEXT
+
+#define COURSE_ACTS(id, name, a,b,c,d,e,f) \
+ act_name_ ## id ## _1, act_name_ ## id ## _2, act_name_ ## id ## _3, \
+ act_name_ ## id ## _4, act_name_ ## id ## _5, act_name_ ## id ## _6,
+#define EXTRA_TEXT(id, str) extra_text_ ## id,
+
+const u8 *const seg2_act_name_table[] = {
+#include "courses.h"
+ NULL
+};
diff --git a/text/eu/de/dialog.c.in b/text/eu/de/dialog.c.in
@@ -1,3298 +0,0 @@
-// dialogs (EU, Deutsch)
-// 0x19000000
-static const u8 Dialog000[] = {
- _("Du bist inmitten der\n"
- "Kampfarena gelandet.\n"
- "Sei vorsichtig!\n"
- "Die von Bowser erbeuteten\n"
- "Power-Sterne findest Du\n"
- "in den Wandgemälden.\n"
- "Sprich zuerst mit Buddy,\n"
- "der rosa Bombe.\n"
- "Drücke [B], um Dich mit ihr\n"
- "zu unterhalten. Sie und\n"
- "ihre Kolleginnen werden\n"
- "Dich sicher unterstützen.\n"
- "Drücke [B], um Schilder\n"
- "zu lesen. Mit [A] oder [B]\n"
- "kannst Du die Nachrichten\n"
- "umblättern. In anderen\n"
- "Kursen triffst Du weitere\n"
- "Freunde, die Dir helfen.")
-};
-
-
-// 0x190001A0
-static const u8 Dialog001[] = {
- _("Bewege Dich vorsichtig\n"
- "durch das Gelände, damit\n"
- "Du kein Opfer der\n"
- "Wasserbomben wirst.\n"
- "Die gegnerischen Bob-\n"
- "Ombs lieben den Kampf\n"
- "und erfinden immer neue\n"
- "Angriffsvarianten.\n"
- "Sie terrorisieren uns,\n"
- "seit ihr König den\n"
- "Power-Stern in die\n"
- "Hände bekommen hat.\n"
- "Hilf uns, den Stern\n"
- "zurückzuholen! Gehe zur\n"
- "Spitze des Berges, um\n"
- "König Bob-Omb zu finden.\n"
- "Kehre zu mir zurück,\n"
- "wenn es Dir gelungen ist,\n"
- "ihm den Stern abzujagen.\n"
- "Viel Glück...")
-};
-
-
-// 0x19000350
-static const u8 Dialog002[] = {
- _("Hallo! Sei wachsam, Du\n"
- "befindest Dich inmitten\n"
- "einer Schlacht. Aber ich\n"
- "gebe Dir ein paar Tips:\n"
- "Überquere die beiden\n"
- "Brücken und achte auf\n"
- "herunterfallende\n"
- "Wasserbomben.\n"
- "König Bob-Omb ist\n"
- "äußerst gefährlich.\n"
- "Laß Dich nicht von\n"
- "ihm erwischen.\n"
- "Wir sind die wahren\n"
- "Bob-Ombs und werden Dir\n"
- "helfen. Sprich mit uns,\n"
- "wann immer Du möchtest.")
-};
-
-
-// 0x190004A0
-static const u8 Dialog003[] = {
- _("Herzlichen Dank, Mario!\n"
- "Du hast es diesem\n"
- "Tyrannen gezeigt. Aber\n"
- "Dein Kampf hat gerade\n"
- "erst begonnen.\n"
- "Andere Fieslinge besitzen\n"
- "weitere Sterne, die Dir\n"
- "die Wege zu neuen Welten\n"
- "öffnen. Allerdings mußt\n"
- "Du sie zuerst besiegen.\n"
- "Meine Bob-Omb-Kollegen\n"
- "wissen bereits Bescheid.\n"
- "Sprich mit ihnen und\n"
- "Du darfst bestimmt ihre\n"
- "Kanonen benutzen.")
-};
-
-
-// 0x190005F0
-static const u8 Dialog004[] = {
- _("Wir sind friedliebende\n"
- "Bob-Ombs und mögen keine\n"
- "Kanonen.\n"
- "Wir stellen sie Dir aber\n"
- "gerne für Luftreisen\n"
- "zur Verfügung.\n"
- "Alle Kanonen dieses Kurses\n"
- "sind für Dich präpariert.\n"
- "Guten Flug!!!")
-};
-
-
-// 0x190006AC
-static const u8 Dialog005[] = {
- _("Hey Mario! Stimmt es,\n"
- "daß Du König Bob-Omb\n"
- "während eines harten\n"
- "Kampfes besiegt hast?\n"
- "Du scheinst ganz schön\n"
- "was auf dem Kasten zu\n"
- "haben. Aber glaubst Du,\n"
- "es reicht auch für mich?\n"
- "Bist Du schnell genug, um\n"
- "mich zu schlagen? Ich\n"
- "würde sagen, Du siehst\n"
- "nicht danach aus!\n"
- "Wie wär's mit einem\n"
- "Rennen zur Bergspitze,\n"
- "um herauszufinden, wer\n"
- "der Schnellere ist?\n"
- "\n"
- "Fertig...?\n"
- "\n"
- "//Los!/// Später!")
-};
-
-
-// 0x19000830
-static const u8 Dialog006[] = {
- _("Hey!!! Willst Du mich\n"
- "auf den Arm nehmen?\n"
- "Abkürzen gilt nicht!\n"
- "Am besten versuchst Du's\n"
- "später nochmal unter\n"
- "fairen Bedingungen.")
-};
-
-
-// 0x190008B4
-static const u8 Dialog007[] = {
- _("Hmmmmpff...pffff...hach!\n"
- "Boah! Du...hast...mich...\n"
- "geschlagen! Das grenzt an\n"
- "ein Wunder! Hier, Du hast\n"
- "ihn Dir verdient!")
-};
-
-
-// 0x19000930
-static const u8 Dialog008[] = {
- _("BISSIGER KETTENHUND!\n"
- "Nähere Dich ihm langsam,\n"
- "und benutze die [C]-Knöpfe,\n"
- "um den Blickwinkel zu\n"
- "ändern. Gefährlich, oder?\n"
- "Siehst Du die rote Münze\n"
- "auf dem Pfahl?\n"
- "Du erhältst einen Stern,\n"
- "wenn Du acht dieser\n"
- "Münzen sammelst.")
-};
-
-
-// 0x19000A10
-static const u8 Dialog009[] = {
- _("Lang, lang ist's her!\n"
- "Du scheinst noch schneller\n"
- "geworden zu sein. Hast Du\n"
- "heimlich geübt oder\n"
- "liegt's an den Sternen?\n"
- "Meine letzte Niederlage\n"
- "geht mir nicht aus dem\n"
- "Kopf. Aber das ist meine\n"
- "Hausstrecke. Wie wär's\n"
- "mit einer Revanche?\n"
- "Das Ziel liegt hinter\n"
- "der Böen-Brücke.\n"
- "Fertig?\n"
- "\n"
- "//Los!/// Später!")
-};
-
-
-// 0x19000B3C
-static const u8 Dialog010[] = {
- _("Du hast den roten\n"
- "Schalter aktiviert.\n"
- "Ab jetzt kannst Du die\n"
- "Federkappe einsetzen\n"
- "und durch die Lüfte\n"
- "fliegen. Jeder rote\n"
- "Block beinhaltet eine\n"
- "dieser Mützen.\n"
- "Möchtest Du Deinen\n"
- "Spielstand speichern?\n"
- "\n"
- "//Ja!////Nein!")
-};
-
-
-// 0x19000C14
-static const u8 Dialog011[] = {
- _("Du hast den grünen\n"
- "Schalter aktiviert.\n"
- "Ab jetzt kannst Du die\n"
- "Titanenkappe einsetzen\n"
- "und Unbesiegbarkeit\n"
- "erlangen. Jeder grüne\n"
- "Block beinhaltet eine\n"
- "dieser Mützen.\n"
- "Möchtest Du Deinen\n"
- "Spielstand speichern?\n"
- "\n"
- "//Ja!////Nein!")
-};
-
-
-// 0x19000CF4
-static const u8 Dialog012[] = {
- _("Du hast den blauen\n"
- "Schalter aktiviert.\n"
- "Ab jetzt kannst Du die\n"
- "Tarnkappe einsetzen\n"
- "und Unsichtbarkeit\n"
- "erlangen. Jeder blaue\n"
- "Block beinhaltet eine\n"
- "dieser Mützen.\n"
- "Möchtest Du Deinen\n"
- "Spielstand speichern?\n"
- "\n"
- "//Ja!////Nein!")
-};
-
-
-// 0x19000DD0
-static const u8 Dialog013[] = {
- _("Du hast 100 Münzen\n"
- "eingesammelt. Der\n"
- "Stern verleiht Dir\n"
- "zusätzliche Kraft.\n"
- "Spielstand speichern?\n"
- "//Ja!////Nein!")
-};
-
-
-// 0x19000E40
-static const u8 Dialog014[] = {
- _("Unglaublich, Du hast einen\n"
- "weiteren Stern erhalten.\n"
- "Er verleiht Dir\n"
- "zusätzliche Kraft.\n"
- "Spielstand speichern?\n"
- "//Ja!////Nein!")
-};
-
-
-// 0x19000EBC
-static const u8 Dialog015[] = {
- _("Setze Deine Fäuste ein,\n"
- "um Dich zu verteidigen.\n"
- "Drücke [A] zum Springen\n"
- "und [B] zum Schlagen.\n"
- "Drücke [A] und [B], um einen\n"
- "Tritt auszuführen.\n"
- "Gegenstände kannst Du\n"
- "mit [B] nehmen und werfen.")
-};
-
-
-// 0x19000F74
-static const u8 Dialog016[] = {
- _("Springe auf den\n"
- "funkelnden Panzer!\n"
- "Der Krötensurf eröffnet\n"
- "ungeahnte Möglichkeiten!")
-};
-
-
-// 0x19000FC8
-static const u8 Dialog017[] = {
- _("Ich bin König Bob-Omb,\n"
- "Herrscher über alle\n"
- "Bomben und Gebieter der\n"
- "Explosionen!\n"
- "Wer gibt Dir das Recht,\n"
- "diesen Berg zu betreten\n"
- "und dieses königliche\n"
- "Plateau zu beschmutzen?\n"
- "Anscheinend haben Dich\n"
- "die Wachen unterschätzt,\n"
- "aber mir wird dieser\n"
- "Fehler nicht unterlaufen.\n"
- "Der Power-Stern ist in\n"
- "meinem Besitz und wird\n"
- "auch dort bleiben.\n"
- "Dein Ende ist gekommen!\n"
- "Oder bist Du etwa der\n"
- "Meinung, Du könntest\n"
- "mich von hinten packen\n"
- "und besiegen? Niemals!!!")
-};
-
-
-// 0x1900118C
-static const u8 Dialog018[] = {
- _("Schlafende Gefahren\n"
- "sollte man nicht wecken.\n"
- "Die schleichende Weisheit\n"
- "verleiht längeres Leben!")
-};
-
-
-// 0x190011EC
-static const u8 Dialog019[] = {
- _("Vorsicht, die Fliesen\n"
- "sind frisch gebohnert!")
-};
-
-
-// 0x1900121C
-static const u8 Dialog020[] = {
- _("Lieber Mario!\n"
- "Komm mich doch einmal\n"
- "im Schloss besuchen!\n"
- "Der Kuchen steht bereit!\n"
- "In Freundschaft\n"
- "Toadstool")
-};
-
-
-// 0x19001288
-static const u8 Dialog021[] = {
- _("Na, wen haben wir denn\n"
- "hier? Es ist niemand zu\n"
- "Hause, also verschwinde\n"
- "besser wieder...\n"
- "Hua...hua...hua!!!")
-};
-
-
-// 0x190012F4
-static const u8 Dialog022[] = {
- _("Ohne den passenden\n"
- "Schlüssel bleibt Dir\n"
- "dieser Weg versperrt!")
-};
-
-
-// 0x19001334
-static const u8 Dialog023[] = {
- _("Der Kellerschlüssel wird\n"
- "Dir hier nichts nützen!")
-};
-
-
-// 0x19001368
-static const u8 Dialog024[] = {
- _("Du brauchst schon einen\n"
- "Stern, um diese Tür zu\n"
- "öffnen. Untersuche doch\n"
- "einmal die Wandgemälde!")
-};
-
-
-// 0x190013C8
-static const u8 Dialog025[] = {
- _("Zum Öffnen dieser Tür\n"
- "benötigst Du drei Sterne.\n"
- "Du mußt also noch [%]\n"
- "von ihnen finden!")
-};
-
-
-// 0x19001420
-static const u8 Dialog026[] = {
- _("Zum Öffnen dieser Tür\n"
- "benötigst Du acht Sterne.\n"
- "Du mußt also noch [%]\n"
- "von ihnen finden!")
-};
-
-
-// 0x19001478
-static const u8 Dialog027[] = {
- _("Zum Öffnen dieser Tür\n"
- "benötigst Du 30 Sterne.\n"
- "Du mußt also noch [%]\n"
- "von ihnen finden.")
-};
-
-
-// 0x190014CC
-static const u8 Dialog028[] = {
- _("Zum Öffnen dieser Tür\n"
- "benötigst Du 50 Sterne.\n"
- "Du mußt also noch [%]\n"
- "von ihnen finden.")
-};
-
-
-// 0x19001520
-static const u8 Dialog029[] = {
- _("Zum Öffnen der Tür zum\n"
- "„Endlosen Vergnügen』\n"
- "benötigst Du 70 Sterne.\n"
- "Hua...Hua...Hua...!")
-};
-
-
-// 0x19001578
-static const u8 Dialog030[] = {
- _("Die Lakitu-Film AG\n"
- "berichtet live und in\n"
- "Farbe! Hier die neuesten\n"
- "Meldungen:\n"
- "Gegner sind sehr oft\n"
- "unachtsam, wenn Du Dich\n"
- "leise, also langsam,\n"
- "bewegst.\n"
- "Die Kameraposition kannst\n"
- "Du durch [C]> und [C]<\n"
- "verändern, um einen\n"
- "Überblick zu erhalten.\n"
- "Das Weitwinkelobjektiv\n"
- "wird mit [C]| eingesetzt.\n"
- "Details der Umgebung\n"
- "werden so sichtbar!\n"
- "Ein Warnton erklingt,\n"
- "wenn die Bewegungs-\n"
- "freiheit der Kamera\n"
- "eingeschränkt ist.\n"
- "Das waren die\n"
- "Meldungen und\n"
- "damit zurück zum\n"
- "laufenden Programm!")
-};
-
-
-// 0x19001754
-static const u8 Dialog031[] = {
- _("Das darf doch alles nicht\n"
- "wahr sein! Ich habe schon\n"
- "wieder verloren!\n"
- "Dabei habe ich mir extra\n"
- "die neuen Koopa-Mach-1-\n"
- "Schuhe gekauft! Hmpf!!!\n"
- "Naja, ich denke, auch\n"
- "dieser Stern gehört Dir!\n"
- "Herzlichen Glückwunsch!")
-};
-
-
-// 0x1900182C
-static const u8 Dialog032[] = {
- _("Mit der Federkappe\n"
- "kannst Du fliegen.\n"
- "Besitzt Du sie, springe\n"
- "dreimal hintereinander,\n"
- "um einen Flug zu starten.\n"
- "Benutzt Du zum Starten\n"
- "des Fluges eine Kanone,\n"
- "kannst Du die Flughöhe\n"
- "enorm steigern. Mit dem\n"
- "[Z]-Knopf kannst Du landen.")
-};
-
-
-// 0x19001914
-static const u8 Dialog033[] = {
- _("Herzlich willkommen! Durch\n"
- "eine Warpröhre bist Du\n"
- "direkt zum Schloss der\n"
- "Prinzessin gelangt.\n"
- "Die Steuerung ist einfach:\n"
- "Benutze den [A]-Knopf zum\n"
- "Springen und den [B]-Knopf\n"
- "zum Schlagen.\n"
- "Hinweisschilder kannst\n"
- "Du lesen, wenn Du Dich\n"
- "davor stellst und den\n"
- "[B]-Knopf betätigst.\n"
- "Der Analog-Stick dient\n"
- "der Steuerung. Doch jetzt\n"
- "genug der vielen Worte:\n"
- "Auf zum Schloss!!!")
-};
-
-
-// 0x19001A80
-static const u8 Dialog034[] = {
- _("Guten Tag, liebe Freunde\n"
- "des Actionkinos! Die\n"
- "Lakitu-Film AG versorgt\n"
- "Euch ständig mit den\n"
- "neuesten Informationen.\n"
- "Mario hat gerade\n"
- "Prinzessin Toadstools\n"
- "Schloss erreicht und\n"
- "macht sich auf die Suche\n"
- "nach den Power-Sternen.\n"
- "Unser wagemutiger Kollege\n"
- "wird ihn auf dieser\n"
- "heiklen Mission begleiten.\n"
- "Die [C]-Knöpfe dienen\n"
- "seiner Steuerung.\n"
- "Du kannst die Perspektiven\n"
- "beliebig verändern. Sollte\n"
- "sich der Blickwinkel einmal\n"
- "nicht verstellen lassen,\n"
- "erklingt ein Warnton.\n"
- "Genauere Erklärungen\n"
- "hierzu werden wir Euch\n"
- "zu gegebener Zeit\n"
- "mitteilen. Damit zurück\n"
- "zum Hauptfilm!")
-};
-
-
-// 0x19001CB8
-static const u8 Dialog035[] = {
- _("Die [C]-Knöpfe dienen der\n"
- "Steuerung der Kamera.\n"
- "Benutze den ^-Knopf, um\n"
- "die Kamera mit dem\n"
- "Analog-Stick zu bewegen.\n"
- "Normalerweise sorgt ein\n"
- "Angestellter der Lakitu\n"
- "AG dafür, daß Du Mario\n"
- "siehst. Das ist die\n"
- "Standardeinstellung.\n"
- "Diese Kamera steuerst Du\n"
- "mit den [C]-Knöpfen.\n"
- "Drückst Du die [R]-Taste,\n"
- "wechselst Du zwischen\n"
- "Lakitus und Marios\n"
- "Sicht hin und her. Drücke\n"
- "|, um den Zoom oder\n"
- "das Weitwinkelobjektiv zu\n"
- "aktivieren. Dies ist in\n"
- "allen Perspektiven möglich.\n"
- "Welchen Kameramodus\n"
- "Du gewählt hast, siehst\n"
- "Du an einem kleinen Bild,\n"
- "das sich rechts unten auf\n"
- "dem Bildschirm befindet.")
-};
-
-
-// 0x19001EFC
-static const u8 Dialog036[] = {
- _("AUSSICHTSPLATTFORM\n"
- "Drücke ^ und genieße die\n"
- "Aussicht. Vielleicht\n"
- "entdeckst Du Geheimnisse\n"
- "Deiner Umgebung.\n"
- "Drücke [R], um zu Marios\n"
- "Kamera zu wechseln. Sie\n"
- "bleibt ständig hinter ihm.\n"
- "Mit dieser Taste schaltest\n"
- "Du auch zurück auf Lakitu.\n"
- "Im Pausenmodus kannst Du\n"
- "weitere Einstellungen\n"
- "vornehmen. Wähle „Stativ』\n"
- "und halte die [R]-Taste\n"
- "gedrückt!")
-};
-
-
-// 0x19002050
-static const u8 Dialog037[] = {
- _("Hihihi, ich habe gewonnen!\n"
- "Du solltest noch ein paar\n"
- "Trainingsrunden einlegen!")
-};
-
-
-// 0x190020A0
-static const u8 Dialog038[] = {
- _("Die mystische Kraft der\n"
- "Sterne öffnet die Tür!")
-};
-
-
-// 0x190020D0
-static const u8 Dialog039[] = {
- _("Besuchern ist das\n"
- "Erklimmen des königlichen\n"
- "Berges strengstens\n"
- "verboten. Verstöße werden\n"
- "hart bestraft!\n"
- "Niemals werden die\n"
- "Power-Sterne, ein\n"
- "Geschenk Bowsers, diesen\n"
- "Ort verlassen. Ihre Macht\n"
- "bleibt in meinen Händen!\n"
- "Kein Wort über ihren\n"
- "Aufenthaltsort kommt\n"
- "über meine Lippen!!!\n"
- "Äh, naja, vielleicht\n"
- "ein kleiner Tip:\n"
- "Die Sternenbeschreibungen\n"
- "zu Beginn dieses Kurses\n"
- "könnten sich als nützlich\n"
- "erweisen!\n"
- "König Bob-Omb!!!")
-};
-
-
-// 0x19002278
-static const u8 Dialog040[] = {
- _("Vorsicht, Brücke zerstört!\n"
- "Überquere das Eistal in\n"
- "der Gondel.")
-};
-
-
-// 0x190022B8
-static const u8 Dialog041[] = {
- _("Höhöhö, das war ja wohl\n"
- "nichts! Sogar meine Uroma\n"
- "Koopa ist wesentlich\n"
- "schneller als Du!\n"
- "Naja, mit zwei Jahren\n"
- "Training könntest Du's\n"
- "vielleicht schaffen.\n"
- "Bis dann...und tschüß!")
-};
-
-
-// 0x1900236C
-static const u8 Dialog042[] = {
- _("Achtung!\n"
- "Dieser Steg ist ziemlich\n"
- "schmal. Du solltest Dich\n"
- "sehr langsam bewegen.\n"
- "Überschreitest Du eine\n"
- "Kante, fällt Mario nicht\n"
- "in die Tiefe, sondern er\n"
- "klammert sich daran fest.\n"
- "Möchtest Du wieder nach\n"
- "oben klettern, drücke\n"
- "den Analog-Stick in\n"
- "Marios Blickrichtung.\n"
- "Mario läßt die Kante los,\n"
- "wenn Du den Analog-Stick\n"
- "in Richtung seines Rückens\n"
- "bewegst oder [Z] drückst.\n"
- "Bist Du in Eile, kannst\n"
- "Du auch durch einen\n"
- "beherzten Sprung mit dem\n"
- "[A]-Knopf hinauf gelangen.")
-};
-
-
-// 0x1900253C
-static const u8 Dialog043[] = {
- _("Wenn Du springst und den\n"
- "[A]-Knopf gedrückt hältst,\n"
- "klammert sich Mario an\n"
- "Objekte über ihm.\n"
- "Auf diese Weise kannst\n"
- "Du Dich auch von der\n"
- "Eule durch die Lüfte\n"
- "transportieren lassen.")
-};
-
-
-// 0x190025F0
-static const u8 Dialog044[] = {
- _("Uh...oh...gääähn...\n"
- "Weeehhr ist daaaahhh...?\n"
- "Wer hat mich geweckt?\n"
- "Eigentlich sollte ich um\n"
- "diese Tageszeit schlafen!\n"
- "Aber, da Du mich schon\n"
- "geweckt hast, wie wäre\n"
- "es dann mit einem\n"
- "kleinen Rundflug um die\n"
- "Burg?\n"
- "Befinde ich mich direkt\n"
- "über Dir, springe und\n"
- "halte den Sprungknopf\n"
- "gedrückt. Laß ihn los,\n"
- "um wieder frei zu sein.\n"
- "Ich transportiere Dich,\n"
- "solange es meine Kraft\n"
- "zuläßt. Beobachte meinen\n"
- "Schatten, um Dich zu\n"
- "orientieren.")
-};
-
-
-// 0x190027A4
-static const u8 Dialog045[] = {
- _("Hey, Mann, Mario! Mir\n"
- "geht die Puste aus.\n"
- "Du ißt zuviel Pasta!\n"
- "Bitte, laß los, ich muß\n"
- "mich erholen...sofooort!\n"
- "Bis später...vielleicht.")
-};
-
-
-// 0x19002830
-static const u8 Dialog046[] = {
- _("Es gibt drei verschiedene\n"
- "Sprungtechniken. Du mußt\n"
- "sie alle beherrschen, um\n"
- "die Aufgaben zu meistern.\n"
- "Versuche zuerst den\n"
- "Dreisprung! Renne und\n"
- "springe dreimal direkt\n"
- "hintereinander.\n"
- "Mit dem richtigen Timing\n"
- "wird jeder Sprung höher\n"
- "als der vorherige sein.\n"
- "Weiter zum Weitsprung!\n"
- "Während Du rennst, mußt\n"
- "Du den [Z]-Knopf und dann\n"
- "den [A]-Knopf drücken.\n"
- "Und nun der Wandsprung!\n"
- "Springe gegen eine Wand.\n"
- "Sobald Du die Wand\n"
- "berührst, mußt Du wieder\n"
- "den Sprungknopf drücken.\n"
- "Alles verstanden?\n"
- "Dreisprung? Weitsprung?\n"
- "Wandsprung? Dann heißt's\n"
- "üben, üben, üben...")
-};
-
-
-// 0x19002A5C
-static const u8 Dialog047[] = {
- _("Hallo!\n"
- "Ich mache die Kanone\n"
- "zum Abschuß bereit!")
-};
-
-
-// 0x19002A8C
-static const u8 Dialog048[] = {
- _("An einigen Stellen\n"
- "herrscht extreme\n"
- "Rutschgefahr! Sieh\n"
- "am besten zuerst im\n"
- "Schornstein nach dem\n"
- "Rechten!")
-};
-
-
-// 0x19002AF8
-static const u8 Dialog049[] = {
- _("Du erinnerst Dich an den\n"
- "Wandsprung? Auf diese\n"
- "Weise kannst Du schnell\n"
- "höher gelegene Stellen\n"
- "erreichen.\n"
- "Benutze ihn, um von\n"
- "Wand zu Wand zu springen\n"
- "und Stück für Stück\n"
- "weiter nach oben zu\n"
- "gelangen.\n"
- "Denke an die uralte\n"
- "Weisheit:\n"
- "Übung macht den Meister!\n"
- "Sie kommt hier voll zum\n"
- "Tragen!!!")
-};
-
-
-// 0x19002C1C
-static const u8 Dialog050[] = {
- _("Drücke den [Z]-Knopf, um\n"
- "in die Hocke zu gehen und\n"
- "einen Hang nach unten zu\n"
- "rutschen.\n"
- "Betätigst Du den [Z]-Knopf\n"
- "während eines Sprungs,\n"
- "führst Du eine\n"
- "Stampfattacke aus.\n"
- "Du machst einen\n"
- "Rückwärtssalto, wenn\n"
- "Du stehend den [Z]-Knopf\n"
- "drückst und springst.\n"
- "Es gibt weitere Varianten\n"
- "zu entdecken. Nimm Dir\n"
- "Zeit und versuche, andere\n"
- "Kombinationen zu finden!")
-};
-
-
-// 0x19002D78
-static const u8 Dialog051[] = {
- _("Du kannst auf Bäume und\n"
- "Stangen klettern, wenn\n"
- "Du gegen sie springst und\n"
- "den Analog-Stick nach\n"
- "oben drückst.\n"
- "Mit dem [A]-Knopf kannst\n"
- "Du nach HINTEN wieder\n"
- "abspringen. Du kannst\n"
- "sogar auf der Spitze\n"
- "einen Handstand machen.\n"
- "Springst Du aus dem\n"
- "Handstand von einem\n"
- "Objekt ab, machst Du\n"
- "einen unglaublich hohen\n"
- "Sprung.")
-};
-
-
-// 0x19002EB4
-static const u8 Dialog052[] = {
- _("Du machst einen\n"
- "Rückwärtssalto, wenn\n"
- "Du stehend den [Z]-Knopf\n"
- "gedrückt hältst und dann\n"
- "den [A]-Knopf betätigst.\n"
- "Seitwärtssaltos führst\n"
- "Du aus, indem Du den\n"
- "Analog-Stick entgegen\n"
- "Deiner Laufrichtung\n"
- "bewegst und springst.")
-};
-
-
-// 0x19002F8C
-static const u8 Dialog053[] = {
- _("Von Zeit zu Zeit erscheint\n"
- "eine farbige Zahl, wenn\n"
- "Du Kisten öffnest, Ringe\n"
- "durchquerst oder geheime\n"
- "Orte erreichst.\n"
- "Gelingt es Dir, alle fünf\n"
- "farbigen Zahlen dieses\n"
- "Bereichs zu finden,\n"
- "erhältst Du zur Belohnung\n"
- "einen Power-Stern.")
-};
-
-
-// 0x19003074
-static const u8 Dialog054[] = {
- _("Herzlich willkommen\n"
- "auf der Schlidderbahn!\n"
- "Drücke den Analog-Stick\n"
- "nach vorne, um zu\n"
- "beschleunigen und nach\n"
- "hinten, um zu bremsen.")
-};
-
-
-// 0x190030F8
-static const u8 Dialog055[] = {
- _("Hihi, hallo Mario!\n"
- "Du siehst aus, als\n"
- "wolltest Du mich gerade\n"
- "fragen, ob wir ein\n"
- "Wettrennen machen sollten.\n"
- "Und ich sage: Na klar! Es\n"
- "ist zwar noch niemandem\n"
- "gelungen, mich, den\n"
- "Schlidderkönig aller\n"
- "Klassen, zu besiegen.\n"
- "Aber Du kannst es ja\n"
- "einmal versuchen.\n"
- "Wie steht's?\n"
- "\n"
- "//Na klar!/ Später!")
-};
-
-
-// 0x19003220
-static const u8 Dialog056[] = {
- _("Du...Du...ha...hast\n"
- "mich geschlagen! Das kann\n"
- "doch nicht wahr sein!\n"
- "Du bist der größte\n"
- "Schliddermeister, den\n"
- "ich kenne!\n"
- "Eine Goldmedaille kann\n"
- "ich Dir zwar nicht\n"
- "überreichen,\n"
- "aber nimm diesen\n"
- "Power-Stern!\n"
- "Du hast ihn verdient.")
-};
-
-
-// 0x19003304
-static const u8 Dialog057[] = {
- _("Hey Kleiner! Hast Du mein\n"
- "Baby gesehen? Es ist das\n"
- "schönste und süßeste\n"
- "Baby der ganzen Welt!\n"
- "Vor kurzem war es noch\n"
- "bei mir, aber ich habe\n"
- "keine Ahnung, wohin es\n"
- "sich verdrückt hat.\n"
- "Wenn ich doch nur wüßte,\n"
- "wo ich die Suche beginnen\n"
- "soll...Oh, was für eine\n"
- "fürchterliche Tragödie!!!")
-};
-
-
-// 0x19003420
-static const u8 Dialog058[] = {
- _("Das ist doch...\n"
- "Mensch, Mario, Du hast\n"
- "mein Baby gefunden!!!\n"
- "Wie kann ich Dir dafür\n"
- "danken?\n"
- "Oh, ich weiß: Ich fand\n"
- "neulich diesen Stern\n"
- "hier. Nimm ihn als\n"
- "Zeichen meiner ewigen\n"
- "Dankbarkeit!")
-};
-
-
-// 0x190034E0
-static const u8 Dialog059[] = {
- _("Was soll ich mit diesem\n"
- "Früchtchen? Das ist nicht\n"
- "mein Baby! Mein Baby hat\n"
- "ein weiche, zarte Stimme,\n"
- "und es sieht mir natürlich\n"
- "ähnlich!")
-};
-
-
-// 0x1900356C
-static const u8 Dialog060[] = {
- _("Achtung, Achtung!\n"
- "Bevor Du Dich in die\n"
- "Fluten stürzt, solltest\n"
- "Du Dir folgendes merken:\n"
- "Bleibst Du zu lange unter\n"
- "Wasser, könnte Dir die\n"
- "Luft ausgehen. Achte auf\n"
- "die Sauerstoffanzeige!\n"
- "Schwimme zur Oberfläche\n"
- "oder sammle Münzen und\n"
- "Luftblasen, um wieder\n"
- "Sauerstoff zu tanken.\n"
- "Drücke den [A]-Knopf, um\n"
- "zu schwimmen. Halte ihn\n"
- "gedrückt, um mit den\n"
- "Füßen zu paddeln.\n"
- "Bewege beim Schwimmen\n"
- "den Analog-Stick nach\n"
- "oben, um zu tauchen und\n"
- "nach unten, um zu steigen.\n"
- "Springe aus dem Wasser,\n"
- "indem Du an einer Kante\n"
- "den Analog-Stick abwärts\n"
- "drückst und springst.\n"
- "Achte jedoch darauf,\n"
- "daß Du den Analog-Stick\n"
- "während des Sprungs\n"
- "losläßt!")
-};
-
-
-// 0x190037E0
-static const u8 Dialog061[] = {
- _("Wer baden möchte, sollte\n"
- "sich besser in wärmere\n"
- "Gefilde begeben, denn\n"
- "hier ist es auf jeden\n"
- "Fall zu kalt!!!")
-};
-
-
-// 0x1900384C
-static const u8 Dialog062[] = {
- _("In den grünen Blöcken\n"
- "im Labyrinth findest\n"
- "Du die phänomenalen\n"
- "Titanenkappen.\n"
- "Trägst Du diese Kappen,\n"
- "bist Du unverwundbar\n"
- "und brauchst kurze Zeit\n"
- "nicht zu atmen.\n"
- "Das einzige Problem ist:\n"
- "Du kannst nicht\n"
- "schwimmen, während Du\n"
- "sie trägst!")
-};
-
-
-// 0x1900393C
-static const u8 Dialog063[] = {
- _("In den blauen Blöcken\n"
- "befinden sich die\n"
- "fantastischen Tarnkappen.\n"
- "Damit kannst Du durch\n"
- "bestimmte Mauern gehen\n"
- "oder Geister erschrecken.")
-};
-
-
-// 0x190039C8
-static const u8 Dialog064[] = {
- _("In den roten Blöcken\n"
- "kannst Du die berühmten\n"
- "Federkappen finden.\n"
- "Mit einem Dreisprung\n"
- "kannst Du starten und\n"
- "in die Lüfte steigen.\n"
- "Drücke den Analog-Stick\n"
- "nach unten, um im Flug\n"
- "an Höhe zu gewinnen.\n"
- "Drücke den Analog-Stick\n"
- "nach oben, um im Flug\n"
- "an Höhe zu verlieren.\n"
- "Betätige den [Z]-Knopf,\n"
- "um den Flug zu beenden\n"
- "und sicher zu landen.")
-};
-
-
-// 0x19003B18
-static const u8 Dialog065[] = {
- _("Schwimmen für Anfänger!\n"
- "Drücke den [A]-Knopf für\n"
- "einen Schwimmzug. Bei\n"
- "richtigem Timing kannst\n"
- "Du sehr schnell schwimmen.\n"
- "Halte den [A]-Knopf\n"
- "gedrückt, um mit den\n"
- "Füßen zu paddeln. Mit\n"
- "dieser Technik bewegst Du\n"
- "Dich langsamer im Wasser.\n"
- "Drücke beim Schwimmen\n"
- "den Analog-Stick\n"
- "nach oben, um zu\n"
- "tauchen und nach unten,\n"
- "um zu steigen.\n"
- "Du kannst aus dem Wasser\n"
- "springen, wenn Du an der\n"
- "Wasseroberfläche den\n"
- "Analog-Stick nach unten\n"
- "drückst und springst.\n"
- "Beachte: Kein Mensch\n"
- "kann unter Wasser atmen!\n"
- "Kehre zurück an die\n"
- "Oberfläche, wenn Deine\n"
- "Luft zur Neige geht.\n"
- "Ach ja: Türen, die sich\n"
- "unter Wasser befinden,\n"
- "kannst Du nicht öffnen.\n"
- "Aber vielleicht findest\n"
- "Du ja einen Abfluß!!!")
-};
-
-
-// 0x19003DB8
-static const u8 Dialog066[] = {
- _("Hallo Mario, ich bin's,\n"
- "Peach! Paß auf Dich auf!\n"
- "Bowser wird versuchen,\n"
- "Dich mit seinem Feueratem\n"
- "zu versengen.\n"
- "Renne hinter ihn!\n"
- "Versuche mit dem\n"
- "[B]-Knopf Bowsers\n"
- "Schwanz zu packen und\n"
- "ihn herumzuschleudern.\n"
- "Bewege den Analog-Stick\n"
- "im Kreis, um Dich zu\n"
- "drehen. Je schneller\n"
- "Du Dich drehst, desto\n"
- "weiter wird Dein Wurf.\n"
- "Benutze die [C]-Knöpfe, um\n"
- "Dich zu orientieren. Du\n"
- "mußt Bowser gegen eine\n"
- "der Bomben am Rand der\n"
- "Plattform werfen.\n"
- "Drücke den [B]-Knopf, um\n"
- "Bowser loszulassen und\n"
- "in Richtung der Bombe\n"
- "zu schleudern.\n"
- "Viel Glück!!!")
-};
-
-
-// 0x19003FCC
-static const u8 Dialog067[] = {
- _("Tja, Mario, Pech gehabt!\n"
- "Die Prinzessin ist nicht\n"
- "hier und wird es auch so\n"
- "bald nicht sein...\n"
- "Hua...Hua...Hua...Hua!\n"
- "Es wird Dir niemals\n"
- "gelingen, mich von hinten\n"
- "zu packen und zu werfen.\n"
- "Da müßte schon ein wahrer\n"
- "Held kommen, keine Wurst!\n"
- "Vielleicht gehst Du besser\n"
- "wieder nach Hause und\n"
- "reparierst weiter kaputte\n"
- "Rohre, als Dich mit mir\n"
- "zu messen!!!")
-};
-
-
-// 0x1900412C
-static const u8 Dialog068[] = {
- _("Du bist im Land des\n"
- "flüssigen Feuers. Wenn\n"
- "Du vom Weg abkommst,\n"
- "bewahre Ruhe, denn Du\n"
- "verlierst nicht die\n"
- "gesamte Energie auf\n"
- "einmal. Außerdem kannst\n"
- "Du den qualmenden Mario\n"
- "während seines Höhenflugs\n"
- "immer noch steuern!")
-};
-
-
-// 0x19004208
-static const u8 Dialog069[] = {
- _("Während Deiner Abenteuer\n"
- "in den Wandbildern stößt\n"
- "Du an den Rändern auf\n"
- "unsichtbare Mauern.\n"
- "Triffst Du fliegend auf\n"
- "eine solche Mauer, prallst\n"
- "Du ab. Du kannst aber den\n"
- "Flug fortsetzen.")
-};
-
-
-// 0x190042C4
-static const u8 Dialog070[] = {
- _("Du kannst die Wandbilder\n"
- "jederzeit verlassen, um\n"
- "in die Schlosshalle\n"
- "zurückzukehren.\n"
- "Bleibe stehen, drücke\n"
- "START, um das Spiel\n"
- "zu pausieren, und wähle\n"
- "„Kurs verlassen』!\n"
- "Du mußt nicht alle Sterne\n"
- "einer Welt finden, um\n"
- "den nächsten Abschnitt\n"
- "betreten zu können.\n"
- "Hebe Dir die schweren\n"
- "Brocken für später auf,\n"
- "wenn Du Deine Techniken\n"
- "perfektioniert hast.\n"
- "Findest Du einen Stern,\n"
- "erhältst Du einen Hinweis,\n"
- "wo sich der nächste\n"
- "Fundort befindet.\n"
- "Aber Du mußt die Sterne\n"
- "in keiner bestimmten\n"
- "Reihenfolge finden.\n"
- "Die Wahl liegt bei Dir!")
-};
-
-
-// 0x190044D8
-static const u8 Dialog071[] = {
- _("Achtung! Hüte Dich vor\n"
- "den Nebelschwaden!\n"
- "Sie enthalten keinen\n"
- "Sauerstoff!\n"
- "Benutze die erhöhten\n"
- "Plattformen, um Dich\n"
- "auszuruhen und einen\n"
- "sicheren Weg zu suchen.\n"
- "Auf der Karte sind\n"
- "Unterstände als Kreise\n"
- "dargestellt, den Eingang\n"
- "erkennst Du am Pfeil!")
-};
-
-
-// 0x190045D4
-static const u8 Dialog072[] = {
- _("Hier oben weht eine steife\n"
- "Brise. Solltest Du Deine\n"
- "Mütze verlieren, kannst\n"
- "Du sie auf dem Weg zum\n"
- "Gipfel wiederfinden.")
-};
-
-
-// 0x1900464C
-static const u8 Dialog073[] = {
- _("Ahoi, Landratte! Es ist\n"
- "doch wohl logisch, daß\n"
- "sich hier unten ein\n"
- "sagenhafter Schatz\n"
- "befindet!\n"
- "Zur Bergung mußt Du die\n"
- "Kisten in der richtigen\n"
- "Reihenfolge öffnen, klar?\n"
- "Aber ich sage nicht, wie\n"
- "sie lautet, hehehe!")
-};
-
-
-// 0x19004724
-static const u8 Dialog074[] = {
- _("Siehst Du den Block\n"
- "nebenan? Manchmal kannst\n"
- "Du im Innern dieser\n"
- "Quader interessante\n"
- "Entdeckungen machen.\n"
- "Zerstöre sie mit einem\n"
- "gezielten Schlag oder\n"
- "einer Stampfattacke,\n"
- "damit sie ihr Geheimnis\n"
- "preisgeben!")
-};
-
-
-// 0x190047F4
-static const u8 Dialog075[] = {
- _("Hilfe, Mario! Mein Schloss\n"
- "befindet sich in großer\n"
- "Gefahr. Ich weiß, daß der\n"
- "widerliche Bowser seine\n"
- "Hände im Spiel hat.\n"
- "Er hat alle Türen des\n"
- "Schlosses versiegelt. Nur\n"
- "die magische Kraft der\n"
- "Power-Sterne kann diese\n"
- "Siegel brechen.\n"
- "Aber es gibt einige\n"
- "Geheimwege im Innern, die\n"
- "Bowser nicht entdeckt\n"
- "hat. Einer davon befindet\n"
- "sich in diesem Raum.\n"
- "Suche den Eingang und\n"
- "finde den Power-Stern,\n"
- "der sich darin verbirgt.\n"
- "Hilf uns, Du bist unsere\n"
- "einzige Hoffnung!\n"
- "Fast alle Power-Sterne\n"
- "kannst Du in den\n"
- "Wandgemälden finden,\n"
- "manche jedoch an\n"
- "geheimen Orten.\n"
- "Sammle soviele Sterne\n"
- "wie möglich, um Bowsers\n"
- "Plan zu vereiteln.\n"
- "Wir zählen auf Dich!\n"
- "Viel Glück!!!")
-};
-
-
-// 0x19004A84
-static const u8 Dialog076[] = {
- _("Hallo Mario! Du hast\n"
- "bereits einiges zur\n"
- "Rettung des Schlosses\n"
- "getan.\n"
- "Aber Du mußt noch\n"
- "viele Geheimnisse\n"
- "der Wandgemälde\n"
- "lüften.\n"
- "Manchmal spielen Dir\n"
- "Deine Augen einen Streich.\n"
- "Die Realität verschwindet\n"
- "hinter Fassaden.\n"
- "Aber Du kannst das\n"
- "Trugbild durchdringen,\n"
- "wenn Du es im Spiegel\n"
- "betrachtest!\n"
- "Wasser ist ein flüssiges\n"
- "Element. Die Magie des\n"
- "Wandgemäldes beeinflußt\n"
- "sein Verhalten.\n"
- "Wähle verschiedene Wege,\n"
- "um die versunkene Stadt\n"
- "durch das Gemälde zu\n"
- "betreten.\n"
- "Ach ja, fast hätte ich es\n"
- "vergessen: Hier habe ich\n"
- "etwas für Dich! Es hilft\n"
- "Dir, Bowser zu besiegen.")
-};
-
-
-// 0x19004CBC
-static const u8 Dialog077[] = {
- _("Einst konnte man die Tür\n"
- "öffnen. Zu dieser Zeit\n"
- "waren die Säulen aber\n"
- "niedriger!")
-};
-
-
-// 0x19004D10
-static const u8 Dialog078[] = {
- _("Diesen Schalter kannst Du\n"
- "durch eine Stampfattacke\n"
- "auslösen. Er läßt einige\n"
- "blaue Münzen erscheinen,\n"
- "die je fünf gelbe\n"
- "Münzen wert sind.\n"
- "Allerdings mußt Du Dich\n"
- "beeilen, denn die blauen\n"
- "Münzen erscheinen nur\n"
- "für kurze Zeit.")
-};
-
-
-// 0x19004DF0
-static const u8 Dialog079[] = {
- _("Auuuuuaaa! Hey, laß mich\n"
- "los! Das war doch nur\n"
- "Spaß! Du hast wohl keinen\n"
- "Humor, was?\n"
- "Okay, ich mache Dir einen\n"
- "Vorschlag: Wenn Du mich\n"
- "losläßt, habe ich eine\n"
- "Überraschung für Dich!\n"
- "Na, wie sieht's aus?\n"
- "\n"
- "//Klar!///Vergiß es!")
-};
-
-
-// 0x19004ED0
-static const u8 Dialog080[] = {
- _("Hey Baby, komm schon!\n"
- "Wo bleibst Du denn so\n"
- "lange?")
-};
-
-
-// 0x19004F04
-static const u8 Dialog081[] = {
- _("Des Rätsels Lösung ist der\n"
- "Wasserstand. Tief unten\n"
- "erwartet Dich die Stadt,\n"
- "nachdem Du den Pegel\n"
- "hast sinken lassen.")
-};
-
-
-// 0x19004F7C
-static const u8 Dialog082[] = {
- _("Achte auf Deine Mütze!\n"
- "Solltest Du sie verlieren,\n"
- "wirst Du durch Treffer\n"
- "schwerer verletzt.\n"
- "Solltest Du sie einmal\n"
- "verlieren, findest Du die\n"
- "Mütze in dem Gemälde, in\n"
- "dem Du sie verloren hast.\n"
- "Die Prinzessin wird\n"
- "noch immer von Bowser\n"
- "gefangen gehalten. Rette\n"
- "sie so schnell wie möglich.\n"
- "Bowsers Schergen belagern\n"
- "seit langer Zeit die\n"
- "Welten der Gemälde und\n"
- "Wände des Schlosses.\n"
- "Aber es ist mir gelungen,\n"
- "ihnen diesen Stern\n"
- "abzujagen.\n"
- "Viel Glück!")
-};
-
-
-// 0x1900513C
-static const u8 Dialog083[] = {
- _("Betrittst Du die Uhr zu\n"
- "verschiedenen Zeiten,\n"
- "werden Dir weitere\n"
- "Geheimnisse offenbart.\n"
- "Vielleicht hilft Dir auch\n"
- "dieser Stern!")
-};
-
-
-// 0x190051BC
-static const u8 Dialog084[] = {
- _("Hey, Du Rüpel, ich\n"
- "bekomme ja blaue Flecken.\n"
- "Laß mich sofort los!\n"
- "Bowser hat mir diesen\n"
- "Stern geschenkt.\n"
- "Er wäre ziemlich böse,\n"
- "wenn er das wüßte, aber\n"
- "ich bin in Eile. Also\n"
- "nimm ihn und laß mich\n"
- "runter!")
-};
-
-
-// 0x19005288
-static const u8 Dialog085[] = {
- _("Im Horrorhaus solltest Du\n"
- "den Mund geschlossen\n"
- "halten, damit Deine Zähne\n"
- "nicht vor Angst klappern!")
-};
-
-
-// 0x190052EC
-static const u8 Dialog086[] = {
- _("Wenn Du im Kreis rennst,\n"
- "werden manche Gegner\n"
- "große Augen machen!")
-};
-
-
-// 0x19005330
-static const u8 Dialog087[] = {
- _("Der Weihnachtsmann ist\n"
- "nicht der einzige, der\n"
- "in Schornsteine klettert!")
-};
-
-
-// 0x19005378
-static const u8 Dialog088[] = {
- _("Benutze die Stange, um\n"
- "nach unten zu gelangen!")
-};
-
-
-// 0x190053A8
-static const u8 Dialog089[] = {
- _("Auf beiden Wegen lauern\n"
- "Gefahren. Links benötigst\n"
- "Du den Weitsprung, um\n"
- "weiterzukommen.\n"
- "Rechts: Arbeitsplattform\n"
- "////Nebellabyrinth\n"
- "Links:/Schwarzes Loch\n"
- "////Höhlensee")
-};
-
-
-// 0x19005450
-static const u8 Dialog090[] = {
- _("Hua, hua, hua, ich wußte,\n"
- "daß Du mir in die Falle\n"
- "gehen würdest. Du solltest\n"
- "öfter auf Deine ulkigen\n"
- "Füße schauen!")
-};
-
-
-// 0x190054C4
-static const u8 Dialog091[] = {
- _("Achtung, starke Böen!\n"
- "Aber es könnte auch eine\n"
- "aufregende Reise werden!")
-};
-
-
-// 0x1900550C
-static const u8 Dialog092[] = {
- _("Was willst Du denn schon\n"
- "wieder? Du bist ja\n"
- "lästiger als ein Schwarm\n"
- "Stubenfliegen.\n"
- "Gerade jetzt, als mir\n"
- "die ganze Sache so viel\n"
- "Spaß machte! Aber, wenn\n"
- "Du schon mal hier bist:\n"
- "Gib mir die Power-Sterne\n"
- "zurück! Meine Truppen\n"
- "können sie besser\n"
- "gebrauchen als Du.")
-};
-
-
-// 0x19005614
-static const u8 Dialog093[] = {
- _("Mario, wie schön Dich zu\n"
- "sehen! Ich dachte gerade\n"
- "an eine Grillparty - schon\n"
- "bist Du da.\n"
- "Jetzt brauche ich mir\n"
- "wenigstens keine Gedanken\n"
- "zu machen, was ich grille:\n"
- "Nämlich Dich!\n"
- "Dann gehört die Prinzessin\n"
- "endgültig mir und ich bin\n"
- "auf ewig der Herrscher\n"
- "des Schlosses!!!")
-};
-
-
-// 0x19005724
-static const u8 Dialog094[] = {
- _("Erinnerst Du Dich noch an\n"
- "den Weitsprung? Renne,\n"
- "drücke den [Z]-Knopf und\n"
- "dann den [A]-Knopf!")
-};
-
-
-// 0x19005780
-static const u8 Dialog095[] = {
- _("Wie man Schilder liest,\n"
- "hast Du offensichtlich\n"
- "bereits herausgefunden.\n"
- "Auf die gleiche Weise\n"
- "kannst Du mit anderen\n"
- "sprechen.")
-};
-
-
-// 0x19005800
-static const u8 Dialog096[] = {
- _("Der Weg zur Burg ist\n"
- "sehr schmal! Selbst\n"
- "Wagemutige sollten sich\n"
- "langsam bewegen.\n"
- "Außerdem wecken leise\n"
- "Schritte niemanden, der\n"
- "schläft - was Dein\n"
- "Vorteil sein könnte!")
-};
-
-
-// 0x190058A8
-static const u8 Dialog097[] = {
- _("Sei nicht schüchtern,\n"
- "sondern wehre Dich,\n"
- "wenn jemand versucht,\n"
- "Dich von einer Plattform\n"
- "zu schubsen. Sonst steigt\n"
- "die Temperatur!")
-};
-
-
-// 0x1900592C
-static const u8 Dialog098[] = {
- _("Komm nur näher, hehehe!")
-};
-
-
-// 0x19005944
-static const u8 Dialog099[] = {
- _("")
-};
-
-
-// 0x19005948
-static const u8 Dialog100[] = {
- _("Jippiiiiieee, ich hab' sie!\n"
- "Jetzt gehört sie mir!!!")
-};
-
-
-// 0x1900597C
-static const u8 Dialog101[] = {
- _("Hgggnnnhhh! Laß...mich...\n"
- "los!!! Diese Mütze? Na\n"
- "gut, ich gebe sie Dir,\n"
- "obwohl sie mir besser\n"
- "steht als Dir!")
-};
-
-
-// 0x190059EC
-static const u8 Dialog102[] = {
- _("Hey, pssst, paß mal auf:\n"
- "Die Geister sind sehr\n"
- "schüchtern. Siehst Du\n"
- "ihnen in die Augen,\n"
- "verschwinden sie.\n"
- "Drehst Du ihnen allerdings\n"
- "den Rücken zu, werden\n"
- "sie wieder sichtbar.\n"
- "Attackiere sie von hinten,\n"
- "um sie zu besiegen.")
-};
-
-
-// 0x19005ACC
-static const u8 Dialog103[] = {
- _("Die Pyramide ist von vier\n"
- "Säulen umgeben. Erklimme\n"
- "die Spitzen der Säulen, um\n"
- "das Geheimnis zu lüften.")
-};
-
-
-// 0x19005B34
-static const u8 Dialog104[] = {
- _("Der Schattenstern vor Dir\n"
- "wird real, wenn Du die\n"
- "acht roten Münzen dieser\n"
- "Welt findest.")
-};
-
-
-// 0x19005B8C
-static const u8 Dialog105[] = {
- _("Bist Du bereit? Dann rein\n"
- "mit Dir in die Kanone! Du\n"
- "kannst mir ihrer Hilfe\n"
- "die schwebende Insel\n"
- "erreichen!\n"
- "Benutze den Analog-Stick\n"
- "zum Zielen und feuere die\n"
- "Kanone mit dem [A]-Knopf\n"
- "ab. Akrobaten bevorzugen\n"
- "Bäume zur Landung!")
-};
-
-
-// 0x19005C70
-static const u8 Dialog106[] = {
- _("Bist Du bereit? Dann rein\n"
- "mit Dir in die Kanone!")
-};
-
-
-// 0x19005CA4
-static const u8 Dialog107[] = {
- _("Das werde ich meinem\n"
- "großen Bruder erzählen!\n"
- "Dann kannst Du aber was\n"
- "erleben...")
-};
-
-
-// 0x19005CF4
-static const u8 Dialog108[] = {
- _("Ha-Boooo! Du bist also\n"
- "der Unruhestifter...\n"
- "Jetzt wirst Du das büßen,\n"
- "was Du mir und meinen\n"
- "Geschwistern angetan\n"
- "hast...")
-};
-
-
-// 0x19005D70
-static const u8 Dialog109[] = {
- _("Schnief, schnüff! Mein\n"
- "einst stattlicher Körper\n"
- "hat sich in Wasser\n"
- "aufgelöst.\n"
- "Ich würde alles für einen\n"
- "neuen Körper geben.\n"
- "Vielleicht kannst Du mir\n"
- "helfen, schluchz?")
-};
-
-
-// 0x19005E18
-static const u8 Dialog110[] = {
- _("Oh Mann, ich fühle mich\n"
- "so kopflos! Kennst Du\n"
- "jemanden, der nach einem\n"
- "Körper sucht? Unten?\n"
- "Okay, dann los!")
-};
-
-
-// 0x19005E84
-static const u8 Dialog111[] = {
- _("Boah, welch komfortables\n"
- "Unterteil!\n"
- "Ich bin so glücklich...\n"
- "Hier, nimm den Stern.\n"
- "Ich hoffe, er bringt\n"
- "Dir Glück!")
-};
-
-
-// 0x19005EF8
-static const u8 Dialog112[] = {
- _("Sammle so viele Münzen,\n"
- "wie Du finden kannst.\n"
- "Sie geben Dir verlorene\n"
- "Energie zurück.\n"
- "Die Bestleistung jeder\n"
- "Welt wird gespeichert.\n"
- "Du kannst sie jederzeit\n"
- "abrufen.\n"
- "In einigen Welten wirst\n"
- "Du transparenten Herzen\n"
- "begegnen. Auch sie füllen\n"
- "Deinen Power-Meter auf.\n"
- "Je schneller Du das Herz\n"
- "passierst, desto mehr\n"
- "verlorene Energie wird\n"
- "ersetzt.")
-};
-
-
-// 0x19006050
-static const u8 Dialog113[] = {
- _("In den roten, blauen und\n"
- "grünen Blöcken befinden\n"
- "sich verschiedene Mützen.\n"
- "Du mußt die versteckten\n"
- "Schalter finden, um die\n"
- "Blöcke öffnen zu können.")
-};
-
-
-// 0x190060E4
-static const u8 Dialog114[] = {
- _("Das gibt es doch gar\n"
- "nicht! Was willst Du\n"
- "Wicht hier in meinem\n"
- "Reich?\n"
- "Ich werde Dich lehren,\n"
- "meine Befehle zu...\n"
- "Oh, diese vermaledeiten\n"
- "Rückenschmerzen...!")
-};
-
-
-// 0x19006184
-static const u8 Dialog115[] = {
- _("Unglaublich! Du hast mich\n"
- "von meinen Kreuzschmerzen\n"
- "befreit! Als Dank gebe\n"
- "ich Dir diesen Stern!")
-};
-
-
-// 0x190061E8
-static const u8 Dialog116[] = {
- _("Waaaaa...wie? Du hast\n"
- "mich besiegt...\n"
- "Ich verneige mein Haupt\n"
- "vor Deiner Größe!\n"
- "Aber Du mußt Dich\n"
- "vorsehen!\n"
- "Bowser wird nicht so\n"
- "leicht zu besiegen sein.\n"
- "Ich gebe Dir diesen\n"
- "Stern, um Dir meine\n"
- "Demut zu beweisen.\n"
- "Trage ihn mit Stolz.\n"
- "Wenn Du mich wiedersehen\n"
- "willst, wähle den ersten\n"
- "Stern des Kursmenüs an!\n"
- "Bis dann...")
-};
-
-
-// 0x19006328
-static const u8 Dialog117[] = {
- _("Schritte? Grabräuber?\n"
- "Wer wagt es, den ewigen\n"
- "Frieden unseres Grabes\n"
- "zu stören?\n"
- "Jenem sei gewiß, daß\n"
- "wir diesen Frevel mit\n"
- "aller Härte bestrafen\n"
- "werden!\n"
- "Unser Zorn wird ihn\n"
- "zermalmen und Ra stehe\n"
- "ihm bei, daß es schnell\n"
- "gehen wird...")
-};
-
-
-// 0x19006414
-static const u8 Dialog118[] = {
- _("Wir sind besiegt...\n"
- "Du hast den Fluch des\n"
- "Pharaos gebrochen.\n"
- "Jetzt finden wir unseren\n"
- "verdienten Frieden. Nimm\n"
- "als Dank diesen Stern!")
-};
-
-
-// 0x1900649C
-static const u8 Dialog119[] = {
- _("Grrrr, offensichtlich war\n"
- "ich ein wenig unachtsam.\n"
- "Aber ich habe noch immer\n"
- "die Prinzessin und die\n"
- "Power-Sterne in meiner\n"
- "Gewalt!\n"
- "Ich werde dafür sorgen,\n"
- "daß Du keine weiteren\n"
- "Sterne erlangen wirst.\n"
- "Unser nächstes Treffen\n"
- "wird einen anderen Sieger\n"
- "haben...bestimmt!")
-};
-
-
-// 0x190065A8
-static const u8 Dialog120[] = {
- _("Woaaaah, Du hast schon\n"
- "wieder gewonnen.\n"
- "Hat mich etwa die Kraft\n"
- "der Sterne verlassen?\n"
- "Betrachte diesen Kampf\n"
- "als Unentschieden!\n"
- "Das nächste Mal bin ich\n"
- "besser vorbereitet!\n"
- "Ich warte am höchsten\n"
- "Punkt des Schlosses auf\n"
- "Dich...dort werden wir\n"
- "sehen, wer stärker ist!")
-};
-
-
-// 0x190066B4
-static const u8 Dialog121[] = {
- _("Aaaaaarrrgghh!\n"
- "Du...hast...gewonnen!\n"
- "Ich wollte mit meinen\n"
- "Truppen dieses Schloss\n"
- "erobern, doch Du hast\n"
- "meine Pläne vereitelt.\n"
- "Der Frieden kehrt\n"
- "zurück in die Welten\n"
- "der Wandgemälde...leider!\n"
- "Jetzt bleibt mir nichts\n"
- "anderes mehr übrig, als\n"
- "mein Ende abzuwarten...")
-};
-
-
-// 0x190067BC
-static const u8 Dialog122[] = {
- _("Das Schwarze Loch\n"
- "Rechts: Arbeitsplattform\n"
- "////Nebellabyrinth\n"
- "Links:/Höhlensee")
-};
-
-
-// 0x1900680C
-static const u8 Dialog123[] = {
- _("Titanenhöhle\n"
- "Rechts: Wasserfall\n"
- "Links:/Grüner Schalter")
-};
-
-
-// 0x19006844
-static const u8 Dialog124[] = {
- _("Arbeitsplattform\n"
- "Zur Beachtung:\n"
- "Aktiviere einen der\n"
- "Richtungspfeile, um die\n"
- "Plattform zu bewegen.")
-};
-
-
-// 0x190068A8
-static const u8 Dialog125[] = {
- _("Rechts ist der Ausgang\n"
- "des Nebellabyrinths. Bitte\n"
- "Eingang links benutzen!")
-};
-
-
-// 0x190068F4
-static const u8 Dialog126[] = {
- _("Oben:/ Schwarzes Loch\n"
- "Rechts: Arbeitsplattform\n"
- "////Nebellabyrinth")
-};
-
-
-// 0x19006938
-static const u8 Dialog127[] = {
- _("Höhlensee\n"
- "Rechts: Titanenhöhle\n"
- "Links:/Verlassene Mine\n"
- "////(Geschlossen!!!)\n"
- "Hier lebt ein Seemonster.\n"
- "Führe auf seinem Rücken\n"
- "eine Stampfattacke aus,\n"
- "damit es den Kopf senkt!")
-};
-
-
-// 0x190069E8
-static const u8 Dialog128[] = {
- _("Hey, es ist gegen die\n"
- "königlichen Regeln, den\n"
- "Herrscher aus dem Ring\n"
- "zu werfen!")
-};
-
-
-// 0x19006A38
-static const u8 Dialog129[] = {
- _("Herzlich willkommen!\n"
- "In diesem Kurs kannst\n"
- "Du den blauen Schalter\n"
- "entdecken.\n"
- "Löst Du ihn aus, kannst\n"
- "Du in allen blauen Blöcken\n"
- "Tarnkappen finden, die\n"
- "Dich unsichtbar machen!\n"
- "Auf diese Weise kannst Du\n"
- "durch bestimmte Wände\n"
- "gehen und Gegnern\n"
- "ungesehen ausweichen.")
-};
-
-
-// 0x19006B40
-static const u8 Dialog130[] = {
- _("Herzlich willkommen!\n"
- "In diesem Kurs kannst\n"
- "Du den grünen Schalter\n"
- "entdecken.\n"
- "Löst Du ihn aus, kannst\n"
- "Du in allen grünen Blöcken\n"
- "Titanenkappen finden, die\n"
- "Dich unbesiegbar machen.\n"
- "Bist Du mit diesen Mützen\n"
- "ausgerüstet, kannst Du\n"
- "unter Wasser laufen und\n"
- "brauchst nicht zu atmen.")
-};
-
-
-// 0x19006C58
-static const u8 Dialog131[] = {
- _("Herzlich willkommen!\n"
- "In diesem Kurs kannst\n"
- "Du den roten Schalter\n"
- "entdecken.\n"
- "Löst Du ihn aus, kannst\n"
- "Du in allen roten Blöcken\n"
- "Federkappen finden, mit\n"
- "denen Du fliegen kannst.\n"
- "Benutze den Dreisprung,\n"
- "um den Flug zu starten.\n"
- "Die Kontrolle funktioniert\n"
- "wie bei einem Flugzeug.\n"
- "Bewege den Analog-Stick\n"
- "nach vorne, um zu sinken,\n"
- "und nach hinten, um zu\n"
- "steigen!")
-};
-
-
-// 0x19006DBC
-static const u8 Dialog132[] = {
- _("Tsetsetse...Mario!\n"
- "Du versuchst doch nicht\n"
- "etwa, mich zu betrügen?\n"
- "Abkürzungen sind nicht\n"
- "erlaubt.\n"
- "Du bist disqualifiziert!")
-};
-
-
-// 0x19006E38
-static const u8 Dialog133[] = {
- _("Ich freue mich, Dich zu\n"
- "sehen. Die Prinzessin...\n"
- "ich...und alle anderen\n"
- "sind in den Wänden des\n"
- "Schlosses gefangen.\n"
- "Bowser hat die Sterne\n"
- "entwendet und benutzt\n"
- "sie, um seine eigenen\n"
- "Welten in den Gemälden\n"
- "zu erschaffen.\n"
- "Du mußt die Power-Sterne\n"
- "finden. Mit ihrer Hilfe\n"
- "kannst Du Bowsers Siegel\n"
- "an den Türen des Schlosses\n"
- "brechen.\n"
- "Im Erdgeschoß gibt es\n"
- "vier Welten. Beginne in\n"
- "der Welt der Bob-Ombs.\n"
- "Das ist die einzige Tür,\n"
- "die nicht versiegelt ist.\n"
- "Hast Du acht Sterne\n"
- "gesammelt, kannst Du die\n"
- "Tür mit dem großen Stern\n"
- "öffnen. Dahinter befindet\n"
- "sich die Prinzessin!")
-};
-
-
-// 0x19007070
-static const u8 Dialog134[] = {
- _("Am Beginn jeder Welt\n"
- "erhältst Du einen Hinweis,\n"
- "wo der nächste Stern\n"
- "zu finden ist.\n"
- "Du kannst sie in beliebiger\n"
- "Reihenfolge sammeln, aber\n"
- "einige erscheinen nur unter\n"
- "bestimmten Bedingungen.\n"
- "Nachdem Du ein paar\n"
- "Sterne gefunden hast,\n"
- "kannst Du Dich in anderen\n"
- "Welten umsehen.")
-};
-
-
-// 0x19007184
-static const u8 Dialog135[] = {
- _("Bowser hat sich die\n"
- "Power-Sterne unter den\n"
- "Nagel gerissen. In jeder\n"
- "Welt hat er sechs Sterne\n"
- "versteckt.\n"
- "Manche der Sterne kannst\n"
- "Du aber erst finden, wenn\n"
- "Du die farbigen Schalter\n"
- "in den Schalterpalästen\n"
- "ausgelöst hast.\n"
- "Bereits gefundene Sterne\n"
- "kannst Du zu Beginn jeder\n"
- "Welt sehen. Triff besiegte\n"
- "Gegner, indem Du erneut\n"
- "ihren Stern anwählst.")
-};
-
-
-// 0x190072DC
-static const u8 Dialog136[] = {
- _("Wow, Du hast bereits so\n"
- "viele Sterne gefunden?\n"
- "Ich bin sicher, das war\n"
- "kein Kinderspiel!\n"
- "Ich habe noch einige Tips,\n"
- "die Dir bei der Suche nach\n"
- "den Power-Sternen von\n"
- "Nutzen sein könnten:\n"
- "Sammle Münzen, um Deine\n"
- "Energie aufzufüllen. Ihre\n"
- "Farbe entscheidet, wieviel\n"
- "Energie Du erhältst.\n"
- "Gelbe Münzen geben eine,\n"
- "rote Münzen zwei und\n"
- "blaue Münzen sogar fünf\n"
- "Energieeinheiten zurück.\n"
- "Damit die blauen Münzen\n"
- "sichtbar werden, mußt\n"
- "Du ihre Schalter in den\n"
- "Boden stampfen.\n"
- "Halte Verletzungen gering,\n"
- "indem Du bei Stürzen im\n"
- "letzen Moment eine\n"
- "Stampfattacke ausführst.")
-};
-
-
-// 0x1900750C
-static const u8 Dialog137[] = {
- _("Vielen Dank! Du hast\n"
- "schon sehr viele Sterne\n"
- "gesammelt und Bowser in\n"
- "ein höheres Stockwerk\n"
- "verbannt.\n"
- "Wußtest Du eigentlich,\n"
- "daß Du in jeder Welt\n"
- "einen geheimen Stern\n"
- "erhältst, wenn Du\n"
- "100 Münzen sammelst?")
-};
-
-
-// 0x190075DC
-static const u8 Dialog138[] = {
- _("Unten:/Höhlensee\n"
- "Links:/Schwarzes Loch\n"
- "Rechts: Nebellabyrinth\n"
- "////(Geschlossen!!!)")
-};
-
-
-// 0x19007630
-static const u8 Dialog139[] = {
- _("Automatische Plattform\n"
- "Sobald Du diese Plattform\n"
- "betrittst, setzt sie sich\n"
- "in Bewegung.\n"
- "Sie folgt einem\n"
- "programmierten Kurs und\n"
- "verschwindet automatisch,\n"
- "wenn Du sie verläßt.")
-};
-
-
-// 0x190076E0
-static const u8 Dialog140[] = {
- _("Arbeitsplattform\n"
- "Rechts: Nebellabyrinth\n"
- "////Eingang\n"
- "Links:/Schwarzes Loch\n"
- "////Aufzug 1\n"
- "Pfeil:/Standort")
-};
-
-
-// 0x19007748
-static const u8 Dialog141[] = {
- _("Du hast einen der\n"
- "gestohlenen Power-Sterne\n"
- "gefunden.\n"
- "Damit kannst Du einige\n"
- "versiegelte Türen öffnen.\n"
- "Versuch's mal im Zimmer\n"
- "der Prinzessin im\n"
- "1. Stock oder in\n"
- "Wummps Festung im\n"
- "Erdgeschoß der Vorhalle.\n"
- "Halte Bowser auf und\n"
- "rette uns und die\n"
- "Power-Sterne.\n"
- "Wir zählen auf Dich und\n"
- "drücken Dir die Daumen.")
-};
-
-
-// 0x1900787C
-static const u8 Dialog142[] = {
- _("Du hast drei magische\n"
- "Power-Sterne gesammelt.\n"
- "Jetzt kannst Du jede Tür\n"
- "öffnen, deren Siegel eine\n"
- "Drei trägt.\n"
- "Du kannst die Türen so oft\n"
- "passieren, wie Du willst.\n"
- "Aber paß auf: In höheren\n"
- "Stockwerken werden die\n"
- "Gegner viel stärker!")
-};
-
-
-// 0x19007964
-static const u8 Dialog143[] = {
- _("Du hast acht Sterne\n"
- "gesammelt. Jetzt kannst\n"
- "Du die Tür mit dem\n"
- "großen Stern öffnen.\n"
- "Die Prinzessin hält sich\n"
- "dahinter auf!")
-};
-
-
-// 0x190079E0
-static const u8 Dialog144[] = {
- _("Du hast 30 Power-Sterne\n"
- "gesammelt. Jetzt kannst\n"
- "Du die Tür mit dem\n"
- "großen Stern öffnen. Aber\n"
- "warte noch einen Moment!\n"
- "Hast Du die beiden Säulen\n"
- "in den Boden gestampft?\n"
- "Und Du hast doch wohl\n"
- "nicht Deine Mütze\n"
- "verloren, oder?\n"
- "Wenn ja, mußt Du den\n"
- "Riesengeier mit einer\n"
- "Stampfattacke besiegen!\n"
- "Ach ja: Bowser hält sich\n"
- "jetzt im Untergrund auf.")
-};
-
-
-// 0x19007B38
-static const u8 Dialog145[] = {
- _("Du hast 50 Power-Sterne\n"
- "gesammelt. Jetzt kannst\n"
- "Du die Tür mit dem großen\n"
- "Stern im 3. Stock öffnen.\n"
- "Hast Du bereits alle\n"
- "Schalterpaläste gefunden?\n"
- "Diese besonderen Mützen\n"
- "sind sehr nützlich.")
-};
-
-
-// 0x19007BF8
-static const u8 Dialog146[] = {
- _("Du hast 70 Power-Sterne\n"
- "gesammelt. Jetzt kannst\n"
- "Du das Geheimnis der\n"
- "endlosen Treppe lüften.\n"
- "Begib Dich zum finalen\n"
- "Duell mit Bowser!")
-};
-
-
-// 0x19007C80
-static const u8 Dialog147[] = {
- _("Bevor Du weitergehst,\n"
- "solltest Du nach den\n"
- "versteckten Schaltern\n"
- "suchen.\n"
- "Hast Du sie gefunden,\n"
- "kannst Du in allen\n"
- "bunten Blöcken besondere\n"
- "Mützen finden.\n"
- "In roten Blöcken findest\n"
- "Du Federkappen, in\n"
- "grünen Titanenkappen\n"
- "und in blauen Tarnkappen.\n"
- "Allerdings mußt Du bereits\n"
- "einige Sterne besitzen, um\n"
- "die Schalterpaläste finden\n"
- "zu können!")
-};
-
-
-// 0x19007DD4
-static const u8 Dialog148[] = {
- _("Achtung, Achtung!\n"
- "Versuche bloß nicht, den\n"
- "Berg mit dem Dreisprung\n"
- "zu erreichen!\n"
- "Außerdem ist das Wasser\n"
- "sehr kalt - Deine Fitness\n"
- "könnte bei einem Bad\n"
- "großen Schaden nehmen!")
-};
-
-
-// 0x19007E84
-static const u8 Dialog149[] = {
- _("Willkommen auf der\n"
- "Rutschbahn der Prinzessin.\n"
- "Hier befindet sich ein\n"
- "Stern, den Bowser nicht\n"
- "entdeckt hat.\n"
- "Drücke den Analog-Stick\n"
- "nach vorne, um zu\n"
- "beschleunigen.\n"
- "Wenn Du sehr schnell bist,\n"
- "erhältst Du den Stern.")
-};
-
-
-// 0x19007F5C
-static const u8 Dialog150[] = {
- _("Aaaaaah! Sieh Dir diese\n"
- "Schweinerei an. Du hast\n"
- "meine Wohnung überflutet.\n"
- "Meine ganze Einrichtung\n"
- "ist ruiniert!\n"
- "Ich bin stinksauer! Alles\n"
- "läuft schief, seit ich\n"
- "diesen dämlichen Stern\n"
- "gefunden habe. Ich...\n"
- "Ich...werde...")
-};
-
-
-// 0x1900803C
-static const u8 Dialog151[] = {
- _("Ich halte das nicht mehr\n"
- "aus - zuerst überflutest\n"
- "Du meine Wohnung und\n"
- "dann hüpfst Du auch noch\n"
- "auf mir herum!?\n"
- "Mir reicht's! Ich werde\n"
- "Dir richtiges Benehmen\n"
- "beibringen! Du...Ich...\n"
- "werde Dich...Ich werde\n"
- "Dich lehren...")
-};
-
-
-// 0x1900811C
-static const u8 Dialog152[] = {
- _("Ooooh, halt, halt! Ich\n"
- "gebe auf. Hier, nimm\n"
- "den Stern. Ich brauche\n"
- "ihn nicht mehr.\n"
- "Ich kann mir die Sterne\n"
- "durch das Loch in der\n"
- "Decke ansehen, wann\n"
- "immer ich möchte.")
-};
-
-
-// 0x190081C4
-static const u8 Dialog153[] = {
- _("Hey, wer ist da? Wer\n"
- "meint, auf mir 'rumlaufen\n"
- "zu müssen? Ein Eisfloh\n"
- "oder eine Schneefliege?\n"
- "Egal, was es ist, auf\n"
- "jeden Fall stört es mich.\n"
- "Aber mein Eisatem wird\n"
- "mich davon befreien!")
-};
-
-
-// 0x19008280
-static const u8 Dialog154[] = {
- _("Paß gut auf Deine Mütze\n"
- "auf - ohne sie bist Du\n"
- "leicht verletzbar!\n"
- "Wenn Du sie verloren hast,\n"
- "findest Du sie in\n"
- "derselben Welt wieder.")
-};
-
-
-// 0x19008308
-static const u8 Dialog155[] = {
- _("Hi, Mario! Ich erzähle\n"
- "Dir einige Geheimnisse\n"
- "des Schlosses:\n"
- "Es heißt, daß der Spiegel\n"
- "des Spiegelsaals magische\n"
- "Fähigkeiten besitzt.\n"
- "Er soll Dinge zeigen, die\n"
- "Du mit bloßem Auge nicht\n"
- "erkennen kannst.\n"
- "Aber das ist bestimmt\n"
- "Unfug und lediglich\n"
- "dummer Aberglaube.\n"
- "Bei der versunkenen\n"
- "Stadt ist das schon\n"
- "etwas anderes.\n"
- "Du kannst den Pegel des\n"
- "Wassers durch die Sprünge\n"
- "ins Gemälde beeinflussen.\n"
- "Am besten schaust Du Dir\n"
- "die Wirkung direkt im\n"
- "Gemälde an!")
-};
-
-
-// 0x190084D0
-static const u8 Dialog156[] = {
- _("Diese Uhr ist wirklich\n"
- "ungewöhnlich. Ihr Inneres\n"
- "verändert sich im Laufe\n"
- "der Zeit.")
-};
-
-
-// 0x19008524
-static const u8 Dialog157[] = {
- _("Achte auf den Treibsand!\n"
- "Solltest Du einmal darin\n"
- "versinken, findet Dein\n"
- "Gemäldebesuch ein rasches\n"
- "Ende.\n"
- "Schwarze Löcher sind\n"
- "bodenlose Fallen. Du wirst\n"
- "das Gemälde neu betreten\n"
- "müssen, wenn Du in eines\n"
- "dieser Löcher hineinfällst.")
-};
-
-
-// 0x1900860C
-static const u8 Dialog158[] = {
- _("Mit dem richtigen Timing\n"
- "kannst Du sehr hoch\n"
- "springen. Den Dreisprung\n"
- "kannst Du ausführen, wenn\n"
- "Du rennst und dreimal\n"
- "hintereinander springst.\n"
- "Wandsprünge sind eine\n"
- "effektive Methode, um\n"
- "hohe Stellen zu erreichen.\n"
- "Springe an eine Wand.\n"
- "Sobald Du sie berührst,\n"
- "mußt Du erneut springen!")
-};
-
-
-// 0x1900872C
-static const u8 Dialog159[] = {
- _("Gehst Du in die Hocke und\n"
- "drückst den Sprungknopf,\n"
- "kannst Du einen\n"
- "Rückwärtssalto ausführen.\n"
- "Du machst einen\n"
- "Weitsprung, wenn Du im\n"
- "Rennen den [Z]-Knopf\n"
- "drückst und springst.")
-};
-
-
-// 0x190087DC
-static const u8 Dialog160[] = {
- _("Drücke im Rennen den\n"
- "[B]-Knopf, um einen\n"
- "Hechtsprung zu machen.\n"
- "Mit dem [A]- oder [B]-Knopf\n"
- "kommt Mario auf die Füße\n"
- "zurück.")
-};
-
-
-// 0x19008854
-static const u8 Dialog161[] = {
- _("Hey... Mario!!! Seit\n"
- "unserem letzten Abenteuer\n"
- "ist viel Zeit vergangen.\n"
- "Ich freue mich, Dich\n"
- "wiederzusehen.\n"
- "Man erzählte mir, daß ich\n"
- "Dich hier treffen könnte,\n"
- "aber ich hatte die\n"
- "Hoffnung schon fast\n"
- "aufgegeben.\n"
- "Ist es wahr? Du hast\n"
- "Bowser besiegt und alle\n"
- "gestohlenen Power-Sterne\n"
- "zurückerobert?\n"
- "Unglaublich!!!\n"
- "Und die Prinzessin?\n"
- "Du hast sie gerettet?\n"
- "Cool! Aber ich wußte\n"
- "natürlich, daß Du es\n"
- "schaffen würdest.\n"
- "Nun habe ich noch eine\n"
- "ganz spezielle Nachricht\n"
- "für Dich:\n"
- "Danke, daß Du SUPER\n"
- "MARIO 64 gespielt hast.\n"
- "Du hast jetzt alle Sterne\n"
- "gefunden und damit das\n"
- "Spiel beendet. Aber wir\n"
- "haben noch eine kleine\n"
- "Überraschung für Dich!\n"
- "Wir hoffen, sie wird Dir\n"
- "gefallen, denn du kannst\n"
- "das Spiel nochmals unter\n"
- "veränderten Bedingungen\n"
- "spielen. Viel Spaß!\n"
- "Es könnte sein, daß Du\n"
- "dabei neue Entdeckungen\n"
- "machst, die Dir bis jetzt\n"
- "verborgen geblieben sind.\n"
- "Das Super Mario 64 Team")
-};
-
-
-// 0x19008BC0
-static const u8 Dialog162[] = {
- _("Nein, nein, nein! Nicht\n"
- "Du schon wieder! Ich habe\n"
- "jetzt wirklich keine Zeit,\n"
- "über Sterne zu quatschen!\n"
- "Hier, nimm ihn und laß\n"
- "mich runter. Ich habe noch\n"
- "wichtige Geschäfte zu\n"
- "erledigen!")
-};
-
-
-// 0x19008C7C
-static const u8 Dialog163[] = {
- _("Ich glaub's nicht! Du hast\n"
- "mich besiegt...wie konnte\n"
- "das nur geschehen. Meine\n"
- "Truppen, die Sterne...\n"
- "alles umsonst!\n"
- "Was??? Es gab insgesamt\n"
- "120 Sterne im Schloss zu\n"
- "finden? Dann habe ich\n"
- "wohl einige bei meiner\n"
- "Suche übersehen!\n"
- "Jetzt kehrt der Frieden\n"
- "zurück in die Welten der\n"
- "Gemälde - was für ein\n"
- "fürchterlicher Gedanke...\n"
- "Aaaaaarrrgghhhh!!!\n"
- "Das kann ich mir nicht\n"
- "länger ansehen - ich\n"
- "verschwinde. So long...\n"
- "Bis zum nächsten Mal.\n"
- "Ich komme wieder...")
-};
-
-
-// 0x19008E44
-static const u8 Dialog164[] = {
- _("Hi! Wie geht's, Mario?\n"
- "Ich bin zwar etwas außer\n"
- "Übung, aber ein Rennen\n"
- "gegen den Schlidderkönig\n"
- "ist immer eine große\n"
- "Herausforderung.\n"
- "Also, Kumpel, wie steht's?\n"
- "Sollen wir ein kleines\n"
- "Match wagen?\n"
- "\n"
- "//Okay!///Später!")
-};
-
-
-// 0x19008F1C
-static const u8 Dialog165[] = {
- _("Sei vorsichtig, wenn Du\n"
- "um den Pfahl herumrennst,\n"
- "damit Dir nicht schlecht\n"
- "wird!")
-};
-
-
-// 0x19008F70
-static const u8 Dialog166[] = {
- _("Ich mache gerade einen\n"
- "kleinen Waldlauf. Komm\n"
- "doch später wieder\n"
- "vorbei!\n"
- "Dein Freund Koopa")
-};
-
-
-// 0x19008FCC
-static const u8 Dialog167[] = {
- _("Dort vorne ist das\n"
- "Schloss der Prinzessin.\n"
- "Sieh Dich zunächst hier\n"
- "im Schlossgarten um.\n"
- "Die Steuerung ist ganz\n"
- "einfach:\n"
- "Drücke den [A]-Knopf, um\n"
- "zu springen.\n"
- "Schläge kannst Du mit\n"
- "dem [B]-Knopf ausführen.\n"
- "Drückst Du den [Z]-Knopf,\n"
- "duckt sich Mario.\n"
- "Schilder kannst Du mit\n"
- "dem [A]- oder [B]-Knopf\n"
- "lesen, wenn Du direkt\n"
- "davor stehst.")
-};
-
-
-// 0x19009110
-static const u8 Dialog168[] = {
- _("Bist Du immer noch hier?\n"
- "Findest Du nicht, daß\n"
- "Du bereits genug Schaden\n"
- "angerichtet hast?")
-};
-
-
-// 0x1900916C
-static const u8 Dialog169[] = {
- _("Dies ist die erste und\n"
- "letzte Warnung:\n"
- "Das Betreten dieser\n"
- "Höhle ist verboten!!!\n"
- "Wer sich hier ohne meine\n"
- "Erlaubnis Zutritt\n"
- "verschafft, handelt sich\n"
- "eine Menge Ärger ein!!!")
-};
-
-
-// dialog entry table 0x1900921C
-static const struct DialogEntry dialog_text_000 = {
- 1, 6, 30, 200, Dialog000
-};
-
-static const struct DialogEntry dialog_text_001 = {
- 1, 4, 95, 200, Dialog001
-};
-
-static const struct DialogEntry dialog_text_002 = {
- 1, 4, 95, 200, Dialog002
-};
-
-static const struct DialogEntry dialog_text_003 = {
- 1, 5, 95, 200, Dialog003
-};
-
-static const struct DialogEntry dialog_text_004 = {
- 1, 3, 95, 200, Dialog004
-};
-
-static const struct DialogEntry dialog_text_005 = {
- 1, 4, 30, 200, Dialog005
-};
-
-static const struct DialogEntry dialog_text_006 = {
- 1, 3, 30, 200, Dialog006
-};
-
-static const struct DialogEntry dialog_text_007 = {
- 1, 5, 30, 200, Dialog007
-};
-
-static const struct DialogEntry dialog_text_008 = {
- 1, 5, 30, 200, Dialog008
-};
-
-static const struct DialogEntry dialog_text_009 = {
- 1, 5, 30, 200, Dialog009
-};
-
-static const struct DialogEntry dialog_text_010 = {
- 1, 4, 30, 200, Dialog010
-};
-
-static const struct DialogEntry dialog_text_011 = {
- 1, 4, 30, 200, Dialog011
-};
-
-static const struct DialogEntry dialog_text_012 = {
- 1, 4, 30, 200, Dialog012
-};
-
-static const struct DialogEntry dialog_text_013 = {
- 1, 6, 30, 200, Dialog013
-};
-
-static const struct DialogEntry dialog_text_014 = {
- 1, 6, 30, 200, Dialog014
-};
-
-static const struct DialogEntry dialog_text_015 = {
- 1, 4, 30, 200, Dialog015
-};
-
-static const struct DialogEntry dialog_text_016 = {
- 1, 4, 30, 200, Dialog016
-};
-
-static const struct DialogEntry dialog_text_017 = {
- 1, 4, 30, 200, Dialog017
-};
-
-static const struct DialogEntry dialog_text_018 = {
- 1, 4, 30, 200, Dialog018
-};
-
-static const struct DialogEntry dialog_text_019 = {
- 1, 2, 30, 200, Dialog019
-};
-
-static const struct DialogEntry dialog_text_020 = {
- 1, 6, 95, 150, Dialog020
-};
-
-static const struct DialogEntry dialog_text_021 = {
- 1, 5, 95, 200, Dialog021
-};
-
-static const struct DialogEntry dialog_text_022 = {
- 1, 3, 95, 200, Dialog022
-};
-
-static const struct DialogEntry dialog_text_023 = {
- 1, 2, 95, 200, Dialog023
-};
-
-static const struct DialogEntry dialog_text_024 = {
- 1, 4, 95, 200, Dialog024
-};
-
-static const struct DialogEntry dialog_text_025 = {
- 1, 4, 95, 200, Dialog025
-};
-
-static const struct DialogEntry dialog_text_026 = {
- 1, 4, 95, 200, Dialog026
-};
-
-static const struct DialogEntry dialog_text_027 = {
- 1, 4, 95, 200, Dialog027
-};
-
-static const struct DialogEntry dialog_text_028 = {
- 1, 4, 95, 200, Dialog028
-};
-
-static const struct DialogEntry dialog_text_029 = {
- 1, 4, 95, 200, Dialog029
-};
-
-static const struct DialogEntry dialog_text_030 = {
- 1, 4, 30, 200, Dialog030
-};
-
-static const struct DialogEntry dialog_text_031 = {
- 1, 3, 30, 200, Dialog031
-};
-
-static const struct DialogEntry dialog_text_032 = {
- 1, 5, 30, 200, Dialog032
-};
-
-static const struct DialogEntry dialog_text_033 = {
- 1, 4, 30, 200, Dialog033
-};
-
-static const struct DialogEntry dialog_text_034 = {
- 1, 5, 30, 200, Dialog034
-};
-
-static const struct DialogEntry dialog_text_035 = {
- 1, 5, 30, 200, Dialog035
-};
-
-static const struct DialogEntry dialog_text_036 = {
- 1, 5, 30, 200, Dialog036
-};
-
-static const struct DialogEntry dialog_text_037 = {
- 1, 3, 30, 200, Dialog037
-};
-
-static const struct DialogEntry dialog_text_038 = {
- 1, 2, 95, 200, Dialog038
-};
-
-static const struct DialogEntry dialog_text_039 = {
- 1, 5, 30, 200, Dialog039
-};
-
-static const struct DialogEntry dialog_text_040 = {
- 1, 3, 30, 200, Dialog040
-};
-
-static const struct DialogEntry dialog_text_041 = {
- 1, 4, 30, 200, Dialog041
-};
-
-static const struct DialogEntry dialog_text_042 = {
- 1, 4, 30, 200, Dialog042
-};
-
-static const struct DialogEntry dialog_text_043 = {
- 1, 4, 30, 200, Dialog043
-};
-
-static const struct DialogEntry dialog_text_044 = {
- 1, 5, 95, 200, Dialog044
-};
-
-static const struct DialogEntry dialog_text_045 = {
- 1, 6, 95, 200, Dialog045
-};
-
-static const struct DialogEntry dialog_text_046 = {
- 1, 4, 30, 200, Dialog046
-};
-
-static const struct DialogEntry dialog_text_047 = {
- 1, 3, 95, 200, Dialog047
-};
-
-static const struct DialogEntry dialog_text_048 = {
- 1, 6, 30, 200, Dialog048
-};
-
-static const struct DialogEntry dialog_text_049 = {
- 1, 5, 30, 200, Dialog049
-};
-
-static const struct DialogEntry dialog_text_050 = {
- 1, 4, 30, 200, Dialog050
-};
-
-static const struct DialogEntry dialog_text_051 = {
- 1, 5, 30, 200, Dialog051
-};
-
-static const struct DialogEntry dialog_text_052 = {
- 1, 5, 30, 200, Dialog052
-};
-
-static const struct DialogEntry dialog_text_053 = {
- 1, 5, 30, 200, Dialog053
-};
-
-static const struct DialogEntry dialog_text_054 = {
- 1, 6, 30, 200, Dialog054
-};
-
-static const struct DialogEntry dialog_text_055 = {
- 1, 5, 30, 200, Dialog055
-};
-
-static const struct DialogEntry dialog_text_056 = {
- 1, 6, 30, 200, Dialog056
-};
-
-static const struct DialogEntry dialog_text_057 = {
- 1, 4, 30, 200, Dialog057
-};
-
-static const struct DialogEntry dialog_text_058 = {
- 1, 5, 30, 200, Dialog058
-};
-
-static const struct DialogEntry dialog_text_059 = {
- 1, 6, 30, 200, Dialog059
-};
-
-static const struct DialogEntry dialog_text_060 = {
- 1, 4, 30, 200, Dialog060
-};
-
-static const struct DialogEntry dialog_text_061 = {
- 1, 5, 30, 200, Dialog061
-};
-
-static const struct DialogEntry dialog_text_062 = {
- 1, 4, 30, 200, Dialog062
-};
-
-static const struct DialogEntry dialog_text_063 = {
- 1, 3, 30, 200, Dialog063
-};
-
-static const struct DialogEntry dialog_text_064 = {
- 1, 3, 30, 200, Dialog064
-};
-
-static const struct DialogEntry dialog_text_065 = {
- 1, 5, 30, 200, Dialog065
-};
-
-static const struct DialogEntry dialog_text_066 = {
- 1, 5, 30, 200, Dialog066
-};
-
-static const struct DialogEntry dialog_text_067 = {
- 1, 5, 30, 200, Dialog067
-};
-
-static const struct DialogEntry dialog_text_068 = {
- 1, 5, 30, 200, Dialog068
-};
-
-static const struct DialogEntry dialog_text_069 = {
- 1, 4, 30, 200, Dialog069
-};
-
-static const struct DialogEntry dialog_text_070 = {
- 1, 4, 30, 200, Dialog070
-};
-
-static const struct DialogEntry dialog_text_071 = {
- 1, 4, 30, 200, Dialog071
-};
-
-static const struct DialogEntry dialog_text_072 = {
- 1, 5, 30, 200, Dialog072
-};
-
-static const struct DialogEntry dialog_text_073 = {
- 1, 5, 95, 200, Dialog073
-};
-
-static const struct DialogEntry dialog_text_074 = {
- 1, 5, 30, 200, Dialog074
-};
-
-static const struct DialogEntry dialog_text_075 = {
- 1, 5, 30, 200, Dialog075
-};
-
-static const struct DialogEntry dialog_text_076 = {
- 1, 4, 30, 200, Dialog076
-};
-
-static const struct DialogEntry dialog_text_077 = {
- 1, 4, 150, 200, Dialog077
-};
-
-static const struct DialogEntry dialog_text_078 = {
- 1, 5, 30, 200, Dialog078
-};
-
-static const struct DialogEntry dialog_text_079 = {
- 1, 4, 30, 200, Dialog079
-};
-
-static const struct DialogEntry dialog_text_080 = {
- 1, 3, 30, 200, Dialog080
-};
-
-static const struct DialogEntry dialog_text_081 = {
- 1, 5, 30, 200, Dialog081
-};
-
-static const struct DialogEntry dialog_text_082 = {
- 1, 4, 30, 200, Dialog082
-};
-
-static const struct DialogEntry dialog_text_083 = {
- 1, 6, 30, 200, Dialog083
-};
-
-static const struct DialogEntry dialog_text_084 = {
- 1, 5, 30, 200, Dialog084
-};
-
-static const struct DialogEntry dialog_text_085 = {
- 1, 4, 30, 200, Dialog085
-};
-
-static const struct DialogEntry dialog_text_086 = {
- 1, 3, 40, 200, Dialog086
-};
-
-static const struct DialogEntry dialog_text_087 = {
- 1, 3, 30, 200, Dialog087
-};
-
-static const struct DialogEntry dialog_text_088 = {
- 1, 2, 30, 200, Dialog088
-};
-
-static const struct DialogEntry dialog_text_089 = {
- 1, 4, 95, 200, Dialog089
-};
-
-static const struct DialogEntry dialog_text_090 = {
- 1, 5, 30, 200, Dialog090
-};
-
-static const struct DialogEntry dialog_text_091 = {
- 1, 3, 30, 200, Dialog091
-};
-
-static const struct DialogEntry dialog_text_092 = {
- 1, 4, 30, 200, Dialog092
-};
-
-static const struct DialogEntry dialog_text_093 = {
- 1, 4, 30, 200, Dialog093
-};
-
-static const struct DialogEntry dialog_text_094 = {
- 1, 4, 30, 200, Dialog094
-};
-
-static const struct DialogEntry dialog_text_095 = {
- 1, 3, 30, 200, Dialog095
-};
-
-static const struct DialogEntry dialog_text_096 = {
- 1, 4, 30, 200, Dialog096
-};
-
-static const struct DialogEntry dialog_text_097 = {
- 1, 6, 30, 200, Dialog097
-};
-
-static const struct DialogEntry dialog_text_098 = {
- 1, 1, 95, 200, Dialog098
-};
-
-static const struct DialogEntry dialog_text_099 = {
- 1, 3, 95, 200, Dialog099
-};
-
-static const struct DialogEntry dialog_text_100 = {
- 1, 2, 95, 200, Dialog100
-};
-
-static const struct DialogEntry dialog_text_101 = {
- 1, 5, 95, 200, Dialog101
-};
-
-static const struct DialogEntry dialog_text_102 = {
- 1, 5, 30, 200, Dialog102
-};
-
-static const struct DialogEntry dialog_text_103 = {
- 1, 4, 95, 200, Dialog103
-};
-
-static const struct DialogEntry dialog_text_104 = {
- 1, 4, 30, 200, Dialog104
-};
-
-static const struct DialogEntry dialog_text_105 = {
- 1, 5, 95, 200, Dialog105
-};
-
-static const struct DialogEntry dialog_text_106 = {
- 1, 2, 95, 200, Dialog106
-};
-
-static const struct DialogEntry dialog_text_107 = {
- 1, 4, 95, 200, Dialog107
-};
-
-static const struct DialogEntry dialog_text_108 = {
- 1, 6, 95, 200, Dialog108
-};
-
-static const struct DialogEntry dialog_text_109 = {
- 1, 4, 95, 200, Dialog109
-};
-
-static const struct DialogEntry dialog_text_110 = {
- 1, 5, 95, 200, Dialog110
-};
-
-static const struct DialogEntry dialog_text_111 = {
- 1, 3, 95, 200, Dialog111
-};
-
-static const struct DialogEntry dialog_text_112 = {
- 1, 4, 30, 200, Dialog112
-};
-
-static const struct DialogEntry dialog_text_113 = {
- 1, 6, 30, 200, Dialog113
-};
-
-static const struct DialogEntry dialog_text_114 = {
- 1, 4, 95, 200, Dialog114
-};
-
-static const struct DialogEntry dialog_text_115 = {
- 1, 4, 95, 200, Dialog115
-};
-
-static const struct DialogEntry dialog_text_116 = {
- 1, 4, 95, 200, Dialog116
-};
-
-static const struct DialogEntry dialog_text_117 = {
- 1, 4, 95, 200, Dialog117
-};
-
-static const struct DialogEntry dialog_text_118 = {
- 1, 6, 95, 200, Dialog118
-};
-
-static const struct DialogEntry dialog_text_119 = {
- 1, 6, 30, 200, Dialog119
-};
-
-static const struct DialogEntry dialog_text_120 = {
- 1, 4, 30, 200, Dialog120
-};
-
-static const struct DialogEntry dialog_text_121 = {
- 1, 6, 30, 200, Dialog121
-};
-
-static const struct DialogEntry dialog_text_122 = {
- 1, 4, 30, 200, Dialog122
-};
-
-static const struct DialogEntry dialog_text_123 = {
- 1, 3, 30, 200, Dialog123
-};
-
-static const struct DialogEntry dialog_text_124 = {
- 1, 5, 30, 200, Dialog124
-};
-
-static const struct DialogEntry dialog_text_125 = {
- 1, 3, 30, 200, Dialog125
-};
-
-static const struct DialogEntry dialog_text_126 = {
- 1, 3, 30, 200, Dialog126
-};
-
-static const struct DialogEntry dialog_text_127 = {
- 1, 4, 30, 200, Dialog127
-};
-
-static const struct DialogEntry dialog_text_128 = {
- 1, 4, 95, 200, Dialog128
-};
-
-static const struct DialogEntry dialog_text_129 = {
- 1, 4, 30, 200, Dialog129
-};
-
-static const struct DialogEntry dialog_text_130 = {
- 1, 4, 30, 200, Dialog130
-};
-
-static const struct DialogEntry dialog_text_131 = {
- 1, 4, 30, 200, Dialog131
-};
-
-static const struct DialogEntry dialog_text_132 = {
- 1, 3, 30, 200, Dialog132
-};
-
-static const struct DialogEntry dialog_text_133 = {
- 1, 5, 30, 200, Dialog133
-};
-
-static const struct DialogEntry dialog_text_134 = {
- 1, 4, 30, 200, Dialog134
-};
-
-static const struct DialogEntry dialog_text_135 = {
- 1, 5, 30, 200, Dialog135
-};
-
-static const struct DialogEntry dialog_text_136 = {
- 1, 4, 30, 200, Dialog136
-};
-
-static const struct DialogEntry dialog_text_137 = {
- 1, 5, 30, 200, Dialog137
-};
-
-static const struct DialogEntry dialog_text_138 = {
- 1, 4, 30, 200, Dialog138
-};
-
-static const struct DialogEntry dialog_text_139 = {
- 1, 4, 30, 200, Dialog139
-};
-
-static const struct DialogEntry dialog_text_140 = {
- 1, 6, 30, 200, Dialog140
-};
-
-static const struct DialogEntry dialog_text_141 = {
- 1, 5, 150, 200, Dialog141
-};
-
-static const struct DialogEntry dialog_text_142 = {
- 1, 5, 150, 200, Dialog142
-};
-
-static const struct DialogEntry dialog_text_143 = {
- 1, 6, 150, 200, Dialog143
-};
-
-static const struct DialogEntry dialog_text_144 = {
- 1, 5, 150, 200, Dialog144
-};
-
-static const struct DialogEntry dialog_text_145 = {
- 1, 4, 150, 200, Dialog145
-};
-
-static const struct DialogEntry dialog_text_146 = {
- 1, 6, 150, 200, Dialog146
-};
-
-static const struct DialogEntry dialog_text_147 = {
- 1, 4, 30, 200, Dialog147
-};
-
-static const struct DialogEntry dialog_text_148 = {
- 1, 4, 30, 200, Dialog148
-};
-
-static const struct DialogEntry dialog_text_149 = {
- 1, 5, 30, 200, Dialog149
-};
-
-static const struct DialogEntry dialog_text_150 = {
- 1, 5, 30, 200, Dialog150
-};
-
-static const struct DialogEntry dialog_text_151 = {
- 1, 5, 30, 200, Dialog151
-};
-
-static const struct DialogEntry dialog_text_152 = {
- 1, 4, 30, 200, Dialog152
-};
-
-static const struct DialogEntry dialog_text_153 = {
- 1, 4, 30, 200, Dialog153
-};
-
-static const struct DialogEntry dialog_text_154 = {
- 1, 6, 30, 200, Dialog154
-};
-
-static const struct DialogEntry dialog_text_155 = {
- 1, 3, 30, 200, Dialog155
-};
-
-static const struct DialogEntry dialog_text_156 = {
- 1, 4, 30, 200, Dialog156
-};
-
-static const struct DialogEntry dialog_text_157 = {
- 1, 5, 30, 200, Dialog157
-};
-
-static const struct DialogEntry dialog_text_158 = {
- 1, 6, 30, 200, Dialog158
-};
-
-static const struct DialogEntry dialog_text_159 = {
- 1, 4, 30, 200, Dialog159
-};
-
-static const struct DialogEntry dialog_text_160 = {
- 1, 6, 30, 200, Dialog160
-};
-
-static const struct DialogEntry dialog_text_161 = {
- 1, 5, 30, 200, Dialog161
-};
-
-static const struct DialogEntry dialog_text_162 = {
- 1, 4, 30, 200, Dialog162
-};
-
-static const struct DialogEntry dialog_text_163 = {
- 1, 5, 30, 200, Dialog163
-};
-
-static const struct DialogEntry dialog_text_164 = {
- 1, 6, 30, 200, Dialog164
-};
-
-static const struct DialogEntry dialog_text_165 = {
- 1, 4, 30, 200, Dialog165
-};
-
-static const struct DialogEntry dialog_text_166 = {
- 1, 5, 30, 200, Dialog166
-};
-
-static const struct DialogEntry dialog_text_167 = {
- 1, 4, 30, 200, Dialog167
-};
-
-static const struct DialogEntry dialog_text_168 = {
- 1, 4, 30, 200, Dialog168
-};
-
-static const struct DialogEntry dialog_text_169 = {
- 1, 4, 30, 200, Dialog169
-};
-
-
-// dialog table
-// 0x19009CBC
-const struct DialogEntry *const dialog_table_eu_de[] = {
- &dialog_text_000, &dialog_text_001, &dialog_text_002, &dialog_text_003,
- &dialog_text_004, &dialog_text_005, &dialog_text_006, &dialog_text_007,
- &dialog_text_008, &dialog_text_009, &dialog_text_010, &dialog_text_011,
- &dialog_text_012, &dialog_text_013, &dialog_text_014, &dialog_text_015,
- &dialog_text_016, &dialog_text_017, &dialog_text_018, &dialog_text_019,
- &dialog_text_020, &dialog_text_021, &dialog_text_022, &dialog_text_023,
- &dialog_text_024, &dialog_text_025, &dialog_text_026, &dialog_text_027,
- &dialog_text_028, &dialog_text_029, &dialog_text_030, &dialog_text_031,
- &dialog_text_032, &dialog_text_033, &dialog_text_034, &dialog_text_035,
- &dialog_text_036, &dialog_text_037, &dialog_text_038, &dialog_text_039,
- &dialog_text_040, &dialog_text_041, &dialog_text_042, &dialog_text_043,
- &dialog_text_044, &dialog_text_045, &dialog_text_046, &dialog_text_047,
- &dialog_text_048, &dialog_text_049, &dialog_text_050, &dialog_text_051,
- &dialog_text_052, &dialog_text_053, &dialog_text_054, &dialog_text_055,
- &dialog_text_056, &dialog_text_057, &dialog_text_058, &dialog_text_059,
- &dialog_text_060, &dialog_text_061, &dialog_text_062, &dialog_text_063,
- &dialog_text_064, &dialog_text_065, &dialog_text_066, &dialog_text_067,
- &dialog_text_068, &dialog_text_069, &dialog_text_070, &dialog_text_071,
- &dialog_text_072, &dialog_text_073, &dialog_text_074, &dialog_text_075,
- &dialog_text_076, &dialog_text_077, &dialog_text_078, &dialog_text_079,
- &dialog_text_080, &dialog_text_081, &dialog_text_082, &dialog_text_083,
- &dialog_text_084, &dialog_text_085, &dialog_text_086, &dialog_text_087,
- &dialog_text_088, &dialog_text_089, &dialog_text_090, &dialog_text_091,
- &dialog_text_092, &dialog_text_093, &dialog_text_094, &dialog_text_095,
- &dialog_text_096, &dialog_text_097, &dialog_text_098, &dialog_text_099,
- &dialog_text_100, &dialog_text_101, &dialog_text_102, &dialog_text_103,
- &dialog_text_104, &dialog_text_105, &dialog_text_106, &dialog_text_107,
- &dialog_text_108, &dialog_text_109, &dialog_text_110, &dialog_text_111,
- &dialog_text_112, &dialog_text_113, &dialog_text_114, &dialog_text_115,
- &dialog_text_116, &dialog_text_117, &dialog_text_118, &dialog_text_119,
- &dialog_text_120, &dialog_text_121, &dialog_text_122, &dialog_text_123,
- &dialog_text_124, &dialog_text_125, &dialog_text_126, &dialog_text_127,
- &dialog_text_128, &dialog_text_129, &dialog_text_130, &dialog_text_131,
- &dialog_text_132, &dialog_text_133, &dialog_text_134, &dialog_text_135,
- &dialog_text_136, &dialog_text_137, &dialog_text_138, &dialog_text_139,
- &dialog_text_140, &dialog_text_141, &dialog_text_142, &dialog_text_143,
- &dialog_text_144, &dialog_text_145, &dialog_text_146, &dialog_text_147,
- &dialog_text_148, &dialog_text_149, &dialog_text_150, &dialog_text_151,
- &dialog_text_152, &dialog_text_153, &dialog_text_154, &dialog_text_155,
- &dialog_text_156, &dialog_text_157, &dialog_text_158, &dialog_text_159,
- &dialog_text_160, &dialog_text_161, &dialog_text_162, &dialog_text_163,
- &dialog_text_164, &dialog_text_165, &dialog_text_166, &dialog_text_167,
- &dialog_text_168, &dialog_text_169, NULL,
-};
-
diff --git a/text/eu/de/level.c.in b/text/eu/de/level.c.in
@@ -1,169 +0,0 @@
-// level names (EU, Deutsch)
-// 0x19009F68
-static const u8 level_name_01[] = {
- _(" 1 BOB-OMBS BOMBENBERG")
-};
-
-
-// 0x19009F80
-static const u8 level_name_02[] = {
- _(" 2 WUMMPS WUCHTWALL")
-};
-
-
-// 0x19009F94
-static const u8 level_name_03[] = {
- _(" 3 PIRATENBUCHT PANIK")
-};
-
-
-// 0x19009FAC
-static const u8 level_name_04[] = {
- _(" 4 BIBBERBERG BOB")
-};
-
-
-// 0x19009FC0
-static const u8 level_name_05[] = {
- _(" 5 BIG BOOS BURG")
-};
-
-
-// 0x19009FD4
-static const u8 level_name_06[] = {
- _(" 6 GRÜNE GIFTGROTTE")
-};
-
-
-// 0x19009FE8
-static const u8 level_name_07[] = {
- _(" 7 LAVA LAGUNE")
-};
-
-
-// 0x19009FF8
-static const u8 level_name_08[] = {
- _(" 8 WOBIWABA WÜSTE")
-};
-
-
-// 0x1900A00C
-static const u8 level_name_09[] = {
- _(" 9 WILDE WASSERWERFT")
-};
-
-
-// 0x1900A024
-static const u8 level_name_10[] = {
- _("10 FROSTBEULEN FRUST")
-};
-
-
-// 0x1900A03C
-static const u8 level_name_11[] = {
- _("11 ATLANTIS AQUARIA")
-};
-
-
-// 0x1900A050
-static const u8 level_name_12[] = {
- _("12 FLIEGENPILZ FIASKO")
-};
-
-
-// 0x1900A068
-static const u8 level_name_13[] = {
- _("13 GULLIVER GUMBA")
-};
-
-
-// 0x1900A07C
-static const u8 level_name_14[] = {
- _("14 TICK TACK TRAUMA")
-};
-
-
-// 0x1900A090
-static const u8 level_name_15[] = {
- _("15 REGENBOGEN RASEREI")
-};
-
-
-// 0x1900A0A8
-static const u8 level_name_16[] = {
- _(" BOWSERS SCHATTENWELT")
-};
-
-
-// 0x1900A0C0
-static const u8 level_name_17[] = {
- _(" BOWSERS LAVASEE")
-};
-
-
-// 0x1900A0D4
-static const u8 level_name_18[] = {
- _(" BOWSERS LUFTSCHLOSS")
-};
-
-
-// 0x1900A0EC
-static const u8 level_name_19[] = {
- _(" TOADSTOOLS RUTSCHBAHN")
-};
-
-
-// 0x1900A108
-static const u8 level_name_20[] = {
- _(" GRÜNER SCHALTERPALAST")
-};
-
-
-// 0x1900A124
-static const u8 level_name_21[] = {
- _(" ROTER SCHALTERPALAST")
-};
-
-
-// 0x1900A13C
-static const u8 level_name_22[] = {
- _(" BLAUER SCHALTERPALAST")
-};
-
-
-// 0x1900A158
-static const u8 level_name_23[] = {
- _(" REGENBOGEN FEUERWERK")
-};
-
-
-// 0x1900A170
-static const u8 level_name_24[] = {
- _(" VERSTECKTES AQUARIUM")
-};
-
-
-// 0x1900A188
-static const u8 level_name_25[] = {
- _("")
-};
-
-
-// 0x1900A18C
-static const u8 level_name_castle_secret_stars[] = {
- _(" GEHEIME STERNE")
-};
-
-
-// level name table
-// 0x1900A1A0
-const u8 *const level_name_table_eu_de[] = {
- level_name_01, level_name_02, level_name_03, level_name_04,
- level_name_05, level_name_06, level_name_07, level_name_08,
- level_name_09, level_name_10, level_name_11, level_name_12,
- level_name_13, level_name_14, level_name_15, level_name_16,
- level_name_17, level_name_18, level_name_19, level_name_20,
- level_name_21, level_name_22, level_name_23, level_name_24,
- level_name_25, level_name_castle_secret_stars, 0x0,
-};
-
diff --git a/text/eu/de/star.c.in b/text/eu/de/star.c.in
@@ -1,613 +0,0 @@
-// act names (EU, Deutsch)
-// 0x1900A20C
-static const u8 act_name_00[] = {
- _("BESIEGE KÖNIG BOB-OMB!")
-};
-
-
-// 0x1900A224
-static const u8 act_name_01[] = {
- _("BESIEGE DEN SCHNELLEN KOOPA!")
-};
-
-
-// 0x1900A244
-static const u8 act_name_02[] = {
- _("FLIEGE ZUR SCHWEBENDEN INSEL!")
-};
-
-
-// 0x1900A264
-static const u8 act_name_03[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A280
-static const u8 act_name_04[] = {
- _("DURCHFLIEGE ALLE MÜNZENRINGE!")
-};
-
-
-// 0x1900A2A0
-static const u8 act_name_05[] = {
- _("BEFREIE DEN KETTENHUND!")
-};
-
-
-// 0x1900A2B8
-static const u8 act_name_06[] = {
- _("BESIEGE KÖNIG WUMMP!")
-};
-
-
-// 0x1900A2D0
-static const u8 act_name_07[] = {
- _("STEIGE AUF DIE BERGFESTUNG!")
-};
-
-
-// 0x1900A2EC
-static const u8 act_name_08[] = {
- _("FLIEG INS BLAUE!")
-};
-
-
-// 0x1900A300
-static const u8 act_name_09[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A31C
-static const u8 act_name_10[] = {
- _("WECKE DIE EULE!")
-};
-
-
-// 0x1900A32C
-static const u8 act_name_11[] = {
- _("ZERSTÖRE DIE FELSWAND!")
-};
-
-
-// 0x1900A344
-static const u8 act_name_12[] = {
- _("TAUCHE IN DAS SCHIFFSWRACK!")
-};
-
-
-// 0x1900A360
-static const u8 act_name_13[] = {
- _("LOCKE DEN AAL KANO HERAUS!")
-};
-
-
-// 0x1900A37C
-static const u8 act_name_14[] = {
- _("TAUCHE ZUR SCHATZHÖHLE!")
-};
-
-
-// 0x1900A394
-static const u8 act_name_15[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A3B0
-static const u8 act_name_16[] = {
- _("FLIEGE ZU DEN STEINSÄULEN!")
-};
-
-
-// 0x1900A3CC
-static const u8 act_name_17[] = {
- _("LAUFE DURCH DEN STRUDEL!")
-};
-
-
-// 0x1900A3E8
-static const u8 act_name_18[] = {
- _("RUTSCHE AUF DER EISBAHN!")
-};
-
-
-// 0x1900A404
-static const u8 act_name_19[] = {
- _("FINDE DAS PINGUINBABY!")
-};
-
-
-// 0x1900A41C
-static const u8 act_name_20[] = {
- _("BESIEGE DEN SCHNELLEN PINGUIN!")
-};
-
-
-// 0x1900A43C
-static const u8 act_name_21[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A458
-static const u8 act_name_22[] = {
- _("BAUE EINEN SCHNEEMANN!")
-};
-
-
-// 0x1900A470
-static const u8 act_name_23[] = {
- _("DENKE AN DEN WANDSPRUNG!")
-};
-
-
-// 0x1900A48C
-static const u8 act_name_24[] = {
- _("GEHE AUF GEISTERJAGD!")
-};
-
-
-// 0x1900A4A4
-static const u8 act_name_25[] = {
- _("BESUCHE BIG BOOS KARUSSEL!")
-};
-
-
-// 0x1900A4C0
-static const u8 act_name_26[] = {
- _("LÖSE DAS BÜCHEREI-RÄTSEL!")
-};
-
-
-// 0x1900A4DC
-static const u8 act_name_27[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A4F8
-static const u8 act_name_28[] = {
- _("KLETTERE AUF BIG BOOS BALKON!")
-};
-
-
-// 0x1900A518
-static const u8 act_name_29[] = {
- _("FINDE DAS AUGE IM GEHEIMRAUM!")
-};
-
-
-// 0x1900A538
-static const u8 act_name_30[] = {
- _("KLETTERE AUF NESSIS RÜCKEN!")
-};
-
-
-// 0x1900A554
-static const u8 act_name_31[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A570
-static const u8 act_name_32[] = {
- _("LAUFE AUF DEM GRUND DES SEES!")
-};
-
-
-// 0x1900A590
-static const u8 act_name_33[] = {
- _("DURCHSUCHE DAS NEBELLABYRINTH!")
-};
-
-
-// 0x1900A5B0
-static const u8 act_name_34[] = {
- _("SUCHE IM NEBEL DEN NOTAUSGANG!")
-};
-
-
-// 0x1900A5D0
-static const u8 act_name_35[] = {
- _("ACHTE AUF ROLLENDE FELSEN!")
-};
-
-
-// 0x1900A5EC
-static const u8 act_name_36[] = {
- _("WERFE BIG BULLY IN DIE LAVA!")
-};
-
-
-// 0x1900A60C
-static const u8 act_name_37[] = {
- _("WERFE DIE BULLIES IN DIE LAVA!")
-};
-
-
-// 0x1900A62C
-static const u8 act_name_38[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A648
-static const u8 act_name_39[] = {
- _("TANZE AUF DEM BAUMSTAMM!")
-};
-
-
-// 0x1900A664
-static const u8 act_name_40[] = {
- _("ERKUNDE DEN VULKAN!")
-};
-
-
-// 0x1900A678
-static const u8 act_name_41[] = {
- _("GEWINNE IM VULKAN AN HÖHE!")
-};
-
-
-// 0x1900A694
-static const u8 act_name_42[] = {
- _("FOLGE DEM RIESENGEIER!")
-};
-
-
-// 0x1900A6AC
-static const u8 act_name_43[] = {
- _("BRINGE LICHT IN DIE PYRAMIDE!")
-};
-
-
-// 0x1900A6CC
-static const u8 act_name_44[] = {
- _("BEGEBE DICH IN DIE PYRAMIDE!")
-};
-
-
-// 0x1900A6EC
-static const u8 act_name_45[] = {
- _("LANDE AUF ALLEN VIER SÄULEN!")
-};
-
-
-// 0x1900A70C
-static const u8 act_name_46[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A728
-static const u8 act_name_47[] = {
- _("LÖSE DAS PYRAMIDENPUZZLE!")
-};
-
-
-// 0x1900A744
-static const u8 act_name_48[] = {
- _("ENTERE BOWSERS U-BOOT!")
-};
-
-
-// 0x1900A75C
-static const u8 act_name_49[] = {
- _("ÖFFNE DIE TRUHEN!")
-};
-
-
-// 0x1900A770
-static const u8 act_name_50[] = {
- _("SPRINGE ZU DEN ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A790
-static const u8 act_name_51[] = {
- _("SCHWIMME DURCH DIE RINGE!")
-};
-
-
-// 0x1900A7AC
-static const u8 act_name_52[] = {
- _("FOLGE DEM FISCH!")
-};
-
-
-// 0x1900A7C0
-static const u8 act_name_53[] = {
- _("VEREINE DIE MÜTZEN!")
-};
-
-
-// 0x1900A7D4
-static const u8 act_name_54[] = {
- _("ERKLIMME DEN KOPF!")
-};
-
-
-// 0x1900A7E8
-static const u8 act_name_55[] = {
- _("SPIELE MIT BAD BULLY!")
-};
-
-
-// 0x1900A800
-static const u8 act_name_56[] = {
- _("WAGE DICH INS EIS!")
-};
-
-
-// 0x1900A814
-static const u8 act_name_57[] = {
- _("GEHE ZUM EISSEE!")
-};
-
-
-// 0x1900A828
-static const u8 act_name_58[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A844
-static const u8 act_name_59[] = {
- _("SCHAU IM IGLU NACH!")
-};
-
-
-// 0x1900A858
-static const u8 act_name_60[] = {
- _("FOLGE DEN BLAUEN PFEILEN!")
-};
-
-
-// 0x1900A874
-static const u8 act_name_61[] = {
- _("SUCHE NACH DER SPITZE DER STADT!")
-};
-
-
-// 0x1900A898
-static const u8 act_name_62[] = {
- _("ERFORSCHE DIE HÖHEN UND TIEFEN!")
-};
-
-
-// 0x1900A8B8
-static const u8 act_name_63[] = {
- _("BEEILE DICH - EXPRESSAUFZUG!")
-};
-
-
-// 0x1900A8D8
-static const u8 act_name_64[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A8F4
-static const u8 act_name_65[] = {
- _("BEACHTE DAS ZEITLIMIT!")
-};
-
-
-// 0x1900A90C
-static const u8 act_name_66[] = {
- _("ERKLIMME DEN BERG!")
-};
-
-
-// 0x1900A920
-static const u8 act_name_67[] = {
- _("ERKUNDE DEN AFFENKÄFIG!")
-};
-
-
-// 0x1900A938
-static const u8 act_name_68[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900A954
-static const u8 act_name_69[] = {
- _("ERFORSCHE DIE STEILWAND!")
-};
-
-
-// 0x1900A970
-static const u8 act_name_70[] = {
- _("HALTE AUSSCHAU AUF DER BRÜCKE!")
-};
-
-
-// 0x1900A990
-static const u8 act_name_71[] = {
- _("SUCHE DEN EINSAMEN PILZ!")
-};
-
-
-// 0x1900A9AC
-static const u8 act_name_72[] = {
- _("PFLÜCKE DIE SCHNAPP-PIRANHA!")
-};
-
-
-// 0x1900A9CC
-static const u8 act_name_73[] = {
- _("BEGIB DICH ZUR SPITZE DER INSEL!")
-};
-
-
-// 0x1900A9F0
-static const u8 act_name_74[] = {
- _("TRETE NOCH EINMAL GEGEN KOOPA AN!")
-};
-
-
-// 0x1900AA14
-static const u8 act_name_75[] = {
- _("LÖSE DIE 5 ITTY BITTY-RÄTSEL!")
-};
-
-
-// 0x1900AA34
-static const u8 act_name_76[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900AA50
-static const u8 act_name_77[] = {
- _("DREHE WIGGLER IM KREIS!")
-};
-
-
-// 0x1900AA68
-static const u8 act_name_78[] = {
- _("ROLLE DEN KÄFIG!")
-};
-
-
-// 0x1900AA7C
-static const u8 act_name_79[] = {
- _("ACHTE AUF DAS PENDEL!")
-};
-
-
-// 0x1900AA94
-static const u8 act_name_80[] = {
- _("LASS DIR DEN WEG ZEIGEN!")
-};
-
-
-// 0x1900AAB0
-static const u8 act_name_81[] = {
- _("STAMPFE MÄCHTIG AUF!")
-};
-
-
-// 0x1900AAC8
-static const u8 act_name_82[] = {
- _("SPRINGE AUF DEN SCHWEBEBALKEN!")
-};
-
-
-// 0x1900AAE8
-static const u8 act_name_83[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900AB04
-static const u8 act_name_84[] = {
- _("REISE AUF DEN REGENBÖGEN!")
-};
-
-
-// 0x1900AB20
-static const u8 act_name_85[] = {
- _("SUCHE DAS HAUS AM HIMMEL!")
-};
-
-
-// 0x1900AB3C
-static const u8 act_name_86[] = {
- _("FINDE DIE 8 ROTEN MÜNZEN!")
-};
-
-
-// 0x1900AB58
-static const u8 act_name_87[] = {
- _("LASS DICH VON DER BRISE TRAGEN!")
-};
-
-
-// 0x1900AB78
-static const u8 act_name_88[] = {
- _("ÜBERWINDE DIE MACHT DER DREIECKE!")
-};
-
-
-// 0x1900AB9C
-static const u8 act_name_89[] = {
- _("SCHAU DIR DEN REGENBOGEN AN!")
-};
-
-
-// 0x1900ABBC
-static const u8 act_name_90[] = {
- _("EIN GEHEIMER STERN DES SCHLOSSES!")
-};
-
-
-// 0x1900ABE0
-static const u8 act_name_91[] = {
- _("")
-};
-
-
-// 0x1900ABE4
-static const u8 act_name_92[] = {
- _("")
-};
-
-
-// 0x1900ABE8
-static const u8 act_name_93[] = {
- _("")
-};
-
-
-// 0x1900ABEC
-static const u8 act_name_94[] = {
- _("")
-};
-
-
-// 0x1900ABF0
-static const u8 act_name_95[] = {
- _("")
-};
-
-
-// 0x1900ABF4
-static const u8 act_name_96[] = {
- _("")
-};
-
-
-// act names table
-// 0x1900ABF8
-const u8 *const act_name_table_eu_de[] = {
- act_name_00, act_name_01, act_name_02, act_name_03,
- act_name_04, act_name_05, act_name_06, act_name_07,
- act_name_08, act_name_09, act_name_10, act_name_11,
- act_name_12, act_name_13, act_name_14, act_name_15,
- act_name_16, act_name_17, act_name_18, act_name_19,
- act_name_20, act_name_21, act_name_22, act_name_23,
- act_name_24, act_name_25, act_name_26, act_name_27,
- act_name_28, act_name_29, act_name_30, act_name_31,
- act_name_32, act_name_33, act_name_34, act_name_35,
- act_name_36, act_name_37, act_name_38, act_name_39,
- act_name_40, act_name_41, act_name_42, act_name_43,
- act_name_44, act_name_45, act_name_46, act_name_47,
- act_name_48, act_name_49, act_name_50, act_name_51,
- act_name_52, act_name_53, act_name_54, act_name_55,
- act_name_56, act_name_57, act_name_58, act_name_59,
- act_name_60, act_name_61, act_name_62, act_name_63,
- act_name_64, act_name_65, act_name_66, act_name_67,
- act_name_68, act_name_69, act_name_70, act_name_71,
- act_name_72, act_name_73, act_name_74, act_name_75,
- act_name_76, act_name_77, act_name_78, act_name_79,
- act_name_80, act_name_81, act_name_82, act_name_83,
- act_name_84, act_name_85, act_name_86, act_name_87,
- act_name_88, act_name_89, act_name_90, act_name_91,
- act_name_92, act_name_93, act_name_94, act_name_95,
- act_name_96, 0x0,
-};
-
diff --git a/text/eu/en/dialog.c.in b/text/eu/en/dialog.c.in
@@ -1,3314 +0,0 @@
-// dialogs (EU, English)
-// 0x19000000
-static const u8 Dialog000[] = {
- _("Wow! You're smack in the\n"
- "middle of the battlefield.\n"
- "You'll find the Power\n"
- "Stars that Bowser stole\n"
- "inside the painting\n"
- "worlds.\n"
- "First, talk to the\n"
- "Bob-omb Buddy. (Press [B]\n"
- "to talk.) He'll certainly\n"
- "help you out, and so will\n"
- "his friends in other\n"
- "areas.\n"
- "To read signs, stop, face\n"
- "them and press [B]. Press [A]\n"
- "or [B] to scroll ahead. You\n"
- "can talk to some other\n"
- "characters by facing them\n"
- "and pressing [B].")
-};
-
-
-// 0x19000174
-static const u8 Dialog001[] = {
- _("Watch out! If you wander\n"
- "around here, you're liable\n"
- "to be splattered by a\n"
- "water bomb!\n"
- "Those enemy Bob-ombs love\n"
- "to fight, and they're\n"
- "always finding ways to\n"
- "attack.\n"
- "This meadow has become\n"
- "a battlefield ever since\n"
- "the Big Bob-omb got his\n"
- "paws on the Power Star.\n"
- "Can you recover the Star\n"
- "for us? Cross the bridge\n"
- "and go left up the path\n"
- "to find the Big Bob-omb.\n"
- "Please come back to see\n"
- "me after you've retrieved\n"
- "the Power Star!")
-};
-
-
-// 0x19000308
-static const u8 Dialog002[] = {
- _("Hey, you! It's dangerous\n"
- "ahead, so listen up! Take\n"
- "my advice.\n"
- "\n"
- "Cross the two\n"
- "bridges ahead, then\n"
- "watch for falling\n"
- "water bombs.\n"
- "The Big Bob-omb at the\n"
- "top of the mountain is\n"
- "very powerful--don't let\n"
- "him grab you!\n"
- "We're Bob-omb Buddies,\n"
- "and we're on your side.\n"
- "You can talk to us\n"
- "whenever you'd like to!")
-};
-
-
-// 0x19000428
-static const u8 Dialog003[] = {
- _("Thank you, Mario! The Big\n"
- "Bob-omb is nothing but a\n"
- "big dud now! But the\n"
- "battle for the castle has\n"
- "just begun.\n"
- "Other enemies are holding\n"
- "the other Power Stars. If\n"
- "you recover more Stars,\n"
- "you can open new doors\n"
- "that lead to new worlds!\n"
- "My Bob-omb Buddies are\n"
- "waiting for you. Be sure\n"
- "to talk to them--they'll\n"
- "set up cannons for you.")
-};
-
-
-// 0x1900055C
-static const u8 Dialog004[] = {
- _("We're peace-loving\n"
- "Bob-ombs, so we don't use\n"
- "cannons.\n"
- "But if you'd like\n"
- "to blast off, we don't\n"
- "mind. Help yourself.\n"
- "We'll prepare all of the\n"
- "cannons in this course for\n"
- "you to use. Bon Voyage!")
-};
-
-
-// 0x19000614
-static const u8 Dialog005[] = {
- _("Hey, Mario! Is it true\n"
- "that you beat the Big\n"
- "Bob-omb? Cool!\n"
- "You must be strong. And\n"
- "pretty fast. So, how fast\n"
- "are you, anyway?\n"
- "Fast enough to beat me...\n"
- "Koopa the Quick? I don't\n"
- "think so. Just try me.\n"
- "How about a race to the\n"
- "mountaintop, where the\n"
- "Big Bob-omb was?\n"
- "Whaddya say? When I say\n"
- "『Go,』 let the race begin!\n"
- "\n"
- "Ready....\n"
- "\n"
- "//Go!////Don't Go")
-};
-
-
-// 0x19000760
-static const u8 Dialog006[] = {
- _("Hey!!! Don't try to cheat!\n"
- "You've gotta run\n"
- "the whole course.\n"
- "Later. Look me up when\n"
- "you want to race for\n"
- "real.")
-};
-
-
-// 0x190007CC
-static const u8 Dialog007[] = {
- _("Hufff...fff...pufff...\n"
- "Whoa! You...really...are...\n"
- "fast! A human blur!\n"
- "Here you go--you've won\n"
- "it, fair and square!")
-};
-
-
-// 0x1900083C
-static const u8 Dialog008[] = {
- _("BEWARE OF CHAIN CHOMP\n"
- "Extreme Danger!\n"
- "Get close and press [C]^\n"
- "for a better look.\n"
- "Scary, huh?\n"
- "See the Red Coin on top\n"
- "of the stake?\n"
- "\n"
- "When you collect eight of\n"
- "them, a Power Star will\n"
- "appear in the meadow\n"
- "across the bridge.")
-};
-
-
-// 0x19000910
-static const u8 Dialog009[] = {
- _("Long time, no see! Wow,\n"
- "have you gotten fast!\n"
- "Have you been training\n"
- "on the sly, or is it the\n"
- "power of the Stars?\n"
- "I've been feeling down\n"
- "about losing the last\n"
- "race. This is my home\n"
- "course--how about a\n"
- "rematch?\n"
- "The goal is in\n"
- "Windswept Valley.\n"
- "Ready?\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x19000A14
-static const u8 Dialog010[] = {
- _("You've stepped on the\n"
- "Wing Cap Switch. Wearing\n"
- "the Wing Cap, you can\n"
- "soar through the sky.\n"
- "Now Wing Caps will pop\n"
- "out of all the red blocks\n"
- "you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x19000AC4
-static const u8 Dialog011[] = {
- _("You've just stepped on\n"
- "the Metal Cap Switch!\n"
- "The Metal Cap makes\n"
- "Mario invincible.\n"
- "Now Metal Caps will\n"
- "pop out of all of the\n"
- "green blocks you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x19000B78
-static const u8 Dialog012[] = {
- _("You've just stepped on\n"
- "the Vanish Cap Switch.\n"
- "The Vanish Cap makes\n"
- "Mario disappear.\n"
- "Now Vanish Caps will pop\n"
- "from all of the blue\n"
- "blocks you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x19000C2C
-static const u8 Dialog013[] = {
- _("You've collected 100\n"
- "coins! Mario gains more\n"
- "power from the castle.\n"
- "Do you want to Save?\n"
- "//Yes////No")
-};
-
-
-// 0x19000C90
-static const u8 Dialog014[] = {
- _("Wow! Another Power Star!\n"
- "Mario gains more courage\n"
- "from the power of the\n"
- "castle.\n"
- "Do you want to Save?\n"
- "\n"
- "//You Bet//Not Now")
-};
-
-
-// 0x19000D04
-static const u8 Dialog015[] = {
- _("You can punch enemies to\n"
- "knock them down. Press [A]\n"
- "to jump, [B] to punch.\n"
- "Press [A] then [B] to Kick.\n"
- "To pick something up,\n"
- "press [B], too. To throw\n"
- "something you're holding,\n"
- "press [B] again.")
-};
-
-
-// 0x19000DB4
-static const u8 Dialog016[] = {
- _("Hop on the shiny shell and\n"
- "ride wherever you want to\n"
- "go! Shred those enemies!")
-};
-
-
-// 0x19000E00
-static const u8 Dialog017[] = {
- _("I'm the Big Bob-omb, lord\n"
- "of all blasting matter,\n"
- "king of ka-booms the\n"
- "world over!\n"
- "How dare you scale my\n"
- "mountain? By what right\n"
- "do you set foot on my\n"
- "imperial mountaintop?\n"
- "You may have eluded my\n"
- "guards, but you'll never\n"
- "escape my grasp...\n"
- "\n"
- "...and you'll never take\n"
- "away my Power Star. I\n"
- "hereby challenge you,\n"
- "Mario!\n"
- "If you want the Star I\n"
- "hold, you must prove\n"
- "yourself in battle.\n"
- "\n"
- "Can you pick me up from\n"
- "the back and hurl me to\n"
- "this royal turf? I think\n"
- "that you cannot!")
-};
-
-
-// 0x19000FBC
-static const u8 Dialog018[] = {
- _("I'm sleeping because...\n"
- "...I'm sleepy. I don't\n"
- "like being disturbed.\n"
- "Please walk quietly.")
-};
-
-
-// 0x19001018
-static const u8 Dialog019[] = {
- _("Shhh! Please walk\n"
- "quietly in the hallway!")
-};
-
-
-// 0x19001040
-static const u8 Dialog020[] = {
- _("Dear Mario:\n"
- "Please come to the\n"
- "castle. I've baked\n"
- "a cake for you.\n"
- "Yours truly--\n"
- "Princess Toadstool")
-};
-
-
-// 0x190010A0
-static const u8 Dialog021[] = {
- _("Welcome.\n"
- "No one's home!\n"
- "Now get lost\n"
- "and don't come back!\n"
- "Gwa ha ha!")
-};
-
-
-// 0x190010E8
-static const u8 Dialog022[] = {
- _("You need a key to open\n"
- "this door.")
-};
-
-
-// 0x1900110C
-static const u8 Dialog023[] = {
- _("This key doesn't fit!\n"
- "Maybe it's for the\n"
- "basement...")
-};
-
-
-// 0x19001140
-static const u8 Dialog024[] = {
- _("You need Star power to\n"
- "open this door. Recover a\n"
- "Power Star from an enemy\n"
- "inside one of the castle's\n"
- "paintings.")
-};
-
-
-// 0x190011B0
-static const u8 Dialog025[] = {
- _("It takes the power of\n"
- "3 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x190011F8
-static const u8 Dialog026[] = {
- _("It takes the power of\n"
- "8 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x19001240
-static const u8 Dialog027[] = {
- _("It takes the power of\n"
- "30 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x19001288
-static const u8 Dialog028[] = {
- _("It takes the power of\n"
- "50 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x190012D0
-static const u8 Dialog029[] = {
- _("To open the door that\n"
- "leads to the 『endless』\n"
- "stairs, you need 70\n"
- "Stars.\n"
- "Bwa ha ha!")
-};
-
-
-// 0x19001320
-static const u8 Dialog030[] = {
- _("Hello! The Lakitu Bros.,\n"
- "cutting in with a live\n"
- "update on Mario's\n"
- "progress. He's about to\n"
- "learn a technique for\n"
- "sneaking up on enemies.\n"
- "The trick is this: He has\n"
- "to walk very slowly in\n"
- "order to walk quietly.\n"
- "\n"
- "\n"
- "\n"
- "And wrapping up filming\n"
- "techniques reported on\n"
- "earlier, you can take a\n"
- "look around using [C]> and\n"
- "[C]<. Press [C]| to view the\n"
- "action from a distance.\n"
- "When you can't move the\n"
- "camera any farther, the\n"
- "buzzer will sound. This is\n"
- "the Lakitu Bros.,\n"
- "signing off.")
-};
-
-
-// 0x190014E0
-static const u8 Dialog031[] = {
- _("No way! You beat me...\n"
- "again!! And I just spent\n"
- "my entire savings on\n"
- "these new Koopa\n"
- "Mach 1 Sprint shoes!\n"
- "Here, I guess I have to\n"
- "hand over this Star to\n"
- "the winner of the race.\n"
- "Congrats, Mario!")
-};
-
-
-// 0x1900159C
-static const u8 Dialog032[] = {
- _("If you get the Wing Cap,\n"
- "you can fly! Put the cap\n"
- "on, then do a Triple\n"
- "Jump--jump three times\n"
- "in a row--to take off.\n"
- "You can fly even higher\n"
- "if you blast out of a\n"
- "cannon wearing the\n"
- "Wing Cap!\n"
- "\n"
- "Use the [C] Buttons to look\n"
- "around while flying, and\n"
- "press [Z] to land.")
-};
-
-
-// 0x19001694
-static const u8 Dialog033[] = {
- _("Ciao! You've reached\n"
- "Princess Toadstool's\n"
- "castle via a warp pipe.\n"
- "Using the controller is a\n"
- "piece of cake. Press [A] to\n"
- "jump and [B] to attack.\n"
- "Press [B] to read signs,\n"
- "too. Use the Control Stick\n"
- "in the center of the\n"
- "controller to move Mario\n"
- "around. Now, head for\n"
- "the castle.")
-};
-
-
-// 0x19001798
-static const u8 Dialog034[] = {
- _("Good afternoon. The\n"
- "Lakitu Bros., here,\n"
- "reporting live from just\n"
- "outside the Princess's\n"
- "castle.\n"
- "\n"
- "Mario has just arrived\n"
- "on the scene, and we'll\n"
- "be filming the action live\n"
- "as he enters the castle\n"
- "and pursues the missing\n"
- "Power Stars.\n"
- "As seasoned cameramen,\n"
- "we'll be shooting from the\n"
- "recommended angle, but\n"
- "you can change the\n"
- "camera angle by pressing\n"
- "the [C] Buttons.\n"
- "If we can't adjust the\n"
- "view any further, we'll\n"
- "buzz. To take a look at\n"
- "the surroundings, stop\n"
- "and press [C]^.\n"
- "\n"
- "Press [A] to resume play.\n"
- "Switch camera modes with\n"
- "the [R] Button. Signs along\n"
- "the way will review these\n"
- "instructions.\n"
- "\n"
- "For now, reporting live,\n"
- "this has been the\n"
- "Lakitu Bros.")
-};
-
-
-// 0x19001A00
-static const u8 Dialog035[] = {
- _("There are four camera, or\n"
- "『[C],』 Buttons. Press [C]^\n"
- "to look around using the\n"
- "Control Stick.\n"
- "\n"
- "You'll usually see Mario\n"
- "through Lakitu's camera.\n"
- "It is the camera\n"
- "recommended for normal\n"
- "play.\n"
- "You can change angles by\n"
- "pressing [C]>. If you press\n"
- "[R], the view switches to\n"
- "Mario's camera, which\n"
- "is directly behind him.\n"
- "Press [R] again to return\n"
- "to Lakitu's camera. Press\n"
- "[C]| to see Mario from\n"
- "afar, using either\n"
- "Lakitu's or Mario's view.")
-};
-
-
-// 0x19001BA0
-static const u8 Dialog036[] = {
- _("OBSERVATION PLATFORM\n"
- "Press [C]^ to take a look\n"
- "around. Don't miss\n"
- "anything!\n"
- "\n"
- "Press [R] to switch to\n"
- "Mario's camera. It\n"
- "always follows Mario.\n"
- "Press [R] again to switch\n"
- "to Lakitu's camera.\n"
- "Pause the game and\n"
- "switch the mode to 『fix』\n"
- "the camera in place while\n"
- "holding [R]. Give it a try!")
-};
-
-
-// 0x19001CB0
-static const u8 Dialog037[] = {
- _("I win! You lose!\n"
- "Ha ha ha ha!\n"
- "You're no slouch, but I'm\n"
- "a better sledder!\n"
- "Better luck next time!")
-};
-
-
-// 0x19001D14
-static const u8 Dialog038[] = {
- _("Reacting to the Star\n"
- "power, the door slowly\n"
- "opens.")
-};
-
-
-// 0x19001D44
-static const u8 Dialog039[] = {
- _("No visitors allowed,\n"
- "by decree of\n"
- "the Big Bob-omb\n"
- "\n"
- "I shall never surrender my\n"
- "Stars, for they hold the\n"
- "power of the castle in\n"
- "their glow.\n"
- "They were a gift from\n"
- "Bowser, the Koopa King\n"
- "himself, and they lie well\n"
- "hidden within my realm.\n"
- "Not a whisper of their\n"
- "whereabouts shall leave\n"
- "my lips. Oh, all right,\n"
- "perhaps one hint:\n"
- "Heed the Star names at\n"
- "the beginning of the\n"
- "course.\n"
- "//--The Big Bob-omb")
-};
-
-
-// 0x19001EBC
-static const u8 Dialog040[] = {
- _("Warning!\n"
- "Cold, Cold Crevasse\n"
- "Below!")
-};
-
-
-// 0x19001EE0
-static const u8 Dialog041[] = {
- _("I win! You lose!\n"
- "Ha ha ha!\n"
- "\n"
- "That's what you get for\n"
- "messin' with Koopa the\n"
- "Quick.\n"
- "Better luck next time!")
-};
-
-
-// 0x19001F48
-static const u8 Dialog042[] = {
- _("Caution! Narrow Bridge!\n"
- "Cross slowly!\n"
- "\n"
- "\n"
- "You can jump to the edge\n"
- "of the cliff and hang on,\n"
- "and you can climb off the\n"
- "edge if you move slowly.\n"
- "When you want to let go,\n"
- "either press [Z] or press\n"
- "the Control Stick in the\n"
- "direction of Mario's back.\n"
- "To climb up, press Up on\n"
- "the Control Stick. To\n"
- "scurry up quickly, press\n"
- "the [A] Button.")
-};
-
-
-// 0x1900207C
-static const u8 Dialog043[] = {
- _("If you jump and hold the\n"
- "[A] Button, you can hang on\n"
- "to some objects overhead.\n"
- "It's the same as grabbing\n"
- "a flying bird!")
-};
-
-
-// 0x190020EC
-static const u8 Dialog044[] = {
- _("Whooo's there? Whooo\n"
- "woke me up? It's still\n"
- "daylight--I should be\n"
- "sleeping!\n"
- "\n"
- "Hey, as long as I'm\n"
- "awake, why not take a\n"
- "short flight with me?\n"
- "Press and hold [A] to grab\n"
- "on. Release [A] to let go.\n"
- "I'll take you wherever\n"
- "you want to go, as long\n"
- "as my wings hold out.\n"
- "Watch my shadow, and\n"
- "grab on.")
-};
-
-
-// 0x19002208
-static const u8 Dialog045[] = {
- _("Whew! I'm just about\n"
- "flapped out. You should\n"
- "lay off the pasta, Mario!\n"
- "That's it for now. Press\n"
- "[A] to let go. Okay,\n"
- "bye byyyyyyeeee!")
-};
-
-
-// 0x1900228C
-static const u8 Dialog046[] = {
- _("You have to master three\n"
- "important jumping\n"
- "techniques.\n"
- "First try the Triple Jump.\n"
- "\n"
- "Run fast, then jump three\n"
- "times, one, two, three.\n"
- "If you time the jumps\n"
- "right, you'll hop, skip,\n"
- "then jump really high.\n"
- "Next, go for distance\n"
- "with the Long Jump. Run,\n"
- "press [Z] to crouch then [A]\n"
- "to jump really far.\n"
- "\n"
- "To do the Wall Kick, press\n"
- "[A] to jump at a wall, then\n"
- "jump again when you hit\n"
- "the wall.\n"
- "\n"
- "Got that? Triple Jump,\n"
- "Long Jump, Wall Kick.\n"
- "Practice, practice,\n"
- "practice. You don't stand\n"
- "a chance without them.")
-};
-
-
-// 0x19002464
-static const u8 Dialog047[] = {
- _("Hi! I'll prepare the\n"
- "cannon for you!")
-};
-
-
-// 0x19002488
-static const u8 Dialog048[] = {
- _("Snow Mountain Summit\n"
- "Watch for slippery\n"
- "conditions! Please enter\n"
- "the cottage first.")
-};
-
-
-// 0x190024DC
-static const u8 Dialog049[] = {
- _("Remember that tricky Wall\n"
- "Kick jump? It's a\n"
- "technique you'll have to\n"
- "master in order to reach\n"
- "high places.\n"
- "Use it to jump from wall\n"
- "to wall. Press the\n"
- "Control Stick in the\n"
- "direction you want to\n"
- "bounce to gain momentum.\n"
- "Practice makes perfect!")
-};
-
-
-// 0x190025C8
-static const u8 Dialog050[] = {
- _("Hold [Z] to crouch and\n"
- "slide down a slope.\n"
- "Or press [Z] while in the\n"
- "air to Pound the Ground!\n"
- "If you stop, crouch, then\n"
- "jump, you'll do a\n"
- "Backward Somersault!\n"
- "Got that?\n"
- "There's more. Crouch and\n"
- "then jump to do a\n"
- "Long Jump! Or crouch and\n"
- "walk to...never mind.")
-};
-
-
-// 0x190026BC
-static const u8 Dialog051[] = {
- _("Climbing's easy! When you\n"
- "jump at trees, poles or\n"
- "pillars, you'll grab them\n"
- "automatically. Press [A] to\n"
- "jump off backward.\n"
- "\n"
- "To rotate around the\n"
- "object, press Right or\n"
- "Left on the Control Stick.\n"
- "When you reach the top,\n"
- "press Up to do a\n"
- "handstand!\n"
- "Jump off from the\n"
- "handstand for a high,\n"
- "stylin' dismount.")
-};
-
-
-// 0x190027DC
-static const u8 Dialog052[] = {
- _("Stop and press [Z] to\n"
- "crouch, then press [A]\n"
- "to do a high, Backward\n"
- "Somersault!\n"
- "\n"
- "To perform a Side\n"
- "Somersault, run, do a\n"
- "sharp U-turn and jump.\n"
- "You can catch lots of\n"
- "air with both jumps.")
-};
-
-
-// 0x19002894
-static const u8 Dialog053[] = {
- _("Sometimes, if you pass\n"
- "through a coin ring or\n"
- "find a secret point in a\n"
- "course, a red number will\n"
- "appear.\n"
- "If you trigger five red\n"
- "numbers, a secret Star\n"
- "will show up.")
-};
-
-
-// 0x19002938
-static const u8 Dialog054[] = {
- _("Welcome to the snow\n"
- "slide! Hop on! To speed\n"
- "up, press forward on the\n"
- "Control Stick. To slow\n"
- "down, pull back.")
-};
-
-
-// 0x190029A4
-static const u8 Dialog055[] = {
- _("Hey-ey, Mario, buddy,\n"
- "howzit goin'? Step right\n"
- "up. You look like a fast\n"
- "sleddin' kind of guy.\n"
- "I know speed when I see\n"
- "it, yes siree--I'm the\n"
- "world champion sledder,\n"
- "you know. Whaddya say?\n"
- "How about a race?\n"
- "Ready...\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x19002A8C
-static const u8 Dialog056[] = {
- _("You brrrr-oke my record!\n"
- "Unbelievable! I knew\n"
- "that you were the coolest.\n"
- "Now you've proven\n"
- "that you're also the\n"
- "fastest!\n"
- "I can't award you a gold\n"
- "medal, but here, take this\n"
- "Star instead. You've\n"
- "earned it!")
-};
-
-
-// 0x19002B50
-static const u8 Dialog057[] = {
- _("Egad! My baby!! Have you\n"
- "seen my baby??? She's\n"
- "the most precious baby in\n"
- "the whole wide world.\n"
- "(They say she has my\n"
- "beak...) I just can't\n"
- "remember where I left\n"
- "her.\n"
- "Let's see...I stopped\n"
- "for herring and ice cubes,\n"
- "then I...oohh! I just\n"
- "don't know!")
-};
-
-
-// 0x19002C40
-static const u8 Dialog058[] = {
- _("You found my precious,\n"
- "precious baby! Where\n"
- "have you been? How can\n"
- "I ever thank you, Mario?\n"
- "Oh, I do have this...\n"
- "...Star. Here, take it\n"
- "with my eternal\n"
- "gratitude.")
-};
-
-
-// 0x19002CE0
-static const u8 Dialog059[] = {
- _("That's not my baby! She\n"
- "looks nothing like me!\n"
- "Her parents must be\n"
- "worried sick!")
-};
-
-
-// 0x19002D34
-static const u8 Dialog060[] = {
- _("ATTENTION!\n"
- "Read Before Diving In!\n"
- "\n"
- "\n"
- "If you stay under the\n"
- "water for too long, you'll\n"
- "run out of oxygen.\n"
- "\n"
- "Return to the surface for\n"
- "air or find an air bubble\n"
- "or coins to breathe while\n"
- "underwater.\n"
- "Press [A] to swim. Hold [A]\n"
- "to swim slow and steady.\n"
- "Tap [A] with smooth timing\n"
- "to gain speed.\n"
- "Press Up on the\n"
- "Control Stick and press [A]\n"
- "to dive.\n"
- "\n"
- "Press Down on the Control\n"
- "Stick and press [A] to\n"
- "return to the surface.\n"
- "\n"
- "Hold Down and press [A]\n"
- "while on the surface near\n"
- "the edge of the water to\n"
- "jump out.")
-};
-
-
-// 0x19002F08
-static const u8 Dialog061[] = {
- _("BRRR! Frostbite Danger!\n"
- "Do not swim here.\n"
- "I'm serious.\n"
- "/--The Penguin")
-};
-
-
-// 0x19002F50
-static const u8 Dialog062[] = {
- _("Hidden inside the green\n"
- "block is the amazing\n"
- "Metal Cap.\n"
- "Wearing it, you won't\n"
- "catch fire or be hurt\n"
- "by enemy attacks.\n"
- "You don't even have to\n"
- "breathe while wearing it.\n"
- "\n"
- "The only problem:\n"
- "Its too heavy to swim\n"
- "with.")
-};
-
-
-// 0x19003020
-static const u8 Dialog063[] = {
- _("The Vanish Cap is inside\n"
- "the blue block. Mr. I.\n"
- "will be surprised, since\n"
- "you'll be invisible when\n"
- "you wear it!\n"
- "Even the Big Boo will be\n"
- "fooled--and you can walk\n"
- "through secret walls, too.")
-};
-
-
-// 0x190030D4
-static const u8 Dialog064[] = {
- _("When you put on the Wing\n"
- "Cap that comes from a\n"
- "red block, do the Triple\n"
- "Jump to soar high into\n"
- "the sky.\n"
- "Use the Control Stick to\n"
- "guide Mario. Pull back to\n"
- "to fly up, press forward\n"
- "to nose down, and press [Z]\n"
- "to land.")
-};
-
-
-// 0x190031A4
-static const u8 Dialog065[] = {
- _("Swimming Lessons!\n"
- "Tap [A] to do the breast\n"
- "stroke. If you time the\n"
- "taps right, you'll swim\n"
- "fast.\n"
- "\n"
- "Press and hold [A] to do a\n"
- "slow, steady flutter kick.\n"
- "Press Up on the Control\n"
- "Stick to dive, and pull\n"
- "back on the stick to head\n"
- "for the surface.\n"
- "To jump out of the water,\n"
- "hold Down on the Control\n"
- "Stick, then press [A].\n"
- "Easy as pie, right?\n"
- "\n"
- "\n"
- "But remember:\n"
- "Mario can't breathe under\n"
- "the water! Return to the\n"
- "surface for air when the\n"
- "Power Meter runs low.\n"
- "\n"
- "And one last thing: You\n"
- "can't open doors that\n"
- "are underwater.")
-};
-
-
-// 0x19003384
-static const u8 Dialog066[] = {
- _("Mario, it's Peach!\n"
- "Please be careful! Bowser\n"
- "is so wicked! He will try\n"
- "to burn you with his\n"
- "horrible flame breath.\n"
- "Run around behind and\n"
- "grab him by the tail with\n"
- "the [B] Button. Once you\n"
- "grab hold, swing him\n"
- "around in great circles.\n"
- "Rotate the Control Stick\n"
- "to go faster and faster.\n"
- "The faster you swing him,\n"
- "the farther he'll fly.\n"
- "\n"
- "Use the [C] Buttons to look\n"
- "around, Mario. You have\n"
- "to throw Bowser into one\n"
- "of the bombs in the four\n"
- "corners.\n"
- "Aim well, then press [B]\n"
- "again to launch Bowser.\n"
- "Good luck, Mario! Our\n"
- "fate is in your hands.")
-};
-
-
-// 0x19003580
-static const u8 Dialog067[] = {
- _("Tough luck, Mario!\n"
- "Princess Toadstool isn't\n"
- "here...Gwa ha ha!! Go\n"
- "ahead--just try to grab\n"
- "me by the tail!\n"
- "You'll never be able to\n"
- "swing ME around! A wimp\n"
- "like you won't throw me\n"
- "out of here! Never! Ha!")
-};
-
-
-// 0x19003648
-static const u8 Dialog068[] = {
- _("It's Lethal Lava Land!\n"
- "If you catch fire or fall\n"
- "into a pool of flames,\n"
- "you'll be hopping mad, but\n"
- "don't lose your cool.\n"
- "You can still control\n"
- "Mario--just try to keep\n"
- "calm!")
-};
-
-
-// 0x190036F0
-static const u8 Dialog069[] = {
- _("Sometimes you'll bump into\n"
- "invisible walls at the\n"
- "edges of the painting\n"
- "worlds. If you hit a wall\n"
- "while flying, you'll bounce\n"
- "back.")
-};
-
-
-// 0x1900376C
-static const u8 Dialog070[] = {
- _("You can return to the\n"
- "castle's main hall at any\n"
- "time from the painting\n"
- "worlds where the enemies\n"
- "live.\n"
- "Just stop, stand still,\n"
- "press Start to pause the\n"
- "game, then select\n"
- "『Exit Course.』\n"
- "\n"
- "You don't have to collect\n"
- "all Power Stars in one\n"
- "course before going on to\n"
- "the next.\n"
- "\n"
- "Return later, when you're\n"
- "more experienced, to pick\n"
- "up difficult ones.\n"
- "\n"
- "\n"
- "Whenever you find a Star,\n"
- "a hint for finding the\n"
- "next one will appear on\n"
- "the course's start screen.\n"
- "\n"
- "You can, however, collect\n"
- "any of the remaining\n"
- "Stars next. You don't\n"
- "have to recover the one\n"
- "described by the hint.")
-};
-
-
-// 0x19003984
-static const u8 Dialog071[] = {
- _("Danger Ahead!\n"
- "Beware of the strange\n"
- "cloud! Don't inhale!\n"
- "If you feel faint, run for\n"
- "higher ground and fresh\n"
- "air!\n"
- "Circle: Shelter\n"
- "Arrow: Entrance-Exit")
-};
-
-
-// 0x19003A18
-static const u8 Dialog072[] = {
- _("High winds ahead!\n"
- "Pull your Cap down tight.\n"
- "If it blows off, you'll\n"
- "have to find it on this\n"
- "mountain.")
-};
-
-
-// 0x19003A7C
-static const u8 Dialog073[] = {
- _("Aarrgh! Ahoy, matey. I\n"
- "have sunken treasure,\n"
- "here, I do.\n"
- "\n"
- "But to pluck the plunder,\n"
- "you must open the\n"
- "Treasure Chests in the\n"
- "right order.\n"
- "What order is that,\n"
- "ye say?\n"
- "\n"
- "\n"
- "I'll never tell!\n"
- "\n"
- "//--The Cap'n")
-};
-
-
-// 0x19003B3C
-static const u8 Dialog074[] = {
- _("You can grab on to the\n"
- "edge of a cliff or ledge\n"
- "with your fingertips and\n"
- "hang down from it.\n"
- "\n"
- "To drop from the edge,\n"
- "either press the Control\n"
- "Stick in the direction of\n"
- "Mario's back or press the\n"
- "[Z] Button.\n"
- "To get up onto the ledge,\n"
- "either press Up on the\n"
- "Control Stick or press [A]\n"
- "as soon as you grab the\n"
- "ledge to climb up quickly.")
-};
-
-
-// 0x19003C6C
-static const u8 Dialog075[] = {
- _("Mario!! My castle is in\n"
- "great peril. I know that\n"
- "Bowser is the cause...and\n"
- "I know that only you can\n"
- "stop him!\n"
- "The doors in the castle\n"
- "that have been sealed by\n"
- "Bowser can be opened only\n"
- "with Star Power.\n"
- "\n"
- "But there are secret\n"
- "paths in the castle,\n"
- "paths that Bowser hasn't\n"
- "found.\n"
- "\n"
- "One of those paths is in\n"
- "this room, and it holds\n"
- "one of the castle's Secret\n"
- "Stars!\n"
- "\n"
- "Find that Secret Star,\n"
- "Mario! It will help you\n"
- "on your quest. Please,\n"
- "Mario, you have to\n"
- "help us!\n"
- "Retrieve all of the\n"
- "Power Stars in the castle\n"
- "and free us from this\n"
- "awful prison!\n"
- "Please!")
-};
-
-
-// 0x19003E7C
-static const u8 Dialog076[] = {
- _("Thanks to the power of\n"
- "the Stars, life is\n"
- "returning to the castle.\n"
- "Please, Mario, you have\n"
- "to give Bowser the boot!\n"
- "\n"
- "Here, let me tell you a\n"
- "little something about the\n"
- "castle. In the room with\n"
- "the mirrors, look carefully\n"
- "for anything that's not\n"
- "reflected in the mirror.\n"
- "And when you go to the\n"
- "water town, you can flood\n"
- "it with a high jump into\n"
- "the painting. Oh, by the\n"
- "way, look what I found!")
-};
-
-
-// 0x19003FE8
-static const u8 Dialog077[] = {
- _("It is decreed that one\n"
- "shall pound the pillars.")
-};
-
-
-// 0x19004018
-static const u8 Dialog078[] = {
- _("Break open the Blue Coin\n"
- "Block by Pounding the\n"
- "Ground with the [Z] Button.\n"
- "One Blue Coin is worth\n"
- "five Yellow Coins.\n"
- "But you have to hurry!\n"
- "The coins will disappear\n"
- "if you're not quick to\n"
- "collect them! Too bad.")
-};
-
-
-// 0x190040E0
-static const u8 Dialog079[] = {
- _("Owwwuu! Let me go!\n"
- "Uukee-kee! I was only\n"
- "teasing! Can't you take\n"
- "a joke?\n"
- "I'll tell you what, let's\n"
- "trade. If you let me go,\n"
- "I'll give you something\n"
- "really good.\n"
- "So, how about it?\n"
- "\n"
- "//Free him/ Hold on")
-};
-
-
-// 0x190041A0
-static const u8 Dialog080[] = {
- _("Eeeh hee hee hee!")
-};
-
-
-// 0x190041B4
-static const u8 Dialog081[] = {
- _("The mystery is of Wet\n"
- "or Dry.\n"
- "And where does the\n"
- "solution lie?\n"
- "The city welcomes visitors\n"
- "with the depth they bring\n"
- "as they enter.")
-};
-
-
-// 0x19004230
-static const u8 Dialog082[] = {
- _("Hold on to your hat! If\n"
- "you lose it, you'll be\n"
- "injured easily.\n"
- "\n"
- "If you do lose your Cap,\n"
- "you'll have to find it in\n"
- "the course where you\n"
- "lost it.\n"
- "Oh, boy, it's not looking\n"
- "good for Peach. She's\n"
- "still trapped somewhere\n"
- "inside the walls.\n"
- "Please, Mario, you have\n"
- "to help her! Did you know\n"
- "that there are enemy\n"
- "worlds inside the walls?\n"
- "Yup. It's true. Bowser's\n"
- "troops are there, too.\n"
- "Oh, here, take this. I've\n"
- "been keeping it for you.")
-};
-
-
-// 0x190043C0
-static const u8 Dialog083[] = {
- _("There's something strange\n"
- "about that clock. As you\n"
- "jump inside, watch the\n"
- "position of the big hand.\n"
- "Oh, look what I found!\n"
- "Here, Mario, catch!")
-};
-
-
-// 0x1900444C
-static const u8 Dialog084[] = {
- _("Yeeoww! Unhand me,\n"
- "brute! I'm late, so late,\n"
- "I must make haste!\n"
- "This shiny thing? Mine!\n"
- "It's mine. Finders,\n"
- "keepers, losers...\n"
- "Late, late, late...\n"
- "Ouch! Take it then! A\n"
- "gift from Bowser, it was.\n"
- "Now let me be! I have a\n"
- "date! I cannot be late\n"
- "for tea!")
-};
-
-
-// 0x19004548
-static const u8 Dialog085[] = {
- _("You don't stand a ghost\n"
- "of a chance in this house.\n"
- "If you walk out of here,\n"
- "you deserve...\n"
- "...a Ghoul Medal...")
-};
-
-
-// 0x190045B4
-static const u8 Dialog086[] = {
- _("Running around in circles\n"
- "makes some bad guys roll\n"
- "their eyes.")
-};
-
-
-// 0x190045F4
-static const u8 Dialog087[] = {
- _("Santa Claus isn't the only\n"
- "one who can go down a\n"
- "chimney! Come on in!\n"
- "/--Cabin Proprietor")
-};
-
-
-// 0x1900464C
-static const u8 Dialog088[] = {
- _("Work Elevator\n"
- "For those who get off\n"
- "here: Grab the pole to the\n"
- "left and slide carefully\n"
- "down.")
-};
-
-
-// 0x190046A8
-static const u8 Dialog089[] = {
- _("Both ways fraught with\n"
- "danger! Watch your feet!\n"
- "Those who can't do the\n"
- "Long Jump, tsk, tsk. Make\n"
- "your way to the right.\n"
- "Right: Work Elevator\n"
- "/// Cloudy Maze\n"
- "Left: Black Hole\n"
- "///Underground Lake\n"
- "\n"
- "Red Circle: Elevator 2\n"
- "//// Underground Lake\n"
- "Arrow: You are here")
-};
-
-
-// 0x190047A4
-static const u8 Dialog090[] = {
- _("Bwa ha ha ha!\n"
- "You've stepped right into\n"
- "my trap, just as I knew\n"
- "you would! I warn you,\n"
- "『Friend,』 watch your\n"
- "step!")
-};
-
-
-// 0x19004810
-static const u8 Dialog091[] = {
- _("Danger!\n"
- "Strong Gusts!\n"
- "But the wind makes a\n"
- "comfy ride.")
-};
-
-
-// 0x19004848
-static const u8 Dialog092[] = {
- _("Pestering me again, are\n"
- "you, Mario? Can't you see\n"
- "that I'm having a merry\n"
- "little time, making\n"
- "mischief with my minions?\n"
- "Now, return those Stars!\n"
- "My troops in the walls\n"
- "need them! Bwa ha ha!")
-};
-
-
-// 0x19004900
-static const u8 Dialog093[] = {
- _("Mario! You again! Well\n"
- "that's just fine--I've\n"
- "been looking for something\n"
- "to fry with my fire\n"
- "breath!\n"
- "Your Star Power is\n"
- "useless against me!\n"
- "Your friends are all\n"
- "trapped within the\n"
- "walls...\n"
- "And you'll never see the\n"
- "Princess again!\n"
- "Bwa ha ha ha!")
-};
-
-
-// 0x190049F0
-static const u8 Dialog094[] = {
- _("Get a good run up the\n"
- "slope! Do you remember\n"
- "the Long Jump? Run, press\n"
- "[Z], then jump!")
-};
-
-
-// 0x19004A40
-static const u8 Dialog095[] = {
- _("To read a sign, stand in\n"
- "front of it and press [B],\n"
- "like you did just now.\n"
- "\n"
- "When you want to talk to\n"
- "a Koopa Troopa or other\n"
- "animal, stand right in\n"
- "front of it.\n"
- "Please recover the Stars\n"
- "that were stolen by\n"
- "Bowser in this course.")
-};
-
-
-// 0x19004B1C
-static const u8 Dialog096[] = {
- _("The path is narrow here.\n"
- "Easy does it! No one is\n"
- "allowed on top of the\n"
- "mountain!\n"
- "And if you know what's\n"
- "good for you, you won't\n"
- "wake anyone who's\n"
- "sleeping!\n"
- "Move slowly,\n"
- "tread lightly.")
-};
-
-
-// 0x19004BCC
-static const u8 Dialog097[] = {
- _("Don't be a pushover!\n"
- "If anyone tries to shove\n"
- "you around, push back!\n"
- "It's one-on-one, with a\n"
- "fiery finish for the loser!")
-};
-
-
-// 0x19004C44
-static const u8 Dialog098[] = {
- _("Come on in here...\n"
- "...heh, heh, heh...")
-};
-
-
-// 0x19004C6C
-static const u8 Dialog099[] = {
- _("Eh he he...\n"
- "You're mine, now, hee hee!\n"
- "I'll pass right through\n"
- "this wall. Can you do\n"
- "that? Heh, heh, heh!")
-};
-
-
-// 0x19004CD4
-static const u8 Dialog100[] = {
- _("Ukkiki...Wakkiki...kee kee!\n"
- "Ha! I snagged it!\n"
- "It's mine! Heeheeheeee!")
-};
-
-
-// 0x19004D1C
-static const u8 Dialog101[] = {
- _("Ackk! Let...go...\n"
- "You're...choking...me...\n"
- "Cough...I've been framed!\n"
- "This Cap? Oh, all right,\n"
- "take it. It's a cool Cap,\n"
- "but I'll give it back.\n"
- "I think it looks better on\n"
- "me than it does on you,\n"
- "though! Eeeee! Kee keee!")
-};
-
-
-// 0x19004DF8
-static const u8 Dialog102[] = {
- _("Pssst! The Boos are super\n"
- "shy. If you look them\n"
- "in the eyes, they fade\n"
- "away, but if you turn\n"
- "your back, they reappear.\n"
- "It's no use trying to hit\n"
- "them when they're fading\n"
- "away. Instead, sneak up\n"
- "behind them and punch.")
-};
-
-
-// 0x19004EC0
-static const u8 Dialog103[] = {
- _("Upon four towers\n"
- "one must alight...\n"
- "Then at the peak\n"
- "shall shine the light...")
-};
-
-
-// 0x19004F0C
-static const u8 Dialog104[] = {
- _("The shadowy star in front\n"
- "of you is a 『Star\n"
- "Marker.』 When you collect\n"
- "all 8 Red Coins, the Star\n"
- "will appear here.")
-};
-
-
-// 0x19004F78
-static const u8 Dialog105[] = {
- _("Ready for blastoff! Come\n"
- "on, hop into the cannon!\n"
- "\n"
- "You can reach the Star on\n"
- "the floating island by\n"
- "using the four cannons.\n"
- "Use the Control Stick to\n"
- "aim, then press [A] to fire.\n"
- "\n"
- "If you're handy, you can\n"
- "grab on to trees or poles\n"
- "to land.")
-};
-
-
-// 0x19005058
-static const u8 Dialog106[] = {
- _("Ready for blastoff! Come\n"
- "on, hop into the cannon!")
-};
-
-
-// 0x19005088
-static const u8 Dialog107[] = {
- _("Ghosts...\n"
- "...don't...\n"
- "...DIE!\n"
- "Heh, heh, heh!\n"
- "Can you get out of here...\n"
- "...alive?")
-};
-
-
-// 0x190050D8
-static const u8 Dialog108[] = {
- _("Boooooo-m! Here comes\n"
- "the master of mischief,\n"
- "the tower of terror,\n"
- "the Big Boo!\n"
- "Ka ha ha ha...")
-};
-
-
-// 0x19005134
-static const u8 Dialog109[] = {
- _("Ooooo Nooooo!\n"
- "Talk about out-of-body\n"
- "experiences--my body\n"
- "has melted away!\n"
- "Have you run in to any\n"
- "headhunters lately??\n"
- "I could sure use a new\n"
- "body!\n"
- "Brrr! My face might\n"
- "freeze like this!")
-};
-
-
-// 0x190051EC
-static const u8 Dialog110[] = {
- _("I need a good head on my\n"
- "shoulders. Do you know of\n"
- "anybody in need of a good\n"
- "body? Please! I'll follow\n"
- "you if you do!")
-};
-
-
-// 0x1900525C
-static const u8 Dialog111[] = {
- _("Perfect! What a great\n"
- "new body! Here--this is a\n"
- "present for you. It's sure\n"
- "to warm you up.")
-};
-
-
-// 0x190052B4
-static const u8 Dialog112[] = {
- _("Collect as many coins as\n"
- "possible! They'll refill\n"
- "your Power Meter.\n"
- "\n"
- "You can check to see how\n"
- "many coins you've\n"
- "collected in each of the\n"
- "15 enemy worlds.\n"
- "You can also recover\n"
- "power by touching the\n"
- "Spinning Heart.\n"
- "\n"
- "The faster you run\n"
- "through the heart, the\n"
- "more power you'll recover.")
-};
-
-
-// 0x190053C0
-static const u8 Dialog113[] = {
- _("There are special Caps in\n"
- "the red, green and blue\n"
- "blocks. Step on the\n"
- "switches in the hidden\n"
- "courses to activate the\n"
- "Cap Blocks.")
-};
-
-
-// 0x1900543C
-static const u8 Dialog114[] = {
- _("It makes me so mad! We\n"
- "build your houses, your\n"
- "castles. We pave your\n"
- "roads, and still you\n"
- "walk all over us.\n"
- "Do you ever say thank\n"
- "you? No! Well, you're not\n"
- "going to wipe your feet\n"
- "on me! I think I'll crush\n"
- "you just for fun!\n"
- "Do you have a problem\n"
- "with that? Just try to\n"
- "pound me, wimp! Ha!")
-};
-
-
-// 0x1900554C
-static const u8 Dialog115[] = {
- _("No! Crushed again!\n"
- "I'm just a stepping stone,\n"
- "after all. I won't gravel,\n"
- "er, grovel. Here, you win.\n"
- "Take this with you!")
-};
-
-
-// 0x190055C0
-static const u8 Dialog116[] = {
- _("Whaaa....Whaaat?\n"
- "Can it be that a\n"
- "pipsqueak like you has\n"
- "defused the Bob-omb\n"
- "king????\n"
- "You might be fast enough\n"
- "to ground me, but you'll\n"
- "have to pick up the pace\n"
- "if you want to take King\n"
- "Bowser by the tail.\n"
- "Methinks my troops could\n"
- "learn a lesson from you!\n"
- "Here is your Star, as I\n"
- "promised, Mario.\n"
- "\n"
- "If you want to see me\n"
- "again, select this Star\n"
- "from the menu. For now,\n"
- "farewell.")
-};
-
-
-// 0x19005728
-static const u8 Dialog117[] = {
- _("Who...walk...here?\n"
- "Who...break...seal?\n"
- "Wake..ancient..ones?\n"
- "We no like light...\n"
- "Rrrrummbbble...\n"
- "We no like...intruders!\n"
- "Now battle...\n"
- "...hand...\n"
- "...to...\n"
- "...hand!")
-};
-
-
-// 0x190057CC
-static const u8 Dialog118[] = {
- _("Grrrrumbbble!\n"
- "What...happen?\n"
- "We...crushed like pebble.\n"
- "You so strong!\n"
- "You rule ancient pyramid!\n"
- "For today...\n"
- "Now, take Star of Power.\n"
- "We...sleep...darkness.")
-};
-
-
-// 0x1900586C
-static const u8 Dialog119[] = {
- _("Grrr! I was a bit\n"
- "careless. This is not as I\n"
- "had planned...but I still\n"
- "hold the power of the\n"
- "Stars, and I still have\n"
- "Peach.\n"
- "Bwa ha ha! You'll get no\n"
- "more Stars from me! I'm\n"
- "not finished with you yet,\n"
- "but I'll let you go for\n"
- "now. You'll pay for this...\n"
- "later!")
-};
-
-
-// 0x19005968
-static const u8 Dialog120[] = {
- _("Ooowaah! Can it be that\n"
- "I've lost??? The power of\n"
- "the Stars has failed me...\n"
- "this time.\n"
- "Consider this a draw.\n"
- "Next time, I'll be in\n"
- "perfect condition.\n"
- "\n"
- "Now, if you want to see\n"
- "your precious Princess,\n"
- "come to the top of the\n"
- "tower.\n"
- "I'll be waiting!\n"
- "Gwa ha ha ha!")
-};
-
-
-// 0x19005A64
-static const u8 Dialog121[] = {
- _("Nooo! It can't be!\n"
- "You've really beaten me,\n"
- "Mario?!! I gave those\n"
- "troops power, but now\n"
- "it's fading away!\n"
- "Arrgghh! I can see peace\n"
- "returning to the world! I\n"
- "can't stand it! Hmmm...\n"
- "It's not over yet...\n"
- "\n"
- "C'mon troops! Let's watch\n"
- "the ending together!\n"
- "Bwa ha ha!")
-};
-
-
-// 0x19005B64
-static const u8 Dialog122[] = {
- _("The Black Hole\n"
- "Right: Work Elevator\n"
- "/// Cloudy Maze\n"
- "Left: Underground Lake")
-};
-
-
-// 0x19005BB0
-static const u8 Dialog123[] = {
- _("Metal Cavern\n"
- "Right: To Waterfall\n"
- "Left: Metal Cap Switch")
-};
-
-
-// 0x19005BE8
-static const u8 Dialog124[] = {
- _("Work Elevator\n"
- "Danger!!\n"
- "Read instructions\n"
- "thoroughly!\n"
- "Elevator continues in the\n"
- "direction of the arrow\n"
- "activated.")
-};
-
-
-// 0x19005C58
-static const u8 Dialog125[] = {
- _("Hazy Maze-Exit\n"
- "Danger! Closed.\n"
- "Turn back now.")
-};
-
-
-// 0x19005C88
-static const u8 Dialog126[] = {
- _("Up: Black Hole\n"
- "Right: Work Elevator\n"
- "/// Hazy Maze")
-};
-
-
-// 0x19005CBC
-static const u8 Dialog127[] = {
- _("Underground Lake\n"
- "Right: Metal Cave\n"
- "Left: Abandoned Mine\n"
- "///(Closed)\n"
- "A gentle sea dragon lives\n"
- "here. Pound on his back to\n"
- "make him lower his head.\n"
- "Don't become his lunch.")
-};
-
-
-// 0x19005D68
-static const u8 Dialog128[] = {
- _("You must fight with\n"
- "honor! It is against the\n"
- "royal rules to throw the\n"
- "king out of the ring!")
-};
-
-
-// 0x19005DC0
-static const u8 Dialog129[] = {
- _("Welcome to the Vanish\n"
- "Cap Switch Course! All of\n"
- "the blue blocks you find\n"
- "will become solid once you\n"
- "step on the Cap Switch.\n"
- "You'll disappear when you\n"
- "put on the Vanish Cap, so\n"
- "you'll be able to elude\n"
- "enemies and walk through\n"
- "many things. Try it out!")
-};
-
-
-// 0x19005EAC
-static const u8 Dialog130[] = {
- _("Welcome to the Metal Cap\n"
- "Switch Course! Once you\n"
- "step on the Cap Switch,\n"
- "the green blocks will\n"
- "become solid.\n"
- "When you turn your body\n"
- "into metal with the Metal\n"
- "Cap, you can walk\n"
- "underwater! Try it!")
-};
-
-
-// 0x19005F64
-static const u8 Dialog131[] = {
- _("Welcome to the Wing Cap\n"
- "Course! Step on the red\n"
- "switch at the top of the\n"
- "tower, in the center of\n"
- "the rainbow ring.\n"
- "When you trigger the\n"
- "switch, all of the red\n"
- "blocks you find will\n"
- "become solid.\n"
- "\n"
- "Try out the Wing Cap! Do\n"
- "the Triple Jump to take\n"
- "off and press [Z] to land.\n"
- "\n"
- "\n"
- "Pull back on the Control\n"
- "Stick to go up and push\n"
- "forward to nose down,\n"
- "just as you would when\n"
- "flying an airplane.")
-};
-
-
-// 0x190060CC
-static const u8 Dialog132[] = {
- _("Whoa, Mario, pal, you\n"
- "aren't trying to cheat,\n"
- "are you? Shortcuts aren't\n"
- "allowed.\n"
- "Now, I know that you\n"
- "know better. You're\n"
- "disqualified! Next time,\n"
- "play fair!")
-};
-
-
-// 0x19006164
-static const u8 Dialog133[] = {
- _("Am I glad to see you! The\n"
- "Princess...and I...and,\n"
- "well, everybody...we're all\n"
- "trapped inside the castle\n"
- "walls.\n"
- "\n"
- "Bowser has stolen the\n"
- "castle's Stars, and he's\n"
- "using their power to\n"
- "create his own world in\n"
- "the paintings and walls.\n"
- "\n"
- "Please recover the Power\n"
- "Stars! As you find them,\n"
- "you can use their power\n"
- "to open the doors that\n"
- "Bowser has sealed.\n"
- "\n"
- "There are four rooms on\n"
- "the first floor. Start in\n"
- "the one with the painting\n"
- "of Bob-omb inside. It's\n"
- "the only room that Bowser\n"
- "hasn't sealed.\n"
- "When you collect eight\n"
- "Power Stars, you'll be\n"
- "able to open the door\n"
- "with the big star. The\n"
- "Princess must be inside!")
-};
-
-
-// 0x1900639C
-static const u8 Dialog134[] = {
- _("The names of the Stars\n"
- "are also hints for\n"
- "finding them. They are\n"
- "displayed at the beginning\n"
- "of each course.\n"
- "You can collect the Stars\n"
- "in any order. You won't\n"
- "find some Stars, enemies\n"
- "or items unless you select\n"
- "a specific Star.\n"
- "After you collect some\n"
- "Stars, you can try\n"
- "another course.\n"
- "We're all waiting for\n"
- "your help!")
-};
-
-
-// 0x190064C8
-static const u8 Dialog135[] = {
- _("It was Bowser who stole\n"
- "the Stars. I saw him with\n"
- "my own eyes!\n"
- "\n"
- "\n"
- "He's hidden six Stars in\n"
- "each course, but you\n"
- "won't find all of them in\n"
- "some courses until you\n"
- "press the Cap Switches.\n"
- "The Stars you've found\n"
- "will show on each course's\n"
- "starting screen.\n"
- "\n"
- "\n"
- "If you want to see some\n"
- "of the enemies you've\n"
- "already defeated, select\n"
- "the Stars you recovered\n"
- "from them.")
-};
-
-
-// 0x19006618
-static const u8 Dialog136[] = {
- _("Wow! You've already\n"
- "recovered that many\n"
- "Stars? Way to go, Mario!\n"
- "I'll bet you'll have us out\n"
- "of here in no time!\n"
- "\n"
- "Be careful, though.\n"
- "Bowser and his band\n"
- "wrote the book on 『bad.』\n"
- "Take my advice: When you\n"
- "need to recover from\n"
- "injuries, collect coins.\n"
- "Yellow Coins refill one\n"
- "piece of the Power Meter,\n"
- "Red Coins refill two\n"
- "pieces, and Blue Coins\n"
- "refill five.\n"
- "\n"
- "To make Blue Coins\n"
- "appear, pound on Blue\n"
- "Coin Blocks.\n"
- "\n"
- "\n"
- "\n"
- "Also, if you fall from\n"
- "high places, you'll\n"
- "minimize damage if you\n"
- "Pound the Ground as you\n"
- "land.")
-};
-
-
-// 0x19006808
-static const u8 Dialog137[] = {
- _("Thanks, Mario! The castle\n"
- "is recovering its energy\n"
- "as you retrieve Power\n"
- "Stars, and you've chased\n"
- "Bowser right out of here,\n"
- "on to some area ahead.\n"
- "Oh, by the by, are you\n"
- "collecting coins? Special\n"
- "Stars appear when you\n"
- "collect 100 coins in each\n"
- "of the 15 courses!")
-};
-
-
-// 0x19006904
-static const u8 Dialog138[] = {
- _("Down: Underground Lake\n"
- "Left: Black Hole\n"
- "Right: Hazy Maze (Closed)")
-};
-
-
-// 0x19006948
-static const u8 Dialog139[] = {
- _("Above: Automatic Elevator\n"
- "Elevator begins\n"
- "automatically and follows\n"
- "pre-set course.\n"
- "It disappears\n"
- "automatically, too.")
-};
-
-
-// 0x190069C0
-static const u8 Dialog140[] = {
- _("Elevator Area\n"
- "Right: Hazy Maze\n"
- "/// Entrance\n"
- "Left: Black Hole\n"
- "///Elevator 1\n"
- "Arrow: You are here")
-};
-
-
-// 0x19006A20
-static const u8 Dialog141[] = {
- _("You've recovered one of\n"
- "the stolen Power Stars!\n"
- "Now you can open some of\n"
- "the sealed doors in the\n"
- "castle.\n"
- "Try the Princess's room\n"
- "on the second floor and\n"
- "the room with the\n"
- "painting of Whomp's\n"
- "Fortress on Floor 1.\n"
- "Bowser's troops are still\n"
- "gaining power, so you\n"
- "can't give up. Save us,\n"
- "Mario! Keep searching for\n"
- "Stars!")
-};
-
-
-// 0x19006B4C
-static const u8 Dialog142[] = {
- _("You've recovered three\n"
- "Power Stars! Now you can\n"
- "open any door with a 3\n"
- "on its star.\n"
- "\n"
- "You can come and go from\n"
- "the open courses as you\n"
- "please. The enemies ahead\n"
- "are even meaner, so be\n"
- "careful!")
-};
-
-
-// 0x19006C08
-static const u8 Dialog143[] = {
- _("You've recovered eight of\n"
- "the Power Stars! Now you\n"
- "can open the door with\n"
- "the big Star! But Bowser\n"
- "is just ahead...can you\n"
- "hear the Princess calling?")
-};
-
-
-// 0x19006C94
-static const u8 Dialog144[] = {
- _("You've recovered 30\n"
- "Power Stars! Now you can\n"
- "open the door with the\n"
- "big Star! But before you\n"
- "move on, how's it going\n"
- "otherwise?\n"
- "Did you pound the two\n"
- "columns down? You didn't\n"
- "lose your hat, did you?\n"
- "If you did, you'll have to\n"
- "stomp on the condor to\n"
- "get it back!\n"
- "They say that Bowser has\n"
- "sneaked out of the sea\n"
- "and into the underground.\n"
- "Have you finally\n"
- "cornered him?")
-};
-
-
-// 0x19006DE8
-static const u8 Dialog145[] = {
- _("You've recovered 50\n"
- "Power Stars! Now you can\n"
- "open the Star Door on the\n"
- "third floor. Bowser's\n"
- "there, you know.\n"
- "\n"
- "Oh! You've found all of\n"
- "the Cap Switches, haven't\n"
- "you? Red, green and blue?\n"
- "The Caps you get from the\n"
- "colored blocks are really\n"
- "helpful.\n"
- "Hurry along, now. The\n"
- "third floor is just ahead.")
-};
-
-
-// 0x19006F00
-static const u8 Dialog146[] = {
- _("You've found 70 Power\n"
- "Stars! The mystery of the\n"
- "endless stairs is solved,\n"
- "thanks to you--and is\n"
- "Bowser ever upset! Now,\n"
- "on to the final bout!")
-};
-
-
-// 0x19006F88
-static const u8 Dialog147[] = {
- _("Are you using the Cap\n"
- "Blocks? You really should,\n"
- "you know.\n"
- "\n"
- "\n"
- "To make them solid so you\n"
- "can break them, you have\n"
- "to press the colored Cap\n"
- "Switches in the castle's\n"
- "hidden courses.\n"
- "You'll find the hidden\n"
- "courses only after\n"
- "regaining some of the\n"
- "Power Stars.\n"
- "\n"
- "The Cap Blocks are a big\n"
- "help! Red for the Wing\n"
- "Cap, green for the Metal\n"
- "Cap, blue for the Vanish\n"
- "Cap.")
-};
-
-
-// 0x190070D4
-static const u8 Dialog148[] = {
- _("Snowman Mountain ahead.\n"
- "Keep out! And don't try\n"
- "the Triple Jump over the\n"
- "ice block shooter.\n"
- "\n"
- "\n"
- "If you fall into the\n"
- "freezing pond, your power\n"
- "decreases quickly, and\n"
- "you won't recover\n"
- "automatically.\n"
- "//--The Snowman")
-};
-
-
-// 0x190071A0
-static const u8 Dialog149[] = {
- _("Welcome to\n"
- "Princess Toadstool's\n"
- "secret slide!\n"
- "There's a Star hidden\n"
- "here that Bowser couldn't\n"
- "find.\n"
- "When you slide, press\n"
- "forward to speed up,\n"
- "pull back to slow down.\n"
- "If you slide really\n"
- "fast, you'll win the Star!")
-};
-
-
-// 0x19007270
-static const u8 Dialog150[] = {
- _("Waaaa! You've flooded my\n"
- "house! Wh-why?? Look at\n"
- "this mess! What am I\n"
- "going to do now?\n"
- "\n"
- "The ceiling's ruined, the\n"
- "floor is soaked...what to\n"
- "do, what to do? Huff...\n"
- "huff...it makes me so...\n"
- "MAD!!!\n"
- "Everything's been going\n"
- "wrong ever since I got\n"
- "this Star...It's so shiny,\n"
- "but it makes me feel...\n"
- "strange...")
-};
-
-
-// 0x190073A0
-static const u8 Dialog151[] = {
- _("I can't take this\n"
- "anymore! First you get\n"
- "me all wet, then you\n"
- "stomp on me!\n"
- "Now I'm really, really,\n"
- "REALLY mad!\n"
- "Waaaaaaaaaaaaaaaaa!!!")
-};
-
-
-// 0x19007420
-static const u8 Dialog152[] = {
- _("Owwch! Uncle! Uncle!\n"
- "Okay, I give up. Take this\n"
- "Star!\n"
- "Whew! I feel better now.\n"
- "I don't really need it\n"
- "anymore, anyway--\n"
- "I can see the stars\n"
- "through my ceiling at\n"
- "night.\n"
- "They make me feel...\n"
- "...peaceful. Please, come\n"
- "back and visit anytime.")
-};
-
-
-// 0x19007510
-static const u8 Dialog153[] = {
- _("Hey! Who's there?\n"
- "What's climbing on me?\n"
- "Is it an ice ant?\n"
- "A snow flea?\n"
- "Whatever it is, it's\n"
- "bugging me! I think I'll\n"
- "blow it away!")
-};
-
-
-// 0x19007594
-static const u8 Dialog154[] = {
- _("Hold on to your hat! If\n"
- "you lose it, you'll be\n"
- "easily injured. If you\n"
- "lose it, look for it in the\n"
- "course where you lost it.\n"
- "Speaking of lost, the\n"
- "Princess is still stuck in\n"
- "the walls somewhere.\n"
- "Please help, Mario!\n"
- "\n"
- "Oh, you know that there\n"
- "are secret worlds in the\n"
- "walls as well as in the\n"
- "paintings, right?")
-};
-
-
-// 0x190076B0
-static const u8 Dialog155[] = {
- _("Thanks to the power of\n"
- "the Stars, life is\n"
- "returning to the castle.\n"
- "Please, Mario, you have\n"
- "to give Bowser the boot!\n"
- "\n"
- "Here, let me tell you a\n"
- "little something about the\n"
- "castle. In the room with\n"
- "the mirrors, look carefully\n"
- "for anything that's not\n"
- "reflected in the mirror.\n"
- "And when you go to the\n"
- "water town, you can flood\n"
- "it with a high jump into\n"
- "the painting.")
-};
-
-
-// 0x190077FC
-static const u8 Dialog156[] = {
- _("The world inside the\n"
- "clock is so strange!\n"
- "When you jump inside,\n"
- "watch the position of\n"
- "the big hand!")
-};
-
-
-// 0x19007858
-static const u8 Dialog157[] = {
- _("Watch out! Don't let\n"
- "yourself be swallowed by\n"
- "quicksand.\n"
- "\n"
- "\n"
- "If you sink into the sand,\n"
- "you won't be able to\n"
- "jump, and if your head\n"
- "goes under, you'll be\n"
- "smothered.\n"
- "The dark areas are\n"
- "bottomless pits.")
-};
-
-
-// 0x19007914
-static const u8 Dialog158[] = {
- _("1. If you jump repeatedly\n"
- "and time it right, you'll\n"
- "jump higher and higher.\n"
- "If you run really fast and\n"
- "time three jumps right,\n"
- "you can do a Triple Jump.\n"
- "2. Jump into a solid wall,\n"
- "then jump again when you\n"
- "hit the wall. You can\n"
- "bounce to a higher level\n"
- "using this Wall Kick.")
-};
-
-
-// 0x19007A18
-static const u8 Dialog159[] = {
- _("3. If you stop, press [Z]\n"
- "to crouch, then jump, you\n"
- "can perform a Backward\n"
- "Somersault. To do a Long\n"
- "Jump, run fast, press [Z],\n"
- "then jump.")
-};
-
-
-// 0x19007A98
-static const u8 Dialog160[] = {
- _("Press [B] while running\n"
- "fast to do a Body Slide\n"
- "attack. To stand while\n"
- "sliding, press [A] or [B].")
-};
-
-
-// 0x19007AF4
-static const u8 Dialog161[] = {
- _("Mario!!!\n"
- "It that really you???\n"
- "It has been so long since\n"
- "our last adventure!\n"
- "They told me that I might\n"
- "see you if I waited here,\n"
- "but I'd just about given\n"
- "up hope!\n"
- "Is it true? Have you\n"
- "really beaten Bowser? And\n"
- "restored the Stars to the\n"
- "castle?\n"
- "And saved the Princess?\n"
- "I knew you could do it!\n"
- "Now I have a very special\n"
- "message for you.\n"
- "『Thanks for playing Super\n"
- "Mario 64! This is the\n"
- "end of the game, but not\n"
- "the end of the fun...』\n"
- "\n"
- "The Super Mario 64 Team")
-};
-
-
-// 0x19007CA4
-static const u8 Dialog162[] = {
- _("No, no, no! Not you\n"
- "again! I'm in a great\n"
- "hurry, can't you see?\n"
- "\n"
- "I've no time to squabble\n"
- "over Stars. Here, have it.\n"
- "I never meant to hide it\n"
- "from you...\n"
- "It's just that I'm in such\n"
- "a rush. That's it, that's\n"
- "all. Now, I must be off.\n"
- "Owww! Let me go!")
-};
-
-
-// 0x19007D98
-static const u8 Dialog163[] = {
- _("Noooo! You've really\n"
- "beaten me this time,\n"
- "Mario! I can't stand\n"
- "losing to you!\n"
- "\n"
- "My troops...worthless!\n"
- "They've turned over all\n"
- "the Power Stars! What?!\n"
- "There are 120 in all???\n"
- "\n"
- "Amazing! There were some\n"
- "in the castle that I\n"
- "missed??!!\n"
- "\n"
- "\n"
- "Now I see peace\n"
- "returning to the world...\n"
- "Oooo! I really hate that!\n"
- "I can't watch--\n"
- "I'm outta here!\n"
- "Just you wait until next\n"
- "time. Until then, keep\n"
- "that Control Stick\n"
- "smokin'!\n"
- "Buwaa ha ha!")
-};
-
-
-// 0x19007F34
-static const u8 Dialog164[] = {
- _("Mario! What's up, pal?\n"
- "I haven't been on the\n"
- "slide lately, so I'm out\n"
- "of shape.\n"
- "Still, I'm always up for a\n"
- "good race, especially\n"
- "against an old sleddin'\n"
- "buddy.\n"
- "Whaddya say?\n"
- "Ready...set...\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x19008004
-static const u8 Dialog165[] = {
- _("I take no responsibility\n"
- "whatsoever for those who\n"
- "get dizzy and pass out\n"
- "from running around\n"
- "this post.")
-};
-
-
-// 0x1900806C
-static const u8 Dialog166[] = {
- _("I'll be back soon.\n"
- "I'm out training now,\n"
- "so come back later.\n"
- "//--Koopa the Quick")
-};
-
-
-// 0x190080BC
-static const u8 Dialog167[] = {
- _("Princess Toadstool's\n"
- "castle is just ahead.\n"
- "\n"
- "\n"
- "Press [A] to jump, [Z] to\n"
- "crouch, and [B] to punch,\n"
- "read a sign, or grab\n"
- "something.\n"
- "Press [B] again to throw\n"
- "something you're holding.")
-};
-
-
-// 0x19008168
-static const u8 Dialog168[] = {
- _("Hey! Knock it off! That's\n"
- "the second time you've\n"
- "nailed me. Now you're\n"
- "asking for it, linguine\n"
- "breath!")
-};
-
-
-// 0x190081CC
-static const u8 Dialog169[] = {
- _("Keep out!\n"
- "That means you!\n"
- "Arrgghh!\n"
- "\n"
- "Anyone entering this cave\n"
- "without permission will\n"
- "meet certain disaster.")
-};
-
-
-// dialog entry table 0x19008238
-static const struct DialogEntry dialog_text_000 = {
- 1, 6, 30, 200, Dialog000
-};
-
-static const struct DialogEntry dialog_text_001 = {
- 1, 4, 95, 200, Dialog001
-};
-
-static const struct DialogEntry dialog_text_002 = {
- 1, 4, 95, 200, Dialog002
-};
-
-static const struct DialogEntry dialog_text_003 = {
- 1, 5, 95, 200, Dialog003
-};
-
-static const struct DialogEntry dialog_text_004 = {
- 1, 3, 95, 200, Dialog004
-};
-
-static const struct DialogEntry dialog_text_005 = {
- 1, 3, 30, 200, Dialog005
-};
-
-static const struct DialogEntry dialog_text_006 = {
- 1, 3, 30, 200, Dialog006
-};
-
-static const struct DialogEntry dialog_text_007 = {
- 1, 5, 30, 200, Dialog007
-};
-
-static const struct DialogEntry dialog_text_008 = {
- 1, 4, 30, 200, Dialog008
-};
-
-static const struct DialogEntry dialog_text_009 = {
- 1, 5, 30, 200, Dialog009
-};
-
-static const struct DialogEntry dialog_text_010 = {
- 1, 4, 30, 200, Dialog010
-};
-
-static const struct DialogEntry dialog_text_011 = {
- 1, 4, 30, 200, Dialog011
-};
-
-static const struct DialogEntry dialog_text_012 = {
- 1, 4, 30, 200, Dialog012
-};
-
-static const struct DialogEntry dialog_text_013 = {
- 1, 5, 30, 200, Dialog013
-};
-
-static const struct DialogEntry dialog_text_014 = {
- 1, 4, 30, 200, Dialog014
-};
-
-static const struct DialogEntry dialog_text_015 = {
- 1, 4, 30, 200, Dialog015
-};
-
-static const struct DialogEntry dialog_text_016 = {
- 1, 3, 30, 200, Dialog016
-};
-
-static const struct DialogEntry dialog_text_017 = {
- 1, 4, 30, 200, Dialog017
-};
-
-static const struct DialogEntry dialog_text_018 = {
- 1, 4, 30, 200, Dialog018
-};
-
-static const struct DialogEntry dialog_text_019 = {
- 1, 2, 30, 200, Dialog019
-};
-
-static const struct DialogEntry dialog_text_020 = {
- 1, 6, 95, 150, Dialog020
-};
-
-static const struct DialogEntry dialog_text_021 = {
- 1, 5, 95, 200, Dialog021
-};
-
-static const struct DialogEntry dialog_text_022 = {
- 1, 2, 95, 200, Dialog022
-};
-
-static const struct DialogEntry dialog_text_023 = {
- 1, 3, 95, 200, Dialog023
-};
-
-static const struct DialogEntry dialog_text_024 = {
- 1, 5, 95, 200, Dialog024
-};
-
-static const struct DialogEntry dialog_text_025 = {
- 1, 4, 95, 200, Dialog025
-};
-
-static const struct DialogEntry dialog_text_026 = {
- 1, 4, 95, 200, Dialog026
-};
-
-static const struct DialogEntry dialog_text_027 = {
- 1, 4, 95, 200, Dialog027
-};
-
-static const struct DialogEntry dialog_text_028 = {
- 1, 4, 95, 200, Dialog028
-};
-
-static const struct DialogEntry dialog_text_029 = {
- 1, 5, 95, 200, Dialog029
-};
-
-static const struct DialogEntry dialog_text_030 = {
- 1, 6, 30, 200, Dialog030
-};
-
-static const struct DialogEntry dialog_text_031 = {
- 1, 5, 30, 200, Dialog031
-};
-
-static const struct DialogEntry dialog_text_032 = {
- 1, 5, 30, 200, Dialog032
-};
-
-static const struct DialogEntry dialog_text_033 = {
- 1, 6, 30, 200, Dialog033
-};
-
-static const struct DialogEntry dialog_text_034 = {
- 1, 6, 30, 200, Dialog034
-};
-
-static const struct DialogEntry dialog_text_035 = {
- 1, 5, 30, 200, Dialog035
-};
-
-static const struct DialogEntry dialog_text_036 = {
- 1, 5, 30, 200, Dialog036
-};
-
-static const struct DialogEntry dialog_text_037 = {
- 1, 2, 30, 200, Dialog037
-};
-
-static const struct DialogEntry dialog_text_038 = {
- 1, 3, 95, 200, Dialog038
-};
-
-static const struct DialogEntry dialog_text_039 = {
- 1, 4, 30, 200, Dialog039
-};
-
-static const struct DialogEntry dialog_text_040 = {
- 1, 3, 30, 200, Dialog040
-};
-
-static const struct DialogEntry dialog_text_041 = {
- 1, 3, 30, 200, Dialog041
-};
-
-static const struct DialogEntry dialog_text_042 = {
- 1, 4, 30, 200, Dialog042
-};
-
-static const struct DialogEntry dialog_text_043 = {
- 1, 5, 30, 200, Dialog043
-};
-
-static const struct DialogEntry dialog_text_044 = {
- 1, 5, 95, 200, Dialog044
-};
-
-static const struct DialogEntry dialog_text_045 = {
- 1, 6, 95, 200, Dialog045
-};
-
-static const struct DialogEntry dialog_text_046 = {
- 1, 5, 30, 200, Dialog046
-};
-
-static const struct DialogEntry dialog_text_047 = {
- 1, 2, 95, 200, Dialog047
-};
-
-static const struct DialogEntry dialog_text_048 = {
- 1, 4, 30, 200, Dialog048
-};
-
-static const struct DialogEntry dialog_text_049 = {
- 1, 5, 30, 200, Dialog049
-};
-
-static const struct DialogEntry dialog_text_050 = {
- 1, 4, 30, 200, Dialog050
-};
-
-static const struct DialogEntry dialog_text_051 = {
- 1, 6, 30, 200, Dialog051
-};
-
-static const struct DialogEntry dialog_text_052 = {
- 1, 5, 30, 200, Dialog052
-};
-
-static const struct DialogEntry dialog_text_053 = {
- 1, 5, 30, 200, Dialog053
-};
-
-static const struct DialogEntry dialog_text_054 = {
- 1, 5, 30, 200, Dialog054
-};
-
-static const struct DialogEntry dialog_text_055 = {
- 1, 4, 30, 200, Dialog055
-};
-
-static const struct DialogEntry dialog_text_056 = {
- 1, 6, 30, 200, Dialog056
-};
-
-static const struct DialogEntry dialog_text_057 = {
- 1, 4, 30, 200, Dialog057
-};
-
-static const struct DialogEntry dialog_text_058 = {
- 1, 4, 30, 200, Dialog058
-};
-
-static const struct DialogEntry dialog_text_059 = {
- 1, 4, 30, 200, Dialog059
-};
-
-static const struct DialogEntry dialog_text_060 = {
- 1, 4, 30, 200, Dialog060
-};
-
-static const struct DialogEntry dialog_text_061 = {
- 1, 4, 30, 200, Dialog061
-};
-
-static const struct DialogEntry dialog_text_062 = {
- 1, 3, 30, 200, Dialog062
-};
-
-static const struct DialogEntry dialog_text_063 = {
- 1, 5, 30, 200, Dialog063
-};
-
-static const struct DialogEntry dialog_text_064 = {
- 1, 5, 30, 200, Dialog064
-};
-
-static const struct DialogEntry dialog_text_065 = {
- 1, 6, 30, 200, Dialog065
-};
-
-static const struct DialogEntry dialog_text_066 = {
- 1, 5, 30, 200, Dialog066
-};
-
-static const struct DialogEntry dialog_text_067 = {
- 1, 5, 30, 200, Dialog067
-};
-
-static const struct DialogEntry dialog_text_068 = {
- 1, 5, 30, 200, Dialog068
-};
-
-static const struct DialogEntry dialog_text_069 = {
- 1, 6, 30, 200, Dialog069
-};
-
-static const struct DialogEntry dialog_text_070 = {
- 1, 5, 30, 200, Dialog070
-};
-
-static const struct DialogEntry dialog_text_071 = {
- 1, 3, 30, 200, Dialog071
-};
-
-static const struct DialogEntry dialog_text_072 = {
- 1, 5, 30, 200, Dialog072
-};
-
-static const struct DialogEntry dialog_text_073 = {
- 1, 4, 95, 200, Dialog073
-};
-
-static const struct DialogEntry dialog_text_074 = {
- 1, 5, 30, 200, Dialog074
-};
-
-static const struct DialogEntry dialog_text_075 = {
- 1, 5, 30, 200, Dialog075
-};
-
-static const struct DialogEntry dialog_text_076 = {
- 1, 6, 30, 200, Dialog076
-};
-
-static const struct DialogEntry dialog_text_077 = {
- 1, 2, 150, 200, Dialog077
-};
-
-static const struct DialogEntry dialog_text_078 = {
- 1, 5, 30, 200, Dialog078
-};
-
-static const struct DialogEntry dialog_text_079 = {
- 1, 4, 30, 200, Dialog079
-};
-
-static const struct DialogEntry dialog_text_080 = {
- 1, 1, 30, 200, Dialog080
-};
-
-static const struct DialogEntry dialog_text_081 = {
- 1, 4, 30, 200, Dialog081
-};
-
-static const struct DialogEntry dialog_text_082 = {
- 1, 4, 30, 200, Dialog082
-};
-
-static const struct DialogEntry dialog_text_083 = {
- 1, 6, 30, 200, Dialog083
-};
-
-static const struct DialogEntry dialog_text_084 = {
- 1, 3, 30, 200, Dialog084
-};
-
-static const struct DialogEntry dialog_text_085 = {
- 1, 5, 30, 200, Dialog085
-};
-
-static const struct DialogEntry dialog_text_086 = {
- 1, 3, 30, 200, Dialog086
-};
-
-static const struct DialogEntry dialog_text_087 = {
- 1, 4, 30, 200, Dialog087
-};
-
-static const struct DialogEntry dialog_text_088 = {
- 1, 5, 30, 200, Dialog088
-};
-
-static const struct DialogEntry dialog_text_089 = {
- 1, 5, 95, 200, Dialog089
-};
-
-static const struct DialogEntry dialog_text_090 = {
- 1, 6, 30, 200, Dialog090
-};
-
-static const struct DialogEntry dialog_text_091 = {
- 2, 2, 30, 200, Dialog091
-};
-
-static const struct DialogEntry dialog_text_092 = {
- 1, 5, 30, 200, Dialog092
-};
-
-static const struct DialogEntry dialog_text_093 = {
- 1, 5, 30, 200, Dialog093
-};
-
-static const struct DialogEntry dialog_text_094 = {
- 1, 4, 30, 200, Dialog094
-};
-
-static const struct DialogEntry dialog_text_095 = {
- 1, 4, 30, 200, Dialog095
-};
-
-static const struct DialogEntry dialog_text_096 = {
- 1, 4, 30, 200, Dialog096
-};
-
-static const struct DialogEntry dialog_text_097 = {
- 1, 5, 30, 200, Dialog097
-};
-
-static const struct DialogEntry dialog_text_098 = {
- 1, 2, 95, 200, Dialog098
-};
-
-static const struct DialogEntry dialog_text_099 = {
- 1, 5, 95, 200, Dialog099
-};
-
-static const struct DialogEntry dialog_text_100 = {
- 1, 3, 95, 200, Dialog100
-};
-
-static const struct DialogEntry dialog_text_101 = {
- 1, 3, 95, 200, Dialog101
-};
-
-static const struct DialogEntry dialog_text_102 = {
- 1, 5, 30, 200, Dialog102
-};
-
-static const struct DialogEntry dialog_text_103 = {
- 1, 4, 95, 200, Dialog103
-};
-
-static const struct DialogEntry dialog_text_104 = {
- 1, 5, 30, 200, Dialog104
-};
-
-static const struct DialogEntry dialog_text_105 = {
- 1, 3, 95, 200, Dialog105
-};
-
-static const struct DialogEntry dialog_text_106 = {
- 1, 2, 95, 200, Dialog106
-};
-
-static const struct DialogEntry dialog_text_107 = {
- 1, 3, 95, 200, Dialog107
-};
-
-static const struct DialogEntry dialog_text_108 = {
- 1, 2, 95, 200, Dialog108
-};
-
-static const struct DialogEntry dialog_text_109 = {
- 1, 4, 95, 200, Dialog109
-};
-
-static const struct DialogEntry dialog_text_110 = {
- 1, 5, 95, 200, Dialog110
-};
-
-static const struct DialogEntry dialog_text_111 = {
- 1, 4, 95, 200, Dialog111
-};
-
-static const struct DialogEntry dialog_text_112 = {
- 1, 4, 30, 200, Dialog112
-};
-
-static const struct DialogEntry dialog_text_113 = {
- 1, 6, 30, 200, Dialog113
-};
-
-static const struct DialogEntry dialog_text_114 = {
- 1, 5, 95, 200, Dialog114
-};
-
-static const struct DialogEntry dialog_text_115 = {
- 1, 5, 95, 200, Dialog115
-};
-
-static const struct DialogEntry dialog_text_116 = {
- 1, 5, 95, 200, Dialog116
-};
-
-static const struct DialogEntry dialog_text_117 = {
- 1, 1, 95, 200, Dialog117
-};
-
-static const struct DialogEntry dialog_text_118 = {
- 1, 6, 95, 200, Dialog118
-};
-
-static const struct DialogEntry dialog_text_119 = {
- 1, 6, 30, 200, Dialog119
-};
-
-static const struct DialogEntry dialog_text_120 = {
- 1, 4, 30, 200, Dialog120
-};
-
-static const struct DialogEntry dialog_text_121 = {
- 1, 5, 30, 200, Dialog121
-};
-
-static const struct DialogEntry dialog_text_122 = {
- 1, 4, 30, 200, Dialog122
-};
-
-static const struct DialogEntry dialog_text_123 = {
- 1, 4, 30, 200, Dialog123
-};
-
-static const struct DialogEntry dialog_text_124 = {
- 1, 4, 30, 200, Dialog124
-};
-
-static const struct DialogEntry dialog_text_125 = {
- 1, 3, 30, 200, Dialog125
-};
-
-static const struct DialogEntry dialog_text_126 = {
- 2, 3, 30, 200, Dialog126
-};
-
-static const struct DialogEntry dialog_text_127 = {
- 3, 4, 30, 200, Dialog127
-};
-
-static const struct DialogEntry dialog_text_128 = {
- 1, 4, 95, 200, Dialog128
-};
-
-static const struct DialogEntry dialog_text_129 = {
- 1, 5, 30, 200, Dialog129
-};
-
-static const struct DialogEntry dialog_text_130 = {
- 1, 5, 30, 200, Dialog130
-};
-
-static const struct DialogEntry dialog_text_131 = {
- 1, 5, 30, 200, Dialog131
-};
-
-static const struct DialogEntry dialog_text_132 = {
- 1, 4, 30, 200, Dialog132
-};
-
-static const struct DialogEntry dialog_text_133 = {
- 1, 6, 30, 200, Dialog133
-};
-
-static const struct DialogEntry dialog_text_134 = {
- 1, 5, 30, 200, Dialog134
-};
-
-static const struct DialogEntry dialog_text_135 = {
- 1, 5, 30, 200, Dialog135
-};
-
-static const struct DialogEntry dialog_text_136 = {
- 1, 6, 30, 200, Dialog136
-};
-
-static const struct DialogEntry dialog_text_137 = {
- 1, 6, 30, 200, Dialog137
-};
-
-static const struct DialogEntry dialog_text_138 = {
- 1, 3, 30, 200, Dialog138
-};
-
-static const struct DialogEntry dialog_text_139 = {
- 1, 6, 30, 200, Dialog139
-};
-
-static const struct DialogEntry dialog_text_140 = {
- 1, 6, 30, 200, Dialog140
-};
-
-static const struct DialogEntry dialog_text_141 = {
- 1, 5, 150, 200, Dialog141
-};
-
-static const struct DialogEntry dialog_text_142 = {
- 1, 5, 150, 200, Dialog142
-};
-
-static const struct DialogEntry dialog_text_143 = {
- 1, 6, 150, 200, Dialog143
-};
-
-static const struct DialogEntry dialog_text_144 = {
- 1, 6, 150, 200, Dialog144
-};
-
-static const struct DialogEntry dialog_text_145 = {
- 1, 6, 150, 200, Dialog145
-};
-
-static const struct DialogEntry dialog_text_146 = {
- 1, 6, 150, 200, Dialog146
-};
-
-static const struct DialogEntry dialog_text_147 = {
- 1, 5, 30, 200, Dialog147
-};
-
-static const struct DialogEntry dialog_text_148 = {
- 1, 6, 30, 200, Dialog148
-};
-
-static const struct DialogEntry dialog_text_149 = {
- 1, 3, 30, 200, Dialog149
-};
-
-static const struct DialogEntry dialog_text_150 = {
- 1, 5, 30, 200, Dialog150
-};
-
-static const struct DialogEntry dialog_text_151 = {
- 1, 4, 30, 200, Dialog151
-};
-
-static const struct DialogEntry dialog_text_152 = {
- 1, 3, 30, 200, Dialog152
-};
-
-static const struct DialogEntry dialog_text_153 = {
- 1, 4, 30, 200, Dialog153
-};
-
-static const struct DialogEntry dialog_text_154 = {
- 1, 5, 30, 200, Dialog154
-};
-
-static const struct DialogEntry dialog_text_155 = {
- 1, 6, 30, 200, Dialog155
-};
-
-static const struct DialogEntry dialog_text_156 = {
- 1, 5, 30, 200, Dialog156
-};
-
-static const struct DialogEntry dialog_text_157 = {
- 1, 5, 30, 200, Dialog157
-};
-
-static const struct DialogEntry dialog_text_158 = {
- 1, 6, 30, 200, Dialog158
-};
-
-static const struct DialogEntry dialog_text_159 = {
- 1, 6, 30, 200, Dialog159
-};
-
-static const struct DialogEntry dialog_text_160 = {
- 1, 4, 30, 200, Dialog160
-};
-
-static const struct DialogEntry dialog_text_161 = {
- 1, 4, 30, 200, Dialog161
-};
-
-static const struct DialogEntry dialog_text_162 = {
- 1, 4, 30, 200, Dialog162
-};
-
-static const struct DialogEntry dialog_text_163 = {
- 1, 5, 30, 200, Dialog163
-};
-
-static const struct DialogEntry dialog_text_164 = {
- 1, 4, 30, 200, Dialog164
-};
-
-static const struct DialogEntry dialog_text_165 = {
- 1, 5, 30, 200, Dialog165
-};
-
-static const struct DialogEntry dialog_text_166 = {
- 1, 4, 30, 200, Dialog166
-};
-
-static const struct DialogEntry dialog_text_167 = {
- 1, 4, 30, 200, Dialog167
-};
-
-static const struct DialogEntry dialog_text_168 = {
- 1, 5, 30, 200, Dialog168
-};
-
-static const struct DialogEntry dialog_text_169 = {
- 1, 4, 30, 200, Dialog169
-};
-
-
-// dialog table
-// 0x19008CD8
-const struct DialogEntry *const dialog_table_eu_en[] = {
- &dialog_text_000, &dialog_text_001, &dialog_text_002, &dialog_text_003,
- &dialog_text_004, &dialog_text_005, &dialog_text_006, &dialog_text_007,
- &dialog_text_008, &dialog_text_009, &dialog_text_010, &dialog_text_011,
- &dialog_text_012, &dialog_text_013, &dialog_text_014, &dialog_text_015,
- &dialog_text_016, &dialog_text_017, &dialog_text_018, &dialog_text_019,
- &dialog_text_020, &dialog_text_021, &dialog_text_022, &dialog_text_023,
- &dialog_text_024, &dialog_text_025, &dialog_text_026, &dialog_text_027,
- &dialog_text_028, &dialog_text_029, &dialog_text_030, &dialog_text_031,
- &dialog_text_032, &dialog_text_033, &dialog_text_034, &dialog_text_035,
- &dialog_text_036, &dialog_text_037, &dialog_text_038, &dialog_text_039,
- &dialog_text_040, &dialog_text_041, &dialog_text_042, &dialog_text_043,
- &dialog_text_044, &dialog_text_045, &dialog_text_046, &dialog_text_047,
- &dialog_text_048, &dialog_text_049, &dialog_text_050, &dialog_text_051,
- &dialog_text_052, &dialog_text_053, &dialog_text_054, &dialog_text_055,
- &dialog_text_056, &dialog_text_057, &dialog_text_058, &dialog_text_059,
- &dialog_text_060, &dialog_text_061, &dialog_text_062, &dialog_text_063,
- &dialog_text_064, &dialog_text_065, &dialog_text_066, &dialog_text_067,
- &dialog_text_068, &dialog_text_069, &dialog_text_070, &dialog_text_071,
- &dialog_text_072, &dialog_text_073, &dialog_text_074, &dialog_text_075,
- &dialog_text_076, &dialog_text_077, &dialog_text_078, &dialog_text_079,
- &dialog_text_080, &dialog_text_081, &dialog_text_082, &dialog_text_083,
- &dialog_text_084, &dialog_text_085, &dialog_text_086, &dialog_text_087,
- &dialog_text_088, &dialog_text_089, &dialog_text_090, &dialog_text_091,
- &dialog_text_092, &dialog_text_093, &dialog_text_094, &dialog_text_095,
- &dialog_text_096, &dialog_text_097, &dialog_text_098, &dialog_text_099,
- &dialog_text_100, &dialog_text_101, &dialog_text_102, &dialog_text_103,
- &dialog_text_104, &dialog_text_105, &dialog_text_106, &dialog_text_107,
- &dialog_text_108, &dialog_text_109, &dialog_text_110, &dialog_text_111,
- &dialog_text_112, &dialog_text_113, &dialog_text_114, &dialog_text_115,
- &dialog_text_116, &dialog_text_117, &dialog_text_118, &dialog_text_119,
- &dialog_text_120, &dialog_text_121, &dialog_text_122, &dialog_text_123,
- &dialog_text_124, &dialog_text_125, &dialog_text_126, &dialog_text_127,
- &dialog_text_128, &dialog_text_129, &dialog_text_130, &dialog_text_131,
- &dialog_text_132, &dialog_text_133, &dialog_text_134, &dialog_text_135,
- &dialog_text_136, &dialog_text_137, &dialog_text_138, &dialog_text_139,
- &dialog_text_140, &dialog_text_141, &dialog_text_142, &dialog_text_143,
- &dialog_text_144, &dialog_text_145, &dialog_text_146, &dialog_text_147,
- &dialog_text_148, &dialog_text_149, &dialog_text_150, &dialog_text_151,
- &dialog_text_152, &dialog_text_153, &dialog_text_154, &dialog_text_155,
- &dialog_text_156, &dialog_text_157, &dialog_text_158, &dialog_text_159,
- &dialog_text_160, &dialog_text_161, &dialog_text_162, &dialog_text_163,
- &dialog_text_164, &dialog_text_165, &dialog_text_166, &dialog_text_167,
- &dialog_text_168, &dialog_text_169, NULL,
-};
-
diff --git a/text/eu/en/level.c.in b/text/eu/en/level.c.in
@@ -1,169 +0,0 @@
-// level names (EU, English)
-// 0x19008F84
-static const u8 level_name_01[] = {
- _(" 1 BOB-OMB BATTLEFIELD")
-};
-
-
-// 0x19008F9C
-static const u8 level_name_02[] = {
- _(" 2 WHOMP'S FORTRESS")
-};
-
-
-// 0x19008FB0
-static const u8 level_name_03[] = {
- _(" 3 JOLLY ROGER BAY")
-};
-
-
-// 0x19008FC4
-static const u8 level_name_04[] = {
- _(" 4 COOL, COOL MOUNTAIN")
-};
-
-
-// 0x19008FDC
-static const u8 level_name_05[] = {
- _(" 5 BIG BOO'S HAUNT")
-};
-
-
-// 0x19008FF0
-static const u8 level_name_06[] = {
- _(" 6 HAZY MAZE CAVE")
-};
-
-
-// 0x19009004
-static const u8 level_name_07[] = {
- _(" 7 LETHAL LAVA LAND")
-};
-
-
-// 0x19009018
-static const u8 level_name_08[] = {
- _(" 8 SHIFTING SAND LAND")
-};
-
-
-// 0x19009030
-static const u8 level_name_09[] = {
- _(" 9 DIRE, DIRE DOCKS")
-};
-
-
-// 0x19009044
-static const u8 level_name_10[] = {
- _("10 SNOWMAN'S LAND")
-};
-
-
-// 0x19009058
-static const u8 level_name_11[] = {
- _("11 WET-DRY WORLD")
-};
-
-
-// 0x1900906C
-static const u8 level_name_12[] = {
- _("12 TALL, TALL MOUNTAIN")
-};
-
-
-// 0x19009084
-static const u8 level_name_13[] = {
- _("13 TINY-HUGE ISLAND")
-};
-
-
-// 0x19009098
-static const u8 level_name_14[] = {
- _("14 TICK TOCK CLOCK")
-};
-
-
-// 0x190090AC
-static const u8 level_name_15[] = {
- _("15 RAINBOW RIDE")
-};
-
-
-// 0x190090BC
-static const u8 level_name_16[] = {
- _(" BOWSER IN THE DARK WORLD")
-};
-
-
-// 0x190090D8
-static const u8 level_name_17[] = {
- _(" BOWSER IN THE FIRE SEA")
-};
-
-
-// 0x190090F4
-static const u8 level_name_18[] = {
- _(" BOWSER IN THE SKY")
-};
-
-
-// 0x1900910C
-static const u8 level_name_19[] = {
- _(" THE PRINCESS'S SECRET SLIDE")
-};
-
-
-// 0x1900912C
-static const u8 level_name_20[] = {
- _(" CAVERN OF THE METAL CAP")
-};
-
-
-// 0x19009148
-static const u8 level_name_21[] = {
- _(" TOWER OF THE WING CAP")
-};
-
-
-// 0x19009164
-static const u8 level_name_22[] = {
- _(" VANISH CAP UNDER THE MOAT")
-};
-
-
-// 0x19009184
-static const u8 level_name_23[] = {
- _(" WING MARIO OVER THE RAINBOW")
-};
-
-
-// 0x190091A4
-static const u8 level_name_24[] = {
- _(" THE SECRET AQUARIUM")
-};
-
-
-// 0x190091BC
-static const u8 level_name_25[] = {
- _("")
-};
-
-
-// 0x190091C0
-static const u8 level_name_castle_secret_stars[] = {
- _(" CASTLE SECRET STARS")
-};
-
-
-// level name table
-// 0x190091D8
-const u8 *const level_name_table_eu_en[] = {
- level_name_01, level_name_02, level_name_03, level_name_04,
- level_name_05, level_name_06, level_name_07, level_name_08,
- level_name_09, level_name_10, level_name_11, level_name_12,
- level_name_13, level_name_14, level_name_15, level_name_16,
- level_name_17, level_name_18, level_name_19, level_name_20,
- level_name_21, level_name_22, level_name_23, level_name_24,
- level_name_25, level_name_castle_secret_stars, 0x0,
-};
-
diff --git a/text/eu/en/star.c.in b/text/eu/en/star.c.in
@@ -1,613 +0,0 @@
-// act names (EU, English)
-// 0x19009244
-static const u8 act_name_00[] = {
- _("BIG BOB-OMB ON THE SUMMIT")
-};
-
-
-// 0x19009260
-static const u8 act_name_01[] = {
- _("FOOTRACE WITH KOOPA THE QUICK")
-};
-
-
-// 0x19009280
-static const u8 act_name_02[] = {
- _("SHOOT TO THE ISLAND IN THE SKY")
-};
-
-
-// 0x190092A0
-static const u8 act_name_03[] = {
- _("FIND THE 8 RED COINS")
-};
-
-
-// 0x190092B8
-static const u8 act_name_04[] = {
- _("MARIO WINGS TO THE SKY")
-};
-
-
-// 0x190092D0
-static const u8 act_name_05[] = {
- _("BEHIND CHAIN CHOMP'S GATE")
-};
-
-
-// 0x190092EC
-static const u8 act_name_06[] = {
- _("CHIP OFF WHOMP'S BLOCK")
-};
-
-
-// 0x19009304
-static const u8 act_name_07[] = {
- _("TO THE TOP OF THE FORTRESS")
-};
-
-
-// 0x19009320
-static const u8 act_name_08[] = {
- _("SHOOT INTO THE WILD BLUE")
-};
-
-
-// 0x1900933C
-static const u8 act_name_09[] = {
- _("RED COINS ON THE FLOATING ISLE")
-};
-
-
-// 0x1900935C
-static const u8 act_name_10[] = {
- _("FALL ONTO THE CAGED ISLAND")
-};
-
-
-// 0x19009378
-static const u8 act_name_11[] = {
- _("BLAST AWAY THE WALL")
-};
-
-
-// 0x1900938C
-static const u8 act_name_12[] = {
- _("PLUNDER IN THE SUNKEN SHIP")
-};
-
-
-// 0x190093A8
-static const u8 act_name_13[] = {
- _("CAN THE EEL COME OUT TO PLAY?")
-};
-
-
-// 0x190093C8
-static const u8 act_name_14[] = {
- _("TREASURE OF THE OCEAN CAVE")
-};
-
-
-// 0x190093E4
-static const u8 act_name_15[] = {
- _("RED COINS ON THE SHIP AFLOAT")
-};
-
-
-// 0x19009404
-static const u8 act_name_16[] = {
- _("BLAST TO THE STONE PILLAR")
-};
-
-
-// 0x19009420
-static const u8 act_name_17[] = {
- _("THROUGH THE JET STREAM")
-};
-
-
-// 0x19009438
-static const u8 act_name_18[] = {
- _("SLIP SLIDIN' AWAY")
-};
-
-
-// 0x1900944C
-static const u8 act_name_19[] = {
- _("LI'L PENGUIN LOST")
-};
-
-
-// 0x19009460
-static const u8 act_name_20[] = {
- _("BIG PENGUIN RACE")
-};
-
-
-// 0x19009474
-static const u8 act_name_21[] = {
- _("FROSTY SLIDE FOR 8 RED COINS")
-};
-
-
-// 0x19009494
-static const u8 act_name_22[] = {
- _("SNOWMAN'S LOST HIS HEAD")
-};
-
-
-// 0x190094AC
-static const u8 act_name_23[] = {
- _("WALL KICKS WILL WORK")
-};
-
-
-// 0x190094C4
-static const u8 act_name_24[] = {
- _("GO ON A GHOST HUNT")
-};
-
-
-// 0x190094D8
-static const u8 act_name_25[] = {
- _("RIDE BIG BOO'S MERRY-GO-ROUND")
-};
-
-
-// 0x190094F8
-static const u8 act_name_26[] = {
- _("SECRET OF THE HAUNTED BOOKS")
-};
-
-
-// 0x19009514
-static const u8 act_name_27[] = {
- _("SEEK THE 8 RED COINS")
-};
-
-
-// 0x1900952C
-static const u8 act_name_28[] = {
- _("BIG BOO'S BALCONY")
-};
-
-
-// 0x19009540
-static const u8 act_name_29[] = {
- _("EYE TO EYE IN THE SECRET ROOM")
-};
-
-
-// 0x19009560
-static const u8 act_name_30[] = {
- _("SWIMMING BEAST IN THE CAVERN")
-};
-
-
-// 0x19009580
-static const u8 act_name_31[] = {
- _("ELEVATE FOR 8 RED COINS")
-};
-
-
-// 0x19009598
-static const u8 act_name_32[] = {
- _("METAL-HEAD MARIO CAN MOVE!")
-};
-
-
-// 0x190095B4
-static const u8 act_name_33[] = {
- _("NAVIGATING THE TOXIC MAZE")
-};
-
-
-// 0x190095D0
-static const u8 act_name_34[] = {
- _("A-MAZE-ING EMERGENCY EXIT")
-};
-
-
-// 0x190095EC
-static const u8 act_name_35[] = {
- _("WATCH FOR ROLLING ROCKS")
-};
-
-
-// 0x19009604
-static const u8 act_name_36[] = {
- _("BOIL THE BIG BULLY")
-};
-
-
-// 0x19009618
-static const u8 act_name_37[] = {
- _("BULLY THE BULLIES")
-};
-
-
-// 0x1900962C
-static const u8 act_name_38[] = {
- _("8-COIN PUZZLE WITH 15 PIECES")
-};
-
-
-// 0x1900964C
-static const u8 act_name_39[] = {
- _("RED-HOT LOG ROLLING")
-};
-
-
-// 0x19009660
-static const u8 act_name_40[] = {
- _("HOT-FOOT-IT INTO THE VOLCANO")
-};
-
-
-// 0x19009680
-static const u8 act_name_41[] = {
- _("ELEVATOR TOUR IN THE VOLCANO")
-};
-
-
-// 0x190096A0
-static const u8 act_name_42[] = {
- _("IN THE TALONS OF THE BIG BIRD")
-};
-
-
-// 0x190096C0
-static const u8 act_name_43[] = {
- _("SHINING ATOP THE PYRAMID")
-};
-
-
-// 0x190096DC
-static const u8 act_name_44[] = {
- _("INSIDE THE ANCIENT PYRAMID")
-};
-
-
-// 0x190096F8
-static const u8 act_name_45[] = {
- _("STAND TALL ON THE FOUR PILLARS")
-};
-
-
-// 0x19009718
-static const u8 act_name_46[] = {
- _("FREE FLYING FOR 8 RED COINS")
-};
-
-
-// 0x19009734
-static const u8 act_name_47[] = {
- _("PYRAMID PUZZLE")
-};
-
-
-// 0x19009744
-static const u8 act_name_48[] = {
- _("BOARD BOWSER'S SUB")
-};
-
-
-// 0x19009758
-static const u8 act_name_49[] = {
- _("CHESTS IN THE CURRENT")
-};
-
-
-// 0x19009770
-static const u8 act_name_50[] = {
- _("POLE-JUMPING FOR RED COINS")
-};
-
-
-// 0x1900978C
-static const u8 act_name_51[] = {
- _("THROUGH THE JET STREAM")
-};
-
-
-// 0x190097A4
-static const u8 act_name_52[] = {
- _("THE MANTA RAY'S REWARD")
-};
-
-
-// 0x190097BC
-static const u8 act_name_53[] = {
- _("COLLECT THE CAPS...")
-};
-
-
-// 0x190097D0
-static const u8 act_name_54[] = {
- _("SNOWMAN'S BIG HEAD")
-};
-
-
-// 0x190097E4
-static const u8 act_name_55[] = {
- _("CHILL WITH THE BULLY")
-};
-
-
-// 0x190097FC
-static const u8 act_name_56[] = {
- _("IN THE DEEP FREEZE")
-};
-
-
-// 0x19009810
-static const u8 act_name_57[] = {
- _("WHIRL FROM THE FREEZING POND")
-};
-
-
-// 0x19009830
-static const u8 act_name_58[] = {
- _("SHELL SHREDDIN' FOR RED COINS")
-};
-
-
-// 0x19009850
-static const u8 act_name_59[] = {
- _("INTO THE IGLOO")
-};
-
-
-// 0x19009860
-static const u8 act_name_60[] = {
- _("SHOCKING ARROW LIFTS!")
-};
-
-
-// 0x19009878
-static const u8 act_name_61[] = {
- _("TOP O' THE TOWN")
-};
-
-
-// 0x19009888
-static const u8 act_name_62[] = {
- _("SECRETS IN THE SHALLOWS & SKY")
-};
-
-
-// 0x190098A8
-static const u8 act_name_63[] = {
- _("EXPRESS ELEVATOR--HURRY UP!")
-};
-
-
-// 0x190098C4
-static const u8 act_name_64[] = {
- _("GO TO TOWN FOR RED COINS")
-};
-
-
-// 0x190098E0
-static const u8 act_name_65[] = {
- _("QUICK RACE THROUGH DOWNTOWN!")
-};
-
-
-// 0x19009900
-static const u8 act_name_66[] = {
- _("SCALE THE MOUNTAIN")
-};
-
-
-// 0x19009914
-static const u8 act_name_67[] = {
- _("MYSTERY OF THE MONKEY CAGE")
-};
-
-
-// 0x19009930
-static const u8 act_name_68[] = {
- _("SCARY 'SHROOMS, RED COINS")
-};
-
-
-// 0x1900994C
-static const u8 act_name_69[] = {
- _("MYSTERIOUS MOUNTAINSIDE")
-};
-
-
-// 0x19009964
-static const u8 act_name_70[] = {
- _("BREATHTAKING VIEW FROM BRIDGE")
-};
-
-
-// 0x19009984
-static const u8 act_name_71[] = {
- _("BLAST TO THE LONELY MUSHROOM")
-};
-
-
-// 0x190099A4
-static const u8 act_name_72[] = {
- _("PLUCK THE PIRANHA FLOWER")
-};
-
-
-// 0x190099C0
-static const u8 act_name_73[] = {
- _("THE TIP TOP OF THE HUGE ISLAND")
-};
-
-
-// 0x190099E0
-static const u8 act_name_74[] = {
- _("REMATCH WITH KOOPA THE QUICK")
-};
-
-
-// 0x19009A00
-static const u8 act_name_75[] = {
- _("FIVE ITTY BITTY SECRETS")
-};
-
-
-// 0x19009A18
-static const u8 act_name_76[] = {
- _("WIGGLER'S RED COINS")
-};
-
-
-// 0x19009A2C
-static const u8 act_name_77[] = {
- _("MAKE WIGGLER SQUIRM")
-};
-
-
-// 0x19009A40
-static const u8 act_name_78[] = {
- _("ROLL INTO THE CAGE")
-};
-
-
-// 0x19009A54
-static const u8 act_name_79[] = {
- _("THE PIT AND THE PENDULUMS")
-};
-
-
-// 0x19009A70
-static const u8 act_name_80[] = {
- _("GET A HAND")
-};
-
-
-// 0x19009A7C
-static const u8 act_name_81[] = {
- _("STOMP ON THE THWOMP")
-};
-
-
-// 0x19009A90
-static const u8 act_name_82[] = {
- _("TIMED JUMPS ON MOVING BARS")
-};
-
-
-// 0x19009AAC
-static const u8 act_name_83[] = {
- _("STOP TIME FOR RED COINS")
-};
-
-
-// 0x19009AC4
-static const u8 act_name_84[] = {
- _("CRUISER CROSSING THE RAINBOW")
-};
-
-
-// 0x19009AE4
-static const u8 act_name_85[] = {
- _("THE BIG HOUSE IN THE SKY")
-};
-
-
-// 0x19009B00
-static const u8 act_name_86[] = {
- _("COINS AMASSED IN A MAZE")
-};
-
-
-// 0x19009B18
-static const u8 act_name_87[] = {
- _("SWINGIN' IN THE BREEZE")
-};
-
-
-// 0x19009B30
-static const u8 act_name_88[] = {
- _("TRICKY TRIANGLES!")
-};
-
-
-// 0x19009B44
-static const u8 act_name_89[] = {
- _("SOMEWHERE OVER THE RAINBOW")
-};
-
-
-// 0x19009B60
-static const u8 act_name_90[] = {
- _("ONE OF THE CASTLE'S SECRET STARS!")
-};
-
-
-// 0x19009B84
-static const u8 act_name_91[] = {
- _("")
-};
-
-
-// 0x19009B88
-static const u8 act_name_92[] = {
- _("")
-};
-
-
-// 0x19009B8C
-static const u8 act_name_93[] = {
- _("")
-};
-
-
-// 0x19009B90
-static const u8 act_name_94[] = {
- _("")
-};
-
-
-// 0x19009B94
-static const u8 act_name_95[] = {
- _("")
-};
-
-
-// 0x19009B98
-static const u8 act_name_96[] = {
- _("")
-};
-
-
-// act name table
-// 0x19009B9C
-const u8 *const act_name_table_eu_en[] = {
- act_name_00, act_name_01, act_name_02, act_name_03,
- act_name_04, act_name_05, act_name_06, act_name_07,
- act_name_08, act_name_09, act_name_10, act_name_11,
- act_name_12, act_name_13, act_name_14, act_name_15,
- act_name_16, act_name_17, act_name_18, act_name_19,
- act_name_20, act_name_21, act_name_22, act_name_23,
- act_name_24, act_name_25, act_name_26, act_name_27,
- act_name_28, act_name_29, act_name_30, act_name_31,
- act_name_32, act_name_33, act_name_34, act_name_35,
- act_name_36, act_name_37, act_name_38, act_name_39,
- act_name_40, act_name_41, act_name_42, act_name_43,
- act_name_44, act_name_45, act_name_46, act_name_47,
- act_name_48, act_name_49, act_name_50, act_name_51,
- act_name_52, act_name_53, act_name_54, act_name_55,
- act_name_56, act_name_57, act_name_58, act_name_59,
- act_name_60, act_name_61, act_name_62, act_name_63,
- act_name_64, act_name_65, act_name_66, act_name_67,
- act_name_68, act_name_69, act_name_70, act_name_71,
- act_name_72, act_name_73, act_name_74, act_name_75,
- act_name_76, act_name_77, act_name_78, act_name_79,
- act_name_80, act_name_81, act_name_82, act_name_83,
- act_name_84, act_name_85, act_name_86, act_name_87,
- act_name_88, act_name_89, act_name_90, act_name_91,
- act_name_92, act_name_93, act_name_94, act_name_95,
- act_name_96, 0x0,
-};
-
diff --git a/text/eu/fr/dialog.c.in b/text/eu/fr/dialog.c.in
@@ -1,3537 +0,0 @@
-// dialogs (EU, Français)
-// 0x19000000
-static const u8 Dialog000[] = {
- _("Incroyable! Vous voilà\n"
- "propulsé au beau milieu\n"
- "d'un champ de bataille!\n"
- "\n"
- "\n"
- "\n"
- "Vous trouverez dans les\n"
- "mondes au milieu des\n"
- "tableaux les étoiles que\n"
- "Bowser a dérobées...\n"
- "\n"
- "\n"
- "Tout d'abord, parlez au\n"
- "gentil Bob-omb (appuyez\n"
- "sur [B] pour parler). Il\n"
- "vous aidera sûrement,\n"
- "ainsi que ses camarades\n"
- "dans d'autres niveaux...\n"
- "Pour lire une pancarte:\n"
- "arrêtez-vous, faites face\n"
- "au panneau et appuyez sur\n"
- "[B]. Appuyez sur [A] ou [B]\n"
- "pour lire la suite du\n"
- "texte.")
-};
-
-
-// 0x190001B4
-static const u8 Dialog001[] = {
- _("Attention! Si tu te\n"
- "promènes par ici, tu\n"
- "risques de te faire\n"
- "écrabouiller par une bombe\n"
- "à eau!\n"
- "Les méchants Bob-ombs\n"
- "adorent se bagarrer, et\n"
- "ils trouvent toujours le\n"
- "moyen d'attaquer\n"
- "quelqu'un...\n"
- "Cette prairie est devenue\n"
- "un champ de bataille\n"
- "depuis que le Roi Bob-omb\n"
- "s'est approprié l'étoile de\n"
- "puissance.\n"
- "Peux-tu aller chercher\n"
- "l'étoile pour nous?\n"
- "\n"
- "\n"
- "\n"
- "Traverse le pont, va à\n"
- "gauche et prends le\n"
- "chemin vers le haut pour\n"
- "trouver le Roi Bob-omb.\n"
- "\n"
- "Reviens me voir lorsque tu\n"
- "auras récupéré l'étoile de\n"
- "puissance!")
-};
-
-
-// 0x190003B4
-static const u8 Dialog002[] = {
- _("Hé, toi! C'est dangereux\n"
- "par ici! Alors écoute bien\n"
- "mon conseil:\n"
- "\n"
- "\n"
- "\n"
- "Traverse les deux ponts\n"
- "devant toi, tout en\n"
- "faisant attention aux\n"
- "bombes à eau.\n"
- "\n"
- "\n"
- "Le Roi Bob-omb au\n"
- "sommet de la montagne\n"
- "est très puissant...\n"
- "Ne le laisse pas\n"
- "t'attraper!\n"
- "\n"
- "Nous sommes de gentils\n"
- "Bob-ombs, et nous sommes\n"
- "de ton côté.\n"
- "N'hésite pas à venir nous\n"
- "parler à chaque fois que\n"
- "tu en as envie!")
-};
-
-
-// 0x19000528
-static const u8 Dialog003[] = {
- _("Merci beaucoup Mario!\n"
- "Tu as éclaté le vilain Roi\n"
- "Bob-omb comme une vieille\n"
- "figue! Mais tout ceci\n"
- "n'est qu'un début...\n"
- "D'autres gros méchants\n"
- "pas beaux détiennent des\n"
- "étoiles de puissance.\n"
- "\n"
- "\n"
- "Si tu récupères d'autres\n"
- "étoiles, tu pourras ouvrir\n"
- "de nouvelles portes menant\n"
- "à de nouveaux mondes!\n"
- "\n"
- "Mes camarades Bob-ombs\n"
- "t'attendent. Si tu leur\n"
- "parles, ils te prépareront\n"
- "de jolis canons!")
-};
-
-
-// 0x190006A8
-static const u8 Dialog004[] = {
- _("Nous sommes des\n"
- "Bob-ombs pacifiques, nous\n"
- "n'utilisons pas de canons.\n"
- "\n"
- "\n"
- "\n"
- "Mais si tu désires foncer\n"
- "vers les cieux,\n"
- "No Problemo: nous\n"
- "nous ferons une joie de te\n"
- "préparer tous les canons\n"
- "de ce niveau. Bon voyage!")
-};
-
-
-// 0x1900077C
-static const u8 Dialog005[] = {
- _("Hé, Mario! C'est vrai ce\n"
- "qu'on raconte? Tu as\n"
- "vraiment battu le Roi\n"
- "Bob-omb? Cool!\n"
- "\n"
- "Tu dois être vachement\n"
- "fort et rapide! Mais\n"
- "es-tu aussi rapide que\n"
- "moi, Koopa-Rapido?\n"
- "Je crois bien que non...\n"
- "Ça te dirait une petite\n"
- "course jusqu'au sommet\n"
- "de la montagne, là où\n"
- "était le Roi Bob-omb?\n"
- "Alors, qu'en dis-tu?\n"
- "Lorsque je dis 『partez』,\n"
- "la course commence...\n"
- "Prêt...\n"
- "\n"
- "//Partez!//Heu, non.")
-};
-
-
-// 0x190008FC
-static const u8 Dialog006[] = {
- _("Hé! Tu te moques de moi,\n"
- "p'tit nain pas beau?\n"
- "Tu dois courir du début\n"
- "jusqu'à la fin!\n"
- "A plus tard. Reviens me\n"
- "voir lorsque tu arrêteras\n"
- "de tricher...")
-};
-
-
-// 0x19000994
-static const u8 Dialog007[] = {
- _("Heuufff...fff...peufff...\n"
- "Whoa! Tu...es...vraiment\n"
- "rapide...pour un nabot!\n"
- "Tu viens de l'espace?\n"
- "Tiens, tu l'as méritée!")
-};
-
-
-// 0x19000A10
-static const u8 Dialog008[] = {
- _("ATTENTION AU CHOMP\n"
- "ENCHAINE!!!\n"
- "Danger! Approchez-vous\n"
- "et appuyez sur [C]^ pour\n"
- "jeter un oeil.\n"
- "Impressionnant, non?\n"
- "Avez-vous remarqué la\n"
- "pièce rouge sur le rondin?\n"
- "Lorsque vous collecterez 8\n"
- "pièces comme celle-ci,\n"
- "une étoile apparaîtra\n"
- "dans le pré de l'autre\n"
- "côté du pont...")
-};
-
-
-// 0x19000B24
-static const u8 Dialog009[] = {
- _("Ça fait longtemps qu'on\n"
- "ne s'était pas vu, Mario!\n"
- "Fouiii! Tu es devenu super\n"
- "rapide!\n"
- "Tu t'es entraîné aux Jeux\n"
- "Olympiques ou les étoiles\n"
- "te rendent ultra-méga-\n"
- "puissant?\n"
- "Je n'ai pas encore avalé\n"
- "ma défaite de l'autre\n"
- "fois... Mais ici c'est mon\n"
- "territoire.\n"
- "Tu veux faire le match\n"
- "retour? L'arrivée est\n"
- "dans la vallée Valvent...\n"
- "\n"
- "Prêt...\n"
- "\n"
- "\n"
- "//Partez!// Heu, non.")
-};
-
-
-// 0x19000C8C
-static const u8 Dialog010[] = {
- _("Vous venez d'actionner\n"
- "l'interrupteur des\n"
- "casquettes ailées...\n"
- "\n"
- "Si vous portez une\n"
- "casquette ailée, vous\n"
- "pourrez voler comme un\n"
- "oiseau.\n"
- "Désormais des casquettes\n"
- "ailées surgiront des blocs\n"
- "rouges que vous\n"
- "détruirez...\n"
- "Voulez-vous sauvegarder?\n"
- "\n"
- "//Oui////Non.")
-};
-
-
-// 0x19000D90
-static const u8 Dialog011[] = {
- _("Vous venez d'actionner\n"
- "l'interrupteur des\n"
- "casquettes-métal!\n"
- "\n"
- "Grâce aux casquettes-\n"
- "métal, Mario peut devenir\n"
- "invincible!\n"
- "\n"
- "Désormais, des\n"
- "casquettes-métal\n"
- "surgiront des blocs verts\n"
- "que vous détruirez...\n"
- "Voulez-vous sauvegarder?\n"
- "\n"
- "//Oui////Non.")
-};
-
-
-// 0x19000E84
-static const u8 Dialog012[] = {
- _("Vous venez d'actionner\n"
- "l'interrupteur des\n"
- "casquettes d'invisibilité.\n"
- "\n"
- "En portant une casquette\n"
- "d'invisibilité, Mario\n"
- "disparaîtra...\n"
- "\n"
- "Désormais des casquettes\n"
- "d'invisibilité surgiront\n"
- "des blocs bleus que vous\n"
- "détruirez...\n"
- "Voulez-vous sauvegarder?\n"
- "\n"
- "//Oui////Non.")
-};
-
-
-// 0x19000F8C
-static const u8 Dialog013[] = {
- _("Vous avez récupéré 100\n"
- "pièces! Mario sera\n"
- "désormais plus puissant!\n"
- "Voulez-vous sauvegarder?\n"
- "\n"
- "//Oui////Non.")
-};
-
-
-// 0x19000FF8
-static const u8 Dialog014[] = {
- _("Whoa, génial! Une autre\n"
- "étoile de puissance! Mario\n"
- "devient de plus en plus\n"
- "courageux!\n"
- "Voulez-vous sauvegarder?\n"
- "//Oui////Non.")
-};
-
-
-// 0x19001078
-static const u8 Dialog015[] = {
- _("Vous pouvez frapper vos\n"
- "ennemis et les assommer.\n"
- "Appuyez sur [A] pour sauter\n"
- "et sur [B] pour donner un\n"
- "coup de poing. Appuyez sur\n"
- "[A] et sur [B] pour donner un\n"
- "coup de pied, et sur [B]\n"
- "pour ramasser quelque\n"
- "chose. Pour lancer ce que\n"
- "vous portez, appuyez sur\n"
- "[B] à nouveau.")
-};
-
-
-// 0x19001180
-static const u8 Dialog016[] = {
- _("Si vous sautez sur une\n"
- "carapace brillante, vous\n"
- "pourrez aller n'importe où\n"
- "et détruire vos ennemis!")
-};
-
-
-// 0x190011E4
-static const u8 Dialog017[] = {
- _("Je suis le Roi Bob-omb,\n"
- "seigneur des explosions.\n"
- "Je te félicite d'être\n"
- "arrivé jusqu'ici, petit.\n"
- "Si tu veux l'étoile de\n"
- "puissance, il va falloir me\n"
- "jeter au sol.\n"
- "\n"
- "Es-tu capable de soulever\n"
- "mon royal fessier?\n"
- "En garde, moucheron!")
-};
-
-
-// 0x190012C8
-static const u8 Dialog018[] = {
- _("SILENCE! Je dors!\n"
- "Gare à l'imprudent qui\n"
- "oserait me reveiller...\n"
- "Marchez doucement, sinon!")
-};
-
-
-// 0x19001324
-static const u8 Dialog019[] = {
- _("CHUT! Marchez doucement\n"
- "dans les couloirs!!!")
-};
-
-
-// 0x19001354
-static const u8 Dialog020[] = {
- _("Mon très cher Mario:\n"
- "Viens vite au château,\n"
- "je t'ai préparé un\n"
- "délicieux gâteau...\n"
- "A bientôt,\n"
- "Princesse Toadstool.")
-};
-
-
-// 0x190013C8
-static const u8 Dialog021[] = {
- _("Bienvenue l'ami!\n"
- "Ici il n'y a personne,\n"
- "alors dégage, moustique!\n"
- "GWA HA HA HA HA HA!!!")
-};
-
-
-// 0x19001420
-static const u8 Dialog022[] = {
- _("Cette porte est fermée\n"
- "à clé...")
-};
-
-
-// 0x19001440
-static const u8 Dialog023[] = {
- _("Ce n'est pas la bonne clé.\n"
- "Peut-être à la cave...")
-};
-
-
-// 0x19001474
-static const u8 Dialog024[] = {
- _("Vous avez besoin de la\n"
- "puissance des étoiles pour\n"
- "ouvrir cette porte.\n"
- "Récupérez des étoiles en\n"
- "combattant des ennemis à\n"
- "l'intérieur des tableaux...")
-};
-
-
-// 0x19001508
-static const u8 Dialog025[] = {
- _("Vous avez besoin de 3\n"
- "étoiles pour ouvrir cette\n"
- "porte. Il vous manque\n"
- "encore [%] étoile(s).")
-};
-
-
-// 0x19001564
-static const u8 Dialog026[] = {
- _("Vous avez besoin de 8\n"
- "étoiles pour ouvrir cette\n"
- "porte. Il vous manque\n"
- "encore [%] étoile(s).")
-};
-
-
-// 0x190015C0
-static const u8 Dialog027[] = {
- _("Vous avez besoin de 30\n"
- "étoiles pour ouvrir cette\n"
- "porte. Il vous manque\n"
- "encore [%] étoile(s).")
-};
-
-
-// 0x1900161C
-static const u8 Dialog028[] = {
- _("Vous avez besoin de 50\n"
- "étoiles pour ouvrir cette\n"
- "porte. Il vous manque\n"
- "encore [%] étoile(s).")
-};
-
-
-// 0x19001678
-static const u8 Dialog029[] = {
- _("Vous avez besoin de 70\n"
- "étoiles pour arriver en\n"
- "haut de 『l'escalier sans\n"
- "fin』... Il vous manque\n"
- "encore [%] étoile(s).\n"
- "GWA HA HA HA HA HA!!!")
-};
-
-
-// 0x19001704
-static const u8 Dialog030[] = {
- _("Bonjour à tous!\n"
- "Ici Lakitu, le reporter de\n"
- "choc et de charme! Voici\n"
- "un petit conseil technique:\n"
- "Marchez tout doucement\n"
- "pour ne pas faire de bruit\n"
- "et ainsi surprendre vos\n"
- "ennemis.\n"
- "Vous pouvez déplacer ma\n"
- "caméra avec [C]> et [C]<.\n"
- "Appuyez sur [C]| pour voir\n"
- "de loin.\n"
- "Lorsque ma caméra ne\n"
- "peut plus se déplacer,\n"
- "un signal sonore se fera\n"
- "entendre...\n"
- "Mes chers téléspectateurs,\n"
- "à bientôt!\n"
- "//// --Lakitu--")
-};
-
-
-// 0x19001890
-static const u8 Dialog031[] = {
- _("Incroyable! Tu m'as encore\n"
- "battu? J'étais pourtant\n"
- "certain de gagner!\n"
- "Tiens, petit homme, tu as\n"
- "bien mérité cette étoile...")
-};
-
-
-// 0x1900190C
-static const u8 Dialog032[] = {
- _("Si en portant une\n"
- "casquette ailée vous\n"
- "effectuez trois sauts\n"
- "consécutifs, vous pourrez\n"
- "volez comme un oiseau!\n"
- "Vous volerez encore plus\n"
- "haut si vous êtes propulsé\n"
- "par un canon!\n"
- "\n"
- "\n"
- "Utilisez les boutons [C] pour\n"
- "regarder autour de vous\n"
- "en plein vol, et appuyez\n"
- "sur [Z] pour atterrir.")
-};
-
-
-// 0x19001A20
-static const u8 Dialog033[] = {
- _("Ciao bello!\n"
- "Vous voici arrivé au\n"
- "château de la Princesse\n"
- "grâce à un tuyau de\n"
- "téléportation.\n"
- "Contrôler Mario est très\n"
- "facile: appuyez sur [A]\n"
- "pour sauter et sur [B] pour\n"
- "attaquer. Appuyez sur [B]\n"
- "pour lire les pancartes.\n"
- "Utilisez le stick multi-\n"
- "directionnel pour déplacer\n"
- "Mario...\n"
- "Et maintenant, en route\n"
- "vers le château!!!")
-};
-
-
-// 0x19001B60
-static const u8 Dialog034[] = {
- _("Bonjour! Nous sommes les\n"
- "frères Lakitu et nous nous\n"
- "ferons une joie de filmer\n"
- "l'intrépide Mario tout au\n"
- "long de son périple.\n"
- "\n"
- "Vous pourrez choisir\n"
- "l'angle de prise de vue\n"
- "grâce aux boutons [C]. S'il\n"
- "est impossible de bouger\n"
- "la caméra, un signal\n"
- "sonore retentira.\n"
- "Pour jeter un oeil autour\n"
- "de Mario, arrêtez-vous\n"
- "et appuyez sur [C]^.\n"
- "Appuyez sur le bouton [A]\n"
- "pour revenir au jeu.\n"
- "\n"
- "Appuyez sur [R] pour\n"
- "changer de mode de vue.\n"
- "Lisez les pancartes que\n"
- "vous croiserez pour en\n"
- "savoir d'avantage...\n"
- "\n"
- "C'était Lakitu,\n"
- "le caméraman toujours\n"
- "prêt à vous fournir les\n"
- "meilleures images...")
-};
-
-
-// 0x19001D9C
-static const u8 Dialog035[] = {
- _("Il existe quatre boutons\n"
- "[C]. En appuyant sur [C]^ et\n"
- "en bougeant le stick\n"
- "multidirectionnel, vous\n"
- "pourrez jeter un oeil aux\n"
- "alentours...\n"
- "L'angle de vue normal est\n"
- "celui de la caméra de\n"
- "Lakitu, mais vous pouvez\n"
- "le modifier en appuyant\n"
- "sur [R] et ainsi utiliser\n"
- "la 『caméra-Mario』.\n"
- "Appuyez sur [R] à nouveau\n"
- "pour utiliser la caméra de\n"
- "Lakitu. Appuyez sur [C]|\n"
- "pour voir Mario de loin,\n"
- "quelque soit le mode de\n"
- "vue que vous utilisez.")
-};
-
-
-// 0x19001F40
-static const u8 Dialog036[] = {
- _("--PANORAMA--\n"
- "Appuyez sur [C]^ pour jeter\n"
- "un coup d'oeil. Profitez\n"
- "de la vue!\n"
- "Appuyez sur [R] pour\n"
- "utiliser la caméra-Mario\n"
- "qui suivra toujours de\n"
- "près notre petit ami.\n"
- "Appuyez à nouveau sur [R]\n"
- "pour revenir à la caméra\n"
- "de Lakitu.\n"
- "\n"
- "Mettez le jeu en pause et\n"
- "choisissez le mode 『Fixe』\n"
- "puis maintenez [R] pour que\n"
- "la caméra reste en place.")
-};
-
-
-// 0x1900208C
-static const u8 Dialog037[] = {
- _("Bwa ha ha ha ha!\n"
- "Je t'ai battu gros nain!\n"
- "Tu es aussi rapide qu'une\n"
- "vieille limace malade!\n"
- "Reviens me voir si tu\n"
- "veux prendre ta revanche!")
-};
-
-
-// 0x19002118
-static const u8 Dialog038[] = {
- _("Grâce à la puissance des\n"
- "étoiles, la porte s'ouvre\n"
- "doucement...")
-};
-
-
-// 0x19002158
-static const u8 Dialog039[] = {
- _("ROYAUME DE BOB-OMB\n"
- "\n"
- "Interdit aux touristes!!!\n"
- "\n"
- "\n"
- "Personne ne pourra me\n"
- "voler mes étoiles de\n"
- "puissance! Elles m'ont été\n"
- "offertes par le grand\n"
- "Bowser en personne.\n"
- "Je ne dirai jamais où\n"
- "elles se trouvent, mais\n"
- "voici un indice:\n"
- "\n"
- "\n"
- "lisez attentivement le nom\n"
- "de chaque étoile au début\n"
- "des niveaux.\n"
- "\n"
- "/// --Roi Bob-omb--")
-};
-
-
-// 0x19002290
-static const u8 Dialog040[] = {
- _("ATTENTION!\n"
- "Crevasse de glace juste\n"
- "en dessous!")
-};
-
-
-// 0x190022C0
-static const u8 Dialog041[] = {
- _("J'ai gagné! J'ai gagné!\n"
- "Ha! Ha! Pauv'nul!\n"
- "Ça t'apprendra à défier\n"
- "le grand Koopa-Rapido!\n"
- "Reviens me voir si tu\n"
- "veux une autre raclée!")
-};
-
-
-// 0x19002348
-static const u8 Dialog042[] = {
- _("ATTENTION!\n"
- "\n"
- "Pont étroit!!!\n"
- "Traversez doucement...\n"
- "\n"
- "\n"
- "Vous pouvez sauter et\n"
- "vous accrocher au bord de\n"
- "la falaise ou vous\n"
- "suspendre en vous\n"
- "déplaçant lentement près\n"
- "du vide...\n"
- "Si vous voulez lâcher\n"
- "prise, appuyez sur [Z] ou\n"
- "vers le bas sur le stick\n"
- "multidirectionnel.\n"
- "\n"
- "\n"
- "Pour vous hisser, appuyez\n"
- "vers le haut sur le stick\n"
- "multidirectionnel ou sur le\n"
- "bouton [A] pour aller plus\n"
- "vite.")
-};
-
-
-// 0x190024C0
-static const u8 Dialog043[] = {
- _("Si vous sautez en\n"
- "maintenant le bouton [A],\n"
- "vous pourrez vous\n"
- "accrocher à des objets\n"
- "au-dessus de vous...\n"
- "Vous pourrez même vous\n"
- "accrocher à un oiseau!")
-};
-
-
-// 0x19002558
-static const u8 Dialog044[] = {
- _("Mmm? Hein? Qui m'a\n"
- "réveillé? Quoi!?! Il fait\n"
- "encore jour? Je devrais\n"
- "dormir!\n"
- "Maintenant que je suis\n"
- "réveillé, ça te dirait de\n"
- "faire un petit tour avec\n"
- "moi?\n"
- "Maintiens le bouton [A]\n"
- "pour t'accrocher et\n"
- "lâche-le pour te laisser\n"
- "tomber.\n"
- "Je t'emmènerai où tu veux\n"
- "aussi longtemps que mes\n"
- "ailes pourront supporter\n"
- "ton poids!\n"
- "Regarde bien mon ombre\n"
- "et accroche-toi!!!")
-};
-
-
-// 0x190026C0
-static const u8 Dialog045[] = {
- _("Fouiii! J'suis naze!!!\n"
- "Tu devrais peut-être\n"
- "arrêter les pâtes aux\n"
- "oeufs...\n"
- "Allez, ciao Mario!\n"
- "Lâche le bouton [A] sinon\n"
- "j'te balance dans le vide\n"
- "mon gros...")
-};
-
-
-// 0x1900275C
-static const u8 Dialog046[] = {
- _("Il existe trois sauts\n"
- "différents que vous\n"
- "devez maîtriser:\n"
- "Tout d'abord, le Triple\n"
- "Saut...\n"
- "\n"
- "En pleine course, sautez\n"
- "trois fois de suite.\n"
- "Si votre synchronisation\n"
- "est correcte, vous\n"
- "sauterez de plus en plus\n"
- "haut...\n"
- "Ensuite, pour sauter le\n"
- "plus loin possible, vous\n"
- "devrez effectuer le Saut\n"
- "en Longueur:\n"
- "\n"
- "\n"
- "Courez, appuyez sur [Z] pour\n"
- "vous accroupir, puis\n"
- "appuyez sur [A] pour\n"
- "sauter...\n"
- "\n"
- "\n"
- "Enfin, pour créer une\n"
- "『Impulsion』, appuyez sur\n"
- "[A] vers un mur puis sautez\n"
- "à nouveau lorsque vous\n"
- "touchez la paroi...\n"
- "\n"
- "C'est compris?\n"
- "Triple Saut, Saut en\n"
- "Longueur et Impulsion?\n"
- "Pour y arriver à chaque\n"
- "fois il faut s'entraîner\n"
- "encore et encore et...?")
-};
-
-
-// 0x190029D4
-static const u8 Dialog047[] = {
- _("Salut l'ami! Je vais te\n"
- "préparer un joli canon!")
-};
-
-
-// 0x19002A04
-static const u8 Dialog048[] = {
- _("Sommet du glacier...\n"
- "Attention à ne pas\n"
- "glisser!\n"
- "Tout d'abord, visitez ce\n"
- "chalet...")
-};
-
-
-// 0x19002A58
-static const u8 Dialog049[] = {
- _("Vous vous souvenez de\n"
- "l'Impulsion? Utilisez cette\n"
- "technique pour atteindre\n"
- "des lieux en hauteur...\n"
- "Rebondissez de mur en\n"
- "mur, en appuyant sur le\n"
- "stick multidirectionnel\n"
- "vers la direction desirée.\n"
- "Entraînez-vous encore et\n"
- "encore et encore et...?")
-};
-
-
-// 0x19002B50
-static const u8 Dialog050[] = {
- _("Maintenez le bouton [Z] pour\n"
- "vous accroupir et ainsi\n"
- "glisser le long d'une\n"
- "pente...\n"
- "Appuyez sur [Z] pendant un\n"
- "saut pour faire l'Attaque\n"
- "Rodéo!\n"
- "\n"
- "A l'arrêt, si vous appuyez\n"
- "sur [Z] pour vous accroupir,\n"
- "puis sur [A], vous ferez un\n"
- "Saut Périlleux!\n"
- "C'est compris? Mais il\n"
- "existe encore d'autres\n"
- "mouvements...\n"
- "\n"
- "Vous pouvez courir, vous\n"
- "accroupir puis faire un\n"
- "Saut en Longueur...\n"
- "\n"
- "Vous pouvez aussi marcher\n"
- "en maintenant le bouton [Z].\n"
- "Mais c'est une autre\n"
- "histoire...")
-};
-
-
-// 0x19002D18
-static const u8 Dialog051[] = {
- _("Vous pouvez facilement\n"
- "vous accrocher aux arbres\n"
- "et aux poteaux...\n"
- "\n"
- "\n"
- "\n"
- "Appuyez sur [Z] pour lâcher\n"
- "prise, sur [A] pour sauter\n"
- "en arrière ou sur le stick\n"
- "multidirectionnel pour\n"
- "descendre doucement.\n"
- "\n"
- "Une fois au sommet,\n"
- "appuyez vers la droite ou\n"
- "vers la gauche sur le\n"
- "stick multidirectionnel\n"
- "pour pivoter, ou vers le\n"
- "haut pour faire le poirier.\n"
- "Appuyez alors sur [A] pour\n"
- "faire un méga-saut vers\n"
- "l'arrière, digne des plus\n"
- "grands athlètes!")
-};
-
-
-// 0x19002EC8
-static const u8 Dialog052[] = {
- _("Arrêtez-vous et appuyez\n"
- "sur [Z] pour vous accroupir,\n"
- "puis appuyez sur [A] pour\n"
- "faire un Saut Périlleux\n"
- "en arrière!\n"
- "Pour faire un Saut\n"
- "Périlleux de côté, courez,\n"
- "changez de direction, puis\n"
- "sautez.\n"
- "\n"
- "Ces deux types de saut\n"
- "vous permettent de\n"
- "sauter beaucoup plus haut\n"
- "qu'un saut normal...")
-};
-
-
-// 0x19002FE4
-static const u8 Dialog053[] = {
- _("Quelques fois, en\n"
- "traversant un anneau ou\n"
- "en découvrant un passage\n"
- "secret dans un niveau, un\n"
- "chiffre rouge apparaîtra.\n"
- "Si vous faites apparaître\n"
- "cinq chiffres rouges, une\n"
- "étoile secrète apparaîtra.")
-};
-
-
-// 0x190030AC
-static const u8 Dialog054[] = {
- _("Attention:\n"
- "Glissade Périlleuse!\n"
- "En voiture Simone...\n"
- "Appuyez vers l'avant sur\n"
- "le stick multidirectionnel\n"
- "pour accélérer.\n"
- "Appuyez vers l'arrière\n"
- "pour ralentir...\n"
- "Roulez jeunesse!")
-};
-
-
-// 0x19003160
-static const u8 Dialog055[] = {
- _("Salut mon tout petit\n"
- "Mario...\n"
- "Alors, il paraît que tu es\n"
- "un rapide?\n"
- "Mais es-tu aussi rapide\n"
- "que moi?\n"
- "On fait la course,\n"
- "mon petit biquet?\n"
- "Prêt...\n"
- "//Partez!//Heu, non.")
-};
-
-
-// 0x19003208
-static const u8 Dialog056[] = {
- _("Qu-qu-quoi? T-t-tu as\n"
- "battu mon record?\n"
- "Je l'admets, tu es très\n"
- "rapide pour un humain.\n"
- "Je n'ai pas de médaille\n"
- "d'or sur moi mais...\n"
- "Cette étoile fera\n"
- "l'affaire...")
-};
-
-
-// 0x190032AC
-static const u8 Dialog057[] = {
- _("Mon bébé! J'ai perdu mon\n"
- "bébé... Mon p'tit chou...\n"
- "Ma puce à moi...\n"
- "Mon chocolat...\n"
- "JE VEUX MON BÉBÉ!!!\n"
- "GNAAAAAAAAAAAAAA!!!\n"
- "MON BÉBÉ!")
-};
-
-
-// 0x19003334
-static const u8 Dialog058[] = {
- _("Tu as trouvé mon bébé!!!\n"
- "Mon chou...\n"
- "Mon p'tit chou...\n"
- "Comment te prouver ma\n"
- "gratitude, gros Mario?\n"
- "Tu es formidable...\n"
- "Tiens, prends cette étoile.\n"
- "Tu l'as bien méritée...\n"
- "Encore merci, petit!")
-};
-
-
-// 0x190033F8
-static const u8 Dialog059[] = {
- _("C'est pas mon bébé!!!\n"
- "Où est mon bébé?\n"
- "JE VEUX MON BÉBÉ!!!!\n"
- "GNAAAAAAAAAAAAAA!!!!")
-};
-
-
-// 0x1900344C
-static const u8 Dialog060[] = {
- _("ATTENTION!\n"
- "A lire avant de plonger!\n"
- "Si vous restez sous l'eau\n"
- "pendant trop longtemps,\n"
- "vous pouvez vous noyer...\n"
- "\n"
- "Remonter à la surface,\n"
- "traverser une bulle d'air\n"
- "ou récupérer des pièces\n"
- "vous fera regagner de\n"
- "l'oxygène.\n"
- "\n"
- "Appuyez sur [A] pour nager.\n"
- "Maintenez le bouton [A]\n"
- "pour battre des pieds.\n"
- "Appuyez régulièrement sur\n"
- "[A] pour gagner de la\n"
- "vitesse.\n"
- "Appuyez vers le haut sur\n"
- "le stick multidirectionnel\n"
- "pour plonger.\n"
- "Appuyez vers le bas et sur\n"
- "[A] pour remonter à la\n"
- "surface.\n"
- "Lorsque vous êtes à la\n"
- "surface, maintenez la\n"
- "flèche vers le bas sur le\n"
- "stick multidirectionnel et\n"
- "appuyez sur [A] pour sortir\n"
- "de l'eau.")
-};
-
-
-// 0x190036A8
-static const u8 Dialog061[] = {
- _("Brrrrr!!!\n"
- "Baignade déconseillée!!!\n"
- "Trop froid...\n"
- "// ---Le Pingouin---")
-};
-
-
-// 0x190036F0
-static const u8 Dialog062[] = {
- _("A l'intérieur des\n"
- "blocs verts se cache la\n"
- "casquette-métal...\n"
- "\n"
- "En la portant, vous\n"
- "deviendrez insensible au\n"
- "feu et aux attaques de\n"
- "vos ennemis.\n"
- "Vous n'aurez même plus\n"
- "besoin de respirer!\n"
- "Mais il y a un problème:\n"
- "vous ne pouvez pas nager!")
-};
-
-
-// 0x190037E0
-static const u8 Dialog063[] = {
- _("La casquette d'invisibilité\n"
- "se trouve dans les blocs\n"
- "bleus.\n"
- "\n"
- "En la portant, vos\n"
- "ennemis, y compris les\n"
- "terribles Boos, ne\n"
- "pourront pas vous voir!\n"
- "En plus, vous pourrez\n"
- "traverser des murs\n"
- "secrets!")
-};
-
-
-// 0x190038A4
-static const u8 Dialog064[] = {
- _("Si vous portez une\n"
- "casquette ailée provenant\n"
- "d'un bloc rouge, faites le\n"
- "Triple Saut pour vous\n"
- "envoler comme un oiseau!\n"
- "\n"
- "Utilisez le stick multi-\n"
- "directionnel pour diriger\n"
- "Mario. Appuyez vers le\n"
- "bas pour prendre de\n"
- "l'altitude, et vers le haut\n"
- "pour piquer du nez.\n"
- "Et enfin, appuyez sur [Z]\n"
- "pour atterrir.")
-};
-
-
-// 0x190039D4
-static const u8 Dialog065[] = {
- _("Leçons de natation...\n"
- "Appuyez sur [A] pour nager\n"
- "la brasse. Si votre\n"
- "synchronisation est bonne,\n"
- "vous pourrez nager très\n"
- "vite.\n"
- "Maintenez le bouton [A]\n"
- "pour battre des pieds\n"
- "d'une façon régulière.\n"
- "\n"
- "\n"
- "\n"
- "Appuyez vers le haut sur\n"
- "le stick multidirectionnel\n"
- "pour plonger, et vers le\n"
- "bas pour remonter à la\n"
- "surface.\n"
- "\n"
- "Pour sortir de l'eau,\n"
- "appuyez vers le bas sur\n"
- "le stick multidirectionnel\n"
- "et appuyez sur [A]. Ensuite,\n"
- "relâcher le stick pour ne\n"
- "pas retomber dans l'eau.\n"
- "Attention: Mario ne peut\n"
- "pas respirer sous l'eau!\n"
- "Remontez à la surface\n"
- "lorsque vous manquez\n"
- "d'oxygène...\n"
- "\n"
- "Dernière chose:\n"
- "vous ne pouvez pas ouvrir\n"
- "les portes se trouvant\n"
- "sous l'eau.")
-};
-
-
-// 0x19003C54
-static const u8 Dialog066[] = {
- _("Mario! Fais attention:\n"
- "Bowser est un gros\n"
- "vicieux! Il va tenter de\n"
- "te brûler les fesses avec\n"
- "son souffle de feu!\n"
- "\n"
- "Tourne autour de lui et\n"
- "attrape sa queue en\n"
- "appuyant sur [B]. Une fois\n"
- "que tu l'as attrapé,\n"
- "fais-le tourner autour\n"
- "de toi.\n"
- "Fais des rotations avec le\n"
- "stick multidirectionnel\n"
- "pour aller de plus en plus\n"
- "vite.\n"
- "\n"
- "\n"
- "Si tu le fais tourner très\n"
- "vite, tu pourras l'envoyer\n"
- "très loin.\n"
- "\n"
- "\n"
- "\n"
- "Utilise les boutons [C] pour\n"
- "regarder autour de toi.\n"
- "Tu dois jeter Bowser sur\n"
- "une des bombes...\n"
- "\n"
- "\n"
- "Vise bien! Appuie sur [B]\n"
- "pour lancer Bowser.\n"
- "Bonne chance, Mario!\n"
- "Tu en auras besoin...\n"
- "\n"
- "// ---Peach---")
-};
-
-
-// 0x19003EA0
-static const u8 Dialog067[] = {
- _("HA HA! Dommage pour toi,\n"
- "Mario! La P'tite Peach\n"
- "n'est pas là...\n"
- "Mais si tu veux un gros\n"
- "bisou, on peut toujours\n"
- "s'arranger!\n"
- "Je parie que tu n'es pas\n"
- "capable d'attraper ma\n"
- "queue...\n"
- "Tu es trop faible pour me\n"
- "faire tourner autour de\n"
- "ta tête!\n"
- "Tu n'arriveras jamais à\n"
- "me faire décoller d'ici...\n"
- "GWA HA! A table!!!!!!!")
-};
-
-
-// 0x19003FDC
-static const u8 Dialog068[] = {
- _("Voici les Laves Fatales!\n"
- "Si vous touchez de la lave\n"
- "ou des flammes, vous\n"
- "aurez le feu aux fesses!\n"
- "Mais pas de panique:\n"
- "vous pourrez toujours\n"
- "contrôler Mario...\n"
- "Restez calme!")
-};
-
-
-// 0x1900408C
-static const u8 Dialog069[] = {
- _("A l'intérieur des tableaux\n"
- "vous pourrez touchez des\n"
- "murs invisibles marquant\n"
- "les limites du niveau.\n"
- "Si vous touchez un mur en\n"
- "volant, vous serez bloqué.")
-};
-
-
-// 0x19004128
-static const u8 Dialog070[] = {
- _("Vous pouvez retourner\n"
- "dans le hall du château\n"
- "depuis n'importe quel\n"
- "niveau.\n"
- "\n"
- "\n"
- "Vous devez vous arrêter,\n"
- "appuyer sur Start pour\n"
- "mettre le jeu en pause,\n"
- "puis choisir l'option\n"
- "『Quitter Niveau』.\n"
- "\n"
- "Vous n'avez pas besoin de\n"
- "récupérer toutes les\n"
- "étoiles d'un niveau pour\n"
- "accéder à un autre monde.\n"
- "\n"
- "\n"
- "Vous pouvez retourner\n"
- "dans un niveau plus tard,\n"
- "et ainsi récupérer les\n"
- "étoiles difficiles à\n"
- "attraper.\n"
- "\n"
- "Après avoir récupéré une\n"
- "étoile, un indice\n"
- "concernant l'étoile\n"
- "suivante apparaîtra à\n"
- "l'écran au début du\n"
- "niveau...\n"
- "Toutefois, vous n'êtes pas\n"
- "obligé d'attraper l'étoile\n"
- "décrite par l'indice.")
-};
-
-
-// 0x19004374
-static const u8 Dialog071[] = {
- _("DANGER!\n"
- "Attention au brouillard\n"
- "toxique!\n"
- "\n"
- "Si vous perdez de\n"
- "l'énergie, courez vers une\n"
- "plate-forme en hauteur\n"
- "pour respirer.\n"
- "\n"
- "Cercle: Abri\n"
- "Flèche: Entrée - Sortie")
-};
-
-
-// 0x19004418
-static const u8 Dialog072[] = {
- _("Attention: vents violents!\n"
- "Accrochez-vous à votre\n"
- "casquette!\n"
- "Si vous la perdez, vous\n"
- "devrez revenir la chercher\n"
- "là où vous l'avez perdue...")
-};
-
-
-// 0x190044A4
-static const u8 Dialog073[] = {
- _("Souquez ferme, matelot!\n"
- "J'ai caché un trésor\n"
- "par ici, moussaillon.\n"
- "Mais pour le découvrir,\n"
- "vous devrez ouvrir les\n"
- "coffres dans l'ordre...\n"
- "Y arriveras-tu, petit?\n"
- "\n"
- "// -- Le capitaine --")
-};
-
-
-// 0x1900455C
-static const u8 Dialog074[] = {
- _("Vous pouvez vous\n"
- "accrocher au rebord d'une\n"
- "falaise.\n"
- "\n"
- "\n"
- "Pour lâcher prise, appuyez\n"
- "vers le bas sur le stick\n"
- "multidirectionnel ou sur le\n"
- "bouton [Z].\n"
- "\n"
- "Pour vous hisser, appuyez\n"
- "vers le haut sur le stick\n"
- "multidirectionnel ou sur le\n"
- "bouton [A] pour monter plus\n"
- "vite.")
-};
-
-
-// 0x19004660
-static const u8 Dialog075[] = {
- _("Mario! Mon château est\n"
- "en danger, et Bowser en\n"
- "est le responsable...\n"
- "Toi seul peut contrecarrer\n"
- "ses plans diaboliques!\n"
- "Les portes du château ont\n"
- "été scellées par Bowser et\n"
- "ne peuvent être ouvertes\n"
- "qu'à l'aide du pouvoir des\n"
- "étoiles...\n"
- "Bowser a caché les étoiles\n"
- "de puissance dans les\n"
- "tableaux et les murs du\n"
- "château.\n"
- "\n"
- "Mais Bowser n'a pas\n"
- "découvert tous les\n"
- "passages secrets du\n"
- "château.\n"
- "\n"
- "Un passage secret se\n"
- "trouve dans cette pièce et\n"
- "il mène à une des étoiles\n"
- "secrètes du château!\n"
- "\n"
- "Trouve cette étoile, mon\n"
- "petit Mario! Elle te sera\n"
- "très utile. Je t'en prie,\n"
- "aide-nous!\n"
- "\n"
- "Retrouve toutes les étoiles\n"
- "du château et tu pourras\n"
- "nous délivrer!\n"
- "Je t'en prie, Mario!\n"
- "Sauve-nous!")
-};
-
-
-// 0x19004904
-static const u8 Dialog076[] = {
- _("Grâce au pouvoir des\n"
- "étoiles, le château\n"
- "revient à la vie...\n"
- "Je t'en prie Mario,\n"
- "botte les fesses du\n"
- "vilain Bowser pas beau!\n"
- "As-tu visité la pièce du\n"
- "château dans laquelle un\n"
- "grand miroir est au mur?\n"
- "Prends garde à tout ce\n"
- "qui n'a pas de reflet...\n"
- "\n"
- "Connais-tu le monde\n"
- "『Trempé-Séché』?\n"
- "\n"
- "Rentre dans ce niveau en\n"
- "sautant très haut...\n"
- "\n"
- "Au fait! Regarde ce que\n"
- "j'ai pour toi!")
-};
-
-
-// 0x19004A78
-static const u8 Dialog077[] = {
- _("Il est dit que les piliers\n"
- "doivent être enfoncés...")
-};
-
-
-// 0x19004AAC
-static const u8 Dialog078[] = {
- _("Enfoncez le bloc des\n"
- "pièces bleues grâce à\n"
- "l'Attaque Rodéo, en\n"
- "appuyant sur [Z].\n"
- "Une pièce bleue vaut 5\n"
- "pièces jaunes.\n"
- "\n"
- "\n"
- "Dépêchez-vous de les\n"
- "attraper, sinon elles\n"
- "disparaîtront!")
-};
-
-
-// 0x19004B60
-static const u8 Dialog079[] = {
- _("GNIIIIIIIII!!!\n"
- "LACHE-MOI!\n"
- "Je blaguais! Tu n'as\n"
- "aucun sens de l'humour.\n"
- "Lâche-moi et je te\n"
- "donnerais un truc cool.\n"
- "Ça marche?\n"
- "//OK//// Jamais!")
-};
-
-
-// 0x19004BF0
-static const u8 Dialog080[] = {
- _("Gnii hi hi hi hi hi!!!")
-};
-
-
-// 0x19004C08
-static const u8 Dialog081[] = {
- _("Bienvenue dans le monde\n"
- "『Trempé-Séché』...\n"
- "\n"
- "Ici, il est dit qu'un saut\n"
- "altère le niveau d'eau...\n"
- "\n"
- "En y pénétrant,\n"
- "serez-vous assez\n"
- "intelligent?")
-};
-
-
-// 0x19004C98
-static const u8 Dialog082[] = {
- _("Accroche-toi à ta\n"
- "casquette, gentil petit\n"
- "Mario...\n"
- "\n"
- "Si jamais tu la perds, tu\n"
- "devras retourner la\n"
- "chercher là où tu l'as\n"
- "perdue...\n"
- "Sans casquette, tes\n"
- "ennemis pourront te faire\n"
- "beaucoup plus de dégâts!\n"
- "\n"
- "La princesse Peach a\n"
- "de sérieux ennuis...\n"
- "Elle est enfermée dans un\n"
- "des murs du château.\n"
- "Tu dois absolument l'aider\n"
- "mon gros Mario! Savais-\n"
- "tu qu'il existe des\n"
- "mondes dans les murs?\n"
- "Les sbires du Bowser pas\n"
- "beau y font régner la\n"
- "terreur!\n"
- "\n"
- "Tiens, j'ai un petit\n"
- "cadeau pour toi...")
-};
-
-
-// 0x19004E7C
-static const u8 Dialog083[] = {
- _("Cette grosse horloge est\n"
- "étrange...\n"
- "\n"
- "\n"
- "Fais attention à la\n"
- "position de la grande\n"
- "aiguille lorsque tu sautes\n"
- "à l'intérieur...\n"
- "Au fait, regarde ce que\n"
- "j'ai là pour toi!")
-};
-
-
-// 0x19004F24
-static const u8 Dialog084[] = {
- _("GNAAAAAAAAA!!!\n"
- "LACHE-MOI!!!\n"
- "GROSSE BRUTE!\n"
- "Ne me mange pas!\n"
- "Ne me mange pas!\n"
- "Au secours!!!!!!\n"
- "Tiens, voilà une étoile.\n"
- "Prends-la, mais tu dois\n"
- "me laisser partir...")
-};
-
-
-// 0x19004FC8
-static const u8 Dialog085[] = {
- _("Va-t'en, simple mortel!\n"
- "Si tu tiens à ton âme,\n"
- "retourne chez toi...\n"
- "Si tu oses rentrer,\n"
- "tu seras damné!!!")
-};
-
-
-// 0x19005034
-static const u8 Dialog086[] = {
- _("Tourner autour de\n"
- "certains ennemis peut\n"
- "faire tourner de l'oeil...")
-};
-
-
-// 0x19005078
-static const u8 Dialog087[] = {
- _("Le Père Noël n'est pas le\n"
- "seul à passer par les\n"
- "cheminées...\n"
- "Avis aux curieux...\n"
- "- Le bonhomme de neige -")
-};
-
-
-// 0x190050E4
-static const u8 Dialog088[] = {
- _("-Plate-forme de travail-\n"
- "Pour descendre, utilisez\n"
- "le poteau sur la gauche et\n"
- "glissez jusqu'en bas...")
-};
-
-
-// 0x1900514C
-static const u8 Dialog089[] = {
- _("Les deux routes sont très\n"
- "dangereuses...\n"
- "Ceux qui ne sont pas\n"
- "encore capables de faire\n"
- "le Saut en Longueur\n"
- "doivent aller à droite.\n"
- "Droite: Plate-forme de\n"
- "////travail.\n"
- "////Labyrinthe\n"
- "////toxique.\n"
- "Gauche: Trou Noir.\n"
- "////Lac souterrain.\n"
- "Cercle rouge:\n"
- "////Ascenseur 2.\n"
- "////Lac souterrain.\n"
- "Flèche:\n"
- "////Votre position\n"
- "////actuelle.")
-};
-
-
-// 0x19005290
-static const u8 Dialog090[] = {
- _("BWA HA HA HA HA HA!!!\n"
- "Tu es tombé dans mon\n"
- "piège, petit Mario!\n"
- "Mais voici un conseil\n"
- "d'ami: prends garde à ne\n"
- "pas tomber!")
-};
-
-
-// 0x1900530C
-static const u8 Dialog091[] = {
- _("Danger!!!\n"
- "Vents violents!\n"
- "Sachez utiliser les\n"
- "courants à votre\n"
- "avantage...")
-};
-
-
-// 0x19005358
-static const u8 Dialog092[] = {
- _("Mario...\n"
- "Mon p'tit Mario...\n"
- "Tu m'cherches ou quoi?\n"
- "Tu la veux ta baffe?\n"
- "Alors tu vas l'avoir!\n"
- "Mais d'abord tu vas me\n"
- "rendre mes étoiles,\n"
- "voleur!\n"
- "BWA HA HA HA HA HA!!!\n"
- "C'est l'heure du goûter!")
-};
-
-
-// 0x19005418
-static const u8 Dialog093[] = {
- _("Mario?!?\n"
- "Tu es encore là, toi?\n"
- "Très bien, tu l'auras\n"
- "voulu! Cette fois-ci, je\n"
- "vais faire frire ta\n"
- "vieille moustache!\n"
- "Malgré tes étoiles de\n"
- "puissance, tu n'arriveras\n"
- "jamais à sauver Peach et\n"
- "ses amis...\n"
- "Allez... En garde!\n"
- "BWA HA HA HA HA HA HA!")
-};
-
-
-// 0x1900550C
-static const u8 Dialog094[] = {
- _("Pourquoi ne pas escalader\n"
- "cette pente en courant?\n"
- "Petit rappel: pour faire\n"
- "un Saut en Longueur,\n"
- "courir, appuyer sur [Z],\n"
- "puis sauter...")
-};
-
-
-// 0x19005594
-static const u8 Dialog095[] = {
- _("Pour lire une pancarte,\n"
- "il faut se tenir devant\n"
- "l'écriteau et appuyer [B].\n"
- "Vous le saviez déjà?\n"
- "Ah bon... Désolé.\n"
- "Pour parler à une tortue\n"
- "ou à un autre animal,\n"
- "vous devez vous tenir en\n"
- "face de lui ou elle.\n"
- "\n"
- "Retrouvez vite les étoiles\n"
- "que Bowser a caché dans\n"
- "ce niveau!")
-};
-
-
-// 0x190056A0
-static const u8 Dialog096[] = {
- _("Le sommet de la montagne\n"
- "est interdit au public!\n"
- "Alors n'essayez pas d'y\n"
- "aller, à moins d'être à la\n"
- "recherche des étoiles...\n"
- "Autre conseil: ne réveillez\n"
- "jamais quelqu'un qui dort.\n"
- "Marchez doucement...\n"
- "Et sans bruit...")
-};
-
-
-// 0x1900577C
-static const u8 Dialog097[] = {
- _("Si quelqu'un vous pousse,\n"
- "n'ayez pas peur!\n"
- "Poussez-le vous aussi!\n"
- "Le perdant aura plutôt\n"
- "chaud aux fesses...")
-};
-
-
-// 0x190057EC
-static const u8 Dialog098[] = {
- _("Viens...\n"
- "...entre donc...\n"
- "Mon biquet...\n"
- "...viens dîner...\n"
- "Hin...hin...hin...")
-};
-
-
-// 0x1900583C
-static const u8 Dialog099[] = {
- _("Hé...hé...hé...\n"
- "Ciao bello Mario!\n"
- "Moi j'traverse les murs!\n"
- "Tu peux le faire, toi?\n"
- "Hin...hin...hin...")
-};
-
-
-// 0x190058A4
-static const u8 Dialog100[] = {
- _("GNIIIIII! KIIIII!\n"
- "J'l'ai eue!!!\n"
- "HI KI KI KI KI KI!\n"
- "C'est à moi!!!")
-};
-
-
-// 0x190058E8
-static const u8 Dialog101[] = {
- _("Aaaak...kiiii!!!\n"
- "Arrête! Tu m'étrangles!\n"
- "Quoi? Cette casquette?\n"
- "OK, prends-la...\n"
- "Grande brute, va!\n"
- "De toutes façons,\n"
- "tu as l'air débile avec ça\n"
- "sur la tête...")
-};
-
-
-// 0x19005988
-static const u8 Dialog102[] = {
- _("Les Boos sont timides! Si\n"
- "vous les regardez dans les\n"
- "yeux, ils disparaîtront...\n"
- "\n"
- "Mais si vous leur tournez\n"
- "le dos, ils réapparaîtront.\n"
- "Invisibles, ils sont\n"
- "invincibles...\n"
- "Tentez de vous faufiler\n"
- "derrière eux et de leur\n"
- "botter les fesses!")
-};
-
-
-// 0x19005A78
-static const u8 Dialog103[] = {
- _("Au sommet des quatre\n"
- "piliers l'on doit se tenir,\n"
- "pour que la lumière puisse\n"
- "enfin jaillir...")
-};
-
-
-// 0x19005AD8
-static const u8 Dialog104[] = {
- _("L'ombre de l'étoile en\n"
- "face de vous est un\n"
- "『Marqueur d'étoile』.\n"
- "\n"
- "Lorsque vous récupérerez\n"
- "8 pièces rouges, une\n"
- "étoile apparaîtra à cet\n"
- "emplacement.")
-};
-
-
-// 0x19005B6C
-static const u8 Dialog105[] = {
- _("Canon prêt à tirer!\n"
- "Allez, saute à l'intérieur!\n"
- "Tu peux atteindre l'étoile\n"
- "sur l'île flottante en\n"
- "utilisant les quatre\n"
- "canons.\n"
- "Utilise le stick multi-\n"
- "directionnel pour viser et\n"
- "appuie sur [A] pour tirer.\n"
- "Si tu es habile, sers-toi\n"
- "des arbres et des poteaux\n"
- "pour atterrir...")
-};
-
-
-// 0x19005C7C
-static const u8 Dialog106[] = {
- _("Canon prêt à tirer!\n"
- "Allez, saute à l'intérieur!")
-};
-
-
-// 0x19005CAC
-static const u8 Dialog107[] = {
- _("Les fantômes sont...\n"
- "...immortels!\n"
- "Hin hin hin hin...\n"
- "Pourras-tu sortir d'ici...\n"
- "...vivant?\n"
- "Gni hi hi hi hi hi...")
-};
-
-
-// 0x19005D20
-static const u8 Dialog108[] = {
- _("GNI HI HI HI HI HOU!\n"
- "Voici le seigneur des\n"
- "supplices!\n"
- "Le maître des ombres...\n"
- "Le souverain des\n"
- "cauchemars...\n"
- "Le Big Boo en personne!\n"
- "Tremblez humains!!!\n"
- "GNA HI HOU HA HIN HU !")
-};
-
-
-// 0x19005DD0
-static const u8 Dialog109[] = {
- _("Oooooh Noooon!\n"
- "Mon corps a fondu!\n"
- "Tu ne pourrais pas\n"
- "m'aider, petit homme?\n"
- "J'ai besoin d'un nouveau\n"
- "corps!\n"
- "Je dois faire un golf\n"
- "demain...")
-};
-
-
-// 0x19005E5C
-static const u8 Dialog110[] = {
- _("J'ai perdu la tête, on\n"
- "dirait...\n"
- "Connais-tu quelqu'un à la\n"
- "recherche d'un corps?\n"
- "Je suis peut-être petit,\n"
- "mais je grandis vite!\n"
- "Guide-moi, je te suivrai\n"
- "n'importe où!")
-};
-
-
-// 0x19005F04
-static const u8 Dialog111[] = {
- _("Coooooool!\n"
- "Quel super corps!\n"
- "Maintenant je vais\n"
- "pouvoir aller draguer!\n"
- "Tiens, voici un petit\n"
- "quelque chose pour toi...")
-};
-
-
-// 0x19005F7C
-static const u8 Dialog112[] = {
- _("Ramassez le plus de pièces\n"
- "possible! Elles rempliront\n"
- "votre énergie!\n"
- "\n"
- "Vous pouvez jeter un oeil\n"
- "au nombre de pièces que\n"
- "vous avez récupérées dans\n"
- "les 15 mondes.\n"
- "Vous pouvez aussi remplir\n"
- "votre énergie en touchant\n"
- "un coeur!\n"
- "\n"
- "Si vous faites tourner le\n"
- "coeur très vite, il vous\n"
- "donnera beaucoup\n"
- "d'énergie...")
-};
-
-
-// 0x190060B0
-static const u8 Dialog113[] = {
- _("Il existe des casquettes\n"
- "spéciales dans les blocs\n"
- "rouges, verts et bleus.\n"
- "\n"
- "\n"
- "Marchez sur les\n"
- "interrupteurs dans les\n"
- "niveaux cachés pour faire\n"
- "apparaître les blocs de\n"
- "couleur.")
-};
-
-
-// 0x19006160
-static const u8 Dialog114[] = {
- _("Ah c'est pas le moment\n"
- "de venir m'embêter!\n"
- "\n"
- "Nous les pierres, on\n"
- "construit des maisons et\n"
- "des châteaux...\n"
- "Et vous les humains, vous\n"
- "ne pensez jamais à nous\n"
- "dire merci!\n"
- "Si tu restes là, je m'en\n"
- "vais t'écraser la face\n"
- "comme une vieille prune...\n"
- "Crois-tu pouvoir faire\n"
- "une Attaque Rodéo sur\n"
- "mon dos?\n"
- "Ça m'étonnerais!\n"
- "Allez... En garde, nabot\n"
- "rouge et bleu!")
-};
-
-
-// 0x190062C4
-static const u8 Dialog115[] = {
- _("Quoi? J'ai perdu?!?\n"
- "Sacré nom d'un pétard!\n"
- "Vous les humains, vous\n"
- "n'avez aucun coeur...\n"
- "Tiens, prends ça...\n"
- "Et va-t'en!")
-};
-
-
-// 0x1900633C
-static const u8 Dialog116[] = {
- _("Hein?/De quoi?\n"
- "Moi? J'ai perdu?\n"
- "Battu par un tout petit\n"
- "bonhomme de rien du tout!\n"
- "Mais cela ne sera pas\n"
- "aussi facile contre le\n"
- "grand Bowser!\n"
- "Oh que non!\n"
- "Tiens, voici l'étoile.\n"
- "Dette de jeu...\n"
- "Dette d'honneur...\n"
- "Ciao petit Mario!\n"
- "Si tu veux me revoir,\n"
- "choisis cette étoile sur\n"
- "l'écran du départ.\n"
- "A bientôt!")
-};
-
-
-// 0x19006470
-static const u8 Dialog117[] = {
- _("Qui...dérange...mon...\n"
- "...sommeil...éternel...?\n"
- "Tout...bruit...doit...\n"
- "...être...puni...!\n"
- "Intrus...va...être...\n"
- "...détruit...!\n"
- "...COMBAT...!!!\n"
- "...A...MAINS...NUES...!!!")
-};
-
-
-// 0x1900651C
-static const u8 Dialog118[] = {
- _("Qu...qu...qu...Hein?\n"
- "Moi...perdu?...Hein?\n"
- "Moi...faible...nul.\n"
- "Toi...nouveau pharaon...\n"
- "Tiens...pour toi...\n"
- "Moi...dormir...dodo. Ciao.")
-};
-
-
-// 0x190065A4
-static const u8 Dialog119[] = {
- _("Grrrrr! Tu m'as surpris...\n"
- "Je t'ai sous-estimé!\n"
- "Petit mais costaud, hein?\n"
- "Mais Peach est toujours\n"
- "ma prisonnière! Ha Ha!\n"
- "Ne t'inquiète pas, on se\n"
- "reverra! Et la prochaine\n"
- "fois, je te mangerai les\n"
- "doigts!\n"
- "Allez, à bientôt! GWA HA!")
-};
-
-
-// 0x1900668C
-static const u8 Dialog120[] = {
- _("Moi? Le grand Bowser?\n"
- "Vaincu? Non, non!\n"
- "Ça ne compte pas!\n"
- "Je dormais! Tu as triché!\n"
- "La prochaine fois, je te\n"
- "mangerai les oreilles!\n"
- "Si tu veux revoir ta\n"
- "p'tite Peach, rejoins-moi\n"
- "en haut de la tour...\n"
- "Allez, à la prochaine!\n"
- "GWA HA HA HA HA HA HA!\n"
- "GWA HI HOU HÉ HEU...HA!")
-};
-
-
-// 0x1900679C
-static const u8 Dialog121[] = {
- _("NOoOoOoOoOoOoOoOon!\n"
- "Mario... Méchant petit!\n"
- "Cette fois-ci...\n"
- "...je suis cuit!!!\n"
- "Mes pouvoirs maléfiques\n"
- "disparaissent!\n"
- "Toutes mes troupes sont\n"
- "anéanties!\n"
- "La paix, l'amour et\n"
- "l'amitié sont de retour!\n"
- "AaAaAaAaAargh!\n"
- "C'est insupportable!\n"
- "Mais je reviendrai...\n"
- "Un jour... Je reviendrai!\n"
- "Et ce jour-là...\n"
- "Bye Bye Mario! BWA HA!!")
-};
-
-
-// 0x190068E0
-static const u8 Dialog122[] = {
- _("-Le Trou Noir-\n"
- "Droite: Plate-forme de\n"
- "////travail.\n"
- "////Labyrinthe\n"
- "////toxique.\n"
- "Gauche: Lac souterrain.")
-};
-
-
-// 0x19006948
-static const u8 Dialog123[] = {
- _("-Caverne Métallique-\n"
- "Droite: Vers la cascade.\n"
- "Gauche: Interrupteur des\n"
- "////casquettes-métal.")
-};
-
-
-// 0x190069A8
-static const u8 Dialog124[] = {
- _("Plate-forme de travail:\n"
- "Danger!\n"
- "Lire le mode d'emploi\n"
- "attentivement!!!\n"
- "Appuyez sur une flèche\n"
- "pour déplacer la plate-\n"
- "forme.\n"
- "\n"
- "Si jamais vous tombez de\n"
- "la plate-forme, retournez\n"
- "là où vous l'avez vue pour\n"
- "la première fois.")
-};
-
-
-// 0x19006A88
-static const u8 Dialog125[] = {
- _("Sortie du Labyrinthe\n"
- "toxique... Fermée!\n"
- "Faites demi-tour!")
-};
-
-
-// 0x19006AC0
-static const u8 Dialog126[] = {
- _("-Ascenseur 1-\n"
- "Haut:/ Trou Noir.\n"
- "Droite: Plate-forme de\n"
- "////travail.\n"
- "////Labyrinthe\n"
- "////toxique.")
-};
-
-
-// 0x19006B20
-static const u8 Dialog127[] = {
- _("-Lac Souterrain-\n"
- "Droite: Caverne\n"
- "////métallique.\n"
- "Gauche: Mine abandonnée\n"
- "////(Fermée).\n"
- "Gros Bibi, un gentil\n"
- "dragon, vit ici.\n"
- "Faites l'Attaque Rodéo\n"
- "sur son dos pour qu'il\n"
- "baisse la tête...")
-};
-
-
-// 0x19006BE0
-static const u8 Dialog128[] = {
- _("Tu dois te battre avec\n"
- "honneur! Il est interdit\n"
- "de jeter une personnalité\n"
- "royale hors de la surface\n"
- "de combat!")
-};
-
-
-// 0x19006C50
-static const u8 Dialog129[] = {
- _("Bienvenue dans\n"
- "le niveau des casquettes\n"
- "d'invisibilité!!!\n"
- "\n"
- "\n"
- "Si vous marchez sur\n"
- "l'interrupteur bleu, tous\n"
- "les blocs bleus deviendront\n"
- "solides...\n"
- "\n"
- "Si vous portez une\n"
- "casquette d'invisibilité,\n"
- "vous pourrez traverser vos\n"
- "ennemis et pleins d'autres\n"
- "choses...")
-};
-
-
-// 0x19006D50
-static const u8 Dialog130[] = {
- _("Bienvenue dans le niveau\n"
- "des casquettes-métal!!!\n"
- "Si vous marchez sur\n"
- "l'interrupteur vert, tous\n"
- "les blocs verts\n"
- "deviendront solides...\n"
- "Si vous portez une\n"
- "casquette-métal, vous\n"
- "vous transformerez en\n"
- "Métal Mario! Vous pourrez\n"
- "alors marcher sous l'eau.\n"
- "Faites un essai pour voir!")
-};
-
-
-// 0x19006E64
-static const u8 Dialog131[] = {
- _("Bienvenue dans le niveau\n"
- "des casquettes ailées!!!\n"
- "Marchez sur l'interrupteur\n"
- "rouge au sommet de la\n"
- "tour, au centre des\n"
- "anneaux arc-en-ciel.\n"
- "En actionnant\n"
- "l'interrupteur, tous les\n"
- "blocs rouges deviendront\n"
- "solides...\n"
- "\n"
- "\n"
- "Lorsque vous êtes en\n"
- "possession de la casquette\n"
- "ailée, faites un Triple\n"
- "Saut pour vous envoler et\n"
- "appuyez sur [Z] pour\n"
- "atterrir.\n"
- "Appuyez vers le bas sur le\n"
- "stick multidirectionnel\n"
- "pour prendre de l'altitude\n"
- "et vers le haut pour\n"
- "piquer du nez. Imaginez-\n"
- "vous à bord d'un 747!!!")
-};
-
-
-// 0x19007050
-static const u8 Dialog132[] = {
- _("Non, mais?\n"
- "Tu...tu...t'es fou?\n"
- "Tu triches?\n"
- "OK! T'es disqualifié!\n"
- "Tu l'auras pas volé!\n"
- "Houuuuuu! Le tricheur!")
-};
-
-
-// 0x190070C0
-static const u8 Dialog133[] = {
- _("Mario! C'est toi?\n"
- "Comme je suis heureux de\n"
- "te voir!\n"
- "La Princesse, comme nous\n"
- "tous, a été emprisonnée\n"
- "dans les murs du château.\n"
- "Bowser a volé les étoiles\n"
- "du château, et il utilise\n"
- "leur puissance pour se\n"
- "créer un monde dans les\n"
- "tableaux et les murs!\n"
- "\n"
- "Je t'en prie, retrouve les\n"
- "étoiles de puissance!\n"
- "Grâce à elles, tu pourras\n"
- "ouvrir les portes du\n"
- "château que Bowser a\n"
- "fermées...\n"
- "Il existe quatre pièces\n"
- "au rez-de-chaussée.\n"
- "Commence par celle dans\n"
- "laquelle tu trouveras le\n"
- "tableau représentant des\n"
- "Bob-ombs...\n"
- "Bowser a oublié de fermer\n"
- "cette porte. Lorsque tu\n"
- "auras récupéré 8 étoiles,\n"
- "va ouvrir la porte avec la\n"
- "grosse étoile: la Princesse\n"
- "doit être de l'autre côté!")
-};
-
-
-// 0x1900735C
-static const u8 Dialog134[] = {
- _("Le nom des étoiles inscrit\n"
- "au début de chaque monde\n"
- "est un indice!\n"
- "\n"
- "Tu peux récupérer les\n"
- "étoiles dans n'importe\n"
- "quel ordre.\n"
- "\n"
- "Mais la sélection d'une\n"
- "étoile peut impliquer\n"
- "l'apparition de nouveaux\n"
- "décors ou personnages...\n"
- "Après avoir récupéré des\n"
- "étoiles, tu peux tenter ta\n"
- "chance dans d'autres\n"
- "niveaux...\n"
- "Aide-nous le plus vite\n"
- "possible, mon mignon petit\n"
- "Mario en sucre...")
-};
-
-
-// 0x190074D4
-static const u8 Dialog135[] = {
- _("Bowser a volé les étoiles!\n"
- "Je l'ai vu!\n"
- "De mes propres yeux!\n"
- "Il faut que tu nous\n"
- "viennes en aide, Mario...\n"
- "\n"
- "Il a caché 6 étoiles dans\n"
- "chaque monde, mais tu ne\n"
- "pourras pas toutes les\n"
- "récupérer sans avoir\n"
- "actionné les interrupteurs\n"
- "de casquettes...\n"
- "Les étoiles que tu as\n"
- "récupérées apparaîtront à\n"
- "l'écran au début de\n"
- "chaque niveau...\n"
- "\n"
- "\n"
- "Si tu désires revoir les\n"
- "ennemis que tu as déjà\n"
- "vaincu, sélectionne les\n"
- "étoiles en relation avec\n"
- "ces ennemis...")
-};
-
-
-// 0x19007694
-static const u8 Dialog136[] = {
- _("Whoa!!! Tu as déjà\n"
- "récupéré autant d'étoiles?\n"
- "Incroyable! T'es fort, toi!\n"
- "Mais fais attention:\n"
- "Bowser et ses sbires sont\n"
- "des durs à cuire...\n"
- "N'oublie pas de récupérer\n"
- "des pièces pour regagner\n"
- "de l'énergie.\n"
- "Les pièces jaunes te\n"
- "rempliront une portion de\n"
- "ton énergie...\n"
- "Les pièces rouges t'en\n"
- "donneront deux et les\n"
- "pièces bleues, cinq.\n"
- "\n"
- "\n"
- "\n"
- "Pour faire apparaître des\n"
- "pièces bleues, fais une\n"
- "Attaque Rodéo sur un Bloc\n"
- "de pièces bleues.\n"
- "\n"
- "\n"
- "D'autre part, tu peux\n"
- "te faire moins mal en\n"
- "tombant d'une falaise, en\n"
- "effectuant une Attaque\n"
- "Rodéo juste avant de\n"
- "toucher le sol...")
-};
-
-
-// 0x190078CC
-static const u8 Dialog137[] = {
- _("Merci Mario!\n"
- "Grâce à tes étoiles de\n"
- "puissance, Bowser est allé\n"
- "se réfugier dans une\n"
- "autre partie du château!\n"
- "Au fait, savais-tu qu'une\n"
- "étoile de puissance\n"
- "apparaît à chaque fois\n"
- "que tu récupères 100\n"
- "pièces dans un niveau?")
-};
-
-
-// 0x190079AC
-static const u8 Dialog138[] = {
- _("-Ascenseur 2-\n"
- "Bas://Lac souterrain.\n"
- "Gauche: Trou Noir.\n"
- "Droite: Labyrinthe\n"
- "////toxique\n"
- "////(fermé).")
-};
-
-
-// 0x19007A10
-static const u8 Dialog139[] = {
- _("\n"
- "Au dessus:\n"
- "Chariot automatique.\n"
- "\n"
- "Le chariot se met en\n"
- "route automatiquement et\n"
- "suit un chemin pré-\n"
- "déterminé...\n"
- "Le chariot disparaîtra\n"
- "automatiquement lorsque\n"
- "vous tomberez...")
-};
-
-
-// 0x19007AC4
-static const u8 Dialog140[] = {
- _("-Plate-forme de travail-\n"
- "Droite: Entrée du\n"
- "////Labyrinthe\n"
- "////toxique.\n"
- "Gauche: Trou Noir.\n"
- "////Ascenseur 1.\n"
- "Flèche: Votre position\n"
- "////actuelle.")
-};
-
-
-// 0x19007B54
-static const u8 Dialog141[] = {
- _("Vous avez récupéré une\n"
- "des étoiles du château!\n"
- "Vous pouvez désormais\n"
- "ouvrir certaines portes!\n"
- "Essayez celle de la\n"
- "chambre de la Princesse\n"
- "Peach, en haut à droite\n"
- "dans le hall d'entrée...\n"
- "Essayez aussi celle menant\n"
- "au tableau de la\n"
- "Forteresse de Whomp,\n"
- "au rez-de-chaussée...\n"
- "Les troupes de Bowser\n"
- "sont encore nombreuses!\n"
- "Il faut les arrêter à tout\n"
- "prix! Courage...")
-};
-
-
-// 0x19007CC0
-static const u8 Dialog142[] = {
- _("Vous avez récupéré trois\n"
- "étoiles de puissance!\n"
- "Désormais, vous pouvez\n"
- "ouvrir les portes marquées\n"
- "d'un 『3』.\n"
- "Vous pouvez aller et venir\n"
- "dans les niveaux comme\n"
- "bon vous semble...\n"
- "\n"
- "\n"
- "Les ennemis qui vous\n"
- "attendent seront de plus\n"
- "en plus costauds!\n"
- "Alors, prudence...")
-};
-
-
-// 0x19007DC8
-static const u8 Dialog143[] = {
- _("Vous avez récupéré huit\n"
- "étoiles de puissance!\n"
- "Vous pouvez désormais\n"
- "ouvrir la porte marquée\n"
- "d'une grosse étoile!\n"
- "La Princesse est juste de\n"
- "l'autre côté...\n"
- "Pouvez-vous l'entendre\n"
- "crier votre nom?\n"
- "『Marioooooo!』")
-};
-
-
-// 0x19007E9C
-static const u8 Dialog144[] = {
- _("Vous avez récupéré 30\n"
- "étoiles de puissance!\n"
- "Vous pouvez désormais\n"
- "ouvrir la porte marquée\n"
- "d'une grosse étoile!\n"
- "Mais avant de foncer\n"
- "comme un dingue vers la\n"
- "porte, êtes-vous sûr de\n"
- "n'avoir rien oublié?\n"
- "\n"
- "Avez-vous enfoncé les\n"
- "deux piliers? Avez-vous\n"
- "toujours votre casquette?\n"
- "\n"
- "\n"
- "Si vous l'avez perdue\n"
- "dans le desert, allez\n"
- "botter le croupion du\n"
- "vilain vautour...\n"
- "\n"
- "On dit que Bowser s'est\n"
- "réfugié dans les\n"
- "profondeurs de l'océan...\n"
- "L'avez-vous rencontré?")
-};
-
-
-// 0x19008060
-static const u8 Dialog145[] = {
- _("Vous avez récupéré 50\n"
- "étoiles de puissance!\n"
- "Vous pouvez désormais\n"
- "ouvrir la porte marquée\n"
- "d'une grosse étoile au\n"
- "deuxième étage...\n"
- "Avez-vous trouvé les trois\n"
- "interrupteurs: rouge, vert\n"
- "et bleu?\n"
- "Les casquettes provenant\n"
- "des blocs de couleur\n"
- "peuvent être très utiles...\n"
- "Allez, en route Mario...\n"
- "Et que la force soit avec\n"
- "toi, petit homme.")
-};
-
-
-// 0x190081B4
-static const u8 Dialog146[] = {
- _("Vous avez récupéré 70\n"
- "étoiles de puissance!\n"
- "Désormais, vous pouvez\n"
- "accéder en haut de\n"
- "『l'escalier sans fin』...\n"
- "Le terrible Bowser vous y\n"
- "attend...\n"
- "Etes-vous prêt à\n"
- "l'affronter?")
-};
-
-
-// 0x19008268
-static const u8 Dialog147[] = {
- _("Faites-vous bon usage\n"
- "des casquettes spéciales?\n"
- "Elles peuvent vous être\n"
- "très utiles...\n"
- "\n"
- "\n"
- "Vous devez tout d'abord\n"
- "rendre les blocs de couleur\n"
- "solides en actionnant des\n"
- "interrupteurs secrets...\n"
- "\n"
- "\n"
- "Les blocs rouges vous\n"
- "fourniront des casquettes\n"
- "ailées, les bleus des\n"
- "casquettes d'invisibilité,\n"
- "et les verts des\n"
- "casquettes-métal...")
-};
-
-
-// 0x190083B0
-static const u8 Dialog148[] = {
- _("Montagne du Bonhomme de\n"
- "neige.../DANGER!\n"
- "Ne pas tenter le Triple\n"
- "Saut au-dessus de la\n"
- "machine à cracher des\n"
- "glaçons...\n"
- "Tomber dans le lac gelé\n"
- "vous fera vite perdre de\n"
- "l'énergie de façon\n"
- "permanente.\n"
- "Alors, attention!\n"
- "-Le Bonhomme de neige-")
-};
-
-
-// 0x190084A0
-static const u8 Dialog149[] = {
- _("Voici la Glissade Secrète\n"
- "de la Princesse Peach!\n"
- "Vous y trouverez une\n"
- "étoile secrète que Bowser\n"
- "n'a pas pu voler...\n"
- "Pendant que vous\n"
- "glisserez, appuyez vers\n"
- "l'avant pour accélérer, et\n"
- "vers l'arrière pour\n"
- "ralentir...\n"
- "Si vous glissez très vite,\n"
- "vous découvrirez une\n"
- "des étoiles secrètes du\n"
- "château!")
-};
-
-
-// 0x190085CC
-static const u8 Dialog150[] = {
- _("Whoa! Va-z'y, lui!\n"
- "T' as inondé ma zon-mé!!!\n"
- "Pourquoi t'as fait ça, yo!\n"
- "T'es pas cool, toi?\n"
- "Regarde! Mon toit est\n"
- "fichu, et mon plancher\n"
- "est trempé!\n"
- "NoOoOoOoOoOoOon!!!\n"
- "Ça me rend ouf de voir\n"
- "ça! Complètement chtarbé!\n"
- "C'est à cause de cette\n"
- "étoile...\n"
- "Je suis sûr qu'elle me\n"
- "porte la poisse...\n"
- "Saleté, va!")
-};
-
-
-// 0x190086FC
-static const u8 Dialog151[] = {
- _("Ah non! Ça suffit!\n"
- "D'abord tu me mouilles,\n"
- "ensuite tu m'écrases la\n"
- "face...\n"
- "Grrrr! Pas cool, Bob.\n"
- "Tu cherches le contact?")
-};
-
-
-// 0x19008778
-static const u8 Dialog152[] = {
- _("Gnaaaaa! Pov'type, va!\n"
- "Tiens, la v'là ton étoile!\n"
- "J'm'en fiche...\n"
- "J'peux en avoir d'autres.\n"
- "Allez, à la prochaine...\n"
- "Cool, Abdoul.")
-};
-
-
-// 0x190087FC
-static const u8 Dialog153[] = {
- _("Hé! Qui va là?\n"
- "Qui me grimpe dessus?\n"
- "Une mouche?\n"
- "Un moustique?\n"
- "Un cafard?\n"
- "T'as intérêt à dégager!\n"
- "Sinon j'te souffle dessus!")
-};
-
-
-// 0x1900887C
-static const u8 Dialog154[] = {
- _("Accroche-toi à ta\n"
- "casquette! Si jamais tu\n"
- "la perds, retourne la\n"
- "chercher là où tu l'as\n"
- "perdue...\n"
- "Sans elle tu peux te faire\n"
- "très mal...\n"
- "Alors, fais-y attention!\n"
- "\n"
- "\n"
- "Au fait, la Princesse est\n"
- "toujours emprisonnée dans\n"
- "les murs du château!\n"
- "Sauve-la, mon mignon\n"
- "Mario rouge et bleu...\n"
- "Heu... Tu savais qu'il\n"
- "existe aussi des niveaux\n"
- "dans les murs, hein?")
-};
-
-
-// 0x190089DC
-static const u8 Dialog155[] = {
- _("Grâce au pouvoir des\n"
- "étoiles, le château revient\n"
- "peu à peu à la vie...\n"
- "Je t'en prie Mario,\n"
- "va affronter Bowser!\n"
- "Connais-tu la salle du\n"
- "miroir? Fais attention à\n"
- "tout ce qui n'a pas de\n"
- "reflet...\n"
- "\n"
- "Autre chose: rentre dans\n"
- "le niveau Trempé-Séché\n"
- "à l'aide d'un grand saut.\n"
- "\n"
- "Allez, courage camarade!")
-};
-
-
-// 0x19008B04
-static const u8 Dialog156[] = {
- _("Le niveau de la pendule\n"
- "est étrange...\n"
- "\n"
- "Fais attention à la\n"
- "grande aiguille lorsque\n"
- "tu rentres dans l'horloge.")
-};
-
-
-// 0x19008B74
-static const u8 Dialog157[] = {
- _("Attention aux sables\n"
- "mouvants!\n"
- "Si vous vous faites\n"
- "avaler, tâchez de ne pas\n"
- "boire la tasse!\n"
- "Les zones sombres sont\n"
- "des trous sans fond...\n"
- "Alors, prudence jeune\n"
- "aventurier...")
-};
-
-
-// 0x19008C24
-static const u8 Dialog158[] = {
- _("1. Si vous sautez de\n"
- "façon répétée, vous\n"
- "sauterez de plus en plus\n"
- "haut. En courant et en\n"
- "sautant trois fois, vous\n"
- "ferez un Triple Saut.\n"
- "2. Sautez contre un mur\n"
- "et sautez à nouveau pour\n"
- "créer une Impulsion.\n"
- "Grâce à cette technique,\n"
- "vous pourrez accéder à\n"
- "des lieux en hauteur.")
-};
-
-
-// 0x19008D38
-static const u8 Dialog159[] = {
- _("3. En vous arrêtant, en\n"
- "appuyant sur [Z] et en\n"
- "sautant, vous ferez un\n"
- "Saut Périlleux en arrière.\n"
- "Pour faire un Saut en\n"
- "Longueur, courez, appuyez\n"
- "sur [Z], puis sautez.")
-};
-
-
-// 0x19008DDC
-static const u8 Dialog160[] = {
- _("Appuyez sur [B] lorsque\n"
- "vous courez pour faire\n"
- "une attaque en glissade.\n"
- "Pour vous remettre\n"
- "debout, appuyez sur [A] ou\n"
- "sur [B].")
-};
-
-
-// 0x19008E58
-static const u8 Dialog161[] = {
- _("Mario!?!?!\n"
- "C'est toi? Vraiment toi?\n"
- "Ça fait un bout de temps\n"
- "que je ne t'avais pas vu!\n"
- "Tu as grossi, non?\n"
- "On m'a dit de t'attendre\n"
- "ici, mais je commençais\n"
- "à perdre espoir...\n"
- "Alors c'est vrai? Tu as\n"
- "battu Bowser? Encore une\n"
- "fois? Il n'abandonne\n"
- "jamais ce gros reptile...\n"
- "Tu as récupéré toutes les\n"
- "étoiles? Tu as sauvé la\n"
- "Princesse Peach?\n"
- "T'es amoureux, non?\n"
- "Tiens...\n"
- "J'ai une lettre pour toi...\n"
- "C'est peut-être une\n"
- "admiratrice, qui sait?\n"
- "『Merci d'avoir joué au\n"
- "plus beau jeu de toute la\n"
- "galaxie:\n"
- "MARIO 64!!!\n"
- "Il reste sûrement des\n"
- "niveaux que vous ne\n"
- "connaissez pas par coeur,\n"
- "alors...\n"
- "Voici quelques munitions!\n"
- "A bientôt et merci!\n"
- "--Les créateurs de\n"
- "/Mario 64...")
-};
-
-
-// 0x190090F0
-static const u8 Dialog162[] = {
- _("Oh, non!\n"
- "Encore toi?\n"
- "T'es amoureux, ou quoi?\n"
- "Tu veux m'épouser?\n"
- "Désolé, mais tu n'es pas\n"
- "mon type...\n"
- "Mon truc à moi, c'est les\n"
- "femelles...\n"
- "Ah! Tu veux peut-être\n"
- "une étoile?\n"
- "OK. Mais j'te préviens:\n"
- "c'est la dernière fois!\n"
- "Ah... Autre chose...\n"
- "\n"
- "LACHE-MOI!!!!!\n"
- "GRANDE BRUTE!!!!!")
-};
-
-
-// 0x19009204
-static const u8 Dialog163[] = {
- _("NoOoOoOoOoOoOoOon!!!\n"
- "Tu...tu...tu m'as battu?\n"
- "Moi?!? C'est illogique!\n"
- "C'est moi le plus grand!\n"
- "Quoi? Il y avait 120\n"
- "étoiles en tout?!?\n"
- "Heu......\n"
- "Je le savais!\n"
- "Aaaargh! Le château\n"
- "regagne tous ses pouvoirs,\n"
- "c'est insupportable!\n"
- "GnAaAaAaAaAaAaAaArgh!\n"
- "A la prochaine, Mario...\n"
- "Tu sais bien que je ne\n"
- "suis pas du genre à\n"
- "abandonner si facilement!\n"
- "BWA HA HA HA HA HA HA!\n"
- "GWA HI HA HI HOU HEU!\n"
- "..... Atcha!")
-};
-
-
-// 0x19009398
-static const u8 Dialog164[] = {
- _("Beuuuuuuuu...\n"
- "J'ai trop mangé, moi...\n"
- "Beuuuuuuuu...\n"
- "Mm? Qui es-tu?\n"
- "Mario! Te voilà, rigolo!\n"
- "Ça te dit une petite\n"
- "course?\n"
- "A moins que tu aies peur!\n"
- "Alors, c'est d'accord?\n"
- "Prêt...\n"
- "\n"
- "//Partez!//Heu, non!")
-};
-
-
-// 0x19009460
-static const u8 Dialog165[] = {
- _("Tourner autour du poteau\n"
- "peut faire tourner les\n"
- "têtes...")
-};
-
-
-// 0x1900949C
-static const u8 Dialog166[] = {
- _("Je m'entraîne...\n"
- "Je reviens plus tard...\n"
- "\n"
- "-- Koopa-Rapido --")
-};
-
-
-// 0x190094DC
-static const u8 Dialog167[] = {
- _("En route vers le château!\n"
- "\n"
- "Appuyez sur [A] pour sauter\n"
- "et sur [Z] pour vous\n"
- "accroupir.\n"
- "Appuyez sur [B] pour\n"
- "attaquer ou pour attraper\n"
- "quelque chose. Appuyez à\n"
- "nouveau sur [B] pour lancer\n"
- "ce que vous portez.")
-};
-
-
-// 0x190095A4
-static const u8 Dialog168[] = {
- _("Hé! Lâche-moi un peu!\n"
- "Ça fait deux fois que tu\n"
- "t'essuies les pieds sur\n"
- "ma tête!\n"
- "Tu m'cherches ou quoi?\n"
- "Coup d'boule!!!!")
-};
-
-
-// 0x1900961C
-static const u8 Dialog169[] = {
- _("Dehors les touristes!\n"
- "Cette caverne est très\n"
- "dangereuse!!!\n"
- "Alors... DE-HORS!\n"
- "/ -- Le capitaine --")
-};
-
-
-// dialog entry table 0x19009680
-static const struct DialogEntry dialog_text_000 = {
- 1, 6, 30, 200, Dialog000
-};
-
-static const struct DialogEntry dialog_text_001 = {
- 1, 5, 95, 200, Dialog001
-};
-
-static const struct DialogEntry dialog_text_002 = {
- 1, 6, 95, 200, Dialog002
-};
-
-static const struct DialogEntry dialog_text_003 = {
- 1, 5, 95, 200, Dialog003
-};
-
-static const struct DialogEntry dialog_text_004 = {
- 1, 6, 95, 200, Dialog004
-};
-
-static const struct DialogEntry dialog_text_005 = {
- 1, 5, 30, 200, Dialog005
-};
-
-static const struct DialogEntry dialog_text_006 = {
- 1, 4, 30, 200, Dialog006
-};
-
-static const struct DialogEntry dialog_text_007 = {
- 1, 5, 30, 200, Dialog007
-};
-
-static const struct DialogEntry dialog_text_008 = {
- 1, 5, 30, 200, Dialog008
-};
-
-static const struct DialogEntry dialog_text_009 = {
- 1, 4, 30, 200, Dialog009
-};
-
-static const struct DialogEntry dialog_text_010 = {
- 1, 4, 30, 200, Dialog010
-};
-
-static const struct DialogEntry dialog_text_011 = {
- 1, 4, 30, 200, Dialog011
-};
-
-static const struct DialogEntry dialog_text_012 = {
- 1, 4, 30, 200, Dialog012
-};
-
-static const struct DialogEntry dialog_text_013 = {
- 1, 6, 30, 200, Dialog013
-};
-
-static const struct DialogEntry dialog_text_014 = {
- 1, 6, 30, 200, Dialog014
-};
-
-static const struct DialogEntry dialog_text_015 = {
- 1, 6, 30, 200, Dialog015
-};
-
-static const struct DialogEntry dialog_text_016 = {
- 1, 4, 30, 200, Dialog016
-};
-
-static const struct DialogEntry dialog_text_017 = {
- 1, 4, 30, 200, Dialog017
-};
-
-static const struct DialogEntry dialog_text_018 = {
- 1, 4, 30, 200, Dialog018
-};
-
-static const struct DialogEntry dialog_text_019 = {
- 1, 2, 30, 200, Dialog019
-};
-
-static const struct DialogEntry dialog_text_020 = {
- 1, 6, 95, 150, Dialog020
-};
-
-static const struct DialogEntry dialog_text_021 = {
- 1, 4, 95, 200, Dialog021
-};
-
-static const struct DialogEntry dialog_text_022 = {
- 1, 2, 95, 200, Dialog022
-};
-
-static const struct DialogEntry dialog_text_023 = {
- 1, 2, 95, 200, Dialog023
-};
-
-static const struct DialogEntry dialog_text_024 = {
- 1, 6, 95, 200, Dialog024
-};
-
-static const struct DialogEntry dialog_text_025 = {
- 1, 4, 95, 200, Dialog025
-};
-
-static const struct DialogEntry dialog_text_026 = {
- 1, 4, 95, 200, Dialog026
-};
-
-static const struct DialogEntry dialog_text_027 = {
- 1, 4, 95, 200, Dialog027
-};
-
-static const struct DialogEntry dialog_text_028 = {
- 1, 4, 95, 200, Dialog028
-};
-
-static const struct DialogEntry dialog_text_029 = {
- 1, 6, 95, 200, Dialog029
-};
-
-static const struct DialogEntry dialog_text_030 = {
- 1, 4, 30, 200, Dialog030
-};
-
-static const struct DialogEntry dialog_text_031 = {
- 1, 5, 30, 200, Dialog031
-};
-
-static const struct DialogEntry dialog_text_032 = {
- 1, 5, 30, 200, Dialog032
-};
-
-static const struct DialogEntry dialog_text_033 = {
- 1, 5, 30, 200, Dialog033
-};
-
-static const struct DialogEntry dialog_text_034 = {
- 1, 6, 30, 200, Dialog034
-};
-
-static const struct DialogEntry dialog_text_035 = {
- 1, 6, 30, 200, Dialog035
-};
-
-static const struct DialogEntry dialog_text_036 = {
- 1, 4, 30, 200, Dialog036
-};
-
-static const struct DialogEntry dialog_text_037 = {
- 1, 2, 30, 200, Dialog037
-};
-
-static const struct DialogEntry dialog_text_038 = {
- 1, 3, 95, 200, Dialog038
-};
-
-static const struct DialogEntry dialog_text_039 = {
- 1, 5, 30, 200, Dialog039
-};
-
-static const struct DialogEntry dialog_text_040 = {
- 1, 3, 30, 200, Dialog040
-};
-
-static const struct DialogEntry dialog_text_041 = {
- 1, 2, 30, 200, Dialog041
-};
-
-static const struct DialogEntry dialog_text_042 = {
- 1, 6, 30, 200, Dialog042
-};
-
-static const struct DialogEntry dialog_text_043 = {
- 1, 5, 30, 200, Dialog043
-};
-
-static const struct DialogEntry dialog_text_044 = {
- 1, 4, 95, 200, Dialog044
-};
-
-static const struct DialogEntry dialog_text_045 = {
- 1, 4, 95, 200, Dialog045
-};
-
-static const struct DialogEntry dialog_text_046 = {
- 1, 6, 30, 200, Dialog046
-};
-
-static const struct DialogEntry dialog_text_047 = {
- 1, 2, 95, 200, Dialog047
-};
-
-static const struct DialogEntry dialog_text_048 = {
- 1, 5, 30, 200, Dialog048
-};
-
-static const struct DialogEntry dialog_text_049 = {
- 1, 4, 30, 200, Dialog049
-};
-
-static const struct DialogEntry dialog_text_050 = {
- 1, 4, 30, 200, Dialog050
-};
-
-static const struct DialogEntry dialog_text_051 = {
- 1, 6, 30, 200, Dialog051
-};
-
-static const struct DialogEntry dialog_text_052 = {
- 1, 5, 30, 200, Dialog052
-};
-
-static const struct DialogEntry dialog_text_053 = {
- 1, 5, 30, 200, Dialog053
-};
-
-static const struct DialogEntry dialog_text_054 = {
- 1, 3, 30, 200, Dialog054
-};
-
-static const struct DialogEntry dialog_text_055 = {
- 1, 2, 30, 200, Dialog055
-};
-
-static const struct DialogEntry dialog_text_056 = {
- 1, 2, 30, 200, Dialog056
-};
-
-static const struct DialogEntry dialog_text_057 = {
- 1, 4, 30, 200, Dialog057
-};
-
-static const struct DialogEntry dialog_text_058 = {
- 1, 3, 30, 200, Dialog058
-};
-
-static const struct DialogEntry dialog_text_059 = {
- 1, 2, 30, 200, Dialog059
-};
-
-static const struct DialogEntry dialog_text_060 = {
- 1, 6, 30, 200, Dialog060
-};
-
-static const struct DialogEntry dialog_text_061 = {
- 1, 4, 30, 200, Dialog061
-};
-
-static const struct DialogEntry dialog_text_062 = {
- 1, 4, 30, 200, Dialog062
-};
-
-static const struct DialogEntry dialog_text_063 = {
- 1, 4, 30, 200, Dialog063
-};
-
-static const struct DialogEntry dialog_text_064 = {
- 1, 6, 30, 200, Dialog064
-};
-
-static const struct DialogEntry dialog_text_065 = {
- 1, 6, 30, 200, Dialog065
-};
-
-static const struct DialogEntry dialog_text_066 = {
- 1, 6, 30, 200, Dialog066
-};
-
-static const struct DialogEntry dialog_text_067 = {
- 1, 3, 30, 200, Dialog067
-};
-
-static const struct DialogEntry dialog_text_068 = {
- 1, 4, 30, 200, Dialog068
-};
-
-static const struct DialogEntry dialog_text_069 = {
- 1, 6, 30, 200, Dialog069
-};
-
-static const struct DialogEntry dialog_text_070 = {
- 1, 6, 30, 200, Dialog070
-};
-
-static const struct DialogEntry dialog_text_071 = {
- 1, 4, 30, 200, Dialog071
-};
-
-static const struct DialogEntry dialog_text_072 = {
- 1, 3, 30, 200, Dialog072
-};
-
-static const struct DialogEntry dialog_text_073 = {
- 1, 3, 95, 200, Dialog073
-};
-
-static const struct DialogEntry dialog_text_074 = {
- 1, 5, 30, 200, Dialog074
-};
-
-static const struct DialogEntry dialog_text_075 = {
- 1, 5, 30, 200, Dialog075
-};
-
-static const struct DialogEntry dialog_text_076 = {
- 1, 3, 30, 200, Dialog076
-};
-
-static const struct DialogEntry dialog_text_077 = {
- 1, 2, 150, 200, Dialog077
-};
-
-static const struct DialogEntry dialog_text_078 = {
- 1, 4, 30, 200, Dialog078
-};
-
-static const struct DialogEntry dialog_text_079 = {
- 1, 2, 30, 200, Dialog079
-};
-
-static const struct DialogEntry dialog_text_080 = {
- 1, 1, 30, 200, Dialog080
-};
-
-static const struct DialogEntry dialog_text_081 = {
- 1, 3, 30, 200, Dialog081
-};
-
-static const struct DialogEntry dialog_text_082 = {
- 1, 4, 30, 200, Dialog082
-};
-
-static const struct DialogEntry dialog_text_083 = {
- 1, 4, 30, 200, Dialog083
-};
-
-static const struct DialogEntry dialog_text_084 = {
- 1, 3, 30, 200, Dialog084
-};
-
-static const struct DialogEntry dialog_text_085 = {
- 1, 3, 30, 200, Dialog085
-};
-
-static const struct DialogEntry dialog_text_086 = {
- 1, 3, 30, 200, Dialog086
-};
-
-static const struct DialogEntry dialog_text_087 = {
- 1, 5, 30, 200, Dialog087
-};
-
-static const struct DialogEntry dialog_text_088 = {
- 1, 4, 30, 200, Dialog088
-};
-
-static const struct DialogEntry dialog_text_089 = {
- 1, 6, 95, 200, Dialog089
-};
-
-static const struct DialogEntry dialog_text_090 = {
- 1, 6, 30, 200, Dialog090
-};
-
-static const struct DialogEntry dialog_text_091 = {
- 1, 5, 30, 200, Dialog091
-};
-
-static const struct DialogEntry dialog_text_092 = {
- 1, 5, 30, 200, Dialog092
-};
-
-static const struct DialogEntry dialog_text_093 = {
- 1, 6, 30, 200, Dialog093
-};
-
-static const struct DialogEntry dialog_text_094 = {
- 1, 6, 30, 200, Dialog094
-};
-
-static const struct DialogEntry dialog_text_095 = {
- 1, 5, 30, 200, Dialog095
-};
-
-static const struct DialogEntry dialog_text_096 = {
- 1, 5, 30, 200, Dialog096
-};
-
-static const struct DialogEntry dialog_text_097 = {
- 1, 5, 30, 200, Dialog097
-};
-
-static const struct DialogEntry dialog_text_098 = {
- 1, 5, 95, 200, Dialog098
-};
-
-static const struct DialogEntry dialog_text_099 = {
- 1, 3, 95, 200, Dialog099
-};
-
-static const struct DialogEntry dialog_text_100 = {
- 1, 4, 95, 200, Dialog100
-};
-
-static const struct DialogEntry dialog_text_101 = {
- 1, 5, 95, 200, Dialog101
-};
-
-static const struct DialogEntry dialog_text_102 = {
- 1, 4, 30, 200, Dialog102
-};
-
-static const struct DialogEntry dialog_text_103 = {
- 1, 4, 95, 200, Dialog103
-};
-
-static const struct DialogEntry dialog_text_104 = {
- 1, 4, 30, 200, Dialog104
-};
-
-static const struct DialogEntry dialog_text_105 = {
- 1, 6, 95, 200, Dialog105
-};
-
-static const struct DialogEntry dialog_text_106 = {
- 1, 2, 95, 200, Dialog106
-};
-
-static const struct DialogEntry dialog_text_107 = {
- 1, 3, 95, 200, Dialog107
-};
-
-static const struct DialogEntry dialog_text_108 = {
- 1, 3, 95, 200, Dialog108
-};
-
-static const struct DialogEntry dialog_text_109 = {
- 1, 2, 95, 200, Dialog109
-};
-
-static const struct DialogEntry dialog_text_110 = {
- 1, 2, 95, 200, Dialog110
-};
-
-static const struct DialogEntry dialog_text_111 = {
- 1, 2, 95, 200, Dialog111
-};
-
-static const struct DialogEntry dialog_text_112 = {
- 1, 4, 30, 200, Dialog112
-};
-
-static const struct DialogEntry dialog_text_113 = {
- 1, 5, 30, 200, Dialog113
-};
-
-static const struct DialogEntry dialog_text_114 = {
- 1, 3, 95, 200, Dialog114
-};
-
-static const struct DialogEntry dialog_text_115 = {
- 1, 2, 95, 200, Dialog115
-};
-
-static const struct DialogEntry dialog_text_116 = {
- 1, 4, 95, 200, Dialog116
-};
-
-static const struct DialogEntry dialog_text_117 = {
- 1, 2, 95, 200, Dialog117
-};
-
-static const struct DialogEntry dialog_text_118 = {
- 1, 3, 95, 200, Dialog118
-};
-
-static const struct DialogEntry dialog_text_119 = {
- 1, 5, 30, 200, Dialog119
-};
-
-static const struct DialogEntry dialog_text_120 = {
- 1, 3, 30, 200, Dialog120
-};
-
-static const struct DialogEntry dialog_text_121 = {
- 1, 4, 30, 200, Dialog121
-};
-
-static const struct DialogEntry dialog_text_122 = {
- 1, 6, 30, 200, Dialog122
-};
-
-static const struct DialogEntry dialog_text_123 = {
- 1, 5, 30, 200, Dialog123
-};
-
-static const struct DialogEntry dialog_text_124 = {
- 1, 4, 30, 200, Dialog124
-};
-
-static const struct DialogEntry dialog_text_125 = {
- 1, 3, 30, 200, Dialog125
-};
-
-static const struct DialogEntry dialog_text_126 = {
- 1, 6, 30, 200, Dialog126
-};
-
-static const struct DialogEntry dialog_text_127 = {
- 1, 5, 30, 200, Dialog127
-};
-
-static const struct DialogEntry dialog_text_128 = {
- 1, 5, 95, 200, Dialog128
-};
-
-static const struct DialogEntry dialog_text_129 = {
- 1, 5, 30, 200, Dialog129
-};
-
-static const struct DialogEntry dialog_text_130 = {
- 1, 6, 30, 200, Dialog130
-};
-
-static const struct DialogEntry dialog_text_131 = {
- 1, 6, 30, 200, Dialog131
-};
-
-static const struct DialogEntry dialog_text_132 = {
- 1, 1, 30, 200, Dialog132
-};
-
-static const struct DialogEntry dialog_text_133 = {
- 1, 6, 30, 200, Dialog133
-};
-
-static const struct DialogEntry dialog_text_134 = {
- 1, 4, 30, 200, Dialog134
-};
-
-static const struct DialogEntry dialog_text_135 = {
- 1, 6, 30, 200, Dialog135
-};
-
-static const struct DialogEntry dialog_text_136 = {
- 1, 6, 30, 200, Dialog136
-};
-
-static const struct DialogEntry dialog_text_137 = {
- 1, 5, 30, 200, Dialog137
-};
-
-static const struct DialogEntry dialog_text_138 = {
- 1, 6, 30, 200, Dialog138
-};
-
-static const struct DialogEntry dialog_text_139 = {
- 1, 4, 30, 200, Dialog139
-};
-
-static const struct DialogEntry dialog_text_140 = {
- 1, 6, 30, 200, Dialog140
-};
-
-static const struct DialogEntry dialog_text_141 = {
- 1, 4, 150, 200, Dialog141
-};
-
-static const struct DialogEntry dialog_text_142 = {
- 1, 5, 150, 200, Dialog142
-};
-
-static const struct DialogEntry dialog_text_143 = {
- 1, 5, 150, 200, Dialog143
-};
-
-static const struct DialogEntry dialog_text_144 = {
- 1, 5, 150, 200, Dialog144
-};
-
-static const struct DialogEntry dialog_text_145 = {
- 1, 6, 150, 200, Dialog145
-};
-
-static const struct DialogEntry dialog_text_146 = {
- 1, 5, 150, 200, Dialog146
-};
-
-static const struct DialogEntry dialog_text_147 = {
- 1, 6, 30, 200, Dialog147
-};
-
-static const struct DialogEntry dialog_text_148 = {
- 1, 6, 30, 200, Dialog148
-};
-
-static const struct DialogEntry dialog_text_149 = {
- 1, 5, 30, 200, Dialog149
-};
-
-static const struct DialogEntry dialog_text_150 = {
- 1, 4, 30, 200, Dialog150
-};
-
-static const struct DialogEntry dialog_text_151 = {
- 1, 6, 30, 200, Dialog151
-};
-
-static const struct DialogEntry dialog_text_152 = {
- 1, 2, 30, 200, Dialog152
-};
-
-static const struct DialogEntry dialog_text_153 = {
- 1, 1, 30, 200, Dialog153
-};
-
-static const struct DialogEntry dialog_text_154 = {
- 1, 5, 30, 200, Dialog154
-};
-
-static const struct DialogEntry dialog_text_155 = {
- 1, 5, 30, 200, Dialog155
-};
-
-static const struct DialogEntry dialog_text_156 = {
- 1, 3, 30, 200, Dialog156
-};
-
-static const struct DialogEntry dialog_text_157 = {
- 1, 5, 30, 200, Dialog157
-};
-
-static const struct DialogEntry dialog_text_158 = {
- 1, 6, 30, 200, Dialog158
-};
-
-static const struct DialogEntry dialog_text_159 = {
- 1, 4, 30, 200, Dialog159
-};
-
-static const struct DialogEntry dialog_text_160 = {
- 1, 3, 30, 200, Dialog160
-};
-
-static const struct DialogEntry dialog_text_161 = {
- 1, 4, 30, 200, Dialog161
-};
-
-static const struct DialogEntry dialog_text_162 = {
- 1, 2, 30, 200, Dialog162
-};
-
-static const struct DialogEntry dialog_text_163 = {
- 1, 4, 30, 200, Dialog163
-};
-
-static const struct DialogEntry dialog_text_164 = {
- 1, 4, 30, 200, Dialog164
-};
-
-static const struct DialogEntry dialog_text_165 = {
- 1, 3, 30, 200, Dialog165
-};
-
-static const struct DialogEntry dialog_text_166 = {
- 1, 4, 30, 200, Dialog166
-};
-
-static const struct DialogEntry dialog_text_167 = {
- 1, 5, 30, 200, Dialog167
-};
-
-static const struct DialogEntry dialog_text_168 = {
- 1, 6, 30, 200, Dialog168
-};
-
-static const struct DialogEntry dialog_text_169 = {
- 1, 5, 30, 200, Dialog169
-};
-
-
-// dialog table
-// 0x0200A120
-const struct DialogEntry *const dialog_table_eu_fr[] = {
- &dialog_text_000, &dialog_text_001, &dialog_text_002, &dialog_text_003,
- &dialog_text_004, &dialog_text_005, &dialog_text_006, &dialog_text_007,
- &dialog_text_008, &dialog_text_009, &dialog_text_010, &dialog_text_011,
- &dialog_text_012, &dialog_text_013, &dialog_text_014, &dialog_text_015,
- &dialog_text_016, &dialog_text_017, &dialog_text_018, &dialog_text_019,
- &dialog_text_020, &dialog_text_021, &dialog_text_022, &dialog_text_023,
- &dialog_text_024, &dialog_text_025, &dialog_text_026, &dialog_text_027,
- &dialog_text_028, &dialog_text_029, &dialog_text_030, &dialog_text_031,
- &dialog_text_032, &dialog_text_033, &dialog_text_034, &dialog_text_035,
- &dialog_text_036, &dialog_text_037, &dialog_text_038, &dialog_text_039,
- &dialog_text_040, &dialog_text_041, &dialog_text_042, &dialog_text_043,
- &dialog_text_044, &dialog_text_045, &dialog_text_046, &dialog_text_047,
- &dialog_text_048, &dialog_text_049, &dialog_text_050, &dialog_text_051,
- &dialog_text_052, &dialog_text_053, &dialog_text_054, &dialog_text_055,
- &dialog_text_056, &dialog_text_057, &dialog_text_058, &dialog_text_059,
- &dialog_text_060, &dialog_text_061, &dialog_text_062, &dialog_text_063,
- &dialog_text_064, &dialog_text_065, &dialog_text_066, &dialog_text_067,
- &dialog_text_068, &dialog_text_069, &dialog_text_070, &dialog_text_071,
- &dialog_text_072, &dialog_text_073, &dialog_text_074, &dialog_text_075,
- &dialog_text_076, &dialog_text_077, &dialog_text_078, &dialog_text_079,
- &dialog_text_080, &dialog_text_081, &dialog_text_082, &dialog_text_083,
- &dialog_text_084, &dialog_text_085, &dialog_text_086, &dialog_text_087,
- &dialog_text_088, &dialog_text_089, &dialog_text_090, &dialog_text_091,
- &dialog_text_092, &dialog_text_093, &dialog_text_094, &dialog_text_095,
- &dialog_text_096, &dialog_text_097, &dialog_text_098, &dialog_text_099,
- &dialog_text_100, &dialog_text_101, &dialog_text_102, &dialog_text_103,
- &dialog_text_104, &dialog_text_105, &dialog_text_106, &dialog_text_107,
- &dialog_text_108, &dialog_text_109, &dialog_text_110, &dialog_text_111,
- &dialog_text_112, &dialog_text_113, &dialog_text_114, &dialog_text_115,
- &dialog_text_116, &dialog_text_117, &dialog_text_118, &dialog_text_119,
- &dialog_text_120, &dialog_text_121, &dialog_text_122, &dialog_text_123,
- &dialog_text_124, &dialog_text_125, &dialog_text_126, &dialog_text_127,
- &dialog_text_128, &dialog_text_129, &dialog_text_130, &dialog_text_131,
- &dialog_text_132, &dialog_text_133, &dialog_text_134, &dialog_text_135,
- &dialog_text_136, &dialog_text_137, &dialog_text_138, &dialog_text_139,
- &dialog_text_140, &dialog_text_141, &dialog_text_142, &dialog_text_143,
- &dialog_text_144, &dialog_text_145, &dialog_text_146, &dialog_text_147,
- &dialog_text_148, &dialog_text_149, &dialog_text_150, &dialog_text_151,
- &dialog_text_152, &dialog_text_153, &dialog_text_154, &dialog_text_155,
- &dialog_text_156, &dialog_text_157, &dialog_text_158, &dialog_text_159,
- &dialog_text_160, &dialog_text_161, &dialog_text_162, &dialog_text_163,
- &dialog_text_164, &dialog_text_165, &dialog_text_166, &dialog_text_167,
- &dialog_text_168, &dialog_text_169, NULL,
-};
-
diff --git a/text/eu/fr/level.c.in b/text/eu/fr/level.c.in
@@ -1,169 +0,0 @@
-// level names (EU, Français)
-// 0x1900A3CC
-static const u8 level_name_01[] = {
- _(" 1 BATAILLE DE BOB-OMB")
-};
-
-
-// 0x1900A3E4
-static const u8 level_name_02[] = {
- _(" 2 FORTERESSE DE WHOMP")
-};
-
-
-// 0x1900A3FC
-static const u8 level_name_03[] = {
- _(" 3 BAIE DES PIRATES")
-};
-
-
-// 0x1900A410
-static const u8 level_name_04[] = {
- _(" 4 MONTAGNE GLA-GLA")
-};
-
-
-// 0x1900A424
-static const u8 level_name_05[] = {
- _(" 5 MANOIR DE BIG BOO")
-};
-
-
-// 0x1900A43C
-static const u8 level_name_06[] = {
- _(" 6 CAVERNE BRUMEUSE")
-};
-
-
-// 0x1900A450
-static const u8 level_name_07[] = {
- _(" 7 LAVES FATALES")
-};
-
-
-// 0x1900A464
-static const u8 level_name_08[] = {
- _(" 8 SABLES TROP MOUVANTS")
-};
-
-
-// 0x1900A47C
-static const u8 level_name_09[] = {
- _(" 9 AFFREUX BASSIN")
-};
-
-
-// 0x1900A490
-static const u8 level_name_10[] = {
- _("10 CHEZ LE ROI DES NEIGES")
-};
-
-
-// 0x1900A4AC
-static const u8 level_name_11[] = {
- _("11 MONDE TREMPE-SECHE")
-};
-
-
-// 0x1900A4C4
-static const u8 level_name_12[] = {
- _("12 TROP HAUTE MONTAGNE")
-};
-
-
-// 0x1900A4DC
-static const u8 level_name_13[] = {
- _("13 ILE GRANDS-PETITS")
-};
-
-
-// 0x1900A4F4
-static const u8 level_name_14[] = {
- _("14 HORLOGE TIC-TAC")
-};
-
-
-// 0x1900A508
-static const u8 level_name_15[] = {
- _("15 COURSE ARC-EN-CIEL")
-};
-
-
-// 0x1900A520
-static const u8 level_name_16[] = {
- _(" BOWSER DES TENEBRES")
-};
-
-
-// 0x1900A538
-static const u8 level_name_17[] = {
- _(" BOWSER DES LAVES")
-};
-
-
-// 0x1900A54C
-static const u8 level_name_18[] = {
- _(" BOWSER DES CIEUX")
-};
-
-
-// 0x1900A560
-static const u8 level_name_19[] = {
- _(" GLISSADE DE LA PRINCESSE")
-};
-
-
-// 0x1900A57C
-static const u8 level_name_20[] = {
- _(" MINE DES CASQUETTES-METAL")
-};
-
-
-// 0x1900A59C
-static const u8 level_name_21[] = {
- _(" INTERRUPTEUR DE LA TOUR AILEE")
-};
-
-
-// 0x1900A5C0
-static const u8 level_name_22[] = {
- _(" INVISIBLE SOUS LES DOUVES")
-};
-
-
-// 0x1900A5E0
-static const u8 level_name_23[] = {
- _(" AU-DELA DE L'ARC-EN-CIEL")
-};
-
-
-// 0x1900A5FC
-static const u8 level_name_24[] = {
- _(" AQUARIUM SECRET")
-};
-
-
-// 0x1900A610
-static const u8 level_name_25[] = {
- _("")
-};
-
-
-// 0x1900A614
-static const u8 level_name_castle_secret_stars[] = {
- _(" ETOILES SECRETES")
-};
-
-
-// level name table
-// 0x1900A628
-const u8 *const level_name_table_eu_fr[] = {
- level_name_01, level_name_02, level_name_03, level_name_04,
- level_name_05, level_name_06, level_name_07, level_name_08,
- level_name_09, level_name_10, level_name_11, level_name_12,
- level_name_13, level_name_14, level_name_15, level_name_16,
- level_name_17, level_name_18, level_name_19, level_name_20,
- level_name_21, level_name_22, level_name_23, level_name_24,
- level_name_25, level_name_castle_secret_stars, 0x0,
-};
-
diff --git a/text/eu/fr/star.c.in b/text/eu/fr/star.c.in
@@ -1,613 +0,0 @@
-// act names (EU, Français)
-// 0x1900A694
-static const u8 act_name_00[] = {
- _("ROI BOB-OMB DU SOMMET")
-};
-
-
-// 0x1900A6AC
-static const u8 act_name_01[] = {
- _("COURSE CONTRE KOOPA-RAPIDO")
-};
-
-
-// 0x1900A6C8
-static const u8 act_name_02[] = {
- _("CANON VERS L'ILE PERCHEE")
-};
-
-
-// 0x1900A6E4
-static const u8 act_name_03[] = {
- _("LES 8 PIECES ROUGES")
-};
-
-
-// 0x1900A6F8
-static const u8 act_name_04[] = {
- _("VOL DU MARIO AILE")
-};
-
-
-// 0x1900A70C
-static const u8 act_name_05[] = {
- _("DERRIERE LA CAGE DE CHOMP")
-};
-
-
-// 0x1900A728
-static const u8 act_name_06[] = {
- _("DESTRUCTION DU GROS WHOMP")
-};
-
-
-// 0x1900A744
-static const u8 act_name_07[] = {
- _("EN HAUT DE LA FORTERESSE")
-};
-
-
-// 0x1900A760
-static const u8 act_name_08[] = {
- _("CANON VERS LES CIEUX")
-};
-
-
-// 0x1900A778
-static const u8 act_name_09[] = {
- _("PIECES ROUGES DANS LES AIRS")
-};
-
-
-// 0x1900A794
-static const u8 act_name_10[] = {
- _("TOMBEZ DANS LA CAGE PERCHEE")
-};
-
-
-// 0x1900A7B0
-static const u8 act_name_11[] = {
- _("CANON VERS UN MUR...")
-};
-
-
-// 0x1900A7C8
-static const u8 act_name_12[] = {
- _("PILLEZ LE BATEAU COULE")
-};
-
-
-// 0x1900A7E0
-static const u8 act_name_13[] = {
- _("L'ANGUILLE VEUT FAIRE JOUJOU?")
-};
-
-
-// 0x1900A800
-static const u8 act_name_14[] = {
- _("TRESOR DANS LA CAVERNE")
-};
-
-
-// 0x1900A818
-static const u8 act_name_15[] = {
- _("PIECES ROUGES A BORD!")
-};
-
-
-// 0x1900A830
-static const u8 act_name_16[] = {
- _("CANON VERS LES PILIERS")
-};
-
-
-// 0x1900A848
-static const u8 act_name_17[] = {
- _("DANS LE GEYSER")
-};
-
-
-// 0x1900A858
-static const u8 act_name_18[] = {
- _("GLISSADE SUR GLACE")
-};
-
-
-// 0x1900A86C
-static const u8 act_name_19[] = {
- _("PETIT PINGOUIN PERDU")
-};
-
-
-// 0x1900A884
-static const u8 act_name_20[] = {
- _("COURSE DU PINGOUIN")
-};
-
-
-// 0x1900A898
-static const u8 act_name_21[] = {
- _("8 PIECES ROUGES GIVREES")
-};
-
-
-// 0x1900A8B0
-static const u8 act_name_22[] = {
- _("BONHOMME DE NEIGE SANS TETE")
-};
-
-
-// 0x1900A8CC
-static const u8 act_name_23[] = {
- _("MURS POUR REBONDIR")
-};
-
-
-// 0x1900A8E0
-static const u8 act_name_24[] = {
- _("CHERCHEZ LE BIG BOO")
-};
-
-
-// 0x1900A8F4
-static const u8 act_name_25[] = {
- _("MANEGE DES BOOS PAS BEAUX")
-};
-
-
-// 0x1900A910
-static const u8 act_name_26[] = {
- _("SECRET DES LIVRES HANTES")
-};
-
-
-// 0x1900A92C
-static const u8 act_name_27[] = {
- _("TROUVEZ LES 8 PIECES ROUGES")
-};
-
-
-// 0x1900A948
-static const u8 act_name_28[] = {
- _("BALCON DE BIG BOO")
-};
-
-
-// 0x1900A95C
-static const u8 act_name_29[] = {
- _("UN OEIL SUR LES SALLES SECRETES")
-};
-
-
-// 0x1900A97C
-static const u8 act_name_30[] = {
- _("GROS BIBI DE LA CAVERNE")
-};
-
-
-// 0x1900A994
-static const u8 act_name_31[] = {
- _("CHARIOT POUR PIECES ROUGES")
-};
-
-
-// 0x1900A9B0
-static const u8 act_name_32[] = {
- _("COURSE DE METAL MARIO")
-};
-
-
-// 0x1900A9C8
-static const u8 act_name_33[] = {
- _("DANS LE LABYRINTHE TOXIQUE")
-};
-
-
-// 0x1900A9E4
-static const u8 act_name_34[] = {
- _("AU-DESSUS DES GAZ...")
-};
-
-
-// 0x1900A9FC
-static const u8 act_name_35[] = {
- _("ATTENTION AUX BOULETS")
-};
-
-
-// 0x1900AA14
-static const u8 act_name_36[] = {
- _("CRAMEZ LE GROS MOCHE")
-};
-
-
-// 0x1900AA2C
-static const u8 act_name_37[] = {
- _("POUSSEZ LES PETITS MOCHES")
-};
-
-
-// 0x1900AA48
-static const u8 act_name_38[] = {
- _("PUZZLE DE 8 PIECES ROUGES")
-};
-
-
-// 0x1900AA64
-static const u8 act_name_39[] = {
- _("BALADE SUR LA BUCHE")
-};
-
-
-// 0x1900AA78
-static const u8 act_name_40[] = {
- _("CHAUD DANS LE VOLCAN")
-};
-
-
-// 0x1900AA90
-static const u8 act_name_41[] = {
- _("ASCENCEUR DANS LE VOLCAN")
-};
-
-
-// 0x1900AAAC
-static const u8 act_name_42[] = {
- _("DANS LES GRIFFES DU VAUTOUR")
-};
-
-
-// 0x1900AAC8
-static const u8 act_name_43[] = {
- _("AU SOMMET DE LA PYRAMIDE")
-};
-
-
-// 0x1900AAE4
-static const u8 act_name_44[] = {
- _("DANS L'ANCIENNE PYRAMIDE")
-};
-
-
-// 0x1900AB00
-static const u8 act_name_45[] = {
- _("LES QUATRE PILIERS DE LA FOI")
-};
-
-
-// 0x1900AB20
-static const u8 act_name_46[] = {
- _("VOL VERS LES PIECES ROUGES")
-};
-
-
-// 0x1900AB3C
-static const u8 act_name_47[] = {
- _("ENIGME DE LA PYRAMIDE")
-};
-
-
-// 0x1900AB54
-static const u8 act_name_48[] = {
- _("SOUS-MARIN DE BOWSER")
-};
-
-
-// 0x1900AB6C
-static const u8 act_name_49[] = {
- _("COFFRES DANS LE COURANT")
-};
-
-
-// 0x1900AB84
-static const u8 act_name_50[] = {
- _("PERCHES POUR PIECES ROUGES")
-};
-
-
-// 0x1900ABA0
-static const u8 act_name_51[] = {
- _("DANS LE GEYSER")
-};
-
-
-// 0x1900ABB0
-static const u8 act_name_52[] = {
- _("RECOMPENSE DE LA RAIE")
-};
-
-
-// 0x1900ABC8
-static const u8 act_name_53[] = {
- _("ASSOCIATION DE CASQUETTES...")
-};
-
-
-// 0x1900ABE8
-static const u8 act_name_54[] = {
- _("GROSSE TETE DU BONHOMME")
-};
-
-
-// 0x1900AC00
-static const u8 act_name_55[] = {
- _("COMBATTEZ LE GROS MOCHE GIVRE")
-};
-
-
-// 0x1900AC20
-static const u8 act_name_56[] = {
- _("DANS LE GLAÇON")
-};
-
-
-// 0x1900AC30
-static const u8 act_name_57[] = {
- _("VRILLE DEPUIS LE LAC")
-};
-
-
-// 0x1900AC48
-static const u8 act_name_58[] = {
- _("CARAPACE POUR PIECES ROUGES")
-};
-
-
-// 0x1900AC64
-static const u8 act_name_59[] = {
- _("DANS L'IGLOO")
-};
-
-
-// 0x1900AC74
-static const u8 act_name_60[] = {
- _("MINI PLATES-FORMES FLECHEES!")
-};
-
-
-// 0x1900AC94
-static const u8 act_name_61[] = {
- _("SUR LES TOITS")
-};
-
-
-// 0x1900ACA4
-static const u8 act_name_62[] = {
- _("ENIGME DES CHIFFRES CACHES")
-};
-
-
-// 0x1900ACC0
-static const u8 act_name_63[] = {
- _("ASCENSEUR EXPRESS!")
-};
-
-
-// 0x1900ACD4
-static const u8 act_name_64[] = {
- _("PIECES ROUGES: VILLE ENGLOUTIE")
-};
-
-
-// 0x1900ACF4
-static const u8 act_name_65[] = {
- _("COURSE EN VILLE")
-};
-
-
-// 0x1900AD04
-static const u8 act_name_66[] = {
- _("ESCALADEZ LA MONTAGNE")
-};
-
-
-// 0x1900AD1C
-static const u8 act_name_67[] = {
- _("MYSTERE DE LA CAGE DU SINGE")
-};
-
-
-// 0x1900AD38
-static const u8 act_name_68[] = {
- _("PIECES ROUGES SUR CHAMPIGNON")
-};
-
-
-// 0x1900AD58
-static const u8 act_name_69[] = {
- _("PAROI MYSTERIEUSE")
-};
-
-
-// 0x1900AD6C
-static const u8 act_name_70[] = {
- _("PANORAMA DU PONT")
-};
-
-
-// 0x1900AD80
-static const u8 act_name_71[] = {
- _("CANON VERS LE CHAMPIGNON")
-};
-
-
-// 0x1900AD9C
-static const u8 act_name_72[] = {
- _("DETRUISEZ LES MAXI-CARNIVORES")
-};
-
-
-// 0x1900ADBC
-static const u8 act_name_73[] = {
- _("AU SOMMET DE L'ILE DES GEANTS")
-};
-
-
-// 0x1900ADDC
-static const u8 act_name_74[] = {
- _("KOOPA-RAPIDO, LA VENGEANCE")
-};
-
-
-// 0x1900ADF8
-static const u8 act_name_75[] = {
- _("CINQ TOUT PETITS SECRETS")
-};
-
-
-// 0x1900AE14
-static const u8 act_name_76[] = {
- _("LES PIECES ROUGES DU GIGOTEUR")
-};
-
-
-// 0x1900AE34
-static const u8 act_name_77[] = {
- _("ENERVEZ LE GIGOTEUR")
-};
-
-
-// 0x1900AE48
-static const u8 act_name_78[] = {
- _("ROULEMENTS DANS LA CAGE")
-};
-
-
-// 0x1900AE60
-static const u8 act_name_79[] = {
- _("LES TROUS ET LE PENDULE")
-};
-
-
-// 0x1900AE78
-static const u8 act_name_80[] = {
- _("CHEVAUCHEZ L'AIGUILLE")
-};
-
-
-// 0x1900AE90
-static const u8 act_name_81[] = {
- _("L'ECRABOUILLEUR")
-};
-
-
-// 0x1900AEA0
-static const u8 act_name_82[] = {
- _("SAUTS SYNCHRONISES")
-};
-
-
-// 0x1900AEB4
-static const u8 act_name_83[] = {
- _("L'HEURE PILE POUR LES PIECES")
-};
-
-
-// 0x1900AED4
-static const u8 act_name_84[] = {
- _("CROISIERE SUR L'ARC-EN-CIEL")
-};
-
-
-// 0x1900AEF0
-static const u8 act_name_85[] = {
- _("MANOIR DANS LES AIRS")
-};
-
-
-// 0x1900AF08
-static const u8 act_name_86[] = {
- _("LABYRINTHE DES PIECES ROUGES")
-};
-
-
-// 0x1900AF28
-static const u8 act_name_87[] = {
- _("BALANÇOIRE CELESTE")
-};
-
-
-// 0x1900AF3C
-static const u8 act_name_88[] = {
- _("VICIEUX TRIANGLES!")
-};
-
-
-// 0x1900AF50
-static const u8 act_name_89[] = {
- _("L'ARC-EN-CIEL ET AU-DELA")
-};
-
-
-// 0x1900AF6C
-static const u8 act_name_90[] = {
- _("UNE ETOILE SECRETE DU CHATEAU")
-};
-
-
-// 0x1900AF8C
-static const u8 act_name_91[] = {
- _("")
-};
-
-
-// 0x1900AF90
-static const u8 act_name_92[] = {
- _("")
-};
-
-
-// 0x1900AF94
-static const u8 act_name_93[] = {
- _("")
-};
-
-
-// 0x1900AF98
-static const u8 act_name_94[] = {
- _("")
-};
-
-
-// 0x1900AF9C
-static const u8 act_name_95[] = {
- _("")
-};
-
-
-// 0x1900AFA0
-static const u8 act_name_96[] = {
- _("")
-};
-
-
-// act name table
-// 0x1900AFA4
-const u8 *const act_name_table_eu_fr[] = {
- act_name_00, act_name_01, act_name_02, act_name_03,
- act_name_04, act_name_05, act_name_06, act_name_07,
- act_name_08, act_name_09, act_name_10, act_name_11,
- act_name_12, act_name_13, act_name_14, act_name_15,
- act_name_16, act_name_17, act_name_18, act_name_19,
- act_name_20, act_name_21, act_name_22, act_name_23,
- act_name_24, act_name_25, act_name_26, act_name_27,
- act_name_28, act_name_29, act_name_30, act_name_31,
- act_name_32, act_name_33, act_name_34, act_name_35,
- act_name_36, act_name_37, act_name_38, act_name_39,
- act_name_40, act_name_41, act_name_42, act_name_43,
- act_name_44, act_name_45, act_name_46, act_name_47,
- act_name_48, act_name_49, act_name_50, act_name_51,
- act_name_52, act_name_53, act_name_54, act_name_55,
- act_name_56, act_name_57, act_name_58, act_name_59,
- act_name_60, act_name_61, act_name_62, act_name_63,
- act_name_64, act_name_65, act_name_66, act_name_67,
- act_name_68, act_name_69, act_name_70, act_name_71,
- act_name_72, act_name_73, act_name_74, act_name_75,
- act_name_76, act_name_77, act_name_78, act_name_79,
- act_name_80, act_name_81, act_name_82, act_name_83,
- act_name_84, act_name_85, act_name_86, act_name_87,
- act_name_88, act_name_89, act_name_90, act_name_91,
- act_name_92, act_name_93, act_name_94, act_name_95,
- act_name_96, 0x0,
-};
-
diff --git a/text/fr/courses.h b/text/fr/courses.h
@@ -0,0 +1,80 @@
+COURSE_ACTS(COURSE_BOB, _(" 1 BATAILLE DE BOB-OMB"),
+ _("ROI BOB-OMB DU SOMMET") , _("COURSE CONTRE KOOPA-RAPIDO") , _("CANON VERS L'ILE PERCHEE"),
+ _("LES 8 PIECES ROUGES") , _("VOL DU MARIO AILE") , _("DERRIERE LA CAGE DE CHOMP"))
+
+COURSE_ACTS(COURSE_WF, _(" 2 FORTERESSE DE WHOMP"),
+ _("DESTRUCTION DU GROS WHOMP") , _("EN HAUT DE LA FORTERESSE") , _("CANON VERS LES CIEUX"),
+ _("PIECES ROUGES DANS LES AIRS") , _("TOMBEZ DANS LA CAGE PERCHEE") , _("CANON VERS UN MUR..."))
+
+COURSE_ACTS(COURSE_JRB, _(" 3 BAIE DES PIRATES"),
+ _("PILLEZ LE BATEAU COULE") , _("L'ANGUILLE VEUT FAIRE JOUJOU?") , _("TRESOR DANS LA CAVERNE"),
+ _("PIECES ROUGES A BORD!") , _("CANON VERS LES PILIERS") , _("DANS LE GEYSER"))
+
+COURSE_ACTS(COURSE_CCM, _(" 4 MONTAGNE GLA-GLA"),
+ _("GLISSADE SUR GLACE") , _("PETIT PINGOUIN PERDU") , _("COURSE DU PINGOUIN"),
+ _("8 PIECES ROUGES GIVREES") , _("BONHOMME DE NEIGE SANS TETE") , _("MURS POUR REBONDIR"))
+
+COURSE_ACTS(COURSE_BBH, _(" 5 MANOIR DE BIG BOO"),
+ _("CHERCHEZ LE BIG BOO") , _("MANEGE DES BOOS PAS BEAUX") , _("SECRET DES LIVRES HANTES"),
+ _("TROUVEZ LES 8 PIECES ROUGES") , _("BALCON DE BIG BOO") , _("UN OEIL SUR LES SALLES SECRETES"))
+
+COURSE_ACTS(COURSE_HMC, _(" 6 CAVERNE BRUMEUSE"),
+ _("GROS BIBI DE LA CAVERNE") , _("CHARIOT POUR PIECES ROUGES") , _("COURSE DE METAL MARIO"),
+ _("DANS LE LABYRINTHE TOXIQUE") , _("AU-DESSUS DES GAZ...") , _("ATTENTION AUX BOULETS"))
+
+COURSE_ACTS(COURSE_LLL, _(" 7 LAVES FATALES"),
+ _("CRAMEZ LE GROS MOCHE") , _("POUSSEZ LES PETITS MOCHES") , _("PUZZLE DE 8 PIECES ROUGES"),
+ _("BALADE SUR LA BUCHE") , _("CHAUD DANS LE VOLCAN") , _("ASCENCEUR DANS LE VOLCAN"))
+
+COURSE_ACTS(COURSE_SSL, _(" 8 SABLES TROP MOUVANTS"),
+ _("DANS LES GRIFFES DU VAUTOUR") , _("AU SOMMET DE LA PYRAMIDE") , _("DANS L'ANCIENNE PYRAMIDE"),
+ _("LES QUATRE PILIERS DE LA FOI") , _("VOL VERS LES PIECES ROUGES") , _("ENIGME DE LA PYRAMIDE"))
+
+COURSE_ACTS(COURSE_DDD, _(" 9 AFFREUX BASSIN"),
+ _("SOUS-MARIN DE BOWSER") , _("COFFRES DANS LE COURANT") , _("PERCHES POUR PIECES ROUGES"),
+ _("DANS LE GEYSER") , _("RECOMPENSE DE LA RAIE") , _("ASSOCIATION DE CASQUETTES..."))
+
+COURSE_ACTS(COURSE_SL, _("10 CHEZ LE ROI DES NEIGES"),
+ _("GROSSE TETE DU BONHOMME") , _("COMBATTEZ LE GROS MOCHE GIVRE") , _("DANS LE GLAÇON"),
+ _("VRILLE DEPUIS LE LAC") , _("CARAPACE POUR PIECES ROUGES") , _("DANS L'IGLOO"))
+
+COURSE_ACTS(COURSE_WDW, _("11 MONDE TREMPE-SECHE"),
+ _("MINI PLATES-FORMES FLECHEES!") , _("SUR LES TOITS") , _("ENIGME DES CHIFFRES CACHES"),
+ _("ASCENSEUR EXPRESS!") , _("PIECES ROUGES: VILLE ENGLOUTIE"), _("COURSE EN VILLE"))
+
+COURSE_ACTS(COURSE_TTM, _("12 TROP HAUTE MONTAGNE"),
+ _("ESCALADEZ LA MONTAGNE") , _("MYSTERE DE LA CAGE DU SINGE") , _("PIECES ROUGES SUR CHAMPIGNON"),
+ _("PAROI MYSTERIEUSE") , _("PANORAMA DU PONT") , _("CANON VERS LE CHAMPIGNON"))
+
+COURSE_ACTS(COURSE_THI, _("13 ILE GRANDS-PETITS"),
+ _("DETRUISEZ LES MAXI-CARNIVORES") , _("AU SOMMET DE L'ILE DES GEANTS") , _("KOOPA-RAPIDO, LA VENGEANCE"),
+ _("CINQ TOUT PETITS SECRETS") , _("LES PIECES ROUGES DU GIGOTEUR") , _("ENERVEZ LE GIGOTEUR"))
+
+COURSE_ACTS(COURSE_TTC, _("14 HORLOGE TIC-TAC"),
+ _("ROULEMENTS DANS LA CAGE") , _("LES TROUS ET LE PENDULE") , _("CHEVAUCHEZ L'AIGUILLE"),
+ _("L'ECRABOUILLEUR") , _("SAUTS SYNCHRONISES") , _("L'HEURE PILE POUR LES PIECES"))
+
+COURSE_ACTS(COURSE_RR, _("15 COURSE ARC-EN-CIEL"),
+ _("CROISIERE SUR L'ARC-EN-CIEL") , _("MANOIR DANS LES AIRS") , _("LABYRINTHE DES PIECES ROUGES"),
+ _("BALANÇOIRE CELESTE") , _("VICIEUX TRIANGLES!") , _("L'ARC-EN-CIEL ET AU-DELA"))
+
+SECRET_STAR(COURSE_BITDW, _(" BOWSER DES TENEBRES"))
+SECRET_STAR(COURSE_BITFS, _(" BOWSER DES LAVES"))
+SECRET_STAR(COURSE_BITS, _(" BOWSER DES CIEUX"))
+SECRET_STAR(COURSE_PSS, _(" GLISSADE DE LA PRINCESSE"))
+SECRET_STAR(COURSE_COTMC, _(" MINE DES CASQUETTES-METAL"))
+SECRET_STAR(COURSE_TOTWC, _(" INTERRUPTEUR DE LA TOUR AILEE"))
+SECRET_STAR(COURSE_VCUTM, _(" INVISIBLE SOUS LES DOUVES"))
+SECRET_STAR(COURSE_WMOTR, _(" AU-DELA DE L'ARC-EN-CIEL"))
+SECRET_STAR(COURSE_SA, _(" AQUARIUM SECRET"))
+SECRET_STAR(COURSE_CAKE_END, _(""))
+
+CASTLE_SECRET_STARS(_(" ETOILES SECRETES"))
+
+EXTRA_TEXT(0, _("UNE ETOILE SECRETE DU CHATEAU"))
+EXTRA_TEXT(1, _(""))
+EXTRA_TEXT(2, _(""))
+EXTRA_TEXT(3, _(""))
+EXTRA_TEXT(4, _(""))
+EXTRA_TEXT(5, _(""))
+EXTRA_TEXT(6, _(""))
diff --git a/text/fr/dialogs.h b/text/fr/dialogs.h
@@ -0,0 +1,2297 @@
+// Parameters: dialog enum ID, (unused), lines per box, left offset, width
+
+DEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _("\
+Incroyable! Vous voilà\n\
+propulsé au beau milieu\n\
+d'un champ de bataille!\n\
+\n\
+\n\
+\n\
+Vous trouverez dans les\n\
+mondes au milieu des\n\
+tableaux les étoiles que\n\
+Bowser a dérobées...\n\
+\n\
+\n\
+Tout d'abord, parlez au\n\
+gentil Bob-omb (appuyez\n\
+sur [B] pour parler). Il\n\
+vous aidera sûrement,\n\
+ainsi que ses camarades\n\
+dans d'autres niveaux...\n\
+Pour lire une pancarte:\n\
+arrêtez-vous, faites face\n\
+au panneau et appuyez sur\n\
+[B]. Appuyez sur [A] ou [B]\n\
+pour lire la suite du\n\
+texte."))
+
+DEFINE_DIALOG(DIALOG_001, 1, 5, 95, 200, _("\
+Attention! Si tu te\n\
+promènes par ici, tu\n\
+risques de te faire\n\
+écrabouiller par une bombe\n\
+à eau!\n\
+Les méchants Bob-ombs\n\
+adorent se bagarrer, et\n\
+ils trouvent toujours le\n\
+moyen d'attaquer\n\
+quelqu'un...\n\
+Cette prairie est devenue\n\
+un champ de bataille\n\
+depuis que le Roi Bob-omb\n\
+s'est approprié l'étoile de\n\
+puissance.\n\
+Peux-tu aller chercher\n\
+l'étoile pour nous?\n\
+\n\
+\n\
+\n\
+Traverse le pont, va à\n\
+gauche et prends le\n\
+chemin vers le haut pour\n\
+trouver le Roi Bob-omb.\n\
+\n\
+Reviens me voir lorsque tu\n\
+auras récupéré l'étoile de\n\
+puissance!"))
+
+DEFINE_DIALOG(DIALOG_002, 1, 6, 95, 200, _("\
+Hé, toi! C'est dangereux\n\
+par ici! Alors écoute bien\n\
+mon conseil:\n\
+\n\
+\n\
+\n\
+Traverse les deux ponts\n\
+devant toi, tout en\n\
+faisant attention aux\n\
+bombes à eau.\n\
+\n\
+\n\
+Le Roi Bob-omb au\n\
+sommet de la montagne\n\
+est très puissant...\n\
+Ne le laisse pas\n\
+t'attraper!\n\
+\n\
+Nous sommes de gentils\n\
+Bob-ombs, et nous sommes\n\
+de ton côté.\n\
+N'hésite pas à venir nous\n\
+parler à chaque fois que\n\
+tu en as envie!"))
+
+DEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _("\
+Merci beaucoup Mario!\n\
+Tu as éclaté le vilain Roi\n\
+Bob-omb comme une vieille\n\
+figue! Mais tout ceci\n\
+n'est qu'un début...\n\
+D'autres gros méchants\n\
+pas beaux détiennent des\n\
+étoiles de puissance.\n\
+\n\
+\n\
+Si tu récupères d'autres\n\
+étoiles, tu pourras ouvrir\n\
+de nouvelles portes menant\n\
+à de nouveaux mondes!\n\
+\n\
+Mes camarades Bob-ombs\n\
+t'attendent. Si tu leur\n\
+parles, ils te prépareront\n\
+de jolis canons!"))
+
+DEFINE_DIALOG(DIALOG_004, 1, 6, 95, 200, _("\
+Nous sommes des\n\
+Bob-ombs pacifiques, nous\n\
+n'utilisons pas de canons.\n\
+\n\
+\n\
+\n\
+Mais si tu désires foncer\n\
+vers les cieux,\n\
+No Problemo: nous\n\
+nous ferons une joie de te\n\
+préparer tous les canons\n\
+de ce niveau. Bon voyage!"))
+
+DEFINE_DIALOG(DIALOG_005, 1, 5, 30, 200, _("\
+Hé, Mario! C'est vrai ce\n\
+qu'on raconte? Tu as\n\
+vraiment battu le Roi\n\
+Bob-omb? Cool!\n\
+\n\
+Tu dois être vachement\n\
+fort et rapide! Mais\n\
+es-tu aussi rapide que\n\
+moi, Koopa-Rapido?\n\
+Je crois bien que non...\n\
+Ça te dirait une petite\n\
+course jusqu'au sommet\n\
+de la montagne, là où\n\
+était le Roi Bob-omb?\n\
+Alors, qu'en dis-tu?\n\
+Lorsque je dis 『partez』,\n\
+la course commence...\n\
+Prêt...\n\
+\n\
+//Partez!//Heu, non."))
+
+DEFINE_DIALOG(DIALOG_006, 1, 4, 30, 200, _("\
+Hé! Tu te moques de moi,\n\
+p'tit nain pas beau?\n\
+Tu dois courir du début\n\
+jusqu'à la fin!\n\
+A plus tard. Reviens me\n\
+voir lorsque tu arrêteras\n\
+de tricher..."))
+
+DEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _("\
+Heuufff...fff...peufff...\n\
+Whoa! Tu...es...vraiment\n\
+rapide...pour un nabot!\n\
+Tu viens de l'espace?\n\
+Tiens, tu l'as méritée!"))
+
+DEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _("\
+ATTENTION AU CHOMP\n\
+ENCHAINE!!!\n\
+Danger! Approchez-vous\n\
+et appuyez sur [C]^ pour\n\
+jeter un oeil.\n\
+Impressionnant, non?\n\
+Avez-vous remarqué la\n\
+pièce rouge sur le rondin?\n\
+Lorsque vous collecterez 8\n\
+pièces comme celle-ci,\n\
+une étoile apparaîtra\n\
+dans le pré de l'autre\n\
+côté du pont..."))
+
+DEFINE_DIALOG(DIALOG_009, 1, 4, 30, 200, _("\
+Ça fait longtemps qu'on\n\
+ne s'était pas vu, Mario!\n\
+Fouiii! Tu es devenu super\n\
+rapide!\n\
+Tu t'es entraîné aux Jeux\n\
+Olympiques ou les étoiles\n\
+te rendent ultra-méga-\n\
+puissant?\n\
+Je n'ai pas encore avalé\n\
+ma défaite de l'autre\n\
+fois... Mais ici c'est mon\n\
+territoire.\n\
+Tu veux faire le match\n\
+retour? L'arrivée est\n\
+dans la vallée Valvent...\n\
+\n\
+Prêt...\n\
+\n\
+\n\
+//Partez!// Heu, non."))
+
+DEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _("\
+Vous venez d'actionner\n\
+l'interrupteur des\n\
+casquettes ailées...\n\
+\n\
+Si vous portez une\n\
+casquette ailée, vous\n\
+pourrez voler comme un\n\
+oiseau.\n\
+Désormais des casquettes\n\
+ailées surgiront des blocs\n\
+rouges que vous\n\
+détruirez...\n\
+Voulez-vous sauvegarder?\n\
+\n\
+//Oui////Non."))
+
+DEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _("\
+Vous venez d'actionner\n\
+l'interrupteur des\n\
+casquettes-métal!\n\
+\n\
+Grâce aux casquettes-\n\
+métal, Mario peut devenir\n\
+invincible!\n\
+\n\
+Désormais, des\n\
+casquettes-métal\n\
+surgiront des blocs verts\n\
+que vous détruirez...\n\
+Voulez-vous sauvegarder?\n\
+\n\
+//Oui////Non."))
+
+DEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _("\
+Vous venez d'actionner\n\
+l'interrupteur des\n\
+casquettes d'invisibilité.\n\
+\n\
+En portant une casquette\n\
+d'invisibilité, Mario\n\
+disparaîtra...\n\
+\n\
+Désormais des casquettes\n\
+d'invisibilité surgiront\n\
+des blocs bleus que vous\n\
+détruirez...\n\
+Voulez-vous sauvegarder?\n\
+\n\
+//Oui////Non."))
+
+DEFINE_DIALOG(DIALOG_013, 1, 6, 30, 200, _("\
+Vous avez récupéré 100\n\
+pièces! Mario sera\n\
+désormais plus puissant!\n\
+Voulez-vous sauvegarder?\n\
+\n\
+//Oui////Non."))
+
+DEFINE_DIALOG(DIALOG_014, 1, 6, 30, 200, _("\
+Whoa, génial! Une autre\n\
+étoile de puissance! Mario\n\
+devient de plus en plus\n\
+courageux!\n\
+Voulez-vous sauvegarder?\n\
+//Oui////Non."))
+
+DEFINE_DIALOG(DIALOG_015, 1, 6, 30, 200, _("\
+Vous pouvez frapper vos\n\
+ennemis et les assommer.\n\
+Appuyez sur [A] pour sauter\n\
+et sur [B] pour donner un\n\
+coup de poing. Appuyez sur\n\
+[A] et sur [B] pour donner un\n\
+coup de pied, et sur [B]\n\
+pour ramasser quelque\n\
+chose. Pour lancer ce que\n\
+vous portez, appuyez sur\n\
+[B] à nouveau."))
+
+DEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _("\
+Si vous sautez sur une\n\
+carapace brillante, vous\n\
+pourrez aller n'importe où\n\
+et détruire vos ennemis!"))
+
+DEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _("\
+Je suis le Roi Bob-omb,\n\
+seigneur des explosions.\n\
+Je te félicite d'être\n\
+arrivé jusqu'ici, petit.\n\
+Si tu veux l'étoile de\n\
+puissance, il va falloir me\n\
+jeter au sol.\n\
+\n\
+Es-tu capable de soulever\n\
+mon royal fessier?\n\
+En garde, moucheron!"))
+
+DEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _("\
+SILENCE! Je dors!\n\
+Gare à l'imprudent qui\n\
+oserait me reveiller...\n\
+Marchez doucement, sinon!"))
+
+DEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _("\
+CHUT! Marchez doucement\n\
+dans les couloirs!!!"))
+
+DEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _("\
+Mon très cher Mario:\n\
+Viens vite au château,\n\
+je t'ai préparé un\n\
+délicieux gâteau...\n\
+A bientôt,\n\
+Princesse Toadstool."))
+
+DEFINE_DIALOG(DIALOG_021, 1, 4, 95, 200, _("\
+Bienvenue l'ami!\n\
+Ici il n'y a personne,\n\
+alors dégage, moustique!\n\
+GWA HA HA HA HA HA!!!"))
+
+DEFINE_DIALOG(DIALOG_022, 1, 2, 95, 200, _("\
+Cette porte est fermée\n\
+à clé..."))
+
+DEFINE_DIALOG(DIALOG_023, 1, 2, 95, 200, _("\
+Ce n'est pas la bonne clé.\n\
+Peut-être à la cave..."))
+
+DEFINE_DIALOG(DIALOG_024, 1, 6, 95, 200, _("\
+Vous avez besoin de la\n\
+puissance des étoiles pour\n\
+ouvrir cette porte.\n\
+Récupérez des étoiles en\n\
+combattant des ennemis à\n\
+l'intérieur des tableaux..."))
+
+DEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _("\
+Vous avez besoin de 3\n\
+étoiles pour ouvrir cette\n\
+porte. Il vous manque\n\
+encore [%] étoile(s)."))
+
+DEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _("\
+Vous avez besoin de 8\n\
+étoiles pour ouvrir cette\n\
+porte. Il vous manque\n\
+encore [%] étoile(s)."))
+
+DEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _("\
+Vous avez besoin de 30\n\
+étoiles pour ouvrir cette\n\
+porte. Il vous manque\n\
+encore [%] étoile(s)."))
+
+DEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _("\
+Vous avez besoin de 50\n\
+étoiles pour ouvrir cette\n\
+porte. Il vous manque\n\
+encore [%] étoile(s)."))
+
+DEFINE_DIALOG(DIALOG_029, 1, 6, 95, 200, _("\
+Vous avez besoin de 70\n\
+étoiles pour arriver en\n\
+haut de 『l'escalier sans\n\
+fin』... Il vous manque\n\
+encore [%] étoile(s).\n\
+GWA HA HA HA HA HA!!!"))
+
+DEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _("\
+Bonjour à tous!\n\
+Ici Lakitu, le reporter de\n\
+choc et de charme! Voici\n\
+un petit conseil technique:\n\
+Marchez tout doucement\n\
+pour ne pas faire de bruit\n\
+et ainsi surprendre vos\n\
+ennemis.\n\
+Vous pouvez déplacer ma\n\
+caméra avec [C]> et [C]<.\n\
+Appuyez sur [C]| pour voir\n\
+de loin.\n\
+Lorsque ma caméra ne\n\
+peut plus se déplacer,\n\
+un signal sonore se fera\n\
+entendre...\n\
+Mes chers téléspectateurs,\n\
+à bientôt!\n\
+//// --Lakitu--"))
+
+DEFINE_DIALOG(DIALOG_031, 1, 5, 30, 200, _("\
+Incroyable! Tu m'as encore\n\
+battu? J'étais pourtant\n\
+certain de gagner!\n\
+Tiens, petit homme, tu as\n\
+bien mérité cette étoile..."))
+
+DEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _("\
+Si en portant une\n\
+casquette ailée vous\n\
+effectuez trois sauts\n\
+consécutifs, vous pourrez\n\
+volez comme un oiseau!\n\
+Vous volerez encore plus\n\
+haut si vous êtes propulsé\n\
+par un canon!\n\
+\n\
+\n\
+Utilisez les boutons [C] pour\n\
+regarder autour de vous\n\
+en plein vol, et appuyez\n\
+sur [Z] pour atterrir."))
+
+DEFINE_DIALOG(DIALOG_033, 1, 5, 30, 200, _("\
+Ciao bello!\n\
+Vous voici arrivé au\n\
+château de la Princesse\n\
+grâce à un tuyau de\n\
+téléportation.\n\
+Contrôler Mario est très\n\
+facile: appuyez sur [A]\n\
+pour sauter et sur [B] pour\n\
+attaquer. Appuyez sur [B]\n\
+pour lire les pancartes.\n\
+Utilisez le stick multi-\n\
+directionnel pour déplacer\n\
+Mario...\n\
+Et maintenant, en route\n\
+vers le château!!!"))
+
+DEFINE_DIALOG(DIALOG_034, 1, 6, 30, 200, _("\
+Bonjour! Nous sommes les\n\
+frères Lakitu et nous nous\n\
+ferons une joie de filmer\n\
+l'intrépide Mario tout au\n\
+long de son périple.\n\
+\n\
+Vous pourrez choisir\n\
+l'angle de prise de vue\n\
+grâce aux boutons [C]. S'il\n\
+est impossible de bouger\n\
+la caméra, un signal\n\
+sonore retentira.\n\
+Pour jeter un oeil autour\n\
+de Mario, arrêtez-vous\n\
+et appuyez sur [C]^.\n\
+Appuyez sur le bouton [A]\n\
+pour revenir au jeu.\n\
+\n\
+Appuyez sur [R] pour\n\
+changer de mode de vue.\n\
+Lisez les pancartes que\n\
+vous croiserez pour en\n\
+savoir d'avantage...\n\
+\n\
+C'était Lakitu,\n\
+le caméraman toujours\n\
+prêt à vous fournir les\n\
+meilleures images..."))
+
+DEFINE_DIALOG(DIALOG_035, 1, 6, 30, 200, _("\
+Il existe quatre boutons\n\
+[C]. En appuyant sur [C]^ et\n\
+en bougeant le stick\n\
+multidirectionnel, vous\n\
+pourrez jeter un oeil aux\n\
+alentours...\n\
+L'angle de vue normal est\n\
+celui de la caméra de\n\
+Lakitu, mais vous pouvez\n\
+le modifier en appuyant\n\
+sur [R] et ainsi utiliser\n\
+la 『caméra-Mario』.\n\
+Appuyez sur [R] à nouveau\n\
+pour utiliser la caméra de\n\
+Lakitu. Appuyez sur [C]|\n\
+pour voir Mario de loin,\n\
+quelque soit le mode de\n\
+vue que vous utilisez."))
+
+DEFINE_DIALOG(DIALOG_036, 1, 4, 30, 200, _("\
+--PANORAMA--\n\
+Appuyez sur [C]^ pour jeter\n\
+un coup d'oeil. Profitez\n\
+de la vue!\n\
+Appuyez sur [R] pour\n\
+utiliser la caméra-Mario\n\
+qui suivra toujours de\n\
+près notre petit ami.\n\
+Appuyez à nouveau sur [R]\n\
+pour revenir à la caméra\n\
+de Lakitu.\n\
+\n\
+Mettez le jeu en pause et\n\
+choisissez le mode 『Fixe』\n\
+puis maintenez [R] pour que\n\
+la caméra reste en place."))
+
+DEFINE_DIALOG(DIALOG_037, 1, 2, 30, 200, _("\
+Bwa ha ha ha ha!\n\
+Je t'ai battu gros nain!\n\
+Tu es aussi rapide qu'une\n\
+vieille limace malade!\n\
+Reviens me voir si tu\n\
+veux prendre ta revanche!"))
+
+DEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _("\
+Grâce à la puissance des\n\
+étoiles, la porte s'ouvre\n\
+doucement..."))
+
+DEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _("\
+ROYAUME DE BOB-OMB\n\
+\n\
+Interdit aux touristes!!!\n\
+\n\
+\n\
+Personne ne pourra me\n\
+voler mes étoiles de\n\
+puissance! Elles m'ont été\n\
+offertes par le grand\n\
+Bowser en personne.\n\
+Je ne dirai jamais où\n\
+elles se trouvent, mais\n\
+voici un indice:\n\
+\n\
+\n\
+lisez attentivement le nom\n\
+de chaque étoile au début\n\
+des niveaux.\n\
+\n\
+/// --Roi Bob-omb--"))
+
+DEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _("\
+ATTENTION!\n\
+Crevasse de glace juste\n\
+en dessous!"))
+
+DEFINE_DIALOG(DIALOG_041, 1, 2, 30, 200, _("\
+J'ai gagné! J'ai gagné!\n\
+Ha! Ha! Pauv'nul!\n\
+Ça t'apprendra à défier\n\
+le grand Koopa-Rapido!\n\
+Reviens me voir si tu\n\
+veux une autre raclée!"))
+
+DEFINE_DIALOG(DIALOG_042, 1, 6, 30, 200, _("\
+ATTENTION!\n\
+\n\
+Pont étroit!!!\n\
+Traversez doucement...\n\
+\n\
+\n\
+Vous pouvez sauter et\n\
+vous accrocher au bord de\n\
+la falaise ou vous\n\
+suspendre en vous\n\
+déplaçant lentement près\n\
+du vide...\n\
+Si vous voulez lâcher\n\
+prise, appuyez sur [Z] ou\n\
+vers le bas sur le stick\n\
+multidirectionnel.\n\
+\n\
+\n\
+Pour vous hisser, appuyez\n\
+vers le haut sur le stick\n\
+multidirectionnel ou sur le\n\
+bouton [A] pour aller plus\n\
+vite."))
+
+DEFINE_DIALOG(DIALOG_043, 1, 5, 30, 200, _("\
+Si vous sautez en\n\
+maintenant le bouton [A],\n\
+vous pourrez vous\n\
+accrocher à des objets\n\
+au-dessus de vous...\n\
+Vous pourrez même vous\n\
+accrocher à un oiseau!"))
+
+DEFINE_DIALOG(DIALOG_044, 1, 4, 95, 200, _("\
+Mmm? Hein? Qui m'a\n\
+réveillé? Quoi!?! Il fait\n\
+encore jour? Je devrais\n\
+dormir!\n\
+Maintenant que je suis\n\
+réveillé, ça te dirait de\n\
+faire un petit tour avec\n\
+moi?\n\
+Maintiens le bouton [A]\n\
+pour t'accrocher et\n\
+lâche-le pour te laisser\n\
+tomber.\n\
+Je t'emmènerai où tu veux\n\
+aussi longtemps que mes\n\
+ailes pourront supporter\n\
+ton poids!\n\
+Regarde bien mon ombre\n\
+et accroche-toi!!!"))
+
+DEFINE_DIALOG(DIALOG_045, 1, 4, 95, 200, _("\
+Fouiii! J'suis naze!!!\n\
+Tu devrais peut-être\n\
+arrêter les pâtes aux\n\
+oeufs...\n\
+Allez, ciao Mario!\n\
+Lâche le bouton [A] sinon\n\
+j'te balance dans le vide\n\
+mon gros..."))
+
+DEFINE_DIALOG(DIALOG_046, 1, 6, 30, 200, _("\
+Il existe trois sauts\n\
+différents que vous\n\
+devez maîtriser:\n\
+Tout d'abord, le Triple\n\
+Saut...\n\
+\n\
+En pleine course, sautez\n\
+trois fois de suite.\n\
+Si votre synchronisation\n\
+est correcte, vous\n\
+sauterez de plus en plus\n\
+haut...\n\
+Ensuite, pour sauter le\n\
+plus loin possible, vous\n\
+devrez effectuer le Saut\n\
+en Longueur:\n\
+\n\
+\n\
+Courez, appuyez sur [Z] pour\n\
+vous accroupir, puis\n\
+appuyez sur [A] pour\n\
+sauter...\n\
+\n\
+\n\
+Enfin, pour créer une\n\
+『Impulsion』, appuyez sur\n\
+[A] vers un mur puis sautez\n\
+à nouveau lorsque vous\n\
+touchez la paroi...\n\
+\n\
+C'est compris?\n\
+Triple Saut, Saut en\n\
+Longueur et Impulsion?\n\
+Pour y arriver à chaque\n\
+fois il faut s'entraîner\n\
+encore et encore et...?"))
+
+DEFINE_DIALOG(DIALOG_047, 1, 2, 95, 200, _("\
+Salut l'ami! Je vais te\n\
+préparer un joli canon!"))
+
+DEFINE_DIALOG(DIALOG_048, 1, 5, 30, 200, _("\
+Sommet du glacier...\n\
+Attention à ne pas\n\
+glisser!\n\
+Tout d'abord, visitez ce\n\
+chalet..."))
+
+DEFINE_DIALOG(DIALOG_049, 1, 4, 30, 200, _("\
+Vous vous souvenez de\n\
+l'Impulsion? Utilisez cette\n\
+technique pour atteindre\n\
+des lieux en hauteur...\n\
+Rebondissez de mur en\n\
+mur, en appuyant sur le\n\
+stick multidirectionnel\n\
+vers la direction desirée.\n\
+Entraînez-vous encore et\n\
+encore et encore et...?"))
+
+DEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _("\
+Maintenez le bouton [Z] pour\n\
+vous accroupir et ainsi\n\
+glisser le long d'une\n\
+pente...\n\
+Appuyez sur [Z] pendant un\n\
+saut pour faire l'Attaque\n\
+Rodéo!\n\
+\n\
+A l'arrêt, si vous appuyez\n\
+sur [Z] pour vous accroupir,\n\
+puis sur [A], vous ferez un\n\
+Saut Périlleux!\n\
+C'est compris? Mais il\n\
+existe encore d'autres\n\
+mouvements...\n\
+\n\
+Vous pouvez courir, vous\n\
+accroupir puis faire un\n\
+Saut en Longueur...\n\
+\n\
+Vous pouvez aussi marcher\n\
+en maintenant le bouton [Z].\n\
+Mais c'est une autre\n\
+histoire..."))
+
+DEFINE_DIALOG(DIALOG_051, 1, 6, 30, 200, _("\
+Vous pouvez facilement\n\
+vous accrocher aux arbres\n\
+et aux poteaux...\n\
+\n\
+\n\
+\n\
+Appuyez sur [Z] pour lâcher\n\
+prise, sur [A] pour sauter\n\
+en arrière ou sur le stick\n\
+multidirectionnel pour\n\
+descendre doucement.\n\
+\n\
+Une fois au sommet,\n\
+appuyez vers la droite ou\n\
+vers la gauche sur le\n\
+stick multidirectionnel\n\
+pour pivoter, ou vers le\n\
+haut pour faire le poirier.\n\
+Appuyez alors sur [A] pour\n\
+faire un méga-saut vers\n\
+l'arrière, digne des plus\n\
+grands athlètes!"))
+
+DEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _("\
+Arrêtez-vous et appuyez\n\
+sur [Z] pour vous accroupir,\n\
+puis appuyez sur [A] pour\n\
+faire un Saut Périlleux\n\
+en arrière!\n\
+Pour faire un Saut\n\
+Périlleux de côté, courez,\n\
+changez de direction, puis\n\
+sautez.\n\
+\n\
+Ces deux types de saut\n\
+vous permettent de\n\
+sauter beaucoup plus haut\n\
+qu'un saut normal..."))
+
+DEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _("\
+Quelques fois, en\n\
+traversant un anneau ou\n\
+en découvrant un passage\n\
+secret dans un niveau, un\n\
+chiffre rouge apparaîtra.\n\
+Si vous faites apparaître\n\
+cinq chiffres rouges, une\n\
+étoile secrète apparaîtra."))
+
+DEFINE_DIALOG(DIALOG_054, 1, 3, 30, 200, _("\
+Attention:\n\
+Glissade Périlleuse!\n\
+En voiture Simone...\n\
+Appuyez vers l'avant sur\n\
+le stick multidirectionnel\n\
+pour accélérer.\n\
+Appuyez vers l'arrière\n\
+pour ralentir...\n\
+Roulez jeunesse!"))
+
+DEFINE_DIALOG(DIALOG_055, 1, 2, 30, 200, _("\
+Salut mon tout petit\n\
+Mario...\n\
+Alors, il paraît que tu es\n\
+un rapide?\n\
+Mais es-tu aussi rapide\n\
+que moi?\n\
+On fait la course,\n\
+mon petit biquet?\n\
+Prêt...\n\
+//Partez!//Heu, non."))
+
+DEFINE_DIALOG(DIALOG_056, 1, 2, 30, 200, _("\
+Qu-qu-quoi? T-t-tu as\n\
+battu mon record?\n\
+Je l'admets, tu es très\n\
+rapide pour un humain.\n\
+Je n'ai pas de médaille\n\
+d'or sur moi mais...\n\
+Cette étoile fera\n\
+l'affaire..."))
+
+DEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _("\
+Mon bébé! J'ai perdu mon\n\
+bébé... Mon p'tit chou...\n\
+Ma puce à moi...\n\
+Mon chocolat...\n\
+JE VEUX MON BÉBÉ!!!\n\
+GNAAAAAAAAAAAAAA!!!\n\
+MON BÉBÉ!"))
+
+DEFINE_DIALOG(DIALOG_058, 1, 3, 30, 200, _("\
+Tu as trouvé mon bébé!!!\n\
+Mon chou...\n\
+Mon p'tit chou...\n\
+Comment te prouver ma\n\
+gratitude, gros Mario?\n\
+Tu es formidable...\n\
+Tiens, prends cette étoile.\n\
+Tu l'as bien méritée...\n\
+Encore merci, petit!"))
+
+DEFINE_DIALOG(DIALOG_059, 1, 2, 30, 200, _("\
+C'est pas mon bébé!!!\n\
+Où est mon bébé?\n\
+JE VEUX MON BÉBÉ!!!!\n\
+GNAAAAAAAAAAAAAA!!!!"))
+
+DEFINE_DIALOG(DIALOG_060, 1, 6, 30, 200, _("\
+ATTENTION!\n\
+A lire avant de plonger!\n\
+Si vous restez sous l'eau\n\
+pendant trop longtemps,\n\
+vous pouvez vous noyer...\n\
+\n\
+Remonter à la surface,\n\
+traverser une bulle d'air\n\
+ou récupérer des pièces\n\
+vous fera regagner de\n\
+l'oxygène.\n\
+\n\
+Appuyez sur [A] pour nager.\n\
+Maintenez le bouton [A]\n\
+pour battre des pieds.\n\
+Appuyez régulièrement sur\n\
+[A] pour gagner de la\n\
+vitesse.\n\
+Appuyez vers le haut sur\n\
+le stick multidirectionnel\n\
+pour plonger.\n\
+Appuyez vers le bas et sur\n\
+[A] pour remonter à la\n\
+surface.\n\
+Lorsque vous êtes à la\n\
+surface, maintenez la\n\
+flèche vers le bas sur le\n\
+stick multidirectionnel et\n\
+appuyez sur [A] pour sortir\n\
+de l'eau."))
+
+DEFINE_DIALOG(DIALOG_061, 1, 4, 30, 200, _("\
+Brrrrr!!!\n\
+Baignade déconseillée!!!\n\
+Trop froid...\n\
+// ---Le Pingouin---"))
+
+DEFINE_DIALOG(DIALOG_062, 1, 4, 30, 200, _("\
+A l'intérieur des\n\
+blocs verts se cache la\n\
+casquette-métal...\n\
+\n\
+En la portant, vous\n\
+deviendrez insensible au\n\
+feu et aux attaques de\n\
+vos ennemis.\n\
+Vous n'aurez même plus\n\
+besoin de respirer!\n\
+Mais il y a un problème:\n\
+vous ne pouvez pas nager!"))
+
+DEFINE_DIALOG(DIALOG_063, 1, 4, 30, 200, _("\
+La casquette d'invisibilité\n\
+se trouve dans les blocs\n\
+bleus.\n\
+\n\
+En la portant, vos\n\
+ennemis, y compris les\n\
+terribles Boos, ne\n\
+pourront pas vous voir!\n\
+En plus, vous pourrez\n\
+traverser des murs\n\
+secrets!"))
+
+DEFINE_DIALOG(DIALOG_064, 1, 6, 30, 200, _("\
+Si vous portez une\n\
+casquette ailée provenant\n\
+d'un bloc rouge, faites le\n\
+Triple Saut pour vous\n\
+envoler comme un oiseau!\n\
+\n\
+Utilisez le stick multi-\n\
+directionnel pour diriger\n\
+Mario. Appuyez vers le\n\
+bas pour prendre de\n\
+l'altitude, et vers le haut\n\
+pour piquer du nez.\n\
+Et enfin, appuyez sur [Z]\n\
+pour atterrir."))
+
+DEFINE_DIALOG(DIALOG_065, 1, 6, 30, 200, _("\
+Leçons de natation...\n\
+Appuyez sur [A] pour nager\n\
+la brasse. Si votre\n\
+synchronisation est bonne,\n\
+vous pourrez nager très\n\
+vite.\n\
+Maintenez le bouton [A]\n\
+pour battre des pieds\n\
+d'une façon régulière.\n\
+\n\
+\n\
+\n\
+Appuyez vers le haut sur\n\
+le stick multidirectionnel\n\
+pour plonger, et vers le\n\
+bas pour remonter à la\n\
+surface.\n\
+\n\
+Pour sortir de l'eau,\n\
+appuyez vers le bas sur\n\
+le stick multidirectionnel\n\
+et appuyez sur [A]. Ensuite,\n\
+relâcher le stick pour ne\n\
+pas retomber dans l'eau.\n\
+Attention: Mario ne peut\n\
+pas respirer sous l'eau!\n\
+Remontez à la surface\n\
+lorsque vous manquez\n\
+d'oxygène...\n\
+\n\
+Dernière chose:\n\
+vous ne pouvez pas ouvrir\n\
+les portes se trouvant\n\
+sous l'eau."))
+
+DEFINE_DIALOG(DIALOG_066, 1, 6, 30, 200, _("\
+Mario! Fais attention:\n\
+Bowser est un gros\n\
+vicieux! Il va tenter de\n\
+te brûler les fesses avec\n\
+son souffle de feu!\n\
+\n\
+Tourne autour de lui et\n\
+attrape sa queue en\n\
+appuyant sur [B]. Une fois\n\
+que tu l'as attrapé,\n\
+fais-le tourner autour\n\
+de toi.\n\
+Fais des rotations avec le\n\
+stick multidirectionnel\n\
+pour aller de plus en plus\n\
+vite.\n\
+\n\
+\n\
+Si tu le fais tourner très\n\
+vite, tu pourras l'envoyer\n\
+très loin.\n\
+\n\
+\n\
+\n\
+Utilise les boutons [C] pour\n\
+regarder autour de toi.\n\
+Tu dois jeter Bowser sur\n\
+une des bombes...\n\
+\n\
+\n\
+Vise bien! Appuie sur [B]\n\
+pour lancer Bowser.\n\
+Bonne chance, Mario!\n\
+Tu en auras besoin...\n\
+\n\
+// ---Peach---"))
+
+DEFINE_DIALOG(DIALOG_067, 1, 3, 30, 200, _("\
+HA HA! Dommage pour toi,\n\
+Mario! La P'tite Peach\n\
+n'est pas là...\n\
+Mais si tu veux un gros\n\
+bisou, on peut toujours\n\
+s'arranger!\n\
+Je parie que tu n'es pas\n\
+capable d'attraper ma\n\
+queue...\n\
+Tu es trop faible pour me\n\
+faire tourner autour de\n\
+ta tête!\n\
+Tu n'arriveras jamais à\n\
+me faire décoller d'ici...\n\
+GWA HA! A table!!!!!!!"))
+
+DEFINE_DIALOG(DIALOG_068, 1, 4, 30, 200, _("\
+Voici les Laves Fatales!\n\
+Si vous touchez de la lave\n\
+ou des flammes, vous\n\
+aurez le feu aux fesses!\n\
+Mais pas de panique:\n\
+vous pourrez toujours\n\
+contrôler Mario...\n\
+Restez calme!"))
+
+DEFINE_DIALOG(DIALOG_069, 1, 6, 30, 200, _("\
+A l'intérieur des tableaux\n\
+vous pourrez touchez des\n\
+murs invisibles marquant\n\
+les limites du niveau.\n\
+Si vous touchez un mur en\n\
+volant, vous serez bloqué."))
+
+DEFINE_DIALOG(DIALOG_070, 1, 6, 30, 200, _("\
+Vous pouvez retourner\n\
+dans le hall du château\n\
+depuis n'importe quel\n\
+niveau.\n\
+\n\
+\n\
+Vous devez vous arrêter,\n\
+appuyer sur Start pour\n\
+mettre le jeu en pause,\n\
+puis choisir l'option\n\
+『Quitter Niveau』.\n\
+\n\
+Vous n'avez pas besoin de\n\
+récupérer toutes les\n\
+étoiles d'un niveau pour\n\
+accéder à un autre monde.\n\
+\n\
+\n\
+Vous pouvez retourner\n\
+dans un niveau plus tard,\n\
+et ainsi récupérer les\n\
+étoiles difficiles à\n\
+attraper.\n\
+\n\
+Après avoir récupéré une\n\
+étoile, un indice\n\
+concernant l'étoile\n\
+suivante apparaîtra à\n\
+l'écran au début du\n\
+niveau...\n\
+Toutefois, vous n'êtes pas\n\
+obligé d'attraper l'étoile\n\
+décrite par l'indice."))
+
+DEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _("\
+DANGER!\n\
+Attention au brouillard\n\
+toxique!\n\
+\n\
+Si vous perdez de\n\
+l'énergie, courez vers une\n\
+plate-forme en hauteur\n\
+pour respirer.\n\
+\n\
+Cercle: Abri\n\
+Flèche: Entrée - Sortie"))
+
+DEFINE_DIALOG(DIALOG_072, 1, 3, 30, 200, _("\
+Attention: vents violents!\n\
+Accrochez-vous à votre\n\
+casquette!\n\
+Si vous la perdez, vous\n\
+devrez revenir la chercher\n\
+là où vous l'avez perdue..."))
+
+DEFINE_DIALOG(DIALOG_073, 1, 3, 95, 200, _("\
+Souquez ferme, matelot!\n\
+J'ai caché un trésor\n\
+par ici, moussaillon.\n\
+Mais pour le découvrir,\n\
+vous devrez ouvrir les\n\
+coffres dans l'ordre...\n\
+Y arriveras-tu, petit?\n\
+\n\
+// -- Le capitaine --"))
+
+DEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _("\
+Vous pouvez vous\n\
+accrocher au rebord d'une\n\
+falaise.\n\
+\n\
+\n\
+Pour lâcher prise, appuyez\n\
+vers le bas sur le stick\n\
+multidirectionnel ou sur le\n\
+bouton [Z].\n\
+\n\
+Pour vous hisser, appuyez\n\
+vers le haut sur le stick\n\
+multidirectionnel ou sur le\n\
+bouton [A] pour monter plus\n\
+vite."))
+
+DEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _("\
+Mario! Mon château est\n\
+en danger, et Bowser en\n\
+est le responsable...\n\
+Toi seul peut contrecarrer\n\
+ses plans diaboliques!\n\
+Les portes du château ont\n\
+été scellées par Bowser et\n\
+ne peuvent être ouvertes\n\
+qu'à l'aide du pouvoir des\n\
+étoiles...\n\
+Bowser a caché les étoiles\n\
+de puissance dans les\n\
+tableaux et les murs du\n\
+château.\n\
+\n\
+Mais Bowser n'a pas\n\
+découvert tous les\n\
+passages secrets du\n\
+château.\n\
+\n\
+Un passage secret se\n\
+trouve dans cette pièce et\n\
+il mène à une des étoiles\n\
+secrètes du château!\n\
+\n\
+Trouve cette étoile, mon\n\
+petit Mario! Elle te sera\n\
+très utile. Je t'en prie,\n\
+aide-nous!\n\
+\n\
+Retrouve toutes les étoiles\n\
+du château et tu pourras\n\
+nous délivrer!\n\
+Je t'en prie, Mario!\n\
+Sauve-nous!"))
+
+DEFINE_DIALOG(DIALOG_076, 1, 3, 30, 200, _("\
+Grâce au pouvoir des\n\
+étoiles, le château\n\
+revient à la vie...\n\
+Je t'en prie Mario,\n\
+botte les fesses du\n\
+vilain Bowser pas beau!\n\
+As-tu visité la pièce du\n\
+château dans laquelle un\n\
+grand miroir est au mur?\n\
+Prends garde à tout ce\n\
+qui n'a pas de reflet...\n\
+\n\
+Connais-tu le monde\n\
+『Trempé-Séché』?\n\
+\n\
+Rentre dans ce niveau en\n\
+sautant très haut...\n\
+\n\
+Au fait! Regarde ce que\n\
+j'ai pour toi!"))
+
+DEFINE_DIALOG(DIALOG_077, 1, 2, 150, 200, _("\
+Il est dit que les piliers\n\
+doivent être enfoncés..."))
+
+DEFINE_DIALOG(DIALOG_078, 1, 4, 30, 200, _("\
+Enfoncez le bloc des\n\
+pièces bleues grâce à\n\
+l'Attaque Rodéo, en\n\
+appuyant sur [Z].\n\
+Une pièce bleue vaut 5\n\
+pièces jaunes.\n\
+\n\
+\n\
+Dépêchez-vous de les\n\
+attraper, sinon elles\n\
+disparaîtront!"))
+
+DEFINE_DIALOG(DIALOG_079, 1, 2, 30, 200, _("\
+GNIIIIIIIII!!!\n\
+LACHE-MOI!\n\
+Je blaguais! Tu n'as\n\
+aucun sens de l'humour.\n\
+Lâche-moi et je te\n\
+donnerais un truc cool.\n\
+Ça marche?\n\
+//OK//// Jamais!"))
+
+DEFINE_DIALOG(DIALOG_080, 1, 1, 30, 200, _("\
+Gnii hi hi hi hi hi!!!"))
+
+DEFINE_DIALOG(DIALOG_081, 1, 3, 30, 200, _("\
+Bienvenue dans le monde\n\
+『Trempé-Séché』...\n\
+\n\
+Ici, il est dit qu'un saut\n\
+altère le niveau d'eau...\n\
+\n\
+En y pénétrant,\n\
+serez-vous assez\n\
+intelligent?"))
+
+DEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _("\
+Accroche-toi à ta\n\
+casquette, gentil petit\n\
+Mario...\n\
+\n\
+Si jamais tu la perds, tu\n\
+devras retourner la\n\
+chercher là où tu l'as\n\
+perdue...\n\
+Sans casquette, tes\n\
+ennemis pourront te faire\n\
+beaucoup plus de dégâts!\n\
+\n\
+La princesse Peach a\n\
+de sérieux ennuis...\n\
+Elle est enfermée dans un\n\
+des murs du château.\n\
+Tu dois absolument l'aider\n\
+mon gros Mario! Savais-\n\
+tu qu'il existe des\n\
+mondes dans les murs?\n\
+Les sbires du Bowser pas\n\
+beau y font régner la\n\
+terreur!\n\
+\n\
+Tiens, j'ai un petit\n\
+cadeau pour toi..."))
+
+DEFINE_DIALOG(DIALOG_083, 1, 4, 30, 200, _("\
+Cette grosse horloge est\n\
+étrange...\n\
+\n\
+\n\
+Fais attention à la\n\
+position de la grande\n\
+aiguille lorsque tu sautes\n\
+à l'intérieur...\n\
+Au fait, regarde ce que\n\
+j'ai là pour toi!"))
+
+DEFINE_DIALOG(DIALOG_084, 1, 3, 30, 200, _("\
+GNAAAAAAAAA!!!\n\
+LACHE-MOI!!!\n\
+GROSSE BRUTE!\n\
+Ne me mange pas!\n\
+Ne me mange pas!\n\
+Au secours!!!!!!\n\
+Tiens, voilà une étoile.\n\
+Prends-la, mais tu dois\n\
+me laisser partir..."))
+
+DEFINE_DIALOG(DIALOG_085, 1, 3, 30, 200, _("\
+Va-t'en, simple mortel!\n\
+Si tu tiens à ton âme,\n\
+retourne chez toi...\n\
+Si tu oses rentrer,\n\
+tu seras damné!!!"))
+
+DEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _("\
+Tourner autour de\n\
+certains ennemis peut\n\
+faire tourner de l'oeil..."))
+
+DEFINE_DIALOG(DIALOG_087, 1, 5, 30, 200, _("\
+Le Père Noël n'est pas le\n\
+seul à passer par les\n\
+cheminées...\n\
+Avis aux curieux...\n\
+- Le bonhomme de neige -"))
+
+DEFINE_DIALOG(DIALOG_088, 1, 4, 30, 200, _("\
+-Plate-forme de travail-\n\
+Pour descendre, utilisez\n\
+le poteau sur la gauche et\n\
+glissez jusqu'en bas..."))
+
+DEFINE_DIALOG(DIALOG_089, 1, 6, 95, 200, _("\
+Les deux routes sont très\n\
+dangereuses...\n\
+Ceux qui ne sont pas\n\
+encore capables de faire\n\
+le Saut en Longueur\n\
+doivent aller à droite.\n\
+Droite: Plate-forme de\n\
+////travail.\n\
+////Labyrinthe\n\
+////toxique.\n\
+Gauche: Trou Noir.\n\
+////Lac souterrain.\n\
+Cercle rouge:\n\
+////Ascenseur 2.\n\
+////Lac souterrain.\n\
+Flèche:\n\
+////Votre position\n\
+////actuelle."))
+
+DEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _("\
+BWA HA HA HA HA HA!!!\n\
+Tu es tombé dans mon\n\
+piège, petit Mario!\n\
+Mais voici un conseil\n\
+d'ami: prends garde à ne\n\
+pas tomber!"))
+
+DEFINE_DIALOG(DIALOG_091, 1, 5, 30, 200, _("\
+Danger!!!\n\
+Vents violents!\n\
+Sachez utiliser les\n\
+courants à votre\n\
+avantage..."))
+
+DEFINE_DIALOG(DIALOG_092, 1, 5, 30, 200, _("\
+Mario...\n\
+Mon p'tit Mario...\n\
+Tu m'cherches ou quoi?\n\
+Tu la veux ta baffe?\n\
+Alors tu vas l'avoir!\n\
+Mais d'abord tu vas me\n\
+rendre mes étoiles,\n\
+voleur!\n\
+BWA HA HA HA HA HA!!!\n\
+C'est l'heure du goûter!"))
+
+DEFINE_DIALOG(DIALOG_093, 1, 6, 30, 200, _("\
+Mario?!?\n\
+Tu es encore là, toi?\n\
+Très bien, tu l'auras\n\
+voulu! Cette fois-ci, je\n\
+vais faire frire ta\n\
+vieille moustache!\n\
+Malgré tes étoiles de\n\
+puissance, tu n'arriveras\n\
+jamais à sauver Peach et\n\
+ses amis...\n\
+Allez... En garde!\n\
+BWA HA HA HA HA HA HA!"))
+
+DEFINE_DIALOG(DIALOG_094, 1, 6, 30, 200, _("\
+Pourquoi ne pas escalader\n\
+cette pente en courant?\n\
+Petit rappel: pour faire\n\
+un Saut en Longueur,\n\
+courir, appuyer sur [Z],\n\
+puis sauter..."))
+
+DEFINE_DIALOG(DIALOG_095, 1, 5, 30, 200, _("\
+Pour lire une pancarte,\n\
+il faut se tenir devant\n\
+l'écriteau et appuyer [B].\n\
+Vous le saviez déjà?\n\
+Ah bon... Désolé.\n\
+Pour parler à une tortue\n\
+ou à un autre animal,\n\
+vous devez vous tenir en\n\
+face de lui ou elle.\n\
+\n\
+Retrouvez vite les étoiles\n\
+que Bowser a caché dans\n\
+ce niveau!"))
+
+DEFINE_DIALOG(DIALOG_096, 1, 5, 30, 200, _("\
+Le sommet de la montagne\n\
+est interdit au public!\n\
+Alors n'essayez pas d'y\n\
+aller, à moins d'être à la\n\
+recherche des étoiles...\n\
+Autre conseil: ne réveillez\n\
+jamais quelqu'un qui dort.\n\
+Marchez doucement...\n\
+Et sans bruit..."))
+
+DEFINE_DIALOG(DIALOG_097, 1, 5, 30, 200, _("\
+Si quelqu'un vous pousse,\n\
+n'ayez pas peur!\n\
+Poussez-le vous aussi!\n\
+Le perdant aura plutôt\n\
+chaud aux fesses..."))
+
+DEFINE_DIALOG(DIALOG_098, 1, 5, 95, 200, _("\
+Viens...\n\
+...entre donc...\n\
+Mon biquet...\n\
+...viens dîner...\n\
+Hin...hin...hin..."))
+
+DEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _("\
+Hé...hé...hé...\n\
+Ciao bello Mario!\n\
+Moi j'traverse les murs!\n\
+Tu peux le faire, toi?\n\
+Hin...hin...hin..."))
+
+DEFINE_DIALOG(DIALOG_100, 1, 4, 95, 200, _("\
+GNIIIIII! KIIIII!\n\
+J'l'ai eue!!!\n\
+HI KI KI KI KI KI!\n\
+C'est à moi!!!"))
+
+DEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _("\
+Aaaak...kiiii!!!\n\
+Arrête! Tu m'étrangles!\n\
+Quoi? Cette casquette?\n\
+OK, prends-la...\n\
+Grande brute, va!\n\
+De toutes façons,\n\
+tu as l'air débile avec ça\n\
+sur la tête..."))
+
+DEFINE_DIALOG(DIALOG_102, 1, 4, 30, 200, _("\
+Les Boos sont timides! Si\n\
+vous les regardez dans les\n\
+yeux, ils disparaîtront...\n\
+\n\
+Mais si vous leur tournez\n\
+le dos, ils réapparaîtront.\n\
+Invisibles, ils sont\n\
+invincibles...\n\
+Tentez de vous faufiler\n\
+derrière eux et de leur\n\
+botter les fesses!"))
+
+DEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _("\
+Au sommet des quatre\n\
+piliers l'on doit se tenir,\n\
+pour que la lumière puisse\n\
+enfin jaillir..."))
+
+DEFINE_DIALOG(DIALOG_104, 1, 4, 30, 200, _("\
+L'ombre de l'étoile en\n\
+face de vous est un\n\
+『Marqueur d'étoile』.\n\
+\n\
+Lorsque vous récupérerez\n\
+8 pièces rouges, une\n\
+étoile apparaîtra à cet\n\
+emplacement."))
+
+DEFINE_DIALOG(DIALOG_105, 1, 6, 95, 200, _("\
+Canon prêt à tirer!\n\
+Allez, saute à l'intérieur!\n\
+Tu peux atteindre l'étoile\n\
+sur l'île flottante en\n\
+utilisant les quatre\n\
+canons.\n\
+Utilise le stick multi-\n\
+directionnel pour viser et\n\
+appuie sur [A] pour tirer.\n\
+Si tu es habile, sers-toi\n\
+des arbres et des poteaux\n\
+pour atterrir..."))
+
+DEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _("\
+Canon prêt à tirer!\n\
+Allez, saute à l'intérieur!"))
+
+DEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _("\
+Les fantômes sont...\n\
+...immortels!\n\
+Hin hin hin hin...\n\
+Pourras-tu sortir d'ici...\n\
+...vivant?\n\
+Gni hi hi hi hi hi..."))
+
+DEFINE_DIALOG(DIALOG_108, 1, 3, 95, 200, _("\
+GNI HI HI HI HI HOU!\n\
+Voici le seigneur des\n\
+supplices!\n\
+Le maître des ombres...\n\
+Le souverain des\n\
+cauchemars...\n\
+Le Big Boo en personne!\n\
+Tremblez humains!!!\n\
+GNA HI HOU HA HIN HU !"))
+
+DEFINE_DIALOG(DIALOG_109, 1, 2, 95, 200, _("\
+Oooooh Noooon!\n\
+Mon corps a fondu!\n\
+Tu ne pourrais pas\n\
+m'aider, petit homme?\n\
+J'ai besoin d'un nouveau\n\
+corps!\n\
+Je dois faire un golf\n\
+demain..."))
+
+DEFINE_DIALOG(DIALOG_110, 1, 2, 95, 200, _("\
+J'ai perdu la tête, on\n\
+dirait...\n\
+Connais-tu quelqu'un à la\n\
+recherche d'un corps?\n\
+Je suis peut-être petit,\n\
+mais je grandis vite!\n\
+Guide-moi, je te suivrai\n\
+n'importe où!"))
+
+DEFINE_DIALOG(DIALOG_111, 1, 2, 95, 200, _("\
+Coooooool!\n\
+Quel super corps!\n\
+Maintenant je vais\n\
+pouvoir aller draguer!\n\
+Tiens, voici un petit\n\
+quelque chose pour toi..."))
+
+DEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _("\
+Ramassez le plus de pièces\n\
+possible! Elles rempliront\n\
+votre énergie!\n\
+\n\
+Vous pouvez jeter un oeil\n\
+au nombre de pièces que\n\
+vous avez récupérées dans\n\
+les 15 mondes.\n\
+Vous pouvez aussi remplir\n\
+votre énergie en touchant\n\
+un coeur!\n\
+\n\
+Si vous faites tourner le\n\
+coeur très vite, il vous\n\
+donnera beaucoup\n\
+d'énergie..."))
+
+DEFINE_DIALOG(DIALOG_113, 1, 5, 30, 200, _("\
+Il existe des casquettes\n\
+spéciales dans les blocs\n\
+rouges, verts et bleus.\n\
+\n\
+\n\
+Marchez sur les\n\
+interrupteurs dans les\n\
+niveaux cachés pour faire\n\
+apparaître les blocs de\n\
+couleur."))
+
+DEFINE_DIALOG(DIALOG_114, 1, 3, 95, 200, _("\
+Ah c'est pas le moment\n\
+de venir m'embêter!\n\
+\n\
+Nous les pierres, on\n\
+construit des maisons et\n\
+des châteaux...\n\
+Et vous les humains, vous\n\
+ne pensez jamais à nous\n\
+dire merci!\n\
+Si tu restes là, je m'en\n\
+vais t'écraser la face\n\
+comme une vieille prune...\n\
+Crois-tu pouvoir faire\n\
+une Attaque Rodéo sur\n\
+mon dos?\n\
+Ça m'étonnerais!\n\
+Allez... En garde, nabot\n\
+rouge et bleu!"))
+
+DEFINE_DIALOG(DIALOG_115, 1, 2, 95, 200, _("\
+Quoi? J'ai perdu?!?\n\
+Sacré nom d'un pétard!\n\
+Vous les humains, vous\n\
+n'avez aucun coeur...\n\
+Tiens, prends ça...\n\
+Et va-t'en!"))
+
+DEFINE_DIALOG(DIALOG_116, 1, 4, 95, 200, _("\
+Hein?/De quoi?\n\
+Moi? J'ai perdu?\n\
+Battu par un tout petit\n\
+bonhomme de rien du tout!\n\
+Mais cela ne sera pas\n\
+aussi facile contre le\n\
+grand Bowser!\n\
+Oh que non!\n\
+Tiens, voici l'étoile.\n\
+Dette de jeu...\n\
+Dette d'honneur...\n\
+Ciao petit Mario!\n\
+Si tu veux me revoir,\n\
+choisis cette étoile sur\n\
+l'écran du départ.\n\
+A bientôt!"))
+
+DEFINE_DIALOG(DIALOG_117, 1, 2, 95, 200, _("\
+Qui...dérange...mon...\n\
+...sommeil...éternel...?\n\
+Tout...bruit...doit...\n\
+...être...puni...!\n\
+Intrus...va...être...\n\
+...détruit...!\n\
+...COMBAT...!!!\n\
+...A...MAINS...NUES...!!!"))
+
+DEFINE_DIALOG(DIALOG_118, 1, 3, 95, 200, _("\
+Qu...qu...qu...Hein?\n\
+Moi...perdu?...Hein?\n\
+Moi...faible...nul.\n\
+Toi...nouveau pharaon...\n\
+Tiens...pour toi...\n\
+Moi...dormir...dodo. Ciao."))
+
+DEFINE_DIALOG(DIALOG_119, 1, 5, 30, 200, _("\
+Grrrrr! Tu m'as surpris...\n\
+Je t'ai sous-estimé!\n\
+Petit mais costaud, hein?\n\
+Mais Peach est toujours\n\
+ma prisonnière! Ha Ha!\n\
+Ne t'inquiète pas, on se\n\
+reverra! Et la prochaine\n\
+fois, je te mangerai les\n\
+doigts!\n\
+Allez, à bientôt! GWA HA!"))
+
+DEFINE_DIALOG(DIALOG_120, 1, 3, 30, 200, _("\
+Moi? Le grand Bowser?\n\
+Vaincu? Non, non!\n\
+Ça ne compte pas!\n\
+Je dormais! Tu as triché!\n\
+La prochaine fois, je te\n\
+mangerai les oreilles!\n\
+Si tu veux revoir ta\n\
+p'tite Peach, rejoins-moi\n\
+en haut de la tour...\n\
+Allez, à la prochaine!\n\
+GWA HA HA HA HA HA HA!\n\
+GWA HI HOU HÉ HEU...HA!"))
+
+DEFINE_DIALOG(DIALOG_121, 1, 4, 30, 200, _("\
+NOoOoOoOoOoOoOoOon!\n\
+Mario... Méchant petit!\n\
+Cette fois-ci...\n\
+...je suis cuit!!!\n\
+Mes pouvoirs maléfiques\n\
+disparaissent!\n\
+Toutes mes troupes sont\n\
+anéanties!\n\
+La paix, l'amour et\n\
+l'amitié sont de retour!\n\
+AaAaAaAaAargh!\n\
+C'est insupportable!\n\
+Mais je reviendrai...\n\
+Un jour... Je reviendrai!\n\
+Et ce jour-là...\n\
+Bye Bye Mario! BWA HA!!"))
+
+DEFINE_DIALOG(DIALOG_122, 1, 6, 30, 200, _("\
+-Le Trou Noir-\n\
+Droite: Plate-forme de\n\
+////travail.\n\
+////Labyrinthe\n\
+////toxique.\n\
+Gauche: Lac souterrain."))
+
+DEFINE_DIALOG(DIALOG_123, 1, 5, 30, 200, _("\
+-Caverne Métallique-\n\
+Droite: Vers la cascade.\n\
+Gauche: Interrupteur des\n\
+////casquettes-métal."))
+
+DEFINE_DIALOG(DIALOG_124, 1, 4, 30, 200, _("\
+Plate-forme de travail:\n\
+Danger!\n\
+Lire le mode d'emploi\n\
+attentivement!!!\n\
+Appuyez sur une flèche\n\
+pour déplacer la plate-\n\
+forme.\n\
+\n\
+Si jamais vous tombez de\n\
+la plate-forme, retournez\n\
+là où vous l'avez vue pour\n\
+la première fois."))
+
+DEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _("\
+Sortie du Labyrinthe\n\
+toxique... Fermée!\n\
+Faites demi-tour!"))
+
+DEFINE_DIALOG(DIALOG_126, 1, 6, 30, 200, _("\
+-Ascenseur 1-\n\
+Haut:/ Trou Noir.\n\
+Droite: Plate-forme de\n\
+////travail.\n\
+////Labyrinthe\n\
+////toxique."))
+
+DEFINE_DIALOG(DIALOG_127, 1, 5, 30, 200, _("\
+-Lac Souterrain-\n\
+Droite: Caverne\n\
+////métallique.\n\
+Gauche: Mine abandonnée\n\
+////(Fermée).\n\
+Gros Bibi, un gentil\n\
+dragon, vit ici.\n\
+Faites l'Attaque Rodéo\n\
+sur son dos pour qu'il\n\
+baisse la tête..."))
+
+DEFINE_DIALOG(DIALOG_128, 1, 5, 95, 200, _("\
+Tu dois te battre avec\n\
+honneur! Il est interdit\n\
+de jeter une personnalité\n\
+royale hors de la surface\n\
+de combat!"))
+
+DEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _("\
+Bienvenue dans\n\
+le niveau des casquettes\n\
+d'invisibilité!!!\n\
+\n\
+\n\
+Si vous marchez sur\n\
+l'interrupteur bleu, tous\n\
+les blocs bleus deviendront\n\
+solides...\n\
+\n\
+Si vous portez une\n\
+casquette d'invisibilité,\n\
+vous pourrez traverser vos\n\
+ennemis et pleins d'autres\n\
+choses..."))
+
+DEFINE_DIALOG(DIALOG_130, 1, 6, 30, 200, _("\
+Bienvenue dans le niveau\n\
+des casquettes-métal!!!\n\
+Si vous marchez sur\n\
+l'interrupteur vert, tous\n\
+les blocs verts\n\
+deviendront solides...\n\
+Si vous portez une\n\
+casquette-métal, vous\n\
+vous transformerez en\n\
+Métal Mario! Vous pourrez\n\
+alors marcher sous l'eau.\n\
+Faites un essai pour voir!"))
+
+DEFINE_DIALOG(DIALOG_131, 1, 6, 30, 200, _("\
+Bienvenue dans le niveau\n\
+des casquettes ailées!!!\n\
+Marchez sur l'interrupteur\n\
+rouge au sommet de la\n\
+tour, au centre des\n\
+anneaux arc-en-ciel.\n\
+En actionnant\n\
+l'interrupteur, tous les\n\
+blocs rouges deviendront\n\
+solides...\n\
+\n\
+\n\
+Lorsque vous êtes en\n\
+possession de la casquette\n\
+ailée, faites un Triple\n\
+Saut pour vous envoler et\n\
+appuyez sur [Z] pour\n\
+atterrir.\n\
+Appuyez vers le bas sur le\n\
+stick multidirectionnel\n\
+pour prendre de l'altitude\n\
+et vers le haut pour\n\
+piquer du nez. Imaginez-\n\
+vous à bord d'un 747!!!"))
+
+DEFINE_DIALOG(DIALOG_132, 1, 1, 30, 200, _("\
+Non, mais?\n\
+Tu...tu...t'es fou?\n\
+Tu triches?\n\
+OK! T'es disqualifié!\n\
+Tu l'auras pas volé!\n\
+Houuuuuu! Le tricheur!"))
+
+DEFINE_DIALOG(DIALOG_133, 1, 6, 30, 200, _("\
+Mario! C'est toi?\n\
+Comme je suis heureux de\n\
+te voir!\n\
+La Princesse, comme nous\n\
+tous, a été emprisonnée\n\
+dans les murs du château.\n\
+Bowser a volé les étoiles\n\
+du château, et il utilise\n\
+leur puissance pour se\n\
+créer un monde dans les\n\
+tableaux et les murs!\n\
+\n\
+Je t'en prie, retrouve les\n\
+étoiles de puissance!\n\
+Grâce à elles, tu pourras\n\
+ouvrir les portes du\n\
+château que Bowser a\n\
+fermées...\n\
+Il existe quatre pièces\n\
+au rez-de-chaussée.\n\
+Commence par celle dans\n\
+laquelle tu trouveras le\n\
+tableau représentant des\n\
+Bob-ombs...\n\
+Bowser a oublié de fermer\n\
+cette porte. Lorsque tu\n\
+auras récupéré 8 étoiles,\n\
+va ouvrir la porte avec la\n\
+grosse étoile: la Princesse\n\
+doit être de l'autre côté!"))
+
+DEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _("\
+Le nom des étoiles inscrit\n\
+au début de chaque monde\n\
+est un indice!\n\
+\n\
+Tu peux récupérer les\n\
+étoiles dans n'importe\n\
+quel ordre.\n\
+\n\
+Mais la sélection d'une\n\
+étoile peut impliquer\n\
+l'apparition de nouveaux\n\
+décors ou personnages...\n\
+Après avoir récupéré des\n\
+étoiles, tu peux tenter ta\n\
+chance dans d'autres\n\
+niveaux...\n\
+Aide-nous le plus vite\n\
+possible, mon mignon petit\n\
+Mario en sucre..."))
+
+DEFINE_DIALOG(DIALOG_135, 1, 6, 30, 200, _("\
+Bowser a volé les étoiles!\n\
+Je l'ai vu!\n\
+De mes propres yeux!\n\
+Il faut que tu nous\n\
+viennes en aide, Mario...\n\
+\n\
+Il a caché 6 étoiles dans\n\
+chaque monde, mais tu ne\n\
+pourras pas toutes les\n\
+récupérer sans avoir\n\
+actionné les interrupteurs\n\
+de casquettes...\n\
+Les étoiles que tu as\n\
+récupérées apparaîtront à\n\
+l'écran au début de\n\
+chaque niveau...\n\
+\n\
+\n\
+Si tu désires revoir les\n\
+ennemis que tu as déjà\n\
+vaincu, sélectionne les\n\
+étoiles en relation avec\n\
+ces ennemis..."))
+
+DEFINE_DIALOG(DIALOG_136, 1, 6, 30, 200, _("\
+Whoa!!! Tu as déjà\n\
+récupéré autant d'étoiles?\n\
+Incroyable! T'es fort, toi!\n\
+Mais fais attention:\n\
+Bowser et ses sbires sont\n\
+des durs à cuire...\n\
+N'oublie pas de récupérer\n\
+des pièces pour regagner\n\
+de l'énergie.\n\
+Les pièces jaunes te\n\
+rempliront une portion de\n\
+ton énergie...\n\
+Les pièces rouges t'en\n\
+donneront deux et les\n\
+pièces bleues, cinq.\n\
+\n\
+\n\
+\n\
+Pour faire apparaître des\n\
+pièces bleues, fais une\n\
+Attaque Rodéo sur un Bloc\n\
+de pièces bleues.\n\
+\n\
+\n\
+D'autre part, tu peux\n\
+te faire moins mal en\n\
+tombant d'une falaise, en\n\
+effectuant une Attaque\n\
+Rodéo juste avant de\n\
+toucher le sol..."))
+
+DEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _("\
+Merci Mario!\n\
+Grâce à tes étoiles de\n\
+puissance, Bowser est allé\n\
+se réfugier dans une\n\
+autre partie du château!\n\
+Au fait, savais-tu qu'une\n\
+étoile de puissance\n\
+apparaît à chaque fois\n\
+que tu récupères 100\n\
+pièces dans un niveau?"))
+
+DEFINE_DIALOG(DIALOG_138, 1, 6, 30, 200, _("\
+-Ascenseur 2-\n\
+Bas://Lac souterrain.\n\
+Gauche: Trou Noir.\n\
+Droite: Labyrinthe\n\
+////toxique\n\
+////(fermé)."))
+
+DEFINE_DIALOG(DIALOG_139, 1, 4, 30, 200, _("\
+\n\
+Au dessus:\n\
+Chariot automatique.\n\
+\n\
+Le chariot se met en\n\
+route automatiquement et\n\
+suit un chemin pré-\n\
+déterminé...\n\
+Le chariot disparaîtra\n\
+automatiquement lorsque\n\
+vous tomberez..."))
+
+DEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _("\
+-Plate-forme de travail-\n\
+Droite: Entrée du\n\
+////Labyrinthe\n\
+////toxique.\n\
+Gauche: Trou Noir.\n\
+////Ascenseur 1.\n\
+Flèche: Votre position\n\
+////actuelle."))
+
+DEFINE_DIALOG(DIALOG_141, 1, 4, 150, 200, _("\
+Vous avez récupéré une\n\
+des étoiles du château!\n\
+Vous pouvez désormais\n\
+ouvrir certaines portes!\n\
+Essayez celle de la\n\
+chambre de la Princesse\n\
+Peach, en haut à droite\n\
+dans le hall d'entrée...\n\
+Essayez aussi celle menant\n\
+au tableau de la\n\
+Forteresse de Whomp,\n\
+au rez-de-chaussée...\n\
+Les troupes de Bowser\n\
+sont encore nombreuses!\n\
+Il faut les arrêter à tout\n\
+prix! Courage..."))
+
+DEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _("\
+Vous avez récupéré trois\n\
+étoiles de puissance!\n\
+Désormais, vous pouvez\n\
+ouvrir les portes marquées\n\
+d'un 『3』.\n\
+Vous pouvez aller et venir\n\
+dans les niveaux comme\n\
+bon vous semble...\n\
+\n\
+\n\
+Les ennemis qui vous\n\
+attendent seront de plus\n\
+en plus costauds!\n\
+Alors, prudence..."))
+
+DEFINE_DIALOG(DIALOG_143, 1, 5, 150, 200, _("\
+Vous avez récupéré huit\n\
+étoiles de puissance!\n\
+Vous pouvez désormais\n\
+ouvrir la porte marquée\n\
+d'une grosse étoile!\n\
+La Princesse est juste de\n\
+l'autre côté...\n\
+Pouvez-vous l'entendre\n\
+crier votre nom?\n\
+『Marioooooo!』"))
+
+DEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _("\
+Vous avez récupéré 30\n\
+étoiles de puissance!\n\
+Vous pouvez désormais\n\
+ouvrir la porte marquée\n\
+d'une grosse étoile!\n\
+Mais avant de foncer\n\
+comme un dingue vers la\n\
+porte, êtes-vous sûr de\n\
+n'avoir rien oublié?\n\
+\n\
+Avez-vous enfoncé les\n\
+deux piliers? Avez-vous\n\
+toujours votre casquette?\n\
+\n\
+\n\
+Si vous l'avez perdue\n\
+dans le desert, allez\n\
+botter le croupion du\n\
+vilain vautour...\n\
+\n\
+On dit que Bowser s'est\n\
+réfugié dans les\n\
+profondeurs de l'océan...\n\
+L'avez-vous rencontré?"))
+
+DEFINE_DIALOG(DIALOG_145, 1, 6, 150, 200, _("\
+Vous avez récupéré 50\n\
+étoiles de puissance!\n\
+Vous pouvez désormais\n\
+ouvrir la porte marquée\n\
+d'une grosse étoile au\n\
+deuxième étage...\n\
+Avez-vous trouvé les trois\n\
+interrupteurs: rouge, vert\n\
+et bleu?\n\
+Les casquettes provenant\n\
+des blocs de couleur\n\
+peuvent être très utiles...\n\
+Allez, en route Mario...\n\
+Et que la force soit avec\n\
+toi, petit homme."))
+
+DEFINE_DIALOG(DIALOG_146, 1, 5, 150, 200, _("\
+Vous avez récupéré 70\n\
+étoiles de puissance!\n\
+Désormais, vous pouvez\n\
+accéder en haut de\n\
+『l'escalier sans fin』...\n\
+Le terrible Bowser vous y\n\
+attend...\n\
+Etes-vous prêt à\n\
+l'affronter?"))
+
+DEFINE_DIALOG(DIALOG_147, 1, 6, 30, 200, _("\
+Faites-vous bon usage\n\
+des casquettes spéciales?\n\
+Elles peuvent vous être\n\
+très utiles...\n\
+\n\
+\n\
+Vous devez tout d'abord\n\
+rendre les blocs de couleur\n\
+solides en actionnant des\n\
+interrupteurs secrets...\n\
+\n\
+\n\
+Les blocs rouges vous\n\
+fourniront des casquettes\n\
+ailées, les bleus des\n\
+casquettes d'invisibilité,\n\
+et les verts des\n\
+casquettes-métal..."))
+
+DEFINE_DIALOG(DIALOG_148, 1, 6, 30, 200, _("\
+Montagne du Bonhomme de\n\
+neige.../DANGER!\n\
+Ne pas tenter le Triple\n\
+Saut au-dessus de la\n\
+machine à cracher des\n\
+glaçons...\n\
+Tomber dans le lac gelé\n\
+vous fera vite perdre de\n\
+l'énergie de façon\n\
+permanente.\n\
+Alors, attention!\n\
+-Le Bonhomme de neige-"))
+
+DEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _("\
+Voici la Glissade Secrète\n\
+de la Princesse Peach!\n\
+Vous y trouverez une\n\
+étoile secrète que Bowser\n\
+n'a pas pu voler...\n\
+Pendant que vous\n\
+glisserez, appuyez vers\n\
+l'avant pour accélérer, et\n\
+vers l'arrière pour\n\
+ralentir...\n\
+Si vous glissez très vite,\n\
+vous découvrirez une\n\
+des étoiles secrètes du\n\
+château!"))
+
+DEFINE_DIALOG(DIALOG_150, 1, 4, 30, 200, _("\
+Whoa! Va-z'y, lui!\n\
+T' as inondé ma zon-mé!!!\n\
+Pourquoi t'as fait ça, yo!\n\
+T'es pas cool, toi?\n\
+Regarde! Mon toit est\n\
+fichu, et mon plancher\n\
+est trempé!\n\
+NoOoOoOoOoOoOon!!!\n\
+Ça me rend ouf de voir\n\
+ça! Complètement chtarbé!\n\
+C'est à cause de cette\n\
+étoile...\n\
+Je suis sûr qu'elle me\n\
+porte la poisse...\n\
+Saleté, va!"))
+
+DEFINE_DIALOG(DIALOG_151, 1, 6, 30, 200, _("\
+Ah non! Ça suffit!\n\
+D'abord tu me mouilles,\n\
+ensuite tu m'écrases la\n\
+face...\n\
+Grrrr! Pas cool, Bob.\n\
+Tu cherches le contact?"))
+
+DEFINE_DIALOG(DIALOG_152, 1, 2, 30, 200, _("\
+Gnaaaaa! Pov'type, va!\n\
+Tiens, la v'là ton étoile!\n\
+J'm'en fiche...\n\
+J'peux en avoir d'autres.\n\
+Allez, à la prochaine...\n\
+Cool, Abdoul."))
+
+DEFINE_DIALOG(DIALOG_153, 1, 1, 30, 200, _("\
+Hé! Qui va là?\n\
+Qui me grimpe dessus?\n\
+Une mouche?\n\
+Un moustique?\n\
+Un cafard?\n\
+T'as intérêt à dégager!\n\
+Sinon j'te souffle dessus!"))
+
+DEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _("\
+Accroche-toi à ta\n\
+casquette! Si jamais tu\n\
+la perds, retourne la\n\
+chercher là où tu l'as\n\
+perdue...\n\
+Sans elle tu peux te faire\n\
+très mal...\n\
+Alors, fais-y attention!\n\
+\n\
+\n\
+Au fait, la Princesse est\n\
+toujours emprisonnée dans\n\
+les murs du château!\n\
+Sauve-la, mon mignon\n\
+Mario rouge et bleu...\n\
+Heu... Tu savais qu'il\n\
+existe aussi des niveaux\n\
+dans les murs, hein?"))
+
+DEFINE_DIALOG(DIALOG_155, 1, 5, 30, 200, _("\
+Grâce au pouvoir des\n\
+étoiles, le château revient\n\
+peu à peu à la vie...\n\
+Je t'en prie Mario,\n\
+va affronter Bowser!\n\
+Connais-tu la salle du\n\
+miroir? Fais attention à\n\
+tout ce qui n'a pas de\n\
+reflet...\n\
+\n\
+Autre chose: rentre dans\n\
+le niveau Trempé-Séché\n\
+à l'aide d'un grand saut.\n\
+\n\
+Allez, courage camarade!"))
+
+DEFINE_DIALOG(DIALOG_156, 1, 3, 30, 200, _("\
+Le niveau de la pendule\n\
+est étrange...\n\
+\n\
+Fais attention à la\n\
+grande aiguille lorsque\n\
+tu rentres dans l'horloge."))
+
+DEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _("\
+Attention aux sables\n\
+mouvants!\n\
+Si vous vous faites\n\
+avaler, tâchez de ne pas\n\
+boire la tasse!\n\
+Les zones sombres sont\n\
+des trous sans fond...\n\
+Alors, prudence jeune\n\
+aventurier..."))
+
+DEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _("\
+1. Si vous sautez de\n\
+façon répétée, vous\n\
+sauterez de plus en plus\n\
+haut. En courant et en\n\
+sautant trois fois, vous\n\
+ferez un Triple Saut.\n\
+2. Sautez contre un mur\n\
+et sautez à nouveau pour\n\
+créer une Impulsion.\n\
+Grâce à cette technique,\n\
+vous pourrez accéder à\n\
+des lieux en hauteur."))
+
+DEFINE_DIALOG(DIALOG_159, 1, 4, 30, 200, _("\
+3. En vous arrêtant, en\n\
+appuyant sur [Z] et en\n\
+sautant, vous ferez un\n\
+Saut Périlleux en arrière.\n\
+Pour faire un Saut en\n\
+Longueur, courez, appuyez\n\
+sur [Z], puis sautez."))
+
+DEFINE_DIALOG(DIALOG_160, 1, 3, 30, 200, _("\
+Appuyez sur [B] lorsque\n\
+vous courez pour faire\n\
+une attaque en glissade.\n\
+Pour vous remettre\n\
+debout, appuyez sur [A] ou\n\
+sur [B]."))
+
+DEFINE_DIALOG(DIALOG_161, 1, 4, 30, 200, _("\
+Mario!?!?!\n\
+C'est toi? Vraiment toi?\n\
+Ça fait un bout de temps\n\
+que je ne t'avais pas vu!\n\
+Tu as grossi, non?\n\
+On m'a dit de t'attendre\n\
+ici, mais je commençais\n\
+à perdre espoir...\n\
+Alors c'est vrai? Tu as\n\
+battu Bowser? Encore une\n\
+fois? Il n'abandonne\n\
+jamais ce gros reptile...\n\
+Tu as récupéré toutes les\n\
+étoiles? Tu as sauvé la\n\
+Princesse Peach?\n\
+T'es amoureux, non?\n\
+Tiens...\n\
+J'ai une lettre pour toi...\n\
+C'est peut-être une\n\
+admiratrice, qui sait?\n\
+『Merci d'avoir joué au\n\
+plus beau jeu de toute la\n\
+galaxie:\n\
+MARIO 64!!!\n\
+Il reste sûrement des\n\
+niveaux que vous ne\n\
+connaissez pas par coeur,\n\
+alors...\n\
+Voici quelques munitions!\n\
+A bientôt et merci!\n\
+--Les créateurs de\n\
+/Mario 64..."))
+
+DEFINE_DIALOG(DIALOG_162, 1, 2, 30, 200, _("\
+Oh, non!\n\
+Encore toi?\n\
+T'es amoureux, ou quoi?\n\
+Tu veux m'épouser?\n\
+Désolé, mais tu n'es pas\n\
+mon type...\n\
+Mon truc à moi, c'est les\n\
+femelles...\n\
+Ah! Tu veux peut-être\n\
+une étoile?\n\
+OK. Mais j'te préviens:\n\
+c'est la dernière fois!\n\
+Ah... Autre chose...\n\
+\n\
+LACHE-MOI!!!!!\n\
+GRANDE BRUTE!!!!!"))
+
+DEFINE_DIALOG(DIALOG_163, 1, 4, 30, 200, _("\
+NoOoOoOoOoOoOoOon!!!\n\
+Tu...tu...tu m'as battu?\n\
+Moi?!? C'est illogique!\n\
+C'est moi le plus grand!\n\
+Quoi? Il y avait 120\n\
+étoiles en tout?!?\n\
+Heu......\n\
+Je le savais!\n\
+Aaaargh! Le château\n\
+regagne tous ses pouvoirs,\n\
+c'est insupportable!\n\
+GnAaAaAaAaAaAaAaArgh!\n\
+A la prochaine, Mario...\n\
+Tu sais bien que je ne\n\
+suis pas du genre à\n\
+abandonner si facilement!\n\
+BWA HA HA HA HA HA HA!\n\
+GWA HI HA HI HOU HEU!\n\
+..... Atcha!"))
+
+DEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _("\
+Beuuuuuuuu...\n\
+J'ai trop mangé, moi...\n\
+Beuuuuuuuu...\n\
+Mm? Qui es-tu?\n\
+Mario! Te voilà, rigolo!\n\
+Ça te dit une petite\n\
+course?\n\
+A moins que tu aies peur!\n\
+Alors, c'est d'accord?\n\
+Prêt...\n\
+\n\
+//Partez!//Heu, non!"))
+
+DEFINE_DIALOG(DIALOG_165, 1, 3, 30, 200, _("\
+Tourner autour du poteau\n\
+peut faire tourner les\n\
+têtes..."))
+
+DEFINE_DIALOG(DIALOG_166, 1, 4, 30, 200, _("\
+Je m'entraîne...\n\
+Je reviens plus tard...\n\
+\n\
+-- Koopa-Rapido --"))
+
+DEFINE_DIALOG(DIALOG_167, 1, 5, 30, 200, _("\
+En route vers le château!\n\
+\n\
+Appuyez sur [A] pour sauter\n\
+et sur [Z] pour vous\n\
+accroupir.\n\
+Appuyez sur [B] pour\n\
+attaquer ou pour attraper\n\
+quelque chose. Appuyez à\n\
+nouveau sur [B] pour lancer\n\
+ce que vous portez."))
+
+DEFINE_DIALOG(DIALOG_168, 1, 6, 30, 200, _("\
+Hé! Lâche-moi un peu!\n\
+Ça fait deux fois que tu\n\
+t'essuies les pieds sur\n\
+ma tête!\n\
+Tu m'cherches ou quoi?\n\
+Coup d'boule!!!!"))
+
+DEFINE_DIALOG(DIALOG_169, 1, 5, 30, 200, _("\
+Dehors les touristes!\n\
+Cette caverne est très\n\
+dangereuse!!!\n\
+Alors... DE-HORS!\n\
+/ -- Le capitaine --"))
diff --git a/text/jp/courses.h b/text/jp/courses.h
@@ -0,0 +1,80 @@
+COURSE_ACTS(COURSE_BOB, _(" 1 ボムへいの せんじょう"),
+ _("やまのうえの ボムキング") , _("はくねつ ノコノコレ-ス") , _("そらのしままで ぶっとべ"),
+ _("8まいの あかコイン") , _("そらにはばたけ はねマリオ") , _("ワンワンの いぬごやで"))
+
+COURSE_ACTS(COURSE_WF, _(" 2 バッタンキングの とりで"),
+ _("いかりのバッタン キング") , _("とりでの てっぺんへ") , _("たいほうで ひとっとび"),
+ _("うきしまの 8まいコイン") , _("とりかごへ スト-ン") , _("たいほうで ぶっこわせ!"))
+
+COURSE_ACTS(COURSE_JRB, _(" 3 かいぞくの いりえ"),
+ _("ちんぼつせんの おたから") , _("でてこい きょだいウツボ") , _("かいていどうくつの おたから"),
+ _("うかんだフネの あかコイン") , _("いわのはしらへ ひとっとび") , _("ふきだす みずを くぐれ"))
+
+COURSE_ACTS(COURSE_CCM, _(" 4 さむいさむい マウンテン"),
+ _("ス-パ-スノ-スライダ-") , _("まいごの こペンギン") , _("ペンギン チャンピオンレ-ス"),
+ _("すべって 8まいあかコイン") , _("ゴロゴロ ゆきダルマ") , _("かくれ ス-パ- カベキック"))
+
+COURSE_ACTS(COURSE_BBH, _(" 5 テレサの ホラ-ハウス"),
+ _("おやかたテレサを さがせ") , _("テレサの メリ-ゴ-ランド") , _("ほんだなオバケの ナゾ"),
+ _("8まいコインは どこだ") , _("バルコニ-の ボステレサ") , _("かくしべやの おおめだま"))
+
+COURSE_ACTS(COURSE_HMC, _(" 6 やみにとける どうくつ"),
+ _("ドッシ-のいる ちていこ") , _("そうさリフトの あかコイン") , _("メタルで ダッシュ"),
+ _("ケムリめいろを ぬけて") , _("ケムリめいろの ひじょうぐち") , _("ゴロゴロいわの ひみつ"))
+
+COURSE_ACTS(COURSE_LLL, _(" 7 ファイアバブル ランド"),
+ _("おとせ ボスどんけつ") , _("たたかえ!どんけつたい") , _("15パズルの 8まいコイン"),
+ _("コロコロ まるたわたり") , _("かざんの パワ-スタ-") , _("かざんの リフトツア-"))
+
+COURSE_ACTS(COURSE_SSL, _(" 8 あっちっち さばく"),
+ _("いたずらハゲたか ジャンゴ") , _("ピラミッドの てっぺんで") , _("きょだいピラミッドの ないぶ"),
+ _("4つのはしらに たつものへ") , _("とびまわれ 8まいコイン") , _("きょだいピラミッドのナゾ"))
+
+COURSE_ACTS(COURSE_DDD, _(" 9 ウォ-タ- ランド"),
+ _("クッパの せんすいかん") , _("うずしおの たからばこ") , _("にげたクッパの あかコイン"),
+ _("ふきだす みずを くぐれ") , _("マンタの おくりもの") , _("ボウシが そろったら"))
+
+COURSE_ACTS(COURSE_SL, _("10 スノ-マンズ ランド"),
+ _("おおゆきダルマの おでこ") , _("こおりのくにの どんけつ") , _("こおりの オブジェ"),
+ _("つめたい いけを こえて") , _("コウラにのって あかコイン") , _("フワフワさんの おうち"))
+
+COURSE_ACTS(COURSE_WDW, _("11 みずびたシティ-"),
+ _("ビリビリの まめリフト") , _("トップオブ ザ シティ-") , _("あさせと そらのシ-クレット"),
+ _("いそげ!かなあみエレベ-タ-") , _("ダウンタウンの あかコイン") , _("ダウンタウンを かけろ"))
+
+COURSE_ACTS(COURSE_TTM, _("12 たかいたかいマウンテン"),
+ _("たかいたかい やまのうえ") , _("いたずらザル ウッキィのオリ") , _("おばけキノコの あかコイン"),
+ _("マウンテン スライダ-") , _("はしのうえから みわたせば") , _("ぶっとべ はなれキノコへ"))
+
+COURSE_ACTS(COURSE_THI, _("13 ちびでか アイランド"),
+ _("きょだいパックンフラワ-") , _("デカじまの てっぺんで") , _("ノコノコ リタ-ンマッチ"),
+ _("チビじまの 5シ-クレット") , _("ハナチャンの あかコイン") , _("イカリの ハナチャン"))
+
+COURSE_ACTS(COURSE_TTC, _("14 チックタックロック"),
+ _("グルグル かごのなかへ") , _("ふりこの へや") , _("チックタックはりの うえ"),
+ _("えっへん てっぺん ドッスン") , _("つきだしを のりこえて") , _("00ふんの あかコイン"))
+
+COURSE_ACTS(COURSE_RR, _("15 レインボ- クル-ズ"),
+ _("にじを わたる ふね") , _("てんくうの おやしき") , _("タテめいろの あかコイン"),
+ _("カゼきる きょだいブランコ") , _("おおぞら アスレチック") , _("にじの かなたの しま"))
+
+SECRET_STAR(COURSE_BITDW, _(" やみの せかいの クッパ"))
+SECRET_STAR(COURSE_BITFS, _(" ほのおの うみの クッパ"))
+SECRET_STAR(COURSE_BITS, _(" てんくうの たたかい!"))
+SECRET_STAR(COURSE_PSS, _(" ピ-チのかくれスライダ-"))
+SECRET_STAR(COURSE_COTMC, _(" メタルスイッチの たき"))
+SECRET_STAR(COURSE_TOTWC, _(" はばたけ!はねスイッチへ"))
+SECRET_STAR(COURSE_VCUTM, _(" おほりのとうめいスイッチ"))
+SECRET_STAR(COURSE_WMOTR, _(" にじ かける はねマリオ"))
+SECRET_STAR(COURSE_SA, _(" おさかなと いっしょ"))
+SECRET_STAR(COURSE_CAKE_END, _(" おいしいケ-キ"))
+
+CASTLE_SECRET_STARS(_(" おしろのかくれスタ-"))
+
+EXTRA_TEXT(0, _("おしろのかくれスタ-"))
+EXTRA_TEXT(1, _("100まいコインの スタ-"))
+EXTRA_TEXT(2, _("マウンテンのへやが ひらく!"))
+EXTRA_TEXT(3, _("みずとゆき2つのへやが ひらく!"))
+EXTRA_TEXT(4, _("おおきなほしの ドアがひらく!"))
+EXTRA_TEXT(5, _("クッパへの とびらがひらく!"))
+EXTRA_TEXT(6, _("3がいへの とびらがひらく!"))
diff --git a/text/jp/debug.c.in b/text/jp/debug.c.in
@@ -1,35 +0,0 @@
-// 0x020087E4
-static const u8 Debug0[] = {
- _("STAGE SELECT\n"
- " つづける?\n"
- " 1 マウンテン\n"
- " 2 ファイア-バブル\n"
- " 3 スノ-スライダ-\n"
- " 4 ウォ-タ-ランド\n"
- " クッパ1ごう\n"
- " もどる")
-};
-
-
-// 0x0200883C
-static const u8 Debug1[] = {
- _("PAUSE \n"
- " つづける?\n"
- " やめる ?")
-};
-
-
-// debug text table
-static const struct DialogEntry debug_text_entry_0 = {
- 1, 8, 30, 200, Debug0
-};
-
-static const struct DialogEntry debug_text_entry_1 = {
- 1, 3, 100, 150, Debug1
-};
-
-
-const struct DialogEntry *const seg2_debug_text_table[] = {
- &debug_text_entry_0, &debug_text_entry_1, NULL,
-};
-
diff --git a/text/jp/dialog.c.in b/text/jp/dialog.c.in
@@ -1,3127 +0,0 @@
-// dialogs
-// 0x02008884
-static const u8 Dialog000[] = {
- _("おおっと,ここはキケンな\n"
- "せんじょうの どまんなか。\n"
- "『え』のなかのせかいには\n"
- "クッパが ぬすんだ\n"
- "パワ-スタ-がある。\n"
- "まずは,あかいボムへいに\n"
- "はなしかけてみるといい!\n"
- "Bボタンではなしができる。\n"
- "きっと,ちからになって\n"
- "くれるはずだ。\n"
- "カンバンを よむときも\n"
- "たちどまって Bボタン!\n"
- "AかBボタンですすめる!\n"
- "まえにたつだけで はなし\n"
- "かける,どうぶつもいます。")
-};
-
-
-// 0x02008958
-static const u8 Dialog001[] = {
- _("あぶない あぶない!!\n"
- "こんなところを うろうろ\n"
- "してると,みずばくだんが\n"
- "ふってきますよ。\n"
- "くろいボムへいたちは\n"
- "たたかいが だいすきで,\n"
- "いつも ぼくらを\n"
- "こうげきしてきます。\n"
- "ボムキングという ボスが\n"
- "スタ-を てにいれてから\n"
- "ここは せんじょうに\n"
- "なってしまいました。\n"
- "ボムキングから スタ-を\n"
- "とりあげてくれませんか?\n"
- "このさきの はしをわたり\n"
- "みちぞいにひだりにいけば,\n"
- "ボムとりでの いりぐちに\n"
- "つきます。キングのスタ-\n"
- "を とりもどしたら また\n"
- "あいに きてください。")
-};
-
-
-// 0x02008A68
-static const u8 Dialog002[] = {
- _("ちょっと あなた!\n"
- "このさきはキケンですよ!\n"
- "\n"
- "そこで,アドバイスです。\n"
- "そらから ふってくる\n"
- "みずばくだんをよけて,\n"
- "はしを『2つ』わたると\n"
- "あちらの『じんち』です。\n"
- "やまのうえのボムキングは\n"
- "すごく ちからもちです。\n"
- "かつぎあげられないように\n"
- "きをつけてください。\n"
- "ぼくら あかボムへいは\n"
- "あなたのみかたです。\n"
- "いつでも はなしかけて\n"
- "きてくださいね!")
-};
-
-
-// 0x02008B34
-static const u8 Dialog003[] = {
- _("おかげで ボムキングは\n"
- "おとなしくなりました!\n"
- "でも,たたかいは おわり\n"
- "ません。 かいぶつたちが\n"
- "まだスタ-をもっています。\n"
- "スタ-をいくつかとったら\n"
- "あたらしい へやのドアを\n"
- "ひらくことが できます。\n"
- "つぎのへやの せかいへと\n"
- "すすんでください!\n"
- "ぼくらのなかまが\n"
- "おまちしています。\n"
- "はなしかけて くださいね。\n"
- "いつでも たいほうを\n"
- "じゅんびしますよ。")
-};
-
-
-// 0x02008BFC
-static const u8 Dialog004[] = {
- _("ぼくたちは へいわを\n"
- "ねがっています。 だから\n"
- "たいほうは つかいません。\n"
- "けれど あなたをどこかに\n"
- "とばすなら へいきです。\n"
- "どうぞ つかってください。\n"
- "このコ-スにあるすべての\n"
- "あかボムぐん たいほうを\n"
- "つかえるように します。")
-};
-
-
-// 0x02008C80
-static const u8 Dialog005[] = {
- _("な-んだ,マリオさんじゃ\n"
- "ないッスか!\n"
- "ボムキングやっつけたって\n"
- "ほんと-ッスか?\n"
- "いや- すごいッス!\n"
- "さっすが つよいし,\n"
- "オイラほどではないけど,\n"
- "あしも はやいッスよね!\n"
- "ひとつオイラと,\n"
- "ボムキングのヤツがいた\n"
- "おやまのちょうじょうまで\n"
- "かけっこでもしませんか?\n"
- "それでは オイラが,\n"
- "『ドン!』といったら\n"
- "スタ-ト ッスよ。\n"
- "\n"
- " ヨ---イ!\n"
- "\n"
- " ドン! やめる")
-};
-
-
-// 0x02008D54
-static const u8 Dialog006[] = {
- _("ははっ ズルッコは\n"
- "なしッス! マリオさん。\n"
- "またこんど\n"
- "あそびましょうね。")
-};
-
-
-// 0x02008D80
-static const u8 Dialog007[] = {
- _("ハア ハア ハア\n"
- "いや-まいったッス!\n"
- "ほんと はえ-ッスね!\n"
- "オイラに かったきねんに,\n"
- "これ,あげるッス。\n"
- "ホイ!")
-};
-
-
-// 0x02008DC0
-static const u8 Dialog008[] = {
- _("もうけんワンワン キケン\n"
- "Cボタンの うえをおして\n"
- "『マリオのちかく』から\n"
- "ながめて ください。\n"
- "とても コワイです。\n"
- "クイのうえの あかコイン。\n"
- "おなじコインを さがして\n"
- "8まいあつめると,はしを\n"
- "わたったひだりのはやしに\n"
- "スタ-がでます。")
-};
-
-
-// 0x02008E44
-static const u8 Dialog009[] = {
- _("ひっさしぶりッス! いま\n"
- "ちょ-どかえったとこッス。\n"
- "パワ-スタ-のせいか\n"
- "いちだんと はやくなった\n"
- "ようッスね!\n"
- "このまえは まけちゃって\n"
- "ほ-んと くやしいッス。\n"
- "ここは オイラのホ-ム\n"
- "グランド!じしんあるッス。\n"
- "もいちどやりましょうよ!\n"
- "ゴ-ルはカゼふきのたに!\n"
- "しってるッスよね!?\n"
- "そんじゃ\n"
- " ヨ---イ!\n"
- " ドン! やめる")
-};
-
-
-// 0x02008EFC
-static const u8 Dialog010[] = {
- _("そらを じゆうにとべる\n"
- "『はねのぼうし』の\n"
- "スイッチを ふみました。\n"
- "せかいじゅうにある\n"
- "あかブロックから,はねの\n"
- "ぼうしがとびだします。\n"
- "ここまでをセ-ブする?\n"
- "\n"
- " はい いいえ")
-};
-
-
-// 0x02008F68
-static const u8 Dialog011[] = {
- _("むてきの からだになれる\n"
- "『メタルのぼうし』の\n"
- "スイッチを ふみました。\n"
- "せかいじゅうの みどりの\n"
- "ブロックから,メタルの\n"
- "ぼうしが とびだします。\n"
- "ここまでをセ-ブする?\n"
- "\n"
- " はい いいえ")
-};
-
-
-// 0x02008FD8
-static const u8 Dialog012[] = {
- _("すがたをけせる まほうの\n"
- "『とうめいのぼうし』の\n"
- "スイッチを ふみました。\n"
- "せかいじゅうの あおい\n"
- "ブロックから,とうめい\n"
- "ぼうしが とびだします。\n"
- "ここまでをセ-ブする?\n"
- "\n"
- " はい いいえ")
-};
-
-
-// 0x02009048
-static const u8 Dialog013[] = {
- _("100まいコインの\n"
- "スタ-を てにいれた!\n"
- "おしろのパワ-が\n"
- "またひとつマリオに\n"
- " ちからを あたえた。\n"
- "\n"
- "ここまでセ-ブしますか?\n"
- "\n"
- " はい いいえ")
-};
-
-
-// 0x020090A0
-static const u8 Dialog014[] = {
- _("おもわぬところで\n"
- "スタ-をてにいれた。\n"
- "そして おしろのパワ-が\n"
- "またひとつ マリオに\n"
- " ゆうきを あたえた。\n"
- "\n"
- "ここまでセ-ブしますか?\n"
- "\n"
- " はい いいえ")
-};
-
-
-// 0x020090FC
-static const u8 Dialog015[] = {
- _("てきはパンチでたおせるよ。\n"
- "Aボタンは『ジャンプ』\n"
- "Bボタンは『パンチ』です。\n"
- "AとBボタンで『キック』。\n"
- "『ものをもつ』ときも\n"
- " Bボタン!\n"
- "『なげる』は もういちど\n"
- "Bボタンをおしてください。")
-};
-
-
-// 0x02009174
-static const u8 Dialog016[] = {
- _("キラキラひかったコウラに\n"
- "のると,どんなところも\n"
- "スイスイすすめる!\n"
- "てきをけちらし すすめ!")
-};
-
-
-// 0x020091A8
-static const u8 Dialog017[] = {
- _("ワシがボムキング,つまり\n"
- "ばくだんの おうさまだ。\n"
- "よくここまできた。その\n"
- "ゆうきは ほめてやろう。\n"
- "とはいえ,おまえにタダで\n"
- "だいじな パワ-スタ-を\n"
- "やるわけには いかん。\n"
- "そこで チャンスをやろう。\n"
- "パワ-スタ-がほしければ\n"
- "ワシを なげとばしてみろ。\n"
- "うしろから かつげるか?\n"
- "さあ,かかってこい!")
-};
-
-
-// 0x02009258
-static const u8 Dialog018[] = {
- _("ねむいので,ねています。\n"
- "おこすと おこります。\n"
- "\n"
- "しずかに あるきましょう。")
-};
-
-
-// 0x02009284
-static const u8 Dialog019[] = {
- _("ろうかは しずかに\n"
- "あるきましょう。")
-};
-
-
-// 0x02009298
-static const u8 Dialog020[] = {
- _("おしろへ あそびに\n"
- "きてください。\n"
- "ケ-キを つくって\n"
- "まってます。\n"
- " -ピ-チより-")
-};
-
-
-// 0x020092CC
-static const u8 Dialog021[] = {
- _("ようこそいらっしゃいませ\n"
- "・・だれも いませんので\n"
- "とっとと\n"
- " おかえりください。\n"
- "ガハハハッ!")
-};
-
-
-// 0x02009304
-static const u8 Dialog022[] = {
- _("カギが かかっている・・")
-};
-
-
-// 0x02009314
-static const u8 Dialog023[] = {
- _("・・・カギがあわない!\n"
- "このカギは『ちか』への\n"
- "カギのようだ。")
-};
-
-
-// 0x0200933C
-static const u8 Dialog024[] = {
- _("クッパがとじたこのドアを\n"
- "ひらくには,スタ-の\n"
- "パワ-が ひつようです。\n"
- "どこかのへやの『え』の\n"
- "なかの モンスタ-から\n"
- "とりもどしてきてください")
-};
-
-
-// 0x02009390
-static const u8 Dialog025[] = {
- _("このドアを ひらくには\n"
- "スタ-3まいの パワ-が\n"
- "ひつようです。\n"
- "あと[%]まいの スタ-が\n"
- "ひつようです。")
-};
-
-
-// 0x020093CC
-static const u8 Dialog026[] = {
- _("このドアを ひらくには\n"
- "スタ-8まいの パワ-が\n"
- "ひつようです。\n"
- "あと[%]まいの スタ-が\n"
- "ひつようです。")
-};
-
-
-// 0x02009408
-static const u8 Dialog027[] = {
- _("このドアを ひらくには\n"
- "スタ-30まいのパワ-が\n"
- "ひつようです。\n"
- "スタ-があと\n"
- "[%]まいひつようです。")
-};
-
-
-// 0x02009444
-static const u8 Dialog028[] = {
- _("このドアを ひらくには\n"
- "スタ-50まいのパワ-が\n"
- "ひつようです。\n"
- "あと[%]まいの スタ-が\n"
- "ひつようです。")
-};
-
-
-// 0x02009480
-static const u8 Dialog029[] = {
- _("はてしない かいだんの\n"
- "ドアを ひらくには\n"
- "スタ-70まいのパワ-が\n"
- "ひつようです・・・・・\n"
- "あと[%]まいの スタ-が\n"
- "たりません・・・\n"
- "ガハハッ!")
-};
-
-
-// 0x020094D4
-static const u8 Dialog030[] = {
- _("カメラマンのジュゲムです。\n"
- "ちょっと アドバイス!\n"
- "しずかにあるきたいときは\n"
- "ゆっくり あるくことです。\n"
- "まわりを みたいときは\n"
- "Cボタンのみぎとひだりで\n"
- "カメラをすこしまわせます。\n"
- "Cのしたで とおくから。\n"
- "できないところでは\n"
- "『ブ-ッ!』といいます。\n"
- "よろしく!! \n"
- " -ジュゲム")
-};
-
-
-// 0x0200957C
-static const u8 Dialog031[] = {
- _("またまた まけちゃったよ。\n"
- "こんどはスッゴい じしん\n"
- "あったんッスけどね・・・\n"
- "ほんと すごいッスね!\n"
- "このスタ-も\n"
- "あげちゃいます!")
-};
-
-
-// 0x020095C8
-static const u8 Dialog032[] = {
- _("はねぼうしの あるひとは\n"
- "3かいれんぞくでジャンプ\n"
- "しよう。 おおぞらたかく\n"
- "とびあがれます。\n"
- "たいほうでとぶと\n"
- "さらに たかくとべます。\n"
- "まわりをみるのはCボタン。\n"
- "おりたいときはZボタン。")
-};
-
-
-// 0x02009638
-static const u8 Dialog033[] = {
- _("ワ-プどかんを\n"
- "くぐりぬけ,\n"
- "ピ-チの おしろに\n"
- "つきました。\n"
- "そうさは カンタン。\n"
- "Aボタンが ジャンプ!\n"
- "Bボタンで こうげき!\n"
- "カンバンも よめます。\n"
- "マリオを うごかすのは\n"
- "まんなかに ついてる\n"
- "『3Dスティック』。\n"
- "まずはおしろへ すすめ!")
-};
-
-
-// 0x020096C4
-static const u8 Dialog034[] = {
- _("こんにちは! \n"
- "ぼくたちカメラマンの\n"
- "ジュゲムブラザ-ズです。\n"
- "これから,カメラをもって\n"
- "あなたに ついていきます。\n"
- "カメラは おすすめのいち\n"
- "から さつえいしてます。\n"
- "むきをかえるのはCボタン,\n"
- "かえられない ときは\n"
- "『ブ-ッ!』といいます。\n"
- "ちょっと たちどまったら\n"
- "Cボタンのうえ!\n"
- "まわりを ながめられます。\n"
- "ゲ-ムに もどすときは\n"
- "『Aボタン』です。\n"
- "『Rボタン』をつかうと\n"
- "いろんなカメラモ-ドに\n"
- "きりかえられます。\n"
- "また,かんばんなどをみて\n"
- "おぼえてください!\n"
- "いじょう!! カメラマン\n"
- "ジュゲムブラザ-ズからの\n"
- "おしらせでした。\n"
- "それじゃ,きをつけて!")
-};
-
-
-// 0x02009800
-static const u8 Dialog035[] = {
- _("きいろい4つの Cボタン。\n"
- "『うえ』をおすと\n"
- "3Dスティックで\n"
- "まわりを みわたせます。\n"
- "ふだんマリオをみてるのは\n"
- "おすすめのジュゲムカメラ。\n"
- "Cボタンで すこし,\n"
- "かくどが かえられます。\n"
- "Rボタンをおすと\n"
- "マリオの うしろからみる\n"
- "マリオカメラに なります。\n"
- "もどすときはもういちどR。\n"
- "『ジュゲムカメラ』と\n"
- "『マリオカメラ』どちらも\n"
- "Cボタンの したをおすと,\n"
- "とおくへ はなれます。\n"
- "いまつかっている\n"
- "カメラを しりたいときは,\n"
- "がめん みぎしたの\n"
- "アイコンを みてください。")
-};
-
-
-// 0x02009908
-static const u8 Dialog036[] = {
- _(" 『てんぼうだい』\n"
- "Cボタンの うえをおすと,\n"
- "まわりを みわたせます。\n"
- "みえないところは よ-く\n"
- "たしかめてからすすめ-!\n"
- "Rボタンはマリオのカメラ。\n"
- "いつも マリオのうしろを\n"
- "ついていくぞ。ジュゲムに\n"
- "もどすときは もういちど\n"
- "Rボタンをおすこと。\n"
- "ポ-ズがめんで モ-ドを\n"
- "かえると,Rボタンを\n"
- "おしてるあいだ カメラを\n"
- "『とめる』こともできる!\n"
- "ためしてみよう。\n"
- "つかってるカメラモ-ドは\n"
- "みぎしたのアイコンで\n"
- "たしかめよう。\n"
- "マリオとの きょりは\n"
- "きいろやじるしを みよう。")
-};
-
-
-// 0x02009A14
-static const u8 Dialog037[] = {
- _("あたしの『かち』です。\n"
- "あなたの『まけ』です。\n"
- "ははははは!!!\n"
- "マリオさん,と-っても\n"
- "おしかったですね。\n"
- "また あそびましょう!")
-};
-
-
-// 0x02009A5C
-static const u8 Dialog038[] = {
- _("パワ-スタ-の ちからで\n"
- "つぎの せかいへのドアは\n"
- "しずかにひらいた。")
-};
-
-
-// 0x02009A88
-static const u8 Dialog039[] = {
- _("-ボムとりで いりぐち-\n"
- " だれも はいるな!\n"
- "\n"
- "ワシのパワ-スタ-は\n"
- "だれにも わたさぬ。\n"
- "クッパどのからいただいた\n"
- "だいじな だいじな\n"
- "たからものだ。\n"
- "なんまいか かくしたが\n"
- "ばしょは おしえぬ。\n"
- "コ-スはじめの スタ-の\n"
- "なまえを,ヒントにする\n"
- "ぐらいなら ゆるす。\n"
- "\n"
- "おやまのうえのボムキング")
-};
-
-
-// 0x02009B34
-static const u8 Dialog040[] = {
- _("このさき キケン!\n"
- "リフトのたにぞこ です。")
-};
-
-
-// 0x02009B50
-static const u8 Dialog041[] = {
- _("オイラがかっちゃいました。\n"
- "ハッハッハッ\n"
- "たいしたことないッスね!\n"
- "じゃ,またこんどね!")
-};
-
-
-// 0x02009B80
-static const u8 Dialog042[] = {
- _("この『はし』せまい。\n"
- "ゆっくりわたろう!\n"
- "ガケのカドにとびついたり\n"
- "ゆっくりと おりると\n"
- "ぶらさがれます。\n"
- "『て』を はなすときは\n"
- "Zボタンか スティックを\n"
- "マリオのうしろへ。\n"
- "のぼるときには まえへ\n"
- "たおしてください。\n"
- "ぶらさがって すぐに\n"
- "Aボタンをおすと\n"
- "すばやく あがれます。")
-};
-
-
-// 0x02009C20
-static const u8 Dialog043[] = {
- _("ジャンプしてAボタンを\n"
- "おしっぱなしに すると\n"
- "ぶらさがれる ところが\n"
- "あります。\n"
- "『とり』につかまるとき\n"
- "と おなじです。")
-};
-
-
-// 0x02009C68
-static const u8 Dialog044[] = {
- _("だれだい! せっかく\n"
- "いいきもちで ねてたのに。\n"
- "あ- カラダがおもいな-\n"
- "ちょ-どいいや!わたしと\n"
- "ひと-っとび しません?\n"
- "ジャンプボタンを\n"
- "おしているあいだ\n"
- "ぶらさがれますよ-。\n"
- "おりたいときに\n"
- "はなせばい-です。\n"
- "お-すきなところへ\n"
- "おつれしま-す。\n"
- "かげを よ-くみて\n"
- "Aボタンで つかまって\n"
- "くださいね-!")
-};
-
-
-// 0x02009D1C
-static const u8 Dialog045[] = {
- _("あ-あ,つかれた-・・\n"
- "や-っぱり おもいな-。\n"
- "きょうは このあたりで!\n"
- "『もういちどAボタンを\n"
- "おしなおしてください。』\n"
- "もうすこし とんだら\n"
- "ほんとに てをはなしてね\n"
- "\n"
- "じゃあ,さよなら-!")
-};
-
-
-// 0x02009D88
-static const u8 Dialog046[] = {
- _("ジャンプのワザ まとめて\n"
- "せいりしておきます。\n"
- "とてもだいじな3つのワザ。\n"
- "おぼえて つかって\n"
- "みてください。\n"
- "タイミングよく つづけて\n"
- "とぶと たかくとべます。\n"
- "はやく はしっていると\n"
- "さらに たかくとべます。\n"
- "『3だんとび』です。\n"
- "はしりながら Zボタンで\n"
- "しゃがんでジャンプすると\n"
- "とおくへ とべます。\n"
- "『はばとび』です。\n"
- "とてもべんりです。\n"
- "まっすぐたった カベに\n"
- "むかって ジャンプして,\n"
- "ぶつかった ところから\n"
- "また ジャンプできます。\n"
- "『カベキック』といいます。\n"
- "だいじな テクニック\n"
- "『3だんとび』\n"
- "『はばとび』\n"
- "『カベキック』\n"
- " わかった?")
-};
-
-
-// 0x02009ED4
-static const u8 Dialog047[] = {
- _("こんにちは!\n"
- "たいほうの じゅんびに\n"
- "かかります!・・・・・")
-};
-
-
-// 0x02009EF8
-static const u8 Dialog048[] = {
- _("ここは ツルツルすべる\n"
- "ゆきやまの ちょうじょう。\n"
- "まずはそこの\n"
- "やまごやへ どうぞ。")
-};
-
-
-// 0x02009F2C
-static const u8 Dialog049[] = {
- _("ジャンプわざカベキックを\n"
- "おぼえていますか?\n"
- "たかいところへ あがる\n"
- "とてもだいじなテクニック。\n"
- "カベからカベへジャンプ!\n"
- "スティックをつかって\n"
- "はねかえったほうに\n"
- "かそくする。\n"
- "よ-く\n"
- "れんしゅう しておこう!")
-};
-
-
-// 0x02009FA4
-static const u8 Dialog050[] = {
- _("Zボタンで しゃがめます。\n"
- "『さか』では すべれます。\n"
- "ジャンプの とちゅうなら\n"
- "『ヒップドロップ』!!\n"
- "とまって しゃがんでから\n"
- "ジャンプすると\n"
- "『バックちゅう』できる!\n"
- "わかった? まだあります。\n"
- "はしりながら しゃがんで\n"
- "ジャンプで『はばとび』!\n"
- "しゃがんでから あるくと\n"
- "・・・ひみつです。")
-};
-
-
-// 0x0200A058
-static const u8 Dialog051[] = {
- _("『き』や『ぼう』には\n"
- "ジャンプで つかまれます。\n"
- "『のぼる』『おりる』は\n"
- "スティックで,やめるのは\n"
- "Zボタンで『て』をはなす。\n"
- "『むきをかえる』ときは\n"
- " 3Dスティックの\n"
- " みぎ と ひだり。\n"
- "Aボタンで『せなか』の\n"
- "ほうこうにジャンプします。\n"
- "テッペンで もういちど\n"
- "スティックを うえにいれ,\n"
- "『さかだち』ができる。\n"
- "むきをきめて せなかの\n"
- "ほうこうに ジャンプだ!")
-};
-
-
-// 0x0200A12C
-static const u8 Dialog052[] = {
- _("Zボタンで しゃがめます。\n"
- "とまって しゃがんでから\n"
- "ジャンプすると,\n"
- "『バックちゅう』できる!\n"
- "すばやくユ-タ-ンを\n"
- "しながら,ジャンプすると\n"
- "『ちゅうがえり』!\n"
- "どちらも たかくとべます。")
-};
-
-
-// 0x0200A1A0
-static const u8 Dialog053[] = {
- _("コインリングや かくれた\n"
- "シ-クレットポイントを\n"
- "とおると あかいすうじが\n"
- "でてきます。5こつづけて\n"
- "とおると ひみつのスタ-\n"
- "が あらわれます。")
-};
-
-
-// 0x0200A1F4
-static const u8 Dialog054[] = {
- _("スライダ-へようこそ!!\n"
- "さかを すべりはじめたら\n"
- "スティックまえで かそく,\n"
- "うしろで げんそくできる。")
-};
-
-
-// 0x0200A234
-static const u8 Dialog055[] = {
- _("あたし,このスライダ-の\n"
- "せかいチャンピオン!!!\n"
- "からだ,デカイけど\n"
- "とっても はやいよ!\n"
- "あなたチャレンジします?\n"
- "それでは!\n"
- "\n"
- " レディ---・・・!\n"
- " ・・・ \n"
- " ゴ-!! やめとく")
-};
-
-
-// 0x0200A2A0
-static const u8 Dialog056[] = {
- _("ヒエ---ッ!!!\n"
- "セカイきろくだよ!\n"
- "スゴイよ!あなた!!\n"
- "きんメダルの かわりに\n"
- "コレ あげます!\n"
- "いや--スゴイスゴイ!!")
-};
-
-
-// 0x0200A2E8
-static const u8 Dialog057[] = {
- _("どこかで うちのこどもを\n"
- "みかけません でしたか?\n"
- "・・・わたしんち こども\n"
- "いっぱい いましてね・・\n"
- "なんびき いたのかも\n"
- "おぼえてなくて・・・・\n"
- "ほんとに・・\n"
- "どこへ いったんでしょう。\n"
- "だいてやると\n"
- "とても いいこえで\n"
- "なくんですけどね・・・\n"
- "ヤレヤレ・・・・・")
-};
-
-
-// 0x0200A380
-static const u8 Dialog058[] = {
- _("ああ--っ!!たしかに\n"
- "うちの こどもです・・・\n"
- "『こらっ! いつも\n"
- "ちかくで あそびなさいと\n"
- "いってるだろ!』\n"
- "あなた とっても\n"
- "いいひとです。 おれいに\n"
- "これを さしあげます。\n"
- "あったかくって とても\n"
- "げんきに なりますよ。")
-};
-
-
-// 0x0200A3FC
-static const u8 Dialog059[] = {
- _("このこは うちのこじゃ-\n"
- "ないようだなあ・・・\n"
- "かわいそうに・・・\n"
- "おやはいったい\n"
- "なにをしてるんだろう・・")
-};
-
-
-// 0x0200A438
-static const u8 Dialog060[] = {
- _("-みずにはいるちゅうい-\n"
- "\n"
- "もぐっていると しぬほど\n"
- "くるしくなってきます。\n"
- "すいめんに あがるか\n"
- "アブクをみつけて\n"
- "さわってください。\n"
- "ひといき つけます。\n"
- "およぐときは Aボタン!\n"
- "おしてるだけでも すすみ\n"
- "タイミングよく おすと\n"
- "スピ-ドがでます。\n"
- "もぐるときはスティックを\n"
- "まえにたおして Aボタン。\n"
- "うかぶときはスティックを\n"
- "てまえにひいて Aボタン。\n"
- "すいめんに いるときは\n"
- "ジャンプします。\n"
- " 『じゅんびたいそう\n"
- " わすれずに!!』")
-};
-
-
-// 0x0200A534
-static const u8 Dialog061[] = {
- _("つめたいみず キケン!!\n"
- "およいでは いけません!\n"
- "この こおりのいけは\n"
- "とびあがるぐらい\n"
- "つめたいです!\n"
- " ペンギン")
-};
-
-
-// 0x0200A580
-static const u8 Dialog062[] = {
- _("みどりの ブロックに\n"
- "かくされている\n"
- "ふしぎな ふしぎな\n"
- "『メタルのぼうし』。\n"
- "\n"
- "ひをつけたってもえないし\n"
- "てきのたまも はねかえす。\n"
- "いきを とめても\n"
- "へいきです。\n"
- "こまったことにおよげない。")
-};
-
-
-// 0x0200A5EC
-static const u8 Dialog063[] = {
- _("あおいブロックには\n"
- "『とうめいぼうし』。\n"
- "メダマも ビックリ\n"
- "すがたをけせる。\n"
- "テレサも まっさお\n"
- "『ひみつのカベ』を\n"
- "とおりぬけるぞ。")
-};
-
-
-// 0x0200A638
-static const u8 Dialog064[] = {
- _("あかいブロックのなかの\n"
- "はねのぼうしを かぶると,\n"
- "3かいジャンプで\n"
- "そらたかく とびあがれる。\n"
- "そうさはスティックで!\n"
- "てまえにひくと あがる。\n"
- "まえにたおすと さがる。\n"
- "やめるときはZボタンで!")
-};
-
-
-// 0x0200A6AC
-static const u8 Dialog065[] = {
- _("およぎかた おしえます。\n"
- "\n"
- "みずにはいるとおよげます。\n"
- "ながいあいだ『もぐる』と\n"
- "くるしくなります。\n"
- "すすむためには Aボタン。\n"
- "タイミングよく おすと\n"
- "スピ-ドが でます。\n"
- "3Dスティックを まえに\n"
- "たおすと もぐります。\n"
- "すいめんに もどったり,\n"
- "みずから あがるときは\n"
- "てまえにひいて Aボタン。\n"
- "すいめんでジャンプだ!\n"
- "\n"
- "Aボタン おしっぱなしに\n"
- "していても,およげます。\n"
- "らくちんです。\n"
- "およいでいるあいだは\n"
- "ドアを あけられません。")
-};
-
-
-// 0x0200A7A8
-static const u8 Dialog066[] = {
- _("マリオ! クッパのはく\n"
- "ほのおに きをつけて!\n"
- "クッパを こらしめるには\n"
- "うしろにまわりBボタンで\n"
- "シッポをつかむのよ!\n"
- "なげとばす まえには\n"
- "3Dスティックで\n"
- "グリグリふりまわすの。\n"
- "はやく まわすほど\n"
- "とおくまで とぶわ!\n"
- "Cボタンで まわりを\n"
- "よ-くみて!\n"
- "なげとばした クッパは\n"
- "4すみの バクダンに\n"
- "ぶつけてやるの!\n"
- "ねらいを\n"
- "よ-くさだめて・・・\n"
- "\n"
- "もういちどBボタンよ!")
-};
-
-
-// 0x0200A884
-static const u8 Dialog067[] = {
- _("ざんねんだったなマリオ!\n"
- "ここには ピ-チちゃんは\n"
- "いませんでした。\n"
- " ガハハッ!!\n"
- "わがはいの うしろに\n"
- "まわりこんで シッポを\n"
- "つかめるものなら\n"
- "つかんでみるんだな。\n"
- "スティックでグリグリ\n"
- "まわして なげるなど\n"
- "できるわけが ない!!\n"
- " ガハハッ!!")
-};
-
-
-// 0x0200A91C
-static const u8 Dialog068[] = {
- _("ここは しゃくねつの\n"
- "ファイアバブル ランド!\n"
- "からだに ひがついても\n"
- "おちないように あわてず\n"
- "そうさしよう。\n"
- "ほのおのいけに おちると\n"
- "はねあがる! そうさは\n"
- "できるので,おちついて。\n"
- "あまりうごきまわらないで\n"
- "ガンバレ!")
-};
-
-
-// 0x0200A99C
-static const u8 Dialog069[] = {
- _("『え』のなかのカイブツの\n"
- "せかいには,せかいの\n"
- "はてがあります。\n"
- "みえないカベにあたったら\n"
- "きっと そこが\n"
- "『え』のせかいのはてです。\n"
- "そらを とんでいるときも\n"
- "そこから さきには\n"
- "すすめません。")
-};
-
-
-// 0x0200AA08
-static const u8 Dialog070[] = {
- _("かいぶつたちの すんでる\n"
- "『え』のなかのせかいから,\n"
- "おしろの いりぐちの\n"
- "メインホ-ルに\n"
- "いつでも もどれます。\n"
- "かならず きちんと\n"
- "たちどまってから!\n"
- "スタ-トボタンでポ-ズし,\n"
- "『コ-スからでる』を\n"
- "えらんでください。\n"
- "ひとつのせかいのスタ-は\n"
- "ぜんぶ とらなくても,\n"
- "つぎのせかいにすすめます。\n"
- "じょうずになったら,また\n"
- "もどってきてください。\n"
- "スタ-を1つ とるごとに\n"
- "つぎのスタ-のヒントが\n"
- "スタ-トがめんに でます。\n"
- "えらんだヒントいがいの\n"
- "スタ-をとってもOKです。")
-};
-
-
-// 0x0200AB18
-static const u8 Dialog071[] = {
- _(" -このさきキケン-\n"
- " あやしいケムリに\n"
- " ちゅうい!\n"
- " いきができません!\n"
- "くるしくなったら\n"
- "たかいところへ!\n"
- "まる・・・・・ひなんじょ\n"
- "やじるし・・・でいりぐち")
-};
-
-
-// 0x0200AB74
-static const u8 Dialog072[] = {
- _("カゼつよし! ぼうしは\n"
- "しっかり かぶりましょう。\n"
- "もし ぼうしをなくしても\n"
- "ここでなくした ぼうしは\n"
- "このやまで みつかります。")
-};
-
-
-// 0x0200ABC0
-static const u8 Dialog073[] = {
- _("ただしい じゅんばんで\n"
- "はこを ひらくこと。\n"
- "こたえは だれにも\n"
- "おしえてやらない。\n"
- " --せんちょう--")
-};
-
-
-// 0x0200AC00
-static const u8 Dialog074[] = {
- _("ガケのカドに とびつくと\n"
- "ぶらさがれます。\n"
- "おりるときはスティックを\n"
- "マリオのうしろへいれるか,\n"
- "Zボタンをおしてください。\n"
- "のぼるときはスティックを\n"
- "まえに たおしてください。\n"
- "ぶらさがって\n"
- "すぐに Aボタンをおすと\n"
- "すばやく のぼれます!")
-};
-
-
-// 0x0200AC8C
-static const u8 Dialog075[] = {
- _("マリオ!!たいへんです。\n"
- "クッパがまた・・・・\n"
- "おしろの パワ-スタ-を\n"
- "ぬすんで カベのなかへ!\n"
- "わたしたちも・・・\n"
- "みんなカベのなかへ・・・\n"
- "すいこまれていくわ・・・\n"
- "『カベ』や『え』のなか\n"
- "から パワ-スタ-を\n"
- "とりもどして!\n"
- "クッパの ふさいだドアは\n"
- "パワ-スタ-の ちからで\n"
- "ひらくことが できるわ!\n"
- "このへやには ひみつの\n"
- "つうろがあるの。\n"
- "クッパにみつからなかった\n"
- "かくしつうろの ひとつよ。\n"
- "そこには おしろの\n"
- "かくれスタ-が あるわ!\n"
- "きっと やくにたつはずよ。")
-};
-
-
-// 0x0200AD94
-static const u8 Dialog076[] = {
- _("パワ-スタ-のおかげで\n"
- "おしろに,げんきが\n"
- "もどってきました。\n"
- "クッパなんか\n"
- "おいはらってください。\n"
- "おやくに たつなら\n"
- "おしろの はなしをします。\n"
- "『カガミのへや』では\n"
- "カガミにうつらないものを\n"
- "よくみてください。\n"
- "みずのまちへ いくときは,\n"
- "『え』にとびこむ たかさ\n"
- "によって,まちをすっかり\n"
- "みずびたしに できます。\n"
- "アッ,これ みつけました。")
-};
-
-
-// 0x0200AE58
-static const u8 Dialog077[] = {
- _("とびらを ひらくまえに\n"
- "2つの はしらを\n"
- "おしさげて おくこと。")
-};
-
-
-// 0x0200AE7C
-static const u8 Dialog078[] = {
- _("あおコインのブロックを\n"
- "ジャンプちゅうにZボタン\n"
- "『ヒップドロップ』で\n"
- " ぶっつぶすと\n"
- "あおコインがでてきます。\n"
- "あおコイン1まいで\n"
- "きいろコイン5まいぶん\n"
- "とてもラッキ-!\n"
- "でも じかんがたつと\n"
- "きえてしまう・・ザンネン")
-};
-
-
-// 0x0200AF04
-static const u8 Dialog079[] = {
- _("いててて!\n"
- "はなしてくれよ。\n"
- "ウッキッキ-!\n"
- "チョットからかった\n"
- "だけなのに!\n"
- "はなしてくれたら,\n"
- "いいもの あげるからさ。\n"
- "ネ-ネ- はなしてくれよ。\n"
- "\n"
- " はなす いやだ")
-};
-
-
-// 0x0200AF64
-static const u8 Dialog080[] = {
- _("ヘッヘッヘッ!")
-};
-
-
-// 0x0200AF6C
-static const u8 Dialog081[] = {
- _("ここは みずにみちたまち。\n"
- "このまちは,あなたが\n"
- "ここを おとずれるときの\n"
- "たかさと,おなじだけの\n"
- "みずをもって\n"
- "あなたをむかえる。")
-};
-
-
-// 0x0200AFB8
-static const u8 Dialog082[] = {
- _("ぼうしを なくすと\n"
- "ダメ-ジがおおくなるので\n"
- "だいじに してください。\n"
- "なくしたら,なくした\n"
- "コ-スで みつかります。\n"
- "アア-どうしよう・・・\n"
- "ピ-チひめは,カベに\n"
- "ひきこまれた ままだし。\n"
- "はやく クッパを\n"
- "やっつけてください。\n"
- "えのほかにカベのなかにも\n"
- "モンスタ-の せかいが\n"
- "あります。 あっ!これ\n"
- "もっていって ください。\n"
- "かくして もってました。")
-};
-
-
-// 0x0200B080
-static const u8 Dialog083[] = {
- _("とけいがとても へんです。\n"
- "とけいに はいるとき,\n"
- "ながいはりの ばしょに\n"
- "ちゅういしてください!\n"
- "これ,とりもどしました。\n"
- "もっていって ください。\n"
- "かっこよく\n"
- "うけとってくださいね!")
-};
-
-
-// 0x0200B0E8
-static const u8 Dialog084[] = {
- _("イテテ らんぼうなひとだ。\n"
- "このスタ-は クッパって\n"
- "ヤツが くれたんだよ。\n"
- "あんたのものだ なんて\n"
- "しらなかったよ。\n"
- "かえすって,かえすってば,\n"
- "かえせば いいんでしょ。\n"
- "はなしてくれたら\n"
- "スタ-ぐらい かえすから。\n"
- "ホイ!!")
-};
-
-
-// 0x0200B168
-static const u8 Dialog085[] = {
- _("この やかたから\n"
- " ぶじにでられたら\n"
- "\n"
- "・・・エライ。・・")
-};
-
-
-// 0x0200B18C
-static const u8 Dialog086[] = {
- _("まわりをクルクルまわると\n"
- "めをまわす ヤツがいます。")
-};
-
-
-// 0x0200B1A8
-static const u8 Dialog087[] = {
- _("えんとつから はいるのは\n"
- "サンタだけではありません。\n"
- " ごえんりょなく\n"
- " おはいりください。\n"
- "スノ-マンハウスお-な-")
-};
-
-
-// 0x0200B1EC
-static const u8 Dialog088[] = {
- _("-さぎょうリフトじょう-\n"
- "\n"
- "ここから おりるひとは\n"
- "ひだりのぼうにつかまって,\n"
- "きをつけて おりること。")
-};
-
-
-// 0x0200B228
-static const u8 Dialog089[] = {
- _("どちらのみちも キケン!\n"
- "くらいあしもとにチュウイ。\n"
- "はばとび できないひとは\n"
- "みぎのみちを すすめ。\n"
- "みぎ・・さぎょうリフト\n"
- " ケムリめいろ\n"
- "ひだり・・やみのおおあな\n"
- " ちていこ ヘ\n"
- "あかまる\n"
- " ・・2ごうエレベ-タ-\n"
- " ちていこ へ\n"
- "やじるし・・げんざいち")
-};
-
-
-// 0x0200B2C4
-static const u8 Dialog090[] = {
- _("ガハハッ!\n"
- "ワナにはまったなマリオ!\n"
- "また ジャマをしにきた\n"
- "ようだが,ともだちからの\n"
- "ちゅうこくだ。\n"
- "あしもとには きをつけな。")
-};
-
-
-// 0x0200B30C
-static const u8 Dialog091[] = {
- _("つよいカゼに チュウイ!\n"
- "でも,カゼにのると\n"
- "フワフワきもちいいです。")
-};
-
-
-// 0x0200B334
-static const u8 Dialog092[] = {
- _("いいかげんにしろマリオ!\n"
- "いつもいつも,わがはいの\n"
- "ジャマをしおって!\n"
- "せっかく かいぶつたちと\n"
- "たのしくやっているのに。\n"
- "スタ-をかえすんだ!\n"
- "カベのなかのヤツらには,\n"
- "そいつが いるんだよ!!\n"
- "ガハハッ!!")
-};
-
-
-// 0x0200B3A8
-static const u8 Dialog093[] = {
- _("アララ!いつのまにきた?\n"
- "・・・・・・ムム\n"
- "どちらにしろ わがはいの\n"
- "ほのおの えじきだっ!\n"
- "どれだけスタ-のちからを\n"
- "かりても,わがはいには\n"
- "かなうわけがないわ!\n"
- "ガハハッ!! マリオ!\n"
- "キサマの おともだちも\n"
- "み-んな カベのなかさ。\n"
- "ピ-チちゃんも わたさん\n"
- "もんね! いくぞ!!")
-};
-
-
-// 0x0200B448
-static const u8 Dialog094[] = {
- _("のぼりにくい さかみちは\n"
- "じょそうをつけて\n"
- "げんきよく のぼる!\n"
- "はばとび おぼえてるか?\n"
- "はしりながら Zボタンで\n"
- "しゃがんで ジャンプだ!")
-};
-
-
-// 0x0200B4A0
-static const u8 Dialog095[] = {
- _("このように カンバンの\n"
- "まえで Bボタンをおすと\n"
- "よむことができます。\n"
- "ノコノコや どうぶつたち\n"
- "と はなすときは,まえに\n"
- "たちどまってください。\n"
- "このコ-スにあるクッパに\n"
- "ぬすまれたパワ-スタ-を\n"
- "とりかえしてください。")
-};
-
-
-// 0x0200B51C
-static const u8 Dialog096[] = {
- _("このあたり みちせまし。\n"
- "ゆっくり あるこう!\n"
- "だれも ちょうじょうまで\n"
- "たどりつかせない。\n"
- "フフフ。\n"
- "きもちよくねているひとを\n"
- "おこすと,とっても\n"
- "ふきげんに なります。\n"
- "ゆっくりと しずかに\n"
- "あるきましょう。フフフ。")
-};
-
-
-// 0x0200B594
-static const u8 Dialog097[] = {
- _("たいあたり されたら\n"
- "たいあたりで かえせ!\n"
- "ほのおのうみにつきおとす\n"
- "1たい1のデスマッチだ!")
-};
-
-
-// 0x0200B5C8
-static const u8 Dialog098[] = {
- _("ここまでおいで・・・・\n"
- "ケッケッケ・・")
-};
-
-
-// 0x0200B5E0
-static const u8 Dialog099[] = {
- _("クックック・・\n"
- " とりついてやる。\n"
- " ヒッヒッヒ!\n"
- "カベも とおりぬけてやる。\n"
- "こんなこと できるか?\n"
- " ケッケッケ!")
-};
-
-
-// 0x0200B628
-static const u8 Dialog100[] = {
- _("ウッキッキ-\n"
- " ワッキッキ-!\n"
- " ホヨホヨ。\n"
- "いっただき-。")
-};
-
-
-// 0x0200B64C
-static const u8 Dialog101[] = {
- _("ヘッヘッヘッ!\n"
- "つかまっちゃいました。\n"
- "きにいってたのになあ・・\n"
- "かえしますよ。\n"
- " ウッキッキ-!!")
-};
-
-
-// 0x0200B680
-static const u8 Dialog102[] = {
- _("テレサの たおしかた\n"
- "おしえます。\n"
- "はずかしがりやの\n"
- "テレサです。\n"
- "『めとめがあう』と\n"
- "すがたをけします。\n"
- "『とうめいのとき』は\n"
- "あたりません。\n"
- "『せなかをむける』と\n"
- "あらわれます。\n"
- "うしろにまわって\n"
- "なぐると よわい。")
-};
-
-
-// 0x0200B6F8
-static const u8 Dialog103[] = {
- _("4ほんの はしらのうえに\n"
- "たつものに,わたしは,\n"
- "このやかたを おとずれる\n"
- "しかくを あたえよう。")
-};
-
-
-// 0x0200B72C
-static const u8 Dialog104[] = {
- _("めのまえのブル-グレ-の\n"
- "はんとうめいの ほしは\n"
- "『パワ-スタ-のだい』だ。\n"
- "あかコインを みつけて\n"
- "8まいぜんぶ あつめると,\n"
- "スタ-が あらわれる。")
-};
-
-
-// 0x0200B784
-static const u8 Dialog105[] = {
- _("じゅんび かんりょう!\n"
- "そこの あなに\n"
- "はいってみてください。\n"
- "4つのたいほうをつかって\n"
- "そらのしまにあるスタ-を\n"
- "とれるはずです。\n"
- "スティックでねらいをつけ,\n"
- "Aではっしゃ!とびながら\n"
- "『き』にも つかまれます。")
-};
-
-
-// 0x0200B7FC
-static const u8 Dialog106[] = {
- _("じゅんびが\n"
- "かんりょう しました!\n"
- "それでは,おきをつけて!")
-};
-
-
-// 0x0200B820
-static const u8 Dialog107[] = {
- _("おばけは し な な い\n"
- "ケッケッケ・・\n"
- "ぶじに でられるかな?")
-};
-
-
-// 0x0200B848
-static const u8 Dialog108[] = {
- _("ぼよよ-ん\n"
- "おやかたの おでましだ。\n"
- "カッカッカ・・")
-};
-
-
-// 0x0200B868
-static const u8 Dialog109[] = {
- _("カラダが とけちゃったヨ。\n"
- "いいカラダ いないかな-\n"
- "なにか おちつかなくてネ。\n"
- "ア- かおがつめたいな-")
-};
-
-
-// 0x0200B8A4
-static const u8 Dialog110[] = {
- _("しょうらい きっと\n"
- "りっぱなカラダになろうと\n"
- "おもってま-す!\n"
- "いいアタマ いないかな-\n"
- "もししっていたら そこへ\n"
- "つれてってくれませんか?\n"
- "まえを すべってくれれば\n"
- "うしろをついていきま-す。\n"
- " ヨロシク-!")
-};
-
-
-// 0x0200B914
-static const u8 Dialog111[] = {
- _("ヤッリ-!\n"
- "きぶんスッキリ!りっぱな\n"
- "カラダが みつかった!\n"
- "おれいに これあげます!\n"
- "もっていって ください。\n"
- "とってもアッタカイですよ。")
-};
-
-
-// 0x0200B964
-static const u8 Dialog112[] = {
- _("コインいっぱいあつめよう。\n"
- "ちからが かいふくする。\n"
- "えのなかの15コ-スでは\n"
- "きろくにも のこるよ。\n"
- "あかいハ-トにさわっても\n"
- "ちからが かいふくする。\n"
- "はやく かけぬけるほど\n"
- "たくさん かいふくする!")
-};
-
-
-// 0x0200B9D0
-static const u8 Dialog113[] = {
- _("あか・あお・みどりの\n"
- "ブロックには アイテムの\n"
- "『ぼうし』が はいってる。\n"
- "おしろの どこかにある\n"
- "スイッチを ふんでくると\n"
- "つかえるように なります。")
-};
-
-
-// 0x0200BA24
-static const u8 Dialog114[] = {
- _("ああ~ きにいらねえ!\n"
- "おれたち,いしのおかげで\n"
- "『いえ』も『しろ』も\n"
- "できてるって-のに。\n"
- "いつも ふみつけるばっか\n"
- "りで, ちった-ありがた\n"
- "がったら どうなんでぃ!\n"
- "おうおうっ!\n"
- "おい! そこのニイサン!\n"
- "ふらふらしてんじゃね-や。\n"
- "きげんが わるいんでぃ!\n"
- "おしつぶしちまうぞぉ!!\n"
- "もんくが あんなら\n"
- "ヒップドロップで この\n"
- "バッタンキングさまを\n"
- "ふみつけて みやがれっ!")
-};
-
-
-// 0x0200BAFC
-static const u8 Dialog115[] = {
- _("ああ くやしいぞ!\n"
- "またまた\n"
- "ふみつけられちまった!\n"
- "しょせん いしは\n"
- " いしなのか・・・\n"
- "おめぇの かちでぇ!\n"
- "これ もっていきやがれ!\n"
- "ガクッ!")
-};
-
-
-// 0x0200BB50
-static const u8 Dialog116[] = {
- _("おおっ!いてて! まわり\n"
- "こみのはやさは まだまだ\n"
- "だが,なかなか つよいな。\n"
- "おまえのような けらいが\n"
- "ほしかったぞ・・\n"
- "はじめの やくそくどおり\n"
- "パワ-スタ-をやろう。\n"
- "また ワシにあいたいとき\n"
- "このスタ-をメニュ-から\n"
- "えらぶがよい。さらばじゃ")
-};
-
-
-// 0x0200BBDC
-static const u8 Dialog117[] = {
- _("ジャジャジャ-ン!\n"
- "どうだ!\n"
- "おどろいたか??・・・\n"
- "ムム・・・・ ならば\n"
- "もっとオドロカセテやる!\n"
- "イクゾ! カカッテコイ!")
-};
-
-
-// 0x0200BC28
-static const u8 Dialog118[] = {
- _("オオオッ・・・\n"
- "オマエ,いがいとツヨイ!\n"
- "このヤカタは,きょうから\n"
- "オマエのものダッ・・\n"
- "ジユウニつかエ。ガクッ!")
-};
-
-
-// 0x0200BC68
-static const u8 Dialog119[] = {
- _("グウウッ! ちょっと\n"
- "ゆだん しておったわ!\n"
- "せっかくのケイカクが\n"
- "ぶちこわしだ・・・しかし\n"
- "パワ-スタ-もピ-チも\n"
- "わがはいの てのなかに\n"
- "あるのだ。ガハハハ!\n"
- "まだまだ まけてはおらん。\n"
- "これいじょうスタ-は\n"
- "わたさんぞ。きょうはここ\n"
- "らで かんべんしてやる!\n"
- "おおぉ,おぼえてろよ!!")
-};
-
-
-// 0x0200BD0C
-static const u8 Dialog120[] = {
- _("グググッワッ!\n"
- "こうも かんたんに\n"
- "やられるとは,スタ-の\n"
- "ちからが たりんのかな?\n"
- "わがはいがゼッコ-チョ-\n"
- "のときなら,キサマなんか\n"
- "てきではない。\n"
- "こんかいは ひきわけだっ\n"
- "ピ-チに あいたければ,\n"
- "とうのてっぺんまで\n"
- "のぼってきてみろ。\n"
- "まってるぞ!ガハハッ!!")
-};
-
-
-// 0x0200BDA4
-static const u8 Dialog121[] = {
- _("あああっ・・またこんども\n"
- "キサマのかちか マリオ!\n"
- "キサマはな,わがはいが\n"
- "せかいで い-ちばん\n"
- "まけたくないヤツなのに!\n"
- "せっかく なかまにした\n"
- "モンスタ-たちのちからも\n"
- "なくなり このままでは\n"
- "またまた,わがはいの\n"
- "だ-いきらいな\n"
- "へいわが もどってしまう\n"
- "ではないか! \n"
- "ムムムッ・・・・\n"
- "しかし,このゲ-ムは\n"
- "まだまだ おわらんぞ。\n"
- "みんなで あつまって,\n"
- "なかよくエンディングでも\n"
- "みるんだな!\n"
- "\n"
- "ガハハハッ!")
-};
-
-
-// 0x0200BE8C
-static const u8 Dialog122[] = {
- _("-やみにとけるおおあな-\n"
- "\n"
- "みぎ・・・さぎょうリフト\n"
- " ケムリめいろ\n"
- "ひだり・・ちていこ")
-};
-
-
-// 0x0200BEC0
-static const u8 Dialog123[] = {
- _(" -メタルのどうくつ-\n"
- "\n"
- "みぎ・・・ちじょうへ\n"
- "ひだり・・メタルスイッチ")
-};
-
-
-// 0x0200BEEC
-static const u8 Dialog124[] = {
- _("-さぎょうようリフト-\n"
- "\n"
- " キケン!!\n"
- " そうさほうほうを\n"
- " よく よむこと。\n"
- "ふんだ,やじるしのほうに\n"
- "すすみつづけます。\n"
- "\n"
- "おりると もとのばしょに\n"
- "もどります。")
-};
-
-
-// 0x0200BF48
-static const u8 Dialog125[] = {
- _("-ケムリめいろ・でぐち-\n"
- "\n"
- "キケン! ヘイサちゅう。\n"
- "ここからは はいれません。")
-};
-
-
-// 0x0200BF74
-static const u8 Dialog126[] = {
- _("・1ごうエレベ-タ-・\n"
- "\n"
- "うえ・・やみのおおあな\n"
- "みぎ・・さぎょうリフト\n"
- " ケムリめいろ")
-};
-
-
-// 0x0200BFA8
-static const u8 Dialog127[] = {
- _(" -ちていこ-\n"
- "\n"
- "みぎ・・メタルのどうくつ\n"
- "ひだり・・はいこう\n"
- " へいさちゅう\n"
- "おとなしい かいりゅう\n"
- "ドッシ-が すんでます\n"
- "せなかでヒップドロップを\n"
- "すると,あたまをさげます。\n"
- "エサにならないでください。")
-};
-
-
-// 0x0200C024
-static const u8 Dialog128[] = {
- _("おっとっと!じょうがいに\n"
- "なげるのは はんそくだ!\n"
- "リングのうえでフェア-に\n"
- "たたかおうでは ないか!")
-};
-
-
-// 0x0200C060
-static const u8 Dialog129[] = {
- _("とうめいスイッチの\n"
- " コ-スへ ようこそ!\n"
- "あおいスイッチを ふむと\n"
- "すべての あおブロックが\n"
- "『じったい』になる。\n"
- "とうめいぼうしで\n"
- "とうめいに なると\n"
- "いろんな ものを\n"
- "とおりぬけられます。\n"
- "まずは おためしください。")
-};
-
-
-// 0x0200C0DC
-static const u8 Dialog130[] = {
- _("メタルのスイッチの\n"
- " コ-スヘ ようこそ!\n"
- "みどりのスイッチを\n"
- "ふめば みどりブロックが\n"
- "『じったい』になる。\n"
- "メタルのぼうしで\n"
- "メタルになれば,\n"
- "みずのなかでも\n"
- "あるけてしまう。\n"
- "まずは おためしください。")
-};
-
-
-// 0x0200C154
-static const u8 Dialog131[] = {
- _("はねのスイッチの\n"
- " コ-スヘ ようこそ!\n"
- "にじのリングのまんなかの\n"
- "とうの うえにある\n"
- "あかいスイッチを ふもう。\n"
- "このせかいの すべての\n"
- "あかいブロックが\n"
- "『じったい』になる。\n"
- "3だんとびで そらへとび,\n"
- "Zボタンで ランディング。\n"
- "そうさは ひこうきの\n"
- "そうじゅうかん のように\n"
- "まえにたおすと『さがる』\n"
- "てまえにひくと『あがる』\n"
- "まずは おためしを!")
-};
-
-
-// 0x0200C21C
-static const u8 Dialog132[] = {
- _("ダメダメ!\n"
- "それは きていいはんです。\n"
- "『しっか-く!』\n"
- "こんどはフェア-に\n"
- "いきましょう。")
-};
-
-
-// 0x0200C250
-static const u8 Dialog133[] = {
- _("ああよかった。\n"
- "きてくれたんですね!\n"
- "ピ-チひめも ぼくたちも\n"
- "みんな『カベ』のなかに\n"
- "とじこめられちゃいました。\n"
- "クッパは パワ-スタ-を\n"
- "つかって『カベ』や『え』\n"
- "のなかにカイブツのくにを\n"
- "つくろうと しています。\n"
- "スタ-をとりかえして!\n"
- "『スタ-』をいくつか\n"
- "とりかえしたら,クッパの\n"
- "とじたドアが ひらきます。\n"
- "1かいの 4つのへやを\n"
- "さがし,すすんでください。\n"
- "まずは,ヒダリがわの\n"
- "ボムへいの『え』の\n"
- "へやに はいれます。\n"
- "このへやだけは クッパの\n"
- "ふういんを のがれました。\n"
- "8まい たまったら\n"
- "おおきな ほしのドアを\n"
- "ひらくことが できます。\n"
- "きっと ピ-チひめは\n"
- "そのなかです!")
-};
-
-
-// 0x0200C398
-static const u8 Dialog134[] = {
- _("コ-スのはじめにえらべる\n"
- "スタ-のなまえは,\n"
- "つぎに みつけられそうな\n"
- "スタ-のヒントです。\n"
- "ヒントにでてくる\n"
- "じゅんばんと,ちがう\n"
- "スタ-を とりもどしても\n"
- "かまわないですよ。\n"
- "『スタ-』や『てき』や\n"
- "『アイテム』のなかには\n"
- "そのスタ-をえらばないと\n"
- "でないものも あります。\n"
- "いくつか とりかえしたら\n"
- "つぎのコ-スのドアへと\n"
- "すすんでください。みんな\n"
- "たすけを まっています!")
-};
-
-
-// 0x0200C468
-static const u8 Dialog135[] = {
- _("クッパがスタ-をもって\n"
- "いっちゃいました。\n"
- "ここにかくれてみてました。\n"
- "スタ-はひとつのコ-スに\n"
- "6こあるはずです。\n"
- "でも アイテムスイッチを\n"
- "ぜんぶおしてからでないと\n"
- "とれないスタ-もあります。\n"
- "どんどん さきのコ-スへ\n"
- "すすんでください。\n"
- "スタ-トがめんでスタ-の\n"
- "なまえが みられます。\n"
- "むかしのてきに あいたい\n"
- "とき,そのほしをえらぶと\n"
- "またあえる てきもいます。")
-};
-
-
-// 0x0200C534
-static const u8 Dialog136[] = {
- _("ワァすごい!もうそんなに\n"
- "スタ-をもってるんですね。\n"
- "もうすぐ ぼくらのことも\n"
- "たすけだしてくれますね!\n"
- "クッパたちは ひっしです。\n"
- "きをつけてください。\n"
- "コインをとると ちからが\n"
- "かいふくします。\n"
- "あかコインは2まいぶん。\n"
- "あおコインは5まいぶん。\n"
- "あおコインのブロックを\n"
- "こわすと でてきます。\n"
- "たかいところからおちても\n"
- "ちじょうの ちかくで\n"
- "『ヒップドロップ』すると\n"
- "ダメ-ジを ふせげます。")
-};
-
-
-// 0x0200C614
-static const u8 Dialog137[] = {
- _("パワ-スタ-が もどって,\n"
- "おしろのちからが\n"
- "かいふく してきました!\n"
- "ありがとう。 クッパは\n"
- "このさきに にげました。\n"
- "そうだ!コインをあつめて\n"
- "ますか?15のコ-スでは\n"
- "コイン100まい とると\n"
- "スペシャルスタ-が\n"
- "あらわれます。")
-};
-
-
-// 0x0200C698
-static const u8 Dialog138[] = {
- _("・2ごうエレベ-タ-・\n"
- "した・・ちていこ\n"
- "ひだり・・やみのおおあな\n"
- "みぎ・・・ケムリめいろ\n"
- " へいさちゅう!")
-};
-
-
-// 0x0200C6D8
-static const u8 Dialog139[] = {
- _("このうえ・・じどうリフト\n"
- "じどうリフトは のると\n"
- "じどうてきに うごきだし,\n"
- "コ-スにそってすすみます。\n"
- "おりて ほうっておくと\n"
- "きえてしまいます。")
-};
-
-
-// 0x0200C72C
-static const u8 Dialog140[] = {
- _("-そうさリフトじょう-\n"
- "みぎ・・・ケムリめいろ\n"
- " いりぐち\n"
- "ひだり・・やみのおおあな\n"
- " 1ごうエレベ-タ-へ\n"
- "やじるし・・げんざいち")
-};
-
-
-// 0x0200C780
-static const u8 Dialog141[] = {
- _("ぬすまれたパワ-スタ-を\n"
- "とりかえした!\n"
- "クッパが とじてしまった\n"
- "ドアを あけられるように\n"
- "なったぞ!\n"
- "2かいの ピ-チのへや,\n"
- "1かいの とりでのへや,\n"
- "2つのへやのドアがひらく。\n"
- "つぎのスタ-をとりかえし\n"
- "おしろのみんなをすくえ!\n"
- "モンスタ-たちはどんどん\n"
- "ちからを つけてきている。\n"
- "いそげ マリオ!!\n"
- "おしろの いちだいじだ!")
-};
-
-
-// 0x0200C83C
-static const u8 Dialog142[] = {
- _("3このスタ-を\n"
- "とりもどしたぞ! \n"
- "そして スタ-に『3』の\n"
- "すうじが ついたドアを\n"
- "ひらけるように なった!\n"
- "4つのへやの せかいを\n"
- "じゆうに いききできる。\n"
- "あたらしいカイブツたちは\n"
- "もっと てごわいぞ。\n"
- "きをつけて すすめ!")
-};
-
-
-// 0x0200C8BC
-static const u8 Dialog143[] = {
- _("8このパワ-スタ-を\n"
- "ぶじ とりもどし,\n"
- "おおきな ほしのドアが\n"
- "ひらくようになった。\n"
- "クッパは すぐそこだ!\n"
- "ピ-チのこえがきこえる。")
-};
-
-
-// 0x0200C90C
-static const u8 Dialog144[] = {
- _("30この パワ-スタ-を\n"
- "とりもどし,\n"
- "おおきなスタ-のドアが\n"
- "ひらくようになった!\n"
- "ここですこし てんけんだ。\n"
- "2ほんのはしらを ヒップ\n"
- "ドロップしてみたか?\n"
- "ぼうしはなくしてないか?\n"
- "さばくで なくしたなら\n"
- "ハゲたかジャンゴをさがせ。\n"
- "クッパは うみから\n"
- "このちかにせんにゅう\n"
- "したらしい。\n"
- "とうとうやつを\n"
- "おいつめたぞ!")
-};
-
-
-// 0x0200C9C4
-static const u8 Dialog145[] = {
- _("50このパワ-スタ-を\n"
- "とりもどした!\n"
- "3かいへの ほしのドアが\n"
- "ひらくぞ!\n"
- "クッパはすぐそこだ!\n"
- "アイテムスイッチは\n"
- "ぜんぶおしてきたか?\n"
- "かくにん しておこう。\n"
- "あか・あお・みどりの\n"
- "3つのアイテムブロックは\n"
- "とてもだいじな みかただ。\n"
- "さあ『3かい』へすすめ!")
-};
-
-
-// 0x0200CA5C
-static const u8 Dialog146[] = {
- _("70このパワ-スタ-を\n"
- "とりもどした!\n"
- "はてしない かいだんの\n"
- "ナゾがとかれた。\n"
- "クッパはかなりあせってる。\n"
- "さあ!さいごのたたかいだ。")
-};
-
-
-// 0x0200CAAC
-static const u8 Dialog147[] = {
- _("あか・あお・みどりの\n"
- "『アイテムブロック』を\n"
- "つかっていますか?\n"
- "スタ-をとりもどすと\n"
- "いりぐちがみつかる,\n"
- "おしろのかくしコ-スで,\n"
- "3つのスイッチを おすと\n"
- "そのいろのブロックが\n"
- "『じったい』となり,\n"
- "つかえるようになります。\n"
- "あかは はねのぼうし\n"
- "みどりは メタルのぼうし\n"
- "あおは とうめいのぼうし\n"
- "\n"
- "とてもつよい みかたです。")
-};
-
-
-// 0x0200CB64
-static const u8 Dialog148[] = {
- _("このさきスノ-マンのやま\n"
- "だれも はいるな!\n"
- "アイスブロックシュ-タ-\n"
- "を 3だんとびなどして\n"
- "とびこえては イケマセン。\n"
- "つめたい いけでは\n"
- "はやく たいりょくが\n"
- "へります!\n"
- "かいふくも しません。\n"
- " スノ-マン")
-};
-
-
-// 0x0200CBE0
-static const u8 Dialog149[] = {
- _("ピ-チのかくれスライダ-\n"
- "へ ようこそ!\n"
- "ここには クッパにみつけ\n"
- "られなかった おしろの\n"
- "かくれスタ-がのこってる。\n"
- "さかを すべりはじめたら\n"
- "スティックまえで かそく,\n"
- "うしろで げんそくできる。\n"
- "はやくすべれば スタ-が\n"
- "みつかるはずだ!")
-};
-
-
-// 0x0200CC6C
-static const u8 Dialog150[] = {
- _("あ--ん,だれだい?\n"
- "とつぜん ビショぬれに\n"
- "なっちゃいました!\n"
- "キチンと てんじょう\n"
- "なおしてもらうです。")
-};
-
-
-// 0x0200CCAC
-static const u8 Dialog151[] = {
- _("みずをかけられた つぎは\n"
- "ふんづけられました。\n"
- "もう ほんと-に\n"
- "おこったです!")
-};
-
-
-// 0x0200CCDC
-static const u8 Dialog152[] = {
- _("いててて!!!\n"
- "らんぼうなひとだなあ。\n"
- "なぜかイライラしてたけど,\n"
- "まあ,そらがみえるのも\n"
- "わるくはないです。\n"
- "よるには いっぱいほしが\n"
- "みえるしね!\n"
- "このほしは かえします。\n"
- "あ-,なんだか きもちが\n"
- "おちついてきたです。")
-};
-
-
-// 0x0200CD58
-static const u8 Dialog153[] = {
- _("わしの カラダに\n"
- "のぼっては いか-ん!\n"
- "そういうヤツは みんな\n"
- "ふきっとばしちまうぞ-!")
-};
-
-
-// 0x0200CD8C
-static const u8 Dialog154[] = {
- _("ぼうしを なくすと\n"
- "ダメ-ジがおおくなるので\n"
- "だいじに してください。\n"
- "なくしたら,なくした\n"
- "コ-スで みつかります。\n"
- "アア-どうしよう・・・\n"
- "ピ-チひめは,カベに\n"
- "ひきこまれたままだし。\n"
- "はやく クッパを\n"
- "やっつけてください。\n"
- "ああ,そうだ!\n"
- "えのほかにカベのなかにも\n"
- "モンスタ-の せかいが\n"
- "あります。\n"
- "よ-く,しらべてください。")
-};
-
-
-// 0x0200CE48
-static const u8 Dialog155[] = {
- _("パワ-スタ-のおかげで\n"
- "おしろに,げんきが\n"
- "もどってきました。\n"
- "クッパなんか\n"
- "おいはらってください。\n"
- "おやくに たつなら\n"
- "おしろの はなしをします。\n"
- "『カガミのへや』では\n"
- "カガミにうつらないものを\n"
- "よくみてください。\n"
- "みずのまちへ いくときは,\n"
- "『え』にとびこむ たかさ\n"
- "によって,まちをすっかり\n"
- "みずびたしに できます。")
-};
-
-
-// 0x0200CEFC
-static const u8 Dialog156[] = {
- _("とけいがとても へんです。\n"
- "とけいに はいるとき,\n"
- "ながいはりの ばしょに\n"
- "ちゅういしてください!")
-};
-
-
-// 0x0200CF34
-static const u8 Dialog157[] = {
- _("ながれる『すな』に\n"
- "ながされないように\n"
- "きをつけて!\n"
- "からだが しずんで\n"
- "ジャンプできません。\n"
- "あたままでしずむと\n"
- "いきが できません。\n"
- "くらいいろの ところは\n"
- "とくに キケン!!\n"
- "そこなしの じごくです!")
-};
-
-
-// 0x0200CFAC
-static const u8 Dialog158[] = {
- _("ジャンプのテクニック\n"
- "その1\n"
- "タイミングよく,\n"
- "れんぞくでジャンプすると\n"
- "だんだん たかくとべる。\n"
- "スピ-ドがはやいほど\n"
- "たかく とびあがれる。\n"
- "れんぞく3かいめに\n"
- "たかくとべるわざを\n"
- "『3だんとび』といいます。\n"
- "その2 カベにむかって\n"
- "ジャンプして,そこから\n"
- "もういちどジャンプできる。\n"
- "『カベキック』といって,\n"
- "たかいところにのぼれます。")
-};
-
-
-// 0x0200D078
-static const u8 Dialog159[] = {
- _("ジャンプのテクニック\n"
- "その3 Zボタンわざ\n"
- "たちどまって しゃがんで\n"
- "から ジャンプすると,\n"
- "『バックちゅう』できます。\n"
- "はやくはしりながら\n"
- "しゃがんでジャンプすると\n"
- "とおくまで とべる。\n"
- "『はばとび』です。")
-};
-
-
-// 0x0200D0F8
-static const u8 Dialog160[] = {
- _("はやく はしりながら\n"
- "Bボタンをおすと\n"
- "『ボディアタック』が\n"
- "できます。\n"
- "おなかで\n"
- "すべっているあいだは,\n"
- "A・Bどちらのボタンでも\n"
- "おきあがることができます。")
-};
-
-
-// 0x0200D158
-static const u8 Dialog161[] = {
- _("いや- すごいです!!\n"
- "ここにいれば あえると\n"
- "きいてたけど,ほんとに\n"
- "あえてしまいました!!\n"
- "でんごんが あります。\n"
- "『これで,おしまいですが\n"
- "もっとあそんでほしいので\n"
- "つまらないものですが\n"
- "うけとって ください。』\n"
- "-マリオ・スタッフより-")
-};
-
-
-// 0x0200D1E4
-static const u8 Dialog162[] = {
- _("イテテ あいかわらず\n"
- "らんぼうなひとだな。\n"
- "このスタ-は べつに\n"
- "かくしてたわけじゃ\n"
- "ないんだってば!\n"
- "かえせば いいんでしょ。\n"
- "はなしてくれたら\n"
- "スタ-ぐらい かえすから。\n"
- "これで ほんとに\n"
- "さいごだよ! ホイ!")
-};
-
-
-// 0x0200D260
-static const u8 Dialog163[] = {
- _("あああっ・・またこんども\n"
- "キサマのかちか マリオ!\n"
- "キサマはな,わがはいが\n"
- "せかいで い-ちばん\n"
- "まけたくないヤツなのに!\n"
- "ほんとうに やくにたたぬ\n"
- "カイブツどもだ!\n"
- "キサマごときに\n"
- "パワ-スタ-をぜ-んぶ\n"
- "とりもどされるとは・・・\n"
- "ぜんぶで『120こ』も\n"
- "あったのか!?\n"
- "『しろ』に わがはいも\n"
- "きづかなかったスタ-が\n"
- "のこって おったとは・・\n"
- "またまた わがはいの\n"
- "だ-いきらいな へいわが,\n"
- "もどってしまうではないか。\n"
- "わがはいは くやし-ぞ!\n"
- "きょうは ひきあげてやる。\n"
- "だが,こんどあうときは\n"
- "ぜ-ったい まけないぞ!\n"
- "3Dスティックをみがいて\n"
- "まってろよ!\n"
- " ガハハッ!")
-};
-
-
-// 0x0200D3A8
-static const u8 Dialog164[] = {
- _("しばらく やすんでたので\n"
- "こんなにみごとに,\n"
- "ふとっちゃいました。\n"
- "ひさしぶりに やります?\n"
- "では! いつものように,\n"
- "レディ-!\n"
- "\n"
- " ゴ-!! やめとく")
-};
-
-
-// 0x0200D400
-static const u8 Dialog165[] = {
- _("このクイの まわりを\n"
- "クルクルまわって\n"
- "めをまわしても\n"
- "しりません。")
-};
-
-
-// 0x0200D424
-static const u8 Dialog166[] = {
- _("きょうは トレ-ニングで\n"
- "るすに してるッス!\n"
- "オイラに ちょ-せん\n"
- "したいひとは,またこんど\n"
- "くるといいッス!\n"
- " ノコノコ")
-};
-
-
-// 0x0200D46C
-static const u8 Dialog167[] = {
- _("『ピ-チの おしろ』\n"
- " すぐそこ\n"
- "Aボタン『ジャンプ』\n"
- "Zボタン『しゃがむ』\n"
- "Bボタン『カンバンよむ』\n"
- " 『パンチ』\n"
- " 『ものをもつ』\n"
- "もういちどおす『なげる』")
-};
-
-
-// 0x0200D4D4
-static const u8 Dialog168[] = {
- _("ア-ン,またまた \n"
- "ふんづけられちゃいました。\n"
- "ハナチャン かんぜんに\n"
- "おこったです!")
-};
-
-
-// 0x0200D504
-static const u8 Dialog169[] = {
- _("かってに はいるな!\n"
- "この『どうくつ』に\n"
- "むだんで はいるものには,\n"
- "わざわいが おとずれる!\n"
- " --せんちょうより")
-};
-
-
-// dialog table 0x0200D548
-static const struct DialogEntry dialog_text_000 = {
- 1, 5, 30, 200, Dialog000
-};
-
-static const struct DialogEntry dialog_text_001 = {
- 1, 4, 95, 200, Dialog001
-};
-
-static const struct DialogEntry dialog_text_002 = {
- 1, 4, 95, 200, Dialog002
-};
-
-static const struct DialogEntry dialog_text_003 = {
- 1, 5, 95, 200, Dialog003
-};
-
-static const struct DialogEntry dialog_text_004 = {
- 1, 3, 95, 200, Dialog004
-};
-
-static const struct DialogEntry dialog_text_005 = {
- 1, 4, 30, 200, Dialog005
-};
-
-static const struct DialogEntry dialog_text_006 = {
- 1, 4, 30, 200, Dialog006
-};
-
-static const struct DialogEntry dialog_text_007 = {
- 1, 6, 30, 200, Dialog007
-};
-
-static const struct DialogEntry dialog_text_008 = {
- 1, 5, 30, 200, Dialog008
-};
-
-static const struct DialogEntry dialog_text_009 = {
- 1, 5, 30, 200, Dialog009
-};
-
-static const struct DialogEntry dialog_text_010 = {
- 1, 3, 30, 200, Dialog010
-};
-
-static const struct DialogEntry dialog_text_011 = {
- 1, 3, 30, 200, Dialog011
-};
-
-static const struct DialogEntry dialog_text_012 = {
- 1, 3, 30, 200, Dialog012
-};
-
-static const struct DialogEntry dialog_text_013 = {
- 1, 5, 30, 200, Dialog013
-};
-
-static const struct DialogEntry dialog_text_014 = {
- 1, 5, 30, 200, Dialog014
-};
-
-static const struct DialogEntry dialog_text_015 = {
- 1, 4, 30, 200, Dialog015
-};
-
-static const struct DialogEntry dialog_text_016 = {
- 1, 4, 30, 200, Dialog016
-};
-
-static const struct DialogEntry dialog_text_017 = {
- 1, 4, 30, 200, Dialog017
-};
-
-static const struct DialogEntry dialog_text_018 = {
- 1, 4, 30, 200, Dialog018
-};
-
-static const struct DialogEntry dialog_text_019 = {
- 1, 2, 30, 200, Dialog019
-};
-
-static const struct DialogEntry dialog_text_020 = {
- 1, 5, 95, 150, Dialog020
-};
-
-static const struct DialogEntry dialog_text_021 = {
- 1, 5, 95, 200, Dialog021
-};
-
-static const struct DialogEntry dialog_text_022 = {
- 1, 3, 95, 200, Dialog022
-};
-
-static const struct DialogEntry dialog_text_023 = {
- 1, 3, 95, 200, Dialog023
-};
-
-static const struct DialogEntry dialog_text_024 = {
- 1, 3, 95, 200, Dialog024
-};
-
-static const struct DialogEntry dialog_text_025 = {
- 1, 3, 95, 200, Dialog025
-};
-
-static const struct DialogEntry dialog_text_026 = {
- 1, 3, 95, 200, Dialog026
-};
-
-static const struct DialogEntry dialog_text_027 = {
- 1, 3, 95, 200, Dialog027
-};
-
-static const struct DialogEntry dialog_text_028 = {
- 1, 3, 95, 200, Dialog028
-};
-
-static const struct DialogEntry dialog_text_029 = {
- 1, 4, 95, 200, Dialog029
-};
-
-static const struct DialogEntry dialog_text_030 = {
- 1, 4, 30, 200, Dialog030
-};
-
-static const struct DialogEntry dialog_text_031 = {
- 1, 3, 30, 200, Dialog031
-};
-
-static const struct DialogEntry dialog_text_032 = {
- 1, 4, 30, 200, Dialog032
-};
-
-static const struct DialogEntry dialog_text_033 = {
- 1, 4, 30, 200, Dialog033
-};
-
-static const struct DialogEntry dialog_text_034 = {
- 1, 5, 30, 200, Dialog034
-};
-
-static const struct DialogEntry dialog_text_035 = {
- 1, 4, 30, 200, Dialog035
-};
-
-static const struct DialogEntry dialog_text_036 = {
- 1, 5, 30, 200, Dialog036
-};
-
-static const struct DialogEntry dialog_text_037 = {
- 1, 3, 30, 200, Dialog037
-};
-
-static const struct DialogEntry dialog_text_038 = {
- 1, 3, 95, 200, Dialog038
-};
-
-static const struct DialogEntry dialog_text_039 = {
- 1, 5, 30, 200, Dialog039
-};
-
-static const struct DialogEntry dialog_text_040 = {
- 1, 3, 30, 200, Dialog040
-};
-
-static const struct DialogEntry dialog_text_041 = {
- 1, 4, 30, 200, Dialog041
-};
-
-static const struct DialogEntry dialog_text_042 = {
- 1, 5, 30, 200, Dialog042
-};
-
-static const struct DialogEntry dialog_text_043 = {
- 1, 4, 30, 200, Dialog043
-};
-
-static const struct DialogEntry dialog_text_044 = {
- 1, 5, 95, 200, Dialog044
-};
-
-static const struct DialogEntry dialog_text_045 = {
- 1, 5, 95, 200, Dialog045
-};
-
-static const struct DialogEntry dialog_text_046 = {
- 1, 5, 30, 200, Dialog046
-};
-
-static const struct DialogEntry dialog_text_047 = {
- 1, 3, 95, 200, Dialog047
-};
-
-static const struct DialogEntry dialog_text_048 = {
- 1, 4, 30, 200, Dialog048
-};
-
-static const struct DialogEntry dialog_text_049 = {
- 1, 5, 30, 200, Dialog049
-};
-
-static const struct DialogEntry dialog_text_050 = {
- 1, 4, 30, 200, Dialog050
-};
-
-static const struct DialogEntry dialog_text_051 = {
- 1, 5, 30, 200, Dialog051
-};
-
-static const struct DialogEntry dialog_text_052 = {
- 1, 4, 30, 200, Dialog052
-};
-
-static const struct DialogEntry dialog_text_053 = {
- 1, 6, 30, 200, Dialog053
-};
-
-static const struct DialogEntry dialog_text_054 = {
- 1, 4, 30, 200, Dialog054
-};
-
-static const struct DialogEntry dialog_text_055 = {
- 1, 5, 30, 200, Dialog055
-};
-
-static const struct DialogEntry dialog_text_056 = {
- 1, 3, 30, 200, Dialog056
-};
-
-static const struct DialogEntry dialog_text_057 = {
- 1, 4, 30, 200, Dialog057
-};
-
-static const struct DialogEntry dialog_text_058 = {
- 1, 5, 30, 200, Dialog058
-};
-
-static const struct DialogEntry dialog_text_059 = {
- 1, 5, 30, 200, Dialog059
-};
-
-static const struct DialogEntry dialog_text_060 = {
- 1, 4, 30, 200, Dialog060
-};
-
-static const struct DialogEntry dialog_text_061 = {
- 1, 6, 30, 200, Dialog061
-};
-
-static const struct DialogEntry dialog_text_062 = {
- 1, 5, 30, 200, Dialog062
-};
-
-static const struct DialogEntry dialog_text_063 = {
- 1, 4, 30, 200, Dialog063
-};
-
-static const struct DialogEntry dialog_text_064 = {
- 1, 4, 30, 200, Dialog064
-};
-
-static const struct DialogEntry dialog_text_065 = {
- 1, 5, 30, 200, Dialog065
-};
-
-static const struct DialogEntry dialog_text_066 = {
- 1, 5, 30, 200, Dialog066
-};
-
-static const struct DialogEntry dialog_text_067 = {
- 1, 4, 30, 200, Dialog067
-};
-
-static const struct DialogEntry dialog_text_068 = {
- 1, 5, 30, 200, Dialog068
-};
-
-static const struct DialogEntry dialog_text_069 = {
- 1, 3, 30, 200, Dialog069
-};
-
-static const struct DialogEntry dialog_text_070 = {
- 1, 5, 30, 200, Dialog070
-};
-
-static const struct DialogEntry dialog_text_071 = {
- 1, 4, 30, 200, Dialog071
-};
-
-static const struct DialogEntry dialog_text_072 = {
- 1, 5, 30, 200, Dialog072
-};
-
-static const struct DialogEntry dialog_text_073 = {
- 1, 5, 95, 200, Dialog073
-};
-
-static const struct DialogEntry dialog_text_074 = {
- 1, 5, 30, 200, Dialog074
-};
-
-static const struct DialogEntry dialog_text_075 = {
- 1, 5, 30, 200, Dialog075
-};
-
-static const struct DialogEntry dialog_text_076 = {
- 1, 5, 30, 200, Dialog076
-};
-
-static const struct DialogEntry dialog_text_077 = {
- 1, 3, 150, 200, Dialog077
-};
-
-static const struct DialogEntry dialog_text_078 = {
- 1, 5, 30, 200, Dialog078
-};
-
-static const struct DialogEntry dialog_text_079 = {
- 1, 5, 30, 200, Dialog079
-};
-
-static const struct DialogEntry dialog_text_080 = {
- 1, 3, 30, 200, Dialog080
-};
-
-static const struct DialogEntry dialog_text_081 = {
- 1, 6, 30, 200, Dialog081
-};
-
-static const struct DialogEntry dialog_text_082 = {
- 1, 5, 30, 200, Dialog082
-};
-
-static const struct DialogEntry dialog_text_083 = {
- 1, 4, 30, 200, Dialog083
-};
-
-static const struct DialogEntry dialog_text_084 = {
- 1, 5, 30, 200, Dialog084
-};
-
-static const struct DialogEntry dialog_text_085 = {
- 1, 4, 30, 200, Dialog085
-};
-
-static const struct DialogEntry dialog_text_086 = {
- 1, 3, 30, 200, Dialog086
-};
-
-static const struct DialogEntry dialog_text_087 = {
- 1, 5, 30, 200, Dialog087
-};
-
-static const struct DialogEntry dialog_text_088 = {
- 1, 5, 30, 200, Dialog088
-};
-
-static const struct DialogEntry dialog_text_089 = {
- 1, 4, 95, 200, Dialog089
-};
-
-static const struct DialogEntry dialog_text_090 = {
- 1, 6, 30, 200, Dialog090
-};
-
-static const struct DialogEntry dialog_text_091 = {
- 1, 3, 30, 200, Dialog091
-};
-
-static const struct DialogEntry dialog_text_092 = {
- 1, 3, 30, 200, Dialog092
-};
-
-static const struct DialogEntry dialog_text_093 = {
- 1, 4, 30, 200, Dialog093
-};
-
-static const struct DialogEntry dialog_text_094 = {
- 1, 3, 30, 200, Dialog094
-};
-
-static const struct DialogEntry dialog_text_095 = {
- 1, 3, 30, 200, Dialog095
-};
-
-static const struct DialogEntry dialog_text_096 = {
- 1, 5, 30, 200, Dialog096
-};
-
-static const struct DialogEntry dialog_text_097 = {
- 1, 4, 30, 200, Dialog097
-};
-
-static const struct DialogEntry dialog_text_098 = {
- 1, 3, 95, 200, Dialog098
-};
-
-static const struct DialogEntry dialog_text_099 = {
- 1, 3, 95, 200, Dialog099
-};
-
-static const struct DialogEntry dialog_text_100 = {
- 1, 4, 95, 200, Dialog100
-};
-
-static const struct DialogEntry dialog_text_101 = {
- 1, 5, 95, 200, Dialog101
-};
-
-static const struct DialogEntry dialog_text_102 = {
- 1, 4, 30, 200, Dialog102
-};
-
-static const struct DialogEntry dialog_text_103 = {
- 1, 4, 95, 200, Dialog103
-};
-
-static const struct DialogEntry dialog_text_104 = {
- 1, 6, 30, 200, Dialog104
-};
-
-static const struct DialogEntry dialog_text_105 = {
- 1, 3, 95, 200, Dialog105
-};
-
-static const struct DialogEntry dialog_text_106 = {
- 1, 3, 95, 200, Dialog106
-};
-
-static const struct DialogEntry dialog_text_107 = {
- 1, 3, 95, 200, Dialog107
-};
-
-static const struct DialogEntry dialog_text_108 = {
- 1, 3, 95, 200, Dialog108
-};
-
-static const struct DialogEntry dialog_text_109 = {
- 1, 4, 95, 200, Dialog109
-};
-
-static const struct DialogEntry dialog_text_110 = {
- 1, 3, 95, 200, Dialog110
-};
-
-static const struct DialogEntry dialog_text_111 = {
- 1, 3, 95, 200, Dialog111
-};
-
-static const struct DialogEntry dialog_text_112 = {
- 1, 4, 30, 200, Dialog112
-};
-
-static const struct DialogEntry dialog_text_113 = {
- 1, 6, 30, 200, Dialog113
-};
-
-static const struct DialogEntry dialog_text_114 = {
- 1, 4, 95, 200, Dialog114
-};
-
-static const struct DialogEntry dialog_text_115 = {
- 1, 5, 95, 200, Dialog115
-};
-
-static const struct DialogEntry dialog_text_116 = {
- 1, 5, 95, 200, Dialog116
-};
-
-static const struct DialogEntry dialog_text_117 = {
- 1, 3, 95, 200, Dialog117
-};
-
-static const struct DialogEntry dialog_text_118 = {
- 1, 5, 95, 200, Dialog118
-};
-
-static const struct DialogEntry dialog_text_119 = {
- 1, 4, 30, 200, Dialog119
-};
-
-static const struct DialogEntry dialog_text_120 = {
- 1, 4, 30, 200, Dialog120
-};
-
-static const struct DialogEntry dialog_text_121 = {
- 1, 5, 30, 200, Dialog121
-};
-
-static const struct DialogEntry dialog_text_122 = {
- 1, 6, 30, 200, Dialog122
-};
-
-static const struct DialogEntry dialog_text_123 = {
- 1, 5, 30, 200, Dialog123
-};
-
-static const struct DialogEntry dialog_text_124 = {
- 1, 5, 30, 200, Dialog124
-};
-
-static const struct DialogEntry dialog_text_125 = {
- 1, 5, 30, 200, Dialog125
-};
-
-static const struct DialogEntry dialog_text_126 = {
- 1, 6, 30, 200, Dialog126
-};
-
-static const struct DialogEntry dialog_text_127 = {
- 1, 5, 30, 200, Dialog127
-};
-
-static const struct DialogEntry dialog_text_128 = {
- 1, 4, 95, 200, Dialog128
-};
-
-static const struct DialogEntry dialog_text_129 = {
- 1, 5, 30, 200, Dialog129
-};
-
-static const struct DialogEntry dialog_text_130 = {
- 1, 5, 30, 200, Dialog130
-};
-
-static const struct DialogEntry dialog_text_131 = {
- 1, 5, 30, 200, Dialog131
-};
-
-static const struct DialogEntry dialog_text_132 = {
- 1, 5, 30, 200, Dialog132
-};
-
-static const struct DialogEntry dialog_text_133 = {
- 1, 5, 30, 200, Dialog133
-};
-
-static const struct DialogEntry dialog_text_134 = {
- 1, 4, 30, 200, Dialog134
-};
-
-static const struct DialogEntry dialog_text_135 = {
- 1, 5, 30, 200, Dialog135
-};
-
-static const struct DialogEntry dialog_text_136 = {
- 1, 4, 30, 200, Dialog136
-};
-
-static const struct DialogEntry dialog_text_137 = {
- 1, 5, 30, 200, Dialog137
-};
-
-static const struct DialogEntry dialog_text_138 = {
- 1, 5, 30, 200, Dialog138
-};
-
-static const struct DialogEntry dialog_text_139 = {
- 1, 6, 30, 200, Dialog139
-};
-
-static const struct DialogEntry dialog_text_140 = {
- 1, 6, 30, 200, Dialog140
-};
-
-static const struct DialogEntry dialog_text_141 = {
- 1, 5, 150, 200, Dialog141
-};
-
-static const struct DialogEntry dialog_text_142 = {
- 1, 5, 150, 200, Dialog142
-};
-
-static const struct DialogEntry dialog_text_143 = {
- 1, 6, 150, 200, Dialog143
-};
-
-static const struct DialogEntry dialog_text_144 = {
- 1, 5, 150, 200, Dialog144
-};
-
-static const struct DialogEntry dialog_text_145 = {
- 1, 4, 150, 200, Dialog145
-};
-
-static const struct DialogEntry dialog_text_146 = {
- 1, 6, 150, 200, Dialog146
-};
-
-static const struct DialogEntry dialog_text_147 = {
- 1, 5, 30, 200, Dialog147
-};
-
-static const struct DialogEntry dialog_text_148 = {
- 1, 5, 30, 200, Dialog148
-};
-
-static const struct DialogEntry dialog_text_149 = {
- 1, 5, 30, 200, Dialog149
-};
-
-static const struct DialogEntry dialog_text_150 = {
- 1, 5, 30, 200, Dialog150
-};
-
-static const struct DialogEntry dialog_text_151 = {
- 1, 4, 30, 200, Dialog151
-};
-
-static const struct DialogEntry dialog_text_152 = {
- 1, 5, 30, 200, Dialog152
-};
-
-static const struct DialogEntry dialog_text_153 = {
- 1, 4, 30, 200, Dialog153
-};
-
-static const struct DialogEntry dialog_text_154 = {
- 1, 5, 30, 200, Dialog154
-};
-
-static const struct DialogEntry dialog_text_155 = {
- 1, 5, 30, 200, Dialog155
-};
-
-static const struct DialogEntry dialog_text_156 = {
- 1, 4, 30, 200, Dialog156
-};
-
-static const struct DialogEntry dialog_text_157 = {
- 1, 5, 30, 200, Dialog157
-};
-
-static const struct DialogEntry dialog_text_158 = {
- 1, 5, 30, 200, Dialog158
-};
-
-static const struct DialogEntry dialog_text_159 = {
- 1, 5, 30, 200, Dialog159
-};
-
-static const struct DialogEntry dialog_text_160 = {
- 1, 4, 30, 200, Dialog160
-};
-
-static const struct DialogEntry dialog_text_161 = {
- 1, 5, 30, 200, Dialog161
-};
-
-static const struct DialogEntry dialog_text_162 = {
- 1, 5, 30, 200, Dialog162
-};
-
-static const struct DialogEntry dialog_text_163 = {
- 1, 5, 30, 200, Dialog163
-};
-
-static const struct DialogEntry dialog_text_164 = {
- 1, 4, 30, 200, Dialog164
-};
-
-static const struct DialogEntry dialog_text_165 = {
- 1, 4, 30, 200, Dialog165
-};
-
-static const struct DialogEntry dialog_text_166 = {
- 1, 6, 30, 200, Dialog166
-};
-
-static const struct DialogEntry dialog_text_167 = {
- 1, 4, 30, 200, Dialog167
-};
-
-static const struct DialogEntry dialog_text_168 = {
- 1, 4, 30, 200, Dialog168
-};
-
-static const struct DialogEntry dialog_text_169 = {
- 1, 5, 30, 200, Dialog169
-};
-
-
-// dialog table
-// 0x0200DFE8
-const struct DialogEntry *const seg2_dialog_table[] = {
- &dialog_text_000, &dialog_text_001, &dialog_text_002, &dialog_text_003,
- &dialog_text_004, &dialog_text_005, &dialog_text_006, &dialog_text_007,
- &dialog_text_008, &dialog_text_009, &dialog_text_010, &dialog_text_011,
- &dialog_text_012, &dialog_text_013, &dialog_text_014, &dialog_text_015,
- &dialog_text_016, &dialog_text_017, &dialog_text_018, &dialog_text_019,
- &dialog_text_020, &dialog_text_021, &dialog_text_022, &dialog_text_023,
- &dialog_text_024, &dialog_text_025, &dialog_text_026, &dialog_text_027,
- &dialog_text_028, &dialog_text_029, &dialog_text_030, &dialog_text_031,
- &dialog_text_032, &dialog_text_033, &dialog_text_034, &dialog_text_035,
- &dialog_text_036, &dialog_text_037, &dialog_text_038, &dialog_text_039,
- &dialog_text_040, &dialog_text_041, &dialog_text_042, &dialog_text_043,
- &dialog_text_044, &dialog_text_045, &dialog_text_046, &dialog_text_047,
- &dialog_text_048, &dialog_text_049, &dialog_text_050, &dialog_text_051,
- &dialog_text_052, &dialog_text_053, &dialog_text_054, &dialog_text_055,
- &dialog_text_056, &dialog_text_057, &dialog_text_058, &dialog_text_059,
- &dialog_text_060, &dialog_text_061, &dialog_text_062, &dialog_text_063,
- &dialog_text_064, &dialog_text_065, &dialog_text_066, &dialog_text_067,
- &dialog_text_068, &dialog_text_069, &dialog_text_070, &dialog_text_071,
- &dialog_text_072, &dialog_text_073, &dialog_text_074, &dialog_text_075,
- &dialog_text_076, &dialog_text_077, &dialog_text_078, &dialog_text_079,
- &dialog_text_080, &dialog_text_081, &dialog_text_082, &dialog_text_083,
- &dialog_text_084, &dialog_text_085, &dialog_text_086, &dialog_text_087,
- &dialog_text_088, &dialog_text_089, &dialog_text_090, &dialog_text_091,
- &dialog_text_092, &dialog_text_093, &dialog_text_094, &dialog_text_095,
- &dialog_text_096, &dialog_text_097, &dialog_text_098, &dialog_text_099,
- &dialog_text_100, &dialog_text_101, &dialog_text_102, &dialog_text_103,
- &dialog_text_104, &dialog_text_105, &dialog_text_106, &dialog_text_107,
- &dialog_text_108, &dialog_text_109, &dialog_text_110, &dialog_text_111,
- &dialog_text_112, &dialog_text_113, &dialog_text_114, &dialog_text_115,
- &dialog_text_116, &dialog_text_117, &dialog_text_118, &dialog_text_119,
- &dialog_text_120, &dialog_text_121, &dialog_text_122, &dialog_text_123,
- &dialog_text_124, &dialog_text_125, &dialog_text_126, &dialog_text_127,
- &dialog_text_128, &dialog_text_129, &dialog_text_130, &dialog_text_131,
- &dialog_text_132, &dialog_text_133, &dialog_text_134, &dialog_text_135,
- &dialog_text_136, &dialog_text_137, &dialog_text_138, &dialog_text_139,
- &dialog_text_140, &dialog_text_141, &dialog_text_142, &dialog_text_143,
- &dialog_text_144, &dialog_text_145, &dialog_text_146, &dialog_text_147,
- &dialog_text_148, &dialog_text_149, &dialog_text_150, &dialog_text_151,
- &dialog_text_152, &dialog_text_153, &dialog_text_154, &dialog_text_155,
- &dialog_text_156, &dialog_text_157, &dialog_text_158, &dialog_text_159,
- &dialog_text_160, &dialog_text_161, &dialog_text_162, &dialog_text_163,
- &dialog_text_164, &dialog_text_165, &dialog_text_166, &dialog_text_167,
- &dialog_text_168, &dialog_text_169, NULL,
-};
-
diff --git a/text/jp/dialogs.h b/text/jp/dialogs.h
@@ -0,0 +1,1887 @@
+// Parameters: dialog enum ID, (unused), lines per box, left offset, width
+
+DEFINE_DIALOG(DIALOG_000, 1, 5, 30, 200, _("\
+おおっと,ここはキケンな\n\
+せんじょうの どまんなか。\n\
+『え』のなかのせかいには\n\
+クッパが ぬすんだ\n\
+パワ-スタ-がある。\n\
+まずは,あかいボムへいに\n\
+はなしかけてみるといい!\n\
+Bボタンではなしができる。\n\
+きっと,ちからになって\n\
+くれるはずだ。\n\
+カンバンを よむときも\n\
+たちどまって Bボタン!\n\
+AかBボタンですすめる!\n\
+まえにたつだけで はなし\n\
+かける,どうぶつもいます。"))
+
+DEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _("\
+あぶない あぶない!!\n\
+こんなところを うろうろ\n\
+してると,みずばくだんが\n\
+ふってきますよ。\n\
+くろいボムへいたちは\n\
+たたかいが だいすきで,\n\
+いつも ぼくらを\n\
+こうげきしてきます。\n\
+ボムキングという ボスが\n\
+スタ-を てにいれてから\n\
+ここは せんじょうに\n\
+なってしまいました。\n\
+ボムキングから スタ-を\n\
+とりあげてくれませんか?\n\
+このさきの はしをわたり\n\
+みちぞいにひだりにいけば,\n\
+ボムとりでの いりぐちに\n\
+つきます。キングのスタ-\n\
+を とりもどしたら また\n\
+あいに きてください。"))
+
+DEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _("\
+ちょっと あなた!\n\
+このさきはキケンですよ!\n\
+\n\
+そこで,アドバイスです。\n\
+そらから ふってくる\n\
+みずばくだんをよけて,\n\
+はしを『2つ』わたると\n\
+あちらの『じんち』です。\n\
+やまのうえのボムキングは\n\
+すごく ちからもちです。\n\
+かつぎあげられないように\n\
+きをつけてください。\n\
+ぼくら あかボムへいは\n\
+あなたのみかたです。\n\
+いつでも はなしかけて\n\
+きてくださいね!"))
+
+DEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _("\
+おかげで ボムキングは\n\
+おとなしくなりました!\n\
+でも,たたかいは おわり\n\
+ません。 かいぶつたちが\n\
+まだスタ-をもっています。\n\
+スタ-をいくつかとったら\n\
+あたらしい へやのドアを\n\
+ひらくことが できます。\n\
+つぎのへやの せかいへと\n\
+すすんでください!\n\
+ぼくらのなかまが\n\
+おまちしています。\n\
+はなしかけて くださいね。\n\
+いつでも たいほうを\n\
+じゅんびしますよ。"))
+
+DEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _("\
+ぼくたちは へいわを\n\
+ねがっています。 だから\n\
+たいほうは つかいません。\n\
+けれど あなたをどこかに\n\
+とばすなら へいきです。\n\
+どうぞ つかってください。\n\
+このコ-スにあるすべての\n\
+あかボムぐん たいほうを\n\
+つかえるように します。"))
+
+DEFINE_DIALOG(DIALOG_005, 1, 4, 30, 200, _("\
+な-んだ,マリオさんじゃ\n\
+ないッスか!\n\
+ボムキングやっつけたって\n\
+ほんと-ッスか?\n\
+いや- すごいッス!\n\
+さっすが つよいし,\n\
+オイラほどではないけど,\n\
+あしも はやいッスよね!\n\
+ひとつオイラと,\n\
+ボムキングのヤツがいた\n\
+おやまのちょうじょうまで\n\
+かけっこでもしませんか?\n\
+それでは オイラが,\n\
+『ドン!』といったら\n\
+スタ-ト ッスよ。\n\
+\n\
+ ヨ---イ!\n\
+\n\
+ ドン! やめる"))
+
+DEFINE_DIALOG(DIALOG_006, 1, 4, 30, 200, _("\
+ははっ ズルッコは\n\
+なしッス! マリオさん。\n\
+またこんど\n\
+あそびましょうね。"))
+
+DEFINE_DIALOG(DIALOG_007, 1, 6, 30, 200, _("\
+ハア ハア ハア\n\
+いや-まいったッス!\n\
+ほんと はえ-ッスね!\n\
+オイラに かったきねんに,\n\
+これ,あげるッス。\n\
+ホイ!"))
+
+DEFINE_DIALOG(DIALOG_008, 1, 5, 30, 200, _("\
+もうけんワンワン キケン\n\
+Cボタンの うえをおして\n\
+『マリオのちかく』から\n\
+ながめて ください。\n\
+とても コワイです。\n\
+クイのうえの あかコイン。\n\
+おなじコインを さがして\n\
+8まいあつめると,はしを\n\
+わたったひだりのはやしに\n\
+スタ-がでます。"))
+
+DEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _("\
+ひっさしぶりッス! いま\n\
+ちょ-どかえったとこッス。\n\
+パワ-スタ-のせいか\n\
+いちだんと はやくなった\n\
+ようッスね!\n\
+このまえは まけちゃって\n\
+ほ-んと くやしいッス。\n\
+ここは オイラのホ-ム\n\
+グランド!じしんあるッス。\n\
+もいちどやりましょうよ!\n\
+ゴ-ルはカゼふきのたに!\n\
+しってるッスよね!?\n\
+そんじゃ\n\
+ ヨ---イ!\n\
+ ドン! やめる"))
+
+DEFINE_DIALOG(DIALOG_010, 1, 3, 30, 200, _("\
+そらを じゆうにとべる\n\
+『はねのぼうし』の\n\
+スイッチを ふみました。\n\
+せかいじゅうにある\n\
+あかブロックから,はねの\n\
+ぼうしがとびだします。\n\
+ここまでをセ-ブする?\n\
+\n\
+ はい いいえ"))
+
+DEFINE_DIALOG(DIALOG_011, 1, 3, 30, 200, _("\
+むてきの からだになれる\n\
+『メタルのぼうし』の\n\
+スイッチを ふみました。\n\
+せかいじゅうの みどりの\n\
+ブロックから,メタルの\n\
+ぼうしが とびだします。\n\
+ここまでをセ-ブする?\n\
+\n\
+ はい いいえ"))
+
+DEFINE_DIALOG(DIALOG_012, 1, 3, 30, 200, _("\
+すがたをけせる まほうの\n\
+『とうめいのぼうし』の\n\
+スイッチを ふみました。\n\
+せかいじゅうの あおい\n\
+ブロックから,とうめい\n\
+ぼうしが とびだします。\n\
+ここまでをセ-ブする?\n\
+\n\
+ はい いいえ"))
+
+DEFINE_DIALOG(DIALOG_013, 1, 5, 30, 200, _("\
+100まいコインの\n\
+スタ-を てにいれた!\n\
+おしろのパワ-が\n\
+またひとつマリオに\n\
+ ちからを あたえた。\n\
+\n\
+ここまでセ-ブしますか?\n\
+\n\
+ はい いいえ"))
+
+DEFINE_DIALOG(DIALOG_014, 1, 5, 30, 200, _("\
+おもわぬところで\n\
+スタ-をてにいれた。\n\
+そして おしろのパワ-が\n\
+またひとつ マリオに\n\
+ ゆうきを あたえた。\n\
+\n\
+ここまでセ-ブしますか?\n\
+\n\
+ はい いいえ"))
+
+DEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _("\
+てきはパンチでたおせるよ。\n\
+Aボタンは『ジャンプ』\n\
+Bボタンは『パンチ』です。\n\
+AとBボタンで『キック』。\n\
+『ものをもつ』ときも\n\
+ Bボタン!\n\
+『なげる』は もういちど\n\
+Bボタンをおしてください。"))
+
+DEFINE_DIALOG(DIALOG_016, 1, 4, 30, 200, _("\
+キラキラひかったコウラに\n\
+のると,どんなところも\n\
+スイスイすすめる!\n\
+てきをけちらし すすめ!"))
+
+DEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _("\
+ワシがボムキング,つまり\n\
+ばくだんの おうさまだ。\n\
+よくここまできた。その\n\
+ゆうきは ほめてやろう。\n\
+とはいえ,おまえにタダで\n\
+だいじな パワ-スタ-を\n\
+やるわけには いかん。\n\
+そこで チャンスをやろう。\n\
+パワ-スタ-がほしければ\n\
+ワシを なげとばしてみろ。\n\
+うしろから かつげるか?\n\
+さあ,かかってこい!"))
+
+DEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _("\
+ねむいので,ねています。\n\
+おこすと おこります。\n\
+\n\
+しずかに あるきましょう。"))
+
+DEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _("\
+ろうかは しずかに\n\
+あるきましょう。"))
+
+DEFINE_DIALOG(DIALOG_020, 1, 5, 95, 150, _("\
+おしろへ あそびに\n\
+きてください。\n\
+ケ-キを つくって\n\
+まってます。\n\
+ -ピ-チより-"))
+
+DEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _("\
+ようこそいらっしゃいませ\n\
+・・だれも いませんので\n\
+とっとと\n\
+ おかえりください。\n\
+ガハハハッ!"))
+
+DEFINE_DIALOG(DIALOG_022, 1, 3, 95, 200, _("\
+カギが かかっている・・"))
+
+DEFINE_DIALOG(DIALOG_023, 1, 3, 95, 200, _("\
+・・・カギがあわない!\n\
+このカギは『ちか』への\n\
+カギのようだ。"))
+
+DEFINE_DIALOG(DIALOG_024, 1, 3, 95, 200, _("\
+クッパがとじたこのドアを\n\
+ひらくには,スタ-の\n\
+パワ-が ひつようです。\n\
+どこかのへやの『え』の\n\
+なかの モンスタ-から\n\
+とりもどしてきてください"))
+
+DEFINE_DIALOG(DIALOG_025, 1, 3, 95, 200, _("\
+このドアを ひらくには\n\
+スタ-3まいの パワ-が\n\
+ひつようです。\n\
+あと[%]まいの スタ-が\n\
+ひつようです。"))
+
+DEFINE_DIALOG(DIALOG_026, 1, 3, 95, 200, _("\
+このドアを ひらくには\n\
+スタ-8まいの パワ-が\n\
+ひつようです。\n\
+あと[%]まいの スタ-が\n\
+ひつようです。"))
+
+DEFINE_DIALOG(DIALOG_027, 1, 3, 95, 200, _("\
+このドアを ひらくには\n\
+スタ-30まいのパワ-が\n\
+ひつようです。\n\
+スタ-があと\n\
+[%]まいひつようです。"))
+
+DEFINE_DIALOG(DIALOG_028, 1, 3, 95, 200, _("\
+このドアを ひらくには\n\
+スタ-50まいのパワ-が\n\
+ひつようです。\n\
+あと[%]まいの スタ-が\n\
+ひつようです。"))
+
+DEFINE_DIALOG(DIALOG_029, 1, 4, 95, 200, _("\
+はてしない かいだんの\n\
+ドアを ひらくには\n\
+スタ-70まいのパワ-が\n\
+ひつようです・・・・・\n\
+あと[%]まいの スタ-が\n\
+たりません・・・\n\
+ガハハッ!"))
+
+DEFINE_DIALOG(DIALOG_030, 1, 4, 30, 200, _("\
+カメラマンのジュゲムです。\n\
+ちょっと アドバイス!\n\
+しずかにあるきたいときは\n\
+ゆっくり あるくことです。\n\
+まわりを みたいときは\n\
+Cボタンのみぎとひだりで\n\
+カメラをすこしまわせます。\n\
+Cのしたで とおくから。\n\
+できないところでは\n\
+『ブ-ッ!』といいます。\n\
+よろしく!! \n\
+ -ジュゲム"))
+
+DEFINE_DIALOG(DIALOG_031, 1, 3, 30, 200, _("\
+またまた まけちゃったよ。\n\
+こんどはスッゴい じしん\n\
+あったんッスけどね・・・\n\
+ほんと すごいッスね!\n\
+このスタ-も\n\
+あげちゃいます!"))
+
+DEFINE_DIALOG(DIALOG_032, 1, 4, 30, 200, _("\
+はねぼうしの あるひとは\n\
+3かいれんぞくでジャンプ\n\
+しよう。 おおぞらたかく\n\
+とびあがれます。\n\
+たいほうでとぶと\n\
+さらに たかくとべます。\n\
+まわりをみるのはCボタン。\n\
+おりたいときはZボタン。"))
+
+DEFINE_DIALOG(DIALOG_033, 1, 4, 30, 200, _("\
+ワ-プどかんを\n\
+くぐりぬけ,\n\
+ピ-チの おしろに\n\
+つきました。\n\
+そうさは カンタン。\n\
+Aボタンが ジャンプ!\n\
+Bボタンで こうげき!\n\
+カンバンも よめます。\n\
+マリオを うごかすのは\n\
+まんなかに ついてる\n\
+『3Dスティック』。\n\
+まずはおしろへ すすめ!"))
+
+DEFINE_DIALOG(DIALOG_034, 1, 5, 30, 200, _("\
+こんにちは! \n\
+ぼくたちカメラマンの\n\
+ジュゲムブラザ-ズです。\n\
+これから,カメラをもって\n\
+あなたに ついていきます。\n\
+カメラは おすすめのいち\n\
+から さつえいしてます。\n\
+むきをかえるのはCボタン,\n\
+かえられない ときは\n\
+『ブ-ッ!』といいます。\n\
+ちょっと たちどまったら\n\
+Cボタンのうえ!\n\
+まわりを ながめられます。\n\
+ゲ-ムに もどすときは\n\
+『Aボタン』です。\n\
+『Rボタン』をつかうと\n\
+いろんなカメラモ-ドに\n\
+きりかえられます。\n\
+また,かんばんなどをみて\n\
+おぼえてください!\n\
+いじょう!! カメラマン\n\
+ジュゲムブラザ-ズからの\n\
+おしらせでした。\n\
+それじゃ,きをつけて!"))
+
+DEFINE_DIALOG(DIALOG_035, 1, 4, 30, 200, _("\
+きいろい4つの Cボタン。\n\
+『うえ』をおすと\n\
+3Dスティックで\n\
+まわりを みわたせます。\n\
+ふだんマリオをみてるのは\n\
+おすすめのジュゲムカメラ。\n\
+Cボタンで すこし,\n\
+かくどが かえられます。\n\
+Rボタンをおすと\n\
+マリオの うしろからみる\n\
+マリオカメラに なります。\n\
+もどすときはもういちどR。\n\
+『ジュゲムカメラ』と\n\
+『マリオカメラ』どちらも\n\
+Cボタンの したをおすと,\n\
+とおくへ はなれます。\n\
+いまつかっている\n\
+カメラを しりたいときは,\n\
+がめん みぎしたの\n\
+アイコンを みてください。"))
+
+DEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _("\
+ 『てんぼうだい』\n\
+Cボタンの うえをおすと,\n\
+まわりを みわたせます。\n\
+みえないところは よ-く\n\
+たしかめてからすすめ-!\n\
+Rボタンはマリオのカメラ。\n\
+いつも マリオのうしろを\n\
+ついていくぞ。ジュゲムに\n\
+もどすときは もういちど\n\
+Rボタンをおすこと。\n\
+ポ-ズがめんで モ-ドを\n\
+かえると,Rボタンを\n\
+おしてるあいだ カメラを\n\
+『とめる』こともできる!\n\
+ためしてみよう。\n\
+つかってるカメラモ-ドは\n\
+みぎしたのアイコンで\n\
+たしかめよう。\n\
+マリオとの きょりは\n\
+きいろやじるしを みよう。"))
+
+DEFINE_DIALOG(DIALOG_037, 1, 3, 30, 200, _("\
+あたしの『かち』です。\n\
+あなたの『まけ』です。\n\
+ははははは!!!\n\
+マリオさん,と-っても\n\
+おしかったですね。\n\
+また あそびましょう!"))
+
+DEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _("\
+パワ-スタ-の ちからで\n\
+つぎの せかいへのドアは\n\
+しずかにひらいた。"))
+
+DEFINE_DIALOG(DIALOG_039, 1, 5, 30, 200, _("\
+-ボムとりで いりぐち-\n\
+ だれも はいるな!\n\
+\n\
+ワシのパワ-スタ-は\n\
+だれにも わたさぬ。\n\
+クッパどのからいただいた\n\
+だいじな だいじな\n\
+たからものだ。\n\
+なんまいか かくしたが\n\
+ばしょは おしえぬ。\n\
+コ-スはじめの スタ-の\n\
+なまえを,ヒントにする\n\
+ぐらいなら ゆるす。\n\
+\n\
+おやまのうえのボムキング"))
+
+DEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _("\
+このさき キケン!\n\
+リフトのたにぞこ です。"))
+
+DEFINE_DIALOG(DIALOG_041, 1, 4, 30, 200, _("\
+オイラがかっちゃいました。\n\
+ハッハッハッ\n\
+たいしたことないッスね!\n\
+じゃ,またこんどね!"))
+
+DEFINE_DIALOG(DIALOG_042, 1, 5, 30, 200, _("\
+この『はし』せまい。\n\
+ゆっくりわたろう!\n\
+ガケのカドにとびついたり\n\
+ゆっくりと おりると\n\
+ぶらさがれます。\n\
+『て』を はなすときは\n\
+Zボタンか スティックを\n\
+マリオのうしろへ。\n\
+のぼるときには まえへ\n\
+たおしてください。\n\
+ぶらさがって すぐに\n\
+Aボタンをおすと\n\
+すばやく あがれます。"))
+
+DEFINE_DIALOG(DIALOG_043, 1, 4, 30, 200, _("\
+ジャンプしてAボタンを\n\
+おしっぱなしに すると\n\
+ぶらさがれる ところが\n\
+あります。\n\
+『とり』につかまるとき\n\
+と おなじです。"))
+
+DEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _("\
+だれだい! せっかく\n\
+いいきもちで ねてたのに。\n\
+あ- カラダがおもいな-\n\
+ちょ-どいいや!わたしと\n\
+ひと-っとび しません?\n\
+ジャンプボタンを\n\
+おしているあいだ\n\
+ぶらさがれますよ-。\n\
+おりたいときに\n\
+はなせばい-です。\n\
+お-すきなところへ\n\
+おつれしま-す。\n\
+かげを よ-くみて\n\
+Aボタンで つかまって\n\
+くださいね-!"))
+
+DEFINE_DIALOG(DIALOG_045, 1, 5, 95, 200, _("\
+あ-あ,つかれた-・・\n\
+や-っぱり おもいな-。\n\
+きょうは このあたりで!\n\
+『もういちどAボタンを\n\
+おしなおしてください。』\n\
+もうすこし とんだら\n\
+ほんとに てをはなしてね\n\
+\n\
+じゃあ,さよなら-!"))
+
+DEFINE_DIALOG(DIALOG_046, 1, 5, 30, 200, _("\
+ジャンプのワザ まとめて\n\
+せいりしておきます。\n\
+とてもだいじな3つのワザ。\n\
+おぼえて つかって\n\
+みてください。\n\
+タイミングよく つづけて\n\
+とぶと たかくとべます。\n\
+はやく はしっていると\n\
+さらに たかくとべます。\n\
+『3だんとび』です。\n\
+はしりながら Zボタンで\n\
+しゃがんでジャンプすると\n\
+とおくへ とべます。\n\
+『はばとび』です。\n\
+とてもべんりです。\n\
+まっすぐたった カベに\n\
+むかって ジャンプして,\n\
+ぶつかった ところから\n\
+また ジャンプできます。\n\
+『カベキック』といいます。\n\
+だいじな テクニック\n\
+『3だんとび』\n\
+『はばとび』\n\
+『カベキック』\n\
+ わかった?"))
+
+DEFINE_DIALOG(DIALOG_047, 1, 3, 95, 200, _("\
+こんにちは!\n\
+たいほうの じゅんびに\n\
+かかります!・・・・・"))
+
+DEFINE_DIALOG(DIALOG_048, 1, 4, 30, 200, _("\
+ここは ツルツルすべる\n\
+ゆきやまの ちょうじょう。\n\
+まずはそこの\n\
+やまごやへ どうぞ。"))
+
+DEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _("\
+ジャンプわざカベキックを\n\
+おぼえていますか?\n\
+たかいところへ あがる\n\
+とてもだいじなテクニック。\n\
+カベからカベへジャンプ!\n\
+スティックをつかって\n\
+はねかえったほうに\n\
+かそくする。\n\
+よ-く\n\
+れんしゅう しておこう!"))
+
+DEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _("\
+Zボタンで しゃがめます。\n\
+『さか』では すべれます。\n\
+ジャンプの とちゅうなら\n\
+『ヒップドロップ』!!\n\
+とまって しゃがんでから\n\
+ジャンプすると\n\
+『バックちゅう』できる!\n\
+わかった? まだあります。\n\
+はしりながら しゃがんで\n\
+ジャンプで『はばとび』!\n\
+しゃがんでから あるくと\n\
+・・・ひみつです。"))
+
+DEFINE_DIALOG(DIALOG_051, 1, 5, 30, 200, _("\
+『き』や『ぼう』には\n\
+ジャンプで つかまれます。\n\
+『のぼる』『おりる』は\n\
+スティックで,やめるのは\n\
+Zボタンで『て』をはなす。\n\
+『むきをかえる』ときは\n\
+ 3Dスティックの\n\
+ みぎ と ひだり。\n\
+Aボタンで『せなか』の\n\
+ほうこうにジャンプします。\n\
+テッペンで もういちど\n\
+スティックを うえにいれ,\n\
+『さかだち』ができる。\n\
+むきをきめて せなかの\n\
+ほうこうに ジャンプだ!"))
+
+DEFINE_DIALOG(DIALOG_052, 1, 4, 30, 200, _("\
+Zボタンで しゃがめます。\n\
+とまって しゃがんでから\n\
+ジャンプすると,\n\
+『バックちゅう』できる!\n\
+すばやくユ-タ-ンを\n\
+しながら,ジャンプすると\n\
+『ちゅうがえり』!\n\
+どちらも たかくとべます。"))
+
+DEFINE_DIALOG(DIALOG_053, 1, 6, 30, 200, _("\
+コインリングや かくれた\n\
+シ-クレットポイントを\n\
+とおると あかいすうじが\n\
+でてきます。5こつづけて\n\
+とおると ひみつのスタ-\n\
+が あらわれます。"))
+
+DEFINE_DIALOG(DIALOG_054, 1, 4, 30, 200, _("\
+スライダ-へようこそ!!\n\
+さかを すべりはじめたら\n\
+スティックまえで かそく,\n\
+うしろで げんそくできる。"))
+
+DEFINE_DIALOG(DIALOG_055, 1, 5, 30, 200, _("\
+あたし,このスライダ-の\n\
+せかいチャンピオン!!!\n\
+からだ,デカイけど\n\
+とっても はやいよ!\n\
+あなたチャレンジします?\n\
+それでは!\n\
+\n\
+ レディ---・・・!\n\
+ ・・・ \n\
+ ゴ-!! やめとく"))
+
+DEFINE_DIALOG(DIALOG_056, 1, 3, 30, 200, _("\
+ヒエ---ッ!!!\n\
+セカイきろくだよ!\n\
+スゴイよ!あなた!!\n\
+きんメダルの かわりに\n\
+コレ あげます!\n\
+いや--スゴイスゴイ!!"))
+
+DEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _("\
+どこかで うちのこどもを\n\
+みかけません でしたか?\n\
+・・・わたしんち こども\n\
+いっぱい いましてね・・\n\
+なんびき いたのかも\n\
+おぼえてなくて・・・・\n\
+ほんとに・・\n\
+どこへ いったんでしょう。\n\
+だいてやると\n\
+とても いいこえで\n\
+なくんですけどね・・・\n\
+ヤレヤレ・・・・・"))
+
+DEFINE_DIALOG(DIALOG_058, 1, 5, 30, 200, _("\
+ああ--っ!!たしかに\n\
+うちの こどもです・・・\n\
+『こらっ! いつも\n\
+ちかくで あそびなさいと\n\
+いってるだろ!』\n\
+あなた とっても\n\
+いいひとです。 おれいに\n\
+これを さしあげます。\n\
+あったかくって とても\n\
+げんきに なりますよ。"))
+
+DEFINE_DIALOG(DIALOG_059, 1, 5, 30, 200, _("\
+このこは うちのこじゃ-\n\
+ないようだなあ・・・\n\
+かわいそうに・・・\n\
+おやはいったい\n\
+なにをしてるんだろう・・"))
+
+DEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _("\
+-みずにはいるちゅうい-\n\
+\n\
+もぐっていると しぬほど\n\
+くるしくなってきます。\n\
+すいめんに あがるか\n\
+アブクをみつけて\n\
+さわってください。\n\
+ひといき つけます。\n\
+およぐときは Aボタン!\n\
+おしてるだけでも すすみ\n\
+タイミングよく おすと\n\
+スピ-ドがでます。\n\
+もぐるときはスティックを\n\
+まえにたおして Aボタン。\n\
+うかぶときはスティックを\n\
+てまえにひいて Aボタン。\n\
+すいめんに いるときは\n\
+ジャンプします。\n\
+ 『じゅんびたいそう\n\
+ わすれずに!!』"))
+
+DEFINE_DIALOG(DIALOG_061, 1, 6, 30, 200, _("\
+つめたいみず キケン!!\n\
+およいでは いけません!\n\
+この こおりのいけは\n\
+とびあがるぐらい\n\
+つめたいです!\n\
+ ペンギン"))
+
+DEFINE_DIALOG(DIALOG_062, 1, 5, 30, 200, _("\
+みどりの ブロックに\n\
+かくされている\n\
+ふしぎな ふしぎな\n\
+『メタルのぼうし』。\n\
+\n\
+ひをつけたってもえないし\n\
+てきのたまも はねかえす。\n\
+いきを とめても\n\
+へいきです。\n\
+こまったことにおよげない。"))
+
+DEFINE_DIALOG(DIALOG_063, 1, 4, 30, 200, _("\
+あおいブロックには\n\
+『とうめいぼうし』。\n\
+メダマも ビックリ\n\
+すがたをけせる。\n\
+テレサも まっさお\n\
+『ひみつのカベ』を\n\
+とおりぬけるぞ。"))
+
+DEFINE_DIALOG(DIALOG_064, 1, 4, 30, 200, _("\
+あかいブロックのなかの\n\
+はねのぼうしを かぶると,\n\
+3かいジャンプで\n\
+そらたかく とびあがれる。\n\
+そうさはスティックで!\n\
+てまえにひくと あがる。\n\
+まえにたおすと さがる。\n\
+やめるときはZボタンで!"))
+
+DEFINE_DIALOG(DIALOG_065, 1, 5, 30, 200, _("\
+およぎかた おしえます。\n\
+\n\
+みずにはいるとおよげます。\n\
+ながいあいだ『もぐる』と\n\
+くるしくなります。\n\
+すすむためには Aボタン。\n\
+タイミングよく おすと\n\
+スピ-ドが でます。\n\
+3Dスティックを まえに\n\
+たおすと もぐります。\n\
+すいめんに もどったり,\n\
+みずから あがるときは\n\
+てまえにひいて Aボタン。\n\
+すいめんでジャンプだ!\n\
+\n\
+Aボタン おしっぱなしに\n\
+していても,およげます。\n\
+らくちんです。\n\
+およいでいるあいだは\n\
+ドアを あけられません。"))
+
+DEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _("\
+マリオ! クッパのはく\n\
+ほのおに きをつけて!\n\
+クッパを こらしめるには\n\
+うしろにまわりBボタンで\n\
+シッポをつかむのよ!\n\
+なげとばす まえには\n\
+3Dスティックで\n\
+グリグリふりまわすの。\n\
+はやく まわすほど\n\
+とおくまで とぶわ!\n\
+Cボタンで まわりを\n\
+よ-くみて!\n\
+なげとばした クッパは\n\
+4すみの バクダンに\n\
+ぶつけてやるの!\n\
+ねらいを\n\
+よ-くさだめて・・・\n\
+\n\
+もういちどBボタンよ!"))
+
+DEFINE_DIALOG(DIALOG_067, 1, 4, 30, 200, _("\
+ざんねんだったなマリオ!\n\
+ここには ピ-チちゃんは\n\
+いませんでした。\n\
+ ガハハッ!!\n\
+わがはいの うしろに\n\
+まわりこんで シッポを\n\
+つかめるものなら\n\
+つかんでみるんだな。\n\
+スティックでグリグリ\n\
+まわして なげるなど\n\
+できるわけが ない!!\n\
+ ガハハッ!!"))
+
+DEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _("\
+ここは しゃくねつの\n\
+ファイアバブル ランド!\n\
+からだに ひがついても\n\
+おちないように あわてず\n\
+そうさしよう。\n\
+ほのおのいけに おちると\n\
+はねあがる! そうさは\n\
+できるので,おちついて。\n\
+あまりうごきまわらないで\n\
+ガンバレ!"))
+
+DEFINE_DIALOG(DIALOG_069, 1, 3, 30, 200, _("\
+『え』のなかのカイブツの\n\
+せかいには,せかいの\n\
+はてがあります。\n\
+みえないカベにあたったら\n\
+きっと そこが\n\
+『え』のせかいのはてです。\n\
+そらを とんでいるときも\n\
+そこから さきには\n\
+すすめません。"))
+
+DEFINE_DIALOG(DIALOG_070, 1, 5, 30, 200, _("\
+かいぶつたちの すんでる\n\
+『え』のなかのせかいから,\n\
+おしろの いりぐちの\n\
+メインホ-ルに\n\
+いつでも もどれます。\n\
+かならず きちんと\n\
+たちどまってから!\n\
+スタ-トボタンでポ-ズし,\n\
+『コ-スからでる』を\n\
+えらんでください。\n\
+ひとつのせかいのスタ-は\n\
+ぜんぶ とらなくても,\n\
+つぎのせかいにすすめます。\n\
+じょうずになったら,また\n\
+もどってきてください。\n\
+スタ-を1つ とるごとに\n\
+つぎのスタ-のヒントが\n\
+スタ-トがめんに でます。\n\
+えらんだヒントいがいの\n\
+スタ-をとってもOKです。"))
+
+DEFINE_DIALOG(DIALOG_071, 1, 4, 30, 200, _("\
+ -このさきキケン-\n\
+ あやしいケムリに\n\
+ ちゅうい!\n\
+ いきができません!\n\
+くるしくなったら\n\
+たかいところへ!\n\
+まる・・・・・ひなんじょ\n\
+やじるし・・・でいりぐち"))
+
+DEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _("\
+カゼつよし! ぼうしは\n\
+しっかり かぶりましょう。\n\
+もし ぼうしをなくしても\n\
+ここでなくした ぼうしは\n\
+このやまで みつかります。"))
+
+DEFINE_DIALOG(DIALOG_073, 1, 5, 95, 200, _("\
+ただしい じゅんばんで\n\
+はこを ひらくこと。\n\
+こたえは だれにも\n\
+おしえてやらない。\n\
+ --せんちょう--"))
+
+DEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _("\
+ガケのカドに とびつくと\n\
+ぶらさがれます。\n\
+おりるときはスティックを\n\
+マリオのうしろへいれるか,\n\
+Zボタンをおしてください。\n\
+のぼるときはスティックを\n\
+まえに たおしてください。\n\
+ぶらさがって\n\
+すぐに Aボタンをおすと\n\
+すばやく のぼれます!"))
+
+DEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _("\
+マリオ!!たいへんです。\n\
+クッパがまた・・・・\n\
+おしろの パワ-スタ-を\n\
+ぬすんで カベのなかへ!\n\
+わたしたちも・・・\n\
+みんなカベのなかへ・・・\n\
+すいこまれていくわ・・・\n\
+『カベ』や『え』のなか\n\
+から パワ-スタ-を\n\
+とりもどして!\n\
+クッパの ふさいだドアは\n\
+パワ-スタ-の ちからで\n\
+ひらくことが できるわ!\n\
+このへやには ひみつの\n\
+つうろがあるの。\n\
+クッパにみつからなかった\n\
+かくしつうろの ひとつよ。\n\
+そこには おしろの\n\
+かくれスタ-が あるわ!\n\
+きっと やくにたつはずよ。"))
+
+DEFINE_DIALOG(DIALOG_076, 1, 5, 30, 200, _("\
+パワ-スタ-のおかげで\n\
+おしろに,げんきが\n\
+もどってきました。\n\
+クッパなんか\n\
+おいはらってください。\n\
+おやくに たつなら\n\
+おしろの はなしをします。\n\
+『カガミのへや』では\n\
+カガミにうつらないものを\n\
+よくみてください。\n\
+みずのまちへ いくときは,\n\
+『え』にとびこむ たかさ\n\
+によって,まちをすっかり\n\
+みずびたしに できます。\n\
+アッ,これ みつけました。"))
+
+DEFINE_DIALOG(DIALOG_077, 1, 3, 150, 200, _("\
+とびらを ひらくまえに\n\
+2つの はしらを\n\
+おしさげて おくこと。"))
+
+DEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _("\
+あおコインのブロックを\n\
+ジャンプちゅうにZボタン\n\
+『ヒップドロップ』で\n\
+ ぶっつぶすと\n\
+あおコインがでてきます。\n\
+あおコイン1まいで\n\
+きいろコイン5まいぶん\n\
+とてもラッキ-!\n\
+でも じかんがたつと\n\
+きえてしまう・・ザンネン"))
+
+DEFINE_DIALOG(DIALOG_079, 1, 5, 30, 200, _("\
+いててて!\n\
+はなしてくれよ。\n\
+ウッキッキ-!\n\
+チョットからかった\n\
+だけなのに!\n\
+はなしてくれたら,\n\
+いいもの あげるからさ。\n\
+ネ-ネ- はなしてくれよ。\n\
+\n\
+ はなす いやだ"))
+
+DEFINE_DIALOG(DIALOG_080, 1, 3, 30, 200, _("\
+ヘッヘッヘッ!"))
+
+DEFINE_DIALOG(DIALOG_081, 1, 6, 30, 200, _("\
+ここは みずにみちたまち。\n\
+このまちは,あなたが\n\
+ここを おとずれるときの\n\
+たかさと,おなじだけの\n\
+みずをもって\n\
+あなたをむかえる。"))
+
+DEFINE_DIALOG(DIALOG_082, 1, 5, 30, 200, _("\
+ぼうしを なくすと\n\
+ダメ-ジがおおくなるので\n\
+だいじに してください。\n\
+なくしたら,なくした\n\
+コ-スで みつかります。\n\
+アア-どうしよう・・・\n\
+ピ-チひめは,カベに\n\
+ひきこまれた ままだし。\n\
+はやく クッパを\n\
+やっつけてください。\n\
+えのほかにカベのなかにも\n\
+モンスタ-の せかいが\n\
+あります。 あっ!これ\n\
+もっていって ください。\n\
+かくして もってました。"))
+
+DEFINE_DIALOG(DIALOG_083, 1, 4, 30, 200, _("\
+とけいがとても へんです。\n\
+とけいに はいるとき,\n\
+ながいはりの ばしょに\n\
+ちゅういしてください!\n\
+これ,とりもどしました。\n\
+もっていって ください。\n\
+かっこよく\n\
+うけとってくださいね!"))
+
+DEFINE_DIALOG(DIALOG_084, 1, 5, 30, 200, _("\
+イテテ らんぼうなひとだ。\n\
+このスタ-は クッパって\n\
+ヤツが くれたんだよ。\n\
+あんたのものだ なんて\n\
+しらなかったよ。\n\
+かえすって,かえすってば,\n\
+かえせば いいんでしょ。\n\
+はなしてくれたら\n\
+スタ-ぐらい かえすから。\n\
+ホイ!!"))
+
+DEFINE_DIALOG(DIALOG_085, 1, 4, 30, 200, _("\
+この やかたから\n\
+ ぶじにでられたら\n\
+\n\
+・・・エライ。・・"))
+
+DEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _("\
+まわりをクルクルまわると\n\
+めをまわす ヤツがいます。"))
+
+DEFINE_DIALOG(DIALOG_087, 1, 5, 30, 200, _("\
+えんとつから はいるのは\n\
+サンタだけではありません。\n\
+ ごえんりょなく\n\
+ おはいりください。\n\
+スノ-マンハウスお-な-"))
+
+DEFINE_DIALOG(DIALOG_088, 1, 5, 30, 200, _("\
+-さぎょうリフトじょう-\n\
+\n\
+ここから おりるひとは\n\
+ひだりのぼうにつかまって,\n\
+きをつけて おりること。"))
+
+DEFINE_DIALOG(DIALOG_089, 1, 4, 95, 200, _("\
+どちらのみちも キケン!\n\
+くらいあしもとにチュウイ。\n\
+はばとび できないひとは\n\
+みぎのみちを すすめ。\n\
+みぎ・・さぎょうリフト\n\
+ ケムリめいろ\n\
+ひだり・・やみのおおあな\n\
+ ちていこ ヘ\n\
+あかまる\n\
+ ・・2ごうエレベ-タ-\n\
+ ちていこ へ\n\
+やじるし・・げんざいち"))
+
+DEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _("\
+ガハハッ!\n\
+ワナにはまったなマリオ!\n\
+また ジャマをしにきた\n\
+ようだが,ともだちからの\n\
+ちゅうこくだ。\n\
+あしもとには きをつけな。"))
+
+DEFINE_DIALOG(DIALOG_091, 1, 3, 30, 200, _("\
+つよいカゼに チュウイ!\n\
+でも,カゼにのると\n\
+フワフワきもちいいです。"))
+
+DEFINE_DIALOG(DIALOG_092, 1, 3, 30, 200, _("\
+いいかげんにしろマリオ!\n\
+いつもいつも,わがはいの\n\
+ジャマをしおって!\n\
+せっかく かいぶつたちと\n\
+たのしくやっているのに。\n\
+スタ-をかえすんだ!\n\
+カベのなかのヤツらには,\n\
+そいつが いるんだよ!!\n\
+ガハハッ!!"))
+
+DEFINE_DIALOG(DIALOG_093, 1, 4, 30, 200, _("\
+アララ!いつのまにきた?\n\
+・・・・・・ムム\n\
+どちらにしろ わがはいの\n\
+ほのおの えじきだっ!\n\
+どれだけスタ-のちからを\n\
+かりても,わがはいには\n\
+かなうわけがないわ!\n\
+ガハハッ!! マリオ!\n\
+キサマの おともだちも\n\
+み-んな カベのなかさ。\n\
+ピ-チちゃんも わたさん\n\
+もんね! いくぞ!!"))
+
+DEFINE_DIALOG(DIALOG_094, 1, 3, 30, 200, _("\
+のぼりにくい さかみちは\n\
+じょそうをつけて\n\
+げんきよく のぼる!\n\
+はばとび おぼえてるか?\n\
+はしりながら Zボタンで\n\
+しゃがんで ジャンプだ!"))
+
+DEFINE_DIALOG(DIALOG_095, 1, 3, 30, 200, _("\
+このように カンバンの\n\
+まえで Bボタンをおすと\n\
+よむことができます。\n\
+ノコノコや どうぶつたち\n\
+と はなすときは,まえに\n\
+たちどまってください。\n\
+このコ-スにあるクッパに\n\
+ぬすまれたパワ-スタ-を\n\
+とりかえしてください。"))
+
+DEFINE_DIALOG(DIALOG_096, 1, 5, 30, 200, _("\
+このあたり みちせまし。\n\
+ゆっくり あるこう!\n\
+だれも ちょうじょうまで\n\
+たどりつかせない。\n\
+フフフ。\n\
+きもちよくねているひとを\n\
+おこすと,とっても\n\
+ふきげんに なります。\n\
+ゆっくりと しずかに\n\
+あるきましょう。フフフ。"))
+
+DEFINE_DIALOG(DIALOG_097, 1, 4, 30, 200, _("\
+たいあたり されたら\n\
+たいあたりで かえせ!\n\
+ほのおのうみにつきおとす\n\
+1たい1のデスマッチだ!"))
+
+DEFINE_DIALOG(DIALOG_098, 1, 3, 95, 200, _("\
+ここまでおいで・・・・\n\
+ケッケッケ・・"))
+
+DEFINE_DIALOG(DIALOG_099, 1, 3, 95, 200, _("\
+クックック・・\n\
+ とりついてやる。\n\
+ ヒッヒッヒ!\n\
+カベも とおりぬけてやる。\n\
+こんなこと できるか?\n\
+ ケッケッケ!"))
+
+DEFINE_DIALOG(DIALOG_100, 1, 4, 95, 200, _("\
+ウッキッキ-\n\
+ ワッキッキ-!\n\
+ ホヨホヨ。\n\
+いっただき-。"))
+
+DEFINE_DIALOG(DIALOG_101, 1, 5, 95, 200, _("\
+ヘッヘッヘッ!\n\
+つかまっちゃいました。\n\
+きにいってたのになあ・・\n\
+かえしますよ。\n\
+ ウッキッキ-!!"))
+
+DEFINE_DIALOG(DIALOG_102, 1, 4, 30, 200, _("\
+テレサの たおしかた\n\
+おしえます。\n\
+はずかしがりやの\n\
+テレサです。\n\
+『めとめがあう』と\n\
+すがたをけします。\n\
+『とうめいのとき』は\n\
+あたりません。\n\
+『せなかをむける』と\n\
+あらわれます。\n\
+うしろにまわって\n\
+なぐると よわい。"))
+
+DEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _("\
+4ほんの はしらのうえに\n\
+たつものに,わたしは,\n\
+このやかたを おとずれる\n\
+しかくを あたえよう。"))
+
+DEFINE_DIALOG(DIALOG_104, 1, 6, 30, 200, _("\
+めのまえのブル-グレ-の\n\
+はんとうめいの ほしは\n\
+『パワ-スタ-のだい』だ。\n\
+あかコインを みつけて\n\
+8まいぜんぶ あつめると,\n\
+スタ-が あらわれる。"))
+
+DEFINE_DIALOG(DIALOG_105, 1, 3, 95, 200, _("\
+じゅんび かんりょう!\n\
+そこの あなに\n\
+はいってみてください。\n\
+4つのたいほうをつかって\n\
+そらのしまにあるスタ-を\n\
+とれるはずです。\n\
+スティックでねらいをつけ,\n\
+Aではっしゃ!とびながら\n\
+『き』にも つかまれます。"))
+
+DEFINE_DIALOG(DIALOG_106, 1, 3, 95, 200, _("\
+じゅんびが\n\
+かんりょう しました!\n\
+それでは,おきをつけて!"))
+
+DEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _("\
+おばけは し な な い\n\
+ケッケッケ・・\n\
+ぶじに でられるかな?"))
+
+DEFINE_DIALOG(DIALOG_108, 1, 3, 95, 200, _("\
+ぼよよ-ん\n\
+おやかたの おでましだ。\n\
+カッカッカ・・"))
+
+DEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _("\
+カラダが とけちゃったヨ。\n\
+いいカラダ いないかな-\n\
+なにか おちつかなくてネ。\n\
+ア- かおがつめたいな-"))
+
+DEFINE_DIALOG(DIALOG_110, 1, 3, 95, 200, _("\
+しょうらい きっと\n\
+りっぱなカラダになろうと\n\
+おもってま-す!\n\
+いいアタマ いないかな-\n\
+もししっていたら そこへ\n\
+つれてってくれませんか?\n\
+まえを すべってくれれば\n\
+うしろをついていきま-す。\n\
+ ヨロシク-!"))
+
+DEFINE_DIALOG(DIALOG_111, 1, 3, 95, 200, _("\
+ヤッリ-!\n\
+きぶんスッキリ!りっぱな\n\
+カラダが みつかった!\n\
+おれいに これあげます!\n\
+もっていって ください。\n\
+とってもアッタカイですよ。"))
+
+DEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _("\
+コインいっぱいあつめよう。\n\
+ちからが かいふくする。\n\
+えのなかの15コ-スでは\n\
+きろくにも のこるよ。\n\
+あかいハ-トにさわっても\n\
+ちからが かいふくする。\n\
+はやく かけぬけるほど\n\
+たくさん かいふくする!"))
+
+DEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _("\
+あか・あお・みどりの\n\
+ブロックには アイテムの\n\
+『ぼうし』が はいってる。\n\
+おしろの どこかにある\n\
+スイッチを ふんでくると\n\
+つかえるように なります。"))
+
+DEFINE_DIALOG(DIALOG_114, 1, 4, 95, 200, _("\
+ああ~ きにいらねえ!\n\
+おれたち,いしのおかげで\n\
+『いえ』も『しろ』も\n\
+できてるって-のに。\n\
+いつも ふみつけるばっか\n\
+りで, ちった-ありがた\n\
+がったら どうなんでぃ!\n\
+おうおうっ!\n\
+おい! そこのニイサン!\n\
+ふらふらしてんじゃね-や。\n\
+きげんが わるいんでぃ!\n\
+おしつぶしちまうぞぉ!!\n\
+もんくが あんなら\n\
+ヒップドロップで この\n\
+バッタンキングさまを\n\
+ふみつけて みやがれっ!"))
+
+DEFINE_DIALOG(DIALOG_115, 1, 5, 95, 200, _("\
+ああ くやしいぞ!\n\
+またまた\n\
+ふみつけられちまった!\n\
+しょせん いしは\n\
+ いしなのか・・・\n\
+おめぇの かちでぇ!\n\
+これ もっていきやがれ!\n\
+ガクッ!"))
+
+DEFINE_DIALOG(DIALOG_116, 1, 5, 95, 200, _("\
+おおっ!いてて! まわり\n\
+こみのはやさは まだまだ\n\
+だが,なかなか つよいな。\n\
+おまえのような けらいが\n\
+ほしかったぞ・・\n\
+はじめの やくそくどおり\n\
+パワ-スタ-をやろう。\n\
+また ワシにあいたいとき\n\
+このスタ-をメニュ-から\n\
+えらぶがよい。さらばじゃ"))
+
+DEFINE_DIALOG(DIALOG_117, 1, 3, 95, 200, _("\
+ジャジャジャ-ン!\n\
+どうだ!\n\
+おどろいたか??・・・\n\
+ムム・・・・ ならば\n\
+もっとオドロカセテやる!\n\
+イクゾ! カカッテコイ!"))
+
+DEFINE_DIALOG(DIALOG_118, 1, 5, 95, 200, _("\
+オオオッ・・・\n\
+オマエ,いがいとツヨイ!\n\
+このヤカタは,きょうから\n\
+オマエのものダッ・・\n\
+ジユウニつかエ。ガクッ!"))
+
+DEFINE_DIALOG(DIALOG_119, 1, 4, 30, 200, _("\
+グウウッ! ちょっと\n\
+ゆだん しておったわ!\n\
+せっかくのケイカクが\n\
+ぶちこわしだ・・・しかし\n\
+パワ-スタ-もピ-チも\n\
+わがはいの てのなかに\n\
+あるのだ。ガハハハ!\n\
+まだまだ まけてはおらん。\n\
+これいじょうスタ-は\n\
+わたさんぞ。きょうはここ\n\
+らで かんべんしてやる!\n\
+おおぉ,おぼえてろよ!!"))
+
+DEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _("\
+グググッワッ!\n\
+こうも かんたんに\n\
+やられるとは,スタ-の\n\
+ちからが たりんのかな?\n\
+わがはいがゼッコ-チョ-\n\
+のときなら,キサマなんか\n\
+てきではない。\n\
+こんかいは ひきわけだっ\n\
+ピ-チに あいたければ,\n\
+とうのてっぺんまで\n\
+のぼってきてみろ。\n\
+まってるぞ!ガハハッ!!"))
+
+DEFINE_DIALOG(DIALOG_121, 1, 5, 30, 200, _("\
+あああっ・・またこんども\n\
+キサマのかちか マリオ!\n\
+キサマはな,わがはいが\n\
+せかいで い-ちばん\n\
+まけたくないヤツなのに!\n\
+せっかく なかまにした\n\
+モンスタ-たちのちからも\n\
+なくなり このままでは\n\
+またまた,わがはいの\n\
+だ-いきらいな\n\
+へいわが もどってしまう\n\
+ではないか! \n\
+ムムムッ・・・・\n\
+しかし,このゲ-ムは\n\
+まだまだ おわらんぞ。\n\
+みんなで あつまって,\n\
+なかよくエンディングでも\n\
+みるんだな!\n\
+\n\
+ガハハハッ!"))
+
+DEFINE_DIALOG(DIALOG_122, 1, 6, 30, 200, _("\
+-やみにとけるおおあな-\n\
+\n\
+みぎ・・・さぎょうリフト\n\
+ ケムリめいろ\n\
+ひだり・・ちていこ"))
+
+DEFINE_DIALOG(DIALOG_123, 1, 5, 30, 200, _("\
+ -メタルのどうくつ-\n\
+\n\
+みぎ・・・ちじょうへ\n\
+ひだり・・メタルスイッチ"))
+
+DEFINE_DIALOG(DIALOG_124, 1, 5, 30, 200, _("\
+-さぎょうようリフト-\n\
+\n\
+ キケン!!\n\
+ そうさほうほうを\n\
+ よく よむこと。\n\
+ふんだ,やじるしのほうに\n\
+すすみつづけます。\n\
+\n\
+おりると もとのばしょに\n\
+もどります。"))
+
+DEFINE_DIALOG(DIALOG_125, 1, 5, 30, 200, _("\
+-ケムリめいろ・でぐち-\n\
+\n\
+キケン! ヘイサちゅう。\n\
+ここからは はいれません。"))
+
+DEFINE_DIALOG(DIALOG_126, 1, 6, 30, 200, _("\
+・1ごうエレベ-タ-・\n\
+\n\
+うえ・・やみのおおあな\n\
+みぎ・・さぎょうリフト\n\
+ ケムリめいろ"))
+
+DEFINE_DIALOG(DIALOG_127, 1, 5, 30, 200, _("\
+ -ちていこ-\n\
+\n\
+みぎ・・メタルのどうくつ\n\
+ひだり・・はいこう\n\
+ へいさちゅう\n\
+おとなしい かいりゅう\n\
+ドッシ-が すんでます\n\
+せなかでヒップドロップを\n\
+すると,あたまをさげます。\n\
+エサにならないでください。"))
+
+DEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _("\
+おっとっと!じょうがいに\n\
+なげるのは はんそくだ!\n\
+リングのうえでフェア-に\n\
+たたかおうでは ないか!"))
+
+DEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _("\
+とうめいスイッチの\n\
+ コ-スへ ようこそ!\n\
+あおいスイッチを ふむと\n\
+すべての あおブロックが\n\
+『じったい』になる。\n\
+とうめいぼうしで\n\
+とうめいに なると\n\
+いろんな ものを\n\
+とおりぬけられます。\n\
+まずは おためしください。"))
+
+DEFINE_DIALOG(DIALOG_130, 1, 5, 30, 200, _("\
+メタルのスイッチの\n\
+ コ-スヘ ようこそ!\n\
+みどりのスイッチを\n\
+ふめば みどりブロックが\n\
+『じったい』になる。\n\
+メタルのぼうしで\n\
+メタルになれば,\n\
+みずのなかでも\n\
+あるけてしまう。\n\
+まずは おためしください。"))
+
+DEFINE_DIALOG(DIALOG_131, 1, 5, 30, 200, _("\
+はねのスイッチの\n\
+ コ-スヘ ようこそ!\n\
+にじのリングのまんなかの\n\
+とうの うえにある\n\
+あかいスイッチを ふもう。\n\
+このせかいの すべての\n\
+あかいブロックが\n\
+『じったい』になる。\n\
+3だんとびで そらへとび,\n\
+Zボタンで ランディング。\n\
+そうさは ひこうきの\n\
+そうじゅうかん のように\n\
+まえにたおすと『さがる』\n\
+てまえにひくと『あがる』\n\
+まずは おためしを!"))
+
+DEFINE_DIALOG(DIALOG_132, 1, 5, 30, 200, _("\
+ダメダメ!\n\
+それは きていいはんです。\n\
+『しっか-く!』\n\
+こんどはフェア-に\n\
+いきましょう。"))
+
+DEFINE_DIALOG(DIALOG_133, 1, 5, 30, 200, _("\
+ああよかった。\n\
+きてくれたんですね!\n\
+ピ-チひめも ぼくたちも\n\
+みんな『カベ』のなかに\n\
+とじこめられちゃいました。\n\
+クッパは パワ-スタ-を\n\
+つかって『カベ』や『え』\n\
+のなかにカイブツのくにを\n\
+つくろうと しています。\n\
+スタ-をとりかえして!\n\
+『スタ-』をいくつか\n\
+とりかえしたら,クッパの\n\
+とじたドアが ひらきます。\n\
+1かいの 4つのへやを\n\
+さがし,すすんでください。\n\
+まずは,ヒダリがわの\n\
+ボムへいの『え』の\n\
+へやに はいれます。\n\
+このへやだけは クッパの\n\
+ふういんを のがれました。\n\
+8まい たまったら\n\
+おおきな ほしのドアを\n\
+ひらくことが できます。\n\
+きっと ピ-チひめは\n\
+そのなかです!"))
+
+DEFINE_DIALOG(DIALOG_134, 1, 4, 30, 200, _("\
+コ-スのはじめにえらべる\n\
+スタ-のなまえは,\n\
+つぎに みつけられそうな\n\
+スタ-のヒントです。\n\
+ヒントにでてくる\n\
+じゅんばんと,ちがう\n\
+スタ-を とりもどしても\n\
+かまわないですよ。\n\
+『スタ-』や『てき』や\n\
+『アイテム』のなかには\n\
+そのスタ-をえらばないと\n\
+でないものも あります。\n\
+いくつか とりかえしたら\n\
+つぎのコ-スのドアへと\n\
+すすんでください。みんな\n\
+たすけを まっています!"))
+
+DEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _("\
+クッパがスタ-をもって\n\
+いっちゃいました。\n\
+ここにかくれてみてました。\n\
+スタ-はひとつのコ-スに\n\
+6こあるはずです。\n\
+でも アイテムスイッチを\n\
+ぜんぶおしてからでないと\n\
+とれないスタ-もあります。\n\
+どんどん さきのコ-スへ\n\
+すすんでください。\n\
+スタ-トがめんでスタ-の\n\
+なまえが みられます。\n\
+むかしのてきに あいたい\n\
+とき,そのほしをえらぶと\n\
+またあえる てきもいます。"))
+
+DEFINE_DIALOG(DIALOG_136, 1, 4, 30, 200, _("\
+ワァすごい!もうそんなに\n\
+スタ-をもってるんですね。\n\
+もうすぐ ぼくらのことも\n\
+たすけだしてくれますね!\n\
+クッパたちは ひっしです。\n\
+きをつけてください。\n\
+コインをとると ちからが\n\
+かいふくします。\n\
+あかコインは2まいぶん。\n\
+あおコインは5まいぶん。\n\
+あおコインのブロックを\n\
+こわすと でてきます。\n\
+たかいところからおちても\n\
+ちじょうの ちかくで\n\
+『ヒップドロップ』すると\n\
+ダメ-ジを ふせげます。"))
+
+DEFINE_DIALOG(DIALOG_137, 1, 5, 30, 200, _("\
+パワ-スタ-が もどって,\n\
+おしろのちからが\n\
+かいふく してきました!\n\
+ありがとう。 クッパは\n\
+このさきに にげました。\n\
+そうだ!コインをあつめて\n\
+ますか?15のコ-スでは\n\
+コイン100まい とると\n\
+スペシャルスタ-が\n\
+あらわれます。"))
+
+DEFINE_DIALOG(DIALOG_138, 1, 5, 30, 200, _("\
+・2ごうエレベ-タ-・\n\
+した・・ちていこ\n\
+ひだり・・やみのおおあな\n\
+みぎ・・・ケムリめいろ\n\
+ へいさちゅう!"))
+
+DEFINE_DIALOG(DIALOG_139, 1, 6, 30, 200, _("\
+このうえ・・じどうリフト\n\
+じどうリフトは のると\n\
+じどうてきに うごきだし,\n\
+コ-スにそってすすみます。\n\
+おりて ほうっておくと\n\
+きえてしまいます。"))
+
+DEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _("\
+-そうさリフトじょう-\n\
+みぎ・・・ケムリめいろ\n\
+ いりぐち\n\
+ひだり・・やみのおおあな\n\
+ 1ごうエレベ-タ-へ\n\
+やじるし・・げんざいち"))
+
+DEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _("\
+ぬすまれたパワ-スタ-を\n\
+とりかえした!\n\
+クッパが とじてしまった\n\
+ドアを あけられるように\n\
+なったぞ!\n\
+2かいの ピ-チのへや,\n\
+1かいの とりでのへや,\n\
+2つのへやのドアがひらく。\n\
+つぎのスタ-をとりかえし\n\
+おしろのみんなをすくえ!\n\
+モンスタ-たちはどんどん\n\
+ちからを つけてきている。\n\
+いそげ マリオ!!\n\
+おしろの いちだいじだ!"))
+
+DEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _("\
+3このスタ-を\n\
+とりもどしたぞ! \n\
+そして スタ-に『3』の\n\
+すうじが ついたドアを\n\
+ひらけるように なった!\n\
+4つのへやの せかいを\n\
+じゆうに いききできる。\n\
+あたらしいカイブツたちは\n\
+もっと てごわいぞ。\n\
+きをつけて すすめ!"))
+
+DEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _("\
+8このパワ-スタ-を\n\
+ぶじ とりもどし,\n\
+おおきな ほしのドアが\n\
+ひらくようになった。\n\
+クッパは すぐそこだ!\n\
+ピ-チのこえがきこえる。"))
+
+DEFINE_DIALOG(DIALOG_144, 1, 5, 150, 200, _("\
+30この パワ-スタ-を\n\
+とりもどし,\n\
+おおきなスタ-のドアが\n\
+ひらくようになった!\n\
+ここですこし てんけんだ。\n\
+2ほんのはしらを ヒップ\n\
+ドロップしてみたか?\n\
+ぼうしはなくしてないか?\n\
+さばくで なくしたなら\n\
+ハゲたかジャンゴをさがせ。\n\
+クッパは うみから\n\
+このちかにせんにゅう\n\
+したらしい。\n\
+とうとうやつを\n\
+おいつめたぞ!"))
+
+DEFINE_DIALOG(DIALOG_145, 1, 4, 150, 200, _("\
+50このパワ-スタ-を\n\
+とりもどした!\n\
+3かいへの ほしのドアが\n\
+ひらくぞ!\n\
+クッパはすぐそこだ!\n\
+アイテムスイッチは\n\
+ぜんぶおしてきたか?\n\
+かくにん しておこう。\n\
+あか・あお・みどりの\n\
+3つのアイテムブロックは\n\
+とてもだいじな みかただ。\n\
+さあ『3かい』へすすめ!"))
+
+DEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _("\
+70このパワ-スタ-を\n\
+とりもどした!\n\
+はてしない かいだんの\n\
+ナゾがとかれた。\n\
+クッパはかなりあせってる。\n\
+さあ!さいごのたたかいだ。"))
+
+DEFINE_DIALOG(DIALOG_147, 1, 5, 30, 200, _("\
+あか・あお・みどりの\n\
+『アイテムブロック』を\n\
+つかっていますか?\n\
+スタ-をとりもどすと\n\
+いりぐちがみつかる,\n\
+おしろのかくしコ-スで,\n\
+3つのスイッチを おすと\n\
+そのいろのブロックが\n\
+『じったい』となり,\n\
+つかえるようになります。\n\
+あかは はねのぼうし\n\
+みどりは メタルのぼうし\n\
+あおは とうめいのぼうし\n\
+\n\
+とてもつよい みかたです。"))
+
+DEFINE_DIALOG(DIALOG_148, 1, 5, 30, 200, _("\
+このさきスノ-マンのやま\n\
+だれも はいるな!\n\
+アイスブロックシュ-タ-\n\
+を 3だんとびなどして\n\
+とびこえては イケマセン。\n\
+つめたい いけでは\n\
+はやく たいりょくが\n\
+へります!\n\
+かいふくも しません。\n\
+ スノ-マン"))
+
+DEFINE_DIALOG(DIALOG_149, 1, 5, 30, 200, _("\
+ピ-チのかくれスライダ-\n\
+へ ようこそ!\n\
+ここには クッパにみつけ\n\
+られなかった おしろの\n\
+かくれスタ-がのこってる。\n\
+さかを すべりはじめたら\n\
+スティックまえで かそく,\n\
+うしろで げんそくできる。\n\
+はやくすべれば スタ-が\n\
+みつかるはずだ!"))
+
+DEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _("\
+あ--ん,だれだい?\n\
+とつぜん ビショぬれに\n\
+なっちゃいました!\n\
+キチンと てんじょう\n\
+なおしてもらうです。"))
+
+DEFINE_DIALOG(DIALOG_151, 1, 4, 30, 200, _("\
+みずをかけられた つぎは\n\
+ふんづけられました。\n\
+もう ほんと-に\n\
+おこったです!"))
+
+DEFINE_DIALOG(DIALOG_152, 1, 5, 30, 200, _("\
+いててて!!!\n\
+らんぼうなひとだなあ。\n\
+なぜかイライラしてたけど,\n\
+まあ,そらがみえるのも\n\
+わるくはないです。\n\
+よるには いっぱいほしが\n\
+みえるしね!\n\
+このほしは かえします。\n\
+あ-,なんだか きもちが\n\
+おちついてきたです。"))
+
+DEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _("\
+わしの カラダに\n\
+のぼっては いか-ん!\n\
+そういうヤツは みんな\n\
+ふきっとばしちまうぞ-!"))
+
+DEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _("\
+ぼうしを なくすと\n\
+ダメ-ジがおおくなるので\n\
+だいじに してください。\n\
+なくしたら,なくした\n\
+コ-スで みつかります。\n\
+アア-どうしよう・・・\n\
+ピ-チひめは,カベに\n\
+ひきこまれたままだし。\n\
+はやく クッパを\n\
+やっつけてください。\n\
+ああ,そうだ!\n\
+えのほかにカベのなかにも\n\
+モンスタ-の せかいが\n\
+あります。\n\
+よ-く,しらべてください。"))
+
+DEFINE_DIALOG(DIALOG_155, 1, 5, 30, 200, _("\
+パワ-スタ-のおかげで\n\
+おしろに,げんきが\n\
+もどってきました。\n\
+クッパなんか\n\
+おいはらってください。\n\
+おやくに たつなら\n\
+おしろの はなしをします。\n\
+『カガミのへや』では\n\
+カガミにうつらないものを\n\
+よくみてください。\n\
+みずのまちへ いくときは,\n\
+『え』にとびこむ たかさ\n\
+によって,まちをすっかり\n\
+みずびたしに できます。"))
+
+DEFINE_DIALOG(DIALOG_156, 1, 4, 30, 200, _("\
+とけいがとても へんです。\n\
+とけいに はいるとき,\n\
+ながいはりの ばしょに\n\
+ちゅういしてください!"))
+
+DEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _("\
+ながれる『すな』に\n\
+ながされないように\n\
+きをつけて!\n\
+からだが しずんで\n\
+ジャンプできません。\n\
+あたままでしずむと\n\
+いきが できません。\n\
+くらいいろの ところは\n\
+とくに キケン!!\n\
+そこなしの じごくです!"))
+
+DEFINE_DIALOG(DIALOG_158, 1, 5, 30, 200, _("\
+ジャンプのテクニック\n\
+その1\n\
+タイミングよく,\n\
+れんぞくでジャンプすると\n\
+だんだん たかくとべる。\n\
+スピ-ドがはやいほど\n\
+たかく とびあがれる。\n\
+れんぞく3かいめに\n\
+たかくとべるわざを\n\
+『3だんとび』といいます。\n\
+その2 カベにむかって\n\
+ジャンプして,そこから\n\
+もういちどジャンプできる。\n\
+『カベキック』といって,\n\
+たかいところにのぼれます。"))
+
+DEFINE_DIALOG(DIALOG_159, 1, 5, 30, 200, _("\
+ジャンプのテクニック\n\
+その3 Zボタンわざ\n\
+たちどまって しゃがんで\n\
+から ジャンプすると,\n\
+『バックちゅう』できます。\n\
+はやくはしりながら\n\
+しゃがんでジャンプすると\n\
+とおくまで とべる。\n\
+『はばとび』です。"))
+
+DEFINE_DIALOG(DIALOG_160, 1, 4, 30, 200, _("\
+はやく はしりながら\n\
+Bボタンをおすと\n\
+『ボディアタック』が\n\
+できます。\n\
+おなかで\n\
+すべっているあいだは,\n\
+A・Bどちらのボタンでも\n\
+おきあがることができます。"))
+
+DEFINE_DIALOG(DIALOG_161, 1, 5, 30, 200, _("\
+いや- すごいです!!\n\
+ここにいれば あえると\n\
+きいてたけど,ほんとに\n\
+あえてしまいました!!\n\
+でんごんが あります。\n\
+『これで,おしまいですが\n\
+もっとあそんでほしいので\n\
+つまらないものですが\n\
+うけとって ください。』\n\
+-マリオ・スタッフより-"))
+
+DEFINE_DIALOG(DIALOG_162, 1, 5, 30, 200, _("\
+イテテ あいかわらず\n\
+らんぼうなひとだな。\n\
+このスタ-は べつに\n\
+かくしてたわけじゃ\n\
+ないんだってば!\n\
+かえせば いいんでしょ。\n\
+はなしてくれたら\n\
+スタ-ぐらい かえすから。\n\
+これで ほんとに\n\
+さいごだよ! ホイ!"))
+
+DEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _("\
+あああっ・・またこんども\n\
+キサマのかちか マリオ!\n\
+キサマはな,わがはいが\n\
+せかいで い-ちばん\n\
+まけたくないヤツなのに!\n\
+ほんとうに やくにたたぬ\n\
+カイブツどもだ!\n\
+キサマごときに\n\
+パワ-スタ-をぜ-んぶ\n\
+とりもどされるとは・・・\n\
+ぜんぶで『120こ』も\n\
+あったのか!?\n\
+『しろ』に わがはいも\n\
+きづかなかったスタ-が\n\
+のこって おったとは・・\n\
+またまた わがはいの\n\
+だ-いきらいな へいわが,\n\
+もどってしまうではないか。\n\
+わがはいは くやし-ぞ!\n\
+きょうは ひきあげてやる。\n\
+だが,こんどあうときは\n\
+ぜ-ったい まけないぞ!\n\
+3Dスティックをみがいて\n\
+まってろよ!\n\
+ ガハハッ!"))
+
+DEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _("\
+しばらく やすんでたので\n\
+こんなにみごとに,\n\
+ふとっちゃいました。\n\
+ひさしぶりに やります?\n\
+では! いつものように,\n\
+レディ-!\n\
+\n\
+ ゴ-!! やめとく"))
+
+DEFINE_DIALOG(DIALOG_165, 1, 4, 30, 200, _("\
+このクイの まわりを\n\
+クルクルまわって\n\
+めをまわしても\n\
+しりません。"))
+
+DEFINE_DIALOG(DIALOG_166, 1, 6, 30, 200, _("\
+きょうは トレ-ニングで\n\
+るすに してるッス!\n\
+オイラに ちょ-せん\n\
+したいひとは,またこんど\n\
+くるといいッス!\n\
+ ノコノコ"))
+
+DEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _("\
+『ピ-チの おしろ』\n\
+ すぐそこ\n\
+Aボタン『ジャンプ』\n\
+Zボタン『しゃがむ』\n\
+Bボタン『カンバンよむ』\n\
+ 『パンチ』\n\
+ 『ものをもつ』\n\
+もういちどおす『なげる』"))
+
+DEFINE_DIALOG(DIALOG_168, 1, 4, 30, 200, _("\
+ア-ン,またまた \n\
+ふんづけられちゃいました。\n\
+ハナチャン かんぜんに\n\
+おこったです!"))
+
+DEFINE_DIALOG(DIALOG_169, 1, 5, 30, 200, _("\
+かってに はいるな!\n\
+この『どうくつ』に\n\
+むだんで はいるものには,\n\
+わざわいが おとずれる!\n\
+ --せんちょうより"))
diff --git a/text/jp/level.c.in b/text/jp/level.c.in
@@ -1,169 +0,0 @@
-// level names
-// 0x0200E294
-static const u8 level_name_01[] = {
- _(" 1 ボムへいの せんじょう")
-};
-
-
-// 0x0200E2A8
-static const u8 level_name_02[] = {
- _(" 2 バッタンキングの とりで")
-};
-
-
-// 0x0200E2BC
-static const u8 level_name_03[] = {
- _(" 3 かいぞくの いりえ")
-};
-
-
-// 0x0200E2CC
-static const u8 level_name_04[] = {
- _(" 4 さむいさむい マウンテン")
-};
-
-
-// 0x0200E2DC
-static const u8 level_name_05[] = {
- _(" 5 テレサの ホラ-ハウス")
-};
-
-
-// 0x0200E2EC
-static const u8 level_name_06[] = {
- _(" 6 やみにとける どうくつ")
-};
-
-
-// 0x0200E2FC
-static const u8 level_name_07[] = {
- _(" 7 ファイアバブル ランド")
-};
-
-
-// 0x0200E310
-static const u8 level_name_08[] = {
- _(" 8 あっちっち さばく")
-};
-
-
-// 0x0200E320
-static const u8 level_name_09[] = {
- _(" 9 ウォ-タ- ランド")
-};
-
-
-// 0x0200E330
-static const u8 level_name_10[] = {
- _("10 スノ-マンズ ランド")
-};
-
-
-// 0x0200E340
-static const u8 level_name_11[] = {
- _("11 みずびたシティ-")
-};
-
-
-// 0x0200E350
-static const u8 level_name_12[] = {
- _("12 たかいたかいマウンテン")
-};
-
-
-// 0x0200E360
-static const u8 level_name_13[] = {
- _("13 ちびでか アイランド")
-};
-
-
-// 0x0200E374
-static const u8 level_name_14[] = {
- _("14 チックタックロック")
-};
-
-
-// 0x0200E384
-static const u8 level_name_15[] = {
- _("15 レインボ- クル-ズ")
-};
-
-
-// 0x0200E394
-static const u8 level_name_16[] = {
- _(" やみの せかいの クッパ")
-};
-
-
-// 0x0200E3A8
-static const u8 level_name_17[] = {
- _(" ほのおの うみの クッパ")
-};
-
-
-// 0x0200E3BC
-static const u8 level_name_18[] = {
- _(" てんくうの たたかい!")
-};
-
-
-// 0x0200E3CC
-static const u8 level_name_19[] = {
- _(" ピ-チのかくれスライダ-")
-};
-
-
-// 0x0200E3E0
-static const u8 level_name_20[] = {
- _(" メタルスイッチの たき")
-};
-
-
-// 0x0200E3F0
-static const u8 level_name_21[] = {
- _(" はばたけ!はねスイッチへ")
-};
-
-
-// 0x0200E404
-static const u8 level_name_22[] = {
- _(" おほりのとうめいスイッチ")
-};
-
-
-// 0x0200E414
-static const u8 level_name_23[] = {
- _(" にじ かける はねマリオ")
-};
-
-
-// 0x0200E428
-static const u8 level_name_24[] = {
- _(" おさかなと いっしょ")
-};
-
-
-// 0x0200E438
-static const u8 level_name_25[] = {
- _(" おいしいケ-キ")
-};
-
-
-// 0x0200E444
-static const u8 level_name_castle_secret_stars[] = {
- _(" おしろのかくれスタ-")
-};
-
-
-// level name table
-// 0x0200E454
-const u8 *const seg2_level_name_table[] = {
- level_name_01, level_name_02, level_name_03, level_name_04,
- level_name_05, level_name_06, level_name_07, level_name_08,
- level_name_09, level_name_10, level_name_11, level_name_12,
- level_name_13, level_name_14, level_name_15, level_name_16,
- level_name_17, level_name_18, level_name_19, level_name_20,
- level_name_21, level_name_22, level_name_23, level_name_24,
- level_name_25, level_name_castle_secret_stars, 0x0,
-};
-
diff --git a/text/jp/star.c.in b/text/jp/star.c.in
@@ -1,612 +0,0 @@
-// act_name_ Names
-// 0x0200E4C0
-static const u8 act_name_00[] = {
- _("やまのうえの ボムキング")
-};
-
-
-// 0x0200E4D0
-static const u8 act_name_01[] = {
- _("はくねつ ノコノコレ-ス")
-};
-
-
-// 0x0200E4E0
-static const u8 act_name_02[] = {
- _("そらのしままで ぶっとべ")
-};
-
-
-// 0x0200E4F0
-static const u8 act_name_03[] = {
- _("8まいの あかコイン")
-};
-
-
-// 0x0200E4FC
-static const u8 act_name_04[] = {
- _("そらにはばたけ はねマリオ")
-};
-
-
-// 0x0200E50C
-static const u8 act_name_05[] = {
- _("ワンワンの いぬごやで")
-};
-
-
-// 0x0200E51C
-static const u8 act_name_06[] = {
- _("いかりのバッタン キング")
-};
-
-
-// 0x0200E52C
-static const u8 act_name_07[] = {
- _("とりでの てっぺんへ")
-};
-
-
-// 0x0200E53C
-static const u8 act_name_08[] = {
- _("たいほうで ひとっとび")
-};
-
-
-// 0x0200E54C
-static const u8 act_name_09[] = {
- _("うきしまの 8まいコイン")
-};
-
-
-// 0x0200E55C
-static const u8 act_name_10[] = {
- _("とりかごへ スト-ン")
-};
-
-
-// 0x0200E568
-static const u8 act_name_11[] = {
- _("たいほうで ぶっこわせ!")
-};
-
-
-// 0x0200E578
-static const u8 act_name_12[] = {
- _("ちんぼつせんの おたから")
-};
-
-
-// 0x0200E588
-static const u8 act_name_13[] = {
- _("でてこい きょだいウツボ")
-};
-
-
-// 0x0200E598
-static const u8 act_name_14[] = {
- _("かいていどうくつの おたから")
-};
-
-
-// 0x0200E5A8
-static const u8 act_name_15[] = {
- _("うかんだフネの あかコイン")
-};
-
-
-// 0x0200E5B8
-static const u8 act_name_16[] = {
- _("いわのはしらへ ひとっとび")
-};
-
-
-// 0x0200E5C8
-static const u8 act_name_17[] = {
- _("ふきだす みずを くぐれ")
-};
-
-
-// 0x0200E5D8
-static const u8 act_name_18[] = {
- _("ス-パ-スノ-スライダ-")
-};
-
-
-// 0x0200E5E8
-static const u8 act_name_19[] = {
- _("まいごの こペンギン")
-};
-
-
-// 0x0200E5F8
-static const u8 act_name_20[] = {
- _("ペンギン チャンピオンレ-ス")
-};
-
-
-// 0x0200E60C
-static const u8 act_name_21[] = {
- _("すべって 8まいあかコイン")
-};
-
-
-// 0x0200E61C
-static const u8 act_name_22[] = {
- _("ゴロゴロ ゆきダルマ")
-};
-
-
-// 0x0200E62C
-static const u8 act_name_23[] = {
- _("かくれ ス-パ- カベキック")
-};
-
-
-// 0x0200E640
-static const u8 act_name_24[] = {
- _("おやかたテレサを さがせ")
-};
-
-
-// 0x0200E650
-static const u8 act_name_25[] = {
- _("テレサの メリ-ゴ-ランド")
-};
-
-
-// 0x0200E660
-static const u8 act_name_26[] = {
- _("ほんだなオバケの ナゾ")
-};
-
-
-// 0x0200E670
-static const u8 act_name_27[] = {
- _("8まいコインは どこだ")
-};
-
-
-// 0x0200E680
-static const u8 act_name_28[] = {
- _("バルコニ-の ボステレサ")
-};
-
-
-// 0x0200E690
-static const u8 act_name_29[] = {
- _("かくしべやの おおめだま")
-};
-
-
-// 0x0200E6A0
-static const u8 act_name_30[] = {
- _("ドッシ-のいる ちていこ")
-};
-
-
-// 0x0200E6B0
-static const u8 act_name_31[] = {
- _("そうさリフトの あかコイン")
-};
-
-
-// 0x0200E6C0
-static const u8 act_name_32[] = {
- _("メタルで ダッシュ")
-};
-
-
-// 0x0200E6CC
-static const u8 act_name_33[] = {
- _("ケムリめいろを ぬけて")
-};
-
-
-// 0x0200E6D8
-static const u8 act_name_34[] = {
- _("ケムリめいろの ひじょうぐち")
-};
-
-
-// 0x0200E6EC
-static const u8 act_name_35[] = {
- _("ゴロゴロいわの ひみつ")
-};
-
-
-// 0x0200E6FC
-static const u8 act_name_36[] = {
- _("おとせ ボスどんけつ")
-};
-
-
-// 0x0200E70C
-static const u8 act_name_37[] = {
- _("たたかえ!どんけつたい")
-};
-
-
-// 0x0200E71C
-static const u8 act_name_38[] = {
- _("15パズルの 8まいコイン")
-};
-
-
-// 0x0200E72C
-static const u8 act_name_39[] = {
- _("コロコロ まるたわたり")
-};
-
-
-// 0x0200E738
-static const u8 act_name_40[] = {
- _("かざんの パワ-スタ-")
-};
-
-
-// 0x0200E748
-static const u8 act_name_41[] = {
- _("かざんの リフトツア-")
-};
-
-
-// 0x0200E758
-static const u8 act_name_42[] = {
- _("いたずらハゲたか ジャンゴ")
-};
-
-
-// 0x0200E76C
-static const u8 act_name_43[] = {
- _("ピラミッドの てっぺんで")
-};
-
-
-// 0x0200E780
-static const u8 act_name_44[] = {
- _("きょだいピラミッドの ないぶ")
-};
-
-
-// 0x0200E794
-static const u8 act_name_45[] = {
- _("4つのはしらに たつものへ")
-};
-
-
-// 0x0200E7A4
-static const u8 act_name_46[] = {
- _("とびまわれ 8まいコイン")
-};
-
-
-// 0x0200E7B4
-static const u8 act_name_47[] = {
- _("きょだいピラミッドのナゾ")
-};
-
-
-// 0x0200E7C8
-static const u8 act_name_48[] = {
- _("クッパの せんすいかん")
-};
-
-
-// 0x0200E7D8
-static const u8 act_name_49[] = {
- _("うずしおの たからばこ")
-};
-
-
-// 0x0200E7E8
-static const u8 act_name_50[] = {
- _("にげたクッパの あかコイン")
-};
-
-
-// 0x0200E7F8
-static const u8 act_name_51[] = {
- _("ふきだす みずを くぐれ")
-};
-
-
-// 0x0200E808
-static const u8 act_name_52[] = {
- _("マンタの おくりもの")
-};
-
-
-// 0x0200E814
-static const u8 act_name_53[] = {
- _("ボウシが そろったら")
-};
-
-
-// 0x0200E824
-static const u8 act_name_54[] = {
- _("おおゆきダルマの おでこ")
-};
-
-
-// 0x0200E834
-static const u8 act_name_55[] = {
- _("こおりのくにの どんけつ")
-};
-
-
-// 0x0200E844
-static const u8 act_name_56[] = {
- _("こおりの オブジェ")
-};
-
-
-// 0x0200E850
-static const u8 act_name_57[] = {
- _("つめたい いけを こえて")
-};
-
-
-// 0x0200E860
-static const u8 act_name_58[] = {
- _("コウラにのって あかコイン")
-};
-
-
-// 0x0200E870
-static const u8 act_name_59[] = {
- _("フワフワさんの おうち")
-};
-
-
-// 0x0200E87C
-static const u8 act_name_60[] = {
- _("ビリビリの まめリフト")
-};
-
-
-// 0x0200E88C
-static const u8 act_name_61[] = {
- _("トップオブ ザ シティ-")
-};
-
-
-// 0x0200E89C
-static const u8 act_name_62[] = {
- _("あさせと そらのシ-クレット")
-};
-
-
-// 0x0200E8AC
-static const u8 act_name_63[] = {
- _("いそげ!かなあみエレベ-タ-")
-};
-
-
-// 0x0200E8C0
-static const u8 act_name_64[] = {
- _("ダウンタウンの あかコイン")
-};
-
-
-// 0x0200E8D0
-static const u8 act_name_65[] = {
- _("ダウンタウンを かけろ")
-};
-
-
-// 0x0200E8E0
-static const u8 act_name_66[] = {
- _("たかいたかい やまのうえ")
-};
-
-
-// 0x0200E8F0
-static const u8 act_name_67[] = {
- _("いたずらザル ウッキィのオリ")
-};
-
-
-// 0x0200E904
-static const u8 act_name_68[] = {
- _("おばけキノコの あかコイン")
-};
-
-
-// 0x0200E914
-static const u8 act_name_69[] = {
- _("マウンテン スライダ-")
-};
-
-
-// 0x0200E924
-static const u8 act_name_70[] = {
- _("はしのうえから みわたせば")
-};
-
-
-// 0x0200E934
-static const u8 act_name_71[] = {
- _("ぶっとべ はなれキノコへ")
-};
-
-
-// 0x0200E944
-static const u8 act_name_72[] = {
- _("きょだいパックンフラワ-")
-};
-
-
-// 0x0200E954
-static const u8 act_name_73[] = {
- _("デカじまの てっぺんで")
-};
-
-
-// 0x0200E964
-static const u8 act_name_74[] = {
- _("ノコノコ リタ-ンマッチ")
-};
-
-
-// 0x0200E974
-static const u8 act_name_75[] = {
- _("チビじまの 5シ-クレット")
-};
-
-
-// 0x0200E984
-static const u8 act_name_76[] = {
- _("ハナチャンの あかコイン")
-};
-
-
-// 0x0200E994
-static const u8 act_name_77[] = {
- _("イカリの ハナチャン")
-};
-
-
-// 0x0200E9A0
-static const u8 act_name_78[] = {
- _("グルグル かごのなかへ")
-};
-
-
-// 0x0200E9B0
-static const u8 act_name_79[] = {
- _("ふりこの へや")
-};
-
-
-// 0x0200E9B8
-static const u8 act_name_80[] = {
- _("チックタックはりの うえ")
-};
-
-
-// 0x0200E9C8
-static const u8 act_name_81[] = {
- _("えっへん てっぺん ドッスン")
-};
-
-
-// 0x0200E9DC
-static const u8 act_name_82[] = {
- _("つきだしを のりこえて")
-};
-
-
-// 0x0200E9EC
-static const u8 act_name_83[] = {
- _("00ふんの あかコイン")
-};
-
-
-// 0x0200E9F8
-static const u8 act_name_84[] = {
- _("にじを わたる ふね")
-};
-
-
-// 0x0200EA04
-static const u8 act_name_85[] = {
- _("てんくうの おやしき")
-};
-
-
-// 0x0200EA10
-static const u8 act_name_86[] = {
- _("タテめいろの あかコイン")
-};
-
-
-// 0x0200EA20
-static const u8 act_name_87[] = {
- _("カゼきる きょだいブランコ")
-};
-
-
-// 0x0200EA34
-static const u8 act_name_88[] = {
- _("おおぞら アスレチック")
-};
-
-
-// 0x0200EA44
-static const u8 act_name_89[] = {
- _("にじの かなたの しま")
-};
-
-
-// 0x0200EA54
-static const u8 act_name_90[] = {
- _("おしろのかくれスタ-")
-};
-
-
-// 0x0200EA60
-static const u8 act_name_91[] = {
- _("100まいコインの スタ-")
-};
-
-
-// 0x0200EA70
-static const u8 act_name_92[] = {
- _("マウンテンのへやが ひらく!")
-};
-
-
-// 0x0200EA80
-static const u8 act_name_93[] = {
- _("みずとゆき2つのへやが ひらく!")
-};
-
-
-// 0x0200EA94
-static const u8 act_name_94[] = {
- _("おおきなほしの ドアがひらく!")
-};
-
-
-// 0x0200EAA8
-static const u8 act_name_95[] = {
- _("クッパへの とびらがひらく!")
-};
-
-
-// 0x0200EABC
-static const u8 act_name_96[] = {
- _("3がいへの とびらがひらく!")
-};
-
-
-// act names table 0x0200EAD0
-const u8 *const seg2_act_name_table[] = {
- act_name_00, act_name_01, act_name_02, act_name_03,
- act_name_04, act_name_05, act_name_06, act_name_07,
- act_name_08, act_name_09, act_name_10, act_name_11,
- act_name_12, act_name_13, act_name_14, act_name_15,
- act_name_16, act_name_17, act_name_18, act_name_19,
- act_name_20, act_name_21, act_name_22, act_name_23,
- act_name_24, act_name_25, act_name_26, act_name_27,
- act_name_28, act_name_29, act_name_30, act_name_31,
- act_name_32, act_name_33, act_name_34, act_name_35,
- act_name_36, act_name_37, act_name_38, act_name_39,
- act_name_40, act_name_41, act_name_42, act_name_43,
- act_name_44, act_name_45, act_name_46, act_name_47,
- act_name_48, act_name_49, act_name_50, act_name_51,
- act_name_52, act_name_53, act_name_54, act_name_55,
- act_name_56, act_name_57, act_name_58, act_name_59,
- act_name_60, act_name_61, act_name_62, act_name_63,
- act_name_64, act_name_65, act_name_66, act_name_67,
- act_name_68, act_name_69, act_name_70, act_name_71,
- act_name_72, act_name_73, act_name_74, act_name_75,
- act_name_76, act_name_77, act_name_78, act_name_79,
- act_name_80, act_name_81, act_name_82, act_name_83,
- act_name_84, act_name_85, act_name_86, act_name_87,
- act_name_88, act_name_89, act_name_90, act_name_91,
- act_name_92, act_name_93, act_name_94, act_name_95,
- act_name_96, 0x0,
-};
-
diff --git a/text/us/courses.h b/text/us/courses.h
@@ -0,0 +1,80 @@
+COURSE_ACTS(COURSE_BOB, _(" 1 BOB-OMB BATTLEFIELD"),
+ _("BIG BOB-OMB ON THE SUMMIT") , _("FOOTRACE WITH KOOPA THE QUICK") , _("SHOOT TO THE ISLAND IN THE SKY"),
+ _("FIND THE 8 RED COINS") , _("MARIO WINGS TO THE SKY") , _("BEHIND CHAIN CHOMP'S GATE"))
+
+COURSE_ACTS(COURSE_WF, _(" 2 WHOMP'S FORTRESS"),
+ _("CHIP OFF WHOMP'S BLOCK") , _("TO THE TOP OF THE FORTRESS") , _("SHOOT INTO THE WILD BLUE"),
+ _("RED COINS ON THE FLOATING ISLE"), _("FALL ONTO THE CAGED ISLAND") , _("BLAST AWAY THE WALL"))
+
+COURSE_ACTS(COURSE_JRB, _(" 3 JOLLY ROGER BAY"),
+ _("PLUNDER IN THE SUNKEN SHIP") , _("CAN THE EEL COME OUT TO PLAY?") , _("TREASURE OF THE OCEAN CAVE"),
+ _("RED COINS ON THE SHIP AFLOAT") , _("BLAST TO THE STONE PILLAR") , _("THROUGH THE JET STREAM"))
+
+COURSE_ACTS(COURSE_CCM, _(" 4 COOL, COOL MOUNTAIN"),
+ _("SLIP SLIDIN' AWAY") , _("LI'L PENGUIN LOST") , _("BIG PENGUIN RACE"),
+ _("FROSTY SLIDE FOR 8 RED COINS") , _("SNOWMAN'S LOST HIS HEAD") , _("WALL KICKS WILL WORK"))
+
+COURSE_ACTS(COURSE_BBH, _(" 5 BIG BOO'S HAUNT"),
+ _("GO ON A GHOST HUNT") , _("RIDE BIG BOO'S MERRY-GO-ROUND") , _("SECRET OF THE HAUNTED BOOKS"),
+ _("SEEK THE 8 RED COINS") , _("BIG BOO'S BALCONY") , _("EYE TO EYE IN THE SECRET ROOM"))
+
+COURSE_ACTS(COURSE_HMC, _(" 6 HAZY MAZE CAVE"),
+ _("SWIMMING BEAST IN THE CAVERN") , _("ELEVATE FOR 8 RED COINS") , _("METAL-HEAD MARIO CAN MOVE!"),
+ _("NAVIGATING THE TOXIC MAZE") , _("A-MAZE-ING EMERGENCY EXIT") , _("WATCH FOR ROLLING ROCKS"))
+
+COURSE_ACTS(COURSE_LLL, _(" 7 LETHAL LAVA LAND"),
+ _("BOIL THE BIG BULLY") , _("BULLY THE BULLIES") , _("8-COIN PUZZLE WITH 15 PIECES"),
+ _("RED-HOT LOG ROLLING") , _("HOT-FOOT-IT INTO THE VOLCANO") , _("ELEVATOR TOUR IN THE VOLCANO"))
+
+COURSE_ACTS(COURSE_SSL, _(" 8 SHIFTING SAND LAND"),
+ _("IN THE TALONS OF THE BIG BIRD") , _("SHINING ATOP THE PYRAMID") , _("INSIDE THE ANCIENT PYRAMID"),
+ _("STAND TALL ON THE FOUR PILLARS"), _("FREE FLYING FOR 8 RED COINS") , _("PYRAMID PUZZLE"))
+
+COURSE_ACTS(COURSE_DDD, _(" 9 DIRE, DIRE DOCKS"),
+ _("BOARD BOWSER'S SUB") , _("CHESTS IN THE CURRENT") , _("POLE-JUMPING FOR RED COINS"),
+ _("THROUGH THE JET STREAM") , _("THE MANTA RAY'S REWARD") , _("COLLECT THE CAPS..."))
+
+COURSE_ACTS(COURSE_SL, _("10 SNOWMAN'S LAND"),
+ _("SNOWMAN'S BIG HEAD") , _("CHILL WITH THE BULLY") , _("IN THE DEEP FREEZE"),
+ _("WHIRL FROM THE FREEZING POND") , _("SHELL SHREDDIN' FOR RED COINS") , _("INTO THE IGLOO"))
+
+COURSE_ACTS(COURSE_WDW, _("11 WET-DRY WORLD"),
+ _("SHOCKING ARROW LIFTS!") , _("TOP O' THE TOWN") , _("SECRETS IN THE SHALLOWS & SKY"),
+ _("EXPRESS ELEVATOR--HURRY UP!") , _("GO TO TOWN FOR RED COINS") , _("QUICK RACE THROUGH DOWNTOWN!"))
+
+COURSE_ACTS(COURSE_TTM, _("12 TALL, TALL MOUNTAIN"),
+ _("SCALE THE MOUNTAIN") , _("MYSTERY OF THE MONKEY CAGE") , _("SCARY 'SHROOMS, RED COINS"),
+ _("MYSTERIOUS MOUNTAINSIDE") , _("BREATHTAKING VIEW FROM BRIDGE") , _("BLAST TO THE LONELY MUSHROOM"))
+
+COURSE_ACTS(COURSE_THI, _("13 TINY-HUGE ISLAND"),
+ _("PLUCK THE PIRANHA FLOWER") , _("THE TIP TOP OF THE HUGE ISLAND"), _("REMATCH WITH KOOPA THE QUICK"),
+ _("FIVE ITTY BITTY SECRETS") , _("WIGGLER'S RED COINS") , _("MAKE WIGGLER SQUIRM"))
+
+COURSE_ACTS(COURSE_TTC, _("14 TICK TOCK CLOCK"),
+ _("ROLL INTO THE CAGE") , _("THE PIT AND THE PENDULUMS") , _("GET A HAND"),
+ _("STOMP ON THE THWOMP") , _("TIMED JUMPS ON MOVING BARS") , _("STOP TIME FOR RED COINS"))
+
+COURSE_ACTS(COURSE_RR, _("15 RAINBOW RIDE"),
+ _("CRUISER CROSSING THE RAINBOW") , _("THE BIG HOUSE IN THE SKY") , _("COINS AMASSED IN A MAZE"),
+ _("SWINGIN' IN THE BREEZE") , _("TRICKY TRIANGLES!") , _("SOMEWHERE OVER THE RAINBOW"))
+
+SECRET_STAR(COURSE_BITDW, _(" BOWSER IN THE DARK WORLD"))
+SECRET_STAR(COURSE_BITFS, _(" BOWSER IN THE FIRE SEA"))
+SECRET_STAR(COURSE_BITS, _(" BOWSER IN THE SKY"))
+SECRET_STAR(COURSE_PSS, _(" THE PRINCESS'S SECRET SLIDE"))
+SECRET_STAR(COURSE_COTMC, _(" CAVERN OF THE METAL CAP"))
+SECRET_STAR(COURSE_TOTWC, _(" TOWER OF THE WING CAP"))
+SECRET_STAR(COURSE_VCUTM, _(" VANISH CAP UNDER THE MOAT"))
+SECRET_STAR(COURSE_WMOTR, _(" WING MARIO OVER THE RAINBOW"))
+SECRET_STAR(COURSE_SA, _(" THE SECRET AQUARIUM"))
+SECRET_STAR(COURSE_CAKE_END, _(""))
+
+CASTLE_SECRET_STARS(_(" CASTLE SECRET STARS"))
+
+EXTRA_TEXT(0, _("ONE OF THE CASTLE'S SECRET STARS!"))
+EXTRA_TEXT(1, _(""))
+EXTRA_TEXT(2, _(""))
+EXTRA_TEXT(3, _(""))
+EXTRA_TEXT(4, _(""))
+EXTRA_TEXT(5, _(""))
+EXTRA_TEXT(6, _(""))
diff --git a/text/us/debug.c.in b/text/us/debug.c.in
@@ -1,37 +0,0 @@
-// This debug dialog wasn't translated for US.
-
-// 0x020087E4
-static const u8 Debug0[] = {
- _("STAGE SELECT\n"
- " つづける?\n"
- " 1 マウンテン\n"
- " 2 ファイア-バブル\n"
- " 3 スノ-スライダ-\n"
- " 4 ウォ-タ-ランド\n"
- " クッパ1ごう\n"
- " もどる")
-};
-
-
-// 0x0200883C
-static const u8 Debug1[] = {
- _("PAUSE \n"
- " つづける?\n"
- " やめる ?")
-};
-
-
-// debug text table
-static const struct DialogEntry debug_text_entry_0 = {
- 1, 8, 30, 200, Debug0
-};
-
-static const struct DialogEntry debug_text_entry_1 = {
- 1, 3, 100, 150, Debug1
-};
-
-
-const struct DialogEntry *const seg2_debug_text_table[] = {
- &debug_text_entry_0, &debug_text_entry_1, NULL,
-};
-
diff --git a/text/us/dialog.c.in b/text/us/dialog.c.in
@@ -1,3318 +0,0 @@
-// dialogs
-// 0x02008884
-static const u8 Dialog000[] = {
- _("Wow! You're smack in the\n"
- "middle of the battlefield.\n"
- "You'll find the Power\n"
- "Stars that Bowser stole\n"
- "inside the painting\n"
- "worlds.\n"
- "First, talk to the\n"
- "Bob-omb Buddy. (Press [B]\n"
- "to talk.) He'll certainly\n"
- "help you out, and so will\n"
- "his comrades in other\n"
- "areas.\n"
- "To read signs, stop, face\n"
- "them and press [B]. Press [A]\n"
- "or [B] to scroll ahead. You\n"
- "can talk to some other\n"
- "characters by facing them\n"
- "and pressing [B].")
-};
-
-
-// 0x02008958
-static const u8 Dialog001[] = {
- _("Watch out! If you wander\n"
- "around here, you're liable\n"
- "to be plastered by a\n"
- "water bomb!\n"
- "Those enemy Bob-ombs love\n"
- "to fight, and they're\n"
- "always finding ways to\n"
- "attack.\n"
- "This meadow has become\n"
- "a battlefield ever since\n"
- "the Big Bob-omb got his\n"
- "paws on the Power Star.\n"
- "Can you recover the Star\n"
- "for us? Cross the bridge\n"
- "and go left up the path\n"
- "to find the Big Bob-omb.\n"
- "Please come back to see\n"
- "me after you've retrieved\n"
- "the Power Star!")
-};
-
-
-// 0x02008A68
-static const u8 Dialog002[] = {
- _("Hey, you! It's dangerous\n"
- "ahead, so listen up! Take\n"
- "my advice.\n"
- "\n"
- "Cross the two\n"
- "bridges ahead, then\n"
- "watch for falling\n"
- "water bombs.\n"
- "The Big Bob-omb at the\n"
- "top of the mountain is\n"
- "very powerful--don't let\n"
- "him grab you!\n"
- "We're Bob-omb Buddies,\n"
- "and we're on your side.\n"
- "You can talk to us\n"
- "whenever you'd like to!")
-};
-
-
-// 0x02008B34
-static const u8 Dialog003[] = {
- _("Thank you, Mario! The Big\n"
- "Bob-omb is nothing but a\n"
- "big dud now! But the\n"
- "battle for the castle has\n"
- "just begun.\n"
- "Other enemies are holding\n"
- "the other Power Stars. If\n"
- "you recover more Stars,\n"
- "you can open new doors\n"
- "that lead to new worlds!\n"
- "My Bob-omb Buddies are\n"
- "waiting for you. Be sure\n"
- "to talk to them--they'll\n"
- "set up cannons for you.")
-};
-
-
-// 0x02008BFC
-static const u8 Dialog004[] = {
- _("We're peace-loving\n"
- "Bob-ombs, so we don't use\n"
- "cannons.\n"
- "But if you'd like\n"
- "to blast off, we don't\n"
- "mind. Help yourself.\n"
- "We'll prepare all of the\n"
- "cannons in this course for\n"
- "you to use. Bon Voyage!")
-};
-
-
-// 0x02008C80
-static const u8 Dialog005[] = {
- _("Hey, Mario! Is it true\n"
- "that you beat the Big\n"
- "Bob-omb? Cool!\n"
- "You must be strong. And\n"
- "pretty fast. So, how fast\n"
- "are you, anyway?\n"
- "Fast enough to beat me...\n"
- "Koopa the Quick? I don't\n"
- "think so. Just try me.\n"
- "How about a race to the\n"
- "mountaintop, where the\n"
- "Big Bob-omb was?\n"
- "Whaddya say? When I say\n"
- "『Go,』 let the race begin!\n"
- "\n"
- "Ready....\n"
- "\n"
- "//Go!////Don't Go")
-};
-
-
-// 0x02008D54
-static const u8 Dialog006[] = {
- _("Hey!!! Don't try to scam\n"
- "ME. You've gotta run\n"
- "the whole course.\n"
- "Later. Look me up when\n"
- "you want to race for\n"
- "real.")
-};
-
-
-// 0x02008D80
-static const u8 Dialog007[] = {
- _("Hufff...fff...pufff...\n"
- "Whoa! You...really...are...\n"
- "fast! A human blur!\n"
- "Here you go--you've won\n"
- "it, fair and square!")
-};
-
-
-// 0x02008DC0
-static const u8 Dialog008[] = {
- _("BEWARE OF CHAIN CHOMP\n"
- "Extreme Danger!\n"
- "Get close and press [C]^\n"
- "for a better look.\n"
- "Scary, huh?\n"
- "See the Red Coin on top\n"
- "of the stake?\n"
- "\n"
- "When you collect eight of\n"
- "them, a Power Star will\n"
- "appear in the meadow\n"
- "across the bridge.")
-};
-
-
-// 0x02008E44
-static const u8 Dialog009[] = {
- _("Long time, no see! Wow,\n"
- "have you gotten fast!\n"
- "Have you been training\n"
- "on the sly, or is it the\n"
- "power of the Stars?\n"
- "I've been feeling down\n"
- "about losing the last\n"
- "race. This is my home\n"
- "course--how about a\n"
- "rematch?\n"
- "The goal is in\n"
- "Windswept Valley.\n"
- "Ready?\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x02008EFC
-static const u8 Dialog010[] = {
- _("You've stepped on the\n"
- "Wing Cap Switch. Wearing\n"
- "the Wing Cap, you can\n"
- "soar through the sky.\n"
- "Now Wing Caps will pop\n"
- "out of all the red blocks\n"
- "you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x02008F68
-static const u8 Dialog011[] = {
- _("You've just stepped on\n"
- "the Metal Cap Switch!\n"
- "The Metal Cap makes\n"
- "Mario invincible.\n"
- "Now Metal Caps will\n"
- "pop out of all of the\n"
- "green blocks you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x02008FD8
-static const u8 Dialog012[] = {
- _("You've just stepped on\n"
- "the Vanish Cap Switch.\n"
- "The Vanish Cap makes\n"
- "Mario disappear.\n"
- "Now Vanish Caps will pop\n"
- "from all of the blue\n"
- "blocks you find.\n"
- "\n"
- "Would you like to Save?\n"
- "\n"
- "//Yes////No")
-};
-
-
-// 0x02009048
-static const u8 Dialog013[] = {
- _("You've collected 100\n"
- "coins! Mario gains more\n"
- "power from the castle.\n"
- "Do you want to Save?\n"
- "//Yes////No")
-};
-
-
-// 0x020090A0
-static const u8 Dialog014[] = {
- _("Wow! Another Power Star!\n"
- "Mario gains more courage\n"
- "from the power of the\n"
- "castle.\n"
- "Do you want to Save?\n"
- "\n"
- "//You Bet//Not Now")
-};
-
-
-// 0x020090FC
-static const u8 Dialog015[] = {
- _("You can punch enemies to\n"
- "knock them down. Press [A]\n"
- "to jump, [B] to punch.\n"
- "Press [A] then [B] to Kick.\n"
- "To pick something up,\n"
- "press [B], too. To throw\n"
- "something you're holding,\n"
- "press [B] again.")
-};
-
-
-// 0x02009174
-static const u8 Dialog016[] = {
- _("Hop on the shiny shell and\n"
- "ride wherever you want to\n"
- "go! Shred those enemies!")
-};
-
-
-// 0x020091A8
-static const u8 Dialog017[] = {
- _("I'm the Big Bob-omb, lord\n"
- "of all blasting matter,\n"
- "king of ka-booms the\n"
- "world over!\n"
- "How dare you scale my\n"
- "mountain? By what right\n"
- "do you set foot on my\n"
- "imperial mountaintop?\n"
- "You may have eluded my\n"
- "guards, but you'll never\n"
- "escape my grasp...\n"
- "\n"
- "...and you'll never take\n"
- "away my Power Star. I\n"
- "hereby challenge you,\n"
- "Mario!\n"
- "If you want the Star I\n"
- "hold, you must prove\n"
- "yourself in battle.\n"
- "\n"
- "Can you pick me up from\n"
- "the back and hurl me to\n"
- "this royal turf? I think\n"
- "that you cannot!")
-};
-
-
-// 0x02009258
-static const u8 Dialog018[] = {
- _("I'm sleeping because...\n"
- "...I'm sleepy. I don't\n"
- "like being disturbed.\n"
- "Please walk quietly.")
-};
-
-
-// 0x02009284
-static const u8 Dialog019[] = {
- _("Shhh! Please walk\n"
- "quietly in the hallway!")
-};
-
-
-// 0x02009298
-static const u8 Dialog020[] = {
- _("Dear Mario:\n"
- "Please come to the\n"
- "castle. I've baked\n"
- "a cake for you.\n"
- "Yours truly--\n"
- "Princess Toadstool")
-};
-
-
-// 0x020092CC
-static const u8 Dialog021[] = {
- _("Welcome.\n"
- "No one's home!\n"
- "Now scram--\n"
- "and don't come back!\n"
- "Gwa ha ha!")
-};
-
-
-// 0x02009304
-static const u8 Dialog022[] = {
- _("You need a key to open\n"
- "this door.")
-};
-
-
-// 0x02009314
-static const u8 Dialog023[] = {
- _("This key doesn't fit!\n"
- "Maybe it's for the\n"
- "basement...")
-};
-
-
-// 0x0200933C
-static const u8 Dialog024[] = {
- _("You need Star power to\n"
- "open this door. Recover a\n"
- "Power Star from an enemy\n"
- "inside one of the castle's\n"
- "paintings.")
-};
-
-
-// 0x02009390
-static const u8 Dialog025[] = {
- _("It takes the power of\n"
- "3 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x020093CC
-static const u8 Dialog026[] = {
- _("It takes the power of\n"
- "8 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x02009408
-static const u8 Dialog027[] = {
- _("It takes the power of\n"
- "30 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x02009444
-static const u8 Dialog028[] = {
- _("It takes the power of\n"
- "50 Stars to open this\n"
- "door. You need [%] more\n"
- "Stars.")
-};
-
-
-// 0x02009480
-static const u8 Dialog029[] = {
- _("To open the door that\n"
- "leads to the 『endless』\n"
- "stairs, you need 70\n"
- "Stars.\n"
- "Bwa ha ha!")
-};
-
-
-// 0x020094D4
-static const u8 Dialog030[] = {
- _("Hello! The Lakitu Bros.,\n"
- "cutting in with a live\n"
- "update on Mario's\n"
- "progress. He's about to\n"
- "learn a technique for\n"
- "sneaking up on enemies.\n"
- "The trick is this: He has\n"
- "to walk very slowly in\n"
- "order to walk quietly.\n"
- "\n"
- "\n"
- "\n"
- "And wrapping up filming\n"
- "techniques reported on\n"
- "earlier, you can take a\n"
- "look around using [C]> and\n"
- "[C]<. Press [C]| to view the\n"
- "action from a distance.\n"
- "When you can't move the\n"
- "camera any farther, the\n"
- "buzzer will sound. This is\n"
- "the Lakitu Bros.,\n"
- "signing off.")
-};
-
-
-// 0x0200957C
-static const u8 Dialog031[] = {
- _("No way! You beat me...\n"
- "again!! And I just spent\n"
- "my entire savings on\n"
- "these new Koopa\n"
- "Mach 1 Sprint shoes!\n"
- "Here, I guess I have to\n"
- "hand over this Star to\n"
- "the winner of the race.\n"
- "Congrats, Mario!")
-};
-
-
-// 0x020095C8
-static const u8 Dialog032[] = {
- _("If you get the Wing Cap,\n"
- "you can fly! Put the cap\n"
- "on, then do a Triple\n"
- "Jump--jump three times\n"
- "in a row--to take off.\n"
- "You can fly even higher\n"
- "if you blast out of a\n"
- "cannon wearing the\n"
- "Wing Cap!\n"
- "\n"
- "Use the [C] Buttons to look\n"
- "around while flying, and\n"
- "press [Z] to land.")
-};
-
-
-// 0x02009638
-static const u8 Dialog033[] = {
- _("Ciao! You've reached\n"
- "Princess Toadstool's\n"
- "castle via a warp pipe.\n"
- "Using the controller is a\n"
- "piece of cake. Press [A] to\n"
- "jump and [B] to attack.\n"
- "Press [B] to read signs,\n"
- "too. Use the Control Stick\n"
- "in the center of the\n"
- "controller to move Mario\n"
- "around. Now, head for\n"
- "the castle.")
-};
-
-
-// 0x020096C4
-static const u8 Dialog034[] = {
- _("Good afternoon. The\n"
- "Lakitu Bros., here,\n"
- "reporting live from just\n"
- "outside the Princess's\n"
- "castle.\n"
- "\n"
- "Mario has just arrived\n"
- "on the scene, and we'll\n"
- "be filming the action live\n"
- "as he enters the castle\n"
- "and pursues the missing\n"
- "Power Stars.\n"
- "As seasoned cameramen,\n"
- "we'll be shooting from the\n"
- "recommended angle, but\n"
- "you can change the\n"
- "camera angle by pressing\n"
- "the [C] Buttons.\n"
- "If we can't adjust the\n"
- "view any further, we'll\n"
- "buzz. To take a look at\n"
- "the surroundings, stop\n"
- "and press [C]^.\n"
- "\n"
- "Press [A] to resume play.\n"
- "Switch camera modes with\n"
- "the [R] Button. Signs along\n"
- "the way will review these\n"
- "instructions.\n"
- "\n"
- "For now, reporting live,\n"
- "this has been the\n"
- "Lakitu Bros.")
-};
-
-
-// 0x02009800
-static const u8 Dialog035[] = {
- _("There are four camera, or\n"
- "『[C],』 Buttons. Press [C]^\n"
- "to look around using the\n"
- "Control Stick.\n"
- "\n"
- "You'll usually see Mario\n"
- "through Lakitu's camera.\n"
- "It is the camera\n"
- "recommended for normal\n"
- "play.\n"
- "You can change angles by\n"
- "pressing [C]>. If you press\n"
- "[R], the view switches to\n"
- "Mario's camera, which\n"
- "is directly behind him.\n"
- "Press [R] again to return\n"
- "to Lakitu's camera. Press\n"
- "[C]| to see Mario from\n"
- "afar, using either\n"
- "Lakitu's or Mario's view.")
-};
-
-
-// 0x02009908
-static const u8 Dialog036[] = {
- _("OBSERVATION PLATFORM\n"
- "Press [C]^ to take a look\n"
- "around. Don't miss\n"
- "anything!\n"
- "\n"
- "Press [R] to switch to\n"
- "Mario's camera. It\n"
- "always follows Mario.\n"
- "Press [R] again to switch\n"
- "to Lakitu's camera.\n"
- "Pause the game and\n"
- "switch the mode to 『fix』\n"
- "the camera in place while\n"
- "holding [R]. Give it a try!")
-};
-
-
-// 0x02009A14
-static const u8 Dialog037[] = {
- _("I win! You lose!\n"
- "Ha ha ha ha!\n"
- "You're no slouch, but I'm\n"
- "a better sledder!\n"
- "Better luck next time!")
-};
-
-
-// 0x02009A5C
-static const u8 Dialog038[] = {
- _("Reacting to the Star\n"
- "power, the door slowly\n"
- "opens.")
-};
-
-
-// 0x02009A88
-static const u8 Dialog039[] = {
- _("No visitors allowed,\n"
- "by decree of\n"
- "the Big Bob-omb\n"
- "\n"
- "I shall never surrender my\n"
- "Stars, for they hold the\n"
- "power of the castle in\n"
- "their glow.\n"
- "They were a gift from\n"
- "Bowser, the Koopa King\n"
- "himself, and they lie well\n"
- "hidden within my realm.\n"
- "Not a whisper of their\n"
- "whereabouts shall leave\n"
- "my lips. Oh, all right,\n"
- "perhaps one hint:\n"
- "Heed the Star names at\n"
- "the beginning of the\n"
- "course.\n"
- "//--The Big Bob-omb")
-};
-
-
-// 0x02009B34
-static const u8 Dialog040[] = {
- _("Warning!\n"
- "Cold, Cold Crevasse\n"
- "Below!")
-};
-
-
-// 0x02009B50
-static const u8 Dialog041[] = {
- _("I win! You lose!\n"
- "Ha ha ha!\n"
- "\n"
- "That's what you get for\n"
- "messin' with Koopa the\n"
- "Quick.\n"
- "Better luck next time!")
-};
-
-
-// 0x02009B80
-static const u8 Dialog042[] = {
- _("Caution! Narrow Bridge!\n"
- "Cross slowly!\n"
- "\n"
- "\n"
- "You can jump to the edge\n"
- "of the cliff and hang on,\n"
- "and you can climb off the\n"
- "edge if you move slowly.\n"
- "When you want to let go,\n"
- "either press [Z] or press\n"
- "the Control Stick in the\n"
- "direction of Mario's back.\n"
- "To climb up, press Up on\n"
- "the Control Stick. To\n"
- "scurry up quickly, press\n"
- "the [A] Button.")
-};
-
-
-// 0x02009C20
-static const u8 Dialog043[] = {
- _("If you jump and hold the\n"
- "[A] Button, you can hang on\n"
- "to some objects overhead.\n"
- "It's the same as grabbing\n"
- "a flying bird!")
-};
-
-
-// 0x02009C68
-static const u8 Dialog044[] = {
- _("Whooo's there? Whooo\n"
- "woke me up? It's still\n"
- "daylight--I should be\n"
- "sleeping!\n"
- "\n"
- "Hey, as long as I'm\n"
- "awake, why not take a\n"
- "short flight with me?\n"
- "Press and hold [A] to grab\n"
- "on. Release [A] to let go.\n"
- "I'll take you wherever\n"
- "you want to go, as long\n"
- "as my wings hold out.\n"
- "Watch my shadow, and\n"
- "grab on.")
-};
-
-
-// 0x02009D1C
-static const u8 Dialog045[] = {
- _("Whew! I'm just about\n"
- "flapped out. You should\n"
- "lay off the pasta, Mario!\n"
- "That's it for now. Press\n"
- "[A] to let go. Okay,\n"
- "bye byyyyyyeeee!")
-};
-
-
-// 0x02009D88
-static const u8 Dialog046[] = {
- _("You have to master three\n"
- "important jumping\n"
- "techniques.\n"
- "First try the Triple Jump.\n"
- "\n"
- "Run fast, then jump three\n"
- "times, one, two, three.\n"
- "If you time the jumps\n"
- "right, you'll hop, skip,\n"
- "then jump really high.\n"
- "Next, go for distance\n"
- "with the Long Jump. Run,\n"
- "press [Z] to crouch then [A]\n"
- "to jump really far.\n"
- "\n"
- "To do the Wall Kick, press\n"
- "[A] to jump at a wall, then\n"
- "jump again when you hit\n"
- "the wall.\n"
- "\n"
- "Got that? Triple Jump,\n"
- "Long Jump, Wall Kick.\n"
- "Practice, practice,\n"
- "practice. You don't stand\n"
- "a chance without them.")
-};
-
-
-// 0x02009ED4
-static const u8 Dialog047[] = {
- _("Hi! I'll prepare the\n"
- "cannon for you!")
-};
-
-
-// 0x02009EF8
-static const u8 Dialog048[] = {
- _("Snow Mountain Summit\n"
- "Watch for slippery\n"
- "conditions! Please enter\n"
- "the cottage first.")
-};
-
-
-// 0x02009F2C
-static const u8 Dialog049[] = {
- _("Remember that tricky Wall\n"
- "Kick jump? It's a\n"
- "technique you'll have to\n"
- "master in order to reach\n"
- "high places.\n"
- "Use it to jump from wall\n"
- "to wall. Press the\n"
- "Control Stick in the\n"
- "direction you want to\n"
- "bounce to gain momentum.\n"
- "Practice makes perfect!")
-};
-
-
-// 0x02009FA4
-static const u8 Dialog050[] = {
- _("Hold [Z] to crouch and\n"
- "slide down a slope.\n"
- "Or press [Z] while in the\n"
- "air to Pound the Ground!\n"
- "If you stop, crouch, then\n"
- "jump, you'll do a\n"
- "Backward Somersault!\n"
- "Got that?\n"
- "There's more. Crouch and\n"
- "then jump to do a\n"
- "Long Jump! Or crouch and\n"
- "walk to...never mind.")
-};
-
-
-// 0x0200A058
-static const u8 Dialog051[] = {
- _("Climbing's easy! When you\n"
- "jump at trees, poles or\n"
- "pillars, you'll grab them\n"
- "automatically. Press [A] to\n"
- "jump off backward.\n"
- "\n"
- "To rotate around the\n"
- "object, press Right or\n"
- "Left on the Control Stick.\n"
- "When you reach the top,\n"
- "press Up to do a\n"
- "handstand!\n"
- "Jump off from the\n"
- "handstand for a high,\n"
- "stylin' dismount.")
-};
-
-
-// 0x0200A12C
-static const u8 Dialog052[] = {
- _("Stop and press [Z] to\n"
- "crouch, then press [A]\n"
- "to do a high, Backward\n"
- "Somersault!\n"
- "\n"
- "To perform a Side\n"
- "Somersault, run, do a\n"
- "sharp U-turn and jump.\n"
- "You can catch lots of\n"
- "air with both jumps.")
-};
-
-
-// 0x0200A1A0
-static const u8 Dialog053[] = {
- _("Sometimes, if you pass\n"
- "through a coin ring or\n"
- "find a secret point in a\n"
- "course, a red number will\n"
- "appear.\n"
- "If you trigger five red\n"
- "numbers, a secret Star\n"
- "will show up.")
-};
-
-
-// 0x0200A1F4
-static const u8 Dialog054[] = {
- _("Welcome to the snow\n"
- "slide! Hop on! To speed\n"
- "up, press forward on the\n"
- "Control Stick. To slow\n"
- "down, pull back.")
-};
-
-
-// 0x0200A234
-static const u8 Dialog055[] = {
- _("Hey-ey, Mario, buddy,\n"
- "howzit goin'? Step right\n"
- "up. You look like a fast\n"
- "sleddin' kind of guy.\n"
- "I know speed when I see\n"
- "it, yes siree--I'm the\n"
- "world champion sledder,\n"
- "you know. Whaddya say?\n"
- "How about a race?\n"
- "Ready...\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x0200A2A0
-static const u8 Dialog056[] = {
- _("You brrrr-oke my record!\n"
- "Unbelievable! I knew\n"
- "that you were the coolest.\n"
- "Now you've proven\n"
- "that you're also the\n"
- "fastest!\n"
- "I can't award you a gold\n"
- "medal, but here, take this\n"
- "Star instead. You've\n"
- "earned it!")
-};
-
-
-// 0x0200A2E8
-static const u8 Dialog057[] = {
- _("Egad! My baby!! Have you\n"
- "seen my baby??? She's\n"
- "the most precious baby in\n"
- "the whole wide world.\n"
- "(They say she has my\n"
- "beak...) I just can't\n"
- "remember where I left\n"
- "her.\n"
- "Let's see...I stopped\n"
- "for herring and ice cubes,\n"
- "then I...oohh! I just\n"
- "don't know!")
-};
-
-
-// 0x0200A380
-static const u8 Dialog058[] = {
- _("You found my precious,\n"
- "precious baby! Where\n"
- "have you been? How can\n"
- "I ever thank you, Mario?\n"
- "Oh, I do have this...\n"
- "...Star. Here, take it\n"
- "with my eternal\n"
- "gratitude.")
-};
-
-
-// 0x0200A3FC
-static const u8 Dialog059[] = {
- _("That's not my baby! She\n"
- "looks nothing like me!\n"
- "Her parents must be\n"
- "worried sick!")
-};
-
-
-// 0x0200A438
-static const u8 Dialog060[] = {
- _("ATTENTION!\n"
- "Read Before Diving In!\n"
- "\n"
- "\n"
- "If you stay under the\n"
- "water for too long, you'll\n"
- "run out of oxygen.\n"
- "\n"
- "Return to the surface for\n"
- "air or find an air bubble\n"
- "or coins to breathe while\n"
- "underwater.\n"
- "Press [A] to swim. Hold [A]\n"
- "to swim slow and steady.\n"
- "Tap [A] with smooth timing\n"
- "to gain speed.\n"
- "Press Up on the\n"
- "Control Stick and press [A]\n"
- "to dive.\n"
- "\n"
- "Press Down on the Control\n"
- "Stick and press [A] to\n"
- "return to the surface.\n"
- "\n"
- "Hold Down and press [A]\n"
- "while on the surface near\n"
- "the edge of the water to\n"
- "jump out.")
-};
-
-
-// 0x0200A534
-static const u8 Dialog061[] = {
- _("BRRR! Frostbite Danger!\n"
- "Do not swim here.\n"
- "I'm serious.\n"
- "/--The Penguin")
-};
-
-
-// 0x0200A580
-static const u8 Dialog062[] = {
- _("Hidden inside the green\n"
- "block is the amazing\n"
- "Metal Cap.\n"
- "Wearing it, you won't\n"
- "catch fire or be hurt\n"
- "by enemy attacks.\n"
- "You don't even have to\n"
- "breathe while wearing it.\n"
- "\n"
- "The only problem:\n"
- "You can't swim in it.")
-};
-
-
-// 0x0200A5EC
-static const u8 Dialog063[] = {
- _("The Vanish Cap is inside\n"
- "the blue block. Mr. I.\n"
- "will be surprised, since\n"
- "you'll be invisible when\n"
- "you wear it!\n"
- "Even the Big Boo will be\n"
- "fooled--and you can walk\n"
- "through secret walls, too.")
-};
-
-
-// 0x0200A638
-static const u8 Dialog064[] = {
- _("When you put on the Wing\n"
- "Cap that comes from a\n"
- "red block, do the Triple\n"
- "Jump to soar high into\n"
- "the sky.\n"
- "Use the Control Stick to\n"
- "guide Mario. Pull back to\n"
- "to fly up, press forward\n"
- "to nose down, and press [Z]\n"
- "to land.")
-};
-
-
-// 0x0200A6AC
-static const u8 Dialog065[] = {
- _("Swimming Lessons!\n"
- "Tap [A] to do the breast\n"
- "stroke. If you time the\n"
- "taps right, you'll swim\n"
- "fast.\n"
- "\n"
- "Press and hold [A] to do a\n"
- "slow, steady flutter kick.\n"
- "Press Up on the Control\n"
- "Stick to dive, and pull\n"
- "back on the stick to head\n"
- "for the surface.\n"
- "To jump out of the water,\n"
- "hold Down on the Control\n"
- "Stick, then press [A].\n"
- "Easy as pie, right?\n"
- "\n"
- "\n"
- "But remember:\n"
- "Mario can't breathe under\n"
- "the water! Return to the\n"
- "surface for air when the\n"
- "Power Meter runs low.\n"
- "\n"
- "And one last thing: You\n"
- "can't open doors that\n"
- "are underwater.")
-};
-
-
-// 0x0200A7A8
-static const u8 Dialog066[] = {
- _("Mario, it's Peach!\n"
- "Please be careful! Bowser\n"
- "is so wicked! He will try\n"
- "to burn you with his\n"
- "horrible flame breath.\n"
- "Run around behind and\n"
- "grab him by the tail with\n"
- "the [B] Button. Once you\n"
- "grab hold, swing him\n"
- "around in great circles.\n"
- "Rotate the Control Stick\n"
- "to go faster and faster.\n"
- "The faster you swing him,\n"
- "the farther he'll fly.\n"
- "\n"
- "Use the [C] Buttons to look\n"
- "around, Mario. You have\n"
- "to throw Bowser into one\n"
- "of the bombs in the four\n"
- "corners.\n"
- "Aim well, then press [B]\n"
- "again to launch Bowser.\n"
- "Good luck, Mario! Our\n"
- "fate is in your hands.")
-};
-
-
-// 0x0200A884
-static const u8 Dialog067[] = {
- _("Tough luck, Mario!\n"
- "Princess Toadstool isn't\n"
- "here...Gwa ha ha!! Go\n"
- "ahead--just try to grab\n"
- "me by the tail!\n"
- "You'll never be able to\n"
- "swing ME around! A wimp\n"
- "like you won't throw me\n"
- "out of here! Never! Ha!")
-};
-
-
-// 0x0200A91C
-static const u8 Dialog068[] = {
- _("It's Lethal Lava Land!\n"
- "If you catch fire or fall\n"
- "into a pool of flames,\n"
- "you'll be hopping mad, but\n"
- "don't lose your cool.\n"
- "You can still control\n"
- "Mario--just try to keep\n"
- "calm!")
-};
-
-
-// 0x0200A99C
-static const u8 Dialog069[] = {
- _("Sometimes you'll bump into\n"
- "invisible walls at the\n"
- "edges of the painting\n"
- "worlds. If you hit a wall\n"
- "while flying, you'll bounce\n"
- "back.")
-};
-
-
-// 0x0200AA08
-static const u8 Dialog070[] = {
- _("You can return to the\n"
- "castle's main hall at any\n"
- "time from the painting\n"
- "worlds where the enemies\n"
- "live.\n"
- "Just stop, stand still,\n"
- "press Start to pause the\n"
- "game, then select\n"
- "『Exit Course.』\n"
- "\n"
- "You don't have to collect\n"
- "all Power Stars in one\n"
- "course before going on to\n"
- "the next.\n"
- "\n"
- "Return later, when you're\n"
- "more experienced, to pick\n"
- "up difficult ones.\n"
- "\n"
- "\n"
- "Whenever you find a Star,\n"
- "a hint for finding the\n"
- "next one will appear on\n"
- "the course's start screen.\n"
- "\n"
- "You can, however, collect\n"
- "any of the remaining\n"
- "Stars next. You don't\n"
- "have to recover the one\n"
- "described by the hint.")
-};
-
-
-// 0x0200AB18
-static const u8 Dialog071[] = {
- _("Danger Ahead!\n"
- "Beware of the strange\n"
- "cloud! Don't inhale!\n"
- "If you feel faint, run for\n"
- "higher ground and fresh\n"
- "air!\n"
- "Circle: Shelter\n"
- "Arrow: Entrance-Exit")
-};
-
-
-// 0x0200AB74
-static const u8 Dialog072[] = {
- _("High winds ahead!\n"
- "Pull your Cap down tight.\n"
- "If it blows off, you'll\n"
- "have to find it on this\n"
- "mountain.")
-};
-
-
-// 0x0200ABC0
-static const u8 Dialog073[] = {
- _("Aarrgh! Ahoy, matey. I\n"
- "have sunken treasure,\n"
- "here, I do.\n"
- "\n"
- "But to pluck the plunder,\n"
- "you must open the\n"
- "Treasure Chests in the\n"
- "right order.\n"
- "What order is that,\n"
- "ye say?\n"
- "\n"
- "\n"
- "I'll never tell!\n"
- "\n"
- "//--The Cap'n")
-};
-
-
-// 0x0200AC00
-static const u8 Dialog074[] = {
- _("You can grab on to the\n"
- "edge of a cliff or ledge\n"
- "with your fingertips and\n"
- "hang down from it.\n"
- "\n"
- "To drop from the edge,\n"
- "either press the Control\n"
- "Stick in the direction of\n"
- "Mario's back or press the\n"
- "[Z] Button.\n"
- "To get up onto the ledge,\n"
- "either press Up on the\n"
- "Control Stick or press [A]\n"
- "as soon as you grab the\n"
- "ledge to climb up quickly.")
-};
-
-
-// 0x0200AC8C
-static const u8 Dialog075[] = {
- _("Mario!! My castle is in\n"
- "great peril. I know that\n"
- "Bowser is the cause...and\n"
- "I know that only you can\n"
- "stop him!\n"
- "The doors in the castle\n"
- "that have been sealed by\n"
- "Bowser can be opened only\n"
- "with Star Power.\n"
- "\n"
- "But there are secret\n"
- "paths in the castle,\n"
- "paths that Bowser hasn't\n"
- "found.\n"
- "\n"
- "One of those paths is in\n"
- "this room, and it holds\n"
- "one of the castle's Secret\n"
- "Stars!\n"
- "\n"
- "Find that Secret Star,\n"
- "Mario! It will help you\n"
- "on your quest. Please,\n"
- "Mario, you have to\n"
- "help us!\n"
- "Retrieve all of the\n"
- "Power Stars in the castle\n"
- "and free us from this\n"
- "awful prison!\n"
- "Please!")
-};
-
-
-// 0x0200AD94
-static const u8 Dialog076[] = {
- _("Thanks to the power of\n"
- "the Stars, life is\n"
- "returning to the castle.\n"
- "Please, Mario, you have\n"
- "to give Bowser the boot!\n"
- "\n"
- "Here, let me tell you a\n"
- "little something about the\n"
- "castle. In the room with\n"
- "the mirrors, look carefully\n"
- "for anything that's not\n"
- "reflected in the mirror.\n"
- "And when you go to the\n"
- "water town, you can flood\n"
- "it with a high jump into\n"
- "the painting. Oh, by the\n"
- "way, look what I found!")
-};
-
-
-// 0x0200AE58
-static const u8 Dialog077[] = {
- _("It is decreed that one\n"
- "shall pound the pillars.")
-};
-
-
-// 0x0200AE7C
-static const u8 Dialog078[] = {
- _("Break open the Blue Coin\n"
- "Block by Pounding the\n"
- "Ground with the [Z] Button.\n"
- "One Blue Coin is worth\n"
- "five Yellow Coins.\n"
- "But you have to hurry!\n"
- "The coins will disappear\n"
- "if you're not quick to\n"
- "collect them! Too bad.")
-};
-
-
-// 0x0200AF04
-static const u8 Dialog079[] = {
- _("Owwwuu! Let me go!\n"
- "Uukee-kee! I was only\n"
- "teasing! Can't you take\n"
- "a joke?\n"
- "I'll tell you what, let's\n"
- "trade. If you let me go,\n"
- "I'll give you something\n"
- "really good.\n"
- "So, how about it?\n"
- "\n"
- "//Free him/ Hold on")
-};
-
-
-// 0x0200AF64
-static const u8 Dialog080[] = {
- _("Eeeh hee hee hee!")
-};
-
-
-// 0x0200AF6C
-static const u8 Dialog081[] = {
- _("The mystery is of Wet\n"
- "or Dry.\n"
- "And where does the\n"
- "solution lie?\n"
- "The city welcomes visitors\n"
- "with the depth they bring\n"
- "as they enter.")
-};
-
-
-// 0x0200AFB8
-static const u8 Dialog082[] = {
- _("Hold on to your hat! If\n"
- "you lose it, you'll be\n"
- "injured easily.\n"
- "\n"
- "If you do lose your Cap,\n"
- "you'll have to find it in\n"
- "the course where you\n"
- "lost it.\n"
- "Oh, boy, it's not looking\n"
- "good for Peach. She's\n"
- "still trapped somewhere\n"
- "inside the walls.\n"
- "Please, Mario, you have\n"
- "to help her! Did you know\n"
- "that there are enemy\n"
- "worlds inside the walls?\n"
- "Yup. It's true. Bowser's\n"
- "troops are there, too.\n"
- "Oh, here, take this. I've\n"
- "been keeping it for you.")
-};
-
-
-// 0x0200B080
-static const u8 Dialog083[] = {
- _("There's something strange\n"
- "about that clock. As you\n"
- "jump inside, watch the\n"
- "position of the big hand.\n"
- "Oh, look what I found!\n"
- "Here, Mario, catch!")
-};
-
-
-// 0x0200B0E8
-static const u8 Dialog084[] = {
- _("Yeeoww! Unhand me,\n"
- "brute! I'm late, so late,\n"
- "I must make haste!\n"
- "This shiny thing? Mine!\n"
- "It's mine. Finders,\n"
- "keepers, losers...\n"
- "Late, late, late...\n"
- "Ouch! Take it then! A\n"
- "gift from Bowser, it was.\n"
- "Now let me be! I have a\n"
- "date! I cannot be late\n"
- "for tea!")
-};
-
-
-// 0x0200B168
-static const u8 Dialog085[] = {
- _("You don't stand a ghost\n"
- "of a chance in this house.\n"
- "If you walk out of here,\n"
- "you deserve...\n"
- "...a Ghoul Medal...")
-};
-
-
-// 0x0200B18C
-static const u8 Dialog086[] = {
- _("Running around in circles\n"
- "makes some bad guys roll\n"
- "their eyes.")
-};
-
-
-// 0x0200B1A8
-static const u8 Dialog087[] = {
- _("Santa Claus isn't the only\n"
- "one who can go down a\n"
- "chimney! Come on in!\n"
- "/--Cabin Proprietor")
-};
-
-
-// 0x0200B1EC
-static const u8 Dialog088[] = {
- _("Work Elevator\n"
- "For those who get off\n"
- "here: Grab the pole to the\n"
- "left and slide carefully\n"
- "down.")
-};
-
-
-// 0x0200B228
-static const u8 Dialog089[] = {
- _("Both ways fraught with\n"
- "danger! Watch your feet!\n"
- "Those who can't do the\n"
- "Long Jump, tsk, tsk. Make\n"
- "your way to the right.\n"
- "Right: Work Elevator\n"
- "/// Cloudy Maze\n"
- "Left: Black Hole\n"
- "///Underground Lake\n"
- "\n"
- "Red Circle: Elevator 2\n"
- "//// Underground Lake\n"
- "Arrow: You are here")
-};
-
-
-// 0x0200B2C4
-static const u8 Dialog090[] = {
- _("Bwa ha ha ha!\n"
- "You've stepped right into\n"
- "my trap, just as I knew\n"
- "you would! I warn you,\n"
- "『Friend,』 watch your\n"
- "step!")
-};
-
-
-// 0x0200B30C
-static const u8 Dialog091[] = {
- _("Danger!\n"
- "Strong Gusts!\n"
- "But the wind makes a\n"
- "comfy ride.")
-};
-
-
-// 0x0200B334
-static const u8 Dialog092[] = {
- _("Pestering me again, are\n"
- "you, Mario? Can't you see\n"
- "that I'm having a merry\n"
- "little time, making\n"
- "mischief with my minions?\n"
- "Now, return those Stars!\n"
- "My troops in the walls\n"
- "need them! Bwa ha ha!")
-};
-
-
-// 0x0200B3A8
-static const u8 Dialog093[] = {
- _("Mario! You again! Well\n"
- "that's just fine--I've\n"
- "been looking for something\n"
- "to fry with my fire\n"
- "breath!\n"
- "Your Star Power is\n"
- "useless against me!\n"
- "Your friends are all\n"
- "trapped within the\n"
- "walls...\n"
- "And you'll never see the\n"
- "Princess again!\n"
- "Bwa ha ha ha!")
-};
-
-
-// 0x0200B448
-static const u8 Dialog094[] = {
- _("Get a good run up the\n"
- "slope! Do you remember\n"
- "the Long Jump? Run, press\n"
- "[Z], then jump!")
-};
-
-
-// 0x0200B4A0
-static const u8 Dialog095[] = {
- _("To read a sign, stand in\n"
- "front of it and press [B],\n"
- "like you did just now.\n"
- "\n"
- "When you want to talk to\n"
- "a Koopa Troopa or other\n"
- "animal, stand right in\n"
- "front of it.\n"
- "Please recover the Stars\n"
- "that were stolen by\n"
- "Bowser in this course.")
-};
-
-
-// 0x0200B51C
-static const u8 Dialog096[] = {
- _("The path is narrow here.\n"
- "Easy does it! No one is\n"
- "allowed on top of the\n"
- "mountain!\n"
- "And if you know what's\n"
- "good for you, you won't\n"
- "wake anyone who's\n"
- "sleeping!\n"
- "Move slowly,\n"
- "tread lightly.")
-};
-
-
-// 0x0200B594
-static const u8 Dialog097[] = {
- _("Don't be a pushover!\n"
- "If anyone tries to shove\n"
- "you around, push back!\n"
- "It's one-on-one, with a\n"
- "fiery finish for the loser!")
-};
-
-
-// 0x0200B5C8
-static const u8 Dialog098[] = {
- _("Come on in here...\n"
- "...heh, heh, heh...")
-};
-
-
-// 0x0200B5E0
-static const u8 Dialog099[] = {
- _("Eh he he...\n"
- "You're mine, now, hee hee!\n"
- "I'll pass right through\n"
- "this wall. Can you do\n"
- "that? Heh, heh, heh!")
-};
-
-
-// 0x0200B628
-static const u8 Dialog100[] = {
- _("Ukkiki...Wakkiki...kee kee!\n"
- "Ha! I snagged it!\n"
- "It's mine! Heeheeheeee!")
-};
-
-
-// 0x0200B64C
-static const u8 Dialog101[] = {
- _("Ackk! Let...go...\n"
- "You're...choking...me...\n"
- "Cough...I've been framed!\n"
- "This Cap? Oh, all right,\n"
- "take it. It's a cool Cap,\n"
- "but I'll give it back.\n"
- "I think it looks better on\n"
- "me than it does on you,\n"
- "though! Eeeee! Kee keee!")
-};
-
-
-// 0x0200B680
-static const u8 Dialog102[] = {
- _("Pssst! The Boos are super\n"
- "shy. If you look them\n"
- "in the eyes, they fade\n"
- "away, but if you turn\n"
- "your back, they reappear.\n"
- "It's no use trying to hit\n"
- "them when they're fading\n"
- "away. Instead, sneak up\n"
- "behind them and punch.")
-};
-
-
-// 0x0200B6F8
-static const u8 Dialog103[] = {
- _("Upon four towers\n"
- "one must alight...\n"
- "Then at the peak\n"
- "shall shine the light...")
-};
-
-
-// 0x0200B72C
-static const u8 Dialog104[] = {
- _("The shadowy star in front\n"
- "of you is a 『Star\n"
- "Marker.』 When you collect\n"
- "all 8 Red Coins, the Star\n"
- "will appear here.")
-};
-
-
-// 0x0200B784
-static const u8 Dialog105[] = {
- _("Ready for blastoff! Come\n"
- "on, hop into the cannon!\n"
- "\n"
- "You can reach the Star on\n"
- "the floating island by\n"
- "using the four cannons.\n"
- "Use the Control Stick to\n"
- "aim, then press [A] to fire.\n"
- "\n"
- "If you're handy, you can\n"
- "grab on to trees or poles\n"
- "to land.")
-};
-
-
-// 0x0200B7FC
-static const u8 Dialog106[] = {
- _("Ready for blastoff! Come\n"
- "on, hop into the cannon!")
-};
-
-
-// 0x0200B820
-static const u8 Dialog107[] = {
- _("Ghosts...\n"
- "...don't...\n"
- "...DIE!\n"
- "Heh, heh, heh!\n"
- "Can you get out of here...\n"
- "...alive?")
-};
-
-
-// 0x0200B848
-static const u8 Dialog108[] = {
- _("Boooooo-m! Here comes\n"
- "the master of mischief,\n"
- "the tower of terror,\n"
- "the Big Boo!\n"
- "Ka ha ha ha...")
-};
-
-
-// 0x0200B868
-static const u8 Dialog109[] = {
- _("Ooooo Nooooo!\n"
- "Talk about out-of-body\n"
- "experiences--my body\n"
- "has melted away!\n"
- "Have you run in to any\n"
- "headhunters lately??\n"
- "I could sure use a new\n"
- "body!\n"
- "Brrr! My face might\n"
- "freeze like this!")
-};
-
-
-// 0x0200B8A4
-static const u8 Dialog110[] = {
- _("I need a good head on my\n"
- "shoulders. Do you know of\n"
- "anybody in need of a good\n"
- "body? Please! I'll follow\n"
- "you if you do!")
-};
-
-
-// 0x0200B914
-static const u8 Dialog111[] = {
- _("Perfect! What a great\n"
- "new body! Here--this is a\n"
- "present for you. It's sure\n"
- "to warm you up.")
-};
-
-
-// 0x0200B964
-static const u8 Dialog112[] = {
- _("Collect as many coins as\n"
- "possible! They'll refill\n"
- "your Power Meter.\n"
- "\n"
- "You can check to see how\n"
- "many coins you've\n"
- "collected in each of the\n"
- "15 enemy worlds.\n"
- "You can also recover\n"
- "power by touching the\n"
- "Spinning Heart.\n"
- "\n"
- "The faster you run\n"
- "through the heart, the\n"
- "more power you'll recover.")
-};
-
-
-// 0x0200B9D0
-static const u8 Dialog113[] = {
- _("There are special Caps in\n"
- "the red, green and blue\n"
- "blocks. Step on the\n"
- "switches in the hidden\n"
- "courses to activate the\n"
- "Cap Blocks.")
-};
-
-
-// 0x0200BA24
-static const u8 Dialog114[] = {
- _("It makes me so mad! We\n"
- "build your houses, your\n"
- "castles. We pave your\n"
- "roads, and still you\n"
- "walk all over us.\n"
- "Do you ever say thank\n"
- "you? No! Well, you're not\n"
- "going to wipe your feet\n"
- "on me! I think I'll crush\n"
- "you just for fun!\n"
- "Do you have a problem\n"
- "with that? Just try to\n"
- "pound me, wimp! Ha!")
-};
-
-
-// 0x0200BAFC
-static const u8 Dialog115[] = {
- _("No! Crushed again!\n"
- "I'm just a stepping stone,\n"
- "after all. I won't gravel,\n"
- "er, grovel. Here, you win.\n"
- "Take this with you!")
-};
-
-
-// 0x0200BB50
-static const u8 Dialog116[] = {
- _("Whaaa....Whaaat?\n"
- "Can it be that a\n"
- "pipsqueak like you has\n"
- "defused the Bob-omb\n"
- "king????\n"
- "You might be fast enough\n"
- "to ground me, but you'll\n"
- "have to pick up the pace\n"
- "if you want to take King\n"
- "Bowser by the tail.\n"
- "Methinks my troops could\n"
- "learn a lesson from you!\n"
- "Here is your Star, as I\n"
- "promised, Mario.\n"
- "\n"
- "If you want to see me\n"
- "again, select this Star\n"
- "from the menu. For now,\n"
- "farewell.")
-};
-
-
-// 0x0200BBDC
-static const u8 Dialog117[] = {
- _("Who...walk...here?\n"
- "Who...break...seal?\n"
- "Wake..ancient..ones?\n"
- "We no like light...\n"
- "Rrrrummbbble...\n"
- "We no like...intruders!\n"
- "Now battle...\n"
- "...hand...\n"
- "...to...\n"
- "...hand!")
-};
-
-
-// 0x0200BC28
-static const u8 Dialog118[] = {
- _("Grrrrumbbble!\n"
- "What...happen?\n"
- "We...crushed like pebble.\n"
- "You so strong!\n"
- "You rule ancient pyramid!\n"
- "For today...\n"
- "Now, take Star of Power.\n"
- "We...sleep...darkness.")
-};
-
-
-// 0x0200BC68
-static const u8 Dialog119[] = {
- _("Grrr! I was a bit\n"
- "careless. This is not as I\n"
- "had planned...but I still\n"
- "hold the power of the\n"
- "Stars, and I still have\n"
- "Peach.\n"
- "Bwa ha ha! You'll get no\n"
- "more Stars from me! I'm\n"
- "not finished with you yet,\n"
- "but I'll let you go for\n"
- "now. You'll pay for this...\n"
- "later!")
-};
-
-
-// 0x0200BD0C
-static const u8 Dialog120[] = {
- _("Ooowaah! Can it be that\n"
- "I've lost??? The power of\n"
- "the Stars has failed me...\n"
- "this time.\n"
- "Consider this a draw.\n"
- "Next time, I'll be in\n"
- "perfect condition.\n"
- "\n"
- "Now, if you want to see\n"
- "your precious Princess,\n"
- "come to the top of the\n"
- "tower.\n"
- "I'll be waiting!\n"
- "Gwa ha ha ha!")
-};
-
-
-// 0x0200BDA4
-static const u8 Dialog121[] = {
- _("Nooo! It can't be!\n"
- "You've really beaten me,\n"
- "Mario?!! I gave those\n"
- "troops power, but now\n"
- "it's fading away!\n"
- "Arrgghh! I can see peace\n"
- "returning to the world! I\n"
- "can't stand it! Hmmm...\n"
- "It's not over yet...\n"
- "\n"
- "C'mon troops! Let's watch\n"
- "the ending together!\n"
- "Bwa ha ha!")
-};
-
-
-// 0x0200BE8C
-static const u8 Dialog122[] = {
- _("The Black Hole\n"
- "Right: Work Elevator\n"
- "/// Cloudy Maze\n"
- "Left: Underground Lake")
-};
-
-
-// 0x0200BEC0
-static const u8 Dialog123[] = {
- _("Metal Cavern\n"
- "Right: To Waterfall\n"
- "Left: Metal Cap Switch")
-};
-
-
-// 0x0200BEEC
-static const u8 Dialog124[] = {
- _("Work Elevator\n"
- "Danger!!\n"
- "Read instructions\n"
- "thoroughly!\n"
- "Elevator continues in the\n"
- "direction of the arrow\n"
- "activated.")
-};
-
-
-// 0x0200BF48
-static const u8 Dialog125[] = {
- _("Hazy Maze-Exit\n"
- "Danger! Closed.\n"
- "Turn back now.")
-};
-
-
-// 0x0200BF74
-static const u8 Dialog126[] = {
- _("Up: Black Hole\n"
- "Right: Work Elevator\n"
- "/// Hazy Maze")
-};
-
-
-// 0x0200BFA8
-static const u8 Dialog127[] = {
- _("Underground Lake\n"
- "Right: Metal Cave\n"
- "Left: Abandoned Mine\n"
- "///(Closed)\n"
- "A gentle sea dragon lives\n"
- "here. Pound on his back to\n"
- "make him lower his head.\n"
- "Don't become his lunch.")
-};
-
-
-// 0x0200C024
-static const u8 Dialog128[] = {
- _("You must fight with\n"
- "honor! It is against the\n"
- "royal rules to throw the\n"
- "king out of the ring!")
-};
-
-
-// 0x0200C060
-static const u8 Dialog129[] = {
- _("Welcome to the Vanish\n"
- "Cap Switch Course! All of\n"
- "the blue blocks you find\n"
- "will become solid once you\n"
- "step on the Cap Switch.\n"
- "You'll disappear when you\n"
- "put on the Vanish Cap, so\n"
- "you'll be able to elude\n"
- "enemies and walk through\n"
- "many things. Try it out!")
-};
-
-
-// 0x0200C0DC
-static const u8 Dialog130[] = {
- _("Welcome to the Metal Cap\n"
- "Switch Course! Once you\n"
- "step on the Cap Switch,\n"
- "the green blocks will\n"
- "become solid.\n"
- "When you turn your body\n"
- "into metal with the Metal\n"
- "Cap, you can walk\n"
- "underwater! Try it!")
-};
-
-
-// 0x0200C154
-static const u8 Dialog131[] = {
- _("Welcome to the Wing Cap\n"
- "Course! Step on the red\n"
- "switch at the top of the\n"
- "tower, in the center of\n"
- "the rainbow ring.\n"
- "When you trigger the\n"
- "switch, all of the red\n"
- "blocks you find will\n"
- "become solid.\n"
- "\n"
- "Try out the Wing Cap! Do\n"
- "the Triple Jump to take\n"
- "off and press [Z] to land.\n"
- "\n"
- "\n"
- "Pull back on the Control\n"
- "Stick to go up and push\n"
- "forward to nose down,\n"
- "just as you would when\n"
- "flying an airplane.")
-};
-
-
-// 0x0200C21C
-static const u8 Dialog132[] = {
- _("Whoa, Mario, pal, you\n"
- "aren't trying to cheat,\n"
- "are you? Shortcuts aren't\n"
- "allowed.\n"
- "Now, I know that you\n"
- "know better. You're\n"
- "disqualified! Next time,\n"
- "play fair!")
-};
-
-
-// 0x0200C250
-static const u8 Dialog133[] = {
- _("Am I glad to see you! The\n"
- "Princess...and I...and,\n"
- "well, everybody...we're all\n"
- "trapped inside the castle\n"
- "walls.\n"
- "\n"
- "Bowser has stolen the\n"
- "castle's Stars, and he's\n"
- "using their power to\n"
- "create his own world in\n"
- "the paintings and walls.\n"
- "\n"
- "Please recover the Power\n"
- "Stars! As you find them,\n"
- "you can use their power\n"
- "to open the doors that\n"
- "Bowser has sealed.\n"
- "\n"
- "There are four rooms on\n"
- "the first floor. Start in\n"
- "the one with the painting\n"
- "of Bob-omb inside. It's\n"
- "the only room that Bowser\n"
- "hasn't sealed.\n"
- "When you collect eight\n"
- "Power Stars, you'll be\n"
- "able to open the door\n"
- "with the big star. The\n"
- "Princess must be inside!")
-};
-
-
-// 0x0200C398
-static const u8 Dialog134[] = {
- _("The names of the Stars\n"
- "are also hints for\n"
- "finding them. They are\n"
- "displayed at the beginning\n"
- "of each course.\n"
- "You can collect the Stars\n"
- "in any order. You won't\n"
- "find some Stars, enemies\n"
- "or items unless you select\n"
- "a specific Star.\n"
- "After you collect some\n"
- "Stars, you can try\n"
- "another course.\n"
- "We're all waiting for\n"
- "your help!")
-};
-
-
-// 0x0200C468
-static const u8 Dialog135[] = {
- _("It was Bowser who stole\n"
- "the Stars. I saw him with\n"
- "my own eyes!\n"
- "\n"
- "\n"
- "He's hidden six Stars in\n"
- "each course, but you\n"
- "won't find all of them in\n"
- "some courses until you\n"
- "press the Cap Switches.\n"
- "The Stars you've found\n"
- "will show on each course's\n"
- "starting screen.\n"
- "\n"
- "\n"
- "If you want to see some\n"
- "of the enemies you've\n"
- "already defeated, select\n"
- "the Stars you recovered\n"
- "from them.")
-};
-
-
-// 0x0200C534
-static const u8 Dialog136[] = {
- _("Wow! You've already\n"
- "recovered that many\n"
- "Stars? Way to go, Mario!\n"
- "I'll bet you'll have us out\n"
- "of here in no time!\n"
- "\n"
- "Be careful, though.\n"
- "Bowser and his band\n"
- "wrote the book on 『bad.』\n"
- "Take my advice: When you\n"
- "need to recover from\n"
- "injuries, collect coins.\n"
- "Yellow Coins refill one\n"
- "piece of the Power Meter,\n"
- "Red Coins refill two\n"
- "pieces, and Blue Coins\n"
- "refill five.\n"
- "\n"
- "To make Blue Coins\n"
- "appear, pound on Blue\n"
- "Coin Blocks.\n"
- "\n"
- "\n"
- "\n"
- "Also, if you fall from\n"
- "high places, you'll\n"
- "minimize damage if you\n"
- "Pound the Ground as you\n"
- "land.")
-};
-
-
-// 0x0200C614
-static const u8 Dialog137[] = {
- _("Thanks, Mario! The castle\n"
- "is recovering its energy\n"
- "as you retrieve Power\n"
- "Stars, and you've chased\n"
- "Bowser right out of here,\n"
- "on to some area ahead.\n"
- "Oh, by the by, are you\n"
- "collecting coins? Special\n"
- "Stars appear when you\n"
- "collect 100 coins in each\n"
- "of the 15 courses!")
-};
-
-
-// 0x0200C698
-static const u8 Dialog138[] = {
- _("Down: Underground Lake\n"
- "Left: Black Hole\n"
- "Right: Hazy Maze (Closed)")
-};
-
-
-// 0x0200C6D8
-static const u8 Dialog139[] = {
- _("Above: Automatic Elevator\n"
- "Elevator begins\n"
- "automatically and follows\n"
- "pre-set course.\n"
- "It disappears\n"
- "automatically, too.")
-};
-
-
-// 0x0200C72C
-static const u8 Dialog140[] = {
- _("Elevator Area\n"
- "Right: Hazy Maze\n"
- "/// Entrance\n"
- "Left: Black Hole\n"
- "///Elevator 1\n"
- "Arrow: You are here")
-};
-
-
-// 0x0200C780
-static const u8 Dialog141[] = {
- _("You've recovered one of\n"
- "the stolen Power Stars!\n"
- "Now you can open some of\n"
- "the sealed doors in the\n"
- "castle.\n"
- "Try the Princess's room\n"
- "on the second floor and\n"
- "the room with the\n"
- "painting of Whomp's\n"
- "Fortress on Floor 1.\n"
- "Bowser's troops are still\n"
- "gaining power, so you\n"
- "can't give up. Save us,\n"
- "Mario! Keep searching for\n"
- "Stars!")
-};
-
-
-// 0x0200C83C
-static const u8 Dialog142[] = {
- _("You've recovered three\n"
- "Power Stars! Now you can\n"
- "open any door with a 3\n"
- "on its star.\n"
- "\n"
- "You can come and go from\n"
- "the open courses as you\n"
- "please. The enemies ahead\n"
- "are even meaner, so be\n"
- "careful!")
-};
-
-
-// 0x0200C8BC
-static const u8 Dialog143[] = {
- _("You've recovered eight of\n"
- "the Power Stars! Now you\n"
- "can open the door with\n"
- "the big Star! But Bowser\n"
- "is just ahead...can you\n"
- "hear the Princess calling?")
-};
-
-
-// 0x0200C90C
-static const u8 Dialog144[] = {
- _("You've recovered 30\n"
- "Power Stars! Now you can\n"
- "open the door with the\n"
- "big Star! But before you\n"
- "move on, how's it going\n"
- "otherwise?\n"
- "Did you pound the two\n"
- "columns down? You didn't\n"
- "lose your hat, did you?\n"
- "If you did, you'll have to\n"
- "stomp on the condor to\n"
- "get it back!\n"
- "They say that Bowser has\n"
- "sneaked out of the sea\n"
- "and into the underground.\n"
- "Have you finally\n"
- "cornered him?")
-};
-
-
-// 0x0200C9C4
-static const u8 Dialog145[] = {
- _("You've recovered 50\n"
- "Power Stars! Now you can\n"
- "open the Star Door on the\n"
- "third floor. Bowser's\n"
- "there, you know.\n"
- "\n"
- "Oh! You've found all of\n"
- "the Cap Switches, haven't\n"
- "you? Red, green and blue?\n"
- "The Caps you get from the\n"
- "colored blocks are really\n"
- "helpful.\n"
- "Hurry along, now. The\n"
- "third floor is just ahead.")
-};
-
-
-// 0x0200CA5C
-static const u8 Dialog146[] = {
- _("You've found 70 Power\n"
- "Stars! The mystery of the\n"
- "endless stairs is solved,\n"
- "thanks to you--and is\n"
- "Bowser ever upset! Now,\n"
- "on to the final bout!")
-};
-
-
-// 0x0200CAAC
-static const u8 Dialog147[] = {
- _("Are you using the Cap\n"
- "Blocks? You really should,\n"
- "you know.\n"
- "\n"
- "\n"
- "To make them solid so you\n"
- "can break them, you have\n"
- "to press the colored Cap\n"
- "Switches in the castle's\n"
- "hidden courses.\n"
- "You'll find the hidden\n"
- "courses only after\n"
- "regaining some of the\n"
- "Power Stars.\n"
- "\n"
- "The Cap Blocks are a big\n"
- "help! Red for the Wing\n"
- "Cap, green for the Metal\n"
- "Cap, blue for the Vanish\n"
- "Cap.")
-};
-
-
-// 0x0200CB64
-static const u8 Dialog148[] = {
- _("Snowman Mountain ahead.\n"
- "Keep out! And don't try\n"
- "the Triple Jump over the\n"
- "ice block shooter.\n"
- "\n"
- "\n"
- "If you fall into the\n"
- "freezing pond, your power\n"
- "decreases quickly, and\n"
- "you won't recover\n"
- "automatically.\n"
- "//--The Snowman")
-};
-
-
-// 0x0200CBE0
-static const u8 Dialog149[] = {
- _("Welcome to\n"
- "Princess Toadstool's\n"
- "secret slide!\n"
- "There's a Star hidden\n"
- "here that Bowser couldn't\n"
- "find.\n"
- "When you slide, press\n"
- "forward to speed up,\n"
- "pull back to slow down.\n"
- "If you slide really\n"
- "fast, you'll win the Star!")
-};
-
-
-// 0x0200CC6C
-static const u8 Dialog150[] = {
- _("Waaaa! You've flooded my\n"
- "house! Wh-why?? Look at\n"
- "this mess! What am I\n"
- "going to do now?\n"
- "\n"
- "The ceiling's ruined, the\n"
- "floor is soaked...what to\n"
- "do, what to do? Huff...\n"
- "huff...it makes me so...\n"
- "MAD!!!\n"
- "Everything's been going\n"
- "wrong ever since I got\n"
- "this Star...It's so shiny,\n"
- "but it makes me feel...\n"
- "strange...")
-};
-
-
-// 0x0200CCAC
-static const u8 Dialog151[] = {
- _("I can't take this\n"
- "anymore! First you get\n"
- "me all wet, then you\n"
- "stomp on me!\n"
- "Now I'm really, really,\n"
- "REALLY mad!\n"
- "Waaaaaaaaaaaaaaaaa!!!")
-};
-
-
-// 0x0200CCDC
-static const u8 Dialog152[] = {
- _("Owwch! Uncle! Uncle!\n"
- "Okay, I give. Take this\n"
- "Star!\n"
- "Whew! I feel better now.\n"
- "I don't really need it\n"
- "anymore, anyway--\n"
- "I can see the stars\n"
- "through my ceiling at\n"
- "night.\n"
- "They make me feel...\n"
- "...peaceful. Please, come\n"
- "back and visit anytime.")
-};
-
-
-// 0x0200CD58
-static const u8 Dialog153[] = {
- _("Hey! Who's there?\n"
- "What's climbing on me?\n"
- "Is it an ice ant?\n"
- "A snow flea?\n"
- "Whatever it is, it's\n"
- "bugging me! I think I'll\n"
- "blow it away!")
-};
-
-
-// 0x0200CD8C
-static const u8 Dialog154[] = {
- _("Hold on to your hat! If\n"
- "you lose it, you'll be\n"
- "easily injured. If you\n"
- "lose it, look for it in the\n"
- "course where you lost it.\n"
- "Speaking of lost, the\n"
- "Princess is still stuck in\n"
- "the walls somewhere.\n"
- "Please help, Mario!\n"
- "\n"
- "Oh, you know that there\n"
- "are secret worlds in the\n"
- "walls as well as in the\n"
- "paintings, right?")
-};
-
-
-// 0x0200CE48
-static const u8 Dialog155[] = {
- _("Thanks to the power of\n"
- "the Stars, life is\n"
- "returning to the castle.\n"
- "Please, Mario, you have\n"
- "to give Bowser the boot!\n"
- "\n"
- "Here, let me tell you a\n"
- "little something about the\n"
- "castle. In the room with\n"
- "the mirrors, look carefully\n"
- "for anything that's not\n"
- "reflected in the mirror.\n"
- "And when you go to the\n"
- "water town, you can flood\n"
- "it with a high jump into\n"
- "the painting.")
-};
-
-
-// 0x0200CEFC
-static const u8 Dialog156[] = {
- _("The world inside the\n"
- "clock is so strange!\n"
- "When you jump inside,\n"
- "watch the position of\n"
- "the big hand!")
-};
-
-
-// 0x0200CF34
-static const u8 Dialog157[] = {
- _("Watch out! Don't let\n"
- "yourself be swallowed by\n"
- "quicksand.\n"
- "\n"
- "\n"
- "If you sink into the sand,\n"
- "you won't be able to\n"
- "jump, and if your head\n"
- "goes under, you'll be\n"
- "smothered.\n"
- "The dark areas are\n"
- "bottomless pits.")
-};
-
-
-// 0x0200CFAC
-static const u8 Dialog158[] = {
- _("1. If you jump repeatedly\n"
- "and time it right, you'll\n"
- "jump higher and higher.\n"
- "If you run really fast and\n"
- "time three jumps right,\n"
- "you can do a Triple Jump.\n"
- "2. Jump into a solid wall,\n"
- "then jump again when you\n"
- "hit the wall. You can\n"
- "bounce to a higher level\n"
- "using this Wall Kick.")
-};
-
-
-// 0x0200D078
-static const u8 Dialog159[] = {
- _("3. If you stop, press [Z]\n"
- "to crouch, then jump, you\n"
- "can perform a Backward\n"
- "Somersault. To do a Long\n"
- "Jump, run fast, press [Z],\n"
- "then jump.")
-};
-
-
-// 0x0200D0F8
-static const u8 Dialog160[] = {
- _("Press [B] while running\n"
- "fast to do a Body Slide\n"
- "attack. To stand while\n"
- "sliding, press [A] or [B].")
-};
-
-
-// 0x0200D158
-static const u8 Dialog161[] = {
- _("Mario!!!\n"
- "It that really you???\n"
- "It has been so long since\n"
- "our last adventure!\n"
- "They told me that I might\n"
- "see you if I waited here,\n"
- "but I'd just about given\n"
- "up hope!\n"
- "Is it true? Have you\n"
- "really beaten Bowser? And\n"
- "restored the Stars to the\n"
- "castle?\n"
- "And saved the Princess?\n"
- "I knew you could do it!\n"
- "Now I have a very special\n"
- "message for you.\n"
- "『Thanks for playing Super\n"
- "Mario 64! This is the\n"
- "end of the game, but not\n"
- "the end of the fun.\n"
- "We want you to keep on\n"
- "playing, so we have a\n"
- "little something for you.\n"
- "We hope that you like it!\n"
- "Enjoy!!!』\n"
- "\n"
- "The Super Mario 64 Team")
-};
-
-
-// 0x0200D1E4
-static const u8 Dialog162[] = {
- _("No, no, no! Not you\n"
- "again! I'm in a great\n"
- "hurry, can't you see?\n"
- "\n"
- "I've no time to squabble\n"
- "over Stars. Here, have it.\n"
- "I never meant to hide it\n"
- "from you...\n"
- "It's just that I'm in such\n"
- "a rush. That's it, that's\n"
- "all. Now, I must be off.\n"
- "Owww! Let me go!")
-};
-
-
-// 0x0200D260
-static const u8 Dialog163[] = {
- _("Noooo! You've really\n"
- "beaten me this time,\n"
- "Mario! I can't stand\n"
- "losing to you!\n"
- "\n"
- "My troops...worthless!\n"
- "They've turned over all\n"
- "the Power Stars! What?!\n"
- "There are 120 in all???\n"
- "\n"
- "Amazing! There were some\n"
- "in the castle that I\n"
- "missed??!!\n"
- "\n"
- "\n"
- "Now I see peace\n"
- "returning to the world...\n"
- "Oooo! I really hate that!\n"
- "I can't watch--\n"
- "I'm outta here!\n"
- "Just you wait until next\n"
- "time. Until then, keep\n"
- "that Control Stick\n"
- "smokin'!\n"
- "Buwaa ha ha!")
-};
-
-
-// 0x0200D3A8
-static const u8 Dialog164[] = {
- _("Mario! What's up, pal?\n"
- "I haven't been on the\n"
- "slide lately, so I'm out\n"
- "of shape.\n"
- "Still, I'm always up for a\n"
- "good race, especially\n"
- "against an old sleddin'\n"
- "buddy.\n"
- "Whaddya say?\n"
- "Ready...set...\n"
- "\n"
- "//Go//// Don't Go")
-};
-
-
-// 0x0200D400
-static const u8 Dialog165[] = {
- _("I take no responsibility\n"
- "whatsoever for those who\n"
- "get dizzy and pass out\n"
- "from running around\n"
- "this post.")
-};
-
-
-// 0x0200D424
-static const u8 Dialog166[] = {
- _("I'll be back soon.\n"
- "I'm out training now,\n"
- "so come back later.\n"
- "//--Koopa the Quick")
-};
-
-
-// 0x0200D46C
-static const u8 Dialog167[] = {
- _("Princess Toadstool's\n"
- "castle is just ahead.\n"
- "\n"
- "\n"
- "Press [A] to jump, [Z] to\n"
- "crouch, and [B] to punch,\n"
- "read a sign, or grab\n"
- "something.\n"
- "Press [B] again to throw\n"
- "something you're holding.")
-};
-
-
-// 0x0200D4D4
-static const u8 Dialog168[] = {
- _("Hey! Knock it off! That's\n"
- "the second time you've\n"
- "nailed me. Now you're\n"
- "asking for it, linguine\n"
- "breath!")
-};
-
-
-// 0x0200D504
-static const u8 Dialog169[] = {
- _("Keep out!\n"
- "That means you!\n"
- "Arrgghh!\n"
- "\n"
- "Anyone entering this cave\n"
- "without permission will\n"
- "meet certain disaster.")
-};
-
-
-// dialog table 0x0200D548
-static const struct DialogEntry dialog_text_000 = {
- 1, 6, 30, 200, Dialog000
-};
-
-static const struct DialogEntry dialog_text_001 = {
- 1, 4, 95, 200, Dialog001
-};
-
-static const struct DialogEntry dialog_text_002 = {
- 1, 4, 95, 200, Dialog002
-};
-
-static const struct DialogEntry dialog_text_003 = {
- 1, 5, 95, 200, Dialog003
-};
-
-static const struct DialogEntry dialog_text_004 = {
- 1, 3, 95, 200, Dialog004
-};
-
-static const struct DialogEntry dialog_text_005 = {
- 1, 3, 30, 200, Dialog005
-};
-
-static const struct DialogEntry dialog_text_006 = {
- 1, 3, 30, 200, Dialog006
-};
-
-static const struct DialogEntry dialog_text_007 = {
- 1, 5, 30, 200, Dialog007
-};
-
-static const struct DialogEntry dialog_text_008 = {
- 1, 4, 30, 200, Dialog008
-};
-
-static const struct DialogEntry dialog_text_009 = {
- 1, 5, 30, 200, Dialog009
-};
-
-static const struct DialogEntry dialog_text_010 = {
- 1, 4, 30, 200, Dialog010
-};
-
-static const struct DialogEntry dialog_text_011 = {
- 1, 4, 30, 200, Dialog011
-};
-
-static const struct DialogEntry dialog_text_012 = {
- 1, 4, 30, 200, Dialog012
-};
-
-static const struct DialogEntry dialog_text_013 = {
- 1, 5, 30, 200, Dialog013
-};
-
-static const struct DialogEntry dialog_text_014 = {
- 1, 4, 30, 200, Dialog014
-};
-
-static const struct DialogEntry dialog_text_015 = {
- 1, 4, 30, 200, Dialog015
-};
-
-static const struct DialogEntry dialog_text_016 = {
- 1, 3, 30, 200, Dialog016
-};
-
-static const struct DialogEntry dialog_text_017 = {
- 1, 4, 30, 200, Dialog017
-};
-
-static const struct DialogEntry dialog_text_018 = {
- 1, 4, 30, 200, Dialog018
-};
-
-static const struct DialogEntry dialog_text_019 = {
- 1, 2, 30, 200, Dialog019
-};
-
-static const struct DialogEntry dialog_text_020 = {
- 1, 6, 95, 150, Dialog020
-};
-
-static const struct DialogEntry dialog_text_021 = {
- 1, 5, 95, 200, Dialog021
-};
-
-static const struct DialogEntry dialog_text_022 = {
- 1, 2, 95, 200, Dialog022
-};
-
-static const struct DialogEntry dialog_text_023 = {
- 1, 3, 95, 200, Dialog023
-};
-
-static const struct DialogEntry dialog_text_024 = {
- 1, 5, 95, 200, Dialog024
-};
-
-static const struct DialogEntry dialog_text_025 = {
- 1, 4, 95, 200, Dialog025
-};
-
-static const struct DialogEntry dialog_text_026 = {
- 1, 4, 95, 200, Dialog026
-};
-
-static const struct DialogEntry dialog_text_027 = {
- 1, 4, 95, 200, Dialog027
-};
-
-static const struct DialogEntry dialog_text_028 = {
- 1, 4, 95, 200, Dialog028
-};
-
-static const struct DialogEntry dialog_text_029 = {
- 1, 5, 95, 200, Dialog029
-};
-
-static const struct DialogEntry dialog_text_030 = {
- 1, 6, 30, 200, Dialog030
-};
-
-static const struct DialogEntry dialog_text_031 = {
- 1, 5, 30, 200, Dialog031
-};
-
-static const struct DialogEntry dialog_text_032 = {
- 1, 5, 30, 200, Dialog032
-};
-
-static const struct DialogEntry dialog_text_033 = {
- 1, 6, 30, 200, Dialog033
-};
-
-static const struct DialogEntry dialog_text_034 = {
- 1, 6, 30, 200, Dialog034
-};
-
-static const struct DialogEntry dialog_text_035 = {
- 1, 5, 30, 200, Dialog035
-};
-
-static const struct DialogEntry dialog_text_036 = {
- 1, 5, 30, 200, Dialog036
-};
-
-static const struct DialogEntry dialog_text_037 = {
- 1, 2, 30, 200, Dialog037
-};
-
-static const struct DialogEntry dialog_text_038 = {
- 1, 3, 95, 200, Dialog038
-};
-
-static const struct DialogEntry dialog_text_039 = {
- 1, 4, 30, 200, Dialog039
-};
-
-static const struct DialogEntry dialog_text_040 = {
- 1, 3, 30, 200, Dialog040
-};
-
-static const struct DialogEntry dialog_text_041 = {
- 1, 3, 30, 200, Dialog041
-};
-
-static const struct DialogEntry dialog_text_042 = {
- 1, 4, 30, 200, Dialog042
-};
-
-static const struct DialogEntry dialog_text_043 = {
- 1, 5, 30, 200, Dialog043
-};
-
-static const struct DialogEntry dialog_text_044 = {
- 1, 5, 95, 200, Dialog044
-};
-
-static const struct DialogEntry dialog_text_045 = {
- 1, 6, 95, 200, Dialog045
-};
-
-static const struct DialogEntry dialog_text_046 = {
- 1, 5, 30, 200, Dialog046
-};
-
-static const struct DialogEntry dialog_text_047 = {
- 1, 2, 95, 200, Dialog047
-};
-
-static const struct DialogEntry dialog_text_048 = {
- 1, 4, 30, 200, Dialog048
-};
-
-static const struct DialogEntry dialog_text_049 = {
- 1, 5, 30, 200, Dialog049
-};
-
-static const struct DialogEntry dialog_text_050 = {
- 1, 4, 30, 200, Dialog050
-};
-
-static const struct DialogEntry dialog_text_051 = {
- 1, 6, 30, 200, Dialog051
-};
-
-static const struct DialogEntry dialog_text_052 = {
- 1, 5, 30, 200, Dialog052
-};
-
-static const struct DialogEntry dialog_text_053 = {
- 1, 5, 30, 200, Dialog053
-};
-
-static const struct DialogEntry dialog_text_054 = {
- 1, 5, 30, 200, Dialog054
-};
-
-static const struct DialogEntry dialog_text_055 = {
- 1, 4, 30, 200, Dialog055
-};
-
-static const struct DialogEntry dialog_text_056 = {
- 1, 6, 30, 200, Dialog056
-};
-
-static const struct DialogEntry dialog_text_057 = {
- 1, 4, 30, 200, Dialog057
-};
-
-static const struct DialogEntry dialog_text_058 = {
- 1, 4, 30, 200, Dialog058
-};
-
-static const struct DialogEntry dialog_text_059 = {
- 1, 4, 30, 200, Dialog059
-};
-
-static const struct DialogEntry dialog_text_060 = {
- 1, 4, 30, 200, Dialog060
-};
-
-static const struct DialogEntry dialog_text_061 = {
- 1, 4, 30, 200, Dialog061
-};
-
-static const struct DialogEntry dialog_text_062 = {
- 1, 3, 30, 200, Dialog062
-};
-
-static const struct DialogEntry dialog_text_063 = {
- 1, 5, 30, 200, Dialog063
-};
-
-static const struct DialogEntry dialog_text_064 = {
- 1, 5, 30, 200, Dialog064
-};
-
-static const struct DialogEntry dialog_text_065 = {
- 1, 6, 30, 200, Dialog065
-};
-
-static const struct DialogEntry dialog_text_066 = {
- 1, 5, 30, 200, Dialog066
-};
-
-static const struct DialogEntry dialog_text_067 = {
- 1, 5, 30, 200, Dialog067
-};
-
-static const struct DialogEntry dialog_text_068 = {
- 1, 5, 30, 200, Dialog068
-};
-
-static const struct DialogEntry dialog_text_069 = {
- 1, 6, 30, 200, Dialog069
-};
-
-static const struct DialogEntry dialog_text_070 = {
- 1, 5, 30, 200, Dialog070
-};
-
-static const struct DialogEntry dialog_text_071 = {
- 1, 3, 30, 200, Dialog071
-};
-
-static const struct DialogEntry dialog_text_072 = {
- 1, 5, 30, 200, Dialog072
-};
-
-static const struct DialogEntry dialog_text_073 = {
- 1, 4, 95, 200, Dialog073
-};
-
-static const struct DialogEntry dialog_text_074 = {
- 1, 5, 30, 200, Dialog074
-};
-
-static const struct DialogEntry dialog_text_075 = {
- 1, 5, 30, 200, Dialog075
-};
-
-static const struct DialogEntry dialog_text_076 = {
- 1, 6, 30, 200, Dialog076
-};
-
-static const struct DialogEntry dialog_text_077 = {
- 1, 2, 150, 200, Dialog077
-};
-
-static const struct DialogEntry dialog_text_078 = {
- 1, 5, 30, 200, Dialog078
-};
-
-static const struct DialogEntry dialog_text_079 = {
- 1, 4, 30, 200, Dialog079
-};
-
-static const struct DialogEntry dialog_text_080 = {
- 1, 1, 30, 200, Dialog080
-};
-
-static const struct DialogEntry dialog_text_081 = {
- 1, 4, 30, 200, Dialog081
-};
-
-static const struct DialogEntry dialog_text_082 = {
- 1, 4, 30, 200, Dialog082
-};
-
-static const struct DialogEntry dialog_text_083 = {
- 1, 6, 30, 200, Dialog083
-};
-
-static const struct DialogEntry dialog_text_084 = {
- 1, 3, 30, 200, Dialog084
-};
-
-static const struct DialogEntry dialog_text_085 = {
- 1, 5, 30, 200, Dialog085
-};
-
-static const struct DialogEntry dialog_text_086 = {
- 1, 3, 30, 200, Dialog086
-};
-
-static const struct DialogEntry dialog_text_087 = {
- 1, 4, 30, 200, Dialog087
-};
-
-static const struct DialogEntry dialog_text_088 = {
- 1, 5, 30, 200, Dialog088
-};
-
-static const struct DialogEntry dialog_text_089 = {
- 1, 5, 95, 200, Dialog089
-};
-
-static const struct DialogEntry dialog_text_090 = {
- 1, 6, 30, 200, Dialog090
-};
-
-static const struct DialogEntry dialog_text_091 = {
- 2, 2, 30, 200, Dialog091
-};
-
-static const struct DialogEntry dialog_text_092 = {
- 1, 5, 30, 200, Dialog092
-};
-
-static const struct DialogEntry dialog_text_093 = {
- 1, 5, 30, 200, Dialog093
-};
-
-static const struct DialogEntry dialog_text_094 = {
- 1, 4, 30, 200, Dialog094
-};
-
-static const struct DialogEntry dialog_text_095 = {
- 1, 4, 30, 200, Dialog095
-};
-
-static const struct DialogEntry dialog_text_096 = {
- 1, 4, 30, 200, Dialog096
-};
-
-static const struct DialogEntry dialog_text_097 = {
- 1, 5, 30, 200, Dialog097
-};
-
-static const struct DialogEntry dialog_text_098 = {
- 1, 2, 95, 200, Dialog098
-};
-
-static const struct DialogEntry dialog_text_099 = {
- 1, 5, 95, 200, Dialog099
-};
-
-static const struct DialogEntry dialog_text_100 = {
- 1, 3, 95, 200, Dialog100
-};
-
-static const struct DialogEntry dialog_text_101 = {
- 1, 3, 95, 200, Dialog101
-};
-
-static const struct DialogEntry dialog_text_102 = {
- 1, 5, 30, 200, Dialog102
-};
-
-static const struct DialogEntry dialog_text_103 = {
- 1, 4, 95, 200, Dialog103
-};
-
-static const struct DialogEntry dialog_text_104 = {
- 1, 5, 30, 200, Dialog104
-};
-
-static const struct DialogEntry dialog_text_105 = {
- 1, 3, 95, 200, Dialog105
-};
-
-static const struct DialogEntry dialog_text_106 = {
- 1, 2, 95, 200, Dialog106
-};
-
-static const struct DialogEntry dialog_text_107 = {
- 1, 3, 95, 200, Dialog107
-};
-
-static const struct DialogEntry dialog_text_108 = {
- 1, 2, 95, 200, Dialog108
-};
-
-static const struct DialogEntry dialog_text_109 = {
- 1, 4, 95, 200, Dialog109
-};
-
-static const struct DialogEntry dialog_text_110 = {
- 1, 5, 95, 200, Dialog110
-};
-
-static const struct DialogEntry dialog_text_111 = {
- 1, 4, 95, 200, Dialog111
-};
-
-static const struct DialogEntry dialog_text_112 = {
- 1, 4, 30, 200, Dialog112
-};
-
-static const struct DialogEntry dialog_text_113 = {
- 1, 6, 30, 200, Dialog113
-};
-
-static const struct DialogEntry dialog_text_114 = {
- 1, 5, 95, 200, Dialog114
-};
-
-static const struct DialogEntry dialog_text_115 = {
- 1, 5, 95, 200, Dialog115
-};
-
-static const struct DialogEntry dialog_text_116 = {
- 1, 5, 95, 200, Dialog116
-};
-
-static const struct DialogEntry dialog_text_117 = {
- 1, 1, 95, 200, Dialog117
-};
-
-static const struct DialogEntry dialog_text_118 = {
- 1, 6, 95, 200, Dialog118
-};
-
-static const struct DialogEntry dialog_text_119 = {
- 1, 6, 30, 200, Dialog119
-};
-
-static const struct DialogEntry dialog_text_120 = {
- 1, 4, 30, 200, Dialog120
-};
-
-static const struct DialogEntry dialog_text_121 = {
- 1, 5, 30, 200, Dialog121
-};
-
-static const struct DialogEntry dialog_text_122 = {
- 1, 4, 30, 200, Dialog122
-};
-
-static const struct DialogEntry dialog_text_123 = {
- 1, 4, 30, 200, Dialog123
-};
-
-static const struct DialogEntry dialog_text_124 = {
- 1, 4, 30, 200, Dialog124
-};
-
-static const struct DialogEntry dialog_text_125 = {
- 1, 3, 30, 200, Dialog125
-};
-
-static const struct DialogEntry dialog_text_126 = {
- 2, 3, 30, 200, Dialog126
-};
-
-static const struct DialogEntry dialog_text_127 = {
- 3, 4, 30, 200, Dialog127
-};
-
-static const struct DialogEntry dialog_text_128 = {
- 1, 4, 95, 200, Dialog128
-};
-
-static const struct DialogEntry dialog_text_129 = {
- 1, 5, 30, 200, Dialog129
-};
-
-static const struct DialogEntry dialog_text_130 = {
- 1, 5, 30, 200, Dialog130
-};
-
-static const struct DialogEntry dialog_text_131 = {
- 1, 5, 30, 200, Dialog131
-};
-
-static const struct DialogEntry dialog_text_132 = {
- 1, 4, 30, 200, Dialog132
-};
-
-static const struct DialogEntry dialog_text_133 = {
- 1, 6, 30, 200, Dialog133
-};
-
-static const struct DialogEntry dialog_text_134 = {
- 1, 5, 30, 200, Dialog134
-};
-
-static const struct DialogEntry dialog_text_135 = {
- 1, 5, 30, 200, Dialog135
-};
-
-static const struct DialogEntry dialog_text_136 = {
- 1, 6, 30, 200, Dialog136
-};
-
-static const struct DialogEntry dialog_text_137 = {
- 1, 6, 30, 200, Dialog137
-};
-
-static const struct DialogEntry dialog_text_138 = {
- 1, 3, 30, 200, Dialog138
-};
-
-static const struct DialogEntry dialog_text_139 = {
- 1, 6, 30, 200, Dialog139
-};
-
-static const struct DialogEntry dialog_text_140 = {
- 1, 6, 30, 200, Dialog140
-};
-
-static const struct DialogEntry dialog_text_141 = {
- 1, 5, 150, 200, Dialog141
-};
-
-static const struct DialogEntry dialog_text_142 = {
- 1, 5, 150, 200, Dialog142
-};
-
-static const struct DialogEntry dialog_text_143 = {
- 1, 6, 150, 200, Dialog143
-};
-
-static const struct DialogEntry dialog_text_144 = {
- 1, 6, 150, 200, Dialog144
-};
-
-static const struct DialogEntry dialog_text_145 = {
- 1, 6, 150, 200, Dialog145
-};
-
-static const struct DialogEntry dialog_text_146 = {
- 1, 6, 150, 200, Dialog146
-};
-
-static const struct DialogEntry dialog_text_147 = {
- 1, 5, 30, 200, Dialog147
-};
-
-static const struct DialogEntry dialog_text_148 = {
- 1, 6, 30, 200, Dialog148
-};
-
-static const struct DialogEntry dialog_text_149 = {
- 1, 3, 30, 200, Dialog149
-};
-
-static const struct DialogEntry dialog_text_150 = {
- 1, 5, 30, 200, Dialog150
-};
-
-static const struct DialogEntry dialog_text_151 = {
- 1, 4, 30, 200, Dialog151
-};
-
-static const struct DialogEntry dialog_text_152 = {
- 1, 3, 30, 200, Dialog152
-};
-
-static const struct DialogEntry dialog_text_153 = {
- 1, 4, 30, 200, Dialog153
-};
-
-static const struct DialogEntry dialog_text_154 = {
- 1, 5, 30, 200, Dialog154
-};
-
-static const struct DialogEntry dialog_text_155 = {
- 1, 6, 30, 200, Dialog155
-};
-
-static const struct DialogEntry dialog_text_156 = {
- 1, 5, 30, 200, Dialog156
-};
-
-static const struct DialogEntry dialog_text_157 = {
- 1, 5, 30, 200, Dialog157
-};
-
-static const struct DialogEntry dialog_text_158 = {
- 1, 6, 30, 200, Dialog158
-};
-
-static const struct DialogEntry dialog_text_159 = {
- 1, 6, 30, 200, Dialog159
-};
-
-static const struct DialogEntry dialog_text_160 = {
- 1, 4, 30, 200, Dialog160
-};
-
-static const struct DialogEntry dialog_text_161 = {
- 1, 4, 30, 200, Dialog161
-};
-
-static const struct DialogEntry dialog_text_162 = {
- 1, 4, 30, 200, Dialog162
-};
-
-static const struct DialogEntry dialog_text_163 = {
- 1, 5, 30, 200, Dialog163
-};
-
-static const struct DialogEntry dialog_text_164 = {
- 1, 4, 30, 200, Dialog164
-};
-
-static const struct DialogEntry dialog_text_165 = {
- 1, 5, 30, 200, Dialog165
-};
-
-static const struct DialogEntry dialog_text_166 = {
- 1, 4, 30, 200, Dialog166
-};
-
-static const struct DialogEntry dialog_text_167 = {
- 1, 4, 30, 200, Dialog167
-};
-
-static const struct DialogEntry dialog_text_168 = {
- 1, 5, 30, 200, Dialog168
-};
-
-static const struct DialogEntry dialog_text_169 = {
- 1, 4, 30, 200, Dialog169
-};
-
-
-// dialog table
-// 0x0200DFE8
-const struct DialogEntry *const seg2_dialog_table[] = {
- &dialog_text_000, &dialog_text_001, &dialog_text_002, &dialog_text_003,
- &dialog_text_004, &dialog_text_005, &dialog_text_006, &dialog_text_007,
- &dialog_text_008, &dialog_text_009, &dialog_text_010, &dialog_text_011,
- &dialog_text_012, &dialog_text_013, &dialog_text_014, &dialog_text_015,
- &dialog_text_016, &dialog_text_017, &dialog_text_018, &dialog_text_019,
- &dialog_text_020, &dialog_text_021, &dialog_text_022, &dialog_text_023,
- &dialog_text_024, &dialog_text_025, &dialog_text_026, &dialog_text_027,
- &dialog_text_028, &dialog_text_029, &dialog_text_030, &dialog_text_031,
- &dialog_text_032, &dialog_text_033, &dialog_text_034, &dialog_text_035,
- &dialog_text_036, &dialog_text_037, &dialog_text_038, &dialog_text_039,
- &dialog_text_040, &dialog_text_041, &dialog_text_042, &dialog_text_043,
- &dialog_text_044, &dialog_text_045, &dialog_text_046, &dialog_text_047,
- &dialog_text_048, &dialog_text_049, &dialog_text_050, &dialog_text_051,
- &dialog_text_052, &dialog_text_053, &dialog_text_054, &dialog_text_055,
- &dialog_text_056, &dialog_text_057, &dialog_text_058, &dialog_text_059,
- &dialog_text_060, &dialog_text_061, &dialog_text_062, &dialog_text_063,
- &dialog_text_064, &dialog_text_065, &dialog_text_066, &dialog_text_067,
- &dialog_text_068, &dialog_text_069, &dialog_text_070, &dialog_text_071,
- &dialog_text_072, &dialog_text_073, &dialog_text_074, &dialog_text_075,
- &dialog_text_076, &dialog_text_077, &dialog_text_078, &dialog_text_079,
- &dialog_text_080, &dialog_text_081, &dialog_text_082, &dialog_text_083,
- &dialog_text_084, &dialog_text_085, &dialog_text_086, &dialog_text_087,
- &dialog_text_088, &dialog_text_089, &dialog_text_090, &dialog_text_091,
- &dialog_text_092, &dialog_text_093, &dialog_text_094, &dialog_text_095,
- &dialog_text_096, &dialog_text_097, &dialog_text_098, &dialog_text_099,
- &dialog_text_100, &dialog_text_101, &dialog_text_102, &dialog_text_103,
- &dialog_text_104, &dialog_text_105, &dialog_text_106, &dialog_text_107,
- &dialog_text_108, &dialog_text_109, &dialog_text_110, &dialog_text_111,
- &dialog_text_112, &dialog_text_113, &dialog_text_114, &dialog_text_115,
- &dialog_text_116, &dialog_text_117, &dialog_text_118, &dialog_text_119,
- &dialog_text_120, &dialog_text_121, &dialog_text_122, &dialog_text_123,
- &dialog_text_124, &dialog_text_125, &dialog_text_126, &dialog_text_127,
- &dialog_text_128, &dialog_text_129, &dialog_text_130, &dialog_text_131,
- &dialog_text_132, &dialog_text_133, &dialog_text_134, &dialog_text_135,
- &dialog_text_136, &dialog_text_137, &dialog_text_138, &dialog_text_139,
- &dialog_text_140, &dialog_text_141, &dialog_text_142, &dialog_text_143,
- &dialog_text_144, &dialog_text_145, &dialog_text_146, &dialog_text_147,
- &dialog_text_148, &dialog_text_149, &dialog_text_150, &dialog_text_151,
- &dialog_text_152, &dialog_text_153, &dialog_text_154, &dialog_text_155,
- &dialog_text_156, &dialog_text_157, &dialog_text_158, &dialog_text_159,
- &dialog_text_160, &dialog_text_161, &dialog_text_162, &dialog_text_163,
- &dialog_text_164, &dialog_text_165, &dialog_text_166, &dialog_text_167,
- &dialog_text_168, &dialog_text_169, NULL,
-};
-
diff --git a/text/us/dialogs.h b/text/us/dialogs.h
@@ -0,0 +1,2079 @@
+// Parameters: dialog enum ID, (unused), lines per box, left offset, width
+
+DEFINE_DIALOG(DIALOG_000, 1, 6, 30, 200, _("\
+Wow! You're smack in the\n\
+middle of the battlefield.\n\
+You'll find the Power\n\
+Stars that Bowser stole\n\
+inside the painting\n\
+worlds.\n\
+First, talk to the\n\
+Bob-omb Buddy. (Press [B]\n\
+to talk.) He'll certainly\n\
+help you out, and so will\n\
+his comrades in other\n\
+areas.\n\
+To read signs, stop, face\n\
+them and press [B]. Press [A]\n\
+or [B] to scroll ahead. You\n\
+can talk to some other\n\
+characters by facing them\n\
+and pressing [B]."))
+
+DEFINE_DIALOG(DIALOG_001, 1, 4, 95, 200, _("\
+Watch out! If you wander\n\
+around here, you're liable\n\
+to be plastered by a\n\
+water bomb!\n\
+Those enemy Bob-ombs love\n\
+to fight, and they're\n\
+always finding ways to\n\
+attack.\n\
+This meadow has become\n\
+a battlefield ever since\n\
+the Big Bob-omb got his\n\
+paws on the Power Star.\n\
+Can you recover the Star\n\
+for us? Cross the bridge\n\
+and go left up the path\n\
+to find the Big Bob-omb.\n\
+Please come back to see\n\
+me after you've retrieved\n\
+the Power Star!"))
+
+DEFINE_DIALOG(DIALOG_002, 1, 4, 95, 200, _("\
+Hey, you! It's dangerous\n\
+ahead, so listen up! Take\n\
+my advice.\n\
+\n\
+Cross the two\n\
+bridges ahead, then\n\
+watch for falling\n\
+water bombs.\n\
+The Big Bob-omb at the\n\
+top of the mountain is\n\
+very powerful--don't let\n\
+him grab you!\n\
+We're Bob-omb Buddies,\n\
+and we're on your side.\n\
+You can talk to us\n\
+whenever you'd like to!"))
+
+DEFINE_DIALOG(DIALOG_003, 1, 5, 95, 200, _("\
+Thank you, Mario! The Big\n\
+Bob-omb is nothing but a\n\
+big dud now! But the\n\
+battle for the castle has\n\
+just begun.\n\
+Other enemies are holding\n\
+the other Power Stars. If\n\
+you recover more Stars,\n\
+you can open new doors\n\
+that lead to new worlds!\n\
+My Bob-omb Buddies are\n\
+waiting for you. Be sure\n\
+to talk to them--they'll\n\
+set up cannons for you."))
+
+DEFINE_DIALOG(DIALOG_004, 1, 3, 95, 200, _("\
+We're peace-loving\n\
+Bob-ombs, so we don't use\n\
+cannons.\n\
+But if you'd like\n\
+to blast off, we don't\n\
+mind. Help yourself.\n\
+We'll prepare all of the\n\
+cannons in this course for\n\
+you to use. Bon Voyage!"))
+
+DEFINE_DIALOG(DIALOG_005, 1, 3, 30, 200, _("\
+Hey, Mario! Is it true\n\
+that you beat the Big\n\
+Bob-omb? Cool!\n\
+You must be strong. And\n\
+pretty fast. So, how fast\n\
+are you, anyway?\n\
+Fast enough to beat me...\n\
+Koopa the Quick? I don't\n\
+think so. Just try me.\n\
+How about a race to the\n\
+mountaintop, where the\n\
+Big Bob-omb was?\n\
+Whaddya say? When I say\n\
+『Go,』 let the race begin!\n\
+\n\
+Ready....\n\
+\n\
+//Go!////Don't Go"))
+
+DEFINE_DIALOG(DIALOG_006, 1, 3, 30, 200, _("\
+Hey!!! Don't try to scam\n\
+ME. You've gotta run\n\
+the whole course.\n\
+Later. Look me up when\n\
+you want to race for\n\
+real."))
+
+DEFINE_DIALOG(DIALOG_007, 1, 5, 30, 200, _("\
+Hufff...fff...pufff...\n\
+Whoa! You...really...are...\n\
+fast! A human blur!\n\
+Here you go--you've won\n\
+it, fair and square!"))
+
+DEFINE_DIALOG(DIALOG_008, 1, 4, 30, 200, _("\
+BEWARE OF CHAIN CHOMP\n\
+Extreme Danger!\n\
+Get close and press [C]^\n\
+for a better look.\n\
+Scary, huh?\n\
+See the Red Coin on top\n\
+of the stake?\n\
+\n\
+When you collect eight of\n\
+them, a Power Star will\n\
+appear in the meadow\n\
+across the bridge."))
+
+DEFINE_DIALOG(DIALOG_009, 1, 5, 30, 200, _("\
+Long time, no see! Wow,\n\
+have you gotten fast!\n\
+Have you been training\n\
+on the sly, or is it the\n\
+power of the Stars?\n\
+I've been feeling down\n\
+about losing the last\n\
+race. This is my home\n\
+course--how about a\n\
+rematch?\n\
+The goal is in\n\
+Windswept Valley.\n\
+Ready?\n\
+\n\
+//Go//// Don't Go"))
+
+DEFINE_DIALOG(DIALOG_010, 1, 4, 30, 200, _("\
+You've stepped on the\n\
+Wing Cap Switch. Wearing\n\
+the Wing Cap, you can\n\
+soar through the sky.\n\
+Now Wing Caps will pop\n\
+out of all the red blocks\n\
+you find.\n\
+\n\
+Would you like to Save?\n\
+\n\
+//Yes////No"))
+
+DEFINE_DIALOG(DIALOG_011, 1, 4, 30, 200, _("\
+You've just stepped on\n\
+the Metal Cap Switch!\n\
+The Metal Cap makes\n\
+Mario invincible.\n\
+Now Metal Caps will\n\
+pop out of all of the\n\
+green blocks you find.\n\
+\n\
+Would you like to Save?\n\
+\n\
+//Yes////No"))
+
+DEFINE_DIALOG(DIALOG_012, 1, 4, 30, 200, _("\
+You've just stepped on\n\
+the Vanish Cap Switch.\n\
+The Vanish Cap makes\n\
+Mario disappear.\n\
+Now Vanish Caps will pop\n\
+from all of the blue\n\
+blocks you find.\n\
+\n\
+Would you like to Save?\n\
+\n\
+//Yes////No"))
+
+DEFINE_DIALOG(DIALOG_013, 1, 5, 30, 200, _("\
+You've collected 100\n\
+coins! Mario gains more\n\
+power from the castle.\n\
+Do you want to Save?\n\
+//Yes////No"))
+
+DEFINE_DIALOG(DIALOG_014, 1, 4, 30, 200, _("\
+Wow! Another Power Star!\n\
+Mario gains more courage\n\
+from the power of the\n\
+castle.\n\
+Do you want to Save?\n\
+\n\
+//You Bet//Not Now"))
+
+DEFINE_DIALOG(DIALOG_015, 1, 4, 30, 200, _("\
+You can punch enemies to\n\
+knock them down. Press [A]\n\
+to jump, [B] to punch.\n\
+Press [A] then [B] to Kick.\n\
+To pick something up,\n\
+press [B], too. To throw\n\
+something you're holding,\n\
+press [B] again."))
+
+DEFINE_DIALOG(DIALOG_016, 1, 3, 30, 200, _("\
+Hop on the shiny shell and\n\
+ride wherever you want to\n\
+go! Shred those enemies!"))
+
+DEFINE_DIALOG(DIALOG_017, 1, 4, 30, 200, _("\
+I'm the Big Bob-omb, lord\n\
+of all blasting matter,\n\
+king of ka-booms the\n\
+world over!\n\
+How dare you scale my\n\
+mountain? By what right\n\
+do you set foot on my\n\
+imperial mountaintop?\n\
+You may have eluded my\n\
+guards, but you'll never\n\
+escape my grasp...\n\
+\n\
+...and you'll never take\n\
+away my Power Star. I\n\
+hereby challenge you,\n\
+Mario!\n\
+If you want the Star I\n\
+hold, you must prove\n\
+yourself in battle.\n\
+\n\
+Can you pick me up from\n\
+the back and hurl me to\n\
+this royal turf? I think\n\
+that you cannot!"))
+
+DEFINE_DIALOG(DIALOG_018, 1, 4, 30, 200, _("\
+I'm sleeping because...\n\
+...I'm sleepy. I don't\n\
+like being disturbed.\n\
+Please walk quietly."))
+
+DEFINE_DIALOG(DIALOG_019, 1, 2, 30, 200, _("\
+Shhh! Please walk\n\
+quietly in the hallway!"))
+
+DEFINE_DIALOG(DIALOG_020, 1, 6, 95, 150, _("\
+Dear Mario:\n\
+Please come to the\n\
+castle. I've baked\n\
+a cake for you.\n\
+Yours truly--\n\
+Princess Toadstool"))
+
+DEFINE_DIALOG(DIALOG_021, 1, 5, 95, 200, _("\
+Welcome.\n\
+No one's home!\n\
+Now scram--\n\
+and don't come back!\n\
+Gwa ha ha!"))
+
+DEFINE_DIALOG(DIALOG_022, 1, 2, 95, 200, _("\
+You need a key to open\n\
+this door."))
+
+DEFINE_DIALOG(DIALOG_023, 1, 3, 95, 200, _("\
+This key doesn't fit!\n\
+Maybe it's for the\n\
+basement..."))
+
+DEFINE_DIALOG(DIALOG_024, 1, 5, 95, 200, _("\
+You need Star power to\n\
+open this door. Recover a\n\
+Power Star from an enemy\n\
+inside one of the castle's\n\
+paintings."))
+
+DEFINE_DIALOG(DIALOG_025, 1, 4, 95, 200, _("\
+It takes the power of\n\
+3 Stars to open this\n\
+door. You need [%] more\n\
+Stars."))
+
+DEFINE_DIALOG(DIALOG_026, 1, 4, 95, 200, _("\
+It takes the power of\n\
+8 Stars to open this\n\
+door. You need [%] more\n\
+Stars."))
+
+DEFINE_DIALOG(DIALOG_027, 1, 4, 95, 200, _("\
+It takes the power of\n\
+30 Stars to open this\n\
+door. You need [%] more\n\
+Stars."))
+
+DEFINE_DIALOG(DIALOG_028, 1, 4, 95, 200, _("\
+It takes the power of\n\
+50 Stars to open this\n\
+door. You need [%] more\n\
+Stars."))
+
+DEFINE_DIALOG(DIALOG_029, 1, 5, 95, 200, _("\
+To open the door that\n\
+leads to the 『endless』\n\
+stairs, you need 70\n\
+Stars.\n\
+Bwa ha ha!"))
+
+DEFINE_DIALOG(DIALOG_030, 1, 6, 30, 200, _("\
+Hello! The Lakitu Bros.,\n\
+cutting in with a live\n\
+update on Mario's\n\
+progress. He's about to\n\
+learn a technique for\n\
+sneaking up on enemies.\n\
+The trick is this: He has\n\
+to walk very slowly in\n\
+order to walk quietly.\n\
+\n\
+\n\
+\n\
+And wrapping up filming\n\
+techniques reported on\n\
+earlier, you can take a\n\
+look around using [C]> and\n\
+[C]<. Press [C]| to view the\n\
+action from a distance.\n\
+When you can't move the\n\
+camera any farther, the\n\
+buzzer will sound. This is\n\
+the Lakitu Bros.,\n\
+signing off."))
+
+DEFINE_DIALOG(DIALOG_031, 1, 5, 30, 200, _("\
+No way! You beat me...\n\
+again!! And I just spent\n\
+my entire savings on\n\
+these new Koopa\n\
+Mach 1 Sprint shoes!\n\
+Here, I guess I have to\n\
+hand over this Star to\n\
+the winner of the race.\n\
+Congrats, Mario!"))
+
+DEFINE_DIALOG(DIALOG_032, 1, 5, 30, 200, _("\
+If you get the Wing Cap,\n\
+you can fly! Put the cap\n\
+on, then do a Triple\n\
+Jump--jump three times\n\
+in a row--to take off.\n\
+You can fly even higher\n\
+if you blast out of a\n\
+cannon wearing the\n\
+Wing Cap!\n\
+\n\
+Use the [C] Buttons to look\n\
+around while flying, and\n\
+press [Z] to land."))
+
+DEFINE_DIALOG(DIALOG_033, 1, 6, 30, 200, _("\
+Ciao! You've reached\n\
+Princess Toadstool's\n\
+castle via a warp pipe.\n\
+Using the controller is a\n\
+piece of cake. Press [A] to\n\
+jump and [B] to attack.\n\
+Press [B] to read signs,\n\
+too. Use the Control Stick\n\
+in the center of the\n\
+controller to move Mario\n\
+around. Now, head for\n\
+the castle."))
+
+DEFINE_DIALOG(DIALOG_034, 1, 6, 30, 200, _("\
+Good afternoon. The\n\
+Lakitu Bros., here,\n\
+reporting live from just\n\
+outside the Princess's\n\
+castle.\n\
+\n\
+Mario has just arrived\n\
+on the scene, and we'll\n\
+be filming the action live\n\
+as he enters the castle\n\
+and pursues the missing\n\
+Power Stars.\n\
+As seasoned cameramen,\n\
+we'll be shooting from the\n\
+recommended angle, but\n\
+you can change the\n\
+camera angle by pressing\n\
+the [C] Buttons.\n\
+If we can't adjust the\n\
+view any further, we'll\n\
+buzz. To take a look at\n\
+the surroundings, stop\n\
+and press [C]^.\n\
+\n\
+Press [A] to resume play.\n\
+Switch camera modes with\n\
+the [R] Button. Signs along\n\
+the way will review these\n\
+instructions.\n\
+\n\
+For now, reporting live,\n\
+this has been the\n\
+Lakitu Bros."))
+
+DEFINE_DIALOG(DIALOG_035, 1, 5, 30, 200, _("\
+There are four camera, or\n\
+『[C],』 Buttons. Press [C]^\n\
+to look around using the\n\
+Control Stick.\n\
+\n\
+You'll usually see Mario\n\
+through Lakitu's camera.\n\
+It is the camera\n\
+recommended for normal\n\
+play.\n\
+You can change angles by\n\
+pressing [C]>. If you press\n\
+[R], the view switches to\n\
+Mario's camera, which\n\
+is directly behind him.\n\
+Press [R] again to return\n\
+to Lakitu's camera. Press\n\
+[C]| to see Mario from\n\
+afar, using either\n\
+Lakitu's or Mario's view."))
+
+DEFINE_DIALOG(DIALOG_036, 1, 5, 30, 200, _("\
+OBSERVATION PLATFORM\n\
+Press [C]^ to take a look\n\
+around. Don't miss\n\
+anything!\n\
+\n\
+Press [R] to switch to\n\
+Mario's camera. It\n\
+always follows Mario.\n\
+Press [R] again to switch\n\
+to Lakitu's camera.\n\
+Pause the game and\n\
+switch the mode to 『fix』\n\
+the camera in place while\n\
+holding [R]. Give it a try!"))
+
+DEFINE_DIALOG(DIALOG_037, 1, 2, 30, 200, _("\
+I win! You lose!\n\
+Ha ha ha ha!\n\
+You're no slouch, but I'm\n\
+a better sledder!\n\
+Better luck next time!"))
+
+DEFINE_DIALOG(DIALOG_038, 1, 3, 95, 200, _("\
+Reacting to the Star\n\
+power, the door slowly\n\
+opens."))
+
+DEFINE_DIALOG(DIALOG_039, 1, 4, 30, 200, _("\
+No visitors allowed,\n\
+by decree of\n\
+the Big Bob-omb\n\
+\n\
+I shall never surrender my\n\
+Stars, for they hold the\n\
+power of the castle in\n\
+their glow.\n\
+They were a gift from\n\
+Bowser, the Koopa King\n\
+himself, and they lie well\n\
+hidden within my realm.\n\
+Not a whisper of their\n\
+whereabouts shall leave\n\
+my lips. Oh, all right,\n\
+perhaps one hint:\n\
+Heed the Star names at\n\
+the beginning of the\n\
+course.\n\
+//--The Big Bob-omb"))
+
+DEFINE_DIALOG(DIALOG_040, 1, 3, 30, 200, _("\
+Warning!\n\
+Cold, Cold Crevasse\n\
+Below!"))
+
+DEFINE_DIALOG(DIALOG_041, 1, 3, 30, 200, _("\
+I win! You lose!\n\
+Ha ha ha!\n\
+\n\
+That's what you get for\n\
+messin' with Koopa the\n\
+Quick.\n\
+Better luck next time!"))
+
+DEFINE_DIALOG(DIALOG_042, 1, 4, 30, 200, _("\
+Caution! Narrow Bridge!\n\
+Cross slowly!\n\
+\n\
+\n\
+You can jump to the edge\n\
+of the cliff and hang on,\n\
+and you can climb off the\n\
+edge if you move slowly.\n\
+When you want to let go,\n\
+either press [Z] or press\n\
+the Control Stick in the\n\
+direction of Mario's back.\n\
+To climb up, press Up on\n\
+the Control Stick. To\n\
+scurry up quickly, press\n\
+the [A] Button."))
+
+DEFINE_DIALOG(DIALOG_043, 1, 5, 30, 200, _("\
+If you jump and hold the\n\
+[A] Button, you can hang on\n\
+to some objects overhead.\n\
+It's the same as grabbing\n\
+a flying bird!"))
+
+DEFINE_DIALOG(DIALOG_044, 1, 5, 95, 200, _("\
+Whooo's there? Whooo\n\
+woke me up? It's still\n\
+daylight--I should be\n\
+sleeping!\n\
+\n\
+Hey, as long as I'm\n\
+awake, why not take a\n\
+short flight with me?\n\
+Press and hold [A] to grab\n\
+on. Release [A] to let go.\n\
+I'll take you wherever\n\
+you want to go, as long\n\
+as my wings hold out.\n\
+Watch my shadow, and\n\
+grab on."))
+
+DEFINE_DIALOG(DIALOG_045, 1, 6, 95, 200, _("\
+Whew! I'm just about\n\
+flapped out. You should\n\
+lay off the pasta, Mario!\n\
+That's it for now. Press\n\
+[A] to let go. Okay,\n\
+bye byyyyyyeeee!"))
+
+DEFINE_DIALOG(DIALOG_046, 1, 5, 30, 200, _("\
+You have to master three\n\
+important jumping\n\
+techniques.\n\
+First try the Triple Jump.\n\
+\n\
+Run fast, then jump three\n\
+times, one, two, three.\n\
+If you time the jumps\n\
+right, you'll hop, skip,\n\
+then jump really high.\n\
+Next, go for distance\n\
+with the Long Jump. Run,\n\
+press [Z] to crouch then [A]\n\
+to jump really far.\n\
+\n\
+To do the Wall Kick, press\n\
+[A] to jump at a wall, then\n\
+jump again when you hit\n\
+the wall.\n\
+\n\
+Got that? Triple Jump,\n\
+Long Jump, Wall Kick.\n\
+Practice, practice,\n\
+practice. You don't stand\n\
+a chance without them."))
+
+DEFINE_DIALOG(DIALOG_047, 1, 2, 95, 200, _("\
+Hi! I'll prepare the\n\
+cannon for you!"))
+
+DEFINE_DIALOG(DIALOG_048, 1, 4, 30, 200, _("\
+Snow Mountain Summit\n\
+Watch for slippery\n\
+conditions! Please enter\n\
+the cottage first."))
+
+DEFINE_DIALOG(DIALOG_049, 1, 5, 30, 200, _("\
+Remember that tricky Wall\n\
+Kick jump? It's a\n\
+technique you'll have to\n\
+master in order to reach\n\
+high places.\n\
+Use it to jump from wall\n\
+to wall. Press the\n\
+Control Stick in the\n\
+direction you want to\n\
+bounce to gain momentum.\n\
+Practice makes perfect!"))
+
+DEFINE_DIALOG(DIALOG_050, 1, 4, 30, 200, _("\
+Hold [Z] to crouch and\n\
+slide down a slope.\n\
+Or press [Z] while in the\n\
+air to Pound the Ground!\n\
+If you stop, crouch, then\n\
+jump, you'll do a\n\
+Backward Somersault!\n\
+Got that?\n\
+There's more. Crouch and\n\
+then jump to do a\n\
+Long Jump! Or crouch and\n\
+walk to...never mind."))
+
+DEFINE_DIALOG(DIALOG_051, 1, 6, 30, 200, _("\
+Climbing's easy! When you\n\
+jump at trees, poles or\n\
+pillars, you'll grab them\n\
+automatically. Press [A] to\n\
+jump off backward.\n\
+\n\
+To rotate around the\n\
+object, press Right or\n\
+Left on the Control Stick.\n\
+When you reach the top,\n\
+press Up to do a\n\
+handstand!\n\
+Jump off from the\n\
+handstand for a high,\n\
+stylin' dismount."))
+
+DEFINE_DIALOG(DIALOG_052, 1, 5, 30, 200, _("\
+Stop and press [Z] to\n\
+crouch, then press [A]\n\
+to do a high, Backward\n\
+Somersault!\n\
+\n\
+To perform a Side\n\
+Somersault, run, do a\n\
+sharp U-turn and jump.\n\
+You can catch lots of\n\
+air with both jumps."))
+
+DEFINE_DIALOG(DIALOG_053, 1, 5, 30, 200, _("\
+Sometimes, if you pass\n\
+through a coin ring or\n\
+find a secret point in a\n\
+course, a red number will\n\
+appear.\n\
+If you trigger five red\n\
+numbers, a secret Star\n\
+will show up."))
+
+DEFINE_DIALOG(DIALOG_054, 1, 5, 30, 200, _("\
+Welcome to the snow\n\
+slide! Hop on! To speed\n\
+up, press forward on the\n\
+Control Stick. To slow\n\
+down, pull back."))
+
+DEFINE_DIALOG(DIALOG_055, 1, 4, 30, 200, _("\
+Hey-ey, Mario, buddy,\n\
+howzit goin'? Step right\n\
+up. You look like a fast\n\
+sleddin' kind of guy.\n\
+I know speed when I see\n\
+it, yes siree--I'm the\n\
+world champion sledder,\n\
+you know. Whaddya say?\n\
+How about a race?\n\
+Ready...\n\
+\n\
+//Go//// Don't Go"))
+
+DEFINE_DIALOG(DIALOG_056, 1, 6, 30, 200, _("\
+You brrrr-oke my record!\n\
+Unbelievable! I knew\n\
+that you were the coolest.\n\
+Now you've proven\n\
+that you're also the\n\
+fastest!\n\
+I can't award you a gold\n\
+medal, but here, take this\n\
+Star instead. You've\n\
+earned it!"))
+
+DEFINE_DIALOG(DIALOG_057, 1, 4, 30, 200, _("\
+Egad! My baby!! Have you\n\
+seen my baby??? She's\n\
+the most precious baby in\n\
+the whole wide world.\n\
+(They say she has my\n\
+beak...) I just can't\n\
+remember where I left\n\
+her.\n\
+Let's see...I stopped\n\
+for herring and ice cubes,\n\
+then I...oohh! I just\n\
+don't know!"))
+
+DEFINE_DIALOG(DIALOG_058, 1, 4, 30, 200, _("\
+You found my precious,\n\
+precious baby! Where\n\
+have you been? How can\n\
+I ever thank you, Mario?\n\
+Oh, I do have this...\n\
+...Star. Here, take it\n\
+with my eternal\n\
+gratitude."))
+
+DEFINE_DIALOG(DIALOG_059, 1, 4, 30, 200, _("\
+That's not my baby! She\n\
+looks nothing like me!\n\
+Her parents must be\n\
+worried sick!"))
+
+DEFINE_DIALOG(DIALOG_060, 1, 4, 30, 200, _("\
+ATTENTION!\n\
+Read Before Diving In!\n\
+\n\
+\n\
+If you stay under the\n\
+water for too long, you'll\n\
+run out of oxygen.\n\
+\n\
+Return to the surface for\n\
+air or find an air bubble\n\
+or coins to breathe while\n\
+underwater.\n\
+Press [A] to swim. Hold [A]\n\
+to swim slow and steady.\n\
+Tap [A] with smooth timing\n\
+to gain speed.\n\
+Press Up on the\n\
+Control Stick and press [A]\n\
+to dive.\n\
+\n\
+Press Down on the Control\n\
+Stick and press [A] to\n\
+return to the surface.\n\
+\n\
+Hold Down and press [A]\n\
+while on the surface near\n\
+the edge of the water to\n\
+jump out."))
+
+DEFINE_DIALOG(DIALOG_061, 1, 4, 30, 200, _("\
+BRRR! Frostbite Danger!\n\
+Do not swim here.\n\
+I'm serious.\n\
+/--The Penguin"))
+
+DEFINE_DIALOG(DIALOG_062, 1, 3, 30, 200, _("\
+Hidden inside the green\n\
+block is the amazing\n\
+Metal Cap.\n\
+Wearing it, you won't\n\
+catch fire or be hurt\n\
+by enemy attacks.\n\
+You don't even have to\n\
+breathe while wearing it.\n\
+\n\
+The only problem:\n\
+You can't swim in it."))
+
+DEFINE_DIALOG(DIALOG_063, 1, 5, 30, 200, _("\
+The Vanish Cap is inside\n\
+the blue block. Mr. I.\n\
+will be surprised, since\n\
+you'll be invisible when\n\
+you wear it!\n\
+Even the Big Boo will be\n\
+fooled--and you can walk\n\
+through secret walls, too."))
+
+DEFINE_DIALOG(DIALOG_064, 1, 5, 30, 200, _("\
+When you put on the Wing\n\
+Cap that comes from a\n\
+red block, do the Triple\n\
+Jump to soar high into\n\
+the sky.\n\
+Use the Control Stick to\n\
+guide Mario. Pull back to\n\
+to fly up, press forward\n\
+to nose down, and press [Z]\n\
+to land."))
+
+DEFINE_DIALOG(DIALOG_065, 1, 6, 30, 200, _("\
+Swimming Lessons!\n\
+Tap [A] to do the breast\n\
+stroke. If you time the\n\
+taps right, you'll swim\n\
+fast.\n\
+\n\
+Press and hold [A] to do a\n\
+slow, steady flutter kick.\n\
+Press Up on the Control\n\
+Stick to dive, and pull\n\
+back on the stick to head\n\
+for the surface.\n\
+To jump out of the water,\n\
+hold Down on the Control\n\
+Stick, then press [A].\n\
+Easy as pie, right?\n\
+\n\
+\n\
+But remember:\n\
+Mario can't breathe under\n\
+the water! Return to the\n\
+surface for air when the\n\
+Power Meter runs low.\n\
+\n\
+And one last thing: You\n\
+can't open doors that\n\
+are underwater."))
+
+DEFINE_DIALOG(DIALOG_066, 1, 5, 30, 200, _("\
+Mario, it's Peach!\n\
+Please be careful! Bowser\n\
+is so wicked! He will try\n\
+to burn you with his\n\
+horrible flame breath.\n\
+Run around behind and\n\
+grab him by the tail with\n\
+the [B] Button. Once you\n\
+grab hold, swing him\n\
+around in great circles.\n\
+Rotate the Control Stick\n\
+to go faster and faster.\n\
+The faster you swing him,\n\
+the farther he'll fly.\n\
+\n\
+Use the [C] Buttons to look\n\
+around, Mario. You have\n\
+to throw Bowser into one\n\
+of the bombs in the four\n\
+corners.\n\
+Aim well, then press [B]\n\
+again to launch Bowser.\n\
+Good luck, Mario! Our\n\
+fate is in your hands."))
+
+DEFINE_DIALOG(DIALOG_067, 1, 5, 30, 200, _("\
+Tough luck, Mario!\n\
+Princess Toadstool isn't\n\
+here...Gwa ha ha!! Go\n\
+ahead--just try to grab\n\
+me by the tail!\n\
+You'll never be able to\n\
+swing ME around! A wimp\n\
+like you won't throw me\n\
+out of here! Never! Ha!"))
+
+DEFINE_DIALOG(DIALOG_068, 1, 5, 30, 200, _("\
+It's Lethal Lava Land!\n\
+If you catch fire or fall\n\
+into a pool of flames,\n\
+you'll be hopping mad, but\n\
+don't lose your cool.\n\
+You can still control\n\
+Mario--just try to keep\n\
+calm!"))
+
+DEFINE_DIALOG(DIALOG_069, 1, 6, 30, 200, _("\
+Sometimes you'll bump into\n\
+invisible walls at the\n\
+edges of the painting\n\
+worlds. If you hit a wall\n\
+while flying, you'll bounce\n\
+back."))
+
+DEFINE_DIALOG(DIALOG_070, 1, 5, 30, 200, _("\
+You can return to the\n\
+castle's main hall at any\n\
+time from the painting\n\
+worlds where the enemies\n\
+live.\n\
+Just stop, stand still,\n\
+press Start to pause the\n\
+game, then select\n\
+『Exit Course.』\n\
+\n\
+You don't have to collect\n\
+all Power Stars in one\n\
+course before going on to\n\
+the next.\n\
+\n\
+Return later, when you're\n\
+more experienced, to pick\n\
+up difficult ones.\n\
+\n\
+\n\
+Whenever you find a Star,\n\
+a hint for finding the\n\
+next one will appear on\n\
+the course's start screen.\n\
+\n\
+You can, however, collect\n\
+any of the remaining\n\
+Stars next. You don't\n\
+have to recover the one\n\
+described by the hint."))
+
+DEFINE_DIALOG(DIALOG_071, 1, 3, 30, 200, _("\
+Danger Ahead!\n\
+Beware of the strange\n\
+cloud! Don't inhale!\n\
+If you feel faint, run for\n\
+higher ground and fresh\n\
+air!\n\
+Circle: Shelter\n\
+Arrow: Entrance-Exit"))
+
+DEFINE_DIALOG(DIALOG_072, 1, 5, 30, 200, _("\
+High winds ahead!\n\
+Pull your Cap down tight.\n\
+If it blows off, you'll\n\
+have to find it on this\n\
+mountain."))
+
+DEFINE_DIALOG(DIALOG_073, 1, 4, 95, 200, _("\
+Aarrgh! Ahoy, matey. I\n\
+have sunken treasure,\n\
+here, I do.\n\
+\n\
+But to pluck the plunder,\n\
+you must open the\n\
+Treasure Chests in the\n\
+right order.\n\
+What order is that,\n\
+ye say?\n\
+\n\
+\n\
+I'll never tell!\n\
+\n\
+//--The Cap'n"))
+
+DEFINE_DIALOG(DIALOG_074, 1, 5, 30, 200, _("\
+You can grab on to the\n\
+edge of a cliff or ledge\n\
+with your fingertips and\n\
+hang down from it.\n\
+\n\
+To drop from the edge,\n\
+either press the Control\n\
+Stick in the direction of\n\
+Mario's back or press the\n\
+[Z] Button.\n\
+To get up onto the ledge,\n\
+either press Up on the\n\
+Control Stick or press [A]\n\
+as soon as you grab the\n\
+ledge to climb up quickly."))
+
+DEFINE_DIALOG(DIALOG_075, 1, 5, 30, 200, _("\
+Mario!! My castle is in\n\
+great peril. I know that\n\
+Bowser is the cause...and\n\
+I know that only you can\n\
+stop him!\n\
+The doors in the castle\n\
+that have been sealed by\n\
+Bowser can be opened only\n\
+with Star Power.\n\
+\n\
+But there are secret\n\
+paths in the castle,\n\
+paths that Bowser hasn't\n\
+found.\n\
+\n\
+One of those paths is in\n\
+this room, and it holds\n\
+one of the castle's Secret\n\
+Stars!\n\
+\n\
+Find that Secret Star,\n\
+Mario! It will help you\n\
+on your quest. Please,\n\
+Mario, you have to\n\
+help us!\n\
+Retrieve all of the\n\
+Power Stars in the castle\n\
+and free us from this\n\
+awful prison!\n\
+Please!"))
+
+DEFINE_DIALOG(DIALOG_076, 1, 6, 30, 200, _("\
+Thanks to the power of\n\
+the Stars, life is\n\
+returning to the castle.\n\
+Please, Mario, you have\n\
+to give Bowser the boot!\n\
+\n\
+Here, let me tell you a\n\
+little something about the\n\
+castle. In the room with\n\
+the mirrors, look carefully\n\
+for anything that's not\n\
+reflected in the mirror.\n\
+And when you go to the\n\
+water town, you can flood\n\
+it with a high jump into\n\
+the painting. Oh, by the\n\
+way, look what I found!"))
+
+DEFINE_DIALOG(DIALOG_077, 1, 2, 150, 200, _("\
+It is decreed that one\n\
+shall pound the pillars."))
+
+DEFINE_DIALOG(DIALOG_078, 1, 5, 30, 200, _("\
+Break open the Blue Coin\n\
+Block by Pounding the\n\
+Ground with the [Z] Button.\n\
+One Blue Coin is worth\n\
+five Yellow Coins.\n\
+But you have to hurry!\n\
+The coins will disappear\n\
+if you're not quick to\n\
+collect them! Too bad."))
+
+DEFINE_DIALOG(DIALOG_079, 1, 4, 30, 200, _("\
+Owwwuu! Let me go!\n\
+Uukee-kee! I was only\n\
+teasing! Can't you take\n\
+a joke?\n\
+I'll tell you what, let's\n\
+trade. If you let me go,\n\
+I'll give you something\n\
+really good.\n\
+So, how about it?\n\
+\n\
+//Free him/ Hold on"))
+
+DEFINE_DIALOG(DIALOG_080, 1, 1, 30, 200, _("\
+Eeeh hee hee hee!"))
+
+DEFINE_DIALOG(DIALOG_081, 1, 4, 30, 200, _("\
+The mystery is of Wet\n\
+or Dry.\n\
+And where does the\n\
+solution lie?\n\
+The city welcomes visitors\n\
+with the depth they bring\n\
+as they enter."))
+
+DEFINE_DIALOG(DIALOG_082, 1, 4, 30, 200, _("\
+Hold on to your hat! If\n\
+you lose it, you'll be\n\
+injured easily.\n\
+\n\
+If you do lose your Cap,\n\
+you'll have to find it in\n\
+the course where you\n\
+lost it.\n\
+Oh, boy, it's not looking\n\
+good for Peach. She's\n\
+still trapped somewhere\n\
+inside the walls.\n\
+Please, Mario, you have\n\
+to help her! Did you know\n\
+that there are enemy\n\
+worlds inside the walls?\n\
+Yup. It's true. Bowser's\n\
+troops are there, too.\n\
+Oh, here, take this. I've\n\
+been keeping it for you."))
+
+DEFINE_DIALOG(DIALOG_083, 1, 6, 30, 200, _("\
+There's something strange\n\
+about that clock. As you\n\
+jump inside, watch the\n\
+position of the big hand.\n\
+Oh, look what I found!\n\
+Here, Mario, catch!"))
+
+DEFINE_DIALOG(DIALOG_084, 1, 3, 30, 200, _("\
+Yeeoww! Unhand me,\n\
+brute! I'm late, so late,\n\
+I must make haste!\n\
+This shiny thing? Mine!\n\
+It's mine. Finders,\n\
+keepers, losers...\n\
+Late, late, late...\n\
+Ouch! Take it then! A\n\
+gift from Bowser, it was.\n\
+Now let me be! I have a\n\
+date! I cannot be late\n\
+for tea!"))
+
+DEFINE_DIALOG(DIALOG_085, 1, 5, 30, 200, _("\
+You don't stand a ghost\n\
+of a chance in this house.\n\
+If you walk out of here,\n\
+you deserve...\n\
+...a Ghoul Medal..."))
+
+DEFINE_DIALOG(DIALOG_086, 1, 3, 30, 200, _("\
+Running around in circles\n\
+makes some bad guys roll\n\
+their eyes."))
+
+DEFINE_DIALOG(DIALOG_087, 1, 4, 30, 200, _("\
+Santa Claus isn't the only\n\
+one who can go down a\n\
+chimney! Come on in!\n\
+/--Cabin Proprietor"))
+
+DEFINE_DIALOG(DIALOG_088, 1, 5, 30, 200, _("\
+Work Elevator\n\
+For those who get off\n\
+here: Grab the pole to the\n\
+left and slide carefully\n\
+down."))
+
+DEFINE_DIALOG(DIALOG_089, 1, 5, 95, 200, _("\
+Both ways fraught with\n\
+danger! Watch your feet!\n\
+Those who can't do the\n\
+Long Jump, tsk, tsk. Make\n\
+your way to the right.\n\
+Right: Work Elevator\n\
+/// Cloudy Maze\n\
+Left: Black Hole\n\
+///Underground Lake\n\
+\n\
+Red Circle: Elevator 2\n\
+//// Underground Lake\n\
+Arrow: You are here"))
+
+DEFINE_DIALOG(DIALOG_090, 1, 6, 30, 200, _("\
+Bwa ha ha ha!\n\
+You've stepped right into\n\
+my trap, just as I knew\n\
+you would! I warn you,\n\
+『Friend,』 watch your\n\
+step!"))
+
+DEFINE_DIALOG(DIALOG_091, 2, 2, 30, 200, _("\
+Danger!\n\
+Strong Gusts!\n\
+But the wind makes a\n\
+comfy ride."))
+
+DEFINE_DIALOG(DIALOG_092, 1, 5, 30, 200, _("\
+Pestering me again, are\n\
+you, Mario? Can't you see\n\
+that I'm having a merry\n\
+little time, making\n\
+mischief with my minions?\n\
+Now, return those Stars!\n\
+My troops in the walls\n\
+need them! Bwa ha ha!"))
+
+DEFINE_DIALOG(DIALOG_093, 1, 5, 30, 200, _("\
+Mario! You again! Well\n\
+that's just fine--I've\n\
+been looking for something\n\
+to fry with my fire\n\
+breath!\n\
+Your Star Power is\n\
+useless against me!\n\
+Your friends are all\n\
+trapped within the\n\
+walls...\n\
+And you'll never see the\n\
+Princess again!\n\
+Bwa ha ha ha!"))
+
+DEFINE_DIALOG(DIALOG_094, 1, 4, 30, 200, _("\
+Get a good run up the\n\
+slope! Do you remember\n\
+the Long Jump? Run, press\n\
+[Z], then jump!"))
+
+DEFINE_DIALOG(DIALOG_095, 1, 4, 30, 200, _("\
+To read a sign, stand in\n\
+front of it and press [B],\n\
+like you did just now.\n\
+\n\
+When you want to talk to\n\
+a Koopa Troopa or other\n\
+animal, stand right in\n\
+front of it.\n\
+Please recover the Stars\n\
+that were stolen by\n\
+Bowser in this course."))
+
+DEFINE_DIALOG(DIALOG_096, 1, 4, 30, 200, _("\
+The path is narrow here.\n\
+Easy does it! No one is\n\
+allowed on top of the\n\
+mountain!\n\
+And if you know what's\n\
+good for you, you won't\n\
+wake anyone who's\n\
+sleeping!\n\
+Move slowly,\n\
+tread lightly."))
+
+DEFINE_DIALOG(DIALOG_097, 1, 5, 30, 200, _("\
+Don't be a pushover!\n\
+If anyone tries to shove\n\
+you around, push back!\n\
+It's one-on-one, with a\n\
+fiery finish for the loser!"))
+
+DEFINE_DIALOG(DIALOG_098, 1, 2, 95, 200, _("\
+Come on in here...\n\
+...heh, heh, heh..."))
+
+// unused
+DEFINE_DIALOG(DIALOG_099, 1, 5, 95, 200, _("\
+Eh he he...\n\
+You're mine, now, hee hee!\n\
+I'll pass right through\n\
+this wall. Can you do\n\
+that? Heh, heh, heh!"))
+
+DEFINE_DIALOG(DIALOG_100, 1, 3, 95, 200, _("\
+Ukkiki...Wakkiki...kee kee!\n\
+Ha! I snagged it!\n\
+It's mine! Heeheeheeee!"))
+
+DEFINE_DIALOG(DIALOG_101, 1, 3, 95, 200, _("\
+Ackk! Let...go...\n\
+You're...choking...me...\n\
+Cough...I've been framed!\n\
+This Cap? Oh, all right,\n\
+take it. It's a cool Cap,\n\
+but I'll give it back.\n\
+I think it looks better on\n\
+me than it does on you,\n\
+though! Eeeee! Kee keee!"))
+
+DEFINE_DIALOG(DIALOG_102, 1, 5, 30, 200, _("\
+Pssst! The Boos are super\n\
+shy. If you look them\n\
+in the eyes, they fade\n\
+away, but if you turn\n\
+your back, they reappear.\n\
+It's no use trying to hit\n\
+them when they're fading\n\
+away. Instead, sneak up\n\
+behind them and punch."))
+
+DEFINE_DIALOG(DIALOG_103, 1, 4, 95, 200, _("\
+Upon four towers\n\
+one must alight...\n\
+Then at the peak\n\
+shall shine the light..."))
+
+DEFINE_DIALOG(DIALOG_104, 1, 5, 30, 200, _("\
+The shadowy star in front\n\
+of you is a 『Star\n\
+Marker.』 When you collect\n\
+all 8 Red Coins, the Star\n\
+will appear here."))
+
+DEFINE_DIALOG(DIALOG_105, 1, 3, 95, 200, _("\
+Ready for blastoff! Come\n\
+on, hop into the cannon!\n\
+\n\
+You can reach the Star on\n\
+the floating island by\n\
+using the four cannons.\n\
+Use the Control Stick to\n\
+aim, then press [A] to fire.\n\
+\n\
+If you're handy, you can\n\
+grab on to trees or poles\n\
+to land."))
+
+DEFINE_DIALOG(DIALOG_106, 1, 2, 95, 200, _("\
+Ready for blastoff! Come\n\
+on, hop into the cannon!"))
+
+DEFINE_DIALOG(DIALOG_107, 1, 3, 95, 200, _("\
+Ghosts...\n\
+...don't...\n\
+...DIE!\n\
+Heh, heh, heh!\n\
+Can you get out of here...\n\
+...alive?"))
+
+DEFINE_DIALOG(DIALOG_108, 1, 2, 95, 200, _("\
+Boooooo-m! Here comes\n\
+the master of mischief,\n\
+the tower of terror,\n\
+the Big Boo!\n\
+Ka ha ha ha..."))
+
+DEFINE_DIALOG(DIALOG_109, 1, 4, 95, 200, _("\
+Ooooo Nooooo!\n\
+Talk about out-of-body\n\
+experiences--my body\n\
+has melted away!\n\
+Have you run in to any\n\
+headhunters lately??\n\
+I could sure use a new\n\
+body!\n\
+Brrr! My face might\n\
+freeze like this!"))
+
+DEFINE_DIALOG(DIALOG_110, 1, 5, 95, 200, _("\
+I need a good head on my\n\
+shoulders. Do you know of\n\
+anybody in need of a good\n\
+body? Please! I'll follow\n\
+you if you do!"))
+
+DEFINE_DIALOG(DIALOG_111, 1, 4, 95, 200, _("\
+Perfect! What a great\n\
+new body! Here--this is a\n\
+present for you. It's sure\n\
+to warm you up."))
+
+DEFINE_DIALOG(DIALOG_112, 1, 4, 30, 200, _("\
+Collect as many coins as\n\
+possible! They'll refill\n\
+your Power Meter.\n\
+\n\
+You can check to see how\n\
+many coins you've\n\
+collected in each of the\n\
+15 enemy worlds.\n\
+You can also recover\n\
+power by touching the\n\
+Spinning Heart.\n\
+\n\
+The faster you run\n\
+through the heart, the\n\
+more power you'll recover."))
+
+DEFINE_DIALOG(DIALOG_113, 1, 6, 30, 200, _("\
+There are special Caps in\n\
+the red, green and blue\n\
+blocks. Step on the\n\
+switches in the hidden\n\
+courses to activate the\n\
+Cap Blocks."))
+
+DEFINE_DIALOG(DIALOG_114, 1, 5, 95, 200, _("\
+It makes me so mad! We\n\
+build your houses, your\n\
+castles. We pave your\n\
+roads, and still you\n\
+walk all over us.\n\
+Do you ever say thank\n\
+you? No! Well, you're not\n\
+going to wipe your feet\n\
+on me! I think I'll crush\n\
+you just for fun!\n\
+Do you have a problem\n\
+with that? Just try to\n\
+pound me, wimp! Ha!"))
+
+DEFINE_DIALOG(DIALOG_115, 1, 5, 95, 200, _("\
+No! Crushed again!\n\
+I'm just a stepping stone,\n\
+after all. I won't gravel,\n\
+er, grovel. Here, you win.\n\
+Take this with you!"))
+
+DEFINE_DIALOG(DIALOG_116, 1, 5, 95, 200, _("\
+Whaaa....Whaaat?\n\
+Can it be that a\n\
+pipsqueak like you has\n\
+defused the Bob-omb\n\
+king????\n\
+You might be fast enough\n\
+to ground me, but you'll\n\
+have to pick up the pace\n\
+if you want to take King\n\
+Bowser by the tail.\n\
+Methinks my troops could\n\
+learn a lesson from you!\n\
+Here is your Star, as I\n\
+promised, Mario.\n\
+\n\
+If you want to see me\n\
+again, select this Star\n\
+from the menu. For now,\n\
+farewell."))
+
+DEFINE_DIALOG(DIALOG_117, 1, 1, 95, 200, _("\
+Who...walk...here?\n\
+Who...break...seal?\n\
+Wake..ancient..ones?\n\
+We no like light...\n\
+Rrrrummbbble...\n\
+We no like...intruders!\n\
+Now battle...\n\
+...hand...\n\
+...to...\n\
+...hand!"))
+
+DEFINE_DIALOG(DIALOG_118, 1, 6, 95, 200, _("\
+Grrrrumbbble!\n\
+What...happen?\n\
+We...crushed like pebble.\n\
+You so strong!\n\
+You rule ancient pyramid!\n\
+For today...\n\
+Now, take Star of Power.\n\
+We...sleep...darkness."))
+
+DEFINE_DIALOG(DIALOG_119, 1, 6, 30, 200, _("\
+Grrr! I was a bit\n\
+careless. This is not as I\n\
+had planned...but I still\n\
+hold the power of the\n\
+Stars, and I still have\n\
+Peach.\n\
+Bwa ha ha! You'll get no\n\
+more Stars from me! I'm\n\
+not finished with you yet,\n\
+but I'll let you go for\n\
+now. You'll pay for this...\n\
+later!"))
+
+DEFINE_DIALOG(DIALOG_120, 1, 4, 30, 200, _("\
+Ooowaah! Can it be that\n\
+I've lost??? The power of\n\
+the Stars has failed me...\n\
+this time.\n\
+Consider this a draw.\n\
+Next time, I'll be in\n\
+perfect condition.\n\
+\n\
+Now, if you want to see\n\
+your precious Princess,\n\
+come to the top of the\n\
+tower.\n\
+I'll be waiting!\n\
+Gwa ha ha ha!"))
+
+DEFINE_DIALOG(DIALOG_121, 1, 5, 30, 200, _("\
+Nooo! It can't be!\n\
+You've really beaten me,\n\
+Mario?!! I gave those\n\
+troops power, but now\n\
+it's fading away!\n\
+Arrgghh! I can see peace\n\
+returning to the world! I\n\
+can't stand it! Hmmm...\n\
+It's not over yet...\n\
+\n\
+C'mon troops! Let's watch\n\
+the ending together!\n\
+Bwa ha ha!"))
+
+DEFINE_DIALOG(DIALOG_122, 1, 4, 30, 200, _("\
+The Black Hole\n\
+Right: Work Elevator\n\
+/// Cloudy Maze\n\
+Left: Underground Lake"))
+
+DEFINE_DIALOG(DIALOG_123, 1, 4, 30, 200, _("\
+Metal Cavern\n\
+Right: To Waterfall\n\
+Left: Metal Cap Switch"))
+
+DEFINE_DIALOG(DIALOG_124, 1, 4, 30, 200, _("\
+Work Elevator\n\
+Danger!!\n\
+Read instructions\n\
+thoroughly!\n\
+Elevator continues in the\n\
+direction of the arrow\n\
+activated."))
+
+DEFINE_DIALOG(DIALOG_125, 1, 3, 30, 200, _("\
+Hazy Maze-Exit\n\
+Danger! Closed.\n\
+Turn back now."))
+
+DEFINE_DIALOG(DIALOG_126, 2, 3, 30, 200, _("\
+Up: Black Hole\n\
+Right: Work Elevator\n\
+/// Hazy Maze"))
+
+DEFINE_DIALOG(DIALOG_127, 3, 4, 30, 200, _("\
+Underground Lake\n\
+Right: Metal Cave\n\
+Left: Abandoned Mine\n\
+///(Closed)\n\
+A gentle sea dragon lives\n\
+here. Pound on his back to\n\
+make him lower his head.\n\
+Don't become his lunch."))
+
+DEFINE_DIALOG(DIALOG_128, 1, 4, 95, 200, _("\
+You must fight with\n\
+honor! It is against the\n\
+royal rules to throw the\n\
+king out of the ring!"))
+
+DEFINE_DIALOG(DIALOG_129, 1, 5, 30, 200, _("\
+Welcome to the Vanish\n\
+Cap Switch Course! All of\n\
+the blue blocks you find\n\
+will become solid once you\n\
+step on the Cap Switch.\n\
+You'll disappear when you\n\
+put on the Vanish Cap, so\n\
+you'll be able to elude\n\
+enemies and walk through\n\
+many things. Try it out!"))
+
+DEFINE_DIALOG(DIALOG_130, 1, 5, 30, 200, _("\
+Welcome to the Metal Cap\n\
+Switch Course! Once you\n\
+step on the Cap Switch,\n\
+the green blocks will\n\
+become solid.\n\
+When you turn your body\n\
+into metal with the Metal\n\
+Cap, you can walk\n\
+underwater! Try it!"))
+
+DEFINE_DIALOG(DIALOG_131, 1, 5, 30, 200, _("\
+Welcome to the Wing Cap\n\
+Course! Step on the red\n\
+switch at the top of the\n\
+tower, in the center of\n\
+the rainbow ring.\n\
+When you trigger the\n\
+switch, all of the red\n\
+blocks you find will\n\
+become solid.\n\
+\n\
+Try out the Wing Cap! Do\n\
+the Triple Jump to take\n\
+off and press [Z] to land.\n\
+\n\
+\n\
+Pull back on the Control\n\
+Stick to go up and push\n\
+forward to nose down,\n\
+just as you would when\n\
+flying an airplane."))
+
+DEFINE_DIALOG(DIALOG_132, 1, 4, 30, 200, _("\
+Whoa, Mario, pal, you\n\
+aren't trying to cheat,\n\
+are you? Shortcuts aren't\n\
+allowed.\n\
+Now, I know that you\n\
+know better. You're\n\
+disqualified! Next time,\n\
+play fair!"))
+
+DEFINE_DIALOG(DIALOG_133, 1, 6, 30, 200, _("\
+Am I glad to see you! The\n\
+Princess...and I...and,\n\
+well, everybody...we're all\n\
+trapped inside the castle\n\
+walls.\n\
+\n\
+Bowser has stolen the\n\
+castle's Stars, and he's\n\
+using their power to\n\
+create his own world in\n\
+the paintings and walls.\n\
+\n\
+Please recover the Power\n\
+Stars! As you find them,\n\
+you can use their power\n\
+to open the doors that\n\
+Bowser has sealed.\n\
+\n\
+There are four rooms on\n\
+the first floor. Start in\n\
+the one with the painting\n\
+of Bob-omb inside. It's\n\
+the only room that Bowser\n\
+hasn't sealed.\n\
+When you collect eight\n\
+Power Stars, you'll be\n\
+able to open the door\n\
+with the big star. The\n\
+Princess must be inside!"))
+
+DEFINE_DIALOG(DIALOG_134, 1, 5, 30, 200, _("\
+The names of the Stars\n\
+are also hints for\n\
+finding them. They are\n\
+displayed at the beginning\n\
+of each course.\n\
+You can collect the Stars\n\
+in any order. You won't\n\
+find some Stars, enemies\n\
+or items unless you select\n\
+a specific Star.\n\
+After you collect some\n\
+Stars, you can try\n\
+another course.\n\
+We're all waiting for\n\
+your help!"))
+
+DEFINE_DIALOG(DIALOG_135, 1, 5, 30, 200, _("\
+It was Bowser who stole\n\
+the Stars. I saw him with\n\
+my own eyes!\n\
+\n\
+\n\
+He's hidden six Stars in\n\
+each course, but you\n\
+won't find all of them in\n\
+some courses until you\n\
+press the Cap Switches.\n\
+The Stars you've found\n\
+will show on each course's\n\
+starting screen.\n\
+\n\
+\n\
+If you want to see some\n\
+of the enemies you've\n\
+already defeated, select\n\
+the Stars you recovered\n\
+from them."))
+
+DEFINE_DIALOG(DIALOG_136, 1, 6, 30, 200, _("\
+Wow! You've already\n\
+recovered that many\n\
+Stars? Way to go, Mario!\n\
+I'll bet you'll have us out\n\
+of here in no time!\n\
+\n\
+Be careful, though.\n\
+Bowser and his band\n\
+wrote the book on 『bad.』\n\
+Take my advice: When you\n\
+need to recover from\n\
+injuries, collect coins.\n\
+Yellow Coins refill one\n\
+piece of the Power Meter,\n\
+Red Coins refill two\n\
+pieces, and Blue Coins\n\
+refill five.\n\
+\n\
+To make Blue Coins\n\
+appear, pound on Blue\n\
+Coin Blocks.\n\
+\n\
+\n\
+\n\
+Also, if you fall from\n\
+high places, you'll\n\
+minimize damage if you\n\
+Pound the Ground as you\n\
+land."))
+
+DEFINE_DIALOG(DIALOG_137, 1, 6, 30, 200, _("\
+Thanks, Mario! The castle\n\
+is recovering its energy\n\
+as you retrieve Power\n\
+Stars, and you've chased\n\
+Bowser right out of here,\n\
+on to some area ahead.\n\
+Oh, by the by, are you\n\
+collecting coins? Special\n\
+Stars appear when you\n\
+collect 100 coins in each\n\
+of the 15 courses!"))
+
+DEFINE_DIALOG(DIALOG_138, 1, 3, 30, 200, _("\
+Down: Underground Lake\n\
+Left: Black Hole\n\
+Right: Hazy Maze (Closed)"))
+
+DEFINE_DIALOG(DIALOG_139, 1, 6, 30, 200, _("\
+Above: Automatic Elevator\n\
+Elevator begins\n\
+automatically and follows\n\
+pre-set course.\n\
+It disappears\n\
+automatically, too."))
+
+DEFINE_DIALOG(DIALOG_140, 1, 6, 30, 200, _("\
+Elevator Area\n\
+Right: Hazy Maze\n\
+/// Entrance\n\
+Left: Black Hole\n\
+///Elevator 1\n\
+Arrow: You are here"))
+
+DEFINE_DIALOG(DIALOG_141, 1, 5, 150, 200, _("\
+You've recovered one of\n\
+the stolen Power Stars!\n\
+Now you can open some of\n\
+the sealed doors in the\n\
+castle.\n\
+Try the Princess's room\n\
+on the second floor and\n\
+the room with the\n\
+painting of Whomp's\n\
+Fortress on Floor 1.\n\
+Bowser's troops are still\n\
+gaining power, so you\n\
+can't give up. Save us,\n\
+Mario! Keep searching for\n\
+Stars!"))
+
+DEFINE_DIALOG(DIALOG_142, 1, 5, 150, 200, _("\
+You've recovered three\n\
+Power Stars! Now you can\n\
+open any door with a 3\n\
+on its star.\n\
+\n\
+You can come and go from\n\
+the open courses as you\n\
+please. The enemies ahead\n\
+are even meaner, so be\n\
+careful!"))
+
+DEFINE_DIALOG(DIALOG_143, 1, 6, 150, 200, _("\
+You've recovered eight of\n\
+the Power Stars! Now you\n\
+can open the door with\n\
+the big Star! But Bowser\n\
+is just ahead...can you\n\
+hear the Princess calling?"))
+
+DEFINE_DIALOG(DIALOG_144, 1, 6, 150, 200, _("\
+You've recovered 30\n\
+Power Stars! Now you can\n\
+open the door with the\n\
+big Star! But before you\n\
+move on, how's it going\n\
+otherwise?\n\
+Did you pound the two\n\
+columns down? You didn't\n\
+lose your hat, did you?\n\
+If you did, you'll have to\n\
+stomp on the condor to\n\
+get it back!\n\
+They say that Bowser has\n\
+sneaked out of the sea\n\
+and into the underground.\n\
+Have you finally\n\
+cornered him?"))
+
+DEFINE_DIALOG(DIALOG_145, 1, 6, 150, 200, _("\
+You've recovered 50\n\
+Power Stars! Now you can\n\
+open the Star Door on the\n\
+third floor. Bowser's\n\
+there, you know.\n\
+\n\
+Oh! You've found all of\n\
+the Cap Switches, haven't\n\
+you? Red, green and blue?\n\
+The Caps you get from the\n\
+colored blocks are really\n\
+helpful.\n\
+Hurry along, now. The\n\
+third floor is just ahead."))
+
+DEFINE_DIALOG(DIALOG_146, 1, 6, 150, 200, _("\
+You've found 70 Power\n\
+Stars! The mystery of the\n\
+endless stairs is solved,\n\
+thanks to you--and is\n\
+Bowser ever upset! Now,\n\
+on to the final bout!"))
+
+DEFINE_DIALOG(DIALOG_147, 1, 5, 30, 200, _("\
+Are you using the Cap\n\
+Blocks? You really should,\n\
+you know.\n\
+\n\
+\n\
+To make them solid so you\n\
+can break them, you have\n\
+to press the colored Cap\n\
+Switches in the castle's\n\
+hidden courses.\n\
+You'll find the hidden\n\
+courses only after\n\
+regaining some of the\n\
+Power Stars.\n\
+\n\
+The Cap Blocks are a big\n\
+help! Red for the Wing\n\
+Cap, green for the Metal\n\
+Cap, blue for the Vanish\n\
+Cap."))
+
+DEFINE_DIALOG(DIALOG_148, 1, 6, 30, 200, _("\
+Snowman Mountain ahead.\n\
+Keep out! And don't try\n\
+the Triple Jump over the\n\
+ice block shooter.\n\
+\n\
+\n\
+If you fall into the\n\
+freezing pond, your power\n\
+decreases quickly, and\n\
+you won't recover\n\
+automatically.\n\
+//--The Snowman"))
+
+DEFINE_DIALOG(DIALOG_149, 1, 3, 30, 200, _("\
+Welcome to\n\
+Princess Toadstool's\n\
+secret slide!\n\
+There's a Star hidden\n\
+here that Bowser couldn't\n\
+find.\n\
+When you slide, press\n\
+forward to speed up,\n\
+pull back to slow down.\n\
+If you slide really\n\
+fast, you'll win the Star!"))
+
+DEFINE_DIALOG(DIALOG_150, 1, 5, 30, 200, _("\
+Waaaa! You've flooded my\n\
+house! Wh-why?? Look at\n\
+this mess! What am I\n\
+going to do now?\n\
+\n\
+The ceiling's ruined, the\n\
+floor is soaked...what to\n\
+do, what to do? Huff...\n\
+huff...it makes me so...\n\
+MAD!!!\n\
+Everything's been going\n\
+wrong ever since I got\n\
+this Star...It's so shiny,\n\
+but it makes me feel...\n\
+strange..."))
+
+DEFINE_DIALOG(DIALOG_151, 1, 4, 30, 200, _("\
+I can't take this\n\
+anymore! First you get\n\
+me all wet, then you\n\
+stomp on me!\n\
+Now I'm really, really,\n\
+REALLY mad!\n\
+Waaaaaaaaaaaaaaaaa!!!"))
+
+DEFINE_DIALOG(DIALOG_152, 1, 3, 30, 200, _("\
+Owwch! Uncle! Uncle!\n\
+Okay, I give. Take this\n\
+Star!\n\
+Whew! I feel better now.\n\
+I don't really need it\n\
+anymore, anyway--\n\
+I can see the stars\n\
+through my ceiling at\n\
+night.\n\
+They make me feel...\n\
+...peaceful. Please, come\n\
+back and visit anytime."))
+
+DEFINE_DIALOG(DIALOG_153, 1, 4, 30, 200, _("\
+Hey! Who's there?\n\
+What's climbing on me?\n\
+Is it an ice ant?\n\
+A snow flea?\n\
+Whatever it is, it's\n\
+bugging me! I think I'll\n\
+blow it away!"))
+
+DEFINE_DIALOG(DIALOG_154, 1, 5, 30, 200, _("\
+Hold on to your hat! If\n\
+you lose it, you'll be\n\
+easily injured. If you\n\
+lose it, look for it in the\n\
+course where you lost it.\n\
+Speaking of lost, the\n\
+Princess is still stuck in\n\
+the walls somewhere.\n\
+Please help, Mario!\n\
+\n\
+Oh, you know that there\n\
+are secret worlds in the\n\
+walls as well as in the\n\
+paintings, right?"))
+
+DEFINE_DIALOG(DIALOG_155, 1, 6, 30, 200, _("\
+Thanks to the power of\n\
+the Stars, life is\n\
+returning to the castle.\n\
+Please, Mario, you have\n\
+to give Bowser the boot!\n\
+\n\
+Here, let me tell you a\n\
+little something about the\n\
+castle. In the room with\n\
+the mirrors, look carefully\n\
+for anything that's not\n\
+reflected in the mirror.\n\
+And when you go to the\n\
+water town, you can flood\n\
+it with a high jump into\n\
+the painting."))
+
+DEFINE_DIALOG(DIALOG_156, 1, 5, 30, 200, _("\
+The world inside the\n\
+clock is so strange!\n\
+When you jump inside,\n\
+watch the position of\n\
+the big hand!"))
+
+DEFINE_DIALOG(DIALOG_157, 1, 5, 30, 200, _("\
+Watch out! Don't let\n\
+yourself be swallowed by\n\
+quicksand.\n\
+\n\
+\n\
+If you sink into the sand,\n\
+you won't be able to\n\
+jump, and if your head\n\
+goes under, you'll be\n\
+smothered.\n\
+The dark areas are\n\
+bottomless pits."))
+
+DEFINE_DIALOG(DIALOG_158, 1, 6, 30, 200, _("\
+1. If you jump repeatedly\n\
+and time it right, you'll\n\
+jump higher and higher.\n\
+If you run really fast and\n\
+time three jumps right,\n\
+you can do a Triple Jump.\n\
+2. Jump into a solid wall,\n\
+then jump again when you\n\
+hit the wall. You can\n\
+bounce to a higher level\n\
+using this Wall Kick."))
+
+DEFINE_DIALOG(DIALOG_159, 1, 6, 30, 200, _("\
+3. If you stop, press [Z]\n\
+to crouch, then jump, you\n\
+can perform a Backward\n\
+Somersault. To do a Long\n\
+Jump, run fast, press [Z],\n\
+then jump."))
+
+DEFINE_DIALOG(DIALOG_160, 1, 4, 30, 200, _("\
+Press [B] while running\n\
+fast to do a Body Slide\n\
+attack. To stand while\n\
+sliding, press [A] or [B]."))
+
+DEFINE_DIALOG(DIALOG_161, 1, 4, 30, 200, _("\
+Mario!!!\n\
+It that really you???\n\
+It has been so long since\n\
+our last adventure!\n\
+They told me that I might\n\
+see you if I waited here,\n\
+but I'd just about given\n\
+up hope!\n\
+Is it true? Have you\n\
+really beaten Bowser? And\n\
+restored the Stars to the\n\
+castle?\n\
+And saved the Princess?\n\
+I knew you could do it!\n\
+Now I have a very special\n\
+message for you.\n\
+『Thanks for playing Super\n\
+Mario 64! This is the\n\
+end of the game, but not\n\
+the end of the fun.\n\
+We want you to keep on\n\
+playing, so we have a\n\
+little something for you.\n\
+We hope that you like it!\n\
+Enjoy!!!』\n\
+\n\
+The Super Mario 64 Team"))
+
+DEFINE_DIALOG(DIALOG_162, 1, 4, 30, 200, _("\
+No, no, no! Not you\n\
+again! I'm in a great\n\
+hurry, can't you see?\n\
+\n\
+I've no time to squabble\n\
+over Stars. Here, have it.\n\
+I never meant to hide it\n\
+from you...\n\
+It's just that I'm in such\n\
+a rush. That's it, that's\n\
+all. Now, I must be off.\n\
+Owww! Let me go!"))
+
+DEFINE_DIALOG(DIALOG_163, 1, 5, 30, 200, _("\
+Noooo! You've really\n\
+beaten me this time,\n\
+Mario! I can't stand\n\
+losing to you!\n\
+\n\
+My troops...worthless!\n\
+They've turned over all\n\
+the Power Stars! What?!\n\
+There are 120 in all???\n\
+\n\
+Amazing! There were some\n\
+in the castle that I\n\
+missed??!!\n\
+\n\
+\n\
+Now I see peace\n\
+returning to the world...\n\
+Oooo! I really hate that!\n\
+I can't watch--\n\
+I'm outta here!\n\
+Just you wait until next\n\
+time. Until then, keep\n\
+that Control Stick\n\
+smokin'!\n\
+Buwaa ha ha!"))
+
+DEFINE_DIALOG(DIALOG_164, 1, 4, 30, 200, _("\
+Mario! What's up, pal?\n\
+I haven't been on the\n\
+slide lately, so I'm out\n\
+of shape.\n\
+Still, I'm always up for a\n\
+good race, especially\n\
+against an old sleddin'\n\
+buddy.\n\
+Whaddya say?\n\
+Ready...set...\n\
+\n\
+//Go//// Don't Go"))
+
+DEFINE_DIALOG(DIALOG_165, 1, 5, 30, 200, _("\
+I take no responsibility\n\
+whatsoever for those who\n\
+get dizzy and pass out\n\
+from running around\n\
+this post."))
+
+DEFINE_DIALOG(DIALOG_166, 1, 4, 30, 200, _("\
+I'll be back soon.\n\
+I'm out training now,\n\
+so come back later.\n\
+//--Koopa the Quick"))
+
+DEFINE_DIALOG(DIALOG_167, 1, 4, 30, 200, _("\
+Princess Toadstool's\n\
+castle is just ahead.\n\
+\n\
+\n\
+Press [A] to jump, [Z] to\n\
+crouch, and [B] to punch,\n\
+read a sign, or grab\n\
+something.\n\
+Press [B] again to throw\n\
+something you're holding."))
+
+DEFINE_DIALOG(DIALOG_168, 1, 5, 30, 200, _("\
+Hey! Knock it off! That's\n\
+the second time you've\n\
+nailed me. Now you're\n\
+asking for it, linguine\n\
+breath!"))
+
+DEFINE_DIALOG(DIALOG_169, 1, 4, 30, 200, _("\
+Keep out!\n\
+That means you!\n\
+Arrgghh!\n\
+\n\
+Anyone entering this cave\n\
+without permission will\n\
+meet certain disaster."))
diff --git a/text/us/level.c.in b/text/us/level.c.in
@@ -1,169 +0,0 @@
-// level names
-// 0x0200E294
-static const u8 level_name_01[] = {
- _(" 1 BOB-OMB BATTLEFIELD")
-};
-
-
-// 0x0200E2A8
-static const u8 level_name_02[] = {
- _(" 2 WHOMP'S FORTRESS")
-};
-
-
-// 0x0200E2BC
-static const u8 level_name_03[] = {
- _(" 3 JOLLY ROGER BAY")
-};
-
-
-// 0x0200E2CC
-static const u8 level_name_04[] = {
- _(" 4 COOL, COOL MOUNTAIN")
-};
-
-
-// 0x0200E2DC
-static const u8 level_name_05[] = {
- _(" 5 BIG BOO'S HAUNT")
-};
-
-
-// 0x0200E2EC
-static const u8 level_name_06[] = {
- _(" 6 HAZY MAZE CAVE")
-};
-
-
-// 0x0200E2FC
-static const u8 level_name_07[] = {
- _(" 7 LETHAL LAVA LAND")
-};
-
-
-// 0x0200E310
-static const u8 level_name_08[] = {
- _(" 8 SHIFTING SAND LAND")
-};
-
-
-// 0x0200E320
-static const u8 level_name_09[] = {
- _(" 9 DIRE, DIRE DOCKS")
-};
-
-
-// 0x0200E330
-static const u8 level_name_10[] = {
- _("10 SNOWMAN'S LAND")
-};
-
-
-// 0x0200E340
-static const u8 level_name_11[] = {
- _("11 WET-DRY WORLD")
-};
-
-
-// 0x0200E350
-static const u8 level_name_12[] = {
- _("12 TALL, TALL MOUNTAIN")
-};
-
-
-// 0x0200E360
-static const u8 level_name_13[] = {
- _("13 TINY-HUGE ISLAND")
-};
-
-
-// 0x0200E374
-static const u8 level_name_14[] = {
- _("14 TICK TOCK CLOCK")
-};
-
-
-// 0x0200E384
-static const u8 level_name_15[] = {
- _("15 RAINBOW RIDE")
-};
-
-
-// 0x0200E394
-static const u8 level_name_16[] = {
- _(" BOWSER IN THE DARK WORLD")
-};
-
-
-// 0x0200E3A8
-static const u8 level_name_17[] = {
- _(" BOWSER IN THE FIRE SEA")
-};
-
-
-// 0x0200E3BC
-static const u8 level_name_18[] = {
- _(" BOWSER IN THE SKY")
-};
-
-
-// 0x0200E3CC
-static const u8 level_name_19[] = {
- _(" THE PRINCESS'S SECRET SLIDE")
-};
-
-
-// 0x0200E3E0
-static const u8 level_name_20[] = {
- _(" CAVERN OF THE METAL CAP")
-};
-
-
-// 0x0200E3F0
-static const u8 level_name_21[] = {
- _(" TOWER OF THE WING CAP")
-};
-
-
-// 0x0200E404
-static const u8 level_name_22[] = {
- _(" VANISH CAP UNDER THE MOAT")
-};
-
-
-// 0x0200E414
-static const u8 level_name_23[] = {
- _(" WING MARIO OVER THE RAINBOW")
-};
-
-
-// 0x0200E428
-static const u8 level_name_24[] = {
- _(" THE SECRET AQUARIUM")
-};
-
-
-// 0x0200E438
-static const u8 level_name_25[] = {
- _("")
-};
-
-
-// 0x0200E444
-static const u8 level_name_castle_secret_stars[] = {
- _(" CASTLE SECRET STARS")
-};
-
-
-// level name table
-// 0x0200E454
-const u8 *const seg2_level_name_table[] = {
- level_name_01, level_name_02, level_name_03, level_name_04,
- level_name_05, level_name_06, level_name_07, level_name_08,
- level_name_09, level_name_10, level_name_11, level_name_12,
- level_name_13, level_name_14, level_name_15, level_name_16,
- level_name_17, level_name_18, level_name_19, level_name_20,
- level_name_21, level_name_22, level_name_23, level_name_24,
- level_name_25, level_name_castle_secret_stars, 0x0,
-};
-
diff --git a/text/us/star.c.in b/text/us/star.c.in
@@ -1,612 +0,0 @@
-// act_name_ Names
-// 0x0200E4C0
-static const u8 act_name_00[] = {
- _("BIG BOB-OMB ON THE SUMMIT")
-};
-
-
-// 0x0200E4D0
-static const u8 act_name_01[] = {
- _("FOOTRACE WITH KOOPA THE QUICK")
-};
-
-
-// 0x0200E4E0
-static const u8 act_name_02[] = {
- _("SHOOT TO THE ISLAND IN THE SKY")
-};
-
-
-// 0x0200E4F0
-static const u8 act_name_03[] = {
- _("FIND THE 8 RED COINS")
-};
-
-
-// 0x0200E4FC
-static const u8 act_name_04[] = {
- _("MARIO WINGS TO THE SKY")
-};
-
-
-// 0x0200E50C
-static const u8 act_name_05[] = {
- _("BEHIND CHAIN CHOMP'S GATE")
-};
-
-
-// 0x0200E51C
-static const u8 act_name_06[] = {
- _("CHIP OFF WHOMP'S BLOCK")
-};
-
-
-// 0x0200E52C
-static const u8 act_name_07[] = {
- _("TO THE TOP OF THE FORTRESS")
-};
-
-
-// 0x0200E53C
-static const u8 act_name_08[] = {
- _("SHOOT INTO THE WILD BLUE")
-};
-
-
-// 0x0200E54C
-static const u8 act_name_09[] = {
- _("RED COINS ON THE FLOATING ISLE")
-};
-
-
-// 0x0200E55C
-static const u8 act_name_10[] = {
- _("FALL ONTO THE CAGED ISLAND")
-};
-
-
-// 0x0200E568
-static const u8 act_name_11[] = {
- _("BLAST AWAY THE WALL")
-};
-
-
-// 0x0200E578
-static const u8 act_name_12[] = {
- _("PLUNDER IN THE SUNKEN SHIP")
-};
-
-
-// 0x0200E588
-static const u8 act_name_13[] = {
- _("CAN THE EEL COME OUT TO PLAY?")
-};
-
-
-// 0x0200E598
-static const u8 act_name_14[] = {
- _("TREASURE OF THE OCEAN CAVE")
-};
-
-
-// 0x0200E5A8
-static const u8 act_name_15[] = {
- _("RED COINS ON THE SHIP AFLOAT")
-};
-
-
-// 0x0200E5B8
-static const u8 act_name_16[] = {
- _("BLAST TO THE STONE PILLAR")
-};
-
-
-// 0x0200E5C8
-static const u8 act_name_17[] = {
- _("THROUGH THE JET STREAM")
-};
-
-
-// 0x0200E5D8
-static const u8 act_name_18[] = {
- _("SLIP SLIDIN' AWAY")
-};
-
-
-// 0x0200E5E8
-static const u8 act_name_19[] = {
- _("LI'L PENGUIN LOST")
-};
-
-
-// 0x0200E5F8
-static const u8 act_name_20[] = {
- _("BIG PENGUIN RACE")
-};
-
-
-// 0x0200E60C
-static const u8 act_name_21[] = {
- _("FROSTY SLIDE FOR 8 RED COINS")
-};
-
-
-// 0x0200E61C
-static const u8 act_name_22[] = {
- _("SNOWMAN'S LOST HIS HEAD")
-};
-
-
-// 0x0200E62C
-static const u8 act_name_23[] = {
- _("WALL KICKS WILL WORK")
-};
-
-
-// 0x0200E640
-static const u8 act_name_24[] = {
- _("GO ON A GHOST HUNT")
-};
-
-
-// 0x0200E650
-static const u8 act_name_25[] = {
- _("RIDE BIG BOO'S MERRY-GO-ROUND")
-};
-
-
-// 0x0200E660
-static const u8 act_name_26[] = {
- _("SECRET OF THE HAUNTED BOOKS")
-};
-
-
-// 0x0200E670
-static const u8 act_name_27[] = {
- _("SEEK THE 8 RED COINS")
-};
-
-
-// 0x0200E680
-static const u8 act_name_28[] = {
- _("BIG BOO'S BALCONY")
-};
-
-
-// 0x0200E690
-static const u8 act_name_29[] = {
- _("EYE TO EYE IN THE SECRET ROOM")
-};
-
-
-// 0x0200E6A0
-static const u8 act_name_30[] = {
- _("SWIMMING BEAST IN THE CAVERN")
-};
-
-
-// 0x0200E6B0
-static const u8 act_name_31[] = {
- _("ELEVATE FOR 8 RED COINS")
-};
-
-
-// 0x0200E6C0
-static const u8 act_name_32[] = {
- _("METAL-HEAD MARIO CAN MOVE!")
-};
-
-
-// 0x0200E6CC
-static const u8 act_name_33[] = {
- _("NAVIGATING THE TOXIC MAZE")
-};
-
-
-// 0x0200E6D8
-static const u8 act_name_34[] = {
- _("A-MAZE-ING EMERGENCY EXIT")
-};
-
-
-// 0x0200E6EC
-static const u8 act_name_35[] = {
- _("WATCH FOR ROLLING ROCKS")
-};
-
-
-// 0x0200E6FC
-static const u8 act_name_36[] = {
- _("BOIL THE BIG BULLY")
-};
-
-
-// 0x0200E70C
-static const u8 act_name_37[] = {
- _("BULLY THE BULLIES")
-};
-
-
-// 0x0200E71C
-static const u8 act_name_38[] = {
- _("8-COIN PUZZLE WITH 15 PIECES")
-};
-
-
-// 0x0200E72C
-static const u8 act_name_39[] = {
- _("RED-HOT LOG ROLLING")
-};
-
-
-// 0x0200E738
-static const u8 act_name_40[] = {
- _("HOT-FOOT-IT INTO THE VOLCANO")
-};
-
-
-// 0x0200E748
-static const u8 act_name_41[] = {
- _("ELEVATOR TOUR IN THE VOLCANO")
-};
-
-
-// 0x0200E758
-static const u8 act_name_42[] = {
- _("IN THE TALONS OF THE BIG BIRD")
-};
-
-
-// 0x0200E76C
-static const u8 act_name_43[] = {
- _("SHINING ATOP THE PYRAMID")
-};
-
-
-// 0x0200E780
-static const u8 act_name_44[] = {
- _("INSIDE THE ANCIENT PYRAMID")
-};
-
-
-// 0x0200E794
-static const u8 act_name_45[] = {
- _("STAND TALL ON THE FOUR PILLARS")
-};
-
-
-// 0x0200E7A4
-static const u8 act_name_46[] = {
- _("FREE FLYING FOR 8 RED COINS")
-};
-
-
-// 0x0200E7B4
-static const u8 act_name_47[] = {
- _("PYRAMID PUZZLE")
-};
-
-
-// 0x0200E7C8
-static const u8 act_name_48[] = {
- _("BOARD BOWSER'S SUB")
-};
-
-
-// 0x0200E7D8
-static const u8 act_name_49[] = {
- _("CHESTS IN THE CURRENT")
-};
-
-
-// 0x0200E7E8
-static const u8 act_name_50[] = {
- _("POLE-JUMPING FOR RED COINS")
-};
-
-
-// 0x0200E7F8
-static const u8 act_name_51[] = {
- _("THROUGH THE JET STREAM")
-};
-
-
-// 0x0200E808
-static const u8 act_name_52[] = {
- _("THE MANTA RAY'S REWARD")
-};
-
-
-// 0x0200E814
-static const u8 act_name_53[] = {
- _("COLLECT THE CAPS...")
-};
-
-
-// 0x0200E824
-static const u8 act_name_54[] = {
- _("SNOWMAN'S BIG HEAD")
-};
-
-
-// 0x0200E834
-static const u8 act_name_55[] = {
- _("CHILL WITH THE BULLY")
-};
-
-
-// 0x0200E844
-static const u8 act_name_56[] = {
- _("IN THE DEEP FREEZE")
-};
-
-
-// 0x0200E850
-static const u8 act_name_57[] = {
- _("WHIRL FROM THE FREEZING POND")
-};
-
-
-// 0x0200E860
-static const u8 act_name_58[] = {
- _("SHELL SHREDDIN' FOR RED COINS")
-};
-
-
-// 0x0200E870
-static const u8 act_name_59[] = {
- _("INTO THE IGLOO")
-};
-
-
-// 0x0200E87C
-static const u8 act_name_60[] = {
- _("SHOCKING ARROW LIFTS!")
-};
-
-
-// 0x0200E88C
-static const u8 act_name_61[] = {
- _("TOP O' THE TOWN")
-};
-
-
-// 0x0200E89C
-static const u8 act_name_62[] = {
- _("SECRETS IN THE SHALLOWS & SKY")
-};
-
-
-// 0x0200E8AC
-static const u8 act_name_63[] = {
- _("EXPRESS ELEVATOR--HURRY UP!")
-};
-
-
-// 0x0200E8C0
-static const u8 act_name_64[] = {
- _("GO TO TOWN FOR RED COINS")
-};
-
-
-// 0x0200E8D0
-static const u8 act_name_65[] = {
- _("QUICK RACE THROUGH DOWNTOWN!")
-};
-
-
-// 0x0200E8E0
-static const u8 act_name_66[] = {
- _("SCALE THE MOUNTAIN")
-};
-
-
-// 0x0200E8F0
-static const u8 act_name_67[] = {
- _("MYSTERY OF THE MONKEY CAGE")
-};
-
-
-// 0x0200E904
-static const u8 act_name_68[] = {
- _("SCARY 'SHROOMS, RED COINS")
-};
-
-
-// 0x0200E914
-static const u8 act_name_69[] = {
- _("MYSTERIOUS MOUNTAINSIDE")
-};
-
-
-// 0x0200E924
-static const u8 act_name_70[] = {
- _("BREATHTAKING VIEW FROM BRIDGE")
-};
-
-
-// 0x0200E934
-static const u8 act_name_71[] = {
- _("BLAST TO THE LONELY MUSHROOM")
-};
-
-
-// 0x0200E944
-static const u8 act_name_72[] = {
- _("PLUCK THE PIRANHA FLOWER")
-};
-
-
-// 0x0200E954
-static const u8 act_name_73[] = {
- _("THE TIP TOP OF THE HUGE ISLAND")
-};
-
-
-// 0x0200E964
-static const u8 act_name_74[] = {
- _("REMATCH WITH KOOPA THE QUICK")
-};
-
-
-// 0x0200E974
-static const u8 act_name_75[] = {
- _("FIVE ITTY BITTY SECRETS")
-};
-
-
-// 0x0200E984
-static const u8 act_name_76[] = {
- _("WIGGLER'S RED COINS")
-};
-
-
-// 0x0200E994
-static const u8 act_name_77[] = {
- _("MAKE WIGGLER SQUIRM")
-};
-
-
-// 0x0200E9A0
-static const u8 act_name_78[] = {
- _("ROLL INTO THE CAGE")
-};
-
-
-// 0x0200E9B0
-static const u8 act_name_79[] = {
- _("THE PIT AND THE PENDULUMS")
-};
-
-
-// 0x0200E9B8
-static const u8 act_name_80[] = {
- _("GET A HAND")
-};
-
-
-// 0x0200E9C8
-static const u8 act_name_81[] = {
- _("STOMP ON THE THWOMP")
-};
-
-
-// 0x0200E9DC
-static const u8 act_name_82[] = {
- _("TIMED JUMPS ON MOVING BARS")
-};
-
-
-// 0x0200E9EC
-static const u8 act_name_83[] = {
- _("STOP TIME FOR RED COINS")
-};
-
-
-// 0x0200E9F8
-static const u8 act_name_84[] = {
- _("CRUISER CROSSING THE RAINBOW")
-};
-
-
-// 0x0200EA04
-static const u8 act_name_85[] = {
- _("THE BIG HOUSE IN THE SKY")
-};
-
-
-// 0x0200EA10
-static const u8 act_name_86[] = {
- _("COINS AMASSED IN A MAZE")
-};
-
-
-// 0x0200EA20
-static const u8 act_name_87[] = {
- _("SWINGIN' IN THE BREEZE")
-};
-
-
-// 0x0200EA34
-static const u8 act_name_88[] = {
- _("TRICKY TRIANGLES!")
-};
-
-
-// 0x0200EA44
-static const u8 act_name_89[] = {
- _("SOMEWHERE OVER THE RAINBOW")
-};
-
-
-// 0x0200EA54
-static const u8 act_name_90[] = {
- _("ONE OF THE CASTLE'S SECRET STARS!")
-};
-
-
-// 0x0200EA60
-static const u8 act_name_91[] = {
- _("")
-};
-
-
-// 0x0200EA70
-static const u8 act_name_92[] = {
- _("")
-};
-
-
-// 0x0200EA80
-static const u8 act_name_93[] = {
- _("")
-};
-
-
-// 0x0200EA94
-static const u8 act_name_94[] = {
- _("")
-};
-
-
-// 0x0200EAA8
-static const u8 act_name_95[] = {
- _("")
-};
-
-
-// 0x0200EABC
-static const u8 act_name_96[] = {
- _("")
-};
-
-
-// act names table 0x0200EAD0
-const u8 *const seg2_act_name_table[] = {
- act_name_00, act_name_01, act_name_02, act_name_03,
- act_name_04, act_name_05, act_name_06, act_name_07,
- act_name_08, act_name_09, act_name_10, act_name_11,
- act_name_12, act_name_13, act_name_14, act_name_15,
- act_name_16, act_name_17, act_name_18, act_name_19,
- act_name_20, act_name_21, act_name_22, act_name_23,
- act_name_24, act_name_25, act_name_26, act_name_27,
- act_name_28, act_name_29, act_name_30, act_name_31,
- act_name_32, act_name_33, act_name_34, act_name_35,
- act_name_36, act_name_37, act_name_38, act_name_39,
- act_name_40, act_name_41, act_name_42, act_name_43,
- act_name_44, act_name_45, act_name_46, act_name_47,
- act_name_48, act_name_49, act_name_50, act_name_51,
- act_name_52, act_name_53, act_name_54, act_name_55,
- act_name_56, act_name_57, act_name_58, act_name_59,
- act_name_60, act_name_61, act_name_62, act_name_63,
- act_name_64, act_name_65, act_name_66, act_name_67,
- act_name_68, act_name_69, act_name_70, act_name_71,
- act_name_72, act_name_73, act_name_74, act_name_75,
- act_name_76, act_name_77, act_name_78, act_name_79,
- act_name_80, act_name_81, act_name_82, act_name_83,
- act_name_84, act_name_85, act_name_86, act_name_87,
- act_name_88, act_name_89, act_name_90, act_name_91,
- act_name_92, act_name_93, act_name_94, act_name_95,
- act_name_96, 0x0,
-};
-
diff --git a/tools/assemble_sound.py b/tools/assemble_sound.py
@@ -12,6 +12,8 @@ TYPE_TBL = 2
STACK_TRACES = False
DUMP_INDIVIDUAL_BINS = False
+ENDIAN_MARKER = ">"
+WORD_BYTES = 4
orderedJsonDecoder = JSONDecoder(object_pairs_hook=OrderedDict)
@@ -66,6 +68,14 @@ def strip_comments(string):
return re.sub(re.compile("//.*?\n"), "", string)
+def pack(fmt, *args):
+ if WORD_BYTES == 4:
+ fmt = fmt.replace('P', 'I').replace('X', '')
+ else:
+ fmt = fmt.replace('P', 'Q').replace('X', 'xxxx')
+ return struct.pack(ENDIAN_MARKER + fmt, *args)
+
+
def to_bcd(num):
assert num >= 0
shift = 0
@@ -488,8 +498,8 @@ def serialize_ctl(bank, base_ser):
y, m, d = map(int, json.get("date", "0000-00-00").split("-"))
date = y * 10000 + m * 100 + d
base_ser.add(
- struct.pack(
- ">IIII",
+ pack(
+ "IIII",
len(json["instrument_list"]),
len(drums),
1 if len(bank.sample_bank.uses) > 1 else 0,
@@ -499,12 +509,12 @@ def serialize_ctl(bank, base_ser):
ser = ReserveSerializer()
if drums:
- drum_pos_buf = ser.reserve(4)
+ drum_pos_buf = ser.reserve(WORD_BYTES)
else:
- ser.add(b"\0" * 4)
+ ser.add(b"\0" * WORD_BYTES)
drum_pos_buf = None
- inst_pos_buf = ser.reserve(4 * len(json["instrument_list"]))
+ inst_pos_buf = ser.reserve(WORD_BYTES * len(json["instrument_list"]))
ser.align(16)
used_samples = []
@@ -528,32 +538,30 @@ def serialize_ctl(bank, base_ser):
sample_len = len(aifc.data)
# Sample
- ser.add(struct.pack(">II", 0, aifc.offset))
- loop_addr_buf = ser.reserve(4)
- book_addr_buf = ser.reserve(4)
- ser.add(struct.pack(">I", align(sample_len, 2)))
+ ser.add(pack("PP", 0, aifc.offset))
+ loop_addr_buf = ser.reserve(WORD_BYTES)
+ book_addr_buf = ser.reserve(WORD_BYTES)
+ ser.add(pack("I", align(sample_len, 2)))
ser.align(16)
# Book
- book_addr_buf.append(struct.pack(">I", ser.size))
- ser.add(struct.pack(">ii", aifc.book.order, aifc.book.npredictors))
+ book_addr_buf.append(pack("P", ser.size))
+ ser.add(pack("ii", aifc.book.order, aifc.book.npredictors))
for x in aifc.book.table:
- ser.add(struct.pack(">h", x))
+ ser.add(pack("h", x))
ser.align(16)
# Loop
- loop_addr_buf.append(struct.pack(">I", ser.size))
+ loop_addr_buf.append(pack("P", ser.size))
if aifc.loop is None:
assert sample_len % 9 in [0, 1]
end = sample_len // 9 * 16 + (sample_len % 2) + (sample_len % 9)
- ser.add(struct.pack(">IIiI", 0, end, 0, 0))
+ ser.add(pack("IIiI", 0, end, 0, 0))
else:
- ser.add(
- struct.pack(">IIiI", aifc.loop.start, aifc.loop.end, aifc.loop.count, 0)
- )
+ ser.add(pack("IIiI", aifc.loop.start, aifc.loop.end, aifc.loop.count, 0))
assert aifc.loop.count != 0
for x in aifc.loop.state:
- ser.add(struct.pack(">h", x))
+ ser.add(pack("h", x))
ser.align(16)
env_name_to_addr = {}
@@ -568,6 +576,8 @@ def serialize_ctl(bank, base_ser):
entry = [2 ** 16 - 3, 0]
elif entry[0] == "goto":
entry[0] = 2 ** 16 - 2
+ # Envelopes are always written as big endian, to match sequence files
+ # which are byte blobs and can embed envelopes.
ser.add(struct.pack(">HH", *entry))
ser.align(16)
@@ -580,7 +590,7 @@ def serialize_ctl(bank, base_ser):
else:
aifc = bank.sample_bank.name_to_entry[sound["sample"]]
tuning = aifc.sample_rate / 32000
- ser.add(struct.pack(">If", sample_addr, tuning))
+ ser.add(pack("PfX", sample_addr, tuning))
no_sound = {"sample": None, "tuning": 0.0}
@@ -591,8 +601,8 @@ def serialize_ctl(bank, base_ser):
inst_name_to_pos[name] = ser.size
env_addr = env_name_to_addr[inst["envelope"]]
ser.add(
- struct.pack(
- ">BBBBI",
+ pack(
+ "BBBBXP",
0,
inst.get("normal_range_lo", 0),
inst.get("normal_range_hi", 127),
@@ -607,23 +617,23 @@ def serialize_ctl(bank, base_ser):
for name in json["instrument_list"]:
if name is None:
- inst_pos_buf.append(struct.pack(">I", 0))
+ inst_pos_buf.append(pack("P", 0))
continue
- inst_pos_buf.append(struct.pack(">I", inst_name_to_pos[name]))
+ inst_pos_buf.append(pack("P", inst_name_to_pos[name]))
if drums:
drum_poses = []
for drum in drums:
drum_poses.append(ser.size)
- ser.add(struct.pack(">BBBB", drum["release_rate"], drum["pan"], 0, 0))
+ ser.add(pack("BBBBX", drum["release_rate"], drum["pan"], 0, 0))
ser_sound(drum["sound"])
env_addr = env_name_to_addr[drum["envelope"]]
- ser.add(struct.pack(">I", env_addr))
+ ser.add(pack("P", env_addr))
ser.align(16)
- drum_pos_buf.append(struct.pack(">I", ser.size))
+ drum_pos_buf.append(pack("P", ser.size))
for pos in drum_poses:
- ser.add(struct.pack(">I", pos))
+ ser.add(pack("P", pos))
ser.align(16)
base_ser.add(ser.finish())
@@ -644,8 +654,8 @@ def serialize_tbl(sample_bank, ser):
def serialize_seqfile(entries, serialize_entry, entry_list, magic, extra_padding=True):
ser = ReserveSerializer()
- ser.add(struct.pack(">HH", magic, len(entry_list)))
- table = ser.reserve(len(entry_list) * 8)
+ ser.add(pack("HHX", magic, len(entry_list)))
+ table = ser.reserve(len(entry_list) * 2 * WORD_BYTES)
ser.align(16)
data_start = ser.size
@@ -662,8 +672,8 @@ def serialize_seqfile(entries, serialize_entry, entry_list, magic, extra_padding
ser.align(64)
for ent in entry_list:
- table.append(struct.pack(">I", entry_offsets[ent] + data_start))
- table.append(struct.pack(">I", entry_lens[ent]))
+ table.append(pack("P", entry_offsets[ent] + data_start))
+ table.append(pack("IX", entry_lens[ent]))
return ser.finish()
@@ -779,15 +789,18 @@ def write_sequences(
bank_set = json.get(name, None)
if bank_set is None:
bank_set = []
- table.append(struct.pack(">H", ser.size))
+ table.append(pack("H", ser.size))
ser.add(bytes([len(bank_set)]))
for bank in bank_set[::-1]:
ser.add(bytes([bank_names.index(bank)]))
+ ser.align(16)
f.write(ser.finish())
def main():
global STACK_TRACES
+ global ENDIAN_MARKER
+ global WORD_BYTES
need_help = False
skip_next = 0
cpp_command = None
@@ -807,6 +820,26 @@ def main():
elif a == "-D":
defines.append(sys.argv[i + 1])
skip_next = 1
+ elif a == "--endian":
+ endian = sys.argv[i + 1]
+ if endian == "big":
+ ENDIAN_MARKER = ">"
+ elif endian == "little":
+ ENDIAN_MARKER = "<"
+ elif endian == "native":
+ ENDIAN_MARKER = "="
+ else:
+ fail("--endian takes argument big, little or native")
+ skip_next = 1
+ elif a == "--bitwidth":
+ bitwidth = sys.argv[i + 1]
+ if bitwidth == 'native':
+ WORD_BYTES = struct.calcsize('P')
+ else:
+ if bitwidth not in ['32', '64']:
+ fail("--bitwidth takes argument 32, 64 or native")
+ WORD_BYTES = int(bitwidth) // 8
+ skip_next = 1
elif a.startswith("-D"):
defines.append(a[2:])
elif a == "--stack-trace":
diff --git a/tools/demo_data_converter.py b/tools/demo_data_converter.py
@@ -63,7 +63,7 @@ def main():
structobj.append("{" + ",".join(hex(x) for x in demobytes) + "},")
print("#include \"types.h\"")
- print("#include \"stddef.h\"")
+ print("#include <stddef.h>")
print("")
print("struct DemoInputsObj {")
diff --git a/tools/determine-endian-bitwidth.c b/tools/determine-endian-bitwidth.c
@@ -0,0 +1,11 @@
+#include "platform_info.h"
+
+#if IS_BIG_ENDIAN && IS_64_BIT
+#error msgbegin --endian big --bitwidth 64 msgend
+#elif IS_BIG_ENDIAN && !IS_64_BIT
+#error msgbegin --endian big --bitwidth 32 msgend
+#elif !IS_BIG_ENDIAN && IS_64_BIT
+#error msgbegin --endian little --bitwidth 64 msgend
+#else
+#error msgbegin --endian little --bitwidth 32 msgend
+#endif
diff --git a/tools/mario_anims_converter.py b/tools/mario_anims_converter.py
@@ -137,7 +137,7 @@ try:
structobj.append("{" + ",".join(arr) + "},")
print("#include \"types.h\"")
- print("#include \"stddef.h\"")
+ print("#include <stddef.h>")
print("")
print("const struct MarioAnimsObj {")
diff --git a/tools/output_level_headers.py b/tools/output_level_headers.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python3
+import sys
+for line in sys.stdin:
+ if line.strip():
+ print('#include "{}"'.format(line.strip()))
diff --git a/tools/textconv.c b/tools/textconv.c
@@ -179,6 +179,13 @@ static void read_charmap(const char *filename)
else if (*line == '\\')
{
line++; // advance to get the character being escaped
+ if (*line == '\r')
+ line++;
+ if (*line == '\n')
+ {
+ // Backslash at end of line is ignored
+ continue;
+ }
entry.unicode[len] = get_escape_char(*line);
if (entry.unicode[len] == 0)
parse_error(filename, lineNum, "unknown escape sequence \\%c", *line);
diff --git a/undefined_syms.txt b/undefined_syms.txt
@@ -4,7 +4,6 @@ osRomBase = 0x80000308;
osResetType = 0x8000030C;
osMemSize = 0x80000318;
osAppNmiBuffer = 0x8000031C;
-gZBuffer = 0x80000400; /* boot location */
/* boot and osException symbols */
D_80000000 = 0x80000000;